Ideas inspired by NodeJS

The art of imitating the innefable...

Let me begin from an initially strange starting point: Alexander the Great and his origin in the small, mountain lands of Macedonia. They were not the technologic vanguard in the world, they are few..but the question is,  how did they could invade and conquer the most extense empire in the world? I am convinced (after many reading about that) that they represented the innefable revulsive into a very large old complex organization (the Aquemenidan persian empire) with an old structure, based on an already obsolete social and political paradigm. Something that could not be understood and assumed (therefore, it could not be easily defeated).

OK, OK, I am really exaggerating! But I'll try to write something consistent about the impact of the irruption of NodeJS in the current technological landscape.

NodeJS is much more than JavaScript on the server. This feature is a big achievement, of course, but I am interested on what actually NodeJS provides us in a higher level. When I began to use NodeJS some time ago I feel...free! Yes, it sounds like somwthing stupid, but I felt free from so many frameworks, libraries and so many constraints I had habituated along years and years of taking for granted these same constraints. I felt free to implement my own patterns, my own abstraction layers, my own communication path. But, why? It is evident. JavaScript applied in a free module system, encapsulating features in dependencies, using well known configuration descriptors (package.json) and including in a seamless natural way the most valuated gift, dependency injection of components.


Allow me another historical thinking. I am remembering the christian church and how they decided to "treat" to pre-socratics philosophers and physicians. They use a furtherly successful rethoric technique called "Escolastica". resuming this strange system, they tried to ridicule these historical men by involving their names into stupid stories. Heraclito buried himself into a heap of shit trying to sove his problem with hydropesia. Thales of Mileto fell in a hole in the ground while he was looking at the stars. And many many stupid stories. The most important objective for christians was elliminate the cultural inheritance of these men. Bridging the gap with this precedent I am remembering the odd  video by Garret Smith about a NodeJS fan and an authentic engineer. Thank you Juan for sending me these wonderful materials! The video is fun and the reasons exposed are valid, but it is only a trick. The NodeJS fan is going to lose the battle and his dignity!

I was just kidding. I love videos by Garret. They an important part of the debate. But I would like to contribute to it...

Many people has suddenly  re-discovered the async programming and non blocking io. Great! Thats the best merit of NodeJS. The event loop in NodeJS is like the asynchronous nature of JavaScript. read this good article by Axel Rauschmayer or the unique and wonderful book I've found about this topic (Async Programming by Trevor Burnham, in the Pragmatic Programmers collection).
The below graph shows somethig about the event loop:


Despite a lot of benchmarks versus Apache, Nginx, etc has been done they not provide us a conclusive aftermath. But speed, availability and so on are not the question here (this time). I would like talk about models, trends and changes in programming strategies and paradigms (according to Kuhn's definition of scientific paradigm).


Why we needed NodeJS

1-Because we needed thinking in an Asynchronous Programming way.
I learnt JavaScript a long time ago. NodeJS taught me again how beautiful and useful it could be. Many years in projects with leaders trying to make synchronous what is not. That's actually the cause of the generallized (not currently!) bad opinion about JavaScript.

2-Because we need thinking in lighter architectures
Also, they showed a new way towards new architectures. We agree about actually we use too much layers, too much services, too much components, do not you? ;) maybe we were thinking on an already old and obsolete way of architecture. In this issue I think JEE6/7 and NodeJS (and many others) have contributed to this renovation.

3-Because it brought us a new individual way of thinking
Many times we suffer a sort of ideologic formal subduction. Enterprise thinking is contaminating our points of view. An old enemy was installed between us: arbitrary conventions! Scientific paradigms live together for long years. Replacement of them is not an automatic process. The origin of the new replacement is NodeJS. One of the first indications that are saying us something is changing. This idea is exciting and dangerous! It is questioning the hegemonic paradigm: the big well-tested many layers architectures based on synchronous processes (async is used for messaging and report generation, do you remember?).


Non blocking io servers, asynchronous designs, new architectural models . Do we really need them? I think.. Yes! Because now all those old fashioned servers are showing us their wonderful non blocking mono/multi thread features. What was happening before node? Were they hiding these very valuable features?
We need this kind of revulsives that make us to re-questioning all out pre-conceived concepts about architecture.
Like Vassili Grossman said: The worst enemies for an army are: Excess of weight, Excess of Pride, Pre-conceived concepts. Times are changing (one more time) fastly. The technological panorama is mutating towards a extremely complex and multi-faceted model. We must be flexible to adapt to these changes in our professional worlds (every time more frequently).

A new world has been discovered for developers. HTML5 and new possible trends in web apps. To make possible the completion of the replacement of the paradigm we need more conditions:

  • We need mature secure websockets or a new http spec
  • We need real time applications. Convice your colleagues it is not a geek theoretical issue.
  • We need freedom towards a world of developers. Free yourself from enterprise thinking! It is a hard constraint around our mind.
  • We need intellectual work, not factories!

Concluding..is jJavaScript the future lingua franca? Some day will be adopted (or not) by Enterprises. But its main concepts are being already considered and forcing a change into out old concepts.It is not a minor effect...

Thank you for your patience..

Comments