Technology learning review

Looking back at 2013

appa
4 min readJan 6, 2014

I left Microsoft in July 2013. I had worked for several years as a program manager, and though I was broadly familiar with the changes in technology, my last hands-on experience writing serious code was writing a protocol stack in C ☺. This last year I attempted to learn a lot of new stuff — not just undestanding them, but actually building real products with them.

I wanted to capture — for my own sake — what I've learnt in the time since I've left, purely from a technology learning perspective.

What I've learnt

JavaScript

I've always kind of known JavaScript (hasn't everybody!), but this was the first year I actually tried to learn it. I worked my way partially through Eloquent JavaScript, JavaScript: The Good Parts, Douglas Crockford’s JavaScript videos and the Codecademy tutorial on JavaScript.

While I have a much better understanding of JavaScript now, I still struggle to use it well: I don’t write too many closures, I don’t use the language functionally, and I still don’t have a good handle on async programming with JavaScript.

Also, though I am much more comfortable using frameworks, I am not yet at a level of building my own framework.

Goal for 2014: Create a framework & contribute to an open-source project.

HTML5/CSS3/Bootstrap

Again, this is one of those things that you always knew, but never learnt. I’ve attempted to become better here — and I’ve had mixed results: my knowledge of HTML5, and writing semantic HTML has improved. However, though my knowledge of CSS has improved, and I’ve become more confident in designing pages using Bootstrap — I am not really using the coolness of CSS3, like building my own responsive pages or doing animations with CSS3.

Goal for 2014: Build a responsive CSS framework.

nodejs, express, auth & mongodb

I've learnt how to quickly write REST API’s using nodejs and express, with data stored in mongodb (using MongooseJS) and authenticated using PassportJS.

However, becoming fully comfortable with node’s async model is still something I have to master. The classic one for me here is the async for loop — consider a scenario of making an http call, getting back an object of id’s, again making http calls for each of those id’s (a classic scenario in a many-to-many data relationship). The code for this still stumps me — I know I have to learn how to use promises!

Though I’ve learnt a lot on mongodb, the goal for the next year here is to learn map/reduce. Also, on mongooseJS — I need to more fully explore the list of plugins that are available to use. This holds for express too — there are so many npm modules out there now that I haven’t yet looked at!

On the authentication side — though I’m comfortable with authentication, I need to learn / create a role-based authorization system on nodeJS/express.

Overall, I’m pleased with my progress here — but the thing I’ve left out is testing. I need to add this to my list for 2014: testing my apps using Mocha / Jasmine / supertest is on my goals!

Goal for 2014: Learn JavaScript promises, map/reduce on MongoDB and role based auth in nodeJS/express. Focus on testing.

AngularJS

I’ve become quite good at AngularJS in 2013. I’ve learnt this well, and am pleased with the progress here. Creating structured single page web-applications has become a lot easier — and I’ve become comfortable, after the initial pains, with controllers, services, directives and filters.

Goal for 2014: Testing AngularJS apps

MeteorJS

For a while, I was gung-ho about Meteor, and spent time learning this. However, I found it not suitable for the start-up I was doing, mainly from my inability to use it to build apps that span web and phone.

Goal for 2014: Build a real app using Meteor.

PhoneGap

I've learnt PhoneGap, and have built a few apps using PhoneGap in 2013. The learning curve here — especially for using plugins — has been steep. In 2014, I dont really want to get better at PhoneGap : I just want to move away from it.

Goal for 2014: Write a native app for Android, iPhone and Windows.

Other stuff

There’s a lot of other stuff I’ve learnt in 2013: Hosting on Amazon, using awesome tools like SublimeText and WebStorm, source-control with Git and GitHub, and tools like Firebug and Ripple and so many other things.

The only non-goal from this list is: for many years I wanted to be an Emacs guru. This year, I’ve decided to let that one drop….

Goal for 2014: Become really good with SublimeText & WebStorm. Host an app on Windows Azure. Consider moving to DigitalOcean.

Formal MOOC’s

I have also completed two formal MOOC’s in 2013 (don’t ask me how many I signed up for!), both of which were excellent. They were Programming Languages and Algorithms — Analysis & Design, and I found them both tremendous.

Goal for 2014: Take 2 MOOC’s this year too.

So that’s it: my programming goals for 2014 are:

  1. Create a JavaScript framework.
  2. Contribute to an open-source project.
  3. Focus on testing all my JavaScript apps (client & server side).
  4. Learn map/reduce on MongoDB and build one real big-data project.
  5. Build a real app using MeteorJS.
  6. Write native apps for Android, iPhone and Windows.
  7. Become really good with SublimeText & WebStorm.
  8. Host an app on Windows Azure.
  9. Complete 2 MOOC’s.
  10. Check-in code daily, and become an awesome programmer!

--

--