Thursday, December 31, 2015

2015 in Review

Last year was an exciting year on multiple levels. It was my first year directing the application development practice at iVision. It was exciting to grow the team, reach new customers, and engage in new projects ranging from complete rewrites (link to case study PDF) to Silverlight migrations and Internet of Things (IoT) platforms featuring real-time monitoring and analytics. The bulk of those projects involved creating responsive web apps leveraging the Angular AWESM stack.

The industry experienced exciting changes as well. Single page apps are now readily accepted by the enterprise and JavaScript development on platforms like Node.js is now considered mainstream.

Agile adoption is increasing and we engaged in multiple projects (link to case study PDF) last year to train companies on how to adopt Agile and implement it leveraging tools like Visual Studio Team Services. More importantly, DevOps is not just a catch phrase but a real process being leveraged in production to enable continual delivery so that companies can release products weekly or even daily to meet the fast-paced demands of business and technology.

Cross-platform solutions like Apache Cordova and Electron continue to gain momentum while JavaScript itself is rapidly evolving through new specifications that are being adopted at an accelerated rate.

I try to stay on top of trends and provide links to exciting posts and articles through my Twitter feed.


According to Twitter, the majority of you who follow me enjoy technology and tech news (surprise!), are technical professionals (almost half) and/or self-employed (one in five). Just over half of you are married, and nine out of ten are male.

On average I gain three new followers a day. I don’t track people who stop following but given any single day I’d say it’s probably six steps forward, three steps back. Some people follow only for a follow back, some prune their lists and others either aren’t interested in the content or come across a tweet they don’t like and jump ship.

What’s more interesting to me is out of the thousands of tweets I post, only a few stand out as interesting based on impressions, engagement, and clicks. Not surprisingly, the highest percentage of engagement is not from news tweets, but conversations (for example, when I ask a question or respond to someone who mentioned me).

Here are my top three tweets in various categories from the previous quarter:

Most Viewed

1. Overriding services (both core and custom) in #AngularJS #JavaScript

2. Surprise! Microsoft $MSFT is #Agile. Case study of agile transformation at a billion dollar corporation

3. The #React Native extension for #VisualStudio @Code #TACO (Tools for #Apache #Cordova)

Most Liked

1. Overriding services (both core and custom) in #AngularJS #JavaScript

2. Back to basics: #AngularJS 2 with plain #JavaScript: no #TypeScript, no #ECMAScript6 #ES6

3. #WPF not only lives, it now has a new home with #JavaScript Check out "Granular" and run WPF in the browser

Most Clicked

1. Overriding services (both core and custom) in #AngularJS #JavaScript

2. Back to basics: #AngularJS 2 with plain #JavaScript: no #TypeScript, no #ECMAScript6 #ES6

3. Object.observe: fun while it lasted, now #AngularJS and #ReactJS cited as reasons it will be withdrawn from spec

I’m going to guess the majority of my followers have a bit of interest in Angular. What do you think?

C#:er IMage

When I created my blog in March of 2009, I did not imagine it would last this long. Of course, the topic is more JavaScript than C# so the title has grown stale, but readership is still steady.


Most visitors stay at least a little while and one in five move on to other pages (that’s the “bounce rate.”) The gender gap persists on my blog (nine of out ten are male), and according to google almost half of the visitors are between the ages of 25 and 34 (glad this programmer with 41 years can still appeal to the younger crowd!)

I’ve had a fairly consistent international audience over the years. This is the breakdown from 2015:


In previous years the Netherlands ranked higher. I can’t prove it definitively but I strongly suspect the drop of visitors from that region coincided with my shift from Silverlight to other technologies.

When I started my blog, Internet Explorer was king. Now it runs a distant third, with Chrome representing 67% of my audience, Firefox 13%, just 9% from Internet Explorer and the rest from Safari, Edge, Opera, and various other browsers.

One in ten visitors accessed the blog from their mobile phone and 3% from their tablet.

A large amount of referral traffic was attributed to my partnership with The second largest source was Twitter, followed by the Code Project and Stack Overflow.

Ironically, the top search terms that brought people to my site are all Angular-related with the exception of one. Apparently my Windows 8 article about using symbols from the Segoe UI font is very popular. Here are the top five searches that landed people on my blog this year:

1. angular broadcast
2. segoe ui symbol
3. angular emit
4. angularjs broadcast
5. angular events

Apparently, people are very interested in Angular events!

Finally, it’s always interesting to see what blog posts are read the most. Last year my post on the Top 5 Mistakes Angular Developers Make dominated, followed by my 5-year old but most popular blog post of all time (Model-View-View Model Explained), then the Segoe UI Symbol post, Ten Reasons Web Developers should learn Angular at number four, and Angular Project Essentials in the number five spot.

I asked the audience at a conference recently why so many attended a talk I gave on Enterprise JavaScript, and the unaminous reply was that I promised to share case studies “from the real world” and how this works in actual projects.

I look forward to doing more of the same in 2016. My team at iVision is growing and our goal is to work on more cutting edge enterprise projects that will continue to give us insights across verticals and projects and empower us to establish and follow best practices based on our experience as we move into cross-platform apps and adopt new frameworks like Angular 2.0 and Aurelia.

