Technology is ever evolving and it is important to strike a balance between not being on the bleeding edge, but also not being left in the past, using techniques and tools that are not as efficient as more recent ones. Being MVPs and technology insiders, we can help you pick the right technology, technology that hits the sweet spot and that you will get many years of mileage out of. Currently, the following technologies are commonly used in our projects:
Native, Cross-Platform Mobile
For native, cross-platform (iOS, Android, Windows on both phones and tablets) we use Xamarin and Windows Universal Applications, developed using the same tools as the middle tier (Visual Studio, C#) and Xamarin Studio. We create completely native performance and native look and feel applications, that share a large amount of code, for faster development and improved maintenance.
Trailhead’s developers have been doing Cloud development and deployment for many years, and have amassed a large working knowledge of both Amazon Web Services (AWS) and Microsoft Azure. We design multi-tenant, mobile and IoT friendly cloud services that are hosted in the provider of your choice.
Security is an integral part of developing cloud-based and mobile software, ranging from on-device secure storage (SQLite with SQLCipher), encrypted communications (HTTPS/SSL), robust authentication and authorization (claims-based, local authentication or federated), and secure storage (SQL Server transparent database encryption and strong password hashing) and encrypted configuration settings. We also take care to avoid various common attacks, like SQL injection, cross domain origin forgery etc, and can provide security audits.
The database is typically one of the flavors of Microsoft SQL Server, including cloud versions, and versions that offer clustering, high performance, transparent encryption and automatic failover.
The middle tier or application server usually a Microsoft ASP.NET (including the new cross-platform ASP.NET Core) application, written in C#. It uses an ORM such as Entity Framework (and now Entity Framework Core) or Dapper, to access the database, and components such as Dependency Injection (.NET Core DI, Ninject, Autofac) to increase modularity, extensibility, and testability. The middle tier is written to be stateless so it can be load balanced and scale out.
The middle tier is exposed to web or mobile clients, or other systems using a REST API, passing JSON securely over HTTPS/SSL. In some cases we use OData, and in legacy systems WCF.
The buzzword of the year, Internet of Things. Trailhead has hands-on experience developing IoT using Windows 10 IoT and C#, accessing a range of sensors and peripherals, and communicating with cloud services.
Automated web testing is done using Selenium or Protractor, and automated mobile testing with Appium or Microsoft App Center Test. In addition, we use standard unit testing practices for API level testing.
Reporting and Analysis
For reporting we generally use SSRS or Telerik reporting, and Microsoft OLAP Services for analysis.