Nicolas Chevobbe

Nordic.js 2017

One of the really nice thing about being a Mozilla employee is that you get an annual budget to travel to and attend conferences. I never had a chance in my carreer to go to any conferences yet, but was watching a lot of talks in my spare time. So I took this opportunity to head out to Stockholm, Sweden 🇸🇪, and go to Nordic.js. This was also a good opportunity to visit Stockholm in the weekend which I was told was beautiful (it is).

Nordic.js is a single track conference which means that as an attendee, you don’t have to choose which talk to watch: you see everything. The venue had a really nice mix of arty and industrial vibes and the 2 days went very smoothly, with good beverages and food, regular breaks and Fika (Swedish coffee break with pastries), techno/laser ping-pong and code in the dark competition at the closing party.

Coffee Food tickets Techno ping-pong Code in the dark

The hosts — Unn Swanström & Mattias Petter Johansson, aka mpj — were excellent and funny, and I was really impressed with most of the talks, so here is an excerpt of the ones I enjoyed the most.

State of JS 2017

By Sacha Greif

The state of Javascript is survey aimed to surface if people have heard of specific JS flavors, libraries, framework and tools, if they want to use it, or if they used it, whether they will use it again or not. This gives a good picture of what devs (who took the survey) use and like in the JS ecosystem. Sacha gave an entertaining talk despite being full of figures 👍. He put up a JS library name quizz in the middle of his talk which was quite fun (How cool 🏄 SkateJS 🏄 is, right ?!).

The numbers of the 2017 surveys were compared to the 2016 ones, so he was able to surface trends in the JS community. In summary, more and more people use or want to use ES6, React, Vue, Webpack and GraphQL, and most of the people like it. This is interesting for my team since we try to make developers life easier, so knowing what they use can gives us direction on what to work on. For example the rising use of Webpack means that we better have a pretty good support for sourcemaps (which we now do 🙂).

Sociolinguistics and the Javascript community: a love story

By Harriet LawrenceSlides

I think this was to me the most interesting talk of the whole conference, with plenty of great insights on how to make a project a place where every people can thrive.

It’s important to know what the community looks like, i.e. don’t be like the Linux Kernel mailing list. A good-community project should be:

  1. Welcoming
  2. Learner-Focused
  3. Community-Focused

You should not use irony, or make jokes on a person PR because you never know how the author will take it (written communication is pretty damn hard). This is something I observed personally at my old job, what someone thought was a harmless joke can make someone feel like 💩 for a couple of days.

When doing reviews, call out for people good works. I think this has nothing to do with the shit sandwich, it is just about giving someone a thumb-up when they actually did a good job.

It is also a good thing to normalize failure. You can express that in multiple ways:

Legitimate peripheral participation like:

These are as important as writing code, so say it loud!

You're only supposed to blow the bloody doors off !

By Léonie Watson

The presenter is a blind developer working on the Government Digital Service in the UK. The talk was about how easy it is to alter the web experience for people using screen readers, and how to use ARIA attributes to provide them a good way to interact with your web page. She also insisted on the fact that accessible webpages not only benefit screen-readers people, but everyone since you then have better keyboard navigation, which power-users use more than the mouse.

The proper thing to do as a web developer in the first place is to not use ARIA attributes. Instead, you should ensure that you are using the proper HTML elements for the work they have to do (e.g. do not use styled <span> or <a> as buttons, use <button>). However, it might happen that you do need to use non-semantic elements for a given UI element. In that case, use the proper ARIA attributes, and most important, don’t override native accessible elements.

There is a new specification coming for accessibility, AOM, which will be way more powerful than ARIA. But as they said:

With great power comes great responsibility

and it will be even easier to mess up with the accessibility of websites.

Best Practices for reusable UI components

By Mars JullianSlides

Great talk by an engineer at Netflix on how to build a UI component library. This was mainly about using React, but some principles are applicable in a broader context. This talk was quite relevant to my current interests, since I’m working on a set of components that are meant to be used across the Firefox DevTools to preview variables.

Mars pointed that a good reusable UI component should be:

Self sufficient means that the component need to handle just enough state to be useful. A component will be easy to integrate with if it let consumers (i.e. parent components) what it is doing. One good thing in React to achieve that is to have meaningful propTypes so the component is self documented (I think Flow can even help more here). You should also try to merge props when it’s possible. For example, if you have a component that has a header which can contain a simple label, or a label AND a logo. Instead of having label and logoSrc props, maybe you can only have label and make it accept both strings and React elements.

Even if the component needs to be easy to integrate with, you don’t want your component to be used in unwanted ways: you need to remove backdoors. A backdoor can be directly applying the props passed to the component; this way, the parent can highjack lifecycle functions like componentWillUpdate. You should only cherry-pick the prop that you allow in your component, and provide hooks, if you want it.

The future of the web and the curious case of the unintended silo

By Paul Kinlan

My second most loved talk after the one from Harriet Lawrence. I am acquainted with Paul Kinlan work since I heard about WebIntent.

What he means by Silo is that a data that you chose to hand to a specific website often cannot be used seamlessly in another one. For example if you upload a photo on Google Photo, you can only edit it using the tool provided by Google Photo: you rely solely on what the website provides.

The goal of Paul is to make the web an equal partner on all platforms, and make users use web most of the time. He then went through a whole bunch of existing or soon-to-be web APIs that would allow web app to be more capable :

All of this, combined with underlying-PWA mechanisms (ServiceWorkers and Add to home screen), makes the web a more suitable platform to work on that closed native platforms.

But the web shouldn’t be chasing the native rainbow, as we shouldn’t look only at hardware access to compare it to native application. The web is, and need to keep being:

The talk represented everything that I love about the web, which is a wonderful platform that top or even outperform native applications, if you look at the correct metrics. On this subject, I also encourage you to read Henrik Joreteg’s “Betting on the Web”.

Down the Rabbit Hole: JS in Wonderland

By Claudia Hernández

This was a very playful and funny talk about JSFuck. This is a creative ways of writing Javascript using only ()+[]! characters. I don’t have enough space to explain it here, but the talk was really nicely done and provided a fresh bowl of air just before lunch 😀.

The Design and Evolution of Event-Driven Databases

By Mark Nadal

Mark Nadal is the creator of the GunDB library, and claimed to take us on a journey to write an entire database in 30 minutes. He then went through a bunch of already written code which he explained at a very high speed. I wish I could understand everything that was going on during this talk. The presenter was very enthusiastic but maybe the subject was too broad to fit in ~30mn, which made Mark rush through his code. He even did a lightning talk the day after to explain a concept more in detail, but again, this was too technical for me to understand. At least I came home with some concepts to look at (Radix tree, CRDT, …), and I hope to be able to get my hand on GunDB to grasp the concept behind it because it looks awesome.

Building inclusive communities

By Karolina SzczurTranscript

This talk was closing the conference and had a very different tone that all the other ones. In short, we should be actively fighting the unfair status quo in the tech industry, not look away, be allies, speak up, even more if you are in a situation of privilege. But really, you should read the transcript or watch the video when it’s out, because I can’t express it better than Karolina did in her talk.

Overall this was a very good first time at a conference for me, and I’m looking forward the next one (if you have suggestions, reach out @nicolaschevobbe)