Le podcast Java en Français

Les Cast Codeurs : le podcast en français de, par et pour les développeurs.

Prenez connaissance des dernières nouvelles de la sphère Java et du développement en général. Plongez sur un sujet précis avec les épisodes interview.

Supportez les radotages de vos hôtes : Emmanuel Bernard (Red Hat, Hibernate, Quarkus), Arnaud Héritier (Doctolib, Jenkins), Guillaume Laforge (Google, Groovy), Antonio Goncalves (Microsoft, auteur), Katia Aresti (Red Hat, Infinispan).

LCC 322 - Maaaaveeeeen 4 !

Posté le 09/02/2025  

Arnaud et Emmanuel discutent des nouvelles de ce mois. On y parle intégrité de JVM, fetch size de JDBC, MCP, de prompt engineering, de DeepSeek bien sûr mais aussi de Maven 4 et des proxy de répository Maven. Et d’autres choses encore, bonne lecture.

Enregistré le 7 février 2025

Téléchargement de l’épisode LesCastCodeurs-Episode-322.mp3 ou en vidéo sur YouTube.

News

Langages

Les evolutions de la JVM pour augmenter l’intégrité https://inside.java/2025/01/03/evolving-default-integrity/

  • un article sur les raisons pour lesquelles les editeurs de frameworks et les utilisateurs s’arrachent les cheveux et vont continuer
  • garantir l’integrite du code et des données en enlevant des APIs existantes historiquemnt
  • agents dynamiques, setAccessible, Unsafe, JNI
  • Article expliques les risques percus par les mainteneurs de la JVM
  • Franchement c’est un peu leg sur les causes l’article, auto propagande

JavaScript Temporal, enfin une API propre et moderne pour gérer les dates en JS https://developer.mozilla.org/en-US/blog/javascript-temporal-is-coming/

  • JavaScript Temporal est un nouvel objet conçu pour remplacer l’objet Date, qui présente des défauts.
  • Il résout des problèmes tels que le manque de prise en charge des fuseaux horaires et la mutabilité.
  • Temporal introduit des concepts tels que les instants, les heures civiles et les durées.
  • Il fournit des classes pour gérer diverses représentations de date/heure, y compris celles qui tiennent compte du fuseau horaire et celles qui n’en tiennent pas compte.
  • Temporal simplifie l’utilisation de différents calendriers (par exemple, chinois, hébreu).
  • Il comprend des méthodes pour les comparaisons, les conversions et le formatage des dates et des heures.
  • La prise en charge par les navigateurs est expérimentale, Firefox Nightly ayant l’implémentation la plus aboutie.
  • Un polyfill est disponible pour essayer Temporal dans n’importe quel navigateur.

Librairies

Un article sur les fetch size du JDBC et les impacts sur vos applications https://in.relation.to/2025/01/24/jdbc-fetch-size/

  • qui connait la valeur fetch size par default de son driver?
  • en fonction de vos use cases, ca peut etre devastateur
  • exemple d’une appli qui retourne 12 lignes et un fetch size de oracle a 10, 2 a/r pour rien
  • et si c’est 50 lignres retournées
  • la base de donnée est le facteur limitant, pas Java
  • donc monter sont fetch size est avantageux, on utilise la memoire de Java pour eviter la latence

Quarkus annouce les MCP servers project pour collecter les servier MCP en Java https://quarkus.io/blog/introducing-mcp-servers/

  • MCP d’Anthropic
  • introspecteur de bases JDBC
  • lecteur de filke system
  • Dessine en Java FX
  • demarrables facilement avec jbang
  • et testes avec claude desktop, goose et mcp-cli
  • permet d’utliser le pouvoir des librarires Java de votre IA
  • d’ailleurs Spring a la version 0.6 de leur support MCP https://spring.io/blog/2025/01/23/spring-ai-mcp-0

Infrastructure

Apache Flink sur Kibernetes https://www.decodable.co/blog/get-running-with-apache-flink-on-kubernetes-2

  • un article tres complet ejn deux parties sur l’installation de Flink sur Kubernetes
  • installation, setup
  • mais aussi le checkpointing, la HA, l’observablité

Data et Intelligence Artificielle

10 techniques de prompt engineering https://medium.com/google-cloud/10-prompt-engineering-techniques-every-beginner-should-know-bf6c195916c7

  • Si vous voulez aller plus loin, l’article référence un très bon livre blanc sur le prompt engineering https://www.kaggle.com/whitepaper-prompt-engineering
  • Les techniques évoquées :
    1. Zero-Shot Prompting:
      • On demande directement à l’IA de répondre à une question sans lui fournir d’exemple préalable. C’est comme si on posait une question à une personne sans lui donner de contexte.
    2. Few-Shot Prompting:
      • On donne à l’IA un ou plusieurs exemples de la tâche qu’on souhaite qu’elle accomplisse. C’est comme montrer à quelqu’un comment faire quelque chose avant de lui demander de le faire.
    3. System Prompting:
      • On définit le contexte général et le but de la tâche pour l’IA. C’est comme donner à l’IA des instructions générales sur ce qu’elle doit faire.
    4. Role Prompting:
      • On attribue un rôle spécifique à l’IA (enseignant, journaliste, etc.). C’est comme demander à quelqu’un de jouer un rôle spécifique.
    5. Contextual Prompting:
      • On fournit des informations supplémentaires ou un contexte pour la tâche. C’est comme donner à quelqu’un toutes les informations nécessaires pour répondre à une question.
    6. Step-Back Prompting:
      • On pose d’abord une question générale, puis on utilise la réponse pour poser une question plus spécifique. C’est comme poser une question ouverte avant de poser une question plus fermée.
    7. Chain-of-Thought Prompting:
      • On demande à l’IA de montrer étape par étape comment elle arrive à sa conclusion. C’est comme demander à quelqu’un d’expliquer son raisonnement.
    8. Self-Consistency Prompting:
      • On pose plusieurs fois la même question à l’IA et on compare les réponses pour trouver la plus cohérente. C’est comme vérifier une réponse en la posant sous différentes formes.
    9. Tree-of-Thoughts Prompting:
      • On permet à l’IA d’explorer plusieurs chemins de raisonnement en même temps. C’est comme considérer toutes les options possibles avant de prendre une décision.
    10. ReAct Prompting:
      • On permet à l’IA d’interagir avec des outils externes pour résoudre des problèmes complexes. C’est comme donner à quelqu’un les outils nécessaires pour résoudre un problème.

Les patterns GenAI the thoughtworks https://martinfowler.com/articles/gen-ai-patterns/

  • tres introductif et pre RAG
  • le direct prompt qui est un appel direct au LLM: limitations de connaissance et de controle de l’experience
  • eval: evaluer la sortie d’un LLM avec plusieurs techniques mais fondamentalement une fonction qui prend la demande, la reponse et donc un score numerique
  • evaluation via un LLM (le meme ou un autre), ou evaluation humaine
  • tourner les evaluations a partir de la chaine de build amis aussi en live vu que les LLMs puvent evoluer.
  • Decrit les embedding notament d’image amis aussi de texte avec la notion de contexte

DeepSeek et la fin de la domination de NVidia https://youtubetranscriptoptimizer.com/blog/05_the_short_case_for_nvda

  • un article sur les raisons pour lesquelles NVIDIA va se faire cahllengert sur ses marges
  • 90% de marge quand meme parce que les plus gros GPU et CUDA qui est proprio
  • mais des approches ardware alternatives existent qui sont plus efficientes (TPU et gros waffle)
  • Google, MS et d’autres construisent leurs GPU alternatifs
  • CUDA devient de moins en moins le linga franca avec l’investissement sur des langages intermediares alternatifs par Apple, Google OpenAI etc
  • L’article parle de DeepSkeek qui est venu mettre une baffe dans le monde des LLMs
  • Ils ont construit un competiteur a gpt4o et o1 avec 5M de dollars et des capacites de raisonnements impressionnant
  • la cles c’etait beaucoup de trick d’optimisation mais le plus gros est d’avoir des poids de neurores sur 8 bits vs 32 pour les autres.
  • et donc de quatizer au fil de l’eau et au moment de l’entrainement
  • beaucoup de reinforcemnt learning innovatifs aussi
  • et des Mixture of Expert
  • donc ~50x moins chers que OpenAI
  • Donc plus besoin de GPU qui on des tonnes de vRAM
  • ah et DeepSeek est open source
  • un article de semianalytics change un peu le narratif
  • le papier de DeepSkeek en dit long via ses omissions
  • par ensemple les 6M c’est juste l’inference en GPU, pas les couts de recherches et divers trials et erreurs
  • en comparaison Claude Sonnet a coute 10M en infererence
  • DeepSeek a beaucoup de CPU pre ban et ceratins post bans evalués a 5 Milliards en investissement.
  • leurs avancées et leur ouverture reste extremement interessante

Une intro à Apache Iceberg http://blog.ippon.fr/2025/01/17/la-revolution-des-donnees-lavenement-des-lakehouses-avec-apache-iceberg/

  • issue des limites du data lake. non structuré et des Data Warehouses aux limites en diversite de données et de volume
  • entrent les lakehouse
  • Et particulierement Apache Iceberg issue de Netflix
  • gestion de schema mais flexible
  • notion de copy en write vs merge on read en fonction de besoins
  • garantie atomicite, coherence, isoliation et durabilite
  • notion de time travel et rollback
  • partitions cachées (qui abstraient la partition et ses transfos) et evolution de partitions
  • compatbile avec les moteurs de calcul comme spark, trino, flink etc
  • explique la structure des metadonnées et des données

Guillaume s’amuse à générer des histoires courtes de Science-Fiction en programmant des Agents IA avec LangChain4j et aussi avec des workflows https://glaforge.dev/posts/2025/01/27/an-ai-agent-to-generate-short-scifi-stories/ https://glaforge.dev/posts/2025/01/31/a-genai-agent-with-a-real-workflow/

  • Création d’un générateur automatisé de nouvelles de science-fiction à l’aide de Gemini et Imagen en Java, LangChain4j, sur Google Cloud.
  • Le système génère chaque nuit des histoires, complétées par des illustrations créées par le modèle Imagen 3, et les publie sur un site Web.
  • Une étape d’auto-réflexion utilise Gemini pour sélectionner la meilleure image pour chaque chapitre.
  • L’agent utilise un workflow explicite, drivé par le code Java, où les étapes sont prédéfinies dans le code, plutôt que de s’appuyer sur une planification basée sur LLM.
  • Le code est disponible sur GitHub et l’application est déployée sur Google Cloud.
  • L’article oppose les agents de workflow explicites aux agents autonomes, en soulignant les compromis de chaque approche. Car parfois, les Agent IA autonomes qui gèrent leur propre planning hallucinent un peu trop et n’établissent pas un plan correctement, ou ne le suive pas comme il faut, voire hallucine des “function call”.
  • Le projet utilise Cloud Build, le Cloud Run jobs, Cloud Scheduler, Firestore comme base de données, et Firebase pour le déploiement et l’automatisation du frontend.
  • Dans le deuxième article, L’approche est différente, Guillaume utilise un outil de Workflow, plutôt que de diriger le planning avec du code Java.
  • L’approche impérative utilise du code Java explicite pour orchestrer le workflow, offrant ainsi un contrôle et une parallélisation précis.
  • L’approche déclarative utilise un fichier YAML pour définir le workflow, en spécifiant les étapes, les entrées, les sorties et l’ordre d’exécution.
  • Le workflow comprend les étapes permettant de générer une histoire avec Gemini 2, de créer une invite d’image, de générer des images avec Imagen 3 et d’enregistrer le résultat dans Cloud Firestore (base de donnée NoSQL).
  • Les principaux avantages de l’approche impérative sont un contrôle précis, une parallélisation explicite et des outils de programmation familiers.
    • Les principaux avantages de l’approche déclarative sont des définitions de workflow peut-être plus faciles à comprendre (même si c’est un YAML, berk !) la visualisation, l’évolutivité et une maintenance simplifiée (on peut juste changer le YAML dans la console, comme au bon vieux temps du PHP en prod).
  • Les inconvénients de l’approche impérative incluent le besoin de connaissances en programmation, les défis potentiels en matière de maintenance et la gestion des conteneurs.
  • Les inconvénients de l’approche déclarative incluent une création YAML pénible, un contrôle de parallélisation limité, l’absence d’émulateur local et un débogage moins intuitif.
  • Le choix entre les approches dépend des exigences du projet, la déclarative étant adaptée aux workflows plus simples.
  • L’article conclut que la planification déclarative peut aider les agents IA à rester concentrés et prévisibles.

Outillage

Vulnérabilité des proxy Maven https://github.blog/security/vulnerability-research/attacks-on-maven-proxy-repositories/

  • Quelque soit le langage, la techno, il est hautement conseillé de mettre en place des gestionnaires de repositories en tant que proxy pour mieux contrôler les dépendances qui contribuent à la création de vos produits
  • Michael Stepankin de l’équipe GitHub Security Lab a cherché a savoir si ces derniers ne sont pas aussi sources de vulnérabilité en étudiant quelques CVEs sur des produits comme JFrog Artifactory, Sonatype Nexus, et Reposilite
  • Certaines failles viennent de la UI des produits qui permettent d’afficher les artifacts (ex: mettez un JS dans un fichier POM) et même de naviguer dedans (ex: voir le contenu d’un jar / zip et on exploite l’API pour lire, voir modifier des fichiers du serveur en dehors des archives)
  • Les artifacts peuvent aussi être compromis en jouant sur les paramètres propriétaires des URLs ou en jouant sur le nomage avec les encodings.
  • Bref, rien n’est simple ni niveau. Tout système rajoute de la compléxité et il est important de les tenir à mettre à jour. Il faut surveiller activement sa chaine de distribution via différents moyens et ne pas tout miser sur le repository manager.
  • L’auteur a fait une présentation sur le sujet : https://www.youtube.com/watch?v=0Z_QXtk0Z54

