Wednesday, September 4, 2013

Why node.js


It seems that fashion and IT goes round in circles. Not that I care too much about fashion. In the past 20+ years I have been in the IT, many ideas and concepts were “reinvented” and resold to unsuspecting new generations of programmers. In fact, at the time I decided to become one, programmers were called “computer experts”. It still sounds good.

In 60's and 70' we had mainframes from the likes of IBM and Sperry Rand Corporation. The function they had back then is practically identical to what we now call Cloud computing. Perhaps it's good that Microsoft did not come up first with that name, and patented it. Otherwise the name would have to be Internet Mainframe or Virtual Machines for Rent Over the Internet. In-between we had good old client-server model. Good old because both client and server were usually written in the same programming language and using the same tool. Visual Studio 6 comes to mind immediately. All you had to do was to drag and drop a control on the canvas, double click on it and write an event handler. Or few of them. Nice and easy. Later others like QT, Eclipse and NetBeans, just to mention few of them, followed. The best part was that you seldom had to worry about operating system. Either you had no choice (Windows) or you had cross platform IDE and, again, no worries.

At that idyllic moment Internet moved into lives of programmers. New programming languages were created at such pace that if you went on vacation for more than one week, you could not understand job adds after that. I am a huge fan of open source movement and innovation, but not all programming languages were created equal. Especially to the, how should I say, classically educated programmers. The appeal to the new generations is obvious and they started using the new languages on large scale. The real problem for me emanated from the fact that now there are far more elements in the game than before. We have browser for a client which connects to a web server which is hosted on a file server. It usually translates to at least two operating systems. That is, of course, if you do not have to access a database which could be anywhere in the world and who knows on which operating system. Now, transparency is very nice thing, but you usually end up having client written in one scripting language, server in another and all that glued together wit the third one – HTML. Many frameworks emerged as an answer to this problem. But these are mainly for creating content management systems. Not for writing web applications. Not in good old drag-and-drop-double-click-write-code way. I ran through RIA frameworks list but I did not find what I was looking for. So, for a moment, I let go of this, hoping that, in the future, this will be solved.

On the other hand, choice of a programming language was pretty straightforward. JavaScript practically imposed itself as a de facto standard for the client side. And there is no shortage of libraries like jQueru to facilitate client-side development. The only thing missing was server-side library for JavaScript. And then I discovered node.js. Again. The first time I looked it was in very early development phase, so I was very quick to discard it. In the meantime big companies, and I mean big companies, adopted it and that was it. I stopped looking.

This blog is going to be about it node.js. I shall try to create accompanying web site for code samples that are going to be runnable and a Wiki. I'll try to cover different operating systems as well as a few IDEs to code it.