It is now a consolidate tradition for me to publish, during summer time, a list of the books I liked reading or that I bought and are sitting on my shelves (or, lately, more and more on my iPad) waiting to be read.
In the last years these lists contained .NET and development methodologies books and web development books (jQuery and JavaScript). The topics of the book in this year’s list are a bit different. There will still be a bit of web development on .NET, but due to the nature of the projects I did in my spare time, the list will mainly be about WP7 development, Arduino/InternetOfThings and one of the cool technologies with which I’m experimenting lately, which is Node.js.
Instead of 11 or 13, this year there will be more books, so I’ve split my summer reading list over 4 posts:
- Learning Node.js (this post)
- Books on Arduino and the Internet of things
- Books to teach you how to write WP7 apps
- Some other .NET and soft skills books.
Why Node.js and what it is
Lately there has been a lot of talking about this new technology, that replaced Ruby and Rails as the cool technology of the moment. While Ruby and Rails never caught on me, Node.js really did.
I declared in a few other occasions I’m a web developer at heart, and my first programming language was LiveWire, the first implementation, on Netscape server, of a server-side JavaScript library, in 1996. Node.js immediately sparked my interest: a return to my origins.
Node.js is basically a server-side JavaScript library that handles web requests in an asynchronous and event-driven way. It’s low level API, but the cool thing is that tons of libraries and modules have been built on top of it; what at first sight can look just like a super-scalable low-level networking and parallel library, is becoming a complete development platform full of high-level libraries. If you look at similarity in the .NET universe, Node.js is like an asynchronous HttpHandler, on top of which all Microsoft web frameworks, WebForms and ASP.NET MVC, have been built.
Node.js runs on as standalone server, on Linux, Mac and Windows, but lately there has been a lot of discussion in the .NET twitter/blog-sphere about a project developed by Microsoft that allows running Node.js directly from inside IIS.
Scott Hanselman wrote a very nice post explaining what Node is, why it matters and how you can run it inside IIS, and Tomasz Janczuk, the author of the IIS-Node.js bridge, wrote a few post explaining how to install and get started with it, how to host an Express based application on IIS (more on Express later) and how to use WebMatrix and IIS Express to work with Node.js.
Are you convinced now?
Books and resources to learn Node.js
This post was meant to be about books, wasn’t it? Unfortunately there are not many Node.js books around and most of the knowledge is available in form of online tutorials and screencasts. But here there two (probably the only ones?) that are targeted for beginners that don’t want to hunt for information on the web.
The Node Beginner Book
A very concise 86 pages (at least that’s what my iBook says) eBook that will guide you from “novice to advanced-novice” while building a image uploading application. It won’t teach you best practices but will show you all the various aspects of building a Node.js application. The book is available online for free, or on github, together with code samples. Or if you don’t want to kill trees printing the book or want the convenience of having it nicely formatted as eBook, you can buy it for 10USD in bundle with the Hands-on Node.js book. For the cost of 3 coffees you get all you need to get stared with Node.js
Hands-on Node.js
Once you have completed the sample application presented in the previous book, the next step is Hands-on Node.js, also available on Amazon Kindle (as well as in bundle together with The Node Beginner Book). It starts by giving a bit of theoretical explanations on the eventing model of Node.js, and later it covers all the built-in modules of Node.js. It covers some automated unit testing and debugging tips as well. The thing I liked is the extensive usage of exercises that will make you learn the concepts even better (and it has the solutions at the end of the book).
Node.js in Action
UPDATE: As Maurizo says in the comment, there is also Node.js in Action from Manning. Still in MEAP (Early Access Preview), scheduled for release in Spring 2012, you can read the first chapter “Why the Web needs Node.js”.
NodeTuts
The books are over, but the same author of Hands-on Node.js has a screencast called NodeTuts in which he explain how to work with Node.js. The first episodes are about installation and basic stuffs, but the following ones are more advanced and cover also external libraries and frameworks.
How To Node
Another good source of information is How To Node. More advanced topics than NoteTuts but based on older version of Node.js and lately not updated that much. The geeky thing about this blog is that it runs on Node.js powered blog engine called Wheat and contents are hosted on GitHub.
JavaScript books
Node.js is Javascript, so everything you know about programming in JavaScript still apply here. And to learn the best way to write JavaScript you can also read the books about client-side JavaScript development, like the ones I listed in my previous summer reading lists. For example, JavaScript: The Good Parts by Douglas Crockford or Pro JavaScript Techniques and Secret of the JavaScript Ninja by John Resig.
External modules and libraries
But Node.js by itself will take you nowhere: it shines if used with external modules that will help you build web apps without having to deal with low-level processing. There are tons of modules, but I want to highlight some of what I think are the most popular and useful:
- Backbone.js and underscore.js – not specific to Node.js, they are standard JavaScript libraries than can also be used in client-side JavaScript development, even in conjunction with jQuery. One is a library that helps making sense of all data used in a JavaScript application, with the help of key-value lists and more. The other brings functional development to JavaScript.
- Spine.js is again a standard JavaScript library that implements the MVC pattern. Can be used with Node.js to build a MVC web application.
- Express.js is a generic web framework for Node.js, but not MVC based.
- Mustache is a templating engine for JavaScript, and many other languages, including .NET.
- Mongoose.js is a MongoDB “driver” for Node.js.
- Socket.io is a library for building applications based on the HTML5 WebSockets specs. Both server and client side.
Conclusion
At the end this turned out to be more a Node.js jump-start guide rather than a list of recommended books, but I hope you find it useful anyway.
Did I miss some good book or Node.js online reference? Do you have any other Node.js module you cannot live without? Please comment and let me know.
In the next days I’ll blog about more books for this (end of) summer.