Vincent Ferries bio photo

Vincent Ferries

Apprenti artisan logiciel polyglotte

CV Email Twitter Github

Me voilà de retour pour ma quatrième année consécutive à Devoxx France, je n’ai raté que la toute première édition. Cette fois je me suis vu offrir la place par Developpez.com, et c’est ma première année sur place en tant que développeur indépendant. Comme d’habitude, les Toulousains sont là en force, une bonne dizaine au moins, dont plusieurs speakers (Igor Laborie, Laurent Baresse et Mathias Seguy).

Journée University

Property-based testing, enfin pour tout le monde

J’attaque fort avec une université, session de 3 heures animée par Cyrille Martaire et Romeu Moura sur le Property-Based Testing. J’avais déjà eu un avant-goût de ScalaCheck lors du cours sur la programmation réactive que j’avais suivi sur Coursera. Je vous conseille d’ailleurs de le suivre, même si je l’ai trouvé beaucoup moins bien fait que son précurseur sur la programmation fonctionnelle.

Le but c’est de se rajouter un harnais de sécurité supplémentaire en vérifiant des propriétés mathématiques qui doivent toujours rester vraies dans notre système. Par exemple, on peut vouloir tester que a + b >= a si a et b positifs Le système va alors faire des tests avec des valeurs aléatoires et vérifier que l’assertion reste vraie. Dans le cas précédent, il vous remontera par exemple les buffers overflow avec des entiers trop grands. Dur de penser à toutes les considérations technique alors qu’on doit déjà se confronter à des règles de gestion métier compliquées. On peut exprimer des exceptions et/ou des préconditions pour nos différentes règles. En général, les librairies utilisent “assumeTrue”.

Il y a quand même une chose à laquelle il faut faire particulièrement attention, le test ne doit pas être la même chose que ce qu’on cherche à tester, mais une version bien plus épurée. Tester que a = a n’a aucun intérêt.

Le concept a été introduit par John Hugues avec QuickCheck en Haskell et a fait des petits dans pas mal d’autres languages :

  • ScalaCheck en Scala
  • JUnit QuickChecker
  • FSCheck en F#
  • test.check en Clojure

Les meilleures librairies, en plus de lancer ces tests aléatoires font du shrinking une fois des erreurs trouvées. Elles cherchent à réduire à leur plus simple expression les paramètres aléatoires utilisés pour tester, par exemple la chaîne de caractères la plus courte pour passer en erreur, la valeur la plus simple. Cela permet de comprendre ensuite l’erreur beaucoup plus facilement.

Un petit atelier nous a permis de mieux comprendre comment identifier les propriétés qui pouvaient se cacher dans un

Si le sujet vous intéresse, cette conférence est dores et déjà en ligne sur Youtube, je vous la recommande vivement.

Le conseil de la fin : faites vous même vos propres fuzzers, c’est le meilleur moyen d’assimiler le concept.

3 heures pour développer un microservice avec les micro frameworks Java

Je vais passer un peu plus vite sur cette session parce qu’il s’agissait en fait d’un atelier et que c’est plus difficile à retranscrire. Cependant, Igor et Laurent ont vraiment fait du bon boulot, tout était clair et bien construit. J’ai découvert SparkJava, à ne pas confondre avec le Spark d’Apache, que je ne connaissais pas et qui ressemble un peu à FluentHttp dans l’idée. Très facile de développer un micro service avec, je vois déjà une ou deux applications où il va venir d’intégrer bien vite.

Pour consommer ces micro services, on a ensuite utilisé Feign, le client http de Netflix. Les concepts sont assez similaires à ceux que j’utilise souvent côté Android avec Retrofit, de Square cette fois. Visiblement, un petit combat sera organisé bientôt sur Toulouse entre les deux librairies.

Conquérir le desktop avec Electron

Me dites pas que vous ne connaissez pas, c’est là dessus que tourne Atom notamment. La présentation était assez claire, mais je ne suis que moyennement convaincu par la techno. En gros, on écrit du code JavaScript qui est ensuite exécuté sur NodeJS, le tout embarqué dans une fenêtre Chrome. Sympa d’écrire de l’ES2015 sans Babel mais ça s’arrête là pour moi.

Apache Maven, Java 9 et le projet Jigsaw

Voila qu’on parle un peu de l’avenir de Java, on est à Devoxx que diantre ! Il reste un peu moins d’une année avant la sortie de Java 9 (s’il n’est pas repoussé d’ici là). Pour l’instant les builds alphas n’ont pas changé la version de bytecode générée (52), du coup ça peut parfois poser quelques petits soucis.

