Node.js

My journey @ Node Interactive in Portland

1. Introduction

Where I live, in Quebec City, JavaScript is not glittering much. We’re a small city and most of our IT projects are for the government, and here, it’s Microsoft. So I went to Portland in the US at the Node Interactive and this article is a summary of the sessions I attended. Note that if you are interested in viewing the sessions, they are available on Youtube.

2. The Sessions

The sessions were mainly split in 3 different subjects. There were sessions oriented on back-end things like QMiner or even Docker, some on more front-end things like Sassport or Handlebars, and a whole lot of sessions on IoT. Sadly for those who are interested in IoT, I didn’t attend any of those sessions.
 

2.1. The World is being reinvented in code – Jason Gartner, IBM

This session was part of the opening keynotes. Jason brought a incredible point saying that the future of software development is API. He seemed really excited and convinced that Node is the future as it facilitates the creation of those services API. I personally think he’s right about the future of software, though I don’t know if Node will be the main technology behind that. Node is good for simple tasks with a simple data model. But, how simple is it to create a Restful web service in node?

server.js

            var express = require('express');
            var app = new express();

            app.get('/', function (request, response) {
               response.send(new Date()); 
            });

            app.listen(3000, function() {
                console.log("Server started!");
            });
            

It’s predicted that by 2018, API based economy will be worth 2.2 trillion dollar – Jason Gartner

Presentation of @jason_gartner

2.2. Node.js and npm by numbers – Ashley Williams, npm

From what I remember, this woman was really refreshing. She came on stage and gave us statistics about Node.js and NPM. Here’s what I could get:

  • There are 1.8 million packages installed everyday.
  • Each package has an average of 70 dependencies.
  • Total of 126,000,000 packages installed daily.
  • npm is a community engagement tool.
  • Largest package manager in the world

To read: bit.ly/node-numbers

2.3. Serving the Node.js Enterprise, thus serving the community – Joe McCann, NodeSource

Joe was talking about a new facet of Node.js. The community of Node.js needs that the IT industry adopt Node.js and that is done through EnterpriseJS, a coalition of members that works so Node.js reflects the needs of the industry, like easy profiling, debugging, best practices and tools.

To read: EnterpriseJS.io

2.4. Getting Sassy with Node.js – David Khourshid, Counsyl

Sass gives CSS the little things that were missing, like variables, functions, and inheritance. This guy showed us Node utilities to integrate Saas files into our project. Now, this guy pushes the concept a little further by allowing people to mix both JS and Sass, share variables and functions. With Sassport, it’s possible to define a JavaScript and import it directly into Sass so we can use it. That demo was done with the Math API.

To read: Sassport

2.5. Real-time Collaboration Sync Strategie – Todd Kennedy, Scripto

Todd presented the audience a bit of history behind real-time collaboration on a document, like Office 360 or Google Docs. I will not go in details, but I will give you links if you are interested in the subject and want to learn the theory.

To read: Operational transformation, share.js

2.6. Debugging Node.js in Production – Yunong Xiao, Netflix

Then there was this man that came and showed us tools for Node.js debugging in production. He showed us an example of a production crisis that happened at Netflix and how they identified the root cause. This was done using the scientific method. Then, he showed us how to perform a core dump on the node thread and analyze it with various tools. For example, to identify a performance problem, they sample the stack trace, run flame graph and identify the bottleneck.

To read: Flame Graph, mdb v8

2.7. Plumbing the Depths of Handlebars – Ryan Lewis, Expedia

This session was a kind of tutorial on certain aspects of handlebars, one of the popular Node.js templating engine. Ryan explained the concept of partials, helpers, etc.. He also show us tricks regarding the scoping of the variables in helpers and how to avoid collision with best pratices. He also gave us links to different implementations of handlebars.

To read: Handlebars.java, Handlebars.Net, pybars (Python), Handlebars.php, Handlebars.js

2.8. Go Ahead, Roll Your Own Framework – Ryan Stevens, LendingClub

Ryan brought an interesting theory that the complexity of the code produced gets more and more complex as the developer builds experience, but that at a certain point, it starts to become less complex. That is explained by the fact that developpers start using tools provided by the other instead of creating. This led to the main subject of his talk, that is to use all those tools and make your own framework that fits your needs.

So, why would you want to roll you own framework? …because you can … because you wanted to – Ryan Stevens

To read: Express, Meteor, Sails.js, hapi.js, Restify

2.9. Carpentry with Duktape – Tyler Brock, Hustle Inc.

Tyler Brock decided to demonstrate how to mix C code with JavaScript by loading a JavaScript engine in you C application using a tool called Duktape. For now, it seems like pretty new technology because it was lacking a lot of features, and I would personnaly prefer calling a Node.js Rest Service and work with the values returned, but I’m sure that this can be useful when embedded in devices.

To read: duktape

2.10. FrontendFS: Creating a Filesystem for Web Development Using Node.js – Clay Smith, New Relic

This is interesting. Fuse is a frontend virtual file system. With this framework, you can read, write, create, delete or read the attributes of files that are stored in memory, just like you would do on a normal file system. The files are stored as JavaScript Arrays.

To read: Fuse, Fusile

2.12. Server-Side Rendering Isn’t Enough – Matthew Phillips, Phillips

So, this guy presented tips and tricks to make you Node applications as fast as possible. Because “no one likes staring at a spinner” and “Amazon reports that conversion increased by 1% for every 100ms improvement”, he brought some interesting points regarding performance. First, like the title of the presentation suggests, server-side rendering is useful for performance as the JavaScript and CSS files can be added at will on the server and rendered. Appart from that, it reduces considerably the number of requests between the client and the server since the code of the dependencies is included in the output. Then he presented us a JavaScript framework that helps achieve that an many other things to improve performance.

To read: Done.js

2.13. Rebuilding the Ship as it sails – Philip James, Eventbrite

This session was from a guy at Eventbrite called Philip. He explained quickly how they got from a non-responsive website to a 90% responsive website in a month. Now that this runs in production at Eventbrite, they notice a significant increase of mobile traffic. In fact, he showed us satistics regarding the kind of devices used to connect to Eventbrite and, surprisingly, almost 50% of their traffic come from mobile devices.

To read: Dorsal

2.14. Node.js API Pitfalls: Can You Spot Them? – Sam Roberts, Strongloop

Some examples I can remember regarding this presentation is the difference between setImmediate and nextTick that do the opposite of that their name is saying, worker.kill vs worker.suicide, etc.. There was a bunch of examples like this that you can see in the presentation (see link in the introduction) if you are interested.

2.15. Node.js Intl: Where We Are and What’s Next – Steven Loomis, IBM

So, Node.js now has a pretty impressive internationalization package that, funnily enough, is about the same size as the engine itself. The internationalization is standardized by ECMAScript (ECMA-402) and was first enabled in Node.js v0.12 that came out in February of 2015. He demonstrated quickly how this can be achived by doing date.toLocaleString() or even number.toLocaleString() to display information based on a specific locale.

To read: Intl on MDN, ECMA-402, Intel work group, i18n

2.16. Microservice Developer Experience – Peter Elger, nearForm

This guy from nearForm came to explain us his experience with microservices development. The point here is that Node.js is a tool that was developped to facilitate the writing of APIs in form of services, that Node.js is extremely lightweight and that with tools like Docker, it’s really simple to put a microservice architecture in place. The main problem behind the microservice architecture is that it becomes quickly a mess of console windows and it’s really hard to debug. He also did a quick demo on Fuge that provides a generation and execution environment for microservice development on Node.js.

To read: Fuge, Docker, hapi, Seneca

2.17. How to Build and Deploy Open Source Application Monitoring Solutions – Chris Bailey, IBM

This guy came to show us the Open Source tools available for monitoring a Node.js application that do load balancing, automatic scaling, health management, take metrics and load testing.

To read: AppMetrics, StatsD, Carbon, ElasticSearch, Kibana

2.18. JavaScript, For Science! – Max Ogden, DAT Project

Max explained us his vision of what’s lacking in Node.js so it’s adopted by the science industry, like physicians. The main point was the calculations of big numbers or precice float operations. Then he brought something that I didn’t really agree with that is to have parallelism in JS with concurrency management, typed objects like the C’s struc, I/O operation in the browser (note that this can be acheive with the Electron framework).

2.19. Node.js at PayPal – Matt Edelman, PayPal

At Paypal, JavaScript with Node is replacing Java. They build their Kraken.js framework and used it. At first, Matt told us that they were doing the same evolution projects on Node and Java, and that the Node versions were faster to develop with less resources and realized the performance was also a lot better.

So, at Paypal, they currently have more than 80 Node applications running in production and more than 700 Node developpers. By presenting this technology in a way where the developper would feel they are included in the Node community (Kraken.js, etc.), Node got adopte quickly. People wanted to use Node as they were seeing the potential by having the chance to create real applications with it. He also suggested that diversity in a team makes it stronger as more knowledge is transferred, still in an open source development mentality.

2.20. Node.js at Netflix – Kim Trott, Netflix

Before Node, Netflix had a monsterous monolith legacy application that was taking more than 40 minutes to startup. It was so huge, Kim said, that the developpers couldn’t run the application on their own machine. They then decided to give Node a chance, mainly because JavaScript is a common language, well built and solid, because performance is awesome and because of the modular mentality behind a Node application. They then converted their applications into Node and now, it takes under a minute to start. Netflix is now a single page application (restify, react, falcor, etc).

To read: Falcor, ECS, Prana, ReactiveSocket

2.21. Real-time diabetes management with Node.js and Microsoft Azure – Scott Hanselman, Microsoft

Then, at the end of the second day, there was this Scott guy from Microsoft presenting an insuline distributor connected to a needle inside him that is permanently reading his blood sugar levels. This thing was connected to a Node server on MS Azure on which he could access real-time charts and statistics.

The cool thing about him is that the guy came on stage representing Microsoft with a laptop on which was running Ubuntu, he showed us the application in Firefox and told us the application was communicating directly with his Apple watch. That was a warm feel that Microsoft is not the same company as before. They are into the Open Source community, they are willing to support, not only aquire the the product and make it MS. Though they are on the TSC of Node…

3. Conclusion

That said, if you have any questions regarding the conference, feel free to ask me on Twitter @Syl20TOS.

If you were there and took pictures, tweet them at me!

If Sebastien, Julien or Filip (sorry if I spelled your name wrong!) happen to read this, it was a pleasure to have a drink, hang and chat with you. Hope to see you soon!

Sylvain Cloutier

Sylvain has been programming in Java for the past 5 years, mainly in the aerospace industry, as a lead developer of complex web based aircraft wiring systems. He is also one of the organizers of the Java User Group of Quebec City and currently works as a Java developer consultant at CGI.
Subscribe
Notify of
guest

This site uses Akismet to reduce spam. Learn how your comment data is processed.

0 Comments
Inline Feedbacks
View all comments
Back to top button