Knockout.js

Oh wait, I should probably actually start from the beginning.

WPF (Windows Presentation Foundation)

From the time I was little I always have had a fascination with the web. I think I made my first personal website when I was in third grade. So when I showed up for my first full time job out of college and they declared We do WPF desktop apps here I had mixed feelings. I was happy to have my first real job programming but web was the direction I had always wanted to go.

I was pleasantly surprised though, WPF is a pretty awesome framework. Every UI component is skin-able, it has by far the coolest databinding model I have ever seen, it was fun working with long living objects that had state, etc. I really enjoyed my time working on that project, in fact, I had decided it was my favorite type of programming I had ever done. I loved the feedback of an application with realtime databinding and it was also a pleasure to program. Nonetheless, it was not web programming, and that was where I wanted to go and where I felt the world was going. So I eventually made my way back to web and resolved to leave the thrill of WPF and databinding as no more than a pleasant memory because (as far as I knew) this this type of thing was just not really possible in the web world.

Knockout.js

A few years later I was creating a new .Net MVC project and noticed something in my JavaScript folder: Visual Studio had kindly included a file for me in my new project called knockout.js. I had never heard of this before and I was curious so I looked it up.

BAM!!!

This was what I had been looking for!! The joy of WPF in the web world! Knockout had databinding and could be used as a component in building single page apps which have a lot of the benefits of developing for the desktop. I was so excited I decided to dedicate the entire year towards JavaScript. My goal was to be able to confidently consider myself a strong JavaScript programmer.

JavaScript MV*

In my exploration of JavaScript I discovered there was a whole world called JavaScript MV*! I tried out many of the frameworks: Knockout, Angular, Ember, etc. At first I settled on Angular because the ease of getting started with, I liked using standard JS objects for everything, and I liked the templates being inline with my HTML. However, eventually I ended up moving towards Ember mostly because of the strong convention over configuration, but also for the style of Handlebars templates instead of ng- attributes, nested outlets, and a little because I had become brainwashed from following Tom Dale on Twitter!

The bottom line here is if you haven’t checked out any of these JavaScript frameworks, you really should. I would suggest starting out with a simpler framework like Angular but also keep your eye out to what the other frameworks can do for you, and don’t be scared to switch if another one could work better for you. All of their websites have live demos so go check out what they can do. This type of programming is really fun and produces a great experience for the user. It feels a lot more like programming for the desktop than for the web but has the all the benefits of the web at the same time.

Where I am now

I actually did follow through with my plan of dedicating my year to JavaScript, and that year has now become almost a year and a half with much more to go. For me it paid off because I am having more fun programming than I ever have, and I got a new job where I am a full time Ember developer and I love it.