Apache Maven 4… Bientôt, c’est promis …. qu’est ce qu’il y aura dedans ? https://gnodet.github.io/maven4-presentation/

  • Et aussi https://github.com/Bukama/MavenStuff/blob/main/Maven4/whatsnewinmaven4.md
  • Apache Maven 4
    • Doucement mais surement …. c’est le principe d’un projet
    • Maven 4.0.0-rc-2 est dispo (Dec 2024).
    • Maven a plus de 20 ans et est largement utilisé dans l’écosystème Java.
    • La compatibilité ascendante a toujours été une priorité, mais elle a limité la flexibilité.
    • Maven 4 introduit des changements significatifs, notamment un nouveau schéma de construction et des améliorations du code.
  • Changements du POM
    • Séparation du Build-POM et du Consumer-POM :
      • Build-POM : Contient des informations propres à la construction (ex. plugins, configurations).
      • Consumer-POM : Contient uniquement les informations nécessaires aux consommateurs d’artefacts (ex. dépendances).
    • Nouveau Modèle Version 4.1.0 :
      • Utilisé uniquement pour le Build-POM, alors que le Consumer-POM reste en 4.0.0 pour la compatibilité.
      • Introduit de nouveaux éléments et en marque certains comme obsolètes.
    • Modules renommés en sous-projets :
      • “Modules” devient “Sous-projets” pour éviter la confusion avec les Modules Java.
      • L’élément <subprojects> remplace <modules> (qui reste pris en charge).
    • Nouveau type de packaging : “bom” (Bill of Materials) :
      • Différencie les POMs parents et les BOMs de gestion des dépendances.
      • Prend en charge les exclusions et les imports basés sur les classifiers.
    • Déclaration explicite du répertoire racine :
      • <project root="true"> permet de définir explicitement le répertoire racine du projet.
      • Élimine toute ambiguïté sur la localisation des racines de projet.
    • Nouvelles variables de répertoire :
      • ${project.rootDirectory}, ${session.topDirectory} et ${session.rootDirectory} pour une meilleure gestion des chemins.
      • Remplace les anciennes solutions non officielles et variables internes obsolètes.
    • Prise en charge de syntaxes alternatives pour le POM
      • Introduction de ModelParser SPI permettant des syntaxes alternatives pour le POM.
      • Apache Maven Hocon Extension est un exemple précoce de cette fonctionnalité.
  • Améliorations pour les sous-projets
    • Versioning automatique des parents
      • Il n’est plus nécessaire de définir la version des parents dans chaque sous-projet.
      • Fonctionne avec le modèle de version 4.1.0 et s’étend aux dépendances internes au projet.
    • Support complet des variables compatibles CI
      • Le Flatten Maven Plugin n’est plus requis.
      • Prend en charge les variables comme ${revision} pour le versioning.
      • Peut être défini via maven.config ou la ligne de commande (mvn verify -Drevision=4.0.1).
    • Améliorations et corrections du Reactor
      • Correction de bug : Gestion améliorée de --also-make lors de la reprise des builds.
      • Nouvelle option --resume (-r) pour redémarrer à partir du dernier sous-projet en échec.
      • Les sous-projets déjà construits avec succès sont ignorés lors de la reprise.
      • Constructions sensibles aux sous-dossiers : Possibilité d’exécuter des outils sur des sous-projets sélectionnés uniquement.
      • Recommandation : Utiliser mvn verify plutôt que mvn clean install.
    • Autres Améliorations
      • Timestamps cohérents pour tous les sous-projets dans les archives packagées.
      • Déploiement amélioré : Le déploiement ne se produit que si tous les sous-projets sont construits avec succès.
  • Changements de workflow, cycle de vie et exécution
    • Java 17 requis pour exécuter Maven
      • Java 17 est le JDK minimum requis pour exécuter Maven 4.
      • Les anciennes versions de Java peuvent toujours être ciblées pour la compilation via Maven Toolchains.
      • Java 17 a été préféré à Java 21 en raison d’un support à long terme plus étendu.
    • Mise à jour des plugins et maintenance des applications
      • Suppression des fonctionnalités obsolètes (ex. Plexus Containers, expressions ${pom.}).
      • Mise à jour du Super POM, modifiant les versions par défaut des plugins.
      • Les builds peuvent se comporter différemment ; définissez des versions fixes des plugins pour éviter les changements inattendus.
      • Maven 4 affiche un avertissement si des versions par défaut sont utilisées.
    • Nouveau paramètre “Fail on Severity”
      • Le build peut échouer si des messages de log atteignent un niveau de gravité spécifique (ex. WARN).
      • Utilisable via --fail-on-severity WARN ou -fos WARN.
    • Maven Shell (mvnsh)
      • Chaque exécution de mvn nécessitait auparavant un redémarrage complet de Java/Maven.
      • Maven 4 introduit Maven Shell (mvnsh), qui maintient un processus Maven résident unique ouvert pour plusieurs commandes.
      • Améliore la performance et réduit les temps de build.
      • Alternative : Utilisez Maven Daemon (mvnd), qui gère un pool de processus Maven résidents.

Architecture

Un article sur les feature flags avec Unleash https://feeds.feedblitz.com/~/911939960/0/baeldung~Implement-Feature-Flags-in-Java-With-Unleash

  • Pour A/B testing et des cycles de développements plus rapides pour « tester en prod »
  • Montre comment tourner sous docker unleash
  • Et ajouter la librairie a du code java pour tester un feature flag

Sécurité

Keycloak 26.1 https://www.keycloak.org/2025/01/keycloak-2610-released.html

  • detection des noeuds via la proble base de donnée aulieu echange reseau
  • virtual threads pour infinispan et jgroups
  • opentelemetry tracing supporté
  • et plein de fonctionalités de sécurité

Loi, société et organisation

Les grands morceaux du coût et revenus d’une conférence. Ici <http://bdx.io bdx.io> https://bsky.app/profile/ameliebenoit33.bsky.social/post/3lgzslhedzk2a
  • 44% le billet
  • 52% les sponsors
  • 38% loc du lieu
  • 29% traiteur et café
  • 12% standiste
  • 5% frais speaker (donc pas tous)

Ask Me Anything

Julien de Provin: J’aime beaucoup le mode “continuous testing” de Quarkus, et je me demandais s’il existait une alternative en dehors de Quarkus, ou à défaut, des ressources sur son fonctionnement ? J’aimerais beaucoup avoir un outil agnostique utilisable sur les projets non-Quarkus sur lesquels j’intervient, quitte à y metttre un peu d’huile de coude (ou de phalange pour le coup).

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 321 - Les évènements écran large

Posté le 20/01/2025  

Arnaud et Emmanuel discutent des versions Java, font un résumé de l’ecosystème WebAssembly, discutent du nouveau Model Context Protocol, parlent d’observabilité avec notamment les Wide Events et de pleins d’autres choses encore.

Enregistré le 17 janvier 2025

Téléchargement de l’épisode LesCastCodeurs-Episode-321.mp3 ou en vidéo sur YouTube.

News

Langages

java trend par InfoQ https://www.infoq.com/articles/java-trends-report-2024/

  • Java 17 finalement depasse 11 et 8 ~30/33%
  • Java 21 est à 1.4%
  • commonhaus apparait
  • GraalVM en early majority
  • Spring AI et langchain4j en innovateurs
  • SB 3 voit son adoption augmenter

Un bon résumé sur WebAssembly, les différentes specs comme WASM GC, WASI, WIT, etc https://2ality.com/2025/01/webassembly-language-ecosystem.html

  • WebAssembly (Wasm) est un format d’instructions binaires pour une machine virtuelle basée sur une pile, permettant la portabilité et l’efficacité du code.
  • Wasm a évolué à partir d’asm.js, un sous-ensemble de JavaScript qui pouvait fonctionner à des vitesses proches de celles natives.
  • WASI (WebAssembly System Interface) permet à Wasm de fonctionner en dehors des navigateurs Web, fournissant des API pour le système de fichiers, CLI, HTTP, etc.
  • Le modèle de composant WebAssembly permet l’interopérabilité entre les langages Wasm à l’aide de WIT (Wasm Interface Type) et d’ABI canonique.
  • Les composants Wasm se composent d’un module central et d’interfaces WIT pour les importations/exportations, facilitant l’interaction indépendante du langage.
  • Les interfaces WIT décrivent les types et les fonctions, tandis que les mondes WIT définissent les capacités et les besoins d’un composant (importations/exportations).
  • La gestion des packages Wasm est assurée par Warg, un protocole pour les registres de packages Wasm.
  • Une enquête a montré que Rust est le langage Wasm le plus utilisé, suivi de Kotlin et de C++; de nombreux autres langages sont également en train d’émerger.

Un algorithme de comptage a taille limitée ne mémoire a été inventé https://www.quantamagazine.org/computer-scientists-invent-an-efficient-new-way-to-count-20240516/

  • élimine un mot de manière aléatoire mais avec une probabilité connue quand il y a besoin de récupérer de l’espace
  • cela se fait par round et on augmente la probabilité de suppression à chaque round
  • donc au final, ne nombre de mots / la probabilité d’avoir été éliminé donne une mesure approximative mais plutot précise

Librairies

Les contributions Spring passent du CLA au DCO https://spring.io/blog/2025/01/06/hello-dco-goodbye-cla-simplifying-contributions-to-spring

  • d’abord manuel amis meme automatisé le CLA est une document legal complexe
  • qui peut limiter les contribuitions
  • le DCO vient le Linux je crois et est super simple
  • accord que la licence de la conmtrib est celle du projet
  • accord que le code est public et distribué en perpetuité
  • s’appuie sur les -s de git pour le sign off

Ecrire un serveur MCP en Quarkus https://quarkus.io/blog/mcp-server/ MCP est un protocol proposé paor Antropic pour integrer des outils orchestrables par les LLMs

  • MCP est frais et va plus loin que les outils
  • offre la notion de resource (file), de functions (tools), et de proimpts pre-built pour appeler l’outil de la meilleure façon
  • On en reparlera a pres avec les agent dans un article suivant
  • il y a une extension Quarkus pour simplifier le codage
  • un article plus detaillé sur l’integration Quarkus https://quarkus.io/blog/quarkus-langchain4j-mcp/

GreenMail un mini mail server en java https://greenmail-mail-test.github.io/greenmail/#features-api

  • Utile pour les tests d’integration
  • Supporte SMTP, POP3 et IMAP avec TLS/SSL
  • Propose des integrations JUnit, Spring
  • Une mini UI et des APIs REST permettent d’interagir avec le serveur si par exemple vous le partagé dans un container (il n’y a pas d’integration TestContainer existante mais elle n’est pas compliquée à écrire)

Infrastructure

Docker Bake in a visual way https://dev.to/aurelievache/understanding-docker-part-47-docker-bake-4p05

  • docker back propose d’utiliser des fichiers de configuration (format HCL) pour lancer ses builds d’images et docker compose
  • en gros voyez ce DSL comme un Makefile très simplifié pour les commandes docker qui souvent peuvent avoir un peu trop de paramètres

Datadog continue de s’etendre avec l’acquisition de Quickwit https://www.datadoghq.com/blog/datadog-acquires-quickwit/

  • Solution open-source de recherche des logs qui peut être déployée on-premise et dans le cloud https://quickwit.io/
  • Les logs ne quittent plus votre environment ce qui permet de répondre à des besoins de sécurité, privacy et réglementaire

Web

33 concepts en javascript https://github.com/leonardomso/33-js-concepts

Data et Intelligence Artificielle

Phi 4 et les small language models https://techcommunity.microsoft.com/blog/aiplatformblog/introducing-phi-4-microsoft%e2%80%99s-newest-small-language-model-specializing-in-comple/4357090

  • Phi 4 un SML pour les usages locaux notamment
  • 14B de parametres
  • belle progression de ~20 points sur un score aggregé et qui le rapproche de Llama 3.3 et ses 70B de parametres
  • bon en math (data set synthétique)

Comment utiliser Gemini 2.0 Flash Thinking (le modèle de Google qui fait du raisonnement à la sauce chain of thought) en Java avec LangChain4j https://glaforge.dev/posts/2024/12/20/lets-think-with-gemini-2-thinking-mode-and-langchain4j/

  • Google a sorti Gemini 2.0 Flash, un petit modèle de la famille Gemini
  • the “thinking mode” simule les cheminements de pensée (Chain of thoughts etc)
  • décompose beaucoup plus les taches coplexes en plusiewurs taches
  • un exemple est montré sur le modele se battant avec le probleme

Les recommendations d’Antropic sur les systèmes d’agents https://www.anthropic.com/research/building-effective-agents

  • défini les agents et les workflow
  • Ne recommence pas les frameworks (LangChain, Amazon Bedrock AI Agent etc) le fameux débat sur l’abstraction
  • Beaucoup de patterns implementable avec quelques lignes sans frameworks
  • Plusieurs blocks de complexité croissante
  • Augmented LLM (RAG, memory etc): Anthropic dit que les LLMs savent coordonner cela via MCP apr exemple
  • Second: workflow prompt chaining : avec des gates et appelle les LLMs savent coordonner successivement ; favorise la precision vs la latence vu que les taches sont décomposées en plusieurs calls LLMs
  • Workflow routing: classifie une entree et choisie la route a meilleure: separation de responsabilité
  • Workflow : parallelisation: LLM travaillent en paralllele sur une tache et un aggregateur fait la synthèse. Paralleisaiton avec saucissonage de la tache ou voter sur le meilleur réponse
  • Workflow : orchestrator workers: quand les taches ne sont pas bounded ou connues (genre le nombre de fichiers de code à changer) - les sous taches ne sont pas prédéfinies
  • Workflow: evaluator optimizer: nun LLM propose une réponse, un LLM l’évalue et demande une meilleure réponse au besoin
  • Agents: commande ou interaction avec l;humain puis autonome meme si il peut revenir demander des precisions à l’humain. Agents sont souvent des LLM utilisât des outil pour modifier l’environnement et réagir a feedback en boucle
  • Ideal pour les problèmes ouverts et ou le nombre d’étapes n’est pas connu
  • Recommende d’y aller avec une complexité progressive

L’IA c’est pas donné https://techcrunch.com/2025/01/05/openai-is-losing-money-on-its-pricey-chatgpt-pro-plan-ceo-sam-altman-says/

  • OpenAI annonce que même avec des licenses à 200$/mois ils ne couvrent pas leurs couts associés…
  • A quand l’explosion de la bulle IA ?

Outillage

Ghostty, un nouveau terminal pour Linux et macOS : https://ghostty.org/

  • Initié par Mitchell Hashimoto (hashicorp)
  • Ghostty est un émulateur de terminal natif pour macOS et Linux.
  • Il est écrit en Swift et utilise AppKit et SwiftUI sur macOS, et en Zig et utilise l’API GTK4 C sur Linux.
  • Il utilise des composants d’interface utilisateur native et des raccourcis clavier et souris standard.
  • Il prend en charge Quick Look, Force Touch et d’autres fonctionnalités spécifiques à macOS.
  • Ghostty essaie de fournir un ensemble riche de fonctionnalités utiles pour un usage quotidien.

Comment Pinterest utilise Honeycomb pour améliorer sa CI https://medium.com/pinterest-engineering/how-pinterest-leverages-honeycomb-to-enhance-ci-observability-and-improve-ci-build-stability-15eede563d75

  • Pinterest utilise Honeycomb pour améliorer l’observabilité de l’intégration continue (CI).
  • Honeycomb permet à Pinterest de visualiser les métriques de build, d’analyser les tendances et de prendre des décisions basées sur les données.
  • Honeycomb aide également Pinterest à identifier les causes potentielles des échecs de build et à rationaliser les tâches d’astreinte.
  • Honeycomb peut également être utilisé pour suivre les métriques de build locales iOS aux côtés des détails de la machine, ce qui aide Pinterest à prioriser les mises à niveau des ordinateurs portables pour les développeurs.

Méthodologies

Suite à notre épisode sur les différents types de documentation, cet article parle des bonnes pratiques à suivre pour les tutoriels https://refactoringenglish.com/chapters/rules-for-software-tutorials/

  • Écrivez des tutoriels pour les débutants, en évitant le jargon et la terminologie complexe.
  • Promettez un résultat clair dans le titre et expliquez l’objectif dans l’introduction.
  • Montrez le résultat final tôt pour réduire les ambiguïtés.
  • Rendez les extraits de code copiables et collables, en évitant les invites de shell et les commandes interactives.
  • Utilisez les versions longues des indicateurs de ligne de commande pour plus de clarté.
  • Séparez les valeurs définies par l’utilisateur de la logique réutilisable à l’aide de variables d’environnement ou de constantes nommées.
  • Épargnez au lecteur les tâches inutiles en utilisant des scripts.
  • Laissez les ordinateurs évaluer la logique conditionnelle, pas le lecteur.
  • Maintenez le code en état de fonctionnement tout au long du tutoriel.
  • Enseignez une chose par tutoriel et minimisez les dépendances.

