About a year ago, I learned about node conf EU, the largest Europe based Node.js conference. I immediately did some research and it was love at first sight.
Because it is such a large conference and our company focusses on Node.js as primary back-end technology, I was able to convince my bosses to make arrangements.
What you will read next is my full experience of this awesome conference, so please follow me!
The Journey
The Node conf EU 2019 was hosted in Kilkenny Ireland and Codious is based in Belgium.
This meant that we had to go through a whole journey to get there.
First of there is no direct flight from a Belgian airport to Kilkenny, instead we had to fly to Dublin and the distance between Kilkenny and Dublin is roughly 130 km (80 miles) if you take a car.
Luckily there was a train from Dublin to Kilkenny that could take us there, low cost and pretty fast.
However… the train station is nowhere near the airport. Again, the Irish thought about that as well and have bus transportation from the airport to the train station.
To sum up: we had to take a plane to Dublin (~1h 45m), a bus to the Heuston bus station (~1h) and finally a train to Kilkenny (~1h 25m).
That is about 4 hours and 10 minutes (quick math’s) without the waiting times in between.
Having to travel for half a day is not that fun, right?
But I must say, I would do it again, because the conference was that fun!
I also had the advantage that I did not have to do it alone, I was there with some awesome coworkers and in between waits we had some beers, some food and interesting chats.
Ireland
After all that travel, we were finally in Kilkenny Ireland!
It was my first time in Ireland (and British Isles in general) and I must say, it was fantastic!
Short list of what stuck with me:
The people: they are incredibly friendly! Everyone you pass by says hi or nods and they are super helpful.
The food: I had no idea what to expect of the food, but I actually liked everything I ate there, from breakfast to lunch to dinner!
The weather: Cold and rainy weather. And trust me, it’s as bad as people say. Belgium is already cold and rainy but has nothing on Ireland.
The Conference
In very short: Node conf is a conference about – you guessed it, Node.js.
It is the largest Node.js conference in Europe and attracts people from all around the world.
It’s a four-day conference with talks, workshop and recreational activities.
I want to start off by saying that they did an amazing job in planning and taking care of logistics:
The day before the first conference day, there was a reception so that a lot of the people could already collect their badge (and goodie bag of course), by doing this they avoided long waiting lines on the first day of the conference.
There were shuttle busses from a lot of different hotels to the venue
They arranged water, coffee, thee, vitamin water, candy, cookies, fruit, … throughout the conference (every day)
We were provided lunch and dinner (included in the ticket price) every single day of the conference
The venue
The conference was at the Lyrath estate, a beautiful historic 17th Century Estate House, home to a hotel, a spa and a convention center.
All lunches and dinners (except for 1) were at the hotel’s restaurant and were very tasty and catered.
The main talks were at the biggest room of the convention center. What I really liked was that there were tables for everyone to sit at with water, a pen and a notebook.
The watch
What about the watch you ask?
A few years ago, the node conf organizers thought of a nifty way to enhance the conference experience: a digital badge! This year, they went even further and gave every attendee a digital watch called Bangle.js (or nodewatch), a Hackable, Open Source JavaScript and TensorFlow-driven Smartwatch.
NearForm and Gordon Williams created the watch that runs on Espruino for a kickstarter and we were the first ones to get our hands on it.
They organized workshops during the conference to learn how to use and write apps for the device.
I don’t know about you, but I thought this was an incredible creative and fun idea of Node conf Eu!
The talks
First of I would like to say that all talks were interesting and worthwhile, but some of them stood out for me and I will tell you a bit more about them.
I am not going to go over all the talks as it would be a bit much. But if you are interested, you can find a link to all the talks at the end of the article.
Let it crash! (Juian Duque – Heroku )
Julián had some interesting insides on why you should let your Node.js app crash instead of trying to recover from specific types of errors.
He started off with giving some good practices to monitor your code like adding healthchecks and proper logging.
But what should you do if something does go wrong: you let it crash!
Why? First of a Node.js process is very lightweight with a small memory footprint, so if you make sure the startup is lean (not a lot of operations) it will be very fast and easy to restart.
There are a few extra hooks you can use if your process exits so that you can have a more graceful shutdown and log important information:
Exit hook
Is emitted when process.exit is called or in case of an uncaughtException
process.on(‘exit’, code => {// close connections and log information})
This hook cannot handle asynchronous tasks (The event loop is paused here)
Before exit hook
Is not emitted when process.exit is called or in case of an uncaughtException
process.on(‘beforeExit, code => {// await some task, close connections and log information }
this hook can handle asynchronous tasks
SIGTERM
A process monitor will send a SIGTERM signal to successfully terminate a process
process.on(‘exit’, signal => {// close connections and log information})
SIGINT
Is emitted when a process is interrupted (e.g: ^c)
process.on(‘exit’, signal => {// close connections and log information})
uncaught exception
emitted when there is an uncaught exception
process.on(‘uncaughtException’, err => {// close connections and log information }
unhandled rejection
emitted when there is an unhandled rejection (in case of asynchronous calls)
process.on(‘unhandledRejection’, (reason, promise) => {// close connections and log information }
So, when should you crash?
If you have an uncaughtException or an unhandledRejection!
DO NOT try to recover from any of these errors because it can lead to memory leaks, a bad application state or hanging sockets.
Other good practices Julián discuses: have graceful shutdowns and use loggers (e.g: Winston)
Braille.js. Bringing together accessibility, JavaScript and IoT (Theodore Vorillas – Workable)
Theodore’s talk was one of my favorite talks and the technical part was not the only reason.
The reason why he decided to create Braille.js was very noble. He talked about how hard it is for people with vision impairment all over the world. The statistics Theodore shows don’t lie:
There are ~263 million people with vision impairment
Only 10% of those people have access to proper education material (Braille books/services)
~90% of American blind children are not learning to read and write because they are not being taught Braille of given access to it.
Some of the things that cause these numbers are the high cost of both Braille books (6 – 8 times more than regular books) and Braille equipment (e.g.: Braille display: 500 – 8000 dollars).
Theodore thought about what we can do as a community and tried to build a prototype of a device that can help us teach yourself Braille.
He set up some criteria/goals to build the hardware:
Easy to build & hack (Theodore had no prior experience with hardware)
Accessible (obviously)
Cheap!!!
He used an Arduino uno as hardware and johnny-five so that he could use NodeJS (instead of C).
He explained how the made the physical Braille cell, he told us that every letter is represented by an array of 6 ‘pins’ that can have a value of 0 or 1.
He showed some details of the implementation and gave a demo and I must say, I was impressed!
If you have that chance, watch the full video of this talk, you won’t regret it!
The project and more information can be found at https://github.com/braillejs.
Shaping electron: we get by with a little help from our friends (Shelley Voor – GITHUB)
From the moment Shelley started talking, you could tell she is an amazing speaker.
The talk was very smooth and well explained.
Shelly explains how Electron’s dependencies work together and how they are used to enable you to write applications with Electron.
For those of you who don’t know Electron: in short Electron is a JavaScript framework for creating desktop apps with web technologies.
Electron (mainly) relies on V8, NodeJs, chromium and gin.
Electron does not replace the native language but rather transforms to it.
Node’s task in Electron mainly consists of file system and network capabilities by using native bindings.
V8 allows Electron to create JavaScript objects in C++, by initialization of the native binding.
Gen makes it easier for Chromium and V8 to work together, it allows us to marshal types.
Gen uses a dictionary to write bindings.
Visualizing cloud architectures in real time with d3.js (Julie Ng – Microsoft)
Julie is a cloud solution architect at Microsoft and has been working with could technologies for what she calls forever.
When applications started to grow an became more complex, she felt that It got harder to monitor and manage the microservices.
Julie noticed a problem with traditional architecture diagrams:
Classic diagrams show intent but in a very static way, they are not real-time and thus quickly outdated.
Also, what do the arrows indicate? Dependencies? Data flow? (The arrows mason, what do they mean?)
Julie thought to herself: we can do this better… I like to code… why not do it in code?
Something like that already exists, but it has its flaws. E.g.: Automated architecture diagrams from azure. The biggest issue with it is that is shows ALL information that is currently there and that is way too much and can get out of control.
Here is a look at Julie’s approach:
Architecture wise she wants to illustrate dependencies between services
Monitor wise she wants to include Health status, Alerts (illustrate potentially effected neighbors)
She wants to reduce clutter by:
Reducing visual noise with color and animation
Avoiding agents and cloud platform automation
Using best practices e.g.: healthchecks
Preferring standards e.g.: IETF
To combine all these things and make is visual, she chose d3.js for data driven documents and she created Newton Graph.
The workshops
Every day of the conference, there were a variety of workshops in the afternoon.
We were asked to reserve a spot a few weeks before the conference started.
There were a lot of interesting ones, and I almost felt sad I could not attend more than 1 each day.
The workshops were worked out very well with manageable groups and motivated mentors.
Out of the ones my team and I attended, ‘Code and learn’ by James Snell was my favorite.
We were taught how to contribute to open source and got a chance to make a contribution to the Node Js library itself!
Final thoughts
I would strongly recommend employers to sponsor their employees to go to conferences in general.
It is a great way to learn, grow and share knowledge with other developers
A bond will be developed between your employees that will be beneficial for their work relationship
Employees will feel like they are rewarded for the hard work they do for you.
It is easy to lay contacts with other companies which might lead to new opportunities for your company (collaborations etc.)
Speaking to different people from around the world will improve your employee’s communication skills
As your employees go around and talk to people, your company name is getting out there (bonus points if you give your employees some awesome shirts, stickers, notebooks, … with the company name and logo on It)
Last but not least, I would like to thank the Node conf organization, sponsors, the speakers, the attendees, Ireland, my colleagues, my HR officer and my bosses for this amazing experience!
Menu
Contact
Corda Campus Hal A, Unit 027.1
Kempische Steenweg 303/20
3500 Hasselt, Belgium info@codious.io