NodeConf AR 2016 – Day 1
Noders, JavaScripters, programmers from all over the world.
The day has come, first NodeConf held in Buenos Aires, Argentina 🇦🇷. One of the biggest conferences to push NodeJS & JavaScript forward in Argentina & Latin America.
We always like to take part in these events, especially the ones related to the JavaScript community. As we did in JSConf UY 2014, 2015 and JSConf AR 2014. We’ve been using JavaScript for a long time, even prior to NaNLABS. JS is our main language. We use it in almost all our projects.
These are some of the talks that I found interesting, inspirational ant that kept me thinking after the conference.
On Friday 18th, we hit the highway at 7:00 am heading to Buenos Aires to be early for the conference check-in. When we arrived, we grabbed the breakfast the organization had prepared, and we were ready to start. 🙂
Javascript and interactive installations
The conference was kicked-off by Hugh Kennedy @hughskennedy, a developer/creative from Sydney, Australia. He talked about Interactive Installations, explained the process to bring installations to life and showed cool examples using NodeJS as “the glue” to put all these pieces together.
The installations have audio perception and real-time sound & projections.
To achieve this he uses several technologies and NodeJS libraries, such as:
Arduino boards & IoT devices (Johnny-Five, noble, bleno)
Mobile & bluetooth devices
WebSockets (socket.io, websocket-stream)
Audio (Web Audio API)
Control MIDI devices (loopjs)
Audio analysis (A wrapper library that Hugh wrote web-audio-analyser to analyze audio waveform)
Fullscreen browsers & multiple screens
Browsers / Desktop apps (Electron apps which allow to have a self-contained executable)
Check out the long list of npm packages Huge has written.
REGEXP.PROTOTYPE.UNICODE
The next keynote was addressed by of Mathias Bynens @mathias, a well-known Belgian developer who works at Opera Software. We had already assisted to one of his talks at JSConf UY 2015 where he explained how JavaScript relies on Unicode and the problems behind it.
This year, he talked further about the 💩 (a.k.a. “pile of poo”) example. And the two new flags introduced in ECMAScript 6 for regular expressions:
y enables ‘sticky’ matching.
u enables various Unicode-related features.
You can read more about this interesting topic on Mathias’ blog:
Also, check out Mathias’ library to generate JavaScript-compatible regular expressions based on a given set of Unicode symbols or code points.
NodeJS microservices. From zero to hero
Erich Oliveira @oliveira_erich, is the CTO at winnin.com, a media startup funded by coca-cola. He started his presentation describing the monolithic architecture and its limitations on adaptability, deployments & monitoring. He later highlighted the Reactive Manifesto principles and quoted Martin Fowler’s article on the topic.
With this background information, he introduced studio. A micro services framework (inspired by the akka/erlang actors model) for Nodejs. The framework enforces good practices such as async messages, immutability and modularization. It also offers a handful set of plugins to ease support for clusters, usage metrics, timeouts & retries. He sets up a cluster with 2 lines of code!
He’s currently working on a new set of APIs and documentation, with a high focus on app developers, so anyone can start using the framework easily.
The dirty secrets of building large, highly available, scalable HTTP APIS
Damian Schenkelman @dschenkelman, works at Auth0. Auth0 is the company that developed JSON Web Tokens, a technology widely used for authentication. They are active supporters of the Open Source communities.
It was an interesting talk to have a better understanding of the problems faced by large APIs which support huge amount of users.
“When your API starts gaining adoption, you have to worry about things like Authentication, Authorization, Documentation, Validation, Rate Limiting and 0-Downtime Deployments among others.”
Here’s the link to his slides.
Empathetic communication: why vulnerability is the key to collaboration
One of the most inspirational talks IMO was delivered by Sharon Steed @sharonsteed, even though it was not technical. Sharon is an incredible speaker and the founder of Communilogue, a digital marketing agency specializing in content and communication.
Takeaways:
Empathy fuels connection and drives collaboration.
Encourage people that don’t talk to speak their minds.Embrace silence, give the opportunity to speak to other people.
Think about the listener/speaker.
Find a common ground with people with different background, countries, cultures.
Tech can’t replace face-to-face communication.
< I stutter />
She dedicated the first part of her presentation to talking about her stutterness and how she overcame her fears by engaging in public speaking.
Memory profiling for mere mortals
Thorsten Lorenz @thlorenz is a nomad, he travels & works around the world. His current stop is Colombia.
He’s a funny guy and started his presentation telling a story about Bobby and his toys. Bobby has the problem. He can only have a limited amount of toys inside his house. As an analogy of the memory limitation of any application.
He has written articles and collected resources on V8 engine and NodeJS performance. Which are worth reading.
I found this talk really interesting since I’ve worked and done a lot of research on this topic for Java applications and JVM tunning. Most of the tools and techniques are pretty similar, so I’ll dedicate a future post to covering this specifically.
Now and Next.js — deploying JavaScript Unicorns
The last speaker of day 1 was Guillermo Rauch @rauchg. He’s the CEO and co-founder of ZEIT. Guillermo is an Argentine talent that created some of the most used NodeJS libraries like micro, socket.io, mongoosejs, HyperTerm.
Now
The best way to start a new project is by having high-speed progress and iterations. So ZEIT created a tool called now(), which allows to deploy NodeJS applications to the cloud instantly. Each deployment is immutable, which means that all of them will live even after new deployments have been executed.
Now only needs to know how to run the application. There are currently three alternatives for this:
package.json
Dockerfile
static files
This tool can publish localhost environments to the cloud in just seconds, running a single command. Sounds easy? It’s incredible useful, take a look at the official documentation.
Next.js
The other ZEIT’s project presented by Rauch was Next.js. NodeJS enables us to share code between client and server, but there is no framework that allows us to share the same codebase between the two.
Two important concepts popularized by React (life-cycle hooks & render functions) were an important to create this small framework for server-rendered universal JavaScript webapps.
Rauch mentioned these two essays in his speech as motivations that led him to create the library:
This is the official introduction to the framework. These are some of its features:
Only JavaScript
Automatic server rendering
Code splitting
Data fetching is up to the developer
Ahead-of-tie code loading
Also he mentioned some possible future features of the framework:
Fancy routing
Next as middleware
After
That was day 1 of the conference. We closed the day having some beers and getting back to La Plata talking about the highlights of the event. I’ll publish NodeConf day 2 soon.