NodeJS Conf Italy: my notes

  • conference • comment • markdown • italy • nodejs • notes • javascript • brief • slides • conf • presentation • brescia
  • 1401 words

I'm just back from a very good conference. And for once, I can proudly say, it was organized by Italians! The host were WEBdeBS, a web company based in lovely Brescia, and the topic was... very hot: Node.JS.

Node.JS Conference (@nodejsconfit) (on has been hosted in the Centro Paolo VI, where talks well complemented by lovely Italian food. What else can you ask?

A great addition to my collection of "hackshirts"

Once arrived, we have been welcomed by a prompt start and VERY nice t-shirts, and a sharp, on time start (a rarity for Italians, I know :P).

I took some notes/bullet-points during the talks, as I usually do at conferences. So, I'll share them here, adding a little abstract or some comments of mine. Below every section there is a link the actual notes (in Markdown format), so that you can download and read as you please. Also, where available, I linked the slides.

00 - Keynote - Is not supposed to fly... but it does!

The keynote speech was given by... an Erlang expert: Gabriele Lana (@gabrielelana). Expert in high-concurrency and high-reliability, I think he is the perfect speaker to kick-start the conference.

Who can better talk about Node.JS, a software that surprised everyone since it's birth for being "not designed for THAT!", if not someone that has learned using it that "it suits surprisingly well this role". Indeed the recurring theme of the keynote was the bumblebee, an insect that flies, non the less his body structure doesn't seem to be really suitable.

"The bumble bee is not supposed to fly, but he doesn't know it so it goes on."

Link to 00-Keynote-It's not supposed to fly but it Slides on SlideShare.

01 - Event based architecture is here to stay, baby!

This was an interesting talk by a very nice and sociable German guy, Golo Roden.

He introduced a new, fresh perspective to look at "code modularity": look at your code as a computer chip. Design and code your classes/functions as a fully independent, self contained, easy testable unit of code. A module that you can introduce in any code environment, and it will still be usable.

Those "chips" will than communicate with the outside world firing events. If nothing is there listening, the code will still work. In other words, 100% of the IO for any module of code becomes Event Driven.

Also, that would make code easy to test, as mocking will become almost trivial.

After that, he discussed the use of Coffee Script, as a language to support "old style" developers in their transition to Javascript. Some of you might already know what I think of Coffee Script, but in all fairness he did mentioned that developers will quickly hit the "code in Coffee Script but debug in Javascript" barrier, so we are OK ;-).

Something really cool about Golo was his business card:

Golo Roden business card ROCKS!

Link to 01-Event Based Architecture is here to

02 - Scaling node to 50M requests per day

This talk was from the great guys at Forward, a sort of "umbrella company/brand/business creators".

To give the talk were Andy Kent and Ryan Greenhall.

They presented a bunch of intriguing Open Source projects they use as solutions for their business needs, all based on Node. Interesting is also all the detailed, data-driven comparison they do between their previous use of Rails, and their current stack on Node. Of all of them, creek is the one that attracted my attention the most. It seems to be the perfect instrument if you want to make sense of a stream of live data, fast.

Also it is an interesting talk in general, if you care about scalability and how Node can help with that.

Link to 02-Scaling node to 50M requests per

03 - Deploying Cloud9 in Cloud9

Sergi Mansilla @sergimansilla presented Cloud9, and demonstrated how this amazing project is self-hosted: this means that they develop it using Cloud9 itself. Also, Cloud9 is opensource, and you can install it on your own server, and, even better, contribute to it.

It's very much indicated for JS-centric development, but it's not exclusive. Definitely a project I should pay more attention to. And I think Sergi nailed a very important point in his presentation: developers carry too much stuff around. I endorse that and I also add: it's even worse for JavaScript developers because of how many layers of software you need before your code actually runs!

So, give a good look at Cloud9. I'm thinking it would be perfect for some Node playing around I'm currently doing.

Link to 03-Deploying Cloud9 in

Lunch break

Well, we were in Italy: what do expect if not amazing food for the lunch break? I had mushroom risotto and what not in terms of sour and sweet dishes. But the best things were the "spuntino":

Illy Coffee
Nutella brioche

They couldn't do anything better on this side: this is the first time I actually enjoy myself with conference food. Normally is just "food to survive" - this was "food to enjoy".

04 - Server Side Javascript - Going all the way

This talk was a bit controversial for me, but still interesting. Oleg Podsechin @olegpodsechin introduced the "risky" topic of Sync vs. Async conding. And, particularly, discussed how the Async coding pattern doesn't seem to fit very well within Server Side programming.

He made some examples, like CRUD services, having some issues when coded asynchronously.

Then he introduced his project, Common Node, a "Synchronous CommonJS compatibility layer for Node.js". It's built on the top of Fibers, introduced by the Asana team in this blog post.

My opinion on this? Node.js is built around the "Asynchronousity" of Javascript: writing an abstraction layer on top of it to make it possible to code synchronously defeats the very purpose of using Javascript server side. If you want to use JavaScript server side just because "oh, I can reuse what I know", then you are doing it for the wrong reason. I say, Embrace event driven.

Also, he presented various benchmark, and all of them showed that Common Node had to pay a price respect to plain Node. Still, though, a very interesting presentation.

Link to 04-Server side Javascript - Going all the Slides on SlideShare.

05 - Going real time with

Arnout Kazemier (@3rdEden) presented, a project I know a bit about, but I didn't yet realized how cool and easy to use was.

What is really superb is how they managed to abstract the transport layer, so that it can automatically pick the best option for the client browser (WebSockets, Adobe Flash Sockets, Comet), down to JSONP Polling). And yes, it does work on IE >= 5 too_!

Arnout gave us also a sneak pick of the upcoming support for clustering. Well, now there is no excuse for not being real-time.

Link to 05-Going real time with

06 - Back to Data

Ian Jorgensen @ianjorgensen created (together with Mathias Buus @mafintosh, and that's what he presented. is revolutionary in the way makes you look at data. Instead of the usual bucket that you interrogate (send a query), with this you declare what you are interested in (declare a query). The query are published in a hub. Data are received by the hub that delivers a subset of those to the clients, based on the query they declared. A total inversion of flux, I say.

But what was really amazing of Ian's presentation where the demo. And in the specific, how he glued to Arduino! Data generated on the board by sensors, was published on a hub (through HTTP), and that was then published and delivered to a web client of the same hub. Imagine the applications of such simple connection.

Link to 06-Back to Slides at


It was a very good experience: visiting my home country, in a beautiful city I know little about, eating good food and talking about cutting edge technology.

Again, I do apologize if my notes are the made of the worst stenography. They are written very quickly, while I try to grab as much as I can from the speaker. And it is even more difficult when the topic is interesting, because good ideas initiate thinking.

If there is another next year, I'll definitely join in!

comments powered by Disqus