Retour sur notre première journée à Devoxx France millésime 2019

2019-05-17 | Loïc BOURG

image article

Nous étions à Devoxx France pour l'édition 2019, une premiére pour l'équipe d'ITNetwork, plutôt habituée au Forum PHP !

Comme tous les ans, cette conférence se déroule au Palais des Congrès et aborde des sujets très variés, allant de Java à JavaScript, en passant par du machine learning ainsi qu'un peu de management.

Nous vous avons préparé un petit retour des différentes conférences auxquelles nous avons assisté.

le résumé du deuxième jour se trouve ici: Retour sur notre deuxième journée à Devoxx France millésime 2019

Le Bonheur au travail : au delà du bullshit (Keynote)

On commence directement avec un sujet important dans tout travail: le bonheur.

Christian Fauré nous explique que la notion de prolétarisation n'est pas une notion de classe ouvrière mais bien de perte de sens du travail.

Ainsi le but des conférences tel que Devoxx est aussi de retrouver de l'intérêt dans notre emploi en acquérant de nouveaux savoirs.

Une petite keynote qui nous rapelle l'importance de trouver du sens dans ce que l'on fait !

Pour aller plus loin:

La bienveillance en entreprise (Keynote)

Un autre sujet sur le bien être.

Olivier Lajous nous explique l'importance d'être bienveillant au quotidien pour garantir un environnement sain.

Rien de durable ne se construit sur le négatif, chaque acteur a donc tout intérêt à ne pas être tout le temps dans l'agression. Il faut savoir accepter l'autre dans sa différence. Ne pas faire passer sa parole en tant que dogme mais bien en tant que dialogue, en favorisant la curiosité et la spontanéité.

Dans le monde du développement ou certains développeurs ont tendance à devenir toxique, cette keynote permet de rappeller à tous que le conflit n'est pas une solution constructive.

PostgreSQL c'est le nouveau NoSQL

Aprés être passé du SQL au NoSQL, souvent pour de mauvaises raisons, un retour aux sources est en cours dans le monde du développement.

Laurent Doguin nous explique en quoi PostgreSQL peut tout à fait servir de Base de données NoSQL, parfois mieux que les leaders du marché.

Après un petit résumé du théorème CAP, nous avons le droit à un résumé des DSL de différentes bases NOSQL.
Tous ces DSL sont donc à apprendre pour devenir efficient sur chacun de ces outils alors que SQL est un standard.

Depuis la version 9.2, PostgreSQL gère nativemment le JSON dans les colonnes avec la possibilité de mettre à jour et requêter ces colonnes uniquement avec du SQL.

PostgreSQL a été pensé dans un but d'extensibilité, il est donc également possible d'installer des extensions pour étendre encore plus les possibilités de ce SGBD.

Ainsi avec TIMESCALE, il est possible d'utiliser PostgreSQL en tant que base de données time series. Il existe d'autres extensions augmentant encore son potentiel, donc la prochaine fois que vous voulez utilisez la dernière base de données à la mode regardez d'abord du côté de PostgreSQL !

D'ailleurs pour les personnes tentées de pouvoir utiliser à fond ses capacités, je vous conseille d'aller tester Pomm c'est un ORM spécifiquement conçu pour PostreSQL.

Le Web, ses frameworks et ses standards : déconstruire pour mieux (re?)construire

Les standards du web sont en constante évolution. Hubert Sablonnière nous explique de manière assez originale le fameux problème du front end: Qu'est ce qu'il se passera lorsque mon framework front sera mis aux oubliettes ?

Une bonne réponse à cette question est d'essayer d'utiliser au maximum les standards du web, qui resteront présents pendant toute la vie des navigateurs une fois implémentés.
Dans une application, la plupart des utilisateurs cherchent la rapidité, la fluidité et la possibilité d'y accéder depuis n'importe quelle plateforme.
Le but est donc de chercher des outils permettant de fournir la meilleure expérience utilisateur tout en fournissant un bon cadre de développement (gain de temps, code réutilisable, isolé, ...)

Même si les standards actuels ne permettent pas d'utiliser uniquement les capacités natives du navigateur pour atteindre tous nos objectifs, il est intéressant de se tenir au courant des évolutions et de ce qu'il est déjà possible de faire avec.

  • Les web components permettent de faciliter la création de composants réutilisables couplés à la librairie LitElement, cela permet de créer des composants réutilisables en restant au plus proche de la plateforme.
  • Le shadow dom a pour but d'isoler le style d'un composant pour éviter le problème du CSS étant global à toute l'application

Un compte Twitter intéressant à suivre pour se tenir au courant des dernières évolutions navigateur est Intent To Ship, pour ne rien manquer des dernières évolutions des navigateurs !

Quelques autres articles de blog aussi:

D'ailleurs en parlant de standard: Svelte 3 vient de sortir, intéressant à regarder si l'utilisation au maximum des standards navigateur vous intéresse.

Back to Basics : Ne perdez plus votre temps avec les Dates

Ici on arrive au talk que j'ai trouvé le plus intéressant et également le plus inquiétant. Une vrai remise en question sur les potentielles bombes à retardement qui ont pu être développées dans des applications lorsque l'on manipule des dates.

Frédéric Camblor nous fait un rapide tour des bugs sur les dates ayant affectés les grandes sociétés ( Twitter, Microsoft, Apple, ...).

Une des raisons de ce genre de bugs est la leap seconds, c'est une seconde ajoutée à une minute qui fait que celle ci durera 61 secondes au lieu de 60.
Cet ajout est décidé 6 mois à l'avance, il est donc facile d'introduire des bugs si le code part du principe qu'une minute fais forcément 60 secondes !