Le numéro de version a complètement changé, on n’utilise plus désormais 1.9 mais 9 directement. Il risque du coup de falloir adapter quelque peu quelques utilitaires.

Attention les yeux, la JavaDoc passe au html5 et intègrera désormais une barre de recherche (oui, ça trolle un peu) ! Les deux JEP principales : la JEP261, Module System (alias Jigsaw pour les intimes) et la JEP238, aka Multi-Release JAR Files.

Vue.js, une alternative plus simple que React.js et Angular2 ?

Présentation assez pédagogique mais qui ne change pas des masses de la traditionnelle “TODO List” reprise comme exemple par tous les frameworks front-end. Rien de transcendant, mais ça fait toujours une alternative de plus à Aurelia, Angular2, React…

Jeudi

Keynotes

La médecine de demain par Jean-Michel Billaut

Keynote intéressante sur le fait que le génome humain est en passe de devenir l’une des ressources les plus importantes. Si le sujet vous intéresse, cette keynote est disponible ici.

The impact of code in society par Joel Spolsky

Joel est quand même le fondateur de Stack Overflow. Sa keynote mettait en avant la place que prenait le code dans l’économie contemporaine et la responsabilité que nous avions en tant que développeurs vis à vis de cela. Cela ne m’a pas fait plus vibrer que cela pour tout vous avouer.

L’entrepreunariat au féminin par Natacha Quester-Sémenon

Je le dis tout de suite, je n’ai pas du tout aimé cette présentation là. Je n’ai aucune idée de quel était le but et d’où elle voulait en venir. C’est marrant, je ne trouve d’ailleurs pas le lien vers la vidéo.

Cela traitait un peu de la place des femmes dans l’entrepreunariat, mais pas vraiment non plus. Oui, on a un problème d’attrait évident de personnes féminines dans notre secteur, et il y a du machisme à régler c’est évident. Mais selon moi il conviendrait d’agir plus en amont, sur l’orientation, sur la découverte de ce milieu là aux plus jeunes. Je salue les initiatives telles que Devoxx for Kids, les Coding Goûters et j’en passe qui font bien plus de bien pour notre métier qu’un hashtag “#jamaisSansElles”. Il y a des filles (ou femmes) vraiment talentueuses dans notre métier c’est indéniable, et je suis persuadé qu’il y en aurait encore bien plus si on leur permettait d’exprimer pleinement leur potentiel, mais les quotas et la discrimination positive ne sont pas la solution.

Pourquoi Maurice ne doit surtout pas coder en Go

J’apprécie particulièrement Jean-Laurent de Morlhon, un craftsman pragmatique. Il a rejoint Docker il y a quelques temps maintenant et a été plus ou moins contraint à basculer sur Go au détriment de Java qui était jusque là son langage de prédilection.

Il a présenté ce qui selon lui était un peu problématique dedans, en expliquant que si les équipes de Docker avaient eu le choix du langage à faire maintenant ils seraient sûrement partis plutôt sur Rust. On peut citer : l’utilisation de pointeurs, un mauvais support des IDE (VIM/Emacs for the win), un formattage forcé, ne cherchez surtout pas à lutter, la gestion des erreurs en composante du tuple de retour, l’absence totale d’idiomes de programmation fonctionnelle, pas de generics ni de réelles gestion de l’héritage, pas de shared libraries, verbeux, lourdingue de tester du code legacy, des builds compliqués à base de makefiles, go dep est tout simplement un enfer.

Ceci étant dit, il s’agit quand même d’un chouette langage qui a quand même quelques atouts : il est lisible facilement, il embarque le runtime dans l’exécutable lui-même et ne nécessite donc aucune d’installation de VM ou quoi que ce soit d’autre, les artefacts sont auto suffisants, la gestion de la concurrence est super simple avec les go routines.

Analytics et BigData, une histoire de cubes

J’aime bien sortir un peu de ma zone de confort et là je ne me suis pas trompé. C’est souvent là qu’on apprend le plus de choses. Je n’ai pas trop aimé la façon de présenter, un peu “show off” par deux architectes. N’hésitez pas à revenir à cette occasion lire mon post sur les architectes.