Les Wide events, un “nouveau” concept en observabilité https://jeremymorrell.dev/blog/a-practitioners-guide-to-wide-events/

  • un autre article https://isburmistrov.substack.com/p/all-you-need-is-wide-events-not-metrics
  • L’idée est de logger des evenements (genre JSON log) avec le plus d’infos possible
  • de la machine, la ram, la versiond e l’appli, l’utilisateur, le numero de build qui a produit l’appli, la derniere PR etc etc
  • ca permet de filtrer et grouper by et de voir des correlations visuelles tres rapidement et de zoomer
  • tiens les ventes baisses de 20%
  • tiens en fait ca vient de l’appli andriod
  • tiens aps correle a la version de l’appli
  • mais la version de l’os si!
  • le deuxieme article est facile a lire
  • le premier est un guide d’usage exhaustif du concept

Entre argumenter et se donner 5 minutes https://signalvnoise.com/posts/3124-give-it-five-minutes

  • on veut souvent argumenter aka poser des questions en ayant déjà la reponse en soi emotionnellement
  • mais ca amene beaucoup de verbiage
  • donner 5 minutes à l’idée le temps d’y penser avant d’argumenter

Loi, société et organisation

Des juges fédéraux arrêtent le principe de la neutralité du net https://www.lemonde.fr/pixels/article/2025/01/03/les-etats-unis-reviennent-en-arriere-sur-le-principe-de-la-neutralite-du-net_6479575_4408996.html?lmd_medium=al&lmd_campaign=envoye-par-appli&lmd_creation=ios&lmd_source=default

  • la neutralité du net c’est l’interdiction de traiter un paquet différemment en fonction de son émetteur
  • Par exemple un paquet Netflix qui serait ralenti vs un paquet Amazon
  • Donald trump est contre cette neutralité.
  • À voir les impacts concrets dans un marché moins régulé.

Rubrique débutant

Un petit article sur les float vs les double en Java https://www.baeldung.com/java-float-vs-double

  • 4 vs 8 bytes
  • precision max de 7 vs 15
  • echele 10^38 vs 10^308 (ordre de grandeur)
  • perf a peu pret similaire
  • sauf peut etre pour des modeles d’IA qui vont privilegier une taille plus petite parfois
  • attention overflow et les accumulation d’erreurs d’approximation BigDecimal

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 320 - Diataxis, la méthode de documentation

Posté le 21/12/2024  

Emmanuel, Guillaume et Arnaud se rejoignent pour discuter de Diátaxis une approche pour structurer sa documentation. Ils offrent leur perspective sur leur usage et leur compréhension. Le sujet s’ouvre ensuite pour discuter des plateformes de documentation et comment l’IA impacte la documentation. Cet épisode est aussi sorti en vidéo, n’hésitez pas nous dire ce que vous en pensez des retours et souscrivez au channel YouTube 🤗.

Enregistré le 19 décembre 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-320.mp3 ou en vidéo sur YouTube.

Interview

Diátaxis

The Good Docs Project

Le retour d’expérience d’Emmanuel sur Diataxis

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via X/twitter https://twitter.com/lescastcodeurs ou Bluesky https://bsky.app/profile/lescastcodeurs.com Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 319 - le ramasse-miettes-charognes

Posté le 16/12/2024  

Dans cet épisode en audio et en vidéo (youtube.com/lescastcodeurs), Guillaume et Emmanuel discutent des 15 ans de Go, d’une nouvelle approche de garbage collecting, de LLMs dans les applications Java, d’observabilité, d’une attaque de chaine d’approvisionnement via javac et d’autres choses.

Enregistré le 13 décembre 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-319.mp3

News

Langages

Go fête son 15ème anniversaire ! https://go.dev/blog/15years

  • Discute les 15 ans
  • La correction de gotchas dans les for loops (notamment les variables étaient loop scoped).
  • Le fait que la compilation échoue si on attend une version de go supérieure seulement depuis go 1.21, en parallèle de la gestion de la chaine d’outil (seulement en 2023 !).
  • Opt-in telemetry aussi recent.

Construire OpenJDK à partir des sources sur macOS : https://www.morling.dev/blog/building-openjdk-from-source-on-macos/

  • de manière surprenante, ce n’est pas tres compliqué.

Papier sur l’approche Mark-scavenge pour un ramasse-miette : https://inside.java/2024/11/22/mark-scavenge-gc/

  • Papier de recherche.
  • Utiliser l’accessibilité pour preuve de vie n’est pas idéal : un objet peut être atteignable mais ne sera jamais accédé par le programme.
  • Les régions les plus pauvres en objets vivants voient leurs objets bouger dans une autre region et la region libérée, c’est le comportement classique des GC.
  • Deux méthodes : mark evaluate qui le fait en deux temps et la liveness peut évoluer ; et scavenge qui bouge l’objet vivant dès sa découverte.
  • Ils ont fait tourner via ZGC des expériences pour voir les objets considérés vivants et bougés inutilement.
  • Les résultats montrent un gros taux d’objets bougés de manière inutile.
  • Proposent un algo different.
  • Ils marquent les objets vivants, mais ne les bougent pas avant le prochain GC pour leur donner une chance de devenir unreachable.
  • Élimine beaucoup de déplacements inutiles vu que les objets deviennent non accessible en un cycle de GC.
  • Jusqu’à 91 % de reduction ! Particulièrement notable dans les machines chargées en CPU.

Les tokens d’accès court ou longs : https://grayduck.mn/2023/04/17/refresh-vs-long-lived-access-tokens/

  • Pourquoi des long access tokens (genre refresh token) sont utilisés pour des short lived dans OAuth 2.0.
  • Refresh token simplifient la revocation : vu que seul le auth serveur a à verifier la révocation et les clients vérifient l’expiration et la validité de la signature.
  • Refresh token ne sont envoyés qu’entre endpoints alors que les access tokens se baladent pas mal : les frontières de confiance ne sont pas traversées.
  • Refresh token rarement utilisé, et donc peut être protegé dans une enclave.
  • Les changements de grants sont plus simple tout en restant distribuables.
  • Histoire des access refresh token et access token permet de mieux tracer les abus / attaques.
  • Les inconvénients : c’est plus compliqué en flow, le auth serveur est un SPOF mais mitigeable.

Java Advent est de retour : https://www.javaadvent.com/calendar

  • Backstage.
  • Java integrity par défaut (et ses conséquences sur l’écosystème).
  • Timefold (solver).
  • Les extensions JUnit 5.
  • OpenTelemetry via Java Agent vs Micrometer.
  • Analyse statique de code.
  • CQRS et les fonctionnalités modernes de Java.
  • Java simple (sans compilation, sans objet).
  • Fullstack dev with Quarkus as backend.

José Paumard introduit et explique les Gatherers dans Java 24 dans cette vidéo : https://inside.java/2024/11/26/jepcafe23/

Librairies

Micronaut 4.7, avec l’intégration de LangChain4j : https://micronaut.io/2024/11/14/micronaut-framework-4-7-0-released/

Combiner le framework de test Spock et Cucumber : https://www.sfeir.dev/back/spock-framework-revolutionnez-vos-tests-unitaires-avec-la-puissance-du-bdd-et-de-cucumber/

  • Les experts peuvent écrire leurs tests au format Gherkin (de Cucumber) et les développeurs peuvent implémenter les assertions correspondantes avec l’intégration dans Spock, pour des tests très lisibles.

Spring 6.2 : https://spring.io/blog/2024/11/14/spring-framework-6-2-0-available-now

  • Beans @Fallback.
  • Améliorations sur SpELet sur le support de tests.
  • Support de l’échappement des property placeholders.
  • Une nouvelle initialisation des beans en tâche de fond.
  • Et pleins d’autres choses encore.

Comment créer une application Java LLM tournant 100% en Java avec Jlama : https://quarkus.io/blog/quarkus-jlama/

  • Blog de Mario Fusco, Mr API et Java et Drools.
  • Utilise Jlama + Quarkus + LangChain.
  • Explique les avantages de l’approche pure Java comme le cycle de vie unique, tester les modèles rapidement, sécurité (tout est in process), monolithe ahahah, observabilité simplifiée, distribution simplifiée (genre appli embarquée)…

Vert.x 5 en seconde incubation : https://vertx.io/blog/eclipse-vert-x-5-candidate-2-released/

  • Support des Java modules (mais beaucoup des modules Vert.x eux-mêmes ne le supportent pas).
  • Support io_uring dans Vert.x core.
  • Le load balancing côté client.
  • Le modèle des callbacks n’est plus supporté, vive les Futur !
  • Beaucoup d’améliorations autour de gRPC.
  • Et d’autres choses.

Un article sur Spring AI et la multi-modalité audio : https://spring.io/blog/2024/12/05/spring-ai-audio-modality

  • Permet de voir les evolutions des APIs de Spring AI.
  • S’appuie sur les derniers modèles d’Open AI.
  • Des examples, comme un chatbot voix et donc comment enregistrer la voix et la passer à OpenAI.

Comment activer le support experimental HTTP/3 dans Spring Boot : https://spring.io/blog/2024/11/26/http3-in-reactor-2024

  • C’est Netty qui fait le boulot.
  • Puis Spring Netty.
  • L’article décrit les étapes pour l’utiliser dans vos applis Spring Boot ou Spring Cloud Gateway.
  • L’article explique aussi le côté client (app cliente) ce qui est sympa.

Infrastructure

Un survol des offres d’observabilité : http://blog.ippon.fr/2024/11/18/observabilite-informatique-comprendre-les-bases-2eme-partie/

  • Un survol des principales offres d’observabilité.
  • Open source ou SaaS.
  • Et certains outsiders.
  • Pas mal pour commencer à défricher ce qui vous conviendrait.
  • Blog de ippon.

Web

Sortie de Angular 19 : https://blog.ninja-squad.com/2024/11/19/what-is-new-angular-19.0/

  • Stabilité des Signal APIs.
  • Migration automatique vers Signal APIs.
  • Composants standalone par défaut.
  • Nouvelles APIs linkedSignal et resource.
  • De grosses améliorations de SSR et HMR.

Angular 19 : https://www.sfeir.dev/front/angular-19-tout-ce-quil-faut-savoir-sur-les-innovations-majeures-du-framework/

  • Composant standalone par default (limiter les problèmes de dépendances), peut le mettre en strict pour le l’imposer (ou planter).
  • Signalement des imports inutilisés.
  • @let pour les variables locales dans les templates.
  • linkedSignal (experimental) pour lier des signaux entre eux (cascade de changement suite à un événement).
  • Hydratation incrémentale (contenu progressivement interactif avec le chargement sur les parties de la page visibles ou nécessaires).
  • Et event replay, routing et modes de rendu hybride, Hot module replacement…

The State of Frontend — dernière compilation des préférences des développeurs en termes de front : https://tsh.io/state-of-frontend/

  • React en tête, suivi de Vue et Svelte. Angular seulement 4ème.
  • Côté rendering framework, Next.js a la majorité absolue, ensuite viennent Nuxt et Astro.
  • Zod est la solution de validation préférée.
  • Pour la gestion de date, date-fns est en tête, suivi par moment.js.
  • Côté state management, React Context API en première place, mais les suivants sont tous aussi pour React !
  • Grosse utilisation de Lodash pour plein d’utilités.
  • Pour fetcher des resources distantes, l’API native Fetch et Axios sont les deux vainqueurs.
  • Pour le déploiement, Vercel est premier.
  • Côté CI/CD, beaucoup de Github Actions, suivi par Gitlab CI.
  • Package management, malgré de bonnes alternatives, NPM se taille toujours la part du lion.
  • Écrasante utilisation de Node.js comme runtime JavaScript pour faire du développement front.
  • Pour ce qui est du typing, beaucoup utilisent TypeScript, et un peu de JSdoc, et la majorité des répondants pensent que TypeScript a dépassé JavaScript en usage.
  • Dans les API natives du navigateur, Fetch, Storage et WebSockets sont les APIs les plus utilisées.
  • La popularité des PWA devrait suivre son petit bonhomme de chemin.
  • En termes de design system, shadcn/ui en tête, suivi par Material, puis Bootstrap.
  • Pour la gestion des styles, un bon mix de plain old CSS, de Tailwind, et de Sass/CSS.
  • Jest est premier comme framework de tests.
  • Les 3/4 des développeurs front utilisent Visual Studio Code, quant au quart suivant, c’est JetBrains qui raffle les miettes.
  • Pour le build, Vite récolte les 4/5 des voix.
  • ESLint et Prettier sont les deux favoris pour vérifier le code.

Parfois, on aimerait pouvoir tester une librairie ou un framework JavaScript, sans pour autant devoir mettre en place tout un projet, avec outil de build et autre. Julia Evans explore les différents cas de figure, suivant la façon dont ces librairies sont bundlées. https://jvns.ca/blog/2024/11/18/how-to-import-a-javascript-library/

  • Certaines librairies permettent de ne faire qu’un simple import dans une balise script
  • Certaines frameworks sont distribués sous forme d’Universal Module Definition, sous CommonJS, d’ESmodule.
  • Franchement, en tant que noob, c’est compliqué quand même !

Data et Intelligence Artificielle

L’impact de l’IA en entreprise et des accès aux documents un peu laxistes : https://archive.ph/uPyhX

  • L’indexing choppe tout ce qu’il peut.
  • Et l’IA est très puissante pour diriger des requêtes et extraire les données qui auraient dû être plus restreintes.

Différentes manières de faire de l’extraction de données et de forcer la main à un LLM pour qu’il génère du JSON : https://glaforge.dev/posts/2024/11/18/data-extraction-the-many-ways-to-get-llms-to-spit-json-content/

  • L’approche “je demande gentiment” au LLM, en faisant du prompt engineering.
  • En utilisant du function calling pour les modèles supportant la fonctionnalité, en particulier avant les approches de type “JSON mode” ou “JSON schema”.
  • Ou effectivement si le modèle le supporte aussi, toujours avec un peu de prompting, mais en utilisant le “JSON mode” qui force le LLM a généré du JSON valide.
  • Encore mieux avec la possibilité de spécifier un schema JSON (type OpenAPI) pour que le JSON en sortie soit “compliant” avec le schéma proposé.

Comment masquer les données confidentielles avec ses échanges avec les LLMs : https://glaforge.dev/posts/2024/11/25/redacting-sensitive-information-when-using-generative-ai-models/

  • Utilisation de l’API Data Loss Prevention de Google Cloud qui permet d’identifier puis de censurer / masquer (“redacted” en anglais) des informations personnelles identifiables (“PII”, comme un nom, un compte bancaire, un numéro de passeport, etc).
  • Pour des raisons de sécurité, de privacy, pour éviter les brèches de données comme on en entend trop souvent parler dans les nouvelles.

On peut utiliser certains modèles d’embedding pour faire de la recherche de code : https://glaforge.dev/posts/2024/12/02/semantic-code-search-for-programming-idioms-with-langchain4j-and-vertex-ai-embedding-models/

  • Guillaume recherche des bouts de code, en entrant une requête en langue naturel.
  • Certains embedding models supportent différents types de tâches, comme question/réponse, question en langue naturelle / retour sous forme de code, ou d’autres tâches comme le fact checking…
  • Dans cet article, utilisation du modèle de Google Cloud Vertex AI, en Java, avec LangChain4j.