I will continue to blog, author articles, publish videos, and speak at user groups and conferences about those experiences because my personal mission is to empower developers to achieve their dreams. It is my sincere wish for you to achieve or move closer to yours in 2016.

Thank you all for helping make 2015 an abundant year. I wish you all a blessed and fulfilling 2016.

If you have time, why not share some of your own highlights from 2015 and goals for 2016 in the comments section below? We are all part of a global community and grow stronger when we share and collaborate.

Happy New Year!

Wednesday, December 23, 2015

Three Shades of Angular

In 2014 I presented at the Atlanta Code Camp and walked through building an AngularJS app starting from file … new. I used test-driven development to demonstrate how to create a functional application. I also wanted to demonstrate an app with multiple controllers that communicate with each other yet don’t rely on $scope, $watch, or even event broadcasting.

You can view the source for the Angular health app, along with instructions to step through the build iterations, in this GitHub repository.

After years of building business apps with Angular I find it helps facilitate some incredible scenarios, like this total rewrite of a Silverlight audit tool I did for a local physicians’ group:
Both Angular and JavaScript have been moving at a fast pace and to keep up with the changes I created two new projects based on the original example app.

ECMAScript2015 (also known as ECMAScript 6 and ES 6) is right around the corner. This is a new version of the standardized JavaScript specification that introduces concepts like classes and built-in support for Asynchronous Module Definitions (AMD). Fortunately, you don’t have to wait for browsers to support ES6 because there are tools available now that allow you to write code in ES6 and “transpile” it to the current version, ECMAScript 5.

To see an example of that in action, check out the Angular ES6 Health App. This is the same application, rewritten using the new features built into ES6. It is compiled to ES5 using Babel. I also used the combination of browserify and babelify to transpile the project into a single file for performance (as opposed to dynamically loading the modules). Don’t worry, I have an example of dynamic loading in the third Angular example.

Being able to work on tomorrow’s technology today is fairly exciting. Another way to tackle ECMAScript 6 is to leverage TypeScript. This is a superset of JavaScript that closely follows future specifications and compiles to a target version of your choice. It is the language being used by the Angular team to build Angular 2.0.

If you want to see what the same app looks like using TypeScript and the next version of Angular (that as of this blog post is in beta), take a look at the Angular 2.0 Health App. This is the same app migrated to use Angular 2.0 beta, TypeScript, and AMD for dynamic module loading.

The migration wasn’t straightforward so I wrote about it along with my thoughts on Angular 2.0 in the post Angular 2.0: Opinions, Commentary, and a Migration Case Study.

I hope these different shades of Angular give you a good idea of what to expect and how to prepare today for tomorrow’s technology. I expect adoption of both ES6 and Angular 2.0 to be rapid in 2016. It was a great learning experience for me and I look forward to building more modern web apps with a newer JavaScript that has grown up to embrace the enterprise.

Tuesday, December 22, 2015

Case Study: Migrating Angular 1.x to 2.0 and Observations about Angular 2

Angular is a framework designed to make it easier to build client applications (that is, apps written with JavaScript and HTML that run on various devices, including mobile devices and browsers). Business users often expect a rich user experience and don’t like to compromise on features just because the app is delivered over the web or via a mobile device instead of installed on a desktop. For this reason, an approach to building apps called Single Page Applications (SPA) has evolved. Angular provides built-in support for SPA via templates, components, services, and tools that help developers call web services and manipulate the data that is returned.

To answer that question, I migrated my existing Angular Health App to 2.0, then wrote a blog post with the details of the Angular migration as well as my overall observations about Angular 2. Read it here.

I hope you enjoy!

Jeremy Likness

Front-End Dev Back-End Nostalgia Tue Dec 22 2015

Friday, December 18, 2015

WordPress goes to NodeJs, Get to Know Visual Studio Code, Angular 2 Components Fri Dec 18 2015

Huge news today as WordPress announces dropping PHP and moving to NodeJS. Coverage of Visual Studio Code extensions and more framework fun covering ReactJs, Angular 2, and more.


Thursday, December 17, 2015

AngularJS 2 in Beta, Cross-Platform .NET Framework, Visual Studio Code on Thu Dec 17 2015

In this series of links, AngularJS grows up to beta status and gets compared to other frameworks; the .NET Framework goes cross-platform and gets some SOAP, and Visual Studio Code goes native!

Tuesday, December 15, 2015

Progressive Web Apps, Docker, ReactJS and More Tue Dec 15 2015

Posts covering progressive web apps, predictions for OpenStack and Docker, business decisions that drive ReactJS and understanding promises.

Jeremy Likness

Saturday, December 12, 2015

AngularJS Performance, Visual Studio Team Services Customization, Continuum and More Sat Dec 12 2015

Yesterday featured posts that addressed AngularJS performance, unit testing JavaScript, some exciting updates to Visual Studio Team Services and 2015, and my initial experiences with the Lumia 950 and Continuum.

Jeremy Likness

Friday, December 11, 2015

DevOps, Cross-Platform Apps, Docker and IoT on Dec 11 2015

Here’s my round-up of interesting news and blog posts from the past day!

Jeremy Likness

Thursday, December 10, 2015

Day in Development Recap Thu Dec 10 2015