DotJS – 7 décembre 2015
Introduction
Nous nous sommes rendus le lundi 7 décembre 2015 au Théâtre de Paris afin d’assister à la conférence dotJS.
Cette conférence fait partie du groupe des dotConferences, qui comprend notamment :
- dotSwift
- dotScale
- dotGo
- dotCSS
- dotSecurity
- et donc dotJS
La conférence dotJS se targue d’être la plus grande conférence javascript en Europe. Chaque année, elle accueille des speakers prestigieux présentant des sujets divers et variés : cette année était notamment annoncé Brendan Eich, l’inventeur du langage.
1 millier de personnes étaient attendues cette année.
Organisation
Après avoir récupéré nos badges, nous avions un peu de temps avant le début de la première session de conférences. Nous en avons donc profité pour échanger avec les différents partenaires de l’event.
Il est à noter que l’event se déroulant au Théâtre de Paris, une seule conférence se déroulait à la fois.
On peut notamment citer :
wakanda
une plateforme javascript utilisée pour gérer l’ensemble des applis webs et mobiles. Elle se base notamment sur des outils et frameworks open source tels que AngularJS, ionic, Apache Cordova … et possède également un IDE intuitif qui comprend un outil de conception, un éditeur de code (JavaScript, HTML, CSS), un gestionnaire du modèle objet.
Un point intéressant est la génération d’objets à partir d’une base de données. Il est alors possible de surcharger ce modèle, et même de recréer des liens qui n’existeraient pas dans la base relationnelle.
https://wakanda.github.io/
platform.sh
une solution d’intégration continue PAAS qui se veut developer friendly, en permettant aux développeurs de se concentrer sur le code en laissant la plateforme gérer la partie DevOps. (génération d’environnement à la volée, cloud hosting …)
https://platform.sh/
clusterpoint
qui se veut être une troisième alternative aux bases de données SQL et No SQL en rassemblant les points forts de ces deux types (data and computation scalability + strong transactional consistency). Utilisation du javascript dans des query SQL https://www.clusterpoint.com/
Conférences du matin
Nous nous sommes ensuite rendus dans l’amphithéâtre pour assister à la première session de conférences.
Voici les sujets qui nous ont été présentés :
Modern async JS, par Christophe Porteneuve (@porteneuve)
A propos de la problématique des callback en javascript et de la gestion de l’asynchrone, et plus précisément l’écriture du code qui peut vite devenir incompréhensible à la lecture. (cf. callback hell)
Pour rester dans le système des callback, Christophe commence par nous présenter Async.js. Ce petit module fournit plusieurs fonctions qui permettent des traitements asynchrones. Cela ne demande pas de connaissances supplémentaires, il n’y a pas de perte de performances, le module est bien maintenu (@caolan). Mais cela ne résout que quelques problèmes initialement identifiés.
Puis, les promises nous ont été présentées. Elles existent déjà depuis un long moment, pas seulement en Javascript. Elles sont maintenant natives dans ES6. Avantages : elles sont fiables (un seul callback garanti), elles sont composables mais cela ajoute un nouveau niveau d’abstraction, il y a des légers problèmes de performance et l’exécution du code n’est pas vraiment très facile à comprendre (je ne parle même pas du débogage).
Les générateurs : un générateur est un type de fonction spécial qui fonctionne comme une fabrique (factory) d’itérateurs.
Exemple de générateur :
function* idMaker(){
var index = 0;
while(true)
yield index++;
}
var gen = idMaker();
console.log(gen.next().value); // 0
console.log(gen.next().value); // 1
console.log(gen.next().value); // 2
Mais les générateurs ne sont pas asynchrones. Alors quel est le rapport avec notre problème ?
Si on combine les générateurs avec les promises, cela permet d’avoir du code asynchrone, mais écrit comme du code synchrone. Cette méthode est déjà expérimentée dans la librairie task.js.
La bonne nouvelle, c’est que l’arrivée de ES7/2016 nous apportera deux nouveaux mots clé: async/await. Cela permet de régler les problèmes d’écriture de code : du code asynchrone écrit comme du code synchrone.
Hyperdrive, par Mathias Buss (@mafintosh)
Mathias a publié beaucoup de modules sur NPM (750 modules avec une équipe de 3 personnes). Il nous a présenté l’un deux, hyperdrive, qui est un module de partage de fichiers en peer2peer. Le principe est simple, et les concepts utilisés pour le développement du module étaient intéressants.
Le fonctionnement repose sur le partage via URL et sur un système de Hash qui permet de partager un fichier en plusieurs parties de tailles réduites.
Il permet entre autre de faire du Streaming vidéo…
Lien vers les slides / Dépôt github du projet hyperdrive
Dealing with Garbage, par Samuel Saccone, Software Engineer chez Google (@samccone)
Comment détecter et régler les problèmes de fuites mémoire ?
Une démonstration de comment utiliser la console de Chrome pour diagnostiquer les fuites mémoire et présentation de son outil drool, qui permet de détecter automatiquement les fuites mémoire et de les analyser. (https://github.com/samccone/drool)
Vidéo : http://www.thedotpost.com/2015/12/samuel-saccone-dealing-with-garbage
http/2 is here, now let’s make it easy, par Rebecca Murphey (@rmurphey)
Rebecca nous a présenté http/2 et pourquoi il n’était pas encore très utilisé. Selon elle, il n’est pas encore utilisé pas parce que les développeurs ne veulent pas, mais parce qu’il n’existe pas « d’écosystème » complet prêt à l’accueillir (comme les serveurs, les navigateurs…).
Vidéo : http://www.thedotpost.com/2015/12/rebecca-murphey-http2-is-here-now-lets-make-it-easy
Pause repas
Ne vous inquiétez pas, y’en aura pour tout le monde !!! (ou pas …)
En effet, le repas se déroulait dans les couloirs, où des plateaux de miniatures étaient disséminés un peu partout, le problème, le nombre de personnes … en quelques minutes, tout était vide.
Nous nous sommes donc divisés en groupes de 2 pour chercher les … pizzas, denrée rare mais nourrissante.
A noter qu’une montagne de fromage se trouvait sur une table, mais qu’elle n’a pas fait beaucoup d’émule étant donné la présentation style “oeuvre d’art contemporaine”.
Conférences de l’après midi
Elle s’est découpée en deux parties, tout d’abord des présentations en temps limité (environ 10-15 minutes), puis des présentations plus longues.
Henrik Joreteg : Pocket-sized JavaScript
Henrik part du constat que le javascript sur mobile est lent et peu performant. Il propose ensuite une approche qui consiste à s’appuyer sur les bonnes idées des gros frameworks type Angular et utiliser des nouvelles techniques (Virtual DOM et WebWorkers) afin de produire du code minimaliste pour une application javascript sur mobile beaucoup plus rapide.
Vidéo + slides : http://www.thedotpost.com/2015/12/henrik-joreteg-pocket-sized-javascript
Tim Caswell : Teaching Kids Programming using Web Browsers and Real Robots
Petite surprise pour cette présentation , le speaker Tim Caswell est venu sur scène avec son jeune fils de 9 ans : Jack . Il a mis en place un langage simplifié (peu de symboles) et utilise un IDE comprenant des bonnes fonctions de validation et coloration syntaxique afin de rendre plus accessible la programmation à des enfants. Son fils nous a fait ensuite une demo live, en codant un petit programme permettant d’allumer des LEDs.
Andre Medeiros : The whole future declared in a var
André est l’inventeur du framework javascript Cycle.js.
Il nous a présenté la notion de “Micro-Service”.
Nouveau paradigme → programmation fonctionnelle réactive
Analogie avec Excel → dès que variable change les cellules avec des formules qui la contiennent se mettent à jour.
Les concepts important à retenir sont :
- Scalabilité
- Pas de serveur requis
- Encapsulé
Exemple d’implémentation :
- Amazon
- Pay by use
RxJS (ReactiveX)
Présentation du framework “ReactiveX”.
Les concepts important à retenir sont :
- Reactive programming
- Gestion de stream
- Très similaire à Scala dans les concepts
Pour plus de détail :
http://www.thedotpost.com/2015/12/andre-medeiros-the-whole-future-declared-in-a-var
Etienne Margraff : VorlonJS
Présentation de VorlonJS : un outil de debugging multi navigateur, open source et extensible.
Il permet de débugguer du JavaScript, en apportant la possibilité de débugguer plusieurs devices en même temps.
Il permet également de débugguer des mobiles.
Slides : http://fr.slideshare.net/emargraff/dotjs-lightning-talk-vorlonjs
Johannes Fiala : How to end manual REST-API client coding
Démonstration de comment créer une API rapidement avec Spring Boot, puis documenter les différentes opérations et générer rapidement le code client javascript avec l’outil de Swagger Codegen
http://www.thedotpost.com/2015/12/johannes-fiala-how-to-end-manual-rest-api-client-coding
- Eric Schoffstall ; Real world webRTC
- Eric Schoffstall est le créateur de Gulp.
- Gulp 4.0 arrive bientôt, cela avait pris du retard à cause d’un bogue NPM.
- Eric s’est lancé dans une boîte faisant du speed-dating par WebRTC ; il a dû faire en sorte que ça fonctionne sur tous les navigateurs. Beaucoup de galères pour IE, Safari… et sur mobile.
- Pour Android, il a utilisé Crosswalk.
- Pour iOS, il a utilisé iosrtc.
- Pour IE / Safari, il a dû recourir au plug-in TEMASYS.
- Comme ça a été l’enfer pour lui, il a voulu faciliter le travail des autres pour la suite, et a lancé http://rtc.works : rtc-everywhere ; un setup cross platform pour webRTC.
- Forbes Lindesay : conception de Pug
- Pug est le nouveau nom du langage de templating Jade.
- Le talk décrit comment concevoir un outil de transpilation tel que Pug: il a montré comment coder un lexer, parser, code generator et linker.
- Un talk intéressant pour ceux qui veulent contribuer à un projet de transpilateur (Babel, Webpack, Less, Sass etc.).
Conclusion
Voilà qui conclut une journée bien dense avec un grand nombre de conférences portant sur des thèmes assez variés.
Retour en Lorraine avec des goodies plein les poches!