Google sort la version 2 de Gemini Flash : https://blog.google/technology/google-deepmind/google-gemini-ai-update-december-2024/

  • La nouvelle version Gemini 2.0 Flash dépasse même Gemini 1.5 Pro dans les benchmarks.
  • Tout en étant 2 fois plus rapide que Gemini 1.5 Pro, et bien que le prix ne soit pas encore annoncé, on imagine également plus abordable.
  • Google présente Gemini 2 comme le LLM idéal pour les “agents”.
  • Gemini propose une vraie multimodalité en sortie (premier LLM sur le marché à le proposer) : Gemini 2 peut entrelacer du texte, des images, de l’audio.
  • Gemini 2 supporte plus de 100 langues.
  • Huit voix de haute qualité, assez naturelles, pour la partie audio.
  • Un nouveau mode speech-to-speech en live, où on peut même interrompre le LLM, c’est d’ailleurs ce qui est utilisé dans Project Astra, l’application mobile montrée à Google I/O qui devient un vrai assistant vocal en live sur votre téléphone.
  • Google annonce aussi une nouvelle expérimentation autour des assistants de programmation, avec Project Jules, avec lequel on peut discuter en live aussi, partager son code, comme un vrai pair programmeur.
  • Google a présenté Project Mariner qui est un agent qui est sous forme d’extension Chrome, qui va permettre de commander votre navigateur comme votre assistant de recherche personnel, qui va être capable de faire des recherches sur le web, de naviguer dans les sites web, pour trouver les infos que vous recherchez.
  • Cet autre article montre différentes vidéos de démos de ces fonctionnalités https://developers.googleblog.com/en/the-next-chapter-of-the-gemini-era-for-developers/.
  • Un nouveau projet appelé Deep Research, qui permet de faire des rapports dans Gemini Advanced : on donne un sujet et l’agent va proposer un plan pour un rapport sur ce sujet (qu’on peut valider, retoucher) et ensuite, Deep Research va effectuer des recherches sur le web pour vous, et faire la synthèse de ses recherches dans un rapport final https://blog.google/products/gemini/google-gemini-deep-research/.
  • Enfin, Google AI Studio, en plus de vous permettre d’expérimenter avec Gemini 2, vous pourrez aussi utiliser des “starter apps” qui montrent comment faire de la reconnaissance d’objet dans des images, comment faire des recherches avec un agent connecté à Google Maps…
  • Google AI Studio permet également de partager votre écran avec lui, en mobile ou en desktop, de façon à l’utiliser comme un assistant qui peut voir ce que vous faites, ce que vous codez et peut répondre à vos questions.

Méthodologies

Un article de GitHub sur l’impact de la surutilisation des CPU sur la perf de l’appli : https://github.blog/engineering/architecture-optimization/breaking-down-cpu-speed-how-utilization-impacts-performance/

  • C’est surprenant qu’ils aient des effets dès 30 % de perf.
  • C’est dû à la non limit thermique, au boost de fréquence qui en suit.
  • Ils ont donc cherché le golden ratio.
  • Pour eux autour de 60 %.
  • Ils prennent des morceaux de cluster kube pour faire tourner les workloads.
  • Et ajoutent des workload CPU artificiels (genre math).

Sécurité

Attaque de la chaîne d’approvisionnement via javac : https://xdev.software/en/news/detail/discovering-the-perfect-java-supply-chain-attack-vector-and-how-it-got-fixed

  • S’appuie sur l’annotation processeur.
  • Des dépendances sont chargées et exécutées au moment du build du projet.
  • Et cherche les annotations processor dans le user classpath (via le pattern ServiceLoader).
  • Et donc si la dépendance est attaquée et un annotation processor est ajouté ou modifié, on a un vecteur d’attaque au moment de la compilation du projet ciblé.
  • Des qu’on démarre l’IDE en gros.
  • Workaround, activer -proc:none et activer les annotation processors explicitement dans votre outil de build.
  • Certaines améliorations dans le JDK : le compilateur note qu’il exécute un annotation processor.
  • Dans Java 23+, les annotation processors sont désactivés par défaut.

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 318 - La faille sous la faille sous la faille

Posté le 08/11/2024  

Cet épisode est relativement pauvre en IA, ouaissssssss ! Mais il nous reste plein de Spring, plein de failles, plein d’OpenTelemetry, un peu de versionnage sémantique, une astuce Git et bien d’autres choses encore.

Enregistré le 8 novembre 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-318.mp3

News

Langages

Le créateur de FernFlower, un décompilateur qui a relancé l’outillage autour de Java 8, est mort, un hommage d’IntelliJ IDEA : https://blog.jetbrains.com/idea/2024/11/in-memory-of-stiver/

  • Les décompilateurs s’appuyaient sur des patterns reconnus et étaient fragiles et incomplets.
  • Surtout quand Java 8 a changé le pattern try catch et ajouté des concepts comme les annotations.
  • Le champ était moribond quand Stiver s’est lancé.
  • Dommage l’article n’explique pas comment le control-flow graph est généré à partir du bytecode pour améliorer la décompilation.

Librairies

On peut maintenant utiliser Jakarta Data Repository dans Quarkus : https://in.relation.to/2024/11/04/data-in-quarkus/

  • Petit article avec un projet example.
  • Aussi un lien sur la presentation de Jakarta Data par Gavin à Devoxx Belgique.

Quarkus 3.16 : https://quarkus.io/guides/opentelemetry-logging

  • Logs distribués avec OpenTelemetry (preview).
  • Désérialisation Jackson sans reflection.
  • Des améliorations dans la stack de sécurité.
  • TLS registry a rajouté GraphQL client et Keycloak admin client.
  • Les logs des container devservices et des access HTTP sont visibles dans la DevUI.
  • Les extensions peuvent maintenant écrire leur doc en markdown (c’était juste AsciiDoc avant).

Un article sur comment débuter en Spring Batch : https://www.sfeir.dev/back/planifier-des-taches-avec-spring-batch/

Le support OAuth2 pour RestClient arrive dans Security 6.4 / Boot 3.4. Plus de hack de WebClient dans vos applications Spring-Web ! https://spring.io/blog/2024/10/28/restclient-support-for-oauth2-in-spring-security-6-4

  • RestClient a été ajouté dans Spring Framework 6.1.
  • API Fluide.
  • Spring Security 6.4 simplifie la configuration OAuth2 avec le nouveau client HTTP synchrone RestClient.
  • RestClient permet des requêtes de ressources sans dépendances réactives, alignant la configuration entre applications servlet et réactives.
  • La mise à jour facilite la migration depuis RestTemplate et ouvre la voie à des scénarios avancés.

Marre des microservices ? Revenez au monoliths avec Spring Modulith 1.3RC1, 1.2.5 et 1.1.10 : https://spring.io/blog/2024/10/28/spring-modulith-1-3-rc1-1-2-5-and-1-1-10-released

  • Spring Modulith 1.3 RC1, 1.2.5, and 1.1.10 sont disponibles.
  • La version 1.3 RC1 inclut des nouvelles fonctionnalités :
    • archiving event publication completion mode,
    • compatibilité avec MariaDB et Oracle avec JDBC-based event publication registry,
    • possibilité d’externaliser des événements dans des MessageChannels de Spring,
    • expressions SpEL dans @Externalized,
    • validation d’architecture technique jMolecules.
  • Les versions 1.2.5 et 1.1.10 apportent des correctifs et mises à jour de dépendances.

Spring gRPC 0.1 est sorti : https://github.com/spring-projects-experimental/spring-grpc

  • C’est tout nouveau et explorationel.
  • Si c’est un problème qui vous gratte, ça vaut le coup de jeter un coup d’œil de participer.
  • Spring Boot 3.3.

Intégrer Spring avec Open Telemetry (protocole OTLP) : https://spring.io/blog/2024/10/28/lets-use-opentelemetry-with-spring

  • Rappel de la valeur de ce standard Open Telemetry.
  • Comment l’utiliser dans vos projets Spring.

Comment utiliser Ollama avec Spring AI : https://spring.io/blog/2024/10/22/leverage-the-power-of-45k-free-hugging-face-models-with-spring-ai-and-ollama

  • Permet d’accéder aux 45k modèles de Hugging faces qui supportent le déploiement sur Ollama.
  • Il y a un Spring Boot starter.
  • C’est vraiment bien pour débuter.

Cloud

Google Cloud Frankfort a subit 12h d’interruption : https://t.co/VueiQjhCA3

  • Google Cloud a subi une panne de 12 heures dans la région europe-west3 (Francfort) le 24 octobre 2024.
  • La panne, causée par une défaillance d’alimentation et de refroidissement, a affecté plusieurs services, y compris Compute Engine et Kubernetes Engine.
  • Les utilisateurs ont rencontré des problèmes de création de VM, des échecs d’opérations et des retards de traitement.
  • Google a conseillé de migrer les charges de travail vers d’autres zones.
  • Il y a eu une autre zone Européenne pas mal affectée l’année dernière.
  • Et des clients ont perdu des données :sweat:.

Web

