J’ai eu la chance d’aller à l’édition 2019 de la conférence Dot Go. Bien que je n’ai pas l’occasion de pratiquer le Go quotidiennement (breaking news, les journées ne font toujours que 24h), ce 25 mars 2019 était pour moi l’occasion de rentrer un peu plus dans le monde du Go.
Premier contact, nouveau lieu pour moi : le Théatre de Paris. Autant être franc, assister à une conférence tech dans un lieu aussi prestigieux, ça en jette ! Bon, par contre, si vous mesurez plus d’1m70, les places à l’étage ne sont pas du tout confortables :)
Constat suivant : j’étais habitué à des conférences JS (ReactEurope pour ne citer que celle là). Ici, on est sur une volumétrie plus réduite, mais pas forcément moins intéressante. C’est moins l’usine.
Venons-en à présent aux talks, l’essence même de la conférence. Pour faire le parallèle avec les confs JS où chaque talk est là pour vous présenter une nouvelle lib^H^H^Hbibliothèque, ici les sujets sont plus généralistes, et même pas forcément rattachés au Go en lui-même. Assez déstabilisant (surtout le talk d’Ellen Körbes, j’y reviendrais), pas forcément désagréable. On est moins dans le “matuvu”, mais en contrepartie, peut-être moins d’effet wahou à la clé.
Voici le détail des talks auxquels j’ai pu assister :
Matin :
Ici, on parle de benchmarks. Mais pas nécessairement uniquement sur le Go. Pour faire de l’optimisation, il faut avoir des metrics. Et les metrics doivent être stables et fiables. Or, lorsque vous faites des benchmarks en local, tout ce qui tourne en même temps sur votre machine influe sur le résultats (Slack, Chrome, et je passe les autres CPU hogger.) Approche intéressante sur le throttling du CPU pour éliminer la variance sur les benchmarks. https://docs.google.com/presentation/d/1cUVp8OuzOW4lzClsiptgacW7nSFkcgvhLRVAOgVPpYg/edit#slide=id.g550f852d27_228_0
Ce talk me semblait prometteur, au niveau de son intitulé, moi qui me demande à chaque fois comment structurer un projet quand je joue avec un nouveau langege / framework. Au final, ce talk s’est plus axé sur le Domain Driven Development. Très intéressant sur le fond, mais je ne peux m’empecher d’avoir un peu de déception par rapport à mes attentes initiales. https://github.com/katzien/talks/blob/master/how-do-you-structure-your-apps/dotgo-2019-03-25/slides.pdf
Ignat Korchagin - Go as a scripting language in Linux
Comment utiliser du Go comme un simple langage de scripting (donc sans compilation). Très bonne approche et découverte du special mount linux /proc/sys/fs/binfmt_misc
.
https://blog.cloudflare.com/using-go-as-a-scripting-language-in-linux/
Michael McLoughlin - Better x86 Assembly Generation with Go
Il est parfois nécessaire de recourir à l’assembleur : performance, élimination des effets de bords, être plus près de la machine. C’est notamment le cas dans l’implémentation de la crypto. Ecrire de l’assembleur est fastidieux. Et actuellement, c’est en python que la génération d’assembleur se fait. Pourquoi ne pas utiliser le Go ? https://speakerdeck.com/mmcloughlin/better-x86-assembly-generation-with-go https://github.com/mmcloughlin/avo
LT1: Joan López de la Franca Beltran
LT2: Olivier Wulveryck - ONNX-Go, neural networks made easy
LT3: Natalie Pistunovich - TensorFlow and Go
Aborder l’aspect machine learning en Go au lieu du Python.
LT4: Roberto Clapis - Channels
La gestion de la concurrence et des mutex en Go : https://docs.google.com/presentation/d/1tyLYa5ucxVx-_h-GRaHYKzhQBaCTBP4B-Lai3wkmj6A/edit#slide=id.p
Talk avancé, mais abordé de manière efficace en 5 minutes.
LT5: Valentin Deleplace - Semaphores
Comment expliquer les sémaphores en Go ? Simple : des gophers, une piscine et comment optimiser/maîtriser l’occupation de la piscine. Simple, efficace et très abordable.
Après-midi :
Dave Cheney - Constants
Monsieur Dave Cheney, MC de ce DotGoEu a fait un talk intéressant (mais avancé) sur les erreurs sentinelles,en Go et l’utilisation de vraies constantes : https://dave.cheney.net/2016/04/07/constant-errors
Jean de Klerk - Multi-Module Repositories
Comment gérer les sous modules au sein d’un projet Go. Ici, on parle de dépendences, de versionning et de problématique de package manager. Intéressant, bien que le scénario exposé ne soit pas à la portée du premier venu. Il le dit d’ailleurs dans ce talk : à n’utiliser que si vous ne pouvez pas faire autrement, sinon préférez deux repositories, deux projets.
Johan Brandhorst - Get going with WebAssembly
Ahhhh, là, je retrouve un marronnier des confs JS : WebAssembly. Pourquoi ne pas utiliser du Go dans votre navigateur. Alors, oui, pourquoi pas. Mais les perfs (notamment la taille des bundles générés) ne sont pas là. https://www.youtube.com/watch?v=jKKFf77Qwno https://talks.godoc.org/github.com/johanbrandhorst/presentations/wasm/wasm.slide#1
Bryan Boreham - Tune Your Garbage-Collector!
Ce talk a abordé la notion de Garbage Collector (et de son tuning) en Go. Si vous avez déjà eu à faire à un GC, le talk est une autoroute. Intéressant, mais pas forcément novateur. https://www.youtube.com/watch?v=r_hT7Z2YE-8
Ellen Körbes - 3D modeling with Go
Un talk qui parle d’impression 3D, de génération programmative. Bon, la techno est super intéressante mais l’application faite ici est pour le moins surprenante : la modélisation et génération de dildos/“dilator”. La présentation la plus surprenante de cette journée (dans le bon sens !)
James Bowes - An introduction to reflect and unsafe
Démonstration de reflect et unsafe en Go. J’avoue ne pas avoir tout compris :)
Jessica Frazelle - Introduction to RISC-V
Ici, ça parle architecture CPU, instructions, registres, etc. Moi qui pensais que le RISC était mort et enterré, j’ai été surpris d’apprendre qu’un portage Go pour tourner sur RISC-V avait déjà été entrepris. Par contre, bien qu’intéressant (car pas forcément lié au Go), ce talk était particulièrement difficile à suivre, la speaker ayant un débit de parole ahurissant :) https://blog.jessfraz.com/post/digging-into-risc-v-and-how-i-learn-new-things/
Marcel van Lohuizen - Go 2 Error Values Today
La gestion d’erreur en Go, et les propositions pour les prochaines versions de Go. Je n’ai pas eu assez à faire avec les erreurs en Go pour apprécier la teneur du Talk
Quelques photos en vrac :
Et parce que je suis une “victime”, j’ai ramené un nouveau compagnon à la maison ;)
J'aurais juste une question : Comment avez vous trouver la communauté ?
(c'était bien votre première conf Go ?)
Et oui, c'était ma première conf Go