Cette édition spéciale de “La veille de Wittouck” liste les vidéos de Devoxx France 2025 qui m’ont le plus intéressé.

Parmi les vidéos de la playlist, je vous ai concocté une sélection de 26 vidéos que j’ai trouvées particulièrement intéressantes. Mon astuce (pour ne pas y passer 300 heures) : je regarde les vidéos en x2, et je ralentis sur les morceaux intéressants 😅

Je les ai classées selon les tags que j’utilise d’habitude, elles ne sont pas triés dans un ordre précis.

Je n’ai aussi pas listé les talks que j’avais déjà mentionné dans mon article précédent, je vous propose de les retrouver dans l’article DevOxx 2025 - Bilan, que j’ai mis à jour avec les liens des vidéos.

Bon visionnage !

🛜 Internet et Divers

Une conférence sur l’histoire du développement des premiers jeux Pokemon, et du glitch qui permet de capturer Mew. Le speaker rentre dans le détail des modifications de valeurs de variables tout au long de l’exécution du glitch. La conférence est hyper bien réalisée, avec des démos dans le jeu !

Un talk autour de la gestion de la doc ! Le speaker donne les billes pour avoir une documentation de qualité, à travers trois critères : clarté, pertinence et accessibilité (au sens “facile à trouver”), et l’utilisation de revue de doc et de commentaires avec conventional comments.

La speakeuse y déconstruit les mythes des licornes, de la perfection qui est perçue de l’extérieur, l’illusion de l’agilité. Elle présente les approches produit concrètes de quelques licornes comme Spotify ou AirBnb, et l’importance des métriques techniques et produit, des tests et de l’acceptation de l’échec.

“L’architecture, c’est le boulot de tout le monde”. Les speakers donnent quelques clés d’architecture à destination des devs. Quelques tips simples comme “énoncer clairement les problèmes” à résoudre, et quels sont les quality attributes à mesurer dans une bonne architecture : disponibilité, performance, etc. Ils présentent aussi quelques points autour architecture monolithiques, modulaires, et des tradeoffs associés. Enfin, quelques points comme les ADR, les tests d’architecture et les principes de couplage et de cohésion.

“On se rend compte de la valeur de ses données personnelles le jour où on les perd”. Denis donne quelques billes pour estimer un risque, et la stratégie “3-2-1”, et implémenter cette stratégie avec un NAS (Network Attached Storage) et quelques services et logiciels.

Un Ledger implémente le stockage de comptes et de transactions. On retrouve les principes liés aux block-chains et cryptos, en particulier l’immutabilité des transactions. Le speaker présente quelques cas concrets d’implémentation chez Doctolib sur la gestion des factures.

🔒 Sécurité

Le speaker présente le fonctionnement de OIDC, les différents types de tokens, les scopes, et les flow clients et serveur, avec des démos live. C’est à voir pour tous les devs, front ou back !

On ne présente plus l’OWASP (Open Worldwide Application Security Project) qui propose le ‘Top 10’ avec le listing des 10 risques de sécurité les plus critiques. Le speaker présente rapidement Dependency Track, Zed Attack Proxy et ModSecurity.

☕ Java

Une lib pour tester le contenu d’une base de données en Java. Je connaissais déjà DbUnit sur ce use-case, qui était un peu fastidieux à utiliser. AssertJ-DB s’intègre avec AssertJ, et semble plutôt pratique d’utilisation, avec un apprentissage rapide. La killer feature est la possibilité de capturer les changements effectués sur la base de données par le code.

Un talk qui explique le principe sous-jacent au fonctionnement des threads virtuels disponibles depuis Java 21, en particulier la gestion des scope et contextes d’exécution. L’API Continuation n’est pas sensée être utilisée en dehors des mécanismes internes du JDK, mais découvrir son fonctionnement permet de se rendre compte de la complexité qui se cache derrière les threads virtuels. La démo est incroyable, le speaker réimplémente un Generator, et un VirtualThread !

Le speaker présente plusieurs axes d’optimisation : AOT et CDS, allocation de threads aux JIT C1 et C2, CRaC, et des éléments autour de l’infrastructure Kubernetes et allocation de ressources. C’est assez basique, mais ce sont toujours des bons rappels. J’aurais néanmoins aimé une démo de CRaC, car on en voit rarement.

La légende JM Doudoux présente 34 formes de Hello World en Java, du fameux System.out.println("Hello World") dans une méthode main à des moyens plus fous comme des blocs statiques, ou l’API Class-File pour générer dynamiquement du code.

