Ce que tu as préféré développer et pourquoi ? - RÉPONDEUR #2
"Vous êtes bien sur le répondeur de Human Coders !"
Marketing prédictif, programmation fonctionnelle, art génératif… Dans cet épisode, on va parler de ce que tu as préféré développer et pourquoi.
•• TIMECODES ••
00:00:00 Introduction
00:01:19 Vincent Daubry et ses jeux sur Casio FX 92
00:02:31 Jean-Philippe Baconnais et son arbre généalogique
00:06:24 Patrice Maldi et le marketing prédictif
00:09:41 Camille Roux et l’art génératif
00:16:18 Emmanuel Demey et son premier projet open-source
00:22:19 Matthieu Segret et ses robots
00:24:37 Loïc Knuchel et la programmation fonctionnelle
00:28:58 Gwendal Le Coguic et le premier confinement
00:33:37 Sébastien Boursault et son assistant testeur
00:38:00 Conclusion•• NOS FORMATIONS ••
https://www.humancoders.com/formations
•• GUESTS ••
Vincent Daubry, développeur pour Human Coders et CTO de Corpogames
https://www.linkedin.com/in/vincent-daubry-74937428/https://x.com/vdaubry
Jean-Philippe Baconnais, organisateur de Human Talks de Nantes et consultant Full-Stack chez Zenika
https://twitter.com/JPhi_Baconnais https://www.linkedin.com/in/jean-philippe-baconnais-931544116/
Patrice Maldi, formateur Elasticsearch et Node.js chez Human Coders
https://www.linkedin.com/in/pmaldi/?originalSubdomain=frhttps://www.humancoders.com/formateurs/patrice-maldi
Camille Roux, directeur associé de Human Coders
https://www.linkedin.com/in/camilleroux/https://x.com/CamilleRoux
Emmanuel Demey, formateur Elastisearch, React et en Accessibilité numérique chez Human Coders
https://www.linkedin.com/in/emmanueldemey/?locale=fr_FRhttps://x.com/emmanueldemey?lang=frhttps://www.humancoders.com/formateurs/emmanuel-demey
Matthieu Segret, directeur associé de Human Coders
https://www.linkedin.com/in/matthieusegret/?originalSubdomain=frhttps://x.com/matthieuart
Loïc Knuchel, organisateur des Human Talks Paris, fondateur d’Azimutt et ancien engineering manager pour Doctolib
https://www.linkedin.com/in/loicknuchelhttps://x.com/loicknuchel
Gwendal Le Coguic, formateur en Hacking & sécurité des applications web et PHP chez Human Coders et auditeur cybersécurité, bug hunter et tools writer
https://www.linkedin.com/in/gwendal-le-coguic/https://x.com/gwendallecoguichttps://www.humancoders.com/formateurs/gwendal-le-coguic
Sébastien Boursault, formateur Cypress chez Human coders et software engineer in test chez Intractiv
https://www.humancoders.com/formateurs/sebastien-boursaulthttps://www.linkedin.com/in/sboursault/?originalSubdomain=fr
Sommaire de l'épisode
Transcription de l'épisode
Matthieu Segret : Bonjour à toutes et à tous, je suis Matthieu et vous êtes bien sur le répondeur des Human Coders. Je suis content d’être avec vous dans cette nouvelle édition de ce podcast où l’on va parler techno, pratiques de développement ou de sujets plus généraux, mais toujours en lien avec l’informatique. Le concept de ce podcast est assez simple : dans chaque épisode, je vous pose une question et vous pouvez me répondre par vocal.
Pour ce deuxième épisode de ce podcast, je repensais à ces projets où j’ai vraiment pris plaisir à développer. Ces moments où j’étais satisfait de ce que j’avais fait, soit parce que j’avais réussi à relever un défi, trouver une manière élégante de résoudre un problème, ou tout simplement parce que la finalité du projet avait du sens pour moi. C’est le cas, par exemple, quand j’ai découvert l’art génératif. J’ai découvert tout un univers où l’on pouvait faire de l’art avec du code. Cela a débouché pour moi sur des projets artistiques passionnants que j’ai adoré développer.
Je te propose dans ce deuxième épisode de nous parler d’un projet que tu as adoré développer et pourquoi il a été important pour toi. Est-ce que tu as une anecdote ou une expérience sympa à nous raconter à ce sujet ? Vous êtes bien sur le répondeur des Human Coders, laisse-nous un message après le bip.
Vincent Daubry : Les débuts sur Casio FX 92
Vincent Daubry : Salut Matt, c’est Vincent Daubry, je suis CTO de Corpogames. On est une startup qui propose une plateforme B2B de team building en ligne pour leurs salariés. On se connaît bien, ça fait un moment que l’on est amis avec Matthieu et Camille, et j’ai pas mal aidé sur la partie tech de Human Coders.
Alors, mon meilleur souvenir de dev ? Je pense qu’en fait, ce sont mes premiers souvenirs. J’ai commencé à coder au collège. J’ai découvert qu’en fait, on pouvait coder en Basic sur ma Casio FX 92 de l’époque. Je devais être en 5ème ou 4ème. J’étais un grand fan de SF et de fantasy et, du coup, je me suis mis à coder des petits RPG en mode texte au fond de la classe. Franchement, c’est un souvenir incroyable. Quand j’avais fini mes premiers jeux, je pouvais les filer à des potes, je les voyais qui jouaient dessus sur ma calculatrice. C’était dingue, j’étais trop content. Ce sont des souvenirs assez géniaux, même si forcément le code ne ressemblait à rien. C’était juste le fait de pouvoir faire ses propres jeux, pour moi, c’était fou.
Jean-Philippe Baconnais : Un arbre généalogique technique
Jean-Philippe Baconnais : Salut Matthieu, c’est Jean-Philippe, je suis consultant chez Zenika à Nantes. Pour répondre à ta question sur ce que j’ai préféré développer, je vais te parler d’un projet perso qui permet de gérer un arbre généalogique. Dans ma famille, du côté de mon père, on est assez nombreux. J’ai des tantes qui étaient intéressées pour faire un arbre généalogique, trouver nos aïeux et avoir une trace de tout ça. En sortant de l’école, en essayant de les aider pour avoir un outil qui marchait le mieux, on s’est rendu compte après plusieurs tests qu’il y avait pas mal de fonctionnalités qui manquaient aux logiciels dispos à ce moment-là.
En tant que dev, je me suis posé tout simplement la question : pourquoi je ne le ferais pas moi-même ? C’est un projet que j’ai initié il y a plus de 10 ans, sur lequel j’ai essayé de faire pas mal de choses avec toutes les technos du moment. Je m’amusais avec ce projet pour avoir un arbre à jour, modifiable et administrable directement par des composants. Côté front, j’ai pu m’amuser avec du jQuery, de l’Angular, du Vue. Finalement, je me suis arrêté à Vue, c’est l’élément que je préfère. Côté back, c’est pareil, j’ai tenté plein de choses : du Node, du Go, du Kotlin, et puis après je suis revenu à mon classique qui est Java avec Quarkus.
Ce qui est marrant avec ce projet, c’est aussi le côté infra. Au début, c’était de simples conteneurs Docker, puis du Docker Compose. Après, je me suis dit que ce serait marrant de faire du Kubernetes. Comme j’avais des Raspberry Pi chez moi qui ne servaient pas, j’ai installé tout ça dessus et j’ai même fait un cluster Kube sur mes Raspberry. Au bout d’un moment, je me suis dit qu’il était temps d’arrêter un peu tous ces tests et d’essayer de le rendre vraiment utilisable et dispo au reste de ma famille qui n’est pas du tout tech. J’ai commencé à m’investir dans le Cloud, notamment avec GCP. L’idée était d’améliorer l’outil pour qu’il consomme le moins possible. J’ai fait du serverless pour optimiser les coûts. J’ai appris énormément avec ce projet perso. Actuellement, j’ai plus de 300 personnes dans l’arbre généalogique. On arrive à remonter au-dessus des années 1800, c’est vraiment marrant. L’outil convient car tous les jours, il regarde l’anniversaire de chaque personne et envoie un petit mail aux personnes intéressées. C’est un projet que j’aurai encore pendant de longues années.
Patrice Maldi : Le marketing prédictif et les microservices
Patrice Maldi : Salut Matt, c’est Patrice Maldi, freelance Node.js et également formateur chez Human Coders. Je voulais te contacter pour te parler d’un projet sur lequel j’avais pris plaisir à développer. Ce projet se basait du côté de Nancy et je travaillais pour une société qui faisait du marketing prédictif. On avait un client qui était un regroupement de parapharmacies et on a dû leur développer une solution de fidélité afin de pouvoir gérer toute la clientèle.
Ce qui a été cool, c’est qu’on est partis d’une solution from scratch. Il n’y avait strictement rien en place et on a dû penser à tout le développement et à toute cette architecture. À ce moment-là, on est partis sur une solution front en Vue.js et une API directement avec Node.js et Express. Cette solution a été développée en un peu moins d’un an et on est passés par plusieurs phases. On a pu mettre en place un ensemble de microservices. On avait des microservices pour gérer la partie moteur de la fidélité et toute la partie calcul de points et récompenses. Il a fallu pour cela qu’on apprenne un peu le métier : qu’est-ce qu’un client, qu’est-ce que réellement la notion de fidélité pour de la parapharmacie et les règles de gestion.
On était une petite équipe de quatre développeurs : deux au back-end et deux au front-end. L’avantage de travailler dans une petite équipe comme ça, c’est qu’on a pu être un peu touche-à-tout. De plus, on a pu tester la notion de déploiement au sens strict puisqu’on a pu monter directement nos environnements dockerisés. Au final, c’est l’un des projets qui m’a le plus marqué.
Camille Roux : De l’art génératif aux shaders
Camille Roux : Salut Matt, c’est Camille, ton associé. J’aimerais parler d’art génératif. On a découvert ça il y a à peu près trois ans. C’est devenu une énorme passion. C’était un vrai coup de cœur de découvrir l’art fait par du code. J’ai toujours été un peu à l’écart des arts visuels, ça ne me parlait pas. Mais le fait de voir de l’art fait par des maths ou par du code, ça me parlait parce que je comprenais comment ça avait été fait.
La première techno sur laquelle on a passé du temps, c’était P5.js. Ça ressemble à une sorte de "Paint" mais où l’on coderait en JavaScript. C’est très facile d’accès mais c’est parfois frustrant pour faire des choses fines ou détaillées. Les animations sont aussi compliquées pour les mêmes raisons. Un peu plus tard, pendant qu’on faisait une collab tous les deux qui finira par s’appeler "The Source", j’ai découvert les shaders avec le langage GLSL. Ça a été une vraie révolution.
À la base, je suis dev Ruby. Faire du GLSL, c’était un très grand écart pour moi. Le GLSL ressemble au C, ce n’est pas un langage pour lequel j’avais une affinité particulière. Je suis habitué aux langages de haut niveau avec un garbage collector et une gestion de la mémoire automatique. Là, c’était bizarre de tomber sur un truc fortement typé, avec très peu de fonctions et des erreurs pas très explicites. On sent qu’on écrit du code qui va directement sur la carte graphique. Et en même temps, bizarrement, ça m’a plu. C’était énormément plus rapide et un paradigme extrêmement différent. En GLSL, le programme est exécuté sur chaque pixel, ce qui demande de penser différemment. Le fait que ce soit comme ça permet de faire des textures très riches, des trucs très fins. J’ai l’impression d’avoir des super-pouvoirs par rapport à P5.js.
Emmanuel Demey : L’aventure de l’open source et d’ESLint
Emmanuel Demey : Bonjour à tous, moi c’est Emmanuel Demey, je suis développeur freelance et formateur. Le projet dont je vais parler n’est pas un projet professionnel chez un client, c’est plutôt mon premier projet open source un peu important. Cela date d’il y a une dizaine d’années.
Je suis développeur web, j’ai passé énormément de temps à développer des applications avec le framework Angular JS. À un moment donné, je me suis dit qu'il y avait ESLint qui était de plus en plus connu pour vérifier la qualité d’un projet, mais il n’y avait aucun plugin pour vérifier la qualité spécifique du code Angular JS. Par exemple, une règle de nommage des composants ou l’utilisation de certains "bad patterns". Un soir, j’ai regardé comment créer un plugin pour ESLint. Je me suis vite pris au jeu.
Pour ceux qui ne connaissent pas, ESLint parse votre code JavaScript ou TypeScript et génère ce qu’on appelle un AST (Abstract Syntax Tree). À partir de cet AST, on peut exécuter un ensemble de règles. J’ai commencé ça tout seul avec 5 ou 10 règles, puis j’en ai ajouté au fur et à mesure. Des contributeurs sont arrivés. C’est aussi à cette époque que j’ai mis en place pour la première fois une approche TDD (Test Driven Development). J’ai fini avec 600 ou 700 tests unitaires.
Le point d’orgue a été quand John Papa, quelqu'un de très connu dans l’écosystème Angular qui travaille chez Microsoft, a mis ma tête en plein écran lors de la conférence NG Conf aux États-Unis en parlant de mon plugin. À partir de là, j’ai eu de plus en plus d’utilisateurs. Mon plugin est moins utilisé aujourd'hui car Angular JS est en perte de vitesse, mais c’était une excellente expérience.
Matthieu Segret : Robotique et impact physique
Matthieu Segret : Hello, c’est de nouveau Matthieu. J’ai réfléchi à cette question et je me suis demandé ce que j’aime particulièrement. Ce sont les projets qui ont un impact sur le monde physique. Ce sont les projets les plus funs que j’ai été amené à développer.
C’est le cas, par exemple, quand je me suis mis sur mon temps libre à la robotique. Je m’étais amusé à utiliser l’API d’une interface Arduino pour piloter différents éléments de Lego Mindstorms, comme des servomoteurs ou des capteurs. Il restait juste à programmer l’ensemble. C’était vraiment sympa d’imaginer des petits robots qui peuvent se déplacer et prendre des actions en fonction de ce qu’ils perçoivent du monde extérieur. Par exemple, ramasser des balles de couleur dans un labyrinthe. C’est aussi un excellent moyen de faire découvrir la programmation à des débutants.
Les autres projets auxquels je pense, ce sont les projets artistiques que je développe en ce moment. L’idée est de concevoir des tableaux en papier découpé. J’utilise des traceurs de découpe en fonction de modèles de données générés par du code. Cela permet de réaliser des découpes très détaillées. Les possibilités sont vraiment immenses et ça peut aboutir à des créations vraiment sympas et faciles à partager.
Loïc Knuchel : La puissance du typage statique et d’Elm
Loïc Knuchel : Salut Matthieu, c’est Loïc Knuchel. Je suis l’organisateur des Human Talks Paris et aujourd’hui je me lance en tant qu’entrepreneur avec Azimutt. Là où je suis tombé amoureux de la programmation, c’est sur la partie programmation fonctionnelle et typage statique. Pour moi, c’est ce qui aide vraiment à créer du code avec le moins de bugs possible et qui soit maintenable.
Avec la programmation fonctionnelle, comme il n’y a pas d’effets de bord, on est garantis que ce que l’on regarde dans notre fonction est ce qui va se passer. Le typage statique permet de voir d’un premier coup d’œil exactement ce qu’on va avoir comme données en entrée. J’ai découvert Elm, qui compile en JavaScript, ce qui me permet de faire tout mon front là-dessus. Trois ans plus tard, avec du code que j’ai écrit dans un langage que je découvrais, je suis toujours hyper confiant pour modifier mon code sans aucun problème.
L’informatique, pour moi, c’est organiser l’information. Tous les projets qui permettent de faciliter la compréhension, comme Azimutt pour l’exploration des bases de données ou Gospeak pour l’organisation des Human Talks, sont des sujets qui m’intéressent énormément.
Gwendal Le Coguic : Cybersécurité et Subdomain Takeover
Gwendal Le Coguic : Salut Matthieu, c’est Gwendal. Je suis consultant en cybersécurité et formateur chez Human Coders. Ce que j’ai adoré coder, c’était lors du premier confinement en 2020. J’ai travaillé pendant trois mois sur un outil en Python qui permet de déceler une faille de sécurité qui s’appelle le "Subdomain Takeover".
L’idée est de prendre le contrôle d’un sous-domaine d’un domaine cible configuré par une entreprise. En général, ça provient d’un problème de configuration DNS. C’est une faille assez critique puisque l’attaquant va pouvoir servir le contenu de son choix, faire du phishing ou réaliser des XSS. Mon programme se déroule en plusieurs étapes : découvrir un maximum de sous-domaines, faire de la résolution DNS de masse, puis étudier le résultat pour automatiser la détection.
Quelques mois après avoir finalisé mon programme, j’ai découvert un Subdomain Takeover chez EDF. Un admin avait configuré des sous-domaines pour pointer vers un autre domaine en .com, mais quelqu’un d’autre avait acheté le nom de domaine en .fr. Le .com étant toujours disponible à l’achat, je l’ai acheté pour 12 € et je l’ai configuré sur mon serveur privé. J’ai recensé plus de 450 autres domaines et sous-domaines qui étaient redirigés vers mon serveur à cause de cette simple erreur. C’était extrêmement critique. J’ai prévenu EDF qui a corrigé le problème en quelques jours.
Sébastien Boursault : L’assistant testeur visuel
Sébastien Boursault : Bonjour Matthieu. J’ai pensé à un petit logiciel que j’ai développé il y a quelques années pour m’aider dans mon quotidien de testeur. Je m’appelle Sébastien Boursault et j’anime une formation Cypress pour Human Coders.
Il y a quelques années, je vérifiais les pages d’un site e-commerce tous les jours. Il n’y avait pas beaucoup de documentation. Je me disais qu'un robot pourrait faire ça très bien. J’ai cherché quelles technos je pouvais connecter et j’ai trouvé Selenium pour contrôler un navigateur et ImageMagick pour manipuler les images et faire des différentiels.
La bonne surprise, c’est que ça marchait plutôt pas mal. J’avais un petit robot qui parcourait les pages de la nouvelle version et vérifiait si c’était ISO par rapport à la version d’avant. Si ce n’était pas le cas, il me produisait une image avec en surbrillance ce qui était différent. Ça a permis de contrôler beaucoup plus de pages que ce que j’aurais fait manuellement. On a trouvé des régressions, comme sur une page catégorie où l’ordre des produits n’était plus le même à cause d’un bug sur le tri. Sans ce truc automatique, on ne l’aurait jamais vu.
Matthieu Segret : Merci encore pour vos messages. J’espère que vous avez eu autant de plaisir que moi à les écouter. Si vous avez aimé ce podcast, n’hésitez pas à liker ou à nous suivre sur Spotify ou Apple Podcasts. Nous construisons ce podcast avec vous, donc n’hésitez pas à nous proposer des idées pour les prochains sujets ou à participer aux prochains épisodes sur le site des Human Coders. D’ici là, prenez soin de vous et je vous dis à bientôt dans un prochain épisode.
Informations sur l'épisode
- Date de publication
- Saison
- 2
- Épisode
- 2
- Durée
- 38:33
- Formateur·rice·s
- Série
- Human Coders Podcast