Northstar Navigator

Navigating the world of application and systems development

New blog platform

While Wordpress is a big favorite for bloggers, I'm a .NET and Microsoft developer. I recently found BlogEngine.net (http://www.dotnetblogengine.net/) and it looks like something I can work with. It can use SQL Server as the backend or other databases/XML files as the data store. It only took a few minutes to get set up, but it's going to take some more effort to get it customized. It appears that it's easy to tweak the overall template so that it fits with my northcomp.com site design. The big bonus is that it's a lot easier to post to, in place of managing static pages. 

Getting started, again

Keeping up with technology is tough, since it requires your time and money. In the software development business, time IS money, so you have to take some billable time to invest in yourself and your skills. If you are lucky, you can learn new technology during a billable project, but most clients aren't interested in paying you to learn.

Since it is so easy to get behind, one of the things I do is attend technology conferences. This lets me get a big dump of information in a relatively short period of time. You can do it on your own by finding articles, trying things out, but getting all the information at once is often beneficial.

I recently returned from the DevIntersection conference and it gave me a good handle on the new technologies that are available. By seeing them together, it was also easier to compare technologies side-by-side and help determine which ones to pursue.

For new applications, this is the technology stack I've been using:

  • Visual Studio 2013 or 2015
  • ASP.NET MVC
  • WebAPI
  • Entity Framework
  • SQL Server 2012
  • Javascript/jQuery
  • KnockoutJS - client side framework

Unfortunately, I'm missing some pieces in my stack. KnockoutJS, which was purchased by Microsoft, is not widely used. It has some limitations in regards to its overall model and has not been adopted by the majority of developers. In addition, none of these technologies are really focused on mobile development, which has come up as a need periodically.

Looking at client-side frameworks, these seem to be the most popular:

  • Angular 1 - steep learning curve, but has both community and commercial component support
  • Angular 2 - learning from the design mistakes of Angular 1 to simplify the learning process and development cycle
  • Aurelia - taking similar steps to Angular 2, but taking an even cleaner approach to the separation of script, template, and framework code

Based on seeing both Angular 2 and Aurelia at this recent conference, my choice is to pursue Aurelia, with a healthy dose of caution. On the plus side, the technology is easier to understand and has a better separation between the Aurelia components and the raw Javascript. Rob Eisenberg, the lead architect, was on the Angular 2 team for five years at Google but left over design differences. After seeing both Angular 2 and Aurelia, I have to agree with his design decisions, since the net result is a simpler framework to understand and implement. Angular 2 seems to have a far less strict separation between the Angular software and the Javascript of your application.

The downside is that Aurelia is following a common open source software model -- give away the software and charge for support. By going with this software, you are taking a risk on the stability of the company behind the package. However, having a company behind a single product direction is a benefit that Angular doesn't have, since Google is also pushing other frameworks.

On the mobile side of the house, you have Android and iOS platforms, with the Windows universal Windows platform (Windows 10, Surface) taking a smaller but increasing role. Each of these has a completely different programming model with different languages required. iOS has the additional requirement that the software be built on an iOS computer, which Android does not require. While you could use Android Developer Studio, Swift, and then Windows, you are writing in three different languages and not getting any reuse of your code, beyond what might be hosted as external WebAPI services.

In the mobile market, Xamarin seems to be the clear winner. Recently purchased by Microsoft and made available to Visual Studio users, you can create cross-platform applications for all three platforms using C# as the language. Xamarin has abstracted away the major differences between how events and widgets work, but gives you the ability to write platform-specific code as needed. There is also commercial support from companies like SyncFusion for additional controls you might need.

As to scripting languages, I must have missed a memo somewhere on Typescript replacing Javascript, but it seems to be a reasonably easy migration path into this newer scripting language. Since it is a superset of Javascript that gets compiled into actual Javascript, browser support is not a concern.

Now that I have the components picked out, the next step is to figure out an application to build to use this new development stack:

  • Visual Studio 2015
  • Entity Framework to SQL Server
  • ASP.NET MVC with Aurelia as the client-side framework
  • WebAPI
  • Xamarin Forms for a mobile client

Future blog posts will go through what I am building and the issues and triumphs along the way. Please contact me with any comments, thanks for reading!