L’API Gatherer vient compléter l’API Stream au niveau des opérations intermédiaires, de la même manière que l’API Collector complète les opérations terminales. José présente en détail le fonctionnement de l’API, et comment implémenter son propre Gatherer, avec quelques exemples concrets.

☕ IA

Une des keynotes que j’ai manqué sur cette édition. Dans la présentation et la séance de question/réponses, Luc déconstruit certains mythes de l’IA : les véhicules autonomes de niveau 5 n’existeront jamais, tout comme les AGI (artificial general intelligence), les LLM sont l’évolution du DeepLearning, les IA sont des outils spécialisés. Ses points de vue sont très tranchés et clairs, bien argumentés, même démontrés et illustrés.

Des stratégies concrètes pour imposer à une IA des standards de qualité issus du craftmanship. Ça passe par une approche de TDD, de test d’architecture et de maquettage, ces trois éléments étant passés au niveau du prompt de l’IA. L’approche semble efficace. Le plugin CLine qui est présenté affiche aussi le coût financier de chaque requête.

👷 DevOps

Les speakers détaillent l’ensemble des règles et étapes qu’ils ont intégrés dans leur build gradle, avec une estimation du temps gagné par rapport au temps de build ajouté. Outre les règles de formatage, et de validation d’architecture qu’on retrouve souvent, je retiens 2 bonnes idées : le contrôle de l’OpenApi généré (avec un diff automatisé) avec openapidiff, la suppression des dépendances inutiles avec du code inspiré de maven-dependency-analyser. En définitive, ajouter ces étapes au build plutôt qu’à la CI suit les approches de type shift-left, comme on peut aussi les observer avec des outils comme Dagger.

Les flaky tests, qui échouent parfois sont la bête noire des pipelines. On relance le pipeline en croisant les doigts 🤞. Docker a développé un outil interne pour détecter et marquer les tests flaky, afin de pouvoir les ignorer dans les pipelines. L’impact observé est de 300 PR mergées du premier coup en plus / mois et 1 an de compute économisé / mois.

Un tour d’horizon des différents moyens pour avoir un environnement de travail déporté : DevContainers, GitPod, JetBrains Gateway, et Cloud Workstation de Google.

Le speaker présente le Deterministic Simulation Testing. Cela passe par du property-based testing, l’injection de chaos avec des mocks qui ajoutent des temps de latence aléatoires. Un test est associé à une seed qui permettra de rejouer les tests. C’est intéressant sur le principe, mais ça manque d’exemples concrets à mon sens.

Burrito est un opérateur Kubernetes qui exécute des modules Terraform et s’intègre avec ArgoCD dans une approche GitOps. Il permet de réconcilier en continu des modules, corriger le drift, et fournit une interface pour suivre les déploiements. C’est plutôt intéressant, j’ai eu une approche similaire quand j’ai développé Gaia il y a quelques années.

☸️ Kubernetes

SlimFaas est un système de FaaS pour Kubernetes. La démo est plutôt impressionnante, en quelques minutes, le système est installé et utilisable. Les intérêts principaux sont la capacité à scale les applications à 0 et la possibilité de scheduler le démarrage et l’extinction des pods.

🐋 Docker

Un talk interactif ! Le format est original ! Après chaque question, les speakeuses donnent une petite explication, avec une démo. On découvre des détails autour du fonctionnement des images et registries, des architectures, des SBOM

On découvre les fonctionnalités de Docker Desktop. La vue du détail des images et des vulnérabilités est plutôt pratique, ainsi que l’historique des builds et l’exploration du filesystem d’un container. Les speakeurs présentent aussi quelques nouveautés de Docker Compose, l’option --watch est intéressante, ainsi que le push/pull de compose files sur les registries OCI.

🐧 Linux

Le use case est d’un autre level. Temps de réponse moyen attendu à 1 ms. 70 milliard de records. 18M req/secondes. Utilisation optimisée du page cache linux. Utilisation de disques en raw (sans filesystem). On y découvre aussi les challenges rencontrés en production dans le volet REX.

Un peu d’histoire autour des Terminal User Interface, ainsi qu’une démo de développement d’un CLI TUI en Python, Golang ou Rust. Assez inspirant de voir comment il est facile d’implémenter de tels outils avec des librairies faciles d’accès.


La prochaine publication est prévue autour du 🗓️ 13 juin 2025