Working on a NodeJS project

While I’ve got things to keep me in touch technically while between contracts in the form of 2 modules towards my Masters degree in Intelligent Systems, a lot of the development requirements there are pretty divorced from the area I’m most experienced – most of the code is relatively simple and written in Matlab or the like (the Data Mining module is all about learning to use SAS). In order to keep my web development skills current I’m also doing some development work on a pet project. Based on the skills which seem to be in demand at the moment (and the fact I generally pick something other than my primary language for personal projects) I decided to put Scala and the Play Framework on hold and leave that project for a bit, and start on another idea I’d had using NodeJS instead.

It’s early days yet, so I don’t know how well it will work for some of the more complex requirements, but the first impressions have been pretty good. I spent the majority of my time at Thomson Reuters working on front-end JavaScript, so the language side has not been a problem. The main thing is learning the libraries that are useful at the back-end which wouldn’t be used for the front end. JavaScript is still a rather odd language in some ways – it was written very quickly initially and has become a lot more powerful with some list processing functions and the like being added, as well as best practices for doing development in a more OO manner. It still tends to seem like those best practices are a bit bolted onto the system, and there are points where you can end up with bugs which would just be bizarre in any other language – such as ending up confused as to what ‘this’ with actually refer to.

Having said that, JavaScript does have a number of advantages. The first is that when you’re developing a website you’re then using the same language on the front and back end, rather than switching between 2 languages. The second is support – there are a range of good IDEs around, and you can potentially get started on Windows application development using HTML and JavaScript as well. Another is hiring skills, which if you’re potentially going to get others to work on your project is always an important consideration. Any self-respecting web developer will have reasonable JavaScript skills even if the majority of their time is spent on the back-end. This means that you have a wider range of potential candidates if you’re willing to allow for a small amount of familiarization with the Node side of things.

When the site is in a state where there’s one or 2 of the features I’m wanting to show off, I’ll post the URL. It’s currently hosted on OpenShift, which seems to work pretty well for a free option, although at some point I’ll presumably have to move to the paid solution to get SSL. In the meantime it’s proving an interesting environment and one which I think I can be productive in.