Les deux présentateurs nous ont montré plusieurs versions d’une architecture orientée Big Data. Il va me falloir pas mal de temps pour rattraper mon retard sur tous ces sujets, je me contente de mettre ici quelques noms en vrac avec les liens vers les technos quand je les trouve pour approfondir si cela vous intéresse.

  • V1
    • SQL -> Hadoop, HDFS (Hadoop File System), YARN (du Map/Reduce) et HIVE (Data Warehouse)
    • Spark SQL, Impala, Presto, Drill, Hawq
  • V2
    • Cube OLAP (même principe qu’une map mais à N dimensions), online analytics processing à N dimensions
  • V3
    • Apache Kylin
    • On peut n’aggréger que certaines dimensions
    • Spark Streaming, Storm, Google Data Flow
  • V4
  • V5

On notera que la fondation Apache est quand même le vrai fer de lance de tout cet écosystème !

Type-Directed Development

Cette fois, c’est basé sur Scala qu’on a parlé de typage fort et encore une fois de tests sur les propriétés. Beaucoup de langages fortement typés permettent de faire des structures de contrôle typées. On peut par exemple différencier le cas de la liste vide ou de la liste non vide avec du pattern matching, utiliser les types Option et se servir des structures de contrôle de la programmation fonctionnelle.

Une autre erreur fréquente consiste à mélanger des unités différentes. Cela a posé quelques problèmes à des fusées notamment où des mètres ont été mélangés à des miles pour les calculs. Pour éviter ce type de problème, il suffit alors d’utiliser des types taggés avec l’unité. Un Int deviendra alors Meter ou Mile suivant le cas. On transforme alors ça aisément en monoïde (allez voir la conférence de Cyrille l’an dernier sur ce sujet).

Le présentateur nous a aussi conseillé de lire le papier Theorems for free, je ne l’ai pas encore fait et ne peux donc pas vous confirmer son intérêt mais je le pose ici histoire de ne pas le perdre.

Quelques petits conseils pour vous lancer :

  • bannir null, préférer des types spécifiques (None, EmptyList…)
  • évitez les appels de méthodes sur la classe Object
  • n’utilisez pas d’exceptions
  • évitez les effets de bord
  • apprenez au moins la syntaxe de types d’Haskell (non, pas que pour commenter vos fonctions JavaScript avec). On peut même chercher une fonction à partir de sa signature en Haskell avec Hoogle et il est assez malin pour même proposer des versions plus génériques de ce qu’on cherche.

Pour la voir, et je vous le conseille, c’est ici que ça se passe !

100% Stateless avec JWT (JSON Web Token)

Assez simple et plutôt bien emmené. Pas transcendant non plus. Si le sujet vous intéresse, c’est ici.

String concatenation de 1 à 9

J’aime bien les talks de Rémi Forax. Il y a ce petit côté didactique du prof, mais aussi ce côté bidouilleur en assembleur. Une façon simple de résumer serait de dire “évitez de chercher à trop optimiser, vous risquez de rendre les choses pires”.

Real Real World Haskell

Ma conférence préférée de ce Devoxx je pense bien, tant sur la forme que sur le fond. J’espère pouvoir mettre aussi en pratique un jour. Allez y jeter un coup d’oeil dans tous les cas !

Côté nourriture

Il faut bien aussi exposer les points qui fâchent : il y a de sérieux efforts à faire côté alimentation, j’ai l’impression que chaque année cela empire… Une journée de conférence demande beaucoup de concentration, et ça pompe énormément d’énergie, presque autant qu’un effort physique pour ma part. Du coup, dans ces cas là, j’ai vraiment besoin d’une alimentation en conséquence. Autant dire qu’une mini salade et un sandwich jambon beurre, cela ne me suffit vraiment pas. Entendez moi bien, c’était plutôt bon, et relativement équilibré, ça change quand même des pizzas/chips qu’on trouve dans la plupart des hackatons, mais les portions étaient vraiment riquiqui. Si le but était de nous forcer à passer sur les stands pour compléter avec des bonbons et des sodas, cela a relativement bien fonctionné, mais du coup on y perd tout l’intérêt de manger un tant soit peu équilibré.

Je tiens quand même à nuancer un peu mon propos en parlant du meet & greet du jeudi soir. Là c’était très bon et copieux, les buffets étaient fréquemment alimentés, le vin coulait à flot, un tout autre niveau !

Vidéos en ligne

Je vous ai donné quelques liens, mais en fait la quasi intégralité des vidéos sont désormais accessible gratuitement en ligne sur Youtube, et ce dès maintenant, alors plus d’excuse si votre boîte n’a pas voulu vous payer la conférence, foncez !