Ce genre de modification est aussi la raison pour laquelle il faut faire tourner un agent NTP sur tous ses serveurs de production pour ne pas risquer une désynchronisation de l'heure.

Il existe de nombreuses manières de représenter une date. Les deux plus courantes sont:

  • le timestamp: C'est un entier représentant le nombre de secondes écoulées depuis le 1er janvier 1970 UTC. Ce format a l'avantage de ne pas changer de valeur en cas de changement d'heure ou autre modification du temps. Par contre attention à l'epochalypse !
  • le format ISO8601: Date au format 2019-05-06T16:33:03Z ce format à l'avantage de contenir la timezone, pratique pour ne pas avoir de problème avec le changement d'heure

Une fois les différentes représentations des dates expliquées, nous avons droit à l'explication des timezones et de ce que sont les timezones offset et les tztables.
Une timezone représente un lieu géographique, et une tztable contient la différence d'heure par rapport à UTC dans cette zone lors de l'heure d'été et l'heure d'hiver.

Les tztables sont en général stockées directement dans la librairie standard du langage. Pour Java il est possible de mettre à jour les tzdata sans mettre à jour le langage. Par contre pour PHP, il faut forcément mettre à jour le langage, ce qui promet de beaux bugs pour l'arrêt de l'heure d'été en 2021 pour certains pays européen !

En résumé:

  • utilisez le format ISO8601 pour échanger des informations sur les dates
  • mettez à jour vos tzdata
  • Pensez au changement d'heure lorsque vous voulez déclencher quelque chose la nuit

Github un turbo dans ton workflow

Nous utilisons beaucoup Github, à ITNetwork, c'était donc l'occasion de découvrir ses futures fonctionnalités.

Alain Hélaïli commence d'abord par nous montrer la montée de l'open source côté public avec des initatives comme https://www.data.gouv.fr/fr/, mais aussi dans le privé avec par exemple la MAIF ou Décathlon

Puis une rapide liste des différentes ressources disponibles pour faciliter la prise en main des outils github:

Nous avons ensuite eu droit à une présentation des github actions, actuellement en beta.
Cette fonctionalité semble très prometteuse afin de créer des workflows assez complexes dépendants les uns des autres.

Nous avons eu ensuite un rappel des différentes fonctionnalités actuelles de Github permettant de simplifier la collaboration:

Follow your code: Node/V8 tracing

Node est de plus en plus présent côté back, notamment pour faire du rendu côté serveur et lancer des serveurs websocket, savoir trouver les problèmes de performance devient de plus en plus important.

Gireesh Punathil commence par faire un petit rappel des différents ordres de grandeur de lenteur. Par exemple quand un accès mémoire prend 100 ns un accès disque classique en prend 10 millions et accès réseau 150 millions

La suite de la conférence était ensuite axée sur les différentes options de tracing de node:

  • node --tracing: activer le suivi de performance
  • node --trace-gc: plus d'infos sur scavenge le nom du garbage collector de node
  • node --max-old-space-size: permet de détecter de potentielles fuites de mémoires
  • node --trace-turbo: affichage d'informations sur le compilateur node
  • node --trace-opt: affichage de l'optimisation effectuée par rapport au code écrit
  • node --print-code: affichage du code assembleur à coté du code JS correspondant
  • node --print-all-exception: plus d'informations sur les exceptions
  • node --experimental-report: fonctionnalité disponible depuis node version 12, génère un fichier JSON contenant toutes les informations nécessaires à l'analyse des performances.

Leaflet : et si on prenait autre chose que Google Maps pour manipuler des cartes

Maintenant que google maps est devenu payant, il est temps de changer de librairie. L'habitude que google a à tuer ses projets est aussi une bonne raison d'essayer de changer de fournisseur !

Guillaume Soldera nous explique les avantages de leaflet par rapport à google maps:

  • Librairie open source
  • Connectable avec de nombreux fournisseurs de fonds de carte (open street map, mapbox, ...)
  • Optimisée mobile: librairie légère et pensée pour le tactile
  • Extensible: possibilité d'ajout de plugin créé par la communauté

Nous avons ensuite eu du live coding pour montrer toutes les possibilités de leaflet, une librairie qui a de la ressource.

De notre côté, nous utilisons déja leaflet en production notamment sur pollens.fr !

Jest, et les tests JavaScript deviennent un plaisir

Les tests font partie intégrante du processus de développement afin de garantir la qualité des projets livrés.

Benoit Lemoine indique d'abord ce qu'il y avait avant JEST: Jasmine et Karma.

Le principal problème de ces tests runners était qu'ils étaient lents et se lançaient en série.

Les développeurs de Facebook ont donc décidé de créer Jest afin de régler ces problèmes, et d'ajouter en plus:

  • Une librairie de mock
  • Un mode watch pour relancer les tests à chaque modification de code
  • Une facilitation du branchement avec babel (ceux ayant déjà utilisé karma savent à quel point babel pouvait poser problème avec les tests runners...)
  • Snapshot react
  • Lancement des tests en parallèle

Bref beaucoup de fonctionnalités très utiles et surtout nous avons découvert comment utiliser le debugger avec Jest!

Jest est déjà notre framework de tests de prédilection, et nous le conseillons à tous ceux voulant commencer les tests en JavaScript !

Fin de la première journée

Aprés une première journée de conférence enrichissante, nous avons profité du buffet et des bières proposés dans le palais des congrès pour continuer à partager sur les sujets que nous avons vu aujourd'hui.

Rendez vous ici pour le retour sur notre deuxième journée à Devoxx France millésime 2019 !

Conférence Devoxxfr