DotJS Paris 2015

DotJS Paris 2015

Written by Halima Koundi

Free Tickets

“By reading the docs, you’re instantly part of the 1% best developers in the world.”

– Christophe Porteneuve.

Thanks to
Women Who Code I had the opportunity to attend the “largest European JavaScript conference” in Paris on the 7th of December 2015.

The Venue

My home town [well, kind of.. I used to live in the suburbs and commute to central Paris for work], and my latest job office before crossing the Channel and settling in London, was one street away from the conference’s venue which I thought was really cool. If you visit Paris , you’ll definitely have to walk around the 9th arrondissement !

The Theatre de Paris is a charming 1891 performance hall. The theatre room was as nice and pretty as I expected but it was getting hotter and hotter throughout the day which made me sleepy at some point.

The entrance hall was the main point for mingling with other attendees, looking around the stands for goodies, getting some insights on featured products and nibbling the appetizers; the place was a bit under-sized considering the number of people.

I was first seated on the orchestra during part I of the conference on one of the first rows. It was great, I could see & hear the speakers very well, and read the slides, making it easier to take notes and follow the subject. For some reason I got excited and decided to try the upper level, but that was a big mistake. It was hotter, and I could neither see the speakers nor feel immersed, which made me feel like I missed part II of the conference and namely Andre Medeiros’s interesting talk about reactive programming.

The Conference

1 000 + attendees, and a dozen speakers among which were Brendan Eich the creator of JavaScript, and Rebecca Murphey, a software engineer at Bazaarvoice and the only women speaker of the conference. Oh and I almost forgot amazingly tasty French food.

The Talks

There were many talks, each of about 20 – 25 minutes, some very fun ones and some with amazing live demos! But all of them were quite (very) technical.

My Favourite Talks

1. Henrik Joreteg on pocket-sized JS

“If you want to write fast code, use a slow computer”

Henrik’s point was to explain how we commonly write code for the desktop and hope for higher spec mobiles. “We bet heavily on near-desktop Javascript performance on mobile devices.” – Jeff Atwood codinghorror

Henrik is advocating for a minimalist approach. Here is how :

  • Browser are really fast at parsing HTML : go back to server-side rendering
  • Stop the framework bulimia: do you really need the whole framework you’re using, do you need a framework at all?
  • Use a virtual DOM : your app is the function of the code
  • Do less on the UI thread: use WebWorkers to run all the heavier computations asynchronously

Wants to know more : Check out the real life example of a lightweight app and Henrik’s POC

2- Christophe Porteneuve about
async JS in ES7

After a reminder on callback hell and why it is bad, he explained why promises were a good way to try and overcome the callback nightmare , before he showed us how to hack them using generators: brilliant! .. But hackish, the gem was to come : ES7’s async/await .. hang on a minute, async/await as in C# Async/Await?.. Yes that’s it!

async function loadStory() {
  try {
    let story = await getJSON('story.json');
    addHtmlToPage(story.heading);
    for (let chapter of story.chapterURLs.map(getJSON)) {
      addHtmlToPage((await chapter).html);
    }
    addTextToPage("All done");
  } catch (err) {
    addTextToPage("Argh, broken: " + err.message);
  }
  document.querySelector('.spinner').style.display = 'none';
}

The calls to getJSON are asynchronous where the display is synchronous… It waits for the first result to be available before calling the addHtmlToPage() then waits for the second result; etc. All chapters download at the same time, but the 3rd will never appear on the screen before the 2nd. Thanks to
Jake Archibald for shedding some light here.

The feature is very much anticipated, and in the mean time before it is implemented on all browsers this functionality is available using Traceur.

Happy callback everyone !

3- Eric Schoffstall about
WebRTC

The creator of Gulp, explained his adventures trying to make his dating app cross-browser and cross-platform compatible. The problem here was that the main feature of the project relies on WebRTC, cutting edge not easy to implement peer to peer server-less connections between browsers, and the disappointment was huge: his app only worked on chrome!

That’s how WebRTC everywhere was born.

“All warfare is based on deception” – Sun Tzu, The Art of War.

4- Mathias Buus on Hyperdrive

Mathias who authored more npm modules than one can name, presented his git like peer to peer , BitTorrent like, file transfer .. written in Javascript. Hyperdrive never download the same chunk of data twice: using smart diffing and Rabin fingerprinting (God knows what that means!) to split files in small content-defined chunks, then hashing them to allow for de-duplication. We had the chance to see a Merkle tree, but the most impressive part was the demo where he streamed a video file from one browser tab to another just by passing the hash representation of the tree of hashes on the query string, streaming the video whilst loading and optimizing the load to allow for better streaming of the video: the guy rocks!

My Takeaways

I have to say, being – mostly – a back end developer, I learned a lot during this conference and discovering all the cool stuff one can achieve with JS has inspired me to know more and sharpen my scripting skills.

But choices have to be made.

My favourite quotes are

« If you are coding something that only works on google chrome you are building a demo, not a project », Eric Schoffstall

« It’s not mobile first. It’s mobile everything », Henrik Joreteg

My immediate try-to-implement takeaways are

Implementing async/await

Playing around with WebRTC

Using more ES6 features

My Read Mores on the subject are

Reactive programming and ReactiveX

Http/2

Donate to Women Who Code