La fin de la World Wild Web Foundation : https://www.theregister.com/2024/09/30/world_wide_web_foundation_closes/

  • La Fondation World Wide Web ferme ses portes.
  • Les cofondateurs estiment que les problèmes auxquels est confronté le Web ont changé et que d’autres groupes de défense peuvent désormais prendre le relais.
  • Ils estiment également que la priorité absolue doit être donnée à la passion de Tim Berners-Lee pour redonner aux individus le pouvoir et le contrôle de leurs données et pour construire activement des systèmes de collaboration puissants (Solid Protocol : https://solidproject.org/).

Release de PatternFly 6 : https://www.patternfly.org/

  • Framework open source pour faire de l’UI, sponsorisé par Red Hat.
  • Intéressant à regarder.

Data et Intelligence Artificielle

TSMC a suspendu ses livraisons à Sophgo après la découverte d’une puce sur le processeur AI de Huawei https://www.reuters.com/technology/tsmc-suspended-shipments-china-firm-after-chip-found-huawei-processor-sources-2024-10-26/

  • Taiwan Semiconductor Manufacturing Company (TSMC) a suspendu ses livraisons à Sophgo, un concepteur de puces chinois, après la découverte d’une puce fabriquée par TSMC dans un processeur AI de Huawei (Ascend 910B). Cette découverte soulève des préoccupations concernant des violations potentielles des contrôles d’exportation des États-Unis, qui restreignent Huawei depuis 2020.
  • Sophgo, lié à Bitmain, a nié toute connexion avec Huawei et affirme se conformer aux lois applicables. Toutefois, l’incident a conduit à une enquête approfondie de TSMC et des autorités américaines et taïwanaises.

Open AI et Microsoft, de l’amour à la guerre : https://www.computerworld.com/article/3593206/microsoft-and-openai-good-by-bromance-hello-open-warfare.html

  • On a bien suivi les chants d’amour entre Sam Altman et Satya Nadella.
  • Ça s’est tendu ces derniers temps.
  • Déjà avec le coup chez OpenAI où MS avait sifflé la fin de la récré.
  • “on a le code, les données, l’IP et la capacité, on peut tout recrée”.
  • OpenAI a un compétiteur de Copilot et essaie de courtiser ses clients.
  • Les appétits d’investissements d’OpenAI et une dispute sur la valeur de la part de MS qui a donné des crédits cloud semble être au cœur de la dispute du moment.

Debezium 3 est sorti : https://debezium.io/blog/2024/10/02/debezium-3-0-final-released/

  • Java 17 minimum pour les connecteurs et 21 pour le serveur, l’extension Quarkus outbox et l’opérateur,
  • Nettoyage des dépréciations,
  • Métriques par table maintenant,
  • Support for mysql 9 y compris vector data type,
  • Oracle, default mining strategy changée,
  • Ehcache off-heap ajouté,
  • amélioration diverses Oracle (offline RAC node flush, max string size for Extended),
  • PostgreSQL PGVector,
  • etc (Spanner, Vitess, …).

NotebookLlama, une version Open Source de NotebookLM : https://github.com/meta-llama/llama-recipes/tree/main/recipes/quickstart/NotebookLlama

  • Si vous avez été impressionné par les démos de Gemini Notebook, en créant des podcasts à partir de différentes resources, testez la version Llama.
  • Tutoriel étape par étape pour transformer un PDF en podcast.

Outillage

Vous aimez Maven ? Bien évidemment ! Vous aimez Asciidoctor ? Absolument ! Alors la version 3.1.0 du plugin Asciidoctor pour Maven est pour vous !! https://github.com/asciidoctor/asciidoctor-maven-plugin

  • Le plugin permet soit de convertir des documents asciidoc de manière autonome, soit de les gérer via le site maven.

GitHub Universe : de l’IA, de l’IA et encore de l’IA https://github.blog/news-insights/product-news/universe-2024-previews-releases/

  • GitHub Universe 2024 présente les nouveautés de l’année, notamment la possibilité de choisir parmi plusieurs modèles d’IA pour GitHub Copilot (Claude 3.5, Gemini 1.5 Pro, OpenAI o1).
  • Nouvelles fonctionnalités : GitHub Spark pour créer des micro-applications, révisions de code assistées par Copilot, sécurité renforcée avec Copilot Autofix.
  • Simplification des workflows avec les extensions GitHub Copilot.
  • Facilitation de la création d’applications IA génératives avec GitHub Models.

Méthodologies

Les blogs de développeurs experts Java recommandés par IntelliJ : https://blog.jetbrains.com/idea/2024/11/top-java-blogs-for-experienced-programmers/

  • Pas forcément d’accord avec toute la liste.
  • Mais elle donne de bonnes options si vous voulez lire plus de blogs Java.

Keycloak revient au semantic versioning après avoir suivi le versionnage à la Google Chrome : https://www.keycloak.org/2024/10/release-updates

  • Ne pas savoir si une mise à jour était rétrocompatible était problématique pour les utilisateurs.
  • Aussi les librairies clientes seront délivrées séparément et supporteront toutes les versions serveur de keycloak supportés.

Sécurité

Un exemple d’attaque de secure supply chain théorique identifiée dans le Quarkiverse et les détails de la résolution : https://quarkus.io/blog/quarkiverse-and-smallrye-new-release-process/

  • Dans le Quarkiverse, les choses sont automatisées pour simplifier la vie des contributeurs d’extension occasionnels.
  • Mais il y avait un défaut, les secrets de signature et d’accès à maven central étaient des secrets d’organisation.
  • Ce qui veut dire qu’un éditeur d’extension malicieux pouvait écrire un plugin ou un test qui lisait ces secrets et pouvait livrer de faux artifacts.
  • La solution est de séparer la construction des artifacts de l’étape de signature et de release sur maven central.
  • Comme cela les clés ne sont plus accessible.

Avec Okta pus besoin de mot de passe quand tu as un identifiant long :face_with_hand_over_mouth: : https://trust.okta.com/security-advisories/okta-ad-ldap-delegated-authentication-username/

  • LOL !
  • Une vulnérabilité a été découverte dans la génération de la clé de cache pour l’authentification déléguée AD/LDAP.
  • Les conditions :
    • MFA non utilisé,
    • Nom d’utilisateur de 52 caractères ou plus,
    • Utilisateur authentifié précédemment, créant un cache d’authentification,
    • Le cache a été utilisé en premier, ce qui peut se produire si l’agent AD/LDAP était hors service ou inaccessible, par exemple en raison d’un trafic réseau élevé,
    • L’authentification s’est produite entre le 23 juillet 2024 et le 30 octobre 2024.
  • Fixé le 30 octobre 2024.

La revanche des imprimantes !! Linux ne les aime pas, et elles lui rendent bien. https://www.theregister.com/2024/09/26/cups_linux_rce_disclosed/

  • Après quelques heures / jours de rumeurs sur une faille 9.9/10 CVSS, il s’avère que cela concerne que les systèmes avec le système d’impression CUPS et cups-browsed.
  • Désactivez et/ou supprimez le service cups-browsed.
  • Mettez à jour votre installation CUPS pour appliquer les mises à jour de sécurité lorsqu’elles sont disponibles.
  • Envisagez de bloquer l’accès au port UDP 631 et également de désactiver le DNS-SD.
  • Cela concerne la plupart des distributions Linux, certaines BSD, possiblement Google ChromeOS, Solaris d’Oracle et potentiellement d’autres systèmes, car CUPS est intégré à diverses distributions pour fournir la fonctionnalité d’impression.
  • Pour exploiter cette vulnérabilité via internet ou le réseau local (LAN), un attaquant doit pouvoir accéder à votre service CUPS sur le port UDP 631. Idéalement, aucun de vous ne devrait exposer ce port sur l’internet public. L’attaquant doit également attendre que vous lanciez une tâche d’impression.
  • Si le port 631 n’est pas directement accessible, un attaquant pourrait être en mesure de falsifier des annonces zeroconf, mDNS ou DNS-SD pour exploiter cette vulnérabilité sur un LAN.

Loi, société et organisation

La version 1.0 de la définition de l’IA l’Open Source est sortie : https://siliconangle.com/2024/10/28/osi-clarifies-makes-ai-systems-open-source-open-models-fall-short/

  • L’Open Source Initiative (OSI) a clarifié les critères pour qu’un modèle d’IA soit considéré comme open-source : accès complet aux données de formation, au code source et aux paramètres d’entraînement.
  • La plupart des modèles dits “open” comme ceux de Meta (Llama) et Stability AI (Stable Diffusion) ne respectent pas ces critères, car ils imposent des restrictions sur l’utilisation commerciale et ne rendent pas publiques les données de formation.
  • c’est au details de données de formation (donc pas forcement les données elle même : “In particular, this must include: (1) the complete description of all data used for training, including (if used) of unshareable data, disclosing the provenance of the data, its scope and characteristics, how the data was obtained and selected, the labeling procedures, and data processing and filtering methodologies; (2) a listing of all publicly available training data and where to obtain it; and (3) a listing of all training data obtainable from third parties and where to obtain it, including for fee.”).
  • C’est en echo à la version d’open source AI de la Linux Fondation.

En parlant de cela un article sur l’open source washing dans les modèles https://www.theregister.com/2024/10/25/opinion_open_washing/

  • L’open washing désigne la pratique où des entreprises prétendent que leurs produits ou modèles sont open-source, bien qu’ils ne respectent pas les critères réels d’ouverture (transparence, accessibilité, partage des connaissances).
  • De grandes entreprises comme Meta, Google et Microsoft sont souvent accusées d’utiliser cette stratégie, ce qui soulève des préoccupations concernant la clarté des définitions légales et commerciales de l’open source, surtout avec l’essor de l’IA.

Rubrique débutant

Un petit article fondamental sur REST : https://www.sfeir.dev/rest-definition/

  • Thèse de Roy Fielding.
  • En reaction aux protocoles lourds comme SOAP.
  • 5 verbes (GET PUT, POST. DELETE, PATCH).
  • JSON, mais pas que (XML et autre).
  • Pas d’état inter-requêtes.

Ask Me Anything

Morgan de Montréal : Comment faire cohabiter plusieurs dépôts Git ?

Je m’explique : dans mon entreprise, nous utilisons notre dépôt Git (Bitbucket) configuré pour notre dépôt d’entreprise. Lorsque je souhaite contribuer à un projet open source, je suis obligé de modifier ma configuration globale Git (nom d’utilisateur, email) pour correspondre à mon compte GitHub. Il arrive souvent que, lorsque je reviens pour effectuer un commit sur le dépôt d’entreprise, j’oublie que je suis en mode “open source”, ce qui entraîne l’enregistrement de mes configurations “open source” dans l’historique de Bitbucket… Comment gérez-vous ce genre de situation ?

Comment gérer différents profils git : https://medium.com/@mrjink/using-includeif-to-manage-your-git-identities-bcc99447b04b.

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 317 - les nouvelles paramétriques

Posté le 21/10/2024  

De Java 23 à WebAssembly, en passant par l’IA et les design patterns, on a tout passé au crible #java #swift #webassembly #wordpress #webcomponents #llm #mongodb #keycloak #fairsource

Enregistré le 18 octobre 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-317.mp3

News

Langages

Java 23 est sorti ! InfoQ liste toutes les JEPs intégrées à la nouvelle version : https://www.infoq.com/news/2024/09/java23-released/

Et FooJay plonge dans le détail : https://foojay.io/today/java-23-has-arrived-and-it-brings-a-truckload-of-changes/

Un article sur l’API ClassFile qui sera un standard dans le JDK pour manipuler des classes (ala ASM) : https://www.unlogged.io/post/class-file-api-not-your-everyday-java-api

  • Article long, mais qui revient sur les raisons.
  • Notamment parce que ASM est dans le JDK et qu’ils sont un problème de poule et d’œuf.
  • Et sur la forme de l’API.
  • A des exemples d’usage.
  • Tout cela reste en preview dans le JDK.
  • Des optimisations comme le lazy parsing et le constant pool sharing (en gros faire de la reference sur ce qui n’a pas changé).

Tip and Tail is back, cette fois une JEP : https://openjdk.org/jeps/14

  • Plus qu’une keynote provocative au language summit.
  • Maintenant une JEP dite informative.
  • Le langage est un peu flou sur l’objectif.
  • Entre regarder tip and tail pour vos librairies c’est bien.
  • Et adoptons tous le meme tip du JDK jusqu’aux stack applicatives.

Apple annonce la sortie de son langage Swift en version 6 : https://www.swift.org/blog/announcing-swift-6/

  • Nouvelles plateformes : Swift 6 s’étend à de nouvelles plateformes (tous les grands OS déjà supportés), y compris les systèmes embarqués (sous ARM et Risc V).
  • Swift Testing : Swift 6 introduit Swift Testing, une nouvelle bibliothèque de tests conçue pour Swift.
  • Concurrence : Détection de data race en tant qu’erreur de compilation.

Apple annonce travailler sur l’interopérabilité Swift / Java : https://github.com/swiftlang/swift-java

  • Comme jextract mais dans l’autre sens.

The news Java : https://www.infoq.com/news/2024/10/java-news-roundup-oct07-2024/

  • JDK 24 : Un calendrier pour la sortie de JDK 24 a été proposé. La première phase de réduction des fonctionnalités commencera le 5 décembre 2024. La version finale sera disponible le 18 mars 2025.
  • JDK 24 introduira des mises à jour avec deux nouvelles API. La Vector API (JEP 489) facilitera les opérations sur des vecteurs, tandis que la Class-File API (JEP 484) permettra une manipulation plus efficace des fichiers de classes Java.
  • Un changement de sécurité important est proposé avec JEP 486. Il prévoit de désactiver définitivement le Security Manager, qui a été déprécié. Cette décision signifie que cette fonctionnalité ne sera plus disponible dans les futures versions, car elle est considérée comme obsolète.
  • Apache Tomcat et Cassandra : Les nouvelles versions de Tomcat (11.0.0) et de Cassandra (5.0.0) sont sorties. Elles incluent des améliorations et des corrections de bogues.
  • Spring Framework : Des mises à jour pour Spring Framework (versions 3.4.0-M2, 3.3.3 et 3.2.8) ont été publiées. Elles intègrent le support d’une nouvelle API qui aide à la gestion de la mémoire.
  • Quarkus : Red Hat a sorti la version 3.15 de Quarkus, qui apporte des corrections et des améliorations. Une nouvelle version, la 3.16, est prévue pour la fin octobre.
  • Commonhaus Foundation : Une nouvelle organisation, la Commonhaus Foundation, a été créée pour aider les projets open source à être durables. Quarkus a rejoint cette fondation.
  • Cassandra, Camel, LangChain, Micronaut, OpenLiberty, JHipster, Ktor etc.

Design patterns revisited : https://www.youtube.com/watch?v=kE5M6bwruhw

  • Design and design patterns.
  • Optional: patterns and anti-patterns.
  • Iterator pattern.
  • Lightweight Strategy.
  • Factory Method using default methods.
  • Laziness using Lambda Expressions.
  • Decorator using Lambda Expressions.
  • Creating Fluent interfaces.
  • Execute Around Method Pattern.
  • Creating a Closed Hierarchy with sealed classes.

Popularité des langages de programmation : https://www.techspot.com/news/105157-python-most-popular-coding-language-but-challengers-gaining.html

  • Python reste le langage de programmation le plus populaire, surtout dans des domaines comme la science des données et le développement web.
  • Il est apprécié pour sa simplicité et le grand nombre de bibliothèques disponibles, ce qui le rend facile à apprendre et à utiliser.
  • De nombreuses entreprises, y compris des startups, utilisent Python pour diverses applications.
  • Malgré sa dominance, d’autres langages comme JavaScript, Java et Go gagnent en popularité et pourraient défier la position de leader de Python. (Java est monté du poste 4 au 3, en 1 an)
  • Les développeurs qui codent occasionnellement préfèrent Python, montrant ainsi son attrait au-delà des programmeurs professionnels.
  • L’émergence d’outils comme ChatGPT facilite l’accès à la programmation, ce qui pourrait influencer les tendances futures en matière de langages de programmation.

Librairies

Paramétrer ses tests JUnit 5 avec @CsvSource : https://mikemybytes.com/2021/10/19/parameterize-like-a-pro-with-junit-5-csvsource/

  • L’annotation permet d’avoir ses données de test au plus près de la méthode.
  • On écrit les données de test sous forme de CSV (éventuellement avec des délimiteurs de son choix pour plus de lisibilité, pour bien séparer les valeurs).
  • Par exemple -> ou maps to.
  • Les valeurs peuvent être les paramètres de la méthode, mais aussi les valeurs de description du test.

Infrastructure

Turbocharged Development: The Speed and Efficiency of WebAssembly par Danielle Lancashire : https://devsummit.infoq.com/presentation/munich2024/turbocharged-development-speed-and-efficiency-webassembly

  • L’utilisation de WebAssembly avec Serverless. Faire tourner des applications plus facilement dans le cloud. WebAssembly est rapide et sûr pour exécuter du code. Cela aide à déployer les applications plus rapidement et à utiliser moins de ressources.
  • De nombreuses entreprises utilisent WebAssembly pour des tâches comme le traitement d’images et de données. Des plateformes comme Cloudflare Workers et AWS Lambda.
  • La communauté autour de WebAssembly grandit. De nouveaux outils et bibliothèques sont créés.
  • Cependant, il y a encore des défis à relever, comme la compatibilité et les performances. Malgré cela, l’avenir de WebAssembly est prometteur.

Web

C’est la guerre chez Wordpress : https://techcrunch.com/2024/09/26/wordpress-vs-wp-engine-drama-explained/

  • Une boite nommée WP Engine fait du hosting de WordPress mais ne contribue pas.
  • Automatic, les gens derrière WordPress leur ont demandé de résoudre ce problème, soit en payant des droits de trademark soit en contribuant de l’engineering upstream à auteur de 8% de leurs revenus.
  • WP Engine dit non.
  • Automatic coupe l’accès aux mises à jour de thèmes et de plugins à WP Engine mettant des sites à risque (sécurité).
  • WP Engine dit que c’est un abus de position du CEO d’Automatic sur les accès WordPress.org.
  • Bref c’est le drame.
  • Le CEO d’Automatic propose à ses employés six mois de salaire s’ils ne sont pas d’accord avec la stratégie (https://www.cio.com/article/3550331/one-twelfth-of-automattic-staff-leave-over-wordpress-wp-engine-spat.html).
  • 8% ont pris l’offre.

Les WebComposants ne sont pas le futur : https://dev.to/ryansolid/web-components-are-not-the-future-48bh

  • Un article d’un auteur proéminent de framework JavaScript.
  • Discute les avantages et les inconvénients de la standardisation.
  • Qui permet d’élever le débat, mais aussi bloque des avenues d’optimisations.
  • Beaucoup d’exemples d’innovations en frameworks JS qui auraient été bloqués.
  • Les commentaires apres l’article sont intéressants aussi (en contre perspective).
  • Mais tout le monde n’est pas d’accord avec cet article : https://www.abeautifulsite.net/posts/web-components-are-not-the-future-they-re-the-present/.

Data et Intelligence Artificielle

Conseils et bonnes pratiques lors de l’intégration de LLM dans une application : https://glaforge.dev/posts/2024/09/23/some-good-practices-when-integrating-an-llm-in-your-application/

  • Management de prompt effectif.
  • Versionnage et externalisation des prompts.
  • Fixer la version des modèles.
  • Optimisation et caching.
  • Mettre en place des rails de sécurité.
  • Évaluer et monitorer le comportement et la performance.
  • Prioriser la sécurité des données privées.

Encore une nouvelle version de LangChain4j, avec la version 0.35 ! Guillaume couvre les nouveautés côté Gemini et Google Cloud : https://glaforge.dev/posts/2024/09/29/lots-of-new-cool-gemini-stuff-in-langchain4j/

  • Support des toutes nouvelles versions de Gemini 1.5 (version 002).
  • Un “document loader” pour charger des documents à partir de Google Cloud Storage.
  • Un “scoring model” qui permet de faire du “reranking” de résultat, pour trouver les résultats les plus pertinents pour une requête donnée.
  • Support de nouveaux paramètres des embedding models (choix de la dimensionalité des vecteurs, du troncage des textes en entrée).
  • Ajout d’un “embedding model” pour le module Google AI Gemini.
  • Un estimateur de token pour Google AI Gemini.
  • Support des chat listeners.
  • Support des enums pour la sortie structurée JSON.
  • Et plein de mise à jour de la documentation pour refléter tous ces changements et additions.

Self Correction Algo LLM : https://www.infoq.com/news/2024/10/google-deepmind-score/

  • Google DeepMind a récemment publié SCoRe, une nouvelle méthode d’auto-correction pour les modèles de langage (LLM). Elle améliore la capacité des LLM à corriger leurs erreurs lorsqu’ils résolvent des problèmes de mathématiques ou de programmation.
  • Contrairement aux méthodes antérieures, SCoRe utilise des données générées par le modèle lui-même pour créer des dialogues d’auto-correction. Cela permet au modèle de s’améliorer via un processus d’apprentissage par renforcement (RL) en deux étapes.
  • Les modèles ajustés avec cette technique ont montré des améliorations significatives, surpassant les performances des modèles de base.
  • Cette méthode pourrait ouvrir de nouvelles pistes pour rendre les LLM plus précis et robustes dans leurs réponses.

MongoDB 8 est sorti : https://www.mongodb.com/products/updates/version-release

  • La version 8.0 est plus rapide, avec des lectures plus rapides, une meilleure gestion des mises à jour et des agrégations de séries temporelles jusqu’à 60 % plus rapides.
  • De nouvelles fonctionnalités incluent le support des Query pour les données chiffrées, rendant le traitement des données sensibles plus facile.
  • Beaucoup d’améliorations pour la performance et scalabilité.

Guillaume explore les techniques avancées de Retrieval Augmented Generation pour améliorer la qualité des résultats de recherche dans ses propres documents, avec les LLMs : https://glaforge.dev/talks/2024/10/14/advanced-rag-techniques/

  • Présentations et vidéos données lors de la conférence Devoxx Belgique.
  • Code des exemples disponibles sur GitHub.
  • Techniques de chunking : sliding window, hypothetical questions, semantic chunking, context retrieval chunking.
  • Techniques de retrieval : hypothetical document embedding, query compression, metadata filtering.

Outillage

Article sur les cache alias en Infinispan : https://infinispan.org/blog/2024/10/07/cache-aliases-redis-databases

  • Explique comment on peut utiliser Infinispan pour remplacer Redis.
  • Explique la différence entre les database de Redis et les caches d’Infinispan.
  • Explique l’utilité des alias en général.
  • Explique comment on peut avoir un mapping des databases de Redis vers des caches d’Infinispan.

Sécurité

Keycloak 26 est sorti : https://www.keycloak.org/2024/10/keycloak-2600-released

  • Organizations feature : permet aux administrateurs de créer et gérer des structures organisationnelles, facilitant la gestion des rôles et des permissions.
  • Persistent user sessions : les sessions des utilisateurs sont maintenant stockées par défault dans la base de donnée ce qui améliore la cohérence, surtout avec plusieurs instances.
  • Login Theme : offre un design plus propre et une option de mode sombre qui s’adapte aux préférences des utilisateurs.
  • L’amélioration du déploiement multi-sites renforce la fiabilité et réduit le temps d’arrêt lors des demandes des utilisateurs.
  • Admin recovery : une méthode simple pour récupérer l’accès administrateur si tous les comptes sont bloqués, en créant un compte temporaire via des variables d’environnement.
  • Pour les utilisateurs qui migrent vers cette version, il est important de prêter attention aux changements liés à la gestion des caches et aux sessions persistantes.

Loi, société et organisation

Introduction des licences fair source : https://techcrunch.com/2024/09/22/some-startups-are-going-fair-source-to-avoid-the-pitfalls-of-open-source-licensing/

  • Certaines startups utilisent des licences “fair source” pour partager leur code tout en protégeant leurs intérêts commerciaux.
  • Les licences FSL (Functional Source License) et BUSL (Business Source License) permettent d’ouvrir le code après 2 ou 4 ans.
  • Ces licences empêchent les concurrents de vendre des produits similaires tout de suite, offrant une protection temporaire.
  • Certains critiques pensent que ces licences sont compliquées et pourraient limiter l’innovation, car elles ne sont pas totalement ouvertes.
  • Le “fair source” est encore un nouveau concept, mais il pourrait devenir un bon compromis entre open source et logiciel privé.
  • Définition de fair source : code lisible publique, peut être utilisé et modifié avec des “restrictions minimales” pour protéger le business model du producteur ; et devient open source de manière déferrée.
  • “any purpose other than a Competing Use. A Competing Use means use of the Software in or for a commercial product or service that competes with the Software or any other product or service we offer using the Software as of the date we make the Software available”.

Outils de l’épisode

Un petit outil sympa pour les utilisateurs de Macs avec un écran “wide”, pour partager un écran virtuel : https://github.com/Stengo/DeskPad

  • Les écrans larges sont partagés entièrement et cela fait un rendu 16:9 pour les gens qui le voient.
  • Cet écran acte comme un écran, mais il est virtuel et on peut mettre les applications que l’on veut dedans.
  • On ne l’a pas testé.

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 316 - Devoxx Belgique 2024 - On rase gratis

Posté le 13/10/2024  

Cet épisode est une série de mini-interviews et de mini-moments capturés tout au long de Devoxx Belgique 2024.

Enregistré le 11 octobre 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-316.mp3

Interview

Présentation JBang

Devoxx4kids

Livre LangChain4j par Antonio aussi disponible sur Amazon.
Toutes les présentations LangChain4j

Keynote Brian Goetz sur la complexité et les fonctionnalités de Java
Keynote sur les plateformes

Presentation sur Jakarta Data and Jakarta Persistence par Gavin King

Presentation sur Gradle 9 par Louis Jacomet

JEP 14

Presentation sur DevoxxGenie

NotebookLM

Presentation sur 1BRC (one billion rows challenge
Deep dive sur 1BRC

Presentation code review
Presentation sur Developer Productivity Engineering
Presentation sur Developer Productivity Engineering de Trisha

Presentation IntelliJ en tant que moteur de jeu

Microcks

Presentation Intelligent GitHub bots

Presentation Quarkus et LangChain4j
Presentation Guillaume sur RAG
Deep Dive sur LangChain4j et sur Quarkus + LangChain4j
Presentation Agentic application avec LangChain4j et Quarkus

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 315 - les températures ne sont pas déterministes

Posté le 16/09/2024  

JVM summit, virtual threads, stacks applicatives, licences, déterminisme et LLMs, quantification, deux outils de l’épisode et bien plus encore.

Enregistré le 13 septembre 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-315.mp3

News

Langages

Netflix utilise énormément Java et a rencontré un problème avec les Virtual Thread dans Java 21. Les ingénieurs de Netflix analysent ce problème dans cet article : https://netflixtechblog.com/java-21-virtual-threads-dude-wheres-my-lock-3052540e231d

  • Les threads virtuels peuvent améliorer les performances, mais posent des défis.
  • Un problème de locking a été identifié : les threads virtuels se bloquent mutuellement.
  • Cela entraîne des performances dégradées et des instabilités.
  • Netflix travaille à résoudre ces problèmes et à tirer pleinement parti des threads virtuels.

Une syntax pour indiquer qu’un type est nullable ou null-restricted arriverait dans Java https://bugs.openjdk.org/browse/JDK-8303099

  • Foo! interdirait null.
  • Foo? indiquerait que null est accepté.
  • Foo?[]! serait un tableau non-null de valeur nullable.
  • Il y a aussi des idées de syntaxe pour initialiser les tableaux null-restricted.
  • JEP: https://openjdk.org/jeps/8303099.

Les vidéos du JVM Language Summit 2024 sont en ligne https://www.youtube.com/watch?v=OOPSU4LnKg0&list=PLX8CzqL3ArzUEYnTa6KYORRbP3nhsK0L1

  • Project Leyden Update.
  • Project Babylon - Code Reflection.
  • Valhalla - Where Are We? .
  • An Opinionated Overview on Static Analysis for Java Rethinking Java String Concatenation.
  • Code Reflection in Action - Translating Java to SPIR-V Java in 2024.
  • Type Specialization of Java Generics - What If Casts Have Teeth ? (avec notre Rémi Forax national !).
  • Aussi tip or tail pour tout l’écosystème.
  • Quelques liens sur Babylon : Code reflection pour exprimer des langages étrangers (SQL) dans Java (https://openjdk.org/projects/babylon/) et son exemple en emulation de LINQ (https://openjdk.org/projects/babylon/articles/linq).

Librairies

Micronaut sort sa version 4.6 https://micronaut.io/2024/08/26/micronaut-framework-4-6-0-released/

  • essentiellement une grosse mise à jour de tonnes de modules avec les dernières versions des dépendances

Microprofile 7 va faire quelques changements et évolutions incompatibles https://microprofile.io/2024/08/22/microprofile-7-0-release/#general

  • Remplacement de Metrics par Telemetry (metrics, log et tracing).
  • Metrics reste une spec mais standalone.
  • Microprofile 7 depend de Jakarta Core profile et ne le package plus.
  • Microprofile OpenAPI 4 et Telemetry 2 amènent des changements incompatibles.

Quarkus 3.14 avec LetsEncrypt et des sérialiseurs Jackson sans reflection https://quarkus.io/blog/quarkus-3-14-1-released/

  • Hibernate ORM 6.6.
  • Sérialiseurs Jackson sans reflection.
  • Installation simple des certificats LetsEncrypt (notamment avec la ligne de commande qui aide).
  • Sympa notamment avec ngrok pour faire un tunnel vers son localhost.
  • Rétropédalage sur @QuarkusTestResource vs @WithTestResource suite aux retours de OOME et lenteur des tests mieux isolés.

Les logs structurés dans Spring Boot 3.4 https://spring.io/blog/2024/08/23/structured-logging-in-spring-boot-3-4

  • Les logs structurés (souvent en JSON) vous permettent de les envoyer facilement vers des backends comme Elastic, AWS CloudWatch…
  • Vous pouvez les lier à du reporting et de l’alerting.
  • Spring Boot 3.4 prend en charge la journalisation structurée par défaut. Il prend en charge les formats Elastic Common Schema (ECS) et Logstash, mais il est également possible de l’étendre avec vos propres formats.
  • Vous pouvez également activer la journalisation structurée dans un fichier. Cela peut être utilisé, par exemple, pour imprimer des journaux lisibles par l’homme sur la console et écrire des journaux structurés dans un fichier pour l’ingestion par machine.

Infrastructure

CockroachDB, qui avait une approche Business Software License (source available puis ALS 3 ans apres), passe maintenant en license propriétaire avec source available https://www.cockroachlabs.com/blog/enterprise-license-announcement/

Polyform project offre des licences standardisées selon les besoins de gratuit vs payant https://polyformproject.org/

Cloud

Azure fonctions, comment le démarrage à froid est optimisé https://www.infoq.com/articles/azure-functions-cold-starts/

  • Les fonctions ont une latence naturelle forte.
  • Toutes les latences ne sont pas impactantes pour le business.
  • Les démarrages à froid peuvent être mesurés avec les outils du cloud provider, donc faites en usage.
  • Faites des tests de latences.
  • Expérience : 381 ms cold et 10ms après.
  • Tracing pour la latence end-to-end.
  • Les strategies :
    • Keep alive pings : réveiller la fonction à intervalles réguliers pour rester “warm”.
    • Dans le code de la fonction : initialiser les connections et le chargement des assemblies dans l’initialisation.
    • Configurer dans host.json le batching, désactiver le file system logging…
    • Déployer les fonctions en tant que ZIPs.
    • Réduire la taille du code et des fichiers (qui sont copiés sur le serveur froid).
    • Sur .NET, activer ReadyToRun qui aide le compilateur JIT.
    • Les instances Azure avec plus de CPU et de mémoire sont plus chères, mais baissent le cold start.
    • Instances Azure dédiées pour vos fonctions (pas partagées avec les autres tenants).
  • ensuite montre des exemples concrets

Web

Sortie de Vue.js 3.5 https://blog.vuejs.org/posts/vue-3-5

  • Vue.JS 3.5 : Nouveautés clés
  • Optimisations de performance et de mémoire :
    • Réduction significative de la consommation de mémoire (-56%).
    • Amélioration des performances pour les tableaux réactifs de grande taille.
    • Résolution des problèmes de valeurs calculées obsolètes et de fuites de mémoire.
  • Nouvelles fonctionnalités :
    • Reactive Props Destructure : Simplification de la déclaration des props avec des valeurs par défaut.
    • Lazy Hydration : Contrôle de l’hydratation des composants asynchrones.
    • useId() : Génération d’ID uniques stables pour les applications SSR.
    • data-allow-mismatch : Suppression des avertissements de désynchronisation d’hydratation.
    • Améliorations des éléments personnalisés : Prise en charge de configurations d’application, d’API pour accéder à l’hôte et au shadow root, de montage sans Shadow DOM, et de nonce pour les balises.
    • useTemplateRef() : Obtention de références de modèle via l’API useTemplateRef().
    • Teleport différé : Téléportation de contenu vers des éléments rendus après le montage du composant.
    • onWatcherCleanup() : Enregistrement de callbacks de nettoyage dans les watchers.

Data et Intelligence Artificielle

On entend souvent parler de Large Language Model quantisés, c’est-à-dire qu’on utilise par exemple des entiers sur 8 bits plutôt que des flottants sur 32 bits, pour réduire les besoins mémoire des GPU tout en gardant une précision proche de l’original. Cet article explique très visuellement et intuitivement ce processus de quantisation : https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization

Guillaume continue de partager ses aventures avec le framework LangChain4j. Comment effectuer de la classification de texte : https://glaforge.dev/posts/2024/07/11/text-classification-with-gemini-and-langchain4j/

Pour faire varier la prédictibilité ou la créativité des LLMs, certains hyperparamètres peuvent être ajustés, comme la température, le top-k et le top-p. Mais est-ce que vous savez vraiment comment fonctionnent ces paramètres ? Deux articles très clairs et intuitifs qui expliquent leur fonctionnement : https://medium.com/google-cloud/is-a-zero-temperature-deterministic-c4a7faef4d20, https://medium.com/google-cloud/beyond-temperature-tuning-llm-output-with-top-k-and-top-p-24c2de5c3b16

  • La température va écraser la probabilité du prochain token, mais il reste des variables : approximation des calculs flottants, stacks différentes effectuant ces choix différemment, que faire en cas d’égalité de probabilité entre deux tokens.
  • Mais il y a d’autres approches de configuration des réactions du LLM : top-k, qui évite les tokens peu frequents, et top-p pour avoir les n tokens qui totalisent p% des probabilités.
  • Température d’abord, puis top-k, et ensuite top-p.
  • Explique quoi utiliser quand.

L’OSI propose une definition de l’IA open source https://www.technologyreview.com/2024/08/22/1097224/we-finally-have-a-definition-for-open-source-ai/

  • Gros débats ces derniers mois.
  • Utilisable pour tous les usages sans besoin de permission.
  • Les chercheurs peuvent inspecter les composants et étudier comment le système fonctionne.
  • Le système est modifiable pour tout objectif, y compris changer son comportement.
  • Et partager avec d’autres avec ou sans modification quelque soit l’usage.
  • Définit des niveaux de transparence (donnees d’entraînement, code source, poids).

Une longue rétrospective de PostgreSQL à des volumes de malades et les problèmes de lock https://ardentperf.com/2024/03/03/postgres-indexes-partitioning-and-lwlocklockmanager-scalability/

  • Un article pour vous rassurer que vous n’aurez probablement jamais le problème.
  • Histoire sous forme de post mortem.
  • Des conseils pour éviter ces falaises.

Outillage

Un premier coup d’œil à la future notation déclarative de Gradle https://blog.gradle.org/declarative-gradle-first-eap

  • Un article qui explique à quoi ressemble cette nouvelle syntaxe déclarative de Gradle (en plus de Groovy et Kotlin).
  • Quelques vidéos montrent le support dans Android Studio (pour le moment) ainsi que dans un outil expérimental, en attendant le support dans tous les IDEs.
  • L’idée est d’éviter le scripting et d’avoir vraiment qu’une description de son build.
  • Cela devrait améliorer la prise en charge de Gradle dans les IDEs et permettre d’avoir de la complétion rapide, etc.
  • C’est moi ou on a Maven là ?

Support de Firefox dans Puppeteer https://hacks.mozilla.org/2024/08/puppeteer-support-for-firefox/

  • Puppeteer, la bibliothèque d’automatisation de navigateur, supporte désormais officiellement Firefox dès la version 23.
  • Cette avancée permet aux développeurs d’écrire des scripts d’automatisation et d’effectuer des tests de bout en bout sur Chrome et Firefox de manière interchangeable.
  • L’intégration de Firefox dans Puppeteer repose sur WebDriver BiDi, un protocole inter-navigateurs en cours de standardisation au W3C.
  • Le WebDriver BiDi facilite la prise en charge de plusieurs navigateurs et ouvre la voie à une automatisation plus simple et plus efficace.
  • Les principales fonctionnalités de Puppeteer, telles que la capture de journaux, l’émulation de périphériques, l’interception réseau et le préchargement de scripts, sont désormais disponibles pour Firefox.
  • Mozilla considère WebDriver BiDi comme une étape importante vers une meilleure expérience de test inter-navigateurs.
  • La prise en charge expérimentale de CDP (Chrome DevTools Protocol) dans Firefox sera supprimée fin 2024 au profit de WebDriver BiDi.
  • Bien que Firefox soit officiellement pris en charge, certaines API restent non prises en charge et feront l’objet de travaux futurs.

Guillaume a créé une annotation @Retry pour JUnit 5, pour retenter l’exécution d’un test qui est “flaky” https://glaforge.dev/posts/2024/09/01/a-retryable-junit-5-extension/

Architecture

Un ancien fan de GraphQL en a fini avec la technologie GraphQL et réfléchit aux alternatives https://bessey.dev/blog/2024/05/24/why-im-over-graphql/

  • Problèmes de GraphQ L:
    • Sécurité :
      • Attaques d’autorisation
      • Difficulté de limitation de débit
      • Analyse de requêtes malveillantes
    • Performance :
      • Problème N+1 (récupération de données et autorisation)
      • Impact sur la mémoire lors de l’analyse de requêtes invalides
    • Complexité accrue :
      • Couplage entre logique métier et couche de transport
      • Difficulté de maintenance et de tests
  • Solutions envisagées :
    • Adoption d’API REST conformes à OpenAPI 3.0+
      • Meilleure documentation et sécurité des types
      • Outils pour générer du code client/serveur typé
    • Deux approches de mise en œuvre d’OpenAPI :
      • “Implementation first” (génération de la spécification à partir du code)
      • “Specification first” (génération du code à partir de la spécification)
  • retour intéressant de quelqu’un qui n’utilise pas GraphQL au quotidien. C’étaient des problèmes qui devaient être corrigés avec la maturité de l’écosystème et des outils, mais ça a montré ses limites pour cette personne.

Presentation de Grace Hopper en 1980 sur le futur des ordinateurs https://youtu.be/AW7ZHpKuqZg?si=w_o5_DtqllVTYZwt

  • C’est fou la modernité de ce qu’elle décrit.
  • Des problèmes qu’on a encore aujourd’hui.
  • Positive leadership.
  • Elle décrit l’avantage de systèmes fait de plusieurs ordinateurs.
  • Récemment déclassifié.

Leader election avec les conditional writes sur les buckets S3/GCS/Azure https://www.morling.dev/blog/leader-election-with-s3-conditional-writes/

  • L’élection de leader est le processus de choisir un nœud parmi plusieurs pour effectuer une tâche.
  • Traditionnellement, l’élection de leader se fait avec un service de verrouillage distribué comme ZooKeeper.
  • Amazon S3 a récemment ajouté le support des écritures conditionnelles, ce qui permet l’élection de leader sans service séparé.
  • L’algorithme d’élection de leader fonctionne en faisant concourir les nœuds pour créer un fichier de verrouillage dans S3.
  • Le fichier de verrouillage inclut un numéro d’époque, qui est incrémenté à chaque fois qu’un nouveau leader est élu.
  • Les nœuds peuvent déterminer s’ils sont le leader en listant les fichiers de verrouillage et en vérifiant le numéro d’époque.
  • Attention : il peut y avoir plusieurs leaders élus (horloges qui ont dérivé) donc c’est à gérer aussi.

Méthodologies

Guillaume Laforge interviewé par Sfeir, où il parle de l’importance de la curiosité, du partage, de l’importance de la qualité du code, et parsemé de quelques photos des Cast Codeurs ! https://www.sfeir.dev/success-story/guillaume-laforge-maestro-de-java-et-esthete-du-code-propre/

Sécurité

Comment crowdstrike met à genoux windows et de nombreuses entreprises https://next.ink/144464/crowdstrike-donne-des-details-techniques-sur-son-fiasco/

Les benchmarks CIS, un pilier pour la sécurité de nos environnements cloud, et pas que ! (Katia HIMEUR TALHI) https://blog.cockpitio.com/security/cis-benchmarks/

  • Le CIS est un organisme à but non lucratif qui élabore des normes pour améliorer la cybersécurité.
  • Les référentiels CIS sont un ensemble de recommandations et de bonnes pratiques pour sécuriser les systèmes informatiques.
  • Ils peuvent être utilisés pour renforcer la sécurité, se conformer aux réglementations et normaliser les pratiques.

Loi, société et organisation

Microsoft signe un accord avec OVHCloud pour qu’ils arrêtent leur plainte d’antitrust https://www.politico.eu/article/microsoft-signs-antitrust-truce-with-ovhcloud/

  • La plainte était en Europe.
  • Permet à des clients de plus facilement déployer les solutions Microsoft dans le fournisseur de cloud de leur choix.
  • La plainte avait été posée à l’été 2021.
  • Ça rendait à faire tourner les solutions MS plus chères et non compétitives vs MS.

ElasticSearch et Kibana sont de nouveau Open Source, en ajoutant la license AGPL à ses autres licences existantes https://www.elastic.co/fr/blog/elasticsearch-is-open-source-again

Outils de l’épisode

MailMate un client email Markdown et qui gère beaucoup d’emails https://medium.com/@nicfab/mailmate-a-powerful-client-email-for-macos-markdown-integrated-email-composition-e218fe2accf3

  • Emmanuel l’utilise sur ses boites email secondaires.
  • Un peu lent à démarrer (synchro) et le reste est rapide.
  • Boîtes virtuelles (par requête).
  • SpamSieve.
  • Que macOS je crois.

Trippy, un analyseur de réseau https://github.com/fujiapple852/trippy

  • Il regroupe dans une CLI traceroute et ping.

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 314 - 1000 fois 1000 dépendances

Posté le 16/07/2024  

Emmanuel, Guillaume et Arnaud discutent des nouvelles de l’été. JEPs, transactional outbox pattern avec Spring, LLM dans Chrome, faille polyfill.io, TOTP, congés illimités et IDE payant ou pas payant ?

Enregistré le 12 juillet 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-314.mp3

News

Langages

Les fonctionnalités de JDK 23 ont été figées début juin (release prévue en septembre) https://openjdk.org/projects/jdk/23/ https://www.youtube.com/watch?v=kzjGp7LmW0I

  • JEPs finales:
    • 467: Markdown Documentation Comments
    • 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal
    • 474: ZGC: Generational Mode by Default
  • JEPs en incubation / preview
    • 455: Primitive Types in Patterns, instanceof, and switch (Preview)
    • 466: Class-File API (Second Preview)
    • 469: Vector API (Eighth Incubator)
    • 473: Stream Gatherers (Second Preview)
    • 476: Module Import Declarations (Preview)
    • 477: Implicitly Declared Classes and Instance Main Methods (Third Preview)
    • 480: Structured Concurrency (Third Preview)
    • 481: Scoped Values (Third Preview)
    • 482: Flexible Constructor Bodies (Second Preview)

Librairies

Le transactional outbox pattern avec Spring Boot https://www.wimdeblauwe.com/blog/2024/06/25/transactional-outbox-pattern-with-spring-boot/

  • Transactional outbox permet d’éviter des 2PC ou des désynchronisations de resources : typiquement un commit dans une base et un envoi de message dans un bus.
  • on écrit le message dans une table de la base de données, et un process séparé récupère les messages et les envoient dans le bus.
  • Implémentation utilise Spring Integration
  • Dans l’article, la seconde resource est l’envoie d’email.
  • Montre une approche de tests.
  • Le flow décrivant Spring Integration n’est pas super trivial à lire quand on n’est pas familier. Mais cela poll la table toutes les secondes et envoi un email puis, en cas de succès de l’appel de service, supprime le message de la table.
  • Deuxième exemple avec Spring Modulith qui a un event bus interne qui peut être persisté.
  • Décrit les differences avec Spring Integration et les limites de l’approche Modulith (message order, retry etc).

Comment tester des valeurs de propriétés différentes dans un test Quarkus https://quarkus.io/blog/overriding-configuration-from-test-code/

  • On a tendance à ne pas tester les propriétés de config.
  • Ce blog montre 5 (enfin 4 utiles) façons de le faire avec Quarkus.
  • Les profils de test, mocker l’objet de config, les test components (experimental), l’injection dans les constructeurs.

Quarkus 3.12 https://quarkus.io/blog/quarkus-3-12-0-released/

  • centralisation des configs TLS,
  • support pour le load shedding (reject requests on service overload),
  • événements JFR specific a Quarkus,
  • native image agent,
  • support Spring Boot 3 (compat layer),
  • support Kotlin 2,
  • etc

Cloud

On vous parlait dans un épisode précédent de ce problème de coûts S3 sur des requêtes non autorisées. C’est Graphana Loki qui a mis ce problème sous les projecteurs https://grafana.com/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/

  • le problème venait des valeurs par défaut des buckets déclarés dans le chart helm de Loki, en particulier celui nommé ‘chunks’

Data et Intelligence Artificielle

Guillaume avait partagé l’information sur la disponibilité prochaine d’un minimodèle LLM dans Chrome. C’est maintenant une réalité et vous pouvez le tester. https://ai-sdk-chrome-ai.vercel.app/

  • Nécessite Chrome 127 (version stable à partir de mi-juillet).
  • Utilise le SDK Vercel AI.

Guillaume nous parle de toutes les nouveautés liées au modèle Gemini de Google dans la dernière release de LangChain4j https://glaforge.dev/posts/2024/07/05/latest-gemini-features-support-in-langchain4j/

Outillage

1% des utilisateurs de Maven Central utilisent 83% de sa bande passante. Installez un repository manager qui fait proxy (et cela pour tous les types de dépendances)!!! https://www.sonatype.com/blog/maven-central-and-the-tragedy-of-the-commons

  • Rien n’est réellement gratuit et l’abus d’une minorité peut nuire à l’ensemble.
  • Cela fait maintenant plus de 20 ans que les communautés le répète : installer un gestionnaire de dépendances dans votre infrastructure (Nexus, Artifactory, CodeArtifact, …). En plus de protéger le bien commun cela vous permet de raffiner le filtrage des dépendances, d’assurer la reproductibilité de vos builds, d’optimiser les performances (et réduire les coûts) en ne téléchargeant que depuis votre propre infrastructure…
  • Maven Central est un commun qui ne coûte rien à l’utilisateur.
  • Mais qui est indispensable à tous.
  • 1000 milliards de téléchargements l’année dernière.
  • 83% de la bande passante consommée par 1% des IPs.
  • Beaucoup des ces IP viennent des companies les plus grandes.
  • Proxy pour réduire charge sur central, réduire couts ingress/egress.
  • Ils vont implementer un mécanisme de throttling.
  • Question est-ce que la concentration des IPs veut juste dire que c’est le dernier nœud, mais que cacher n’est pas effectif pour eux et qu’il y a des milliers de clients derrière une IP ?
  • Le trotting ferait mal.
  • Et le proxy ne marche plus dans un monde ou le dev est dans le cloud et distribue géographiquement.

Comment mettre en place backstage, ici avec un projet Spring Boot utilisant CircleCi, Renovate, SonarCloud… https://piotrminkowski.com/2024/06/13/getting-started-with-backstage/

  • Cet article explique comment utiliser backstage pour fournir à vos équipes un template d’une application Spring Boot.
  • Elle est automatiquement créée sous forme d’un repository git(hub) avec les integrations classiques pour gérer la CI (via CircleCI), la qualité (via SonarCloud), la mise à jour de dépendances (via Renovate) et bien sûr son référencement sur le portail backstage.
  • Tutoriel très complet.
  • Très facilement remplaçable pour un project avec votre technologie préférée (pas spécifique à Spring Boot ou Java).

Architecture

Que se passe-t-il quand vous faites un push sur GitHub ? https://github.blog/2024-06-11-how-we-improved-push-processing-on-github/

  • GitHub explique comment ils ont amélioré leur architecture, notamment en mettant en place Kafka pour distribuer les actions qui découlent d’un push sur GitHub.
  • Parallélisation des tâches (avant séquentiel)
  • Limitation des dépendances entre étapes effectuées lors d’un push.
  • Plus de tâches peuvent faire un retry.
  • Un classique de decoupling via un EDA.

Sécurité

Attaque du CDN polyfill.io https://sansec.io/research/polyfill-supply-chain-attack

  • Polyfill permet le support de nouvelles fonctionnalités dans les anciens navigateurs.
  • Servi par CDN notamment.
  • Une société chinoise a acheté le domaine et le GitHub.
  • Et injecte du malware qui pointe sur des serveurs qui servent le malware de manière selective (device, admin ou pas, heure de la journée).
  • Fastly et Cloudflare ont des déploiements alternatifs.

Une faille de sécurité, de type Remote Code Execution, vieille de 10ans, dans CocoaPods, un gestionnaire de dépendances très utilisé dans le monde Apple (macOS et iOS) https://securityboulevard.com/2024/07/cocoapods-apple-vulns-richixbw/

  • https://cocoapods.org/ est un gestionnaire de dépendances pour les projets Xcode. Les dépendances (Pods) sont publiées sous forme de Specs qui sont référencées dans un Specs Repo (une sorte de Maven central, mais seulement avec des métadonnées).
  • CVE-2024-38366 est une vulnérabilité de type remote code execution avec un score CVSS de 10.
  • La faille existait depuis 10 ans et a été corrigée en septembre 2023. Elle permettait d’avoir un accès root sur trunk.cocoapods.org qui stocke les Specs. Elles auraient donc pu être modifiées sans que les auteurs s’en aperçoivent.
  • Pas de preuve pour l’instant que la faille ait été exploitée.

Mieux comprendre la double authentification avec TOTP https://hendrik-erz.de/post/understanding-totp-two-factor-authentication-eli5

  • Cet article revient sur le fonctionnement de TOTP et comment l’implémenter avec des exemples en python.
  • Le QR code est une URL qui contient : le secret en base 32. le nom du totp, qui a fourni le TOTP, combien de chiffres et la durée de vie du TOTP.
  • Pour générer les chiffres, prends le secret, le temps et hash le tout, prendre 4 bytes et les convertir le chiffre.
  • Typiquement le serveur génère les deux d’avant, les deux d’après et le courant pour comparer.

Loi, société et organisation

L’équipe Apache Maven gagne le troisième prix BlueHats https://nlnet.nl/bluehatsprize/2024/3.html

  • le projet remporte un gain de 10000€.
  • Ce prix est organisé par le gouvernement français afin de récompenser les projets open sources les plus impactants.

La clause de congés illimités en Europe https://www.osborneclarke.com/insights/why-your-unlimited-vacation-policy-may-be-of-limited-use-in-europe

  • Les politiques de congés illimités, populaires aux États-Unis, ne sont pas aussi avantageuses en Europe.
  • En Europe, les employeurs doivent suivre les congés pris pour respecter les minima légaux de quatre semaines par an donc ils ne peuvent pas economiser sur le faire de ne plus les gérer.
  • Les congés illimités permettent aux US de ne plus à devoir les payer au départ de l’employé. En Europe les employeurs doivent payer les congés non utilisés lors de la fin du contrat.
  • Les employés européens pourraient prendre davantage de congés, car ils sont mieux protégés contre le licenciement.
  • Les jours de maladie sont plus cadrés en europe. Un employé qui souffre d’une maladie longue pourrait utiliser les congés illimités, mais ce ne sont pas les mêmes règles qui s’appliquent.

OpenDNS n’est plus disponible en France et au Portugal https://support.opendns.com/hc/en-us/articles/27951404269204-OpenDNS-Service-Not-Available-To-Users-In-France-and-Portugal

  • A priori Cisco qui opère openDNS en a marre des demandes de restrictions spécifiques à nos pays.
  • Cisco préfère donc retirer entièrement l’accès au service plutôt que de se conformer à la énième demande de restrictions qui faisait suite à la plainte du groupe Canal+ portant sur l’accès à des sites illicites de streaming pour du sport.

Ask Me Anything

Salut ! Êtes-vous plutôt IDE payants (ex : IntelliJ IDEA Ultimate, ou des plugins payants), ou ne jurez-vous que par des outils gratuits ? Un peu des deux ? Si adéptes du payant, ça ne vous déprime pas qu’un nombre considérable d’employeurs rechignent à nous payer nos outils ? Que “de toute façon VSCode c’est gratuit” (à prononcer avec une voix méprisante) ? Quid du confort, ou de la productivité et/ou qualité accrue quand on maîtrise de tels outils ? Merci !

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 313 - 313 CCL

Posté le 15/06/2024  

Katia, Guillaume, Emmanuel et Antonio discutent Kotlin, Micronaut, Spring Boot, Quarkus, Langchain4j, LLMs en Java, builds reproductibles et la question AMA du jour, comment fait-on carrière de dev à 40 ans ?

Enregistré le 14 juin 2024

Téléchargement de l’épisode LesCastCodeurs-Episode-313.mp3

News

Langages

Android avec Kotlin Multiplatform our Flutter avec Dart ? https://developers.googleblog.com/en/making-development-across-platforms-easier-for-developers/

  • Des licenciements ont continué chez Google et l’équipe Flutter/Dart comme plein d’autres ont été touchées, mais sur les réseaux sociaux les gens ont pensé que Google désinvestissait dans Flutter et Dart.
  • Par ailleurs, côté Android, ils poussent plutôt du côté de Kotlin et KMP, mais naturellement aussi les gens se sont demandé si Google avait pris parti pour pousser plus Kotlin/KMP plutôt que Flutter/Dart.
  • Pour essayer de mieux faire comprendre aux développeurs l’intérêt des deux plateformes, et leurs avantages et inconvénients, les directeurs des deux plateformes ont rédigé un article commun.
  • Si l’on souhaite une expérience plus proche du hardware et des dernières nouveautés d’Android, et d’avoir aussi une UI/UX vraiment native Android, mieux vaut aller du côté de Kotlin/KMP.
  • Si l’on souhaite par contre une expérience multiplateforme Web, mobile, desktop avec une UX commune cross-plateforme, avec également le partage de business logic à partir d’une même base de code, Flutter et Dart sont plus adaptés.

Recap de KotlinConf https://x.com/gz_k/status/1793887581433971083?s=46&t=C18cckWlfukmsB_Fx0FfxQ

  • RPC multiplatform
  • La présentation Grow with the flow montrant la réécriture en Kotlin plus simple que des solutions complexes ailleurs.
  • Power-assert pour écrire des tests
  • Kotlin 2.0 et les évolutions majeures
  • Kotlin multiplatform maintenant stable
  • Kotlin Compose Multiplatform continue a maturer
  • Retour d’expérience de la migration d’Android Jetpack vers Kotlin Multiplatform
  • Use cases de coroutines et scope.

Librairies

Quarkus veut aller dans une fondation https://quarkus.io/blog/quarkus-in-a-foundation/

  • Améliorer l’adoption (encore plus), améliorer la transparence, et la collaboration, encourager la participation multi-vendeur
  • Première étape : une gouvernance plus ouverte.
  • Deuxième étape : bouger dans une fondation.
  • Échange avec la communauté sur la proposition et les fondations cibles.
  • Des critères pour la fondation (notamment la rapidité de delivery).

Quarkus 3.11 https://quarkus.io/blog/quarkus-3-11-0-released/

  • Websocket.next en cours.
  • Dev services pour observabilité (Grafana, Jaeger, Open Telemetry).
  • Extension Infinispan cache.
  • #38448 - Observability extensions - Dev Services, Dev Resources, LGTM.
  • #39836 - Infinispan Cache Extension.
  • #40309 - WebSockets Next: client endpoints.
  • #40534 - WebSockets Next: initial version of security integration.
  • #40273 - Allow quarkus:run to launch Dev Services.
  • #40539 - Support for OIDC session expired page.
  • #40600 - Introduce OidcRedirectFilter.

LangChain4j 0.31 est sorti https://github.com/langchain4j/langchain4j/releases/tag/0.31.0

  • Recherche Web pour le RAG avec Google et Tavily.
  • RAG avec les bases de données SQL (expérimental).
  • Récupération des resources remontées par le RAG lorsque AiServices retourne un Result<T>.
  • Observabilité LLM pour OpenAI pour être notifié des requêtes, réponses et erreurs.
  • Intégration de Cohere (embedding), Jina (embedding et re-ranking scoring), Azure CosmosDB comme embedding store.
  • Mise à jour de Gemini avec le parallel function calling et les instructions système.

Spring Boot 3.3.0 est sorti https://spring.io/blog/2024/05/23/spring-boot-3-3-0-available-now

  • Support DE Class Data Sharing (CDS).
  • Micrometer support de spantag, etc.
  • Amelioration Spring Security comme JwtAuthenticationConverter.
  • Support docker compose pour les images de conteneur Bitnami.
  • Virtual thread pour les websockets.
  • Support SBOM via an actuator.
  • SNI for embedded web servers.
  • Une nouvelle doc via Antora.

Micronaut 4.5 est sortie https://github.com/micronaut-projects/micronaut-platform/releases/tag/v4.5.0

  • Le serveur basé sur Netty inclus la détection d’opération bloquante et les modules l’utilisant indiqueront à l’utilisateur quand certaines opérations peuvent être redirigées plutôt sur un virtual thread ou dans le thread pool IO.
  • Micronaut Data inclus le support de la multitenance avec partitionnement par discriminateur pour JDBC et R2DBC.
  • Micronaut Data rajoute la pagination par curseur pour JDBC et R2DBC (important aussi pour Jakarta Data).
  • Support des annotations Jakarta Servlet pour configurer par exemple les servlet filters.
  • Support virtual thread et HTTP/2 .
  • Un nouveau module JSON Schema pour générer des JSON Schemas pour les records Java.
  • Un nouveau module Source Gen pour faire de la génération de source pour Java et Kotlin cross-langage.
  • Un nouveau module Guice pour importer des modules Guice existants.

Web

Angular 18 est sorti https://blog.angular.dev/angular-v18-is-now-available-e79d5ac0affe

  • Support expérimental pour la détection de changement sans zone.
  • Angular.dev est désormais le nouveau site pour les développeurs Angular.
  • Material 3, les deferrable views, le built-in control flow sont maintenant stables et intègrent une série d’améliorations.
  • Améliorations du rendu côté serveur telles que le support de l’hydratation i18n, un meilleur débogage, le support de l’hydratation dans Angular Material, et la event replay qui utilise la même bibliothèque que Google Search.

Data et Intelligence Artificielle

Une version pure Java du LLM Llama3 de Meta https://github.com/mukel/llama3.java/tree/main

  • Utilise la future API Vector de Java.

JLama, un moteur d’exécution de LLM en Java avec l’API vector https://www.infoq.com/news/2024/05/jlama-llm-inference-java/

  • Basé sur llama.c qui est un moteur d’inférence de LLM (l’exécution des requêtes).
  • JLama implémenté avec vector APIs et PanamaTensorOperations.
  • Plusieurs alternatives (native binding, implementation pure en Java, Scala, Kotlin).

Target Speech Hearing https://www.infoq.com/news/2024/05/target-speech-hearing/

  • Nouvel algo de Deep Learning de l’Université de Washington permet d’écouter une seule personne de ton choix et effacer tout le bruit autour.
  • le système nécessite que la personne portant les écouteurs appuie sur un bouton tout en regardant quelqu’un parler ou simplement en le fixant pendant trois à cinq secondes.
  • Permet à un modèle d’apprendre les schémas vocaux du locuteur et de s’y attacher pour pouvoir les restituer à l’auditeur, même s’il se déplace et cesse de regarder cette personne.
  • Selon les chercheurs, cela constitue une avancée significative par rapport aux écouteurs à réduction de bruit existants, qui peuvent annuler efficacement tous les sons, mais ne peuvent pas sélectionner les locuteurs en fonction de leurs caractéristiques vocales.
  • Actuellement, le système ne peut enregistrer qu’un seul locuteur à la fois. Une autre limitation est que l’enregistrement ne réussira que si aucune autre voix forte ne provient de la même direction.
  • L’équipe a mis en open source leur code et leur jeu de données afin de faciliter les travaux de recherche futurs pour améliorer l’audition de la parole cible.

Outillage

Utiliser LLM pour migrer du framework de testing https://www.infoq.com/news/2024/06/slack-automatic-test-conversion/

  • Slack a migré 15.000 tests de Enzyme à React Testing Library avec un succès de 80%.
  • Migration nécessaire pour le manque de support de Enzyme pour React 18.
  • L’équipe a essayé d’automatiser la conversion avec des transformations AST, mais n’a atteint que 45 % de succès à cause de la complexité des méthodes d’Enzyme et du manque d’accès aux informations contextuelles du DOM.
  • L’équipe a utilisé Claude 2.1 pour la conversion, avec des taux de réussite variant de 40 % à 60 %, les résultats dépendant largement de la complexité des tâches.
  • Suite aux résultats insatisfaisants, l’équipe a décidé d’observer comment les développeurs humains abordaient la conversion des tests unitaires.
  • Les développeurs humains utilisaient leurs connaissances sur React, Enzyme et RTL, ainsi que le contexte du rendu et les conversions AST de l’outil initial pour mieux convertir les tests unitaires.
  • Finalement les ingénieurs de Slack ont combiné transformations AST et LLM en intégrant des composants React rendus et des conversions AST dans les invites, atteignant un taux de réussite de 80 % démontrant ainsi la complémentarité de ces technologies.
  • Claude 2.1 est un modèle de langage de grande taille (LLM) annoncé en novembre 2023 par Anthropic. Il inclut une fenêtre contextuelle de 200 000 tokens, des réductions significatives des taux d’hallucination du modèle, des invites système et permet l’utilisation d’outils. Depuis, Anthropic a introduit la famille de modèles Claude 3, composée de trois modèles distincts, avec des capacités multimodales et une compréhension contextuelle améliorée.
  • Un arbre de syntaxe abstraite (AST) est une représentation arborescente de la structure syntaxique abstraite du code source écrit dans un langage de programmation. Chaque nœud de l’arbre représente une construction du code source. Un arbre de syntaxe se concentre sur la structure et le contenu nécessaires pour comprendre la fonctionnalité du code. Les AST sont couramment utilisés dans les compilateurs et les interpreters pour analyser et examiner le code, permettant diverses transformations, optimisations et traductions lors de la compilation.

IDE de test de JetBrains https://blog.jetbrains.com/qa/2024/05/aqua-general-availability/

  • Aqua, le premier IDE conçu pour l’automatisation des tests, supporte plusieurs langages (Java, Python, JavaScript, TypeScript, Kotlin, SQL) et frameworks de tests (Selenium, Playwright, Cypress).
  • Pourquoi ? Les tests d’applications nécessitent des compétences spécifiques. Aqua, un IDE adapté, est recommandé par les ingénieurs en automatisation des tests.
  • Aqua propose deux plans de licence : un gratuit pour les usages non commerciaux et un payant pour les usages commerciaux.
  • Ça me parait un peu contre intuitif à l’heure du devops et du TDD de faire des outils dédiés et donc des équipes ou personnes dédiées.

Méthodologies

Les 10 principes à suivre, selon le créateur de cURL, pour être un bon BDFL (Benevolent Dictator For Life) https://daniel.haxx.se/blog/2024/05/27/my-bdfl-guiding-principles/

  • Être ouvert et amical.
  • Livrer des produits solides comme le roc.
  • Être un leader de l’Open Source.
  • Privilégier la sécurité.
  • Fournir une documentation de premier ordre.
  • Rester indépendant.
  • Répondre rapidement.
  • Suivre l’actualité.
  • Rester à la pointe de la technologie.
  • Respecter les retours d’information.
  • Dans un vieil article de Artima, Guido Van Rossum, le créateur de Python et premier BDFL d’un projet, se remémore un échange de 1995 qui est à l’origine de ce concept https://www.artima.com/weblogs/viewpost.jsp?thread=235725.
  • Guido Van Rossum a été le premier à endosser ce “rôle”.

Un site compréhensif sur les build reproductibles https://reproducible-builds.org

  • Longue doc.
  • De la définition aux méthodes pour résoudre des problèmes spécifiques.

Masterclass de Fabien Olicard : Le Palais Mental https://www.youtube.com/watch?v=u6wu_iY4xd8

  • Technique pour retenir de l’information plus longtemps que dans sa mémoire courte.

Les APIs web ne devraient pas rediriger HTTP vers HTTPS https://jviide.iki.fi/http-redirects

  • Grosso modo le risque majeur est d’envoyer des données confidentielles en clair sur le réseau.
  • Le mieux serait de ne pas rediriger vers HTTPS, mais par contre de retourner une vraie erreur explicite.
  • Notamment les clés d’API et c’est facile de ne pas le voir vu les redirects.

Sécurité

Blog de GitHub sur la provenance et l’attestation https://github.blog/2024-04-30-where-does-your-software-really-come-from/

  • Discute les concepts de sécurisation de chaine d’approvisionnement de logiciel et comment elles s’articulent entre elle, à haut niveau.
  • Discute les hash pour garantir le même fichier.
  • La signature asymétrique pour prouver que j’ai signé (le hash) et donc que je garantis.
  • L’attestation qui déclare des faits sur un artifact.
  • Attestation de provenance : source code et instructions de build (SLSA provenance).
  • Mais il faut garantir les signatures avec une autorité de certification et avec des certificats à courte durée de vie idéalement, c’est sigstore.
  • Mentionne aussi The Update Framework pour s’appuyer sur cela et garantir des updates non compromis.

Keycloak 25 est sorti https://www.keycloak.org/2024/06/keycloak-2500-released.html

  • Argon2 pour le hashing de mots de passe.
  • Dépreciation des adaptateurs (Tomcat, servlet etc).
  • Java 21 et dépreciation de Java 17.
  • Session utilisateur persistente même pour les instances online (pour survivre à une rotation de keycloak).
  • Améliorations autour des Passkeys.
  • Management et health endpoint sur un port différent.
  • Et plus.

Demande aux cast codeurs

À 40 ans, tu peux encore être codeur reconnu ?

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/