io.js

io.js, the legendary Node.js fork, has achieved two major things: it made possible to use ES6 in production without excuses and forced Joyent to move Node.js to an open governance model. This is great.

“Node.js will be developed under an open governance, model, with serious corporate support, and without the confusion and fragmentation risk associated with two communities going separate ways.” —

It is still not clear if and when the codebases of both io.js and Node.js will be merged together, but reconciliation discussion is very much alive and you can follow the progress here.

As far as reassurances go, Node.js / io.js technology stack is the best I have ever worked with in my life: excellent performance, simplicity and incredible amount of supported, reusable and compatible modules on Node Package Manager (NPM).

Just to put things in perspective:

Rubygems.org, the package manager for Ruby, has 98,793 packages and 4.8 billion downloads to date since its launch in 2004.

While on NPM at the time of writing there are 135,475 packages, which were downloaded a staggering 1,2 billion times in the last month alone.

I’ve never seen so many components being actively supported by community,

you can focus on your app, not fixing someone’s broken library —

Javascript, the language behind Node.js and io.js is doing well too.

Tiobe has recently awarded Javascript with “Programming Language of The Year 2014” title, so did Red Monk. The language continues to experience a massive increase in adoption globally.

Final point to consider: hiring is easy.

Javascript is the lingua franca of the web and it has one of the lowest barriers to entry. For anyone with Javascript skills, a switch to node.js / io.js stack is usually a short and pleasant experience.

React

React is a simple and declarative JavaScript library for creating user interfaces. It was developed by smart people at Facebook and Instagram to increase developer productivity and to make client side code easier to maintain. They did this by re-thinking separation of concerns and challenging many of the long standing concepts developers took for granted.

Facebook thinks that you should be re-rendering the app every time your data changes to achieve the best performance. Wait, what?!

Enter the Virtual DOM.

React processes all your operations in a separate Virtual DOM written in Javascript without touching the browser. Then it computes the absolute minimum number of operations needed to apply those changes to the real DOM using DOM diffing (described in detail here) and applies the changes using batched writes.

Verdict: using Virtual DOM results in incredible performance gains.

Even on mobile.

React is not only fast, but it’s simple to write too. Here’s a small ToDo list app written in React:

The interesting thing to note here is that the code above also uses JSX, a completely optional JavaScript syntax extension that looks similar to XML, for code clarity.

React Native

But what about mobile?

Before we continue: I have to admit, for years I have been chasing the impossible pipedream of “write once — run everywhere”. And so many times I have been disappointed by HTML5 performance on mobile devices.

Just imagine the possibilities, if you would not need to worry about code fragmentation or performance and you could deploy your code into any platform without modifications (hello, Adobe AIR)?

Today, cross platform apps are still a dream. The performance of HTML wrappers like Cordova is simply no match to native UI rendering.

Facebook knows this as well, that’s why they chose a slightly different path by throwing their support behind React Native (currently available for iOS only; Android version in the works).

The focus of React Native is on developer efficiency across all the platforms you care about — learn once, write anywhere. Facebook uses React Native in multiple production apps and will continue investing in React Native —

React Native makes use of native platform components such as UITabBar and UINavigationController on iOS, multithreading, asynchronous code execution and hardware acceleration.

With React Native apps can achieve a true native feel.

It’s true that React Native renders the results on your screen using a different engine than React in the web browser, but the way you write applications remains unchanged, therefore the philosophy “learn once, write anywhere”.

Using React and React Native does not eliminate the platform overhead completely, but it minimizes it significantly by offering reusable components and ability to write your application in the world’s friendliest language — Javascript, without worrying about performance.

React is a solid technology choice, while we wait for major advances in how Javascript is treated on mobile platforms.

Couchbase 4.0

But first, I have to give a special shout out to the guys at FoundationDB.

Funny story: I almost got myself fired by choosing their database after rigorous research for my company’s main technology stack, only to wake up next morning and find out that they have been acquired by Apple and the downloads are no longer available.

FoundationDB’s attractiveness came in the speed at which it handled ACID-compliant transactions and coupled that with strong scalability —

TechCrunch

In fact it was so fast, it scaled up 14.4 million random writes per second on a 32 x c3.8xlarge cluster. Insane.

Apple snatched up this amazing technology company and the talent behind it leaving nothing for the ailing web.

Luckily the rest of the NoSQL industry did not stand idly by while FoundationDB was breaking records. Almost the same day Couchbase announced version 4.0 of their Server product.

Couchbase 4.0 is SQL capable database powered by extremely fast, scalable and durable Key-Value store.

Here’s the highlights:

Multi dimensional scaling (separation and isolation of query, index, and data resources)

(separation and isolation of query, index, and data resources) ACID transactions via new storage engine called ForestDB

via new storage engine called ForestDB Multi-version concurrency control (MVCC)

(MVCC) SQL for Documents (previously N1QL)

(previously N1QL) Durability (write-ahead logging) and SSD optimizations

These features make it a perfect candidate to fill the gap left by FoundationDB acquisition.

Update May 27, 2015: Couchbase clarified that their V4 product will not actually provide ACID guarantees. I will update this post once more information becomes available.

Recent advancements in data storage technology have proven that speed, scalability and data durability can coexist in a database product. I expect all NoSQL databases to move towards providing ACID support out of the box sooner or later (looking at you MongoDB).

Meanwhile Couchbase 4.0 looks like an amazing technology which you should absolutely consider for your technology stack in 2015.

Notable mentions

Postgres 9.4.1 has JSONB which makes it a hybrid SQL+NoSQL database. Great performance out of the box while you wait for the new stuff. Nice hosting options too: heroku and compose

which makes it a hybrid SQL+NoSQL database. Great performance out of the box while you wait for the new stuff. Nice hosting options too: heroku and compose MongoDB 3.0 has swappable storage engine support, and overall great performance. This is our current production DB. However, no transactions out of the box and inferior master-slave replication model.

has swappable storage engine support, and overall great performance. This is our current production DB. However, no transactions out of the box and inferior master-slave replication model. OrientDB 2.0 is the one to watch. An interesting mixture of document and graph databases with ACID transaction support. Latest 2.0 cloud hosted instances available from Jelastic.

Thanks for reading!

If you enjoyed this, let me know on Twitter @pauliusuza