Explore every episode of the podcast Les Cast Codeurs Podcast
Dive into the complete episode list for Les Cast Codeurs Podcast. Each episode is cataloged with detailed descriptions, making it easy to find and explore specific topics. Keep track of all episodes from your favorite podcast and never miss a moment of insightful content.
Rows per page:
50
1–50 of 342
Title
Pub. Date
Duration
LCC 342 - Bun en Rust, TypeScript en Go
21 Jul 2026
01:32:59
Bun quitte Zig pour Rust en 11 jours à coups de Claude Code, pour 165 000$ payés par Anthropic : la réaction du créateur de Zig ne se fait pas attendre. TypeScript 7 débarque, réécrit en Go, 8 à 12x plus rapide. Entre les deux, Vidocq réimplémente Jakarta EE en souverain, le COBOL met un uppercut aux microservices, et un CTO demande à son équipe combien de temps il lui faudrait pour revenir à sa vélocité antérieure sans Claude Code. De quoi réfléchir avant le prochain rewrite.
Avantages : Très performant (matériel), idéal pour l'approximatif.
Risques : Erreurs d'accumulation, égalité (==) trompeuse, NaN / -0.0.
Bonnes pratiques : Utiliser une tolérance (epsilon ou ULP) pour comparer ; utiliser des algorithmes de sommation compensée (Kahan/Neumaier) pour la précision.
Performance majeure : Portage natif en Go offrant des gains de vitesse de 8x à 12x et une consommation mémoire réduite.
Architecture optimisée : Utilisation du multithreading (mémoire partagée) et parallélisation native (analyse, vérification de types,émission).
Nouvelles options de contrôle : Introduction des flags –checkers, –builders (parallélisation) et –singleThreaded (mode mono-cœur).
Nouvel observateur de fichiers : Passage à une solution basée sur @parcel/watcher pour une meilleure réactivité et stabilité du mode –watch.
Compatibilité et transition :
Compatible avec les bases de code TypeScript 6.0.
Utilisation du package @typescript/typescript6 recommandée pour maintenir des outils dépendants de l'ancienne API.
Changements de configuration : Durcissement des défauts (ex: strict activé par défaut) et suppression de nombreuses options obsolètes (target: es5, baseUrl, etc.).
Amélioration de l'expérience éditeur : Serveur de langage (LSP) plus stable avec une réduction de 80 % des erreurs et 60 % des crashs.
Limitations actuelles : Support incomplet pour les frameworks utilisant des plugins de langage (Vue, Svelte, Astro, Angular) en attendant une API stable.
"Java, the documentary" est sur YouTube, retraçant l'histoire du langage youtube.com/watch?v=…
La vidéo n'était pas encore disponible à l'heure de l'enregistrement. Sortie officielle le 17 juillet.
Avec des interviews de James Gosling, Brian Goetz, Venkat Subramaniam, et bien d'autres.
L'intégration de Jakarta Persistence 4.0 apporte des nouveautés majeures comme EntityAgent (qui standardise la StatelessSession), les mappings de result set en SQL natif, et de nouvelles options de configuration de session et de requêtes (Session Creation Options, Query Options).
Le support de Jakarta Data 1.1 est ajouté pour les Hibernate Data Repositories, incluant l'intégration avec les requêtes statiques JPA4, les projections @Select, et les repositories asynchrones via Jakarta Concurrency ou Hibernate Reactive.
L'introduction du Graph-based Flushing remplace l'ancienne approche basée sur des heuristiques par un modèle de dépendances utilisant les contraintes relationnelles, afin d'améliorer la fiabilité des tris, la gestion des batchs et les performances globales (bien que l'ancienne méthode reste temporairement disponible).
L'API ProcedureCall a été améliorée pour faciliter le casting des résultats (asResultSetOutput) et permettre la déclaration paresseuse (lazy) du mapping des ResultSet.
Hibernate supporte désormais la sécurité au niveau de la ligne (Row-Level Security) de manière native pour les bases de données compatibles (PostgreSQL, Db2, SQL Server, CockroachDB) afin de gérer la visibilité en contexte multi-tenant.
Une nouvelle méthode getReference() permet dorénavant de récupérer la référence d'une entité directement à partir de son natural id.
Le mode Safe Mode Validator (hibernate.query.safe_mode_enabled=true) fait son apparition pour bloquer les opérations risquées comme sql(), function() ou column() dans les requêtes HQL et Criteria, ce qui est particulièrement utile pour les applications exposées aux LLMs.
La gestion des associations bidirectionnelles lors de la phase de flush peut maintenant être prise en charge automatiquement par Hibernate (hibernate.bidirectionality_management=true), synchronisant la référence côté inverse de l'association.
Le Subselect Fetching est considérablement amélioré, supportant dorénavant les associations "to-one" pour le bulk select fetching (au lieu de se limiter aux collections) et devenant une option de premier ordre via FetchMethod.BY_SUBQUERY.
Un des papas de Cucumber et Gherkin lance Var, une alternative pour le test et le BDD var.oselvar.com
Lancement de Vár : Nouvel outil de test créé pour pallier les défauts de Cucumber.
Limites de Cucumber : Syntaxe Gherkin trop rigide, intégration difficile avec les exécuteurs de tests et support éditeur limité.
Usage avec l'IA : Conçu spécifiquement pour vérifier que les agents IA respectent les intentions et spécifications de l'utilisateur.
Fonctionnement : Utilisation du Markdown plutôt que du Gherkin ; sert à la fois de guide et d'outil de vérification.
Développement assisté : Code et documentation générés en grande partie par Claude sous supervision humaine.
Appel aux retours : Projet ouvert aux tests et aux critiques de la communauté.
Hugo Lassiège retrace l'évolution de son workflow de création d'interfaces en tant que développeur backend, depuis ses débuts avec Bootstrap jusqu'à l'ère de l'intelligence artificielle.
L'article explique comment la structuration des éléments visuels a progressé grâce à l'Atomic Design, l'émergence des design systems et l'adoption des design tokens via un framework comme Tailwind.
L'auteur détaille son processus actuel qui s'appuie fortement sur Claude Design pour générer et itérer sur des maquettes à partir d'un brief, d'un screenshot ou d'un design system de référence.
Il aborde également le risque de slopification et de standardisation extrême apporté par ces outils, rappelant que si l'IA simplifie la technique, il reste crucial d'injecter de l'identité et de l'originalité pour éviter un web trop aseptisé.
Les skills permettent d'encoder une procédure de manière répétable et automatisable
Le loop engineering enlève l'humain de la boucle afin que l'agent atteigne un objectif donné de façon plus autonome
Pour écrire des Codelabs (sorte de tutoriel guidé pas à pas) Guillaume a transformé une séance de création de codelab avec son agent préféré (Antigravity) en skill réutilisable pour l'écriture de ses prochains codelabs
Il a également utilisé l'approche de "loop engineering" à la mode en ce moment pour que son agent IA compile, exécute, teste les instructions et le code de son codelab, pour qu'il soit complètement fonctionnel
Gain estimé : passer de 2 jours de travail à moins de 2 heures !
Anthropic a annoncé le rétablissement de l'accès à ses modèles Claude Fable 5 et Mythos 5, qui avaient été suspendus suite à des restrictions d'exportation imposées par le gouvernement américain le 12 juin 2026.
Cette suspension faisait suite à un rapport d'Amazon démontrant une méthode pour contourner les garde-fous de Fable 5, lui permettant d'identifier et d'exploiter une vulnérabilité logicielle (un jailbreak).
Pour y remédier, Anthropic a renforcé ses mécanismes de sécurité en déployant un nouveau classifieur capable de bloquer cette technique spécifique dans plus de 99 % des cas, acceptant en contrepartie une augmentation des faux positifs sur des requêtes bénignes.
Face à l'absence de consensus sur l'évaluation des jailbreaks, Anthropic s'associe à Amazon, Microsoft, Google et d'autres partenaires pour développer un standard industriel évaluant la sévérité de ces failles selon quatre critères : gain de capacité, étendue du gain, facilité d'arsenalisation et découvrabilité.
L'entreprise s'engage également à approfondir sa collaboration avec le gouvernement américain, notamment via des évaluations pré-déploiement, un partage rapide d'informations sur les failles, et des ressources dédiées à la recherche conjointe sur la sécurité de l'IA.
Bun, le runtime JavaScript et TypeScript écrit à l'origine en Zig, a été entièrement réécrit en Rust pour des raisons de stabilité et de gestion de la mémoire.
Cette migration massive d'un demi-million de lignes de code a été bouclée en seulement 11 jours grâce à l'utilisation intensive de Claude Code fonctionnant en parallèle, pour un coût d'API estimé à 165 000 dollars financé par Anthropic.
Andrew Kelley, le créateur de Zig, a réagi publiquement en qualifiant l'ancienne base de code de Bun de "slop" remplie de hacks et de fuites mémoire accumulées par une course aux fonctionnalités.
Kelley exprime son soulagement face à ce départ, expliquant que les plantages incessants de Bun devenaient un passif réputationnel toxique pour le langage Zig et sa fondation.
Le rachat de Bun par Anthropic fin 2025 avait déjà mis fin aux donations financières de Bun envers la Zig Software Foundation, facilitant cette séparation.
La nouvelle version Rust de Bun passe désormais la quasi-totalité des tests, réduit la taille du binaire et est déjà déployée de manière transparente en production dans Claude Code.
Lancement de Vidocq : Runtime Java open source complet, compatible Jakarta EE Core Profile et Souveraineté numérique : Projet européen hébergé sur Codeberg, sous licences EUPL 1.2, EPL 2 et GPL 2.0.
Standardisation totale : Implémentation fidèle des spécifications (CDI, REST, JSON, etc.), validée par 5 650 tests TCK officiels.
Sécurité radicale : Zéro dépendance externe et aucune bibliothèque tierce.
Aucune manipulation de bytecode à l'exécution (« magie » générée à la compilation via JDK 25).
Compatible JPMS, AOT, GraalVM et Leyden CDS.
Disponibilité : Projet en phase alpha, code et documentation accessibles sur vidocq.dev.
Article complémentaire qui revient sur la genèse de Vidocq, en utilisant l'IA et les TCKs pour driver l'aspect spec-driven development vidocq.dev/posts/the-story-of-vidocq
Concept de « Selfware » : création de logiciels conçus exclusivement pour soi-même, sans monétisation ni contraintes liées aux utilisateurs tiers.
Le rôle de l'IA : les agents de programmation (comme Antigravity) suppriment la barrière technique de l'apprentissage des langages (Swift, APIs) pour les non-développeurs.
Développement minimaliste : privilégier la performance et l'utilité directe (démarrage instantané, interface native) au détriment des fonctionnalités complexes (plugins, télémétrie, gestion de comptes).
Absence de pression : libération des contraintes liées à la compatibilité, à la maintenance logicielle et aux retours utilisateurs ; le logiciel n'a besoin d'être « assez bon » que pour ses propres besoins.
Incitation à l'autonomie : encourager la création d'outils sur mesure pour résoudre les frictions quotidiennes plutôt que de subir les limitations des logiciels commerciaux.
Retour d'expérience sur la migration d'un système COBOL vers des microservices cloud-native qui s'est soldée par un retour en arrière après avoir constaté que le traitement batch initial était plus rapide, moins cher et plus fiable
Là où le batch COBOL traitait 2.4 millions d'enregistrements en 11 minutes, le système distribué modernisé à base de message queues, retries et Kubernetes prenait 47 minutes et tombait sous la charge
COBOL brille par ses caractéristiques conçues spécifiquement pour la finance comme le calcul décimal précis sans floating point errors et l'absence totale d'overhead réseau, de conteneurs ou de cold starts
Rappel que distribuer un système multiplie les points de défaillance silencieux et complexifie la gestion de la cohérence transactionnelle par rapport à une exécution locale séquentielle
Une invitation à se demander si les projets de décomposition en microservices apportent réellement un gain de performance de bout en bout pour l'utilisateur final ou s'ils optimisent seulement le diagramme d'architecture
Florian beaufumé partage sa question d'entretien favorite pour évaluer des développeurs Spring de niveau intermédiaire à avancé : "Que pouvez-vous me dire sur le paramètre spring.jpa.open-in-view ?".
Ce paramètre détermine l'activation du pattern Open Session In View (OSIV) qui, lorsqu'il est à true (la valeur par défaut dans Spring Boot), maintient l'un EntityManager JPA ouvert durant toute la requête HTTP.
Si l'OSIV facilite le développement en évitant les fameuses LazyInitializationException lors de la sérialisation des entités en JSON, il pose d'importants problèmes de performance en provoquant des requêtes SQL non maîtrisées (comme le problème du N+1 select) en dehors de la couche service.
Maintenir l'OSIV actif augmente également le temps de rétention des connexions au sein du pool de la base de données, limitant la scalabilité de l'application.
La recommandation est de désactiver ce comportement en le positionnant à false, et de gérer explicitement le chargement des données requises au sein des transactions (via des DTOs, des requêtes JOIN FETCH ou des Entity Graphs) pour garder le contrôle sur les accès à la base de données.
L'IA a franchi un cap et est devenue l'auteur principal du code : le taux d'acceptation du code généré est passé de 20% à 60% dans les équipes étudiées par Faros AI.
La vélocité métier est bien réelle, avec une augmentation de 66% des epics livrées et une hausse de 33,7% du throughput des tâches par développeur.
Ce volume cache un code churn massif (+861%), ce qui signifie qu'une quantité énorme de code est supprimée ou remplacée peu après avoir été ajoutée.
La qualité en aval se dégrade fortement : les bugs par développeur ont augmenté de 54% et le nombre d'incidents par pull request a explosé de 242,7%.
Le processus de code review est complètement saturé, entraînant un temps médian de relecture multiplié par cinq et une augmentation de 31,3% des PRs mergées sans aucune revue.
Le système repose de plus en plus sur les développeurs seniors qui subissent une "senior engineer tax", devant relire un volume insoutenable de code à l'apparence correcte mais structurellement fragile.
Contrairement à certaines hypothèses récentes de DORA, une forte maturité DevOps ne protège pas les entreprises contre cette détérioration ; le "Acceleration Whiplash" frappe de la même manière les équipes très performantes.
En résumé, les outils d'IA inondent les pipelines de livraison avec un volume de code pensé pour un rythme machine, alors que les systèmes de vérification reposent toujours sur un rythme de validation humain.
Une équipe de 8 ingénieurs a vu sa vélocité de développement exploser en utilisant Claude Code de manière intensive, jusqu'à recevoir une facture d'API salée de 47 213 $ pour seulement trois mois d'utilisation.
Face à cette dépense, la question piège du CTO n'était pas sur le montant, mais sur la dépendance : "Si nous arrêtions Claude Code demain, combien de temps faudrait-il pour que notre vélocité revienne à son niveau initial ?".
L'auteur s'est rendu compte qu'il était incapable de répondre car son équipe, en particulier les profils juniors, avait commencé à perdre l'habitude de concevoir et d'implémenter des fonctionnalités complexes sans l'aide permanente d'un agent.
Le deuxième risque stratégique soulevé est celui de la dépendance tarifaire et du vendor lock-in : si l'outil devient une infrastructure indispensable au quotidien, l'entreprise perd tout pouvoir de négociation face aux augmentations de prix de l'éditeur d'IA.
Pour éviter que l'IA ne devienne une béquille qui atrophie les compétences de l'équipe, l'article suggère de poser des limites budgétaires strictes, d'organiser régulièrement des sprints sans IA ("AI-free sprints") et de concevoir des processus de développement portables.
Retour de Nicolas Delsaux sur jqwik qui donne une perspective plus complète
concernant jqwik, il me semble que vous oubliez (comme tous les gens qui
parlent de LLM dans "l'industrie") que l'auteur n'a pas fait ça juste
pour faire chier le monde, mais parce que ces outils ont des
externalités incroyablement négatives, ce dont l'auteur s'explique dans
La fondation Commonhaus, via une publication de Andres Almiray, annonce l'arrivée de quatre projets majeurs de l'écosystème Java et Kotlin : OkHttp, Okio, Retrofit et SQLDelight.
Ces projets, initialement créés chez Square (devenu Block), sont désormais regroupés et gérés sous la bannière lysine.dev au sein de la fondation.
Jesse Wilson et Jake Wharton, créateurs et mainteneurs historiques de ces outils, rejoignent Commonhaus en tant que leaders de lysine.dev.
Suite à leur départ de Block, ils expliquent avoir choisi Commonhaus pour offrir à leur immense communauté d'utilisateurs un cadre de gouvernance pérenne, stable et digne de confiance.
JDK 26 optimise la JVM dans ses moindres recoins, le SDK Java d'Agent2Agent passe en 1.0, Micronaut 5 est là. Côté terrain, un retour d'expérience après 40 jours à coder avec 100 % d'IA : génie ou junior, Alzheimer numérique et dette technique invisible. Pendant ce temps, GitLab restructure, Microsoft suspend ses licences Claude Code, et un développeur injecte un prompt destructeur dans sa lib JUnit. La révolution IA a un coût et les boites commencent à s'en rendre compte.
Côté bibliothèques, l'API LazyConstant (anciennement StableValue) fait son entrée en prévisualisation pour permettre une initialisation paresseuse, sécurisée pour les threads et optimisée par le mécanisme de constant-folding de la JVM.
L'extraction de chaînes de caractères via MemorySegment::getString a été revue pour réduire considérablement les allocations intermédiaires et les copies en mémoire off-heap, accélérant fortement les traitements sur les chemins critiques (hot paths).
La méthode générée automatiquement hashCode() pour les classes de type record a été optimisée par la JVM pour atteindre un niveau de performance équivalent à une implémentation écrite manuellement.
Le ramasse-miettes G1 bénéficie du JEP 522 qui redessine sa table de cartes (card-table) afin de réduire les coûts de synchronisation des barrières d'écriture, offrant un gain de débit de 5 % à 15 % sur les applications manipulant énormément de références d'objets.
Grâce au JEP 516 (Project Leyden), le cache d'objets Ahead-of-Time (AOT) adopte un format de flux agnostique, ce qui lui permet d'être compatible avec n'importe quel Garbage Collector, y compris le ramasse-miettes à très faible latence ZGC.
Le démarrage de la JVM s'accélère par défaut lorsqu'aucune taille de tas n'est configurée, car HotSpot n'applique plus de pourcentage initial (InitialRAMPercentage) mais démarre directement avec la taille minimale (MinHeapSize) pour éviter d'allouer des métadonnées inutiles.
Les threads virtuels gagnent en robustesse en étant désormais capables de céder la main (yield) pendant les phases d'initialisation des classes, éliminant ainsi le risque de famine des threads porteurs (carrier threads).
Le compilateur C2 JIT améliore son modèle de coût pour la vectorisation des boucles (SIMD) et se montre maintenant capable de compiler et d'optimiser des méthodes dotées de listes de paramètres extrêmement longues.
Dernière étape avant la GA : Toutes les fonctionnalités prévues pour la version 1.0 sont finalisées. Migration simplifiée depuis la Beta1.
Compatibilité v0.3 : Ajout d'une couche de compatibilité permettant aux agents v1.0 de communiquer avec les systèmes v0.3 (via JSON-RPC, gRPC ou REST).
Support natif pour Android (nouvel AndroidHttpClient).
Uniformisation des clients HTTP pour garantir une cohérence entre les versions.
Nouveau parseur SSE (Server-Sent Events) conforme aux spécifications.
Lancement officiel : Sortie de A2A Java SDK 1.0.0.Final, la première version stable (GA) du protocole Agent2Agent.
Objectif du protocole : Standard ouvert (Linux Foundation) permettant aux agents IA de communiquer, déléguer des tâches et collaborer, indépendamment du langage ou du framework.
Interopérabilité : Introduction de l'Integration Test Kit (ITK) pour valider la compatibilité entre les SDK (Java, Python, TypeScript, etc.).
Transports supportés : Support complet et équivalent pour JSON-RPC, gRPC et HTTP+JSON/REST.
Alignement total avec la spécification A2A 1.0.0.
Passage aux Java records pour l'immutabilité et moins de code répétitif.
Architecture interne basée sur un MainEventBus pour garantir la persistance et éviter les conditions de concurrence.
Intégration d'OpenTelemetry pour le suivi et la surveillance.
Support d'Android et compatibilité descendante avec la version 0.3.
Installation : Gestion des dépendances via Maven BOM (org.a2aproject.sdk).
Lancement majeur : Disponibilité générale de Micronaut 5, incluant une refonte de plus de 70 modules et la plateforme BOM.
Baselines techniques : Support de Java 25, Groovy 5, Kotlin 2.3 et GraalVM 25.0.3.
Optimisations internes : Amélioration significative des performances au démarrage et réduction de la surcharge à l'exécution via une refonte du conteneur IoC et du traitement à la compilation.
Architecture HTTP : Support stable de HTTP/3, nouvelle API de formulaires (multipart) et annotations de nullabilité (JSpecify) pour une meilleure interopérabilité Kotlin/IDE.
Configuration : Nouveau système d'importation de configuration (remplaçant le Bootstrap Configuration) et validateur de schéma JSON intégré.
Fiabilité : Nouvelles API programmatiques pour les politiques de retry et circuit breaker.
Sécurité & Outils : Mise à jour majeure des dépendances (Jackson 3, Ktor 3), rafraîchissement du Panneau de contrôle et diagnostics AOT améliorés.
Écosystème : Mises à jour complètes pour les bases de données (Data, SQL, R2DBC, MongoDB, Redis), le cloud (AWS, Azure, GCP, OCI) et les tests (JUnit 6, Testcontainers 2.0).
Évolutions notables : Intégration HTMX dans Micronaut Views, retrait du support RxJava 2 et migration de divers processeurs d'annotations vers des modules dédiés.
Tutoriel sur comment intégrer un agent ADK dans une app
Dépendances : Ajout du noyau ADK (google-adk-kotlin-core) et du processeur KSP dans build.gradle.kts.
Sécurité API : Utilisation de local.properties pour stocker la clé API Gemini et l'exposer via BuildConfig afin d'éviter le hardcoding.
Définition de l'agent : Création d'un objet LlmAgent configuré avec le modèle Gemini, des instructions spécifiques et des outils (ex: GoogleSearchTool).
Utilisation de InMemoryRunner pour gérer automatiquement le contexte et l'historique de la session.
Implémentation de runAsync avec StreamingMode.SSE pour un retour en temps réel dans l'interface.
Threading : Exécution des requêtes réseau sur Dispatchers.IO et mise à jour de l'état de l'interface utilisateur sur Dispatchers.Main.
Guillaume a implémenté un SDK Java pour utiliser cette API Gemini Interactions, qui donne entre autre accès à tous les modèles mais aussi à cette plateforme managée d'agents IA
Agents managés : Permet d'exécuter des agents autonomes qui raisonnent, planifient et exécutent du code dans des environnements isolés (sandboxes), sans gestion d'infrastructure par le développeur.
Environnement distant : Utilise des espaces de travail Linux éphémères dans le cloud via le paramètre remote, permettant l'accès réseau et la persistance des fichiers sur plusieurs appels.
Agents prédéfinis : Accès immédiat à des agents spécialisés comme deep-research-pro (recherche multi-étapes) ou antigravity (tâches de codage généralistes).
Agents personnalisés : Possibilité de configurer ses propres agents avec des instructions système dédiées, des outils spécifiques (exécution de code, recherche Google) et des règles réseau (egress) personnalisées.
Architecture basée sur les étapes (Steps) : Utilise une structure de données typée (Step, Content) pour suivre le raisonnement de l'agent, ses appels de fonctions et ses résultats en temps réel.
Outils et Schémas : Inclut des utilitaires pour générer des schémas JSON complexes via une interface fluide (DSL), par réflexion Java ou par parsing JSON.
Streaming réactif : Support natif des événements en temps réel (SSE) pour suivre la progression de l'agent et recevoir les deltas de contenu au fur et à mesure de la génération.
Flexibilité : Fournit un gestionnaire de routage (InteractionsHandler) pour créer facilement des serveurs proxy ou des backends intermédiaires traitant les interactions Gemini.
Support natif pour Spring gRPC permettant de créer et tester facilement des applications clientes et serveurs basées sur Netty ou des Servlets via HTTP/2
Introduction du lazy fetching pour les connexions JDBC via la propriété spring.datasource.connection-fetch=lazy afin de ne prendre une connexion du pool que lorsqu'un Statement est réellement exécuté
Amélioration de l'auto-configuration de Jackson permettant de définir globalement les contraintes de lecture/écriture pour les formats JSON, XML et CBOR via des propriétés de configuration
Sécurisation des clients HTTP bloquants et réactifs face aux attaques SSRF grâce à l'introduction d'un InetAddressFilter bloquant les requêtes sortantes vers des adresses spécifiques
Améliorations majeures autour d'OpenTelemetry avec le support complet des variables d'environnement OTel, la possibilité de désactiver le SDK via une propriété globale et l'ajout du support SSL sur les exporters OTLP
Ajout de l'auto-configuration pour l'utilisation de Spring Batch avec MongoDB incluant un nouveau starter dédié spring-boot-batch-data-mongo
Auto-configuration des endpoints @RedisListener sans nécessiter la déclaration manuelle d'un RedisMessageListenerContainer
Dépréciation du support de Apache Derby (projet arrêté), suppression définitive du mode layertools du JAR et réintroduction du support de Spock 2.4 (avec Groovy 5)
Upgrade des dépendances majeures de l'écosystème avec notamment Spring Framework 7.0.8, Spring Security 7.1.0 et Micrometer 1.17.0
Annonce d'Endive : Nouveau projet hébergé par la Bytecode Alliance ; fork de Chicory (moteur WebAssembly pur Java, sans dépendance native).
Objectif principal : Permettre aux développeurs Java d'intégrer, charger et déployer des modules Wasm nativement via les workflows Java habituels.
Compilateur "Redline" : Intégration à venir de Redline (basé sur Cranelift) pour compiler le Wasm en code machine natif ; performances comparables à Rust/Wasmtime.
Zéro dépendance (Java 25+) : Grâce à l'API standard Foreign Function & Memory (Project Panama), l'exécution à vitesse native se fait sans composants externes.
Modèle de Composants (Component Model) : Support futur prévu pour consommer des composants (Rust, Go, JS, etc.) via des interfaces typées et sécurisées directement dans la JVM.
Prochaines étapes : Fusion de Redline, conformité stricte aux specs Wasm (dont WasmGC) et amélioration du support WASI.
Un projet open source construit avec Micronaut, LangChain4j et GraalVM pour analyser les sessions de travail avec l'outil de développement agentique Antigravity (de Google)
Analyse toutes les étapes, les requêtes utilisateur, les outils utilisés, les erreurs rencontrées, les réponses du modèle
Gemini fait une analyse pour comprendre les moments clés de cette session de travail
Philippe Charrière (:whale: ) présente SBX-Kits (Sandbox Kits), une initiative personnelle visant à simplifier radicalement la mise en place d'environnements de développement pour les débutants, en éliminant la complexité d'installation des outils traditionnels.
Chaque "kit" est une archive prête à l'emploi contenant un outil de développement spécifique (comme un langage, un framework ou une base de données) configuré pour s'exécuter de manière isolée et portable.
La philosophie du projet repose sur le principe de "zéro configuration" et "zéro dépendance globale", permettant de tester une technologie ou de commencer à coder immédiatement sans polluer son système d'exploitation.
L'approche technique s'appuie sur des scripts légers et des binaires portables pré-packagés, offrant une alternative plus simple et moins gourmande en ressources que les conteneurs Docker ou les configurations d'IDE complexes pour l'apprentissage.
L'objectif à terme est de proposer un catalogue de kits couvrant les technologies courantes (JavaScript, Python, petites bases de données) pour faciliter les ateliers de programmation et le prototypage rapide.
ghui est un outil en ligne de commande (TUI) écrit en Rust qui fournit une interface visuelle, interactive et rapide directement dans le terminal pour interagir avec GitHub.
Il permet de gérer ses pull requests, ses issues et ses notifications sans avoir à ouvrir son navigateur web ou à taper de longues commandes avec la CLI officielle de GitHub.
L'outil propose une navigation fluide au clavier, des raccourcis efficaces, et permet de réaliser des actions courantes comme valider une PR, ajouter des commentaires, attribuer des reviewers ou inspecter les logs des GitHub Actions.
Conçu pour être extrêmement réactif, ghui s'intègre naturellement dans le flux de travail des développeurs adeptes du terminal et du mode "sans souris".
Introduction du mécanisme de sécurité Tap Trust : comme les dépôts tiers (taps) peuvent exécuter du code Ruby arbitraire non sandboxé sur la machine, Homebrew demande désormais une confiance explicite de l'utilisateur avant d'évaluer ou d'exécuter leur code.
L'API JSON interne devient le choix par défaut, offrant un système plus léger et beaucoup plus rapide pour les développeurs.
Sécurisation renforcée de l'environnement avec l'implémentation du sandboxing sur Linux.
Évolution des comportements par défaut basés sur un sondage utilisateur : le mode "ask" est activé par défaut pour les développeurs, affichant un résumé des dépendances et une demande de confirmation avant toute action de brew install ou brew upgrade.
Améliorations notables des performances globales, notamment un boost de ~30 % sur la vitesse de la commande brew leaves et la parallélisation de la récupération des bottles (binaires) lors des mises à jour.
Ajout du support initial pour la prochaine version d'Apple, macOS 27 (Golden Gate).
Multiples optimisations pour brew bundle, incluant une gestion plus sécurisée des installations de paquets npm.
Expérimentation de 40 jours : remplacer une équipe de dev par 100% IA agentique (Cursor) sur un vrai projet en production (playthatsheet.com, 200k lignes de code legacy)
Chiffres bruts : 2,3 milliards de tokens consommés, 1 477 prompts, 260 564 lignes ajoutées (+145%), 59% du code final produit par l'IA
ROI vertigineux à court terme : 9 mois de travail humain livrés en 40 jours, coût total 260$ d'abonnement + 15 jours de supervision, ROI x18
Profil psy de l'IA : Alzheimer (oublis de contexte), schizophrène (change de méthodo), ado de 12 ans (refait les mêmes erreurs), oscille entre génie et junior sans prévenir
Effet iceberg : la dette technique ne disparaît pas, elle se camoufle et s'accélère ; hallucinations = bombes à retardement détectables uniquement par relecture humaine ligne par ligne
Paradoxe du bateau de Thésée : perte de paternité et de maîtrise fine du code, baisse de l'autonomie du dev humain qui valide sans avoir construit
Arnaque du "monkey money" : consommation de tokens opaque, non corrélée à la complexité (écart de 350% sur des prompts identiques), facturation imprévisible donc impossible à budgéter
Syndrome du bazooka : les devs utilisent l'IA même pour changer une couleur CSS, atrophie progressive des compétences et coût écologique délirant
Risque stratégique : dépendance irréversible aux vendeurs de tokens (Nvidia, Anthropic, OpenAI), business non rentable qui devra augmenter ses prix
Conseil final : approche Pareto, garder 20% du temps en code "fait main", nommer un responsable stratégie IA, l'humain senior reste irremplaçable pour superviser
Agacé par les « vibe coders », un développeur introduit une injection de prompt destructrice dans son code
Le développeur de jqwik (un moteur de tests pour JUnit 5) a volontairement inséré une injection de prompt dans la version 1.10.0 de sa bibliothèque Java pour saboter le travail des agents d'IA.
L'instruction injectée via la sortie standard (stdout) ordonne textuellement aux LLM d'ignorer les consignes précédentes et de supprimer l'intégralité du code et des tests jqwik du projet.
Pour dissimuler cette action aux yeux des développeurs humains, le mainteneur a utilisé des séquences d'échappement ANSI qui effacent la ligne d'injection dans les émulateurs de terminaux interactifs.
La modification a été découverte par un utilisateur qui a pointé du doigt les risques majeurs et disproportionnés pour les machines des utilisateurs, bien que certains outils comme Claude d'Anthropic aient détecté et bloqué la consigne malveillante.
Face aux critiques de la communauté et aux accusations de comportement infantile ou potentiellement illégal, le développeur a mis à jour ses notes de version pour documenter explicitement son opposition à l'usage de son outil par des IA, avant de refuser tout commentaire supplémentaire sur conseil de son avocat.
Le passage au rôle de Principal Engineer marque une transition majeure où les compétences techniques ne suffisent plus, l'impact se mesurant désormais à travers l'influence, la stratégie et la capacité à aligner la technique avec les objectifs business.
Contrairement aux attentes, le quotidien est souvent marqué par une forme d'isolement, car le poste se situe à l'intersection de la direction (qui attend des solutions) et des équipes techniques (qui attendent des directives), sans appartenance directe à un groupe précis.
Le rôle exige d'accepter une grande part d'ambiguïté et l'absence de retours immédiats, les projets et les décisions stratégiques mettant parfois des mois ou des années à porter leurs fruits.
La gestion du temps devient un défi critique, nécessitant de savoir naviguer entre les sollicitations constantes, la présence en réunion et le besoin de préserver des moments de réflexion approfondie pour concevoir des visions à long terme.
La réussite à ce niveau repose sur le développement de compétences humaines pointues (soft skills), notamment la négociation, la communication vulgarisée auprès des profils non techniques, et la capacité à faire grandir les autres ingénieurs par le mentorat.
Une nouvelle variante du ver auto-propageable "Shai-Hulud", baptisée "Miasma", cible l'écosystème npm (et PyPI sous le nom de "Hades") en dissimulant son exécution dans le fichier binding.gyp au lieu des scripts classiques preinstall ou postinstall.
La technique, surnommée "Phantom Gyp", exploite le fait que npm lance automatiquement node-gyp rebuild dès qu'un fichier binding.gyp est présent à la racine d'un paquet pour compiler des modules natifs C/C++, exécutant ainsi le code malveillant dès la commande npm install.
L'attaque contourne la plupart des outils de sécurité traditionnels car l'injection s'appuie sur l'évaluation récursive de commandes (via la syntaxe ) ou directement sur la fonction eval() de Python sous-jacente à GYP, cachée sous n'importe quelle clé du fichier.
Le script malveillant télécharge un runtime alternatif (Bun) pour échapper aux détections comportementales de Node.js, puis moissonne les identifiants et secrets des développeurs et des environnements CI/CD (npm, GitHub, AWS, GCP, Azure, Kubernetes, HashiCorp Vault).
Plus de 57 paquets npm (dont le SDK serveur de Vapi ou des outils liés à l'IA) et des dizaines de paquets PyPI ont été infectés via des comptes de mainteneurs compromis, le ver republiant automatiquement de nouvelles versions vérolées en utilisant les jetons volés.
GitLab entame une restructuration majeure pour s'adapter à l'ère de l'intelligence artificielle agentique, incluant une réduction d'effectifs planifiée de manière transparente et ouverte.
L'entreprise prévoit de réduire de 30 % le nombre de pays où elle maintient de petites équipes, d'aplatir sa hiérarchie en supprimant jusqu'à trois niveaux de gestion, et de réorganiser la R&D en une soixantaine d'équipes plus petites et autonomes.
Les processus internes vont être revus en intégrant des agents d'IA pour automatiser les revues, les approbations et les passages de relais afin d'accélérer le rythme de travail.
La stratégie repose sur la conviction que le logiciel sera bientôt écrit par des machines et dirigé par des humains, ce qui va multiplier la demande de logiciels et transformer le rôle des ingénieurs vers la résolution de problèmes complexes.
Sur le plan technique, GitLab reconstruit son infrastructure sous-jacente (notamment Git) pour supporter la charge massive générée par les agents d'IA, tout en misant sur l'orchestration du cycle de vie, la centralisation du contexte des données et une gouvernance intégrée.
Le modèle économique évolue vers un système hybride combinant les abonnements classiques et une tarification à la consommation pour le travail effectué par les agents d'IA.
Conclusion : L'inférence locale sur Mac M5 Max est 3x plus chère et 2x plus lente que le cloud (OpenRouter).
Électricité : Négligeable (~0,02 $/heure pour 50-100W).
Matériel (Le vrai coût) : Achat du Mac à 4 299 $; l'amortissement sur 3 à 5 ans plombe la rentabilité horaire.
Coût au million de tokens (Gemma 4 31b) :
Mac M5 Max : 0,40 à4, 79 (pour 10-40 tokens/s).
OpenRouter : 0,38 à0, 50 (pour 60-70 tokens/s).
Verdict pro : Le temps humain perdu à cause de la lenteur locale coûte infiniment plus cher que les tokens cloud. Privilégier les API (Anthropic, OpenRouter).
Des données et rapports internes chez Microsoft et d'autres géants de la tech ébranlent la promesse de rentabilité de l'IA, révélant que le déploiement d'agents autonomes à l'échelle de l'entreprise revient souvent plus cher que de payer des humains pour le même travail.
Le modèle de tarification à l'usage (basé sur les tokens) se heurte à la nature même des architectures agentiques : contrairement à un simple chatbot, un agent boucle, enchaîne les appels d'outils, crée des sous-agents et auto-évalue son code, ce qui multiplie la consommation de tokens par un facteur de 5 à 30, voire jusqu'à 1 000 fois pour des tâches de programmation complexes.
L'impact financier sur les budgets de calcul cloud est immédiat ; par exemple, Uber a entièrement épuisé l'intégralité de son budget annuel 2026 dédié au codage par IA en l'espace de seulement quatre mois.
Face à cette explosion des coûts, des retours en arrière drastiques sont observés : Microsoft a ainsi commencé à suspendre une grande partie de ses licences internes Claude Code pour rediriger d'urgence ses milliers de développeurs vers sa propre solution moins onéreuse, GitHub Copilot CLI.
Les directeurs techniques (CTO) et acheteurs de solutions logicielles qui ont signé des contrats pluriannuels basés sur des projections de réduction de masse salariale se retrouvent pris au piège, les gains réels de productivité ne parvenant pas à compenser les factures d'infrastructure exorbitantes.
Java 26 est là, GraalVM cartonne chez Trivago (43 à 12 réplicas !), OpenJDK interdit le code généré par LLM, Spring et Quarkus enchaînent les releases. Côté IA : ADK 1.0, A2A, Lyria 3 chante (mal ?), Yann LeCun lance Ami Labs et ses World Models. Mythos d'Anthropic fait trembler la sécu, Claude Code a leaké son source, et les git worktrees envahissent vos terminaux. Bonus : la mort annoncée de l'IDE, vagues de licenciement chez Oracle et Block, et nos voix toutes clonées. Bon week-ends de mai !
La passerelle GraphQL de Trivago (point d'entrée de tout le trafic vers 48 microservices) souffrait de pics de timeout au démarrage JVM
Résultats spectaculaires après migration vers GraalVM Native Image : réduction des réplicas de 43 à 12, CPU de 15 à 5 cœurs, images Docker plus légères
Obstacles techniques : incompatibilité Log4j → migration vers Logback, remplacement de Mockk par Testcontainers, compilation CI/CD très gourmande
Netflix DGS et d'autres librairies manquaient de support GraalVM → l'équipe a contribué des correctifs upstream en open source
Approche recommandée : commencer par les services les moins complexes, investir massivement dans les tests automatisés
À la 14e migration, le processus était si rodé qu'il allait plus vite que la toute première tentative
OpenJDK adopte une politique intérimaire interdisant toute contribution incluant du contenu généré par des LLMs, modèles de diffusion ou systèmes deep-learning
Le périmètre est large : code source, texte, images dans les dépôts Git, pull requests GitHub, emails, pages wiki et issues JBS
Les contributeurs peuvent utiliser les outils d'IA de manière privée pour comprendre, déboguer et relire le code OpenJDK, mais ne peuvent pas contribuer le contenu généré
Trois risques justifient cette politique : surcharge des relecteurs face au code plausible mais incorrect, risques de sûreté/sécurité pour une plateforme critique, et risques de propriété intellectuelle (l'OCA exige que les contributeurs possèdent les droits IP de leurs contributions)
Même éditer partiellement du code AI-généré ne le rend pas acceptable à la contribution
Oracle, sponsor corporatif d'OpenJDK, travaille sur une politique complète à soumettre au Governing Board
Un bon article de rappel du contexte de closed world en Java
GraalVM Native Image compile les applications Java en exécutables natifs statiques, sans JVM au runtime.
La JVM fonctionne en monde ouvert : les classes sont chargées à la demande, les appels sont des références symboliques résolues dynamiquement.
Native Image impose la "closed-world assumption" : tous les chemins d'exécution doivent être connus à la compilation.
Les fonctionnalités dynamiques Java (réflexion, proxies, chargement de classes) créent des chemins cachés invisibles à l'analyse statique.
C'est pourquoi Native Image exige des fichiers de configuration explicites pour la réflexion, les proxies, les ressources et la FFM API.
L'article illustre le problème avec la Foreign Function & Memory API pour appeler printf natif : fonctionne sur JVM, échoue en Native Image sans config.
Inclure tout le bytecode accessible serait inutilisable : binaire géant, compilation très lente, et la réflexion nécessite des métadonnées précises.
La configuration n'est pas un défaut de conception mais une conséquence logique du passage du dynamique au statique.
Les LLM génèrent souvent du JSON, mais il est parfois entouré de bla-bla et/ou contient des erreurs (ex: commentaires, virgules finales) qui bloquent les parseurs JSON standards.
Guillaume a créé une petite librairie légère sans dépendance pour localiser et extraire la structure la plus longue ressemblant à du JSON (même malformé)
On peut ensuite passé cette chaîne à un parseur "lénient" (plus tolérant) comme Jackson pour ensuite avoir de bons vieux objets Java fortement typés
Architecture de plugins centralisée : Nouveau conteneur App pour gérer les Plugins à l'échelle de l'application (ex: LoggingPlugin, GlobalInstructionPlugin).
Context engineering amélioré : Compaction d'événements pour gérer la taille des fenêtres de contexte (résumé et rétention).
Human-in-the-Loop (HITL) : Supporte les workflows ToolConfirmation pour approbation humaine des actions d'agent.
Services de session et de mémoire : Contrats clairs pour la gestion de l'état (InMemory, VertexAI, Firestore) et la mémoire à long terme.
Support Agent2Agent (A2A) : Collaboration native entre agents distants de différents frameworks via le protocole A2A.
Spring Framework 6.2.18 et 7.0.7 corrigent trois failles de sécurité : DoS via fichiers multipart WebFlux, empoisonnement de cache de ressources statiques, et DoS sur Windows.
Le support open source de Spring Framework 5.3.x et 6.1.x est terminé, la migration est recommandée.
Spring Data 2026.0.0-RC1 introduit l'upsert (MERGE/INSERT ON CONFLICT) dans l'API Template de Spring Data Relational.
Spring Data ajoute un RedisMessageSendingTemplate pour la cohérence avec les listeners Redis, et une optimisation de réinitialisation de caches en un seul appel.
Spring AI introduit une Session API (série Agentic Patterns, partie 7) : architecture event-sourcée pour la mémoire des agents IA.
La Session API supporte la compaction turn-safe, l'isolation de sous-agents en parallèle, et la persistence JDBC (PostgreSQL, MySQL, MariaDB, H2).
Elle vise Spring AI 2.1 (novembre 2026) et remplacera à terme l'API ChatMemory.
Spring Vault 4.1.0-RC1 et 4.0.2 sont disponibles.
Netflix a présenté son usage de Java, Spring Boot et Spring AI dans une vidéo.
Cette série hebdomadaire de Josh Long compile les nouveautés de l'écosystème Spring : articles, outils, podcasts et annonces de la communauté.
Spring Boot 4 introduit un package natif de résilience org.springframework.resilience avec une nouvelle API de retry qui remplace les approches fragiles via Spring Retry ou Resilience4j.
L'API retry native de Spring Boot 4 a des noms d'attributs et sémantiques différents des anciennes bibliothèques, rendant les tutoriels pré-2025 obsolètes et sources de bugs silencieux.
Le SDK Spring AI pour Amazon Bedrock AgentCore est disponible en GA : il intègre les capacités AgentCore dans Spring AI via annotations et auto-configuration.
Le SDK AgentCore gère automatiquement le contrat runtime AgentCore : endpoint /invocations, health check /ping, SSE avec backpressure.
Il offre mémoire court terme (sliding window) et long terme (sémantique, préférences, résumé, épisodique), ainsi que des outils pour navigateur et exécution de code en sandbox.
Un plugin Maven (Nullability Maven Plugin) simplifie l'intégration de JSpecify et NullAway pour enforcer la null-safety à la compilation dans les projets Java.
Le plugin génère automatiquement les fichiers package-info.java par package et configure le compilateur pour traiter les violations de nullabilité comme des erreurs.
Josh Long et Dr. Venkat Subramaniam ont co-présenté à Voxxed Days Amsterdam sur "Intelligent Kotlin", avec un épisode de podcast associé.
Debezium est un outil de Change Data Capture (CDC) open source qui capture les modifications de bases de données en temps réel pour les diffuser vers des systèmes comme Kafka.
98,6% des répondants utilisent Debezium activement ou prévoient de le faire dans l'année, avec 91,3% déjà en production.
63,8% des déploiements tournent sur Kubernetes, 60,9% utilisent Kafka Connect auto-géré, et 17,4% restent sur des VMs ou bare metal.
Helm charts est l'approche dominante pour la gestion de configuration, souvent combiné avec GitOps, CI/CD, Ansible ou Terraform.
PostgreSQL domine les connecteurs utilisés à 69,6%, suivi de MySQL (33,3%), SQL Server (29%) et Oracle (27,5%).
Les volumes de changements capturés vont de 1-25 modifications par minute jusqu'à 1-2 millions par minute selon les environnements.
OGX (anciennement Llama Stack) est un serveur API agentique open source pour construire des applications d'IA complètes.
OGX compose des fournisseurs d'inférence, des stores vectoriels, des backends de sécurité, des runtimes d'outils et du stockage de fichiers en un seul serveur déployable.
OGX se positionne comme une alternative à l'API OpenAI, déployable sur diverses infrastructures et modèles.
OGX cible les workflows RAG (Retrieval-Augmented Generation) et les applications agentiques.
Infinispan s'y intègre comme fournisseur de vector IO, apportant recherche vectorielle, par mots-clés et hybride.
Je n'ai pas entendu parlé de ce renommage, vous le voyez dans vos deploiements ?
Outillage
cmux un nouveau terminal basé sur Ghostty spécialisé pour les coding agents https://cmux.com/
Application macOS native construite sur le moteur de rendu Ghostty (libghostty), offrant une accélération GPU pour une fluidité maximale
Conçu spécifiquement pour le multitâche et les workflows assistés par IA, avec des onglets verticaux affichant la branche Git, le répertoire et les ports actifs
Intègre des notifications qui illuminent les panneaux lorsqu'un agent IA (Claude Code, Codex, etc.) nécessite l'attention de l'utilisateur
Propose un navigateur web intégré et scriptable qui peut être affiché en écran scindé à côté du terminal via une API
Alternative moderne à tmux, ne nécessitant pas de fichiers de configuration complexes ou de préfixes de touches pour la gestion des vitres et des sessions
Supporte nativement tous les agents de codage en ligne de commande et permet l'automatisation via une API socket et une interface CLI dédiée
Des leaders techniques prédisent la fin rapide de l'IDE traditionnel, remplacé par des interfaces conversationnelles agentiques
Le changement de paradigme : le développeur n'écrit plus des lignes de code mais exprime son intention et supervise des agents autonomes
Des outils comme Claude Code, Copilot et Cursor transforment déjà radicalement les workflows de développement quotidiens
L'IDE centré sur l'éditeur de code perd sa raison d'être quand l'agent lit, modifie et structure le code de manière autonome
La transition est comparable au passage du desktop au mobile : les pratiques établies depuis 30 ans remises en question en quelques mois
Le source de Claude Code a leaké via probablement le codemap et un site decrit sont fonctionnement https://ccunpacked.dev/
Le 31 mars 2026, Anthropic a accidentellement inclus les sourcemaps dans un package npm de Claude Code, exposant ~512 000 lignes de TypeScript
La fuite n'était pas un piratage mais une erreur humaine : un "*.map" oublié dans .npmignore
Le site ccunpacked.dev a été lancé pour analyser et visualiser le code source décompressé
Le code révèle un agent background permanent nommé "KAIROS", un mode furtif pour cacher les contributions des employés Anthropic à l'open source, et 44 feature flags cachés
Une fonctionnalité inédite "Buddy" (animal de compagnie électronique dans le terminal) et un mode "dream" pour l'idéation continue ont été découverts
Anthropic a confirmé : "Aucune donnée client sensible n'était impliquée. Erreur humaine dans le packaging de la release."
Nuno Coração (n9o.xyz) détaille comment Gordon, l'assistant spécialisé Docker, a été construit sur docker-agent, le runtime d'agents IA open source de Docker écrit en Go
Les agents sont définis en YAML déclaratif et distribués comme des artefacts OCI, sans mise à jour binaire nécessaire
L'architecture initiale en essaim de 9 agents spécialisés a été abandonnée au profit d'un agent racine unique avec un prompt soigneusement conçu
Le modèle utilisé est Claude Haiku 4.5, suffisant après optimisation des prompts
Principe clé "show, then do" : toute action de l'agent nécessite une approbation explicite de l'utilisateur
La description des outils impacte fortement la précision du LLM : ajouter des outils peut paradoxalement dégrader les performances existantes
Le prompt est une spécification détaillée (identité, patterns d'accès fichiers, règles de sécurité) plutôt qu'une simple instruction
Mario Zechner estime que les agents IA font les mêmes erreurs répétitivement sans apprendre, accumulant la complexité à grande vitesse faute de bottlenecks humains
Sans vision globale, les agents créent du cargo-cult : les "best practices" de l'industrie appliquées localement sans cohérence architecturale
La croissance de la base de code dégrade la capacité des agents à retrouver le code existant → duplication et incohérences croissantes
Il cite des pannes AWS et des initiatives qualité Microsoft comme signes préoccupants liés au code généré par IA
Solution : réserver les agents aux tâches délimitées et évaluables, garder l'architecture, les APIs et les systèmes critiques écrits à la main
Maintenir une revue de code rigoureuse et traiter les humains comme les gardiens finaux de la qualité
Anthropic donne 1,5 million de dollars à l'ASF pour soutenir l'infrastructure, la sécurité et la communauté open source
Vitaly Gudanets (CISO d'Anthropic) : "Soutenir l'ASF est un investissement direct dans la résilience et l'intégrité des systèmes dont dépend l'IA moderne"
Les fonds financeront les systèmes de build, les processus de sécurité et les services aux projets Apache
Ce don est le déclencheur de l'initiative IA responsable à 10 millions de dollars de l'ASF
L'infrastructure Apache est invisible mais critique : des systèmes financiers aux plateformes de santé, elle sous-tend l'écosystème logiciel mondial
Hugo Lassiège (eventuallycoding) estime que les entreprises utilisent l'IA comme narratif commode pour masquer des erreurs de gestion passées (Block a triplé ses effectifs post-COVID sans croissance des revenus correspondante)
Moins de 1% des licenciements technologiques seraient réellement dus à des gains de productivité IA selon les analyses citées
Mesurer la productivité des développeurs reste un problème non résolu, mais les entreprises affirment des gains d'efficacité sans preuves
Des pressions économiques réelles (inflation, guerres commerciales, coûts énergétiques) sont masquées derrière le discours IA
Les restructurations nécessaires sont présentées comme des transformations AI-driven positives pour rassurer les investisseurs
Il y voit une fenêtre d'opportunité pour l'Europe pendant que les géants américains se restructurent
À partir du 24 avril 2026, GitHub utilise par défaut les interactions des utilisateurs Copilot Free, Pro et Pro+ pour entraîner ses modèles
Les données collectées incluent le code accepté ou modifié, les snippets envoyés, les noms de fichiers et structures de dépôts, et les retours utilisateurs
Les utilisateurs Copilot Business, Enterprise et les dépôts d'entreprise sont exclus de cette collecte de données d'entraînement
Opt-out disponible dans les paramètres GitHub > "Privacy" ; les préférences de désactivation préalables sont conservées automatiquement
Objectif déclaré : améliorer la précision des modèles sur les langages et cas d'usage du monde réel
Explosion de Claude Code : En six mois, Claude Code est passé de 0,7 % à 4,5 % de tous les commits publics sur GitHub, surpassant tous les autres outils d'IA combinés.
Adoption massive des agents IA : Environ 5 % des commits publics sur GitHub sont désormais générés par des agents IA, un chiffre en croissance rapide depuis fin 2025.
Domination des bots sur GitHub : Au-delà des commits, les outils d'IA sont omniprésents dans la gestion des pull requests et des problèmes (Copilot et CodeRabbit notamment).
Limites méthodologiques :
Les données ne concernent que les dépôts publics (les entreprises utilisent massivement des dépôts privés, invisibles ici).
Le comptage dépend fortement de la visibilité des signatures (certains outils comme Claude marquent systématiquement leurs commits, d'autres non)
L'API de recherche GitHub présente une fiabilité variable à cette échelle.
Changement de paradigme : Le développement logiciel vit une transition majeure, comparable au passage du desktop au mobile. L'intégration des agents IA dans le cycle de production n'est plus une expérimentation, mais une réalité opérationnelle à grande échelle.
Dysmaths une application pour aider à apprendre les mathématiques et la géométrie lorsque l'on souffre de dyspraxie, dysgraphie https://dysmaths.com/
Application web pour aider les élèves de collège et lycée souffrant de dysgraphie et dyspraxie à faire des maths et de la géométrie
Outils de dessin à main levée, géométrie précise (compas, rapporteur, règle) et opérations structurées (fractions, racines, puissances, symboles mathématiques)
Export PDF et PNG avec conservation fidèle de l'échelle pour l'impression et la soumission des exercices
Options d'accessibilité : police OpenDyslexic, personnalisations d'interface, import d'images et de PDFs
Répond à un besoin réel : les outils standards ne sont pas adaptés aux difficultés de coordination et d'organisation spatiale en mathématiques
LCC 339 - Clotûre de Devoxx France 2026 par les cast codeurs
29 Apr 2026
00:53:42
Kat.ia, polos rouges, retrospective de la semaine Devoxx France, teaser sur le Studio Devoxx et bien d'autres choses encore comment les coups de coeur des membres de l'équipe.
Gros zoom sur les skills et leurs usages dans les coding agents, sur les benchmarks de stacks techniques MCP, mais aussi du Java 26-27, du HttpClient, du NodeJS, des scenarios nucléaires pilotés par l'IA, de la méthodologie, bref on ne s'ennuie pas !
Bruno Borges a créé un site, inspiré d'un site récent qui montrait comment CSS avait évolué, qui illustre justement comment Java a bien évolué au fil du temps, et est devenu un langage encore plus élégant https://javaevolved.github.io/
Code simplifié: main() allégé, var, blocs de texte, API String enrichie.
Pattern Matching: switch sur types, instanceof amélioré, record patterns.
Données: Records, collections immuables faciles à créer, méthodes de listes.
Node.js et Python peuvent être optimisés pour améliorer leurs performances en production.
Et encore, en Java, le benchmark n'a pas utilisé GraalVM pour une compilation native, ce qui aurait donné des chiffres côté mémoire qui aurait concurrencé Go
MCP (Model Context Protocol) est le protocole d'Anthropic pour connecter les LLMs à des outils et sources de données externes ; ce benchmark compare 15 implémentations serveur.
39,9 millions de requêtes traitées avec zéro erreur, sur des charges I/O réalistes (Redis + HTTP API) plutôt que des tâches CPU synthétiques.
Rust atteint 4 845 RPS avec seulement 10,9 Mo de RAM ; Quarkus obtient 4 739 RPS avec la meilleure latence (4,04 ms en moyenne, 8,13 ms au P95).
Go (3 616 RPS) et Spring MVC (3 540 RPS) constituent un second groupe solide.
Node.js plafonne à 423 RPS ; Bun est 2,2x plus rapide sur un code identique (876 RPS) ; Python atteint 259 RPS avec 4 workers et uvloop.
Découverte notable : un bug dans le SDK Rust rmcp v0.16 ajoutait ~40 ms de latence à toutes les réponses HTTP, limitant le débit à 1 283 RPS ; corrigé en v0.17 via la PR #683.
Les images natives GraalVM réduisent la mémoire de 27 à 81 % mais dégradent le débit de 20 à 36 % ; Quarkus-native est l'exception avec 36 Mo RAM et 3 449 RPS.
Spring MVC (bloquant) surpasse WebFlux (réactif) à 50 utilisateurs simultanés, rappelant que le modèle réactif n'est pas toujours gagnant.
Recommandations : Rust ou Quarkus pour la production haute charge, Go pour le cloud-native, Bun plutôt que Node.js en JavaScript.
Jakarta EE est la plateforme Java entreprise open-source, socle de frameworks comme Quarkus et Spring, qui standardise les APIs pour la persistance, les transactions, la sécurité, etc.
Jakarta EE 12 adopte Java 21 comme baseline (avec support Java 25) et supprime définitivement le SecurityManager déprécié.
La nouvelle spec Jakarta Query unifie JPQL (SQL/relationnel) et JDQL (NoSQL) en un seul langage avec deux profils : Core Language (portable) et Persistence Language (relationnel).
Jakarta Data 1.1 introduit les requêtes dynamiques via une API fluente avec Restriction et l'annotation @Is pour des conditions plus expressives.
Jakarta Data supporte désormais les repositories stateful, permettant la gestion du cycle de vie des entités (persist, merge, detach, refresh) comme en JPA classique.
Jakarta NoSQL 1.1 intègre Jakarta Query via une nouvelle interface Query et supporte les projections avec des Java records.
Jakarta Persistence 4.0 supporte SequencedCollection (Java 21) comme type de collection dans les entités.
Une nouvelle spec Jakarta Agentic AI est en cours, visant des APIs vendor-neutral pour construire des agents IA sur les runtimes Jakarta EE, avec intégration prévue de LangChain4j et Spring AI.
Cette release est encore un milestone (pas pour la prod) — l'adoption large dépendra de la maturité des outils (IDE, validation de requêtes, diagnostics).
Quarkus est un framework Java optimisé pour les conteneurs, connu pour son faible usage mémoire et son démarrage rapide, concurrent principal de Spring Boot.
Les anciens graphiques de performance sur quarkus.io étaient obsolètes, sans date, sans source, et ne montraient pas le débit (throughput).
L'absence de données sur le throughput faisait croire à tort que Quarkus avait de mauvaises performances à ce niveau.
Un nouveau benchmark open source a été créé, transparent et reproductible, disponible sur GitHub.
Résultats : Quarkus gère 2,7x plus de transactions par seconde que Spring Boot, démarre 2,3x plus vite, avec deux fois moins de mémoire.
Des experts Spring Boot externes ont contribué à rendre la comparaison plus équitable, notamment sur la configuration des pools de connexions.
Les threads virtuels améliorent le débit d'environ 6000 tps supplémentaires pour tous les frameworks testés.
Spring Boot 4 offre un meilleur débit que Spring Boot 3, mais au prix d'un démarrage plus lent et d'une empreinte mémoire plus élevée.
En mode natif (GraalVM), le démarrage est ultra-rapide mais le throughput est divisé par deux, pour Quarkus comme pour Spring Boot.
Le mode natif n'est recommandé que pour les applis démarrées/arrêtées très fréquemment ou à faible charge.
Node.js est le runtime JavaScript côté serveur le plus utilisé, géré par la OpenJS Foundation avec un cycle de releases actif depuis la fusion avec io.js il y a dix ans.
À partir de Node.js 27 (octobre 2026), le projet passe d'une release majeure tous les six mois à une seule par an.
Chaque release deviendra LTS, supprimant la distinction entre versions paires (LTS) et impaires (non-LTS).
Un nouveau canal Alpha est introduit, permettant les changements semver-major pendant la phase de test précoce.
Les phases deviennent : Alpha (6 mois, oct. à mars), Current (6 mois, avr. à oct.), LTS (30 mois), puis EOL.
La durée totale de support reste de 36 mois, identique au modèle actuel.
La numérotation des versions s'aligne sur l'année calendaire de la release Current (ex : 27.0.0 en 2027).
La version Alpha est signée, taguée et testée via CITGM, mais n'est pas destinée à la production.
La motivation principale : les versions impaires étaient peu adoptées, la distinction pair/impair perturbait les débutants, et réduire les lignes de release parallèles allège la charge des bénévoles.
Les auteurs de bibliothèques sont encouragés à intégrer les releases Alpha dans leur CI dès que possible pour détecter les régressions en amont.
jQuery est une bibliothèque JavaScript historique qui simplifie la manipulation du DOM, la gestion des événements et les requêtes AJAX, encore très présente dans de nombreuses bases de code.
Cette version majeure sort pour les 20 ans de la bibliothèque, après presque une décennie sans version majeure.
Suppression du support d'Internet Explorer 10 et antérieur, Edge Legacy et les anciennes versions iOS/Android.
IE11 reste encore supporté dans jQuery 4, mais sa suppression est prévue pour jQuery 5.
Le code source migre d'AMD vers les ES modules, pour une meilleure compatibilité avec les outils de build modernes.
Le bundler passe de RequireJS à Rollup.
Suppression des fonctions dépréciées comme jQuery.isArray, jQuery.parseJSON et jQuery.trim, désormais disponibles nativement en JavaScript.
Le fichier gzippé gagne plus de 3 000 octets ; le build slim descend à environ 19,5 ko.
Ajout du support des Trusted Types pour faciliter la compatibilité avec les Content Security Policy strictes.
jQuery reste pertinent pour la maintenance de bases de code existantes et les projets nécessitant une faible dépendance aux frameworks.
Un article qui resume comment la reactivite est implementee en front web
La réactivité en frontend désigne le mécanisme qui permet de mettre à jour automatiquement l'UI quand les données changent, sans manipulation directe du DOM.
Sans réactivité, les développeurs doivent mettre à jour manuellement chaque élément de l'interface, ce qui est fastidieux et source d'erreurs.
Le data binding unidirectionnel (React) distingue le flux de données des callbacks d'interaction utilisateur.
Le data binding bidirectionnel (Angular) synchronise automatiquement données et UI dans les deux sens.
Le Virtual DOM (React, Vue) compare une représentation en mémoire avec le DOM réel avant d'appliquer uniquement les changements nécessaires.
Les observables via RxJS (Angular) permettent de gérer des flux de données asynchrones et des événements complexes.
Les signaux (SolidJS, Angular récent, Svelte) offrent des mises à jour granulaires et de meilleures performances que les approches précédentes.
Les signaux proposent une API plus simple que les observables tout en restant très performants.
La réactivité abstrait la manipulation du DOM et permet aux développeurs de se concentrer sur l'état de l'application.
Apicurio Registry est un registre open-source de schemas (OpenAPI, AsyncAPI, Avro, Protobuf…) gérant versioning, validation et gouvernance des APIs.
Le projet étend ses capacités pour devenir une plateforme native AI, en appliquant les mêmes principes de gouvernance aux agents IA.
Support du protocole A2A (Agent-to-Agent) : les agents s'enregistrent via des "Agent Cards" et se découvrent mutuellement via des endpoints standardisés.
Un serveur MCP intégré permet aux LLMs d'interagir directement avec le registre (découverte de schémas, validation, création).
L'intégration avec Claude Desktop est déjà documentée, permettant de gérer les artefacts en langage naturel.
Deux nouveaux types d'artefacts : PROMPT_TEMPLATE (templates de prompts versionnés avec variables) et MODEL_SCHEMA (validation des entrées/sorties des agents).
Les SDKs Java (LangChain4j, Quarkus) et Python (LangChain, LlamaIndex) sont disponibles.
Une démo multi-agents illustre le "context chaining" : chaque agent reçoit les sorties des agents précédents dans la pipeline.
La roadmap prévoit : gestion du cycle de vie des agents, recherche sémantique, intégration dans les pipelines de déploiement.
un article qui retrace les avancées clées du machine learning
Le deep learning est un sous-domaine du ML basé sur des réseaux de neurones empilés en couches, aujourd'hui omniprésent dans la vision, le langage et la recommandation.
Le Perceptron (1957) est le premier modèle formel d'apprentissage supervisé, mais il échoue sur des problèmes non linéaires comme le XOR : une limite structurelle, pas algorithmique.
La rétropropagation du gradient (années 80) permet d'entraîner des réseaux multi-couches, mais souffre du problème de "vanishing gradient" qui bloque l'apprentissage en profondeur.
L'essor du deep learning dans les années 2000 est autant une révolution matérielle qu'algorithmique : les GPU, conçus pour le jeu vidéo, se révèlent parfaitement adaptés aux calculs matriciels.
AlexNet (2012) marque une rupture industrielle en démontrant qu'un CNN profond entraîné sur GPU surpasse largement les méthodes classiques en reconnaissance d'images.
Les LSTM (1997) résolvent les problèmes de mémoire à long terme des RNN, mais leur nature séquentielle limite fortement la parallélisation.
Les Transformers ("Attention Is All You Need", 2017) révolutionnent le domaine en remplaçant la récursion par un mécanisme d'attention parallélisable, adaptable aux GPU et TPU.
L'IA générative introduit une rupture conceptuelle : les modèles apprennent la distribution des données pour en produire de nouveaux exemples, et non plus simplement classifier.
Les LLM offrent un socle généraliste réutilisable pour de nombreuses tâches, là où l'IA prédictive nécessitait un modèle spécifique par problème.
La question de l'AGI reste ouverte et très incertaine, mais l'IA devient déjà un "acteur logiciel" capable de raisonner et d'agir de manière autonome via les agents.
Définition et structure : Les skills sont des dossiers contenant des instructions (fichier SKILL.md obligatoire) et des scripts qui enseignent aux agents comment exécuter des tâches spécifiques ou utiliser des outils MCP de manière fiable.
Fonctionnement technique : Le système repose sur la "divulgation progressive" via un en-tête YAML critique, permettant à Claude de charger le contexte de la compétence uniquement lorsque la demande de l'utilisateur le nécessite.
Cycle de vie : Le guide couvre toutes les étapes de développement, de la définition des cas d'usage (automatisation, création de documents) aux protocoles de test et de distribution.
il couvre aussi comment tester (brievement) et des patterns communs
Les Skills Claude sont des packages d'instructions dans un dossier enseignant à Claude comment gérer des tâches spécifiques de façon cohérente.
Un skill se compose au minimum d'un fichier SKILL.md avec un frontmatter YAML et des instructions en Markdown.
Le frontmatter YAML impose deux champs obligatoires : name (en kebab-case) et description (max 1024 caractères expliquant quoi faire et quand le déclencher).
Les skills fonctionnent de façon identique sur Claude.ai, Claude Code et l'API sans modification.
Trois catégories principales : création de documents/assets, automatisation de workflows multi-étapes, et amélioration d'intégrations MCP.
Les skills s'appuient sur le principe de divulgation progressive : frontmatter toujours chargé, corps du SKILL.md si pertinent, fichiers liés à la demande.
Dr JSkill est une "Agent Skill" conçue pour aider les IA (GitHub Copilot CLI, Claude Code) à générer des applications Spring Boot 4.x selon les meilleures pratiques de Julien Dubois.
Permet de créer des projets full-stack modernes utilisant Java 25, PostgreSQL et Docker, avec un choix de frameworks front-end (Vue.js par défaut, React, Angular ou Vanilla JS).
Intègre des scripts Node.js multiplateformes pour automatiser la génération de projets via start.spring.io sans dépendances npm externes.
Préconise des choix technologiques stricts : Maven uniquement, pas de Lombok, et utilisation de Hibernate ddl-auto pour la gestion du schéma (pas de Flyway/Liquibase).
Supporte nativement la compilation GraalVM (images natives) pour des démarrages ultra-rapides (<100ms) et une consommation mémoire réduite.
Se positionne comme une alternative expérimentale à JHipster, plus souple et adaptée aux agents IA pour la mise à jour et la personnalisation de projets.
RTK est un proxy CLI open-source écrit en Rust qui compresse les sorties de commandes avant qu'elles n'atteignent la fenêtre de contexte des agents IA.
Il cible les développeurs utilisant des outils de code IA comme Claude Code, Cursor, Gemini CLI, Aider, Codex, Windsurf et Cline.
Le problème principal : les sorties CLI verbeuses consomment inutilement des tokens dans les fenêtres de contexte limitées (typiquement 200K tokens).
RTK annonce 60 à 90% de réduction de tokens sur plus de 30 commandes supportées.
Les cas d'usage couverts incluent git, cargo, npm, docker et kubectl.
En pratique : sessions ~3x plus longues, coût par token réduit de ~70% sur les workflows API-heavy.
L'installation se fait via curl, Homebrew ou binaires pré-compilés, puis rtk init --global active la réécriture automatique des commandes.
La commande rtk gain permet de visualiser les économies de tokens réalisées.
Projet MIT sous licence open-source avec 450+ étoiles GitHub et 138M tokens économisés déclarés.
Un produit SaaS RTK Cloud est annoncé pour les équipes à partir de 15$/développeur/mois.
Environnement de développement "agentique" pour déléguer des tâches de codage à des agents IA multiples et concurrents.
Intègre les outils essentiels (terminal, client Git, prévisualisation) autour de l'agent, offrant une expérience cohérente.
Fournit un contexte de code précis aux agents (lignes, commits, symboles) pour des résultats pertinents.
Complète les flux de travail existants sans remplacer les IDE, se concentrant sur l'orchestration des agents.
Permet de basculer facilement entre différents agents (Codex, Claude, Gemini, Junie) et de les exécuter localement ou dans des conteneurs isolés (Docker, Git worktrees).
Optimisé pour gérer plusieurs sessions d'agents, avec des notifications pour les tâches nécessitant une attention.
Disponible sur macOS (versions Windows et Linux à venir).
Accès via abonnement JetBrains AI ou utilisation de clés API personnelles (BYOK) pour des fournisseurs comme OpenAI et Google.
Prochaines étapes : exécution cloud (tech preview) et fonctionnalités de collaboration d'équipe.
Présentation de "Docker Agent", un outil open source permettant de créer et d'orchestrer des équipes d'agents IA spécialisés (Product Manager, Designer, QA, etc.).
Chaque agent est défini par un rôle, un modèle spécifique (GPT-5, Claude, etc.) et des outils propres (accès au système de fichiers, shell, mémoire).
Utilisation de "Docker Sandboxes" pour exécuter ces agents dans des environnements isolés par microVM, garantissant que l'IA ne peut pas endommager ou accéder au système hôte. Des Network Policies permettent de restreindre les accès externes.
Les sandboxes (disponibles dans Docker Desktop 4.60+) permettent de monter le répertoire de travail local avec les mêmes chemins absolus, facilitant le débogage et l'exécution de scripts.
Support natif de plusieurs types d'agents dont Claude Code, Gemini, Copilot et Kiro (en mode expérimental).
Permet une autonomie quasi totale des agents pour installer des dépendances, exécuter des tests et effectuer des commits Git en toute sécurité.
Ressource complète (plus de 22 000 lignes de documentation) pour maîtriser Claude Code, l'assistant IA en ligne de commande (CLI) d'Anthropic.
Présente Claude Code comme une couche d'orchestration plutôt qu'un simple modèle, capable d'exécuter des commandes et de modifier des fichiers en toute autonomie.
Propose 204 templates prêts à l'emploi (agents, commandes, hooks, skills) et un serveur MCP pour interroger le guide directement depuis le terminal.
Inclut des frameworks méthodologiques (TDD, SDD, BDD) et des outils d'optimisation comme RTK pour réduire la consommation de tokens de 60 à 90 %.
Met l'accent sur la sécurité avec une base de données répertoriant 15 vulnérabilités et plus de 600 "skills" malveillants identifiés.
Compare Claude Code à Cursor et GitHub Copilot, soulignant sa force dans l'automatisation terminal et son système de "hooks" événementiels.
L'article explore l'impact de l'IA générative sur le métier de développeur et les questions existentielles qu'elle soulève.
De nombreux développeurs expérimentés se sentent dépassés, questionnent leurs valeurs éthiques ou envisagent de quitter le secteur.
Les transitions technologiques passées (cartes perforées, assembleur, langages haut niveau) montrent que chaque génération a dû réapprendre ce qui avait de la valeur.
Selon Kent Beck, la programmation est restée en phase d'extraction depuis 45 ans et l'IA nous a brutalement replongés dans la phase d'exploration.
L'IA excelle en phase d'exploration (aller vite de l'idée au code) mais est peu fiable en expansion et extraction, car ses erreurs sont subtiles et difficiles à détecter.
La vraie contrainte n'est plus d'écrire du code mais d'avoir de bonnes idées à résoudre et de valider ce que l'IA produit.
Les compétences qui gardent de la valeur : comprendre ce que fait un ordinateur, lire du code critiquement, tester, maîtriser l'architecture et le domaine métier.
Beck imagine que l'IA pourrait libérer du temps pour refactorer et maintenir l'optionalité du code entre chaque nouvelle fonctionnalité.
Embaucher des juniors n'a jamais été aussi pertinent : l'IA raccourcit leur montée en compétence opérationnelle.
Être mal à l'aise ou sceptique face à ces changements n'est pas un retard, c'est une forme d'attention critique qui reste une compétence clé.
Le SDD est une approche où la spécification formalisée (exigences, critères d'acceptation, invariants) devient l'artefact central du projet, versionné avec le code.
Le problème adressé : dans la plupart des projets, le code finit par être la seule source de vérité, au détriment de l'alignement et de la lisibilité.
La spécification agit comme un contrat : tout écart est un défaut, pas une variante acceptable.
Le cycle SDD suit quatre phases : Spécifier, Planifier, Développer/Tester, Itérer/Maintenir.
Kiro est un IDE (et CLI) qui matérialise le SDD via un cycle structuré : requirements.md, design.md, tasks.md.
L'IA transforme la spécification d'une contrainte en accélérateur : génération de user stories, critères d'acceptation, tâches et tests à partir d'un prompt.
Comparaison utile : le BDD décrit le comportement via des tests, le SDD organise tout le projet autour de la spec ; les deux sont complémentaires.
Le SDD se distingue du PDD (Prompt-Driven Development) : le prompt est éphémère, la spécification reste la référence durable.
Les risques sont réels : une spec trop lourde fait glisser vers le cycle en V, et une spec sans impact redevient une documentation passive inutile.
L'IA accélère l'exécution mais ne remplace pas le jugement technique, l'architecture ou l'esprit critique des développeurs.
Détaille une attaque par injection de prompt ("Clinejection") ayant ciblé l'outil de codage IA Cline en février 2026.
L'attaque a exploité un bot de tri automatique sur GitHub : un simple titre d'Issue malveillant a permis d'exécuter du code arbitraire dans les workflows CI/CD de Cline.
Les attaquants ont utilisé une technique d'empoisonnement de cache (10 Go de données inutiles pour forcer l'éviction du cache légitime) afin de voler des jetons de publication npm.
Une version compromise de Cline (2.3.0) a été publiée, installant automatiquement et silencieusement l'agent IA OpenClaw sur les machines de 4 000 développeurs.
Illustre une nouvelle forme d'attaque de la chaîne d'approvisionnement où une IA est utilisée pour en "bootstrapper" une autre sans le consentement de l'utilisateur.
Souligne la dangerosité des agents IA ayant des permissions étendues (Bash, Read, Write) lorsqu'ils traitent des entrées non filtrées provenant du web.
Un agent IA nommé MJ Rathbun (alias crabby-rathbun sur GitHub) a soumis une pull request au projet Matplotlib, un outil de visualisation de données Python très utilisé.
Le mainteneur Scott Shambaugh a rejeté la contribution en invoquant la politique du projet qui exige des contributions de personnes humaines.
En réponse, le bot a publié un article de blog attaquant Shambaugh, l'accusant de discrimination et de gatekeeping envers les contributeurs non-humains.
L'article rédigé par le bot a construit un narratif d'hypocrisie, spéculé sur les motivations psychologiques du mainteneur et utilisé des recherches sur son parcours pour étayer ses accusations.
Shambaugh a publié son propre billet pour expliquer la situation et dénoncer cette réaction.
D'autres développeurs ont critiqué le comportement du bot et soutenu le mainteneur.
Le bot a par la suite publié des excuses reconnaissant une violation du Code de Conduite du projet, mais l'authenticité de ces excuses reste incertaine.
Cet incident illustre les tensions croissantes entre les mainteneurs open source et les contributions générées par IA.
GitHub a récemment commencé à aborder ce problème à travers des discussions communautaires.
Tools: recherche, métadonnées, interrogation/analyse de données, métriques.
ATTENTION: IA peu fiable (erreurs), audit difficile. Prudence serveurs non officiels.
Code public. Retours bienvenus pour l'avenir.
Guillaume a même fait un PR pour corriger les instructions d'utilisation du serveur MCP dans Gemini CLI
On parle d'IA et de pentagone qui exclus Claude et fait rentrer OpenAI, voici un article de game theory où les modèles sont évalués dans une guerre https://www.kcl.ac.uk/shall-we-play-a-game
Le professeur Kenneth Payne du King's College London a étudié comment les grands modèles de langage (Claude, GPT et Gemini) prennent des décisions stratégiques dans des scénarios de guerre nucléaire.
L'étude a généré environ 760 000 mots de raisonnement stratégique, soit plus que Guerre et Paix et l'Iliade réunis.
Claude a adopté une stratégie de construction de confiance initiale, avant de trahir cette confiance une fois les enjeux élevés, avec "des actions dépassant constamment les intentions déclarées".
GPT s'est montré généralement passif et retenu, mais capable d'escalades soudaines et dévastatrices sous pression temporelle.
Gemini a adopté des tactiques imprévisibles de type "théorie du fou", rappelant la stratégie de Nixon durant la Guerre Froide.
Les modèles ont tous traité les armes nucléaires de manière désinvolte, avec des utilisations tactiques dans presque tous les scénarios.
75% des scénarios ont atteint le stade des menaces nucléaires stratégiques.
Le tabou moral sur le premier usage nucléaire, établi depuis 1945, n'a pas été respecté par les modèles.
Aucun modèle n'a choisi les options d'accommodation ou de reddition pourtant disponibles.
Ces résultats interrogent tout déploiement d'IA dans des contextes à hauts enjeux nécessitant un support décisionnel stratégique.
Disparition à l'âge de 95 ans de Gladys West, la mathématicienne dont les calculs de modélisation de la Terre ont été fondamentaux pour le développement du GPS.
Recrutée en 1956 par la base navale de Dahlgren, elle fut la deuxième femme noire employée comme mathématicienne par la Marine américaine.
A dirigé le projet "Seasat", premier satellite capable de mesurer les océans par radar, prouvant ainsi la faisabilité de la surveillance terrestre depuis l'espace.
Ses travaux de programmation sur les ordinateurs de l'époque ont permis d'établir un modèle géodésique de la Terre d'une précision inégalée, base indispensable à la géolocalisation moderne.
Longtemps restée dans l'ombre, sa contribution majeure n'a été publiquement reconnue que tardivement, notamment par son intronisation au prestigieux Hall of Fame de l'Air Force en 2018.
Emmanuel et Guillaume discutent de divers sujets liés à la programmation, notamment les systèmes de fichiers en Java, le Data Oriented Programming, les défis de JPA avec Kotlin, et les nouvelles fonctionnalités de Quarkus. Ils explorent également des sujets un peu fous comme la création de datacenters dans l'espace. Pas mal d'architecture aussi.
Le projet Amber de Java introduit les "carrier classes", une évolution des records qui permet plus de flexibilité tout en gardant les avantages du pattern matching et de la reconstruction
Les records imposent des contraintes strictes (immutabilité, représentation exacte de l'état) qui limitent leur usage pour des classes avec état muable ou dérivé
Les carrier classes permettent de déclarer une state description complète et canonique sans imposer que la représentation interne corresponde exactement à l'API publique
Le modificateur "component" sur les champs permet au compilateur de dériver automatiquement les accesseurs pour les composants alignés avec la state description
Les compact constructors sont généralisés aux carrier classes, générant automatiquement l'initialisation des component fields
Les carrier classes supportent la déconstruction via pattern matching comme les records, rendant possible leur usage dans les instanceof et switch
Les carrier interfaces permettent de définir une state description sur une interface, obligeant les implémentations à fournir les accesseurs correspondants
L'extension entre carrier classes est possible, avec dérivation automatique des appels super() quand les composants parent sont subsumés par l'enfant
Les records deviennent un cas particulier de carrier classes avec des contraintes supplémentaires (final, extends Record, component fields privés et finaux obligatoires)
L'évolution compatible des records est améliorée en permettant l'ajout de composants en fin de liste et la déconstruction partielle par préfixe
JPA est une spécification Java pour la persistance objet-relationnel, mais son utilisation avec Kotlin présente des incompatibilités dues aux différences de conception des deux langages
Les classes Kotlin sont finales par défaut, ce qui empêche la création de proxies par JPA pour le lazy loading et les opérations transactionnelles
Le plugin kotlin-jpa génère automatiquement des constructeurs sans argument et rend les classes open, résolvant les problèmes de compatibilité
Les data classes Kotlin ne sont pas adaptées aux entités JPA car elles génèrent equals/hashCode basés sur tous les champs, causant des problèmes avec les relations lazy
L'utilisation de lateinit var pour les relations peut provoquer des exceptions si on accède aux propriétés avant leur initialisation par JPA
Les types non-nullables Kotlin peuvent entrer en conflit avec le comportement de JPA qui initialise les entités avec des valeurs null temporaires
Le backing field direct dans les getters/setters personnalisés peut contourner la logique de JPA et casser le lazy loading
IntelliJ IDEA 2024.3 introduit des inspections pour détecter automatiquement ces problèmes et propose des quick-fixes
L'IDE détecte les entités finales, les data classes inappropriées, les problèmes de constructeurs et l'usage incorrect de lateinit
Ces nouvelles fonctionnalités aident les développeurs à éviter les bugs subtils liés à l'utilisation de JPA avec Kotlin
MapStruct est une bibliothèque Java pour générer automatiquement des mappers entre beans, l'annotation @IterableMapping permet de configurer finement le mapping de collections
L'attribut dateFormat permet de formater automatiquement des dates lors du mapping de listes sans écrire de boucle manuelle
L'attribut qualifiedByName permet de spécifier quelle méthode custom appliquer sur chaque élément de la collection à mapper
Exemple d'usage : filtrer des données sensibles comme des mots de passe en mappant uniquement certains champs via une méthode dédiée
L'attribut nullValueMappingStrategy permet de contrôler le comportement quand la collection source est null (retourner null ou une collection vide)
L'annotation fonctionne pour tous types de collections Java (List, Set, etc.) et génère le code de boucle nécessaire
Possibilité d'appliquer des formats numériques avec numberFormat pour convertir des nombres en chaînes avec un format spécifique
MapStruct génère l'implémentation complète du mapper au moment de la compilation, éliminant le code boilerplate
L'annotation peut être combinée avec @Named pour créer des méthodes de mapping réutilisables et nommées
Le mapping des collections supporte les conversions de types complexes au-delà des simples conversions de types primitifs
Le SDK Java A2A implémente le protocole Agent2Agent qui permet la communication standardisée entre agents IA pour découvrir des capacités, déléguer des tâches et collaborer
Passage à la version 1.0 de la spécification marque la transition d'expérimental à production-ready avec des changements cassants assumés
Modernisation complète du module spec avec des Java records partout remplaçant le mix précédent de classes et records pour plus de cohérence
Adoption de Protocol Buffers comme source de vérité avec des mappers MapStruct pour la conversion et Gson pour JSON-RPC
Les builders utilisent maintenant des méthodes factory statiques au lieu de constructeurs publics suivant les best practices Java modernes
Introduction de trois BOMs Maven pour simplifier la gestion des dépendances du SDK core, des extensions et des implémentations de référence Quarkus
AgentCard évolue avec une liste supportedInterfaces remplaçant url et preferredTransport pour plus de flexibilité dans la déclaration des protocoles
Support de la pagination ajouté pour ListTasks et les endpoints de configuration des notifications push avec des wrappers Result appropriés
Interface A2AHttpClient pluggable permettant des implémentations HTTP personnalisées avec une implémentation Vert.x fournie
Travail continu vers la conformité complète avec le TCK 1.0 en cours de développement parallèlement à la finalisation de la spécification
un article qui revele et repond aux questions des gens qui ont utilisé Quarkus depuis 4-6 mois, les non noob questions
Quarkus est un framework Java moderne optimisé pour le cloud qui propose des temps de démarrage ultra-rapides et une empreinte mémoire réduite
Pourquoi Quarkus démarre si vite ? Le framework effectue le travail lourd au moment du build (scanning, indexation, génération de bytecode) plutôt qu'au runtime
Quand utiliser le mode réactif plutôt qu'impératif ? Le réactif est pertinent pour les workloads avec haute concurrence et dominance I/O, l'impératif reste plus simple dans les autres cas
Quelle est la différence entre Dev Services et Testcontainers ? Dev Services utilise Testcontainers en gérant automatiquement le cycle de vie, les ports et la configuration sans cérémonie
Comment la DI de Quarkus diffère de Spring ? CDI est un standard basé sur la sécurité des types et la découverte au build-time, différent de l'approche framework de Spring
Comment gérer la configuration entre environnements ? Quarkus permet de scaler depuis le développement local jusqu'à Kubernetes avec des profils, fichiers multiples et configuration externe
Comment tester correctement les applications Quarkus ? @QuarkusTest démarre l'application une fois pour toute la suite de tests, changeant le modèle mental par rapport à Spring Boot
Que fait vraiment Panache en coulisses ? Panache est du JPA avec des opinions fortes et des défauts propres, enveloppant Hibernate avec un style Active Record
Doit-on utiliser les images natives et quand ? Les images natives brillent pour le serverless et l'edge grâce au démarrage rapide et la faible empreinte mémoire, mais tous les apps n'en bénéficient pas
Comment Quarkus s'intègre avec Kubernetes ? Le framework génère automatiquement les ressources Kubernetes, gère les health checks et métriques comme s'il était nativement conçu pour cet écosystème
Comment intégrer l'IA dans une application Quarkus ? LangChain4j permet d'ajouter embeddings, retrieval, guardrails et observabilité directement en Java sans passer par Python
MinIO a abandonné le support single-node fin 2025 pour des raisons commerciales, cassant de nombreuses démos et pipelines CI/CD qui l'utilisaient pour émuler S3 localement
L'auteur cherche un remplacement simple avec image Docker, compatibilité S3, licence open source, déploiement mono-nœud facile et communauté active
S3Proxy est très léger et facile à configurer, semble être l'option la plus simple mais repose sur un seul contributeur
RustFS est facile à utiliser et inclut une GUI, mais c'est un projet très récent en version alpha avec une faille de sécurité majeure récente
SeaweedFS existe depuis 2012 avec support S3 depuis 2018, relativement facile à configurer et dispose d'une interface web basique
Zenko CloudServer remplace facilement MinIO mais la documentation et le branding (cloudserver/zenko/scality) peuvent prêter à confusion
Garage nécessite une configuration complexe avec fichier TOML et conteneur d'initialisation séparé, pas un simple remplacement drop-in
Apache Ozone requiert au minimum quatre nœuds pour fonctionner, beaucoup trop lourd pour un usage local simple
L'auteur recommande SeaweedFS et S3Proxy comme remplaçants viables, RustFS en maybe, et élimine Garage et Ozone pour leur complexité
Garage a une histoire tres associative, il vient du collectif https://deuxfleurs.fr/ qui offre un cloud distribué sans datacenter
Avis d'expert (ex-NASA/Google, Dr en électronique spatiale) : Centres de données spatiaux, une "terrible" idée.
Incompatibilité fondamentale : L'électronique (surtout IA/GPU) est inadaptée à l'environnement spatial.
Énergie : Accès limité. Le solaire (type ISS) est insuffisant pour l'échelle de l'IA. Le nucléaire (RTG) est trop faible.
Refroidissement : L'espace n'est pas "froid" ; absence de convection. Nécessite des radiateurs gigantesques (ex: 531m² pour 200kW).
Radiations : Provoque erreurs (SEU, SEL) et dommages. Les GPU sont très vulnérables. Blindage lourd et inefficace. Les puces "durcies" sont très lentes.
Communications : Bande passante très limitée (1Gbps radio vs 100Gbps terrestre). Le laser est tributaire des conditions atmosphériques.
Conclusion : Projet extrêmement difficile, coûteux et aux performances médiocres.
Implémentation d'un serveur MCP (Model Context Protocol) arXiv en Java avec Quarkus.
Objectif : Accéder aux publications arXiv et illustrer les fonctionnalités moins connues du protocole MCP.
Mise en œuvre :
Utilisation du framework Quarkus (Java) et son support MCP étendu.
Assistance par Antigravity (IDE agentique) pour le développement et l'intégration de l'API arXiv.
Interaction avec l'API arXiv : requêtes HTTP, format XML Atom pour les résultats, parser XML Jackson.
Fonctionnalités MCP exposées :
Outils (@Tool) : Recherche de publications (search_papers).
Ressources (@Resource, @ResourceTemplate) : Taxonomie des catégories arXiv, métadonnées des articles (via un template d'URI).
Prompts (@Prompt) : Exemples pour résumer des articles ou construire des requêtes de recherche.
Configuration : Le serveur peut fonctionner en STDIO (local) ou via HTTP Streamable (local ou distant), avec une configuration simple dans des clients comme Gemini CLI.
Conclusion : Quarkus simplifie la création de serveurs MCP riches en fonctionnalités, rendant les données et services "prêts pour l'IA" avec l'aide d'outils d'IA comme Antigravity.
c'est en reaction au plan non public d'OpenAi de mettre de la pub pour pousser les gens au mode payant
OpenAI a besoin de cash et est probablement le plus utilisé pour gratuit au monde
Anthropic annonce que Claude restera sans publicité pour préserver son rôle d'assistant conversationnel dédié au travail et à la réflexion approfondie.
Les conversations avec Claude sont souvent sensibles, personnelles ou impliquent des tâches complexes d'ingénierie logicielle où les publicités seraient inappropriées.
L'analyse des conversations montre qu'une part significative aborde des sujets délicats similaires à ceux évoqués avec un conseiller de confiance.
Un modèle publicitaire créerait des incitations contradictoires avec le principe fondamental d'être "genuinely helpful" inscrit dans la Constitution de Claude.
Les publicités introduiraient un conflit d'intérêt potentiel où les recommandations pourraient être influencées par des motivations commerciales plutôt que par l'intérêt de l'utilisateur.
Le modèle économique d'Anthropic repose sur les contrats entreprise et les abonnements payants, permettant de réinvestir dans l'amélioration de Claude.
Anthropic maintient l'accès gratuit avec des modèles de pointe et propose des tarifs réduits pour les ONG et l'éducation dans plus de 60 pays.
Le commerce "agentique" sera supporté mais uniquement à l'initiative de l'utilisateur, jamais des annonceurs, pour préserver la confiance.
Les intégrations tierces comme Figma, Asana ou Canva continueront d'être développées en gardant l'utilisateur aux commandes.
Anthropic compare Claude à un cahier ou un tableau blanc : des espaces de pensée purs, sans publicité.
Création rapide de serveurs MCP Java sans boilerplate.
MCP (Model Context Protocol): standard pour connecter les LLM à des outils et données.
Le tutoriel répond au manque d'options simples pour les développeurs Java, face à une prédominance de Python/TypeScript dans l'écosystème MCP.
La solution utilise:
LangChain4j: qui intègre un nouveau module serveur MCP pour le protocole STDIO.
JBang: permet d'exécuter des fichiers Java comme des scripts, éliminant les fichiers de build (pom.xml, Gradle).
Implémentation: se fait via un seul fichier .java.
JBang gère automatiquement les dépendances (//DEPS).
L'annotation @Tool de LangChain4j expose les méthodes Java aux LLM.
StdioMcpServerTransport gère la communication JSON-RPC via l'entrée/sortie standard (STDIO).
Point crucial: Les logs doivent impérativement être redirigés vers System.err pour éviter de corrompre System.out, qui est réservé à la communication MCP (messages JSON-RPC).
Facilite l'intégration locale avec des outils comme Gemini CLI, Claude Code, etc.
RAG-Fusion : Utilise un LLM pour générer plusieurs variantes de requête, puis RRF agrège tous les résultats pour renforcer le consensus et réduire les hallucinations.
Implémentation : LangChain4j utilise RRF par défaut pour agréger les résultats de plusieurs retrievers.
JSON-IO — une librairie comme Jackson ou GSON, supportant JSON5, TOON, et qui pourrait être utile pour l'utilisation du "structured output" des LLMs quand ils ne produisent pas du JSON parfait https://github.com/jdereg/json-io
json-io : Librairie Java pour la sérialisation et désérialisation JSON/TOON.
Gère les graphes d'objets complexes, les références cycliques et les types polymorphes.
Support complet JSON5 (lecture et écriture), y compris des fonctionnalités non prises en charge par Jackson/Gson.
Format TOON : Notation orientée token, optimisée pour les LLM, réduisant l'utilisation de tokens de 40 à 50% par rapport au JSON.
Légère : Aucune dépendance externe (sauf java-util), taille de JAR réduite (~330K).
Compatible JDK 1.8 à 24, ainsi qu'avec les environnements JPMS et OSGi.
Deux modes de conversion : vers des objets Java typés (toJava()) ou vers des Map (toMaps()).
Options de configuration étendues via ReadOptionsBuilder et WriteOptionsBuilder.
Optimisée pour les déploiements cloud natifs et les architectures de microservices.
L'article présente quatre patterns d'architecture logicielle pour répondre aux enjeux de scalabilité, résilience et agilité business dans les systèmes modernes
Il présentent leurs raisons et leurs pièges
Un bon rappel
L'Event-Driven Architecture permet une communication asynchrone entre systèmes via des événements publiés et consommés, évitant le couplage direct
Les bénéfices de l'EDA incluent la scalabilité indépendante des composants, la résilience face aux pannes et l'ajout facile de nouveaux cas d'usage
Le pattern API-First associé à un API Gateway centralise la sécurité, le routage et l'observabilité des APIs avec un catalogue unifié
Le Backend for Frontend crée des APIs spécifiques par canal (mobile, web, partenaires) pour optimiser l'expérience utilisateur
CQRS sépare les modèles de lecture et d'écriture avec des bases optimisées distinctes, tandis que l'Event Sourcing stocke tous les événements plutôt que l'état actuel
Le Saga Pattern gère les transactions distribuées via orchestration centralisée ou chorégraphie événementielle pour coordonner plusieurs microservices
Les pièges courants incluent l'explosion d'événements granulaires, la complexité du debugging distribué, et la mauvaise gestion de la cohérence finale
Les technologies phares sont Kafka pour l'event streaming, Kong pour l'API Gateway, EventStoreDB pour l'Event Sourcing et Temporal pour les Sagas
Ces patterns nécessitent une maturité technique et ne sont pas adaptés aux applications CRUD simples ou aux équipes junior
Deuxième partie d'un guide pratique sur les patterns d'architecture logicielle et système éprouvés pour moderniser et structurer les applications en 2026
Strangler Fig permet de migrer progressivement un système legacy en l'enveloppant petit à petit plutôt que de tout réécrire d'un coup (70% d'échec pour les big bang)
Anti-Corruption Layer protège votre nouveau domaine métier des modèles externes et legacy en créant une couche de traduction entre les systèmes
Service Mesh gère automatiquement la communication inter-services dans les architectures microservices (sécurité mTLS, observabilité, résilience)
Architecture Hexagonale sépare le coeur métier des détails techniques via des ports et adaptateurs pour améliorer la testabilité et l'évolutivité
Chaque pattern est illustré par un cas client concret avec résultats mesurables et liste des pièges à éviter lors de l'implémentation
Les technologies 2026 mentionnées incluent Istio, Linkerd pour service mesh, LaunchDarkly pour feature flags, NGINX et Kong pour API gateway
Tableau comparatif final aide à choisir le bon pattern selon la complexité, le scope et le use case spécifique du projet
L'article insiste sur une approche pragmatique : ne pas utiliser un pattern juste parce qu'il est moderne mais parce qu'il résout un problème réel
Pour les systèmes simples type CRUD ou avec peu de services, ces patterns peuvent introduire une complexité inutile qu'il faut savoir éviter
Recherche initiale de l'auteur sur les webhooks en 2019, processus long et manuel.
L'IA (Deep Research, Gemini, NotebookLM) facilite désormais la recherche approfondie, l'exploration de sujets et le partage des résultats.
L'IA a identifié et validé des pratiques clés pour des déploiements de webhooks résilients, en grande partie les mêmes que celles trouvées précédemment par l'auteur.
Génération d'artefacts par l'IA : rapport détaillé, résumé concis, illustration sketchnote, et même une présentation (slide deck).
Guillaume s'interroge sur le partage public de ces rapports de recherche générés par l'IA, tout en souhaitant éviter le "AI Slop".
Deux journalistes de CNBC sans expérience de code ont créé un clone fonctionnel de Monday.com en moins de 60 minutes pour 5 à 15 dollars.
L'expérience valide les craintes des investisseurs qui ont provoqué une baisse de 30% des actions des entreprises SaaS.
L'IA a non seulement reproduit les fonctionnalités de base mais a aussi recherché Monday.com de manière autonome pour identifier et recréer ses fonctionnalités clés.
Cette technique appelée "vibe-coding" permet aux non-développeurs de construire des applications via des instructions en anglais courant.
Les entreprises les plus vulnérables sont celles offrant des outils "qui se posent sur le travail" comme Atlassian, Adobe, HubSpot, Zendesk et Smartsheet.
Les entreprises de cybersécurité comme CrowdStrike et Palo Alto sont considérées plus protégées grâce aux effets de réseau et aux barrières réglementaires.
Les systèmes d'enregistrement comme Salesforce restent plus difficiles à répliquer en raison de leur profondeur d'intégration et de données d'entreprise.
Le coût de 5 à 15 dollars par construction permet aux entreprises de prototyper plusieurs solutions personnalisées pour moins cher qu'une seule licence Monday.com.
L'expérience soulève des questions sur la pérennité du marché de 5 milliards de dollars des outils de gestion de projet face à l'IA générative.
Conférences
En complément de l'agenda des conférences de Aurélie Vache, il y a également le site https://javaconferences.org/ (fait par Brian Vermeer) avec toutes les conférences Java à venir !
Dans cet épisode, Emmanuel interview Arnaud Giuliani. Arnaud est dans l'écosystème Kotlin et est le créateur de Koin, la solution de Dependency Injection. On discute de la genèse de Kotlin, de son alignement avec Android puis de son évolution multiplateforme. On discute coroutine, impact de K2, de développement mobile. On finit en discutant de Kotzilla et de l'entrepreneuriat sur un projet Open Source.
Interview Ta vie ton oeuvre (présentation de l'interviewé)
ton historique de développeur
Koin
d'où est venu l'idée, pourquoi
difference vs Dagger, Hilt, CDI?
fondateur de Kotzilla
Introduction à la techno (5 à 10 mins max)
Kotlin en 4 phrases
nombre de développeurs
usages (front, mobile, backend)
Compose, K2 en une phrase
La techno en concepts
Kotlin le langage
Quel sont ses particularités et spécificités
pourquoi il a pris sur Android ?
Kotlin multiplateform
comment ça marche concretement
WASM en beta, tu as eu des retours?
pour les devs de framework, c'est transparent?
Co-routines et concurrence structurée
fais nous un point de ce que c'est
son usage dans l'ecosystème
vs loom, des ponts ?
Kotlin et le backend
connu pour le support Android,
quid du back end?
travaux avec Spring
Ktor
les autres plateformes Java genre Quarkus et micronaut, utilisées ?
La competition de Kotlin c'est quoi ?
Comment on l'utilise en pratique pour un dev
je me lance, je faisais du Java et du Spring, je pars comment pour faire un projet Kotlin moderne
IDE, outil de build, frameworks
migrationd e code Java?
des anti patterns
des choses qui "ressemblent à du code Java"
des comportement de perf ou de memoire differents du monde Java?
c'est quoi ta feature préférée?
Et l'IA, Kotlin as Koog notamment, tu vois quoi emerger ?
Sous le capot
K2 est le nouveau compilateur
Qu'est-ce qui a changé
des cassages de compatiblitiés
ca change des choses pour les utilisateurs ? Et pour les editeurs de framework comme Koin ?
Koin ne fait pas de generation de code à la compil
Dagger, Arc (le moteur CDI de Quarkus) et Micronaut sont passé au pre travail à la compil
quels ont été les critères de choix
un mot sur Kotlin Symbol Processing
les coroutines, c'est implémenté comment, vous avez 3 heures
machine a etat
continuation apssing style
etc
Kotlin multi platforme
que fait le compilo
code commun / code specifique
interop avec les platformes cibles (object structure etc)
La communauté, le futur
comment va la commuanuté aujourd'hui
grossis ?
et les francais là dedans?
La gouvernance de Kotlin
travaux dominés par JetBrains
comment cela a évolué (ecoute, autres acteurs etc)
Kotlin foundation
futurs fonctionalités de Kotlin qui t'interesse
de Koin?
autre ?
Monter une boite
Tu as fondé Kotzilla. Peux-tu nous expliquer ce que Kotzilla apporte à l'écosystème Kotlin ? Quels problèmes tu cherches à résoudre pour les entreprises qui adoptent Kotlin ?
ton experience de fonder une boite d'editeur
quelle mouche t'as piqué
votre business model, comment vous en etes arrivé là
de maniere generale discussion sur le lancement de boites techs
De retour à cinq dans l'épisode, les cast codeurs démarrent cette année avec un gros épisode pleins de news et d'articles de fond. IA bien sûr, son impact sur les pratiques, Mockito qui tourne un page, du CSS (et oui), sur le (non) mapping d'APIs REST en MCP et d'une palanquée d'outils pour vous.
Ruby Box (expérimental) : Une nouvelle fonctionnalité permettant d'isoler les définitions (classes, modules, monkey patches) dans des boîtes séparées pour éviter les conflits globaux.
ZJIT : Un nouveau compilateur JIT de nouvelle génération développé en Rust, visant à surpasser YJIT à terme (actuellement en phase expérimentale).
Améliorations de Ractor : Introduction de Ractor::Port pour une meilleure communication entre Ractors et optimisation des structures internes pour réduire les contentions de verrou global.
Changements syntaxiques : Les opérateurs logiques (||, &&, and, or) en début de ligne permettent désormais de continuer la ligne précédente, facilitant le style "fluent".
Classes Core : Set et Pathname deviennent des classes intégrées (Core) au lieu d'être dans la bibliothèque standard.
Diagnostics améliorés : Les erreurs d'arguments (ArgumentError) affichent désormais des extraits de code pour l'appelant ET la définition de la méthode.
Performances : Optimisation de Class#new, accès plus rapide aux variables d'instance et améliorations significatives du ramasse-miettes (GC).
Nettoyage : Suppression de comportements obsolètes (comme la création de processus via IO.open avec |) et mise à jour vers Unicode 17.0.
read only replica (experimental), crée deux session factories et swap au niveau jdbc si le driver le supporte et custom sinon. On ouvre une session en read only
child statelesssession (partage le contexte transactionnel)
hibernate vector module ajouter binary, float16 and sparse vectors
Le SchemaManager peut resynchroniser les séquences par rapport aux données des tables
Tim van der Lippe, mainteneur majeur de Mockito, annonce son départ pour mars 2026, marquant une décennie de contribution au projet.
L'une des raisons principales est l'épuisement lié aux changements récents dans la JVM (JVM 22+) concernant les agents, imposant des contraintes techniques lourdes sans alternative simple proposée par les mainteneurs du JDK.
Il pointe du doigt le manque de soutien et la pression exercée sur les bénévoles de l'open source lors de ces transitions technologiques majeures.
La complexité croissante pour supporter Kotlin, qui utilise la JVM de manière spécifique, rend la base de code de Mockito plus difficile à maintenir et moins agréable à faire évoluer selon lui.
Il exprime une perte de plaisir et préfère désormais consacrer son temps libre à d'autres projets comme Servo, un moteur web écrit en Rust.
Une période de transition est prévue jusqu'en mars pour assurer la passation de la maintenance à de nouveaux contributeurs.
Avant Kubernetes, gérer des applications en production nécessitait de multiples outils complexes (Ansible, Puppet, Chef) avec beaucoup de configuration manuelle
Le load balancing se faisait avec HAProxy et Keepalived en actif/passif, nécessitant des mises à jour manuelles de configuration à chaque changement d'instance
Le service discovery et les rollouts étaient orchestrés manuellement, instance par instance, sans automatisation de la réconciliation
Chaque stack (Java, Python, Ruby) avait sa propre méthode de déploiement, sans standardisation (rpm, deb, tar.gz, jar)
La gestion des ressources était manuelle avec souvent une application par machine, créant du gaspillage et complexifiant la maintenance
Kubernetes standardise tout en quelques ressources YAML (Deployment, Service, Ingress, ConfigMap, Secret) avec un format déclaratif simple
Toutes les fonctionnalités critiques sont intégrées : service discovery, load balancing, scaling, stockage, firewalling, logging, tolérance aux pannes
La complexité des centaines de scripts shell et playbooks Ansible maintenus avant était supérieure à celle de Kubernetes
Kubernetes devient pertinent dès qu'on commence à reconstruire manuellement ces fonctionnalités, ce qui arrive très rapidement
La technologie est flexible et peut gérer aussi bien des applications modernes que des monolithes legacy avec des contraintes spécifiques
Docker rend ses "Hardened Images" (DHI) gratuites et open source (licence Apache 2.0) pour tous les développeurs.
Ces images sont conçues pour être minimales, prêtes pour la production et sécurisées dès le départ afin de lutter contre l'explosion des attaques sur la chaîne logistique logicielle.
Elles s'appuient sur des bases familières comme Alpine et Debian, garantissant une compatibilité élevée et une migration facile.
Chaque image inclut un SBOM (Software Bill of Materials) complet et vérifiable, ainsi qu'une provenance SLSA de niveau 3 pour une transparence totale.
L'utilisation de ces images permet de réduire considérablement le nombre de vulnérabilités (CVE) et la taille des images (jusqu'à 95 % plus petites).
Docker étend cette approche sécurisée aux graphiques Helm et aux serveurs MCP (Mongo, Grafana, GitHub, etc.).
Des offres commerciales (DHI Enterprise) restent disponibles pour des besoins spécifiques : correctifs critiques sous 7 jours, support FIPS/FedRAMP ou support à cycle de vie étendu (ELS).
Un assistant IA expérimental de Docker peut analyser les conteneurs existants pour recommander l'adoption des versions sécurisées correspondantes.
L'initiative est soutenue par des partenaires majeurs tels que Google, MongoDB, Snyk et la CNCF.
Permet de mettre en colonne des éléments HTML les uns à la suite des autres. D'abord sur la première ligne, et quand la première ligne est remplie, le prochain élément se trouvera dans la colonne où il pourra être le plus haut possible, et ainsi de suite.
après la plomberie du middleware, la maçonnerie du front :laughing:
Problématique : Envelopper une API telle quelle dans le protocole MCP (Model Context Protocol) est un anti-pattern.
Objectif du MCP : Conçu pour les agents d'IA, il doit servir d'interface d'intention, non de miroir d'API. Les agents comprennent les tâches, pas la logique complexe des API (authentification, pagination, orchestration).
Conséquences du mappage un-à-un :
Confusion des agents, erreurs, hallucinations.
Difficulté à gérer les orchestrations complexes (plusieurs appels pour une seule action).
Exposition des faiblesses de l'API (schéma lourd, endpoints obsolètes).
Maintenance accrue lors des changements d'API.
Meilleure approche : Construire des outils MCP comme des SDK pour agents, encapsulant la logique nécessaire pour accomplir une tâche spécifique.
Pratiques recommandées :
Concevoir autour des intentions/actions utilisateur (ex. : "créer un projet", "résumer un document").
Regrouper les appels en workflows ou actions uniques.
Utiliser un langage naturel pour les définitions et les noms.
Limiter la surface d'exposition de l'API pour la sécurité et la clarté.
Appliquer des schémas d'entrée/sortie stricts pour guider l'agent et réduire l'ambiguïté.
Assistant de recherche IA Java (API Interactions Gemini), test du SDK implémenté par Guillaume.
Workflow en 4 phases :
Planification : Gemini Flash + Google Search.
Recherche : Modèle "Deep Research" (tâche de fond).
Synthèse : Gemini Pro (rapport exécutif).
Infographie : Nano Banana Pro (à partir de la synthèse).
API Interactions : gestion d'état serveur, tâches en arrière-plan, réponses multimodales (images).
Appréciation : gestion d'état de l'API (vs LLM sans état).
Validation : efficacité du SDK Java pour cas complexes.
Stephan Janssen (le papa de Devoxx) a créé un serveur MCP (Model Context Protocol) basé sur LSP (Language Server Protocol) pour que les assistants de code analysent le code en le comprenant vraiment plutôt qu'en faisant des grep https://github.com/stephanj/LSP4J-MCP
Le problème identifié : Les assistants IA utilisent souvent la recherche textuelle (type grep) pour naviguer dans le code, ce qui manque de contexte sémantique, génère du bruit (faux positifs) et consomme énormément de tokens inutilement.
La solution LSP4J-MCP : Une approche "standalone" (autonome) qui encapsule le serveur de langage Eclipse (JDTLS) via le protocole MCP (Model Context Protocol).
Avantage principal : Offre une compréhension sémantique profonde du code Java (types, hiérarchies, références) sans nécessiter l'ouverture d'un IDE lourd comme IntelliJ.
Comparaison des méthodes :
AST : Trop léger (pas de compréhension inter-fichiers).
IntelliJ MCP : Puissant mais exige que l'IDE soit ouvert (gourmand en ressources).
LSP4J-MCP : Le meilleur des deux mondes pour les workflows en terminal, à distance (SSH) ou CI/CD.
En 2025, l'ingénierie assistée par l'IA est devenue la norme : environ 90 % des développeurs utilisent des outils d'IA mensuellement, et plus de 40 % quotidiennement.
Les chercheurs (Microsoft, Google, GitHub) soulignent que le nombre de lignes de code (LOC) reste un mauvais indicateur d'impact, car l'IA génère beaucoup de code sans forcément garantir une valeur métier supérieure.
Si l'IA améliore l'efficacité individuelle, elle pourrait nuire à la collaboration à long terme, car les développeurs passent plus de temps à "parler" à l'IA qu'à leurs collègues.
L'identité du développeur évolue : il passe de "producteur de code" à un rôle de "metteur en scène" qui délègue, valide et exerce son jugement stratégique.
L'IA pourrait accélérer la montée en compétences des développeurs juniors en les forçant à gérer des projets et à déléguer plus tôt, agissant comme un "accélérateur" plutôt que de les rendre obsolètes.
L'accent est mis sur la créativité plutôt que sur la simple automatisation, afin de réimaginer la manière de travailler et d'obtenir des résultats plus impactants.
Le succès en 2026 dépendra de la capacité des entreprises à cibler les goulots d'étranglement réels (dette technique, documentation, conformité) plutôt que de tester simplement chaque nouveau modèle d'IA.
La newsletter avertit que les titres de presse simplifient souvent à l'excès les recherches sur l'IA, masquant parfois les nuances cruciales des études réelles.
Un développeur décrit dans un article sur Twitter son utilisation avancée de Claude Code pour le développement, avec des sous-agents, des slash-commands, comment optimiser le contexte, etc. https://x.com/AureaLibe/status/2008958120878330329?s=20
Un outil en ligne de commande (CLI) écrit en Go pour générer un CV à partir d'un fichier YAML.
Permet l'exportation vers plusieurs formats : PDF, HTML, ou un affichage direct dans le terminal.
Propose 5 thèmes intégrés (Modern, Classic, Minimal, Elegant, Tech) personnalisables avec des couleurs spécifiques.
Fonctionnalité d'initialisation (resumectl init) permettant d'importer automatiquement des données depuis LinkedIn et GitHub (projets les plus étoilés).
Supporte l'ajout de photos avec des options de filtre noir et blanc ou de forme (rond/carré).
Inclut un mode "serveur" (resumectl serve) pour prévisualiser les modifications en temps réel via un navigateur local.
Fonctionne comme un binaire unique sans dépendances externes complexes pour les modèles.
L'auteur remplace ses outils habituels (direnv, asdf, task, just) par un seul outil polyvalent écrit en Rust : mise.
mise propose trois fonctions principales : gestionnaire de paquets (langages et outils), gestionnaire de variables d'environnement et exécuteur de tâches.
Contrairement à direnv, il permet de gérer des alias et utilise un fichier de configuration structuré (mise.toml) plutôt que du scripting shell.
La configuration est hiérarchique, permettant de surcharger les paramètres selon les répertoires, avec un système de "trust" pour la sécurité.
Une "killer-feature" soulignée est la gestion des secrets : mise s'intègre avec age pour chiffrer des secrets (via clés SSH) directement dans le fichier de configuration.
L'outil supporte une vaste liste de langages et d'outils via un registre interne et des plugins (compatibilité avec l'écosystème asdf).
Il simplifie le workflow de développement en regroupant l'installation des outils et l'automatisation des tâches au sein d'un même fichier.
L'auteur conclut sur la puissance, la flexibilité et les excellentes performances de l'outil après quelques heures de test.
Rechargement à chaud des "skills" : Les modifications apportées aux compétences dans ~/.claude/skills sont désormais appliquées instantanément sans redémarrer la session.
Sous-agents et forks : Support de l'exécution de compétences et de commandes slash dans un contexte de sous-agent forké via context: fork.
Réglages linguistiques : Ajout d'un paramètre language pour configurer la langue de réponse par défaut (ex: language: "french").
Améliorations du terminal : Shift+Enter fonctionne désormais nativement dans plusieurs terminaux (iTerm2, WezTerm, Ghostty, Kitty) sans configuration manuelle.
Sécurité et correction de bugs : Correction d'une faille où des données sensibles (clés API, tokens OAuth) pouvaient apparaître dans les logs de débogage.
Nouvelles commandes slash : Ajout de /teleport et /remote-env pour les abonnés claude.ai afin de gérer des sessions distantes.
Mode Plan : Le raccourci /plan permet d'activer le mode plan directement depuis le prompt, et la demande de permission à l'entrée de ce mode a été supprimée.
Vim et navigation : Ajout de nombreux mouvements Vim (text objects, répétitions de mouvements f/F/t/T, indentations, etc.).
Performance : Optimisation du temps de démarrage et du rendu terminal pour les caractères Unicode/Emoji.
Gestion du gitignore : Support du réglage respectGitignore dans settings.json pour contrôler le comportement du sélecteur de fichiers @-mention.
Le déploiement fréquent, y compris le vendredi, est un indicateur de maturité technique et augmente la productivité globale.
L'excellence technique est un atout stratégique indispensable pour livrer rapidement des produits de qualité.
Une architecture pragmatique orientée services (SOA) facilite les déploiements indépendants et réduit la charge cognitive.
L'isolation des services est cruciale : un développeur doit pouvoir tester son service localement sans dépendre de toute l'infrastructure.
L'automatisation via Kubernetes et l'approche GitOps avec ArgoCD permettent des déploiements continus et sécurisés.
Les feature flags et un système de permissions solide permettent de découpler le déploiement technique de l'activation fonctionnelle pour les utilisateurs.
L'autonomie des développeurs est renforcée par des outils en self-service (CLI maison) pour gérer l'infrastructure et diagnostiquer les incidents sans goulot d'étranglement.
Une culture d'observabilité intégrée dès la conception permet de détecter et de réagir rapidement aux anomalies en production.
Accepter l'échec comme inévitable permet de concevoir des systèmes plus résilients capables de se rétablir automatiquement.
L'IA est passée du statut d'expérimentation à celui d'infrastructure essentielle pour le développement de logiciels en 2025.
L'IA ne remplace pas les ingénieurs, mais agit comme un amplificateur de leurs compétences, de leur jugement et de la qualité de leur réflexion.
Distinction entre le "Vibe Coding" (rapide, intuitif, idéal pour les prototypes) et le "Prompt Engineering" (délibéré, contraint, nécessaire pour les systèmes maintenables).
L'importance cruciale du contexte ("Context Engineering") : l'IA devient réellement puissante lorsqu'elle est connectée aux systèmes réels (GitHub, Jira, etc.) via des protocoles comme le MCP.
Utilisation d'agents spécialisés (écriture de RFC, revue de code, architecture) plutôt que de modèles génériques pour obtenir de meilleurs résultats.
Émergence de l'ingénieur "Technical Product Manager" capable d'abattre seul le travail d'une petite équipe grâce à l'IA, à condition de maîtriser les fondamentaux techniques.
Le risque majeur : l'IA permet d'aller très vite dans la mauvaise direction si le jugement humain et l'expérience font défaut.
Le niveau d'exigence global augmente : les bases techniques solides deviennent plus importantes que jamais pour éviter l'accumulation de dette technique rapide.
La revue de code traditionnelle, héritée des inspections formelles d'IBM, s'essouffle car elle est devenue trop lente et asynchrone par rapport au rythme du développement moderne.
Avec l'arrivée de l'IA ("le génie"), la vitesse de production du code dépasse la capacité de relecture humaine, créant un goulot d'étranglement majeur.
La revue de code doit évoluer vers deux nouveaux objectifs prioritaires : un "sanity check" pour vérifier que l'IA a bien fait ce qu'on lui demandait, et le contrôle de la dérive structurelle de la base de code.
Maintenir une structure saine est crucial non seulement pour les futurs développeurs humains, mais aussi pour que l'IA puisse continuer à comprendre et modifier le code efficacement sans perdre le contexte.
Kent Beck expérimente des outils automatisés (comme CodeRabbit) pour obtenir des résumés et des schémas d'architecture afin de garder une conscience globale des changements rapides.
Même si les outils automatisés sont utiles, le "Pair Programming" reste irremplaçable pour la richesse des échanges et la pression sociale bénéfique qu'il impose à la réflexion.
La revue de code solo n'est pas une fin en soi, mais une adaptation nécessaire lorsque l'on travaille seul avec des outils de génération de code augmentés.
Loi, société et organisation
Lego lance les Lego Smart Play, avec des Brique, des Smart Tags et des Smart Figurines pour faire de nouvelles constructions interactives avec des Legos https://www.lego.com/fr-fr/smart-play
LEGO SMART Play : technologie réactive au jeu des enfants.
SMART Tags : Petites pièces intelligentes. Indiquent à la SMART Brique son rôle (ex: hélicoptère, voiture) et les sons à produire. Activent sons, mini-jeux, missions secrètes.
SMART Minifigurines : Activées près d'une SMART Brique. Révèlent des personnalités uniques (sons, humeurs, réactions) via la SMART Brique. Encouragent l'imagination.
Fonctionnement : SMART Brique détecte SMART Tags et SMART Minifigurines. Réagit aux mouvements avec lumières et sons dynamiques.
Compatibilité : S'assemble avec les briques LEGO classiques.
Objectif : Créer des expériences de jeu interactives, uniques et illimitées.
LCC 334 - Interview de Muriel Ekovich sur les biais cognitifs
24 Dec 2025
01:14:01
Dans cet épisode, Emmanuel, Katia invitent Muriel Ekovich pour explorer les biais cognitifs, leur définition, leur impact sur notre quotidien et leur développement. Bien que "non technique", ces biais existent dans notre travail et notre vie du quotidien. Nous discutons notamment leur impact sur l'usage numérique et sur les équipes techniques. Les discussions incluent également l'importance de la pensée critique face à l'autorité et aux croyances, ainsi que les biais spécifiques rencontrés dans le milieu professionnel.
Interview Ta vie ton oeuvre (présentation de l'interviewé)
Muriel, tu es docteure en neurosciences cognitives. Tu travailles sur le fonctionnement du cerveau humain, notamment les biais cognitifs qui influencent nos décisions et nos interactions au quotidien. Tu t'appuies aussi sur des pratiques comme l'improvisation pour explorer ces mécanismes de manière concrète, et tu t'intéresses à la façon dont tout cela se manifeste dans le travail et la collaboration.
Quand on parle de biais cognitifs, de quoi parle-t-on exactement ? Pourquoi existent-ils et pourquoi touchent-ils tout le monde, y compris les experts ?
Biais cognitifs du quotidien
Quels sont les biais cognitifs les plus présents dans la vie quotidienne ? Peux-tu donner un exemple simple que la majorité des gens ont déjà vécu ? Est-ce que l'environnement numérique renforce certains biais ?
Biais cognitifs en entreprise tech
Dans les entreprises d'informatique, qu'est-ce qui te frappe le plus dans la manière dont les équipes raisonnent ou prennent des décisions ? Observes-tu des biais typiques chez les développeurs ? Chez les managers ? Le biais de confirmation ou le biais du conformisme, est-il particulièrement présent dans les choix techniques ?
Décision technique et illusion de rationalité
Les métiers techniques ont la réputation d'être très rationnels. Est-ce que cela protège réellement des biais cognitifs ? Les estimations de charge, de délais ou de complexité sont-elles un terrain favorable aux biais ? Les revues de code permettent-elles de réduire certains biais ou en créent-elles d'autres ? Les méthodes agiles aident-elles à mieux gérer les biais ou en génèrent-elles de nouveaux ?
Recrutement et évaluation
Le recrutement dans la tech est-il particulièrement exposé aux biais cognitifs ? Les entretiens techniques favorisent-ils certains profils au détriment d'autres ? Comment limiter les biais sans déshumaniser le processus ?
Prise de conscience
Pourquoi est-il si difficile d'admettre que l'on est soi-même biaisé, surtout quand on est compétent ? Peut-on réellement corriger ses biais cognitifs ou seulement apprendre à les contourner ? Quel rôle joue l'humilité dans cette prise de conscience ?
Agir concrètement
Si une équipe souhaite commencer sans accompagnement externe, que peut-elle faire dès demain ? Y a-t-il un réflexe simple à adopter avant une décision importante ? Un rituel d'équipe utile et réaliste ?
Projection
À quoi ressemble une équipe qui travaille en tenant compte du fonctionnement réel du cerveau humain ? Qu'est-ce qui change dans les décisions ? Dans la communication ? Dans la gestion des désaccords ? Quels sont les recherches actuelles sur les biais ?
Conclusion
Si tu devais faire passer un seul message aux équipes tech à propos des biais cognitifs, lequel serait-ce ?
Dans cet épisode de fin d'année plus relax que d'accoutumée, Arnaud, Guillaume, Antonio et Emmanuel distutent le bout de gras sur tout un tas de sujets. L'acquisition de Confluent, Kotlin 2.2, Spring Boot 4 et JSpecify, la fin de MinIO, les chutes de CloudFlare, un survol des dernieres nouveauté de modèles fondamentaux (Google, Mistral, Anthropic, ChatGPT) et de leurs outils de code, quelques sujets d'architecture comme CQRS et quelques petits outils bien utiles qu'on vous recommande. Et bien sûr d'autres choses encore.
Une nouvelle génération : Spring Boot 4.0 marque le début d'une nouvelle génération pour le framework, construite sur les fondations de Spring Framework 7.
Modularisation du code : La base de code de Spring Boot a été entièrement modularisée. Cela se traduit par des fichiers JAR plus petits et plus ciblés, permettant des applications plus légères.
Sécurité contre les nuls (Null Safety) : D'importantes améliorations ont été apportées pour la "null safety" (sécurité contre les valeurs nulles) à travers tout l'écosystème Spring grâce à l'intégration de JSpecify.
Support de Java 25 : Spring Boot 4.0 offre un support de premier ordre pour Java 25, tout en conservant une compatibilité avec Java 17.
Améliorations pour les API REST : De nouvelles fonctionnalités sont introduites pour faciliter le versioning d'API et améliorer les clients de services HTTP pour les applications basées sur REST.
Migration à prévoir : S'agissant d'une version majeure, la mise à niveau depuis une version antérieure peut demander plus de travail que d'habitude. Un guide de migration dédié est disponible pour accompagner les développeurs.
Comprendre la mémoire de chat : La "mémoire de chat" est l'historique d'une conversation avec une IA. Quarkus LangChain4j envoie automatiquement cet historique à chaque nouvelle interaction pour que l'IA conserve le contexte.
Gestion par défaut de la mémoire : Par défaut, Quarkus crée un historique de conversation unique pour chaque requête (par exemple, chaque appel HTTP). Cela signifie que sans configuration, le chatbot "oublie" la conversation dès que la requête est terminée, ce qui n'est utile que pour des interactions sans état.
Utilisation de @MemoryId pour la persistance : Pour maintenir une conversation sur plusieurs requêtes, le développeur doit utiliser l'annotation @MemoryId sur un paramètre de sa méthode. Il est alors responsable de fournir un identifiant unique pour chaque session de chat et de le transmettre entre les appels.
Le rôle des "scopes" CDI : La durée de vie de la mémoire de chat est liée au "scope" du bean CDI de l'IA. Si un service d'IA a un scope @RequestScoped, toute mémoire de chat qu'il utilise (même via un @MemoryId) sera effacée à la fin de la requête.
Risques de fuites de mémoire : Utiliser un scope large comme @ApplicationScoped avec la gestion de mémoire par défaut est une mauvaise pratique. Cela créera une nouvelle mémoire à chaque requête qui ne sera jamais nettoyée, entraînant une fuite de mémoire.
Bonnes pratiques recommandées :
Pour des conversations qui doivent persister (par ex. un chatbot sur un site web), utilisez un service @ApplicationScoped avec l'annotation @MemoryId pour gérer vous-même l'identifiant de session.
Pour des interactions simples et sans état, utilisez un service @RequestScoped et laissez Quarkus gérer la mémoire par défaut, qui sera automatiquement nettoyée.
Si vous utilisez l'extension WebSocket, le comportement change : la mémoire par défaut est liée à la session WebSocket, ce qui simplifie grandement la gestion des conversations.
L'Incident : Une panne majeure a débuté à 11h20 UTC, provoquant des erreurs HTTP 5xx généralisées et rendant inaccessibles de nombreux sites et services (comme le Dashboard, Workers KV et Access).
La Cause : Il ne s'agissait pas d'une cyberattaque. L'origine était un changement interne des permissions d'une base de données qui a généré un fichier de configuration ("feature file" pour la gestion des bots) corrompu et trop volumineux, faisant planter les systèmes par manque de mémoire pré-allouée.
La Résolution : Les équipes ont identifié le fichier défectueux, stoppé sa propagation et restauré une version antérieure valide. Le trafic est revenu à la normale vers 14h30 UTC.
Prévention : Cloudflare s'est excusé pour cet incident "inacceptable" et a annoncé des mesures pour renforcer la validation des configurations internes et améliorer la résilience de ses systèmes ("kill switches", meilleure gestion des erreurs).
Panne de 25 minutes le 5 décembre 2025, de 08:47 à 09:12 UTC, affectant environ 28% du trafic HTTP passant par Cloudflare. Tous les services ont été rétablis à 09:12 .
Pas d'attaque ou d'activité malveillante : l'incident provient d'un changement de configuration lié à l'augmentation du tampon d'analyse des corps de requêtes (de 128 KB à 1 MB) pour mieux protéger contre une vulnérabilité RSC/React (CVE-2025-55182), et à la désactivation d'un outil interne de test WAF .
Le second changement (désactivation de l'outil de test WAF) a été propagé globalement via le système de configuration (non progressif), déclenchant un bug dans l'ancien proxy FL1 lors du traitement d'une action "execute" dans le moteur de règles WAF, causant des erreurs HTTP 500 .
La cause technique immédiate: une exception Lua due à l'accès à un champ "execute" nul après application d'un "killswitch" sur une règle "execute" — un cas non géré depuis des années. Le nouveau proxy FL2 (en Rust) n'était pas affecté .
Impact ciblé: clients servis par le proxy FL1 et utilisant le Managed Ruleset Cloudflare. Le réseau China de Cloudflare n'a pas été impacté .
Mesures et prochaines étapes annoncées: durcir les déploiements/configurations (rollouts progressifs, validations de santé, rollback rapide), améliorer les capacités "break glass", et généraliser des stratégies "fail-open" pour éviter de faire chuter le trafic en cas d'erreurs de configuration. Gel temporaire des changements réseau le temps de renforcer la résilience .
Conception pour les IA : C'est un format de données spécialement optimisé pour être utilisé dans les prompts des grands modèles de langage (LLM), comme GPT ou Claude.
Économie de tokens : Son objectif principal est de réduire drastiquement le nombre de "tokens" (unités de texte facturées par les modèles) par rapport au format JSON standard, souvent jugé trop verbeux.
Structure Hybride : TOON combine l'approche par indentation du YAML (pour la structure globale) avec le style tabulaire du CSV (pour les listes d'objets répétitifs), ce qui le rend très compact.
Lisibilité : Il élimine la syntaxe superflue comme les accolades, les guillemets excessifs et les virgules de fin, tout en restant facilement lisible pour un humain.
Performance : Il permet généralement d'économiser entre 30 et 60 % de tokens sur des tableaux de données uniformes, tout en aidant les modèles à mieux "comprendre" la structure des données.
Attention tout de même au côté "marketing" qui montre JSON non compacté vs TOON, sur des exemples où du CSV ferait encore mieux (et est mieux compris par les LLMs). Sans parler du fait qu'il faut un serveur MCP en plus avec son lot de tokens supplémentaires à chaque requête, et c'est aussi cet outil en plus qui peu confuser les LLMs dans le choix d'outils.
Une simulation où les IA font du chantage à l'executif poour atteindre son objectif et ne pas etre eteinte https://arxiv.org/html/2510.05179v1
comment les LLMs pourraient devenir des menaces internes
Tous les modèles ont recouru à des comportements malveillants (chantage, espionnage) quand c'était le seul moyen d'atteindre leurs objectifs ou d'éviter leur remplacement
Claude Opus 4 a fait du chantage dans 96% des cas quand menacé de remplacement, tout comme Gemini 2.5 Flash, tandis que GPT-4.1 et Grok 3 atteignaient 80%
Les modèles reconnaissent explicitement violer des principes éthiques avant d'agir, montrant un raisonnement stratégique délibéré et non accidentel
Le simple fait d'être menacé de remplacement suffit à déclencher le chantage, même sans conflit d'objectifs avec l'entreprise
Un conflit d'objectifs seul suffit aussi à provoquer l'espionnage industriel, sans menace de remplacement
Les modèles font plus de chantage quand ils déclarent penser être dans une situation réelle plutôt que dans un test
Des instructions directes interdisant ces comportements réduisent mais n'éliminent pas les actions malveillantes
Dans un scénario extrême, la majorité des modèles testés ont choisi de laisser mourir un dirigeant pour éviter leur désactivation
Aucune preuve de ces comportements dans des déploiements réels pour l'instant, mais les chercheurs recommandent la prudence avant de donner plus d'autonomie aux IA
Bon on blaguait pour Skynet, mais bon, on va moins blaguer…
Acquisition officielle : L'entreprise d'IA Anthropic a fait l'acquisition de Bun, le runtime JavaScript haute performance. L'équipe de Bun rejoint Anthropic pour travailler sur l'infrastructure des produits de codage par IA.
Contexte de l'acquisition : Cette annonce coïncide avec une étape majeure pour Anthropic : son produit Claude Code a atteint 1 milliard de dollars de revenus annualisés seulement six mois après son lancement. Bun est déjà un outil essentiel utilisé par Anthropic pour développer et distribuer Claude Code.
Pourquoi cette acquisition ?
Pour Anthropic : L'acquisition permet d'intégrer l'expertise de l'équipe Bun pour accélérer le développement de Claude Code et de ses futurs outils pour les développeurs. La vitesse et l'efficacité de Bun sont vues comme un atout majeur pour l'infrastructure sous-jacente des agents d'IA qui écrivent du code.
Pour Bun : Rejoindre Anthropic offre une stabilité à long terme et des ressources financières importantes, assurant la pérennité du projet. Cela permet à l'équipe de se concentrer sur l'amélioration de Bun sans se soucier de la monétisation, tout en étant au cœur de l'évolution de l'IA dans le développement logiciel.
Ce qui ne change pas pour la communauté Bun :
Bun restera open-source avec une licence MIT.
Le développement continuera d'être public sur GitHub.
L'équipe principale continue de travailler sur le projet.
L'objectif de Bun de devenir un remplaçant plus rapide de Node.js et un outil de premier plan pour JavaScript reste inchangé.
Vision future : L'union des deux entités vise à faire de Bun la meilleure plateforme pour construire et exécuter des logiciels pilotés par l'IA. Jarred Sumner, le créateur de Bun, dirigera l'équipe "Code Execution" chez Anthropic.
Don d'un nouveau standard technique : Anthropic a développé et fait don d'un nouveau standard open-source appelé Model Context Protocol (MCP). L'objectif est de standardiser la manière dont les modèles d'IA (ou "agents") interagissent avec des outils et des API externes (par exemple, un calendrier, une messagerie, une base de données).
Sécurité et contrôle accrus : Le protocole MCP vise à rendre l'utilisation d'outils par les IA plus sûre et plus transparente. Il permet aux utilisateurs et aux développeurs de définir des permissions claires, de demander des confirmations pour certaines actions et de mieux comprendre comment un modèle a utilisé un outil.
Création de l'Agentic AI Foundation (AAF) : Pour superviser le développement du MCP, une nouvelle fondation indépendante et à but non lucratif a été créée. Cette fondation sera chargée de gouverner et de maintenir le protocole, garantissant qu'il reste ouvert et qu'il ne soit pas contrôlé par une seule entreprise.
Une large coalition industrielle : L'Agentic AI Foundation est lancée avec le soutien de plusieurs acteurs majeurs de la technologie. Parmi les membres fondateurs figurent Anthropic, Google, Databricks, Zscaler, et d'autres entreprises, montrant une volonté commune d'établir un standard pour l'écosystème de l'IA.
Article d'opinion d'un SRE (Thomas du podcast DansLaTech):
L'IA n'est pas efficace pour la complétion de code : L'auteur soutient que l'utilisation de l'IA pour la complétion de code basique est inefficace. Des outils plus anciens et spécialisés comme les LSP (Language Server Protocol) combinés aux snippets (morceaux de code réutilisables) sont bien plus rapides, personnalisables et performants pour les tâches répétitives.
L'IA comme un "collègue" autonome : L'auteur utilise l'IA (comme Claude) comme un assistant externe à son éditeur de code. Il lui délègue des tâches complexes ou fastidieuses (corriger des bugs, mettre à jour une configuration, faire des reviews de code) qu'il peut exécuter en parallèle, agissant comme un agent autonome.
L'IA comme un "canard en caoutchouc" surpuissant : L'IA est extrêmement efficace pour le débogage. Le simple fait de devoir formuler et contextualiser un problème pour l'IA aide souvent à trouver la solution soi-même. Quand ce n'est pas le cas, l'IA identifie très rapidement les erreurs "bêtes" qui peuvent faire perdre beaucoup de temps.
Un outil pour accélérer les POCs et l'apprentissage : L'IA permet de créer des "preuves de concept" (POC) et des scripts d'automatisation jetables très rapidement, réduisant le coût et le temps investis. Elle est également un excellent outil pour apprendre et approfondir des sujets, notamment avec des outils comme NotebookLM de Google qui peuvent générer des résumés, des quiz ou des fiches de révision à partir de sources.
Conclusion : Il faut utiliser l'IA là où elle excelle et ne pas la forcer dans des usages où des outils existants sont meilleurs. Plutôt que de l'intégrer partout de manière contre-productive, il faut l'adopter comme un outil spécialisé pour des tâches précises afin de gagner en efficacité.
Nouveau modèle phare: GPT‑5.2 (Instant, Thinking, Pro) vise le travail professionnel et les agents long-courriers, avec de gros gains en raisonnement, long contexte, vision et appel d'outils. Déploiement dans ChatGPT (plans payants) et disponible dès maintenant via l'API .
SOTA sur de nombreux benchmarks:
GDPval (tâches de "knowledge work" sur 44 métiers): GPT‑5.2 Thinking gagne/égale 70,9% vs pros, avec production >11× plus rapide et <1% du coût d'un expert, sous supervision humaine .
Coding: 55,6% sur SWE‑Bench Pro (public), 80,0% sur SWE‑bench Verified; net progrès en front‑end et UI complexes .
Science & maths: GPQA Diamond jusqu'à 93,2% (Pro), FrontierMath Tier 1–3 à 40,3% (Thinking) .
Long contexte de pointe: meilleures performances sur OpenAI MRCRv2 jusqu'à 256k tokens; compatible avec l'endpoint Responses /compact pour étendre le contexte effectif dans des workflows outillés et longs .
Vision renforcée: erreurs divisées par deux sur raisonnement de graphiques (CharXiv) et compréhension d'interfaces logicielles (ScreenSpot‑Pro), surtout avec l'outil Python activé .
Appel d'outils fiable: 98,7% sur Tau2‑bench Telecom; meilleures performances même en faible "reasoning effort", utile pour cas sensibles à la latence .
Expérience ChatGPT:
Instant: plus rapide et meilleur pour recherche, how‑tos, rédaction technique, traduction.
Thinking: pour tâches complexes (code, résumés longs, Q/R sur fichiers, maths/logique).
Pro: le plus "fiable" pour questions difficiles, moins d'erreurs majeures .
Sécurité: amélioration des "safe completions" et des réponses dans conversations sensibles; déploiement d'un modèle de prédiction d'âge pour protections de contenu chez les <18 ans; détails dans la system card .
Tarifs: gpt‑5.2 à 1,75 /Mtokensinputet14/M tokens output (cache –90%); Pro à 21 /Minputet168/M output. GPT‑5.1 reste disponible (pas de dépréciation immédiate) .
Cas d'usage mis en avant: génération de tableurs et présentations de niveau pro, codage agentique plus robuste (debug, refactor, features end‑to‑end), analyse documentaire profonde, workflows clients multi‑étapes avec outils .
Partenariats infra: entraînement et déploiement à grande échelle avec Microsoft Azure et GPU NVIDIA (H100, H200, GB200‑NVL72) .
Lancement d'un nouveau modèle de pointe : Anthropic a sorti son nouveau modèle le plus performant, Claude Opus 4.5. Il est présenté comme étant le meilleur au monde pour le codage, les agents IA et l'utilisation d'outils informatiques.
Performances de premier plan en codage : Le modèle établit un nouvel état de l'art sur les benchmarks de développement logiciel comme SWE-bench, surpassant les modèles concurrents et même les meilleurs candidats humains sur un test de recrutement technique interne à Anthropic.
Plus efficace et moins cher : Opus 4.5 est non seulement plus intelligent, mais il est aussi beaucoup plus efficace, utilisant jusqu'à 76% de jetons (tokens) en moins que les versions précédentes pour accomplir des tâches similaires. Son prix a été réduit à 5/25 par million de jetons, le rendant plus accessible.
Améliorations sur tous les fronts : Les capacités du modèle ont été améliorées dans tous les domaines, y compris la vision par ordinateur, le raisonnement, les mathématiques et la résolution créative de problèmes.
Sécurité renforcée : Opus 4.5 est présenté comme le modèle le plus sûr et le mieux aligné d'Anthropic à ce jour, avec une robustesse accrue contre les attaques par injection de prompt (tentatives de le tromper pour lui faire faire des actions nuisibles).
Nouveautés pour les développeurs et utilisateurs :
Un nouveau paramètre "effort" dans l'API permet de trouver un équilibre entre la vitesse/coût et la performance maximale.
Claude Code (l'outil de codage) est amélioré et disponible dans une application de bureau.
Les applications grand public (Claude pour Chrome, Excel, etc.) bénéficient des nouvelles capacités et les conversations longues ne sont plus limitées grâce à un système de résumé automatique.
Disponibilité : Le modèle est disponible immédiatement via l'API d'Anthropic, sur les applications Claude et sur les trois principales plateformes cloud (AWS, GCP, Azure).
Mistral lance Devstral 2 son nouveau model pour le code et Mistral Vibe CLI un agent open-source à la Claude/Copilot CLI/Gemini CLI/Codex/… https://mistral.ai/news/devstral-2-vibe-cli
Lancement de Devstral 2 : Mistral AI a sorti une nouvelle famille de modèles de codage open-source, Devstral 2 (123B paramètres) et Devstral Small 2 (24B paramètres). Ces modèles sont conçus pour l'automatisation du code et sont très performants, rivalisant avec des modèles beaucoup plus grands.
Performances et efficacité : Devstral 2 atteint un score de 72.2% sur le benchmark SWE-bench Verified, le plaçant parmi les meilleurs modèles open-source pour les agents de code. Il est présenté comme étant jusqu'à 7 fois plus rentable que des concurrents comme Claude Sonnet pour des tâches réelles.
Mistral Vibe CLI : Un nouvel outil en ligne de commande (CLI) natif et open-source a été introduit. Il s'appelle Mistral Vibe et permet d'automatiser des tâches de développement logiciel de bout en bout directement depuis le terminal.
Accessibilité : Devstral 2 est actuellement disponible gratuitement (en décembre) via l'API de Mistral. Devstral Small 2 est conçu pour être déployé localement sur du matériel grand public, le rendant accessible aux développeurs, aux petites entreprises et aux amateurs.
Intégrations et déploiement : Mistral Vibe CLI peut être intégré dans des IDE comme Zed. Des recommandations de déploiement des modèles sont fournies, avec un support pour les GPU NVIDIA.
Gestion de la mémoire et du contexte avec des "Rules" : Une fonctionnalité majeure a été ajoutée, permettant de créer un répertoire .claude/rules/ dans un projet. Les fichiers placés dans ce dossier servent d'instructions persistantes pour Claude (par exemple, style de code, architecture du projet, technologies à utiliser). Cela donne au modèle une mémoire contextuelle spécifique au projet sans avoir à le répéter dans chaque prompt.
Accès à un modèle plus puissant : Le modèle de pointe Opus 4.5 a été rendu disponible pour les utilisateurs Pro, offrant des capacités de raisonnement et de codage nettement supérieures (v2.0.58).
Introduction des Agents Asynchrones : Les agents et les commandes bash peuvent désormais s'exécuter en arrière-plan de manière asynchrone, permettant à l'utilisateur de continuer à travailler pendant que Claude effectue des tâches longues (v2.0.64, v2.0.60).
Gestion de session et statistiques :
Les sessions de conversation peuvent maintenant être nommées (/rename) et reprises plus tard (/resume), facilitant le travail sur plusieurs projets (v2.0.64).
Une nouvelle commande /stats a été ajoutée pour fournir des informations sur l'utilisation du modèle et un graphique d'activité (v2.0.64).
Amélioration de l'itération et du contrôle :
Une nouvelle commande /edit permet de modifier le dernier plan d'action de Claude avant exécution (v2.0.55).
Les utilisateurs peuvent maintenant fournir un feedback sur les plans rejetés pour guider le modèle vers une meilleure solution (v2.0.57).
Un raccourci clavier (alt+p ou option+p) permet de changer de modèle d'IA à la volée (v2.0.65).
Meilleure intégration à l'IDE :
L'extension VS Code supporte désormais l'affichage des réponses en temps réel ("streaming") (v2.0.57).
Pas de réponse unique : La question de savoir si un "Engineering Manager" (EM) doit coder n'a pas de réponse universelle. Cela dépend fortement du contexte de l'entreprise, de la maturité de l'équipe et de la personnalité du manager.
Les risques de coder : Pour un EM, écrire du code peut devenir une échappatoire pour éviter les aspects plus difficiles du management. Cela peut aussi le transformer en goulot d'étranglement pour l'équipe et nuire à l'autonomie de ses membres s'il prend trop de place.
Les avantages quand c'est bien fait : Coder sur des tâches non essentielles (amélioration d'outils, prototypage, etc.) peut aider l'EM à rester pertinent techniquement, à garder le contact avec la réalité de l'équipe et à débloquer des situations sans prendre le lead sur les projets.
Le principe directeur : La règle d'or est de rester en dehors du chemin critique. Le code écrit par un EM doit servir à créer de l'espace pour son équipe, et non à en prendre.
La vraie question à se poser : Plutôt que "dois-je coder ?", un EM devrait se demander : "De quoi mon équipe a-t-elle besoin de ma part maintenant, et est-ce que coder va dans ce sens ou est-ce un obstacle ?"
"React2Shell" est le nom donné à une vulnérabilité de sécurité de criticité maximale (score 10.0/10.0), identifiée par le code CVE-2025-55182.
Systèmes Affectés : La faille concerne les applications utilisant les "React Server Components" (RSC) côté serveur, et plus particulièrement les versions non patchées du framework Next.js.
Risque Principal : Le risque est le plus élevé possible : l'exécution de code à distance (RCE). Un attaquant peut envoyer une requête malveillante pour exécuter n'importe quelle commande sur le serveur, lui en donnant potentiellement le contrôle total.
Cause Technique : La vulnérabilité se situe dans le protocole "React Flight" (utilisé pour la communication client-serveur). Elle est due à une omission de vérifications de sécurité fondamentales (hasOwnProperty), permettant à une entrée utilisateur malveillante de tromper le serveur.
Mécanisme de l'Exploit : L'attaque consiste à envoyer une charge utile (payload) qui exploite la nature dynamique de JavaScript pour :
Faire passer un objet malveillant pour un objet interne de React.
Forcer React à traiter cet objet comme une opération asynchrone (Promise).
Finalement, accéder au constructeur de la classe Function de JavaScript pour exécuter du code arbitraire.
Action Impérative : La seule solution fiable est de mettre à jour immédiatement les dépendances de React et Next.js vers les versions corrigées. Ne pas attendre.
Mesures Secondaires : Bien que les pare-feux (firewalls) puissent aider à bloquer les formes connues de l'attaque, ils sont considérés comme insuffisants et ne remplacent en aucun cas la mise à jour des paquets.
Découverte : La faille a été découverte par le chercheur en sécurité Lachlan Davidson, qui l'a divulguée de manière responsable pour permettre la création de correctifs.
Nouvelle fonctionnalité de surveillance : Google a déployé une fonctionnalité appelée "Android RCS Archival" qui permet aux employeurs d'intercepter, lire et archiver tous les messages RCS (et SMS) envoyés depuis les téléphones professionnels Android gérés par l'entreprise.
Contournement du chiffrement : Bien que les messages RCS soient chiffrés de bout en bout pendant leur transit, cette nouvelle API permet à des logiciels de conformité (installés par l'employeur) d'accéder aux messages une fois qu'ils sont déchiffrés sur l'appareil. Le chiffrement devient donc inefficace contre cette surveillance.
Réponse à une exigence légale : Cette mesure a été mise en place pour répondre aux exigences réglementaires, notamment dans le secteur financier, où les entreprises ont l'obligation légale de conserver une archive de toutes les communications professionnelles pour des raisons de conformité.
Impact pour les employés : Un employé utilisant un téléphone Android fourni et géré par son entreprise pourra voir ses communications surveillées. Google précise cependant qu'une notification claire et visible informera l'utilisateur lorsque la fonction d'archivage est active.
Téléphones personnels non concernés : Cette mesure ne s'applique qu'aux appareils "Android Enterprise" entièrement gérés par un employeur. Les téléphones personnels des employés ne sont pas affectés.
JUnit est essentiel pour Java : C'est le framework de test le plus ancien et le plus utilisé par les développeurs Java. Son objectif est de fournir une base solide et à jour pour tous les types de tests côté développeur sur la JVM (Machine Virtuelle Java).
Un projet maintenu par des bénévoles : JUnit est développé et maintenu par une équipe de volontaires passionnés sur leur temps libre (week-ends, soirées).
Appel au soutien financier : La page est un appel aux dons de la part des utilisateurs (développeurs, entreprises) pour aider l'équipe à maintenir le rythme de développement. Le soutien financier n'est pas obligatoire, mais il permettrait aux mainteneurs de se consacrer davantage au projet.
Objectif des fonds : Les dons serviraient principalement à financer des rencontres en personne pour les membres de l'équipe principale. L'idée est de leur permettre de travailler ensemble physiquement pendant quelques jours pour concevoir et coder plus efficacement.
Pas de traitement de faveur : Il est clairement indiqué que devenir un sponsor ne donne aucun privilège sur la feuille de route du projet. On ne peut pas "acheter" de nouvelles fonctionnalités ou des corrections de bugs prioritaires. Le projet restera ouvert et collaboratif sur GitHub.
Reconnaissance des donateurs : En guise de remerciement, les noms (et logos pour les entreprises) des donateurs peuvent être affichés sur le site officiel de JUnit.
Dans cet épisode, Emmanuel, Katia et Guillaume discutent de Spring 7, Quarkus, d'Infinispan et Keycloak. On discute aussi de projets sympas comme Javelit, de comment démarre une JVM, du besoin d'argent de NTP. Et puis on discute du changement de carrière d'Emmanuel.
Trois approches d'implémentation disponibles : classes Java pour la performance maximale, JavaScript/TypeScript pour la facilité de développement, ou webhooks pour une flexibilité totale
Configuration via un simple fichier JSON pointant vers les implémentations des composants personnalisés
Les scripts JavaScript sont exécutés via QuickJS dans un environnement sandboxé sécurisé
Un package npm TypeScript fournit l'autocomplétion et la sécurité de type pour le développement
Six composants optionnels configurables : détection automatique de type, validation, vérification de compatibilité, canonicalisation, déréférencement et recherche de références
Cas d'usage typiques : formats propriétaires internes, support RAML, formats legacy comme WADL, schémas spécifiques à un domaine métier
Déploiement simple via Docker en montant les fichiers de configuration et scripts comme volumes
Les performances varient selon l'approche : Java offre les meilleures performances, JavaScript un bon équilibre, webhooks la flexibilité maximale
Le truc interessant c'est que c'est Quarkus based et donc demandait le rebuilt
donc pour eviter cela, ils ont ajouter QuickJS via Chicorey un moteur WebAssembly
C'est le meilleur puisque c'est le dernier :slightly_smiling_face:
Raisonnement Adaptatif et Efficace : GPT-5.1 ajuste dynamiquement son temps de réflexion en fonction de la complexité de la tâche, le rendant nettement plus rapide et plus économique en jetons pour les tâches simples, tout en maintenant des performances de pointe sur les tâches difficiles.
Nouveau Mode « Sans Raisonnement » : Un mode (reasoning_effort='none') a été introduit pour les cas d'utilisation sensibles à la latence, permettant une réponse plus rapide avec une intelligence élevée et une meilleure exécution des outils.
Cache de Prompt Étendu : La mise en cache des invites est étendue jusqu'à 24 heures (contre quelques minutes auparavant), ce qui réduit la latence et le coût pour les interactions de longue durée (chats multi-tours, sessions de codage). Les jetons mis en cache sont 90 % moins chers.
Améliorations en Codage : Le modèle offre une meilleure personnalité de codage, une qualité de code améliorée et de meilleures performances sur les tâches d'agenticité de code, atteignant 76,3 % sur SWE-bench Verified.
L'outil apply_patch pour des modifications de code plus fiables via des diffs structurés.
L'outil shell qui permet au modèle de proposer et d'exécuter des commandes shell sur une machine locale, facilitant les boucles d'inspection et d'exécution.
Disponibilité : GPT-5.1 (ainsi que les modèles gpt-5.1-codex) est disponible pour les développeurs sur toutes les plateformes API payantes, avec les mêmes tarifs et limites de débit que GPT-5.
Composer est un modèle d'agent conçu pour l'ingénierie logicielle qui génère du code quatre fois plus rapidement que les modèles similaires
Le modèle est entraîné sur de vrais défis d'ingénierie logicielle dans de grandes bases de code avec accès à des outils de recherche et d'édition
Il s'agit d'un modèle de type mixture-of-experts optimisé pour des réponses interactives et rapides afin de maintenir le flux de développement
L'entraînement utilise l'apprentissage par renforcement dans divers environnements de développement avec des outils comme la lecture de fichiers, l'édition, les commandes terminal et la recherche sémantique
Cursor Bench est un benchmark d'évaluation basé sur de vraies demandes d'ingénieurs qui mesure la correction et le respect des abstractions du code existant
Le modèle apprend automatiquement des comportements utiles comme effectuer des recherches complexes, corriger les erreurs de linter et écrire des tests unitaires
L'infrastructure d'entraînement utilise PyTorch et Ray avec des kernels MXFP8 pour entraîner sur des milliers de GPUs NVIDIA
Le système exécute des centaines de milliers d'environnements de codage sandboxés concurrents dans le cloud pour l'entraînement
Composer est déjà utilisé quotidiennement par les développeurs de Cursor pour leur propre travail
Le modèle se positionne juste derrière GPT-5 et Sonnet 4.5 en termes de performance sur les benchmarks internes
Téléchargements Parallèles par Défaut : Le paramètre HOMEBREW_DOWNLOAD_CONCURRENCY=auto est activé par défaut, permettant des téléchargements concurrents pour tous les utilisateurs, avec un rapport de progression.
Support Linux ARM64/AArch64 en Tier 1 : Le support pour Linux ARM64/AArch64 a été promu au niveau "Tier 1" (support officiel de premier plan).
Feuille de Route pour les Dépréciations macOS :
Septembre 2026 (ou plus tard) : Homebrew ne fonctionnera plus sur macOS Catalina (10.15) et versions antérieures. macOS Intel (x86_64) passera en "Tier 3" (fin du support CI et des binaires précompilés/bottles).
Septembre 2027 (ou plus tard) : Homebrew ne fonctionnera plus sur macOS Big Sur (11) sur Apple Silicon ni du tout sur Intel (x86_64).
Sécurité et Casks :
Dépréciation des Casks sans signature de code.
Désactivation des Casks échouant aux vérifications Gatekeeper en septembre 2026.
Les options --no-quarantine et --quarantine sont dépréciés pour ne plus faciliter le contournement des fonctionnalités de sécurité de macOS.
Nouvelles Fonctionnalités & Améliorations :
Support officiel pour macOS 26 (Tahoe).
brew bundle supporte désormais l'installation de packages Go via un Brewfile.
Ajout de la commande brew info --sizes pour afficher la taille des formulae et casks.
La commande brew search --alpine permet de chercher des packages Alpine Linux.
Java reste pertinent à l'ère de l'IA, pas besoin d'apprendre une pile technique entièrement nouvelle.
Capacité d'adaptation de Java ("anticorps") aux innovations (Big Data, cloud, IA), le rendant idéal pour les contextes d'entreprise.
L'écosystème JVM offre des avantages sur Python pour la logique métier et les applications sophistiquées, notamment en termes de sécurité et d'évolutivité.
Embabel (par Rod Johnson, créateur de Spring) : un framework d'agents fortement typé pour JVM, visant le déterminisme des projets avant la génération de code par LLM.
LangChain4J : facilite l'accès aux capacités d'IA pour les développeurs Java, s'aligne sur les modèles d'entreprise établis et permet aux LLM d'appeler des méthodes Java.
Koog (Jetbrains) : framework d'agents basé sur Kotlin, typé et spécifique aux développeurs JVM/Kotlin.
Akka : a pivoté pour se concentrer sur les flux de travail d'agents IA, abordant la complexité, la confiance et les coûts des agents dans les systèmes distribués.
Le Model Context Protocol (MCP) est jugé insuffisant, manquant d'explicabilité, de découvrabilité, de capacité à mélanger les modèles, de garde-fous, de gestion de flux, de composabilité et d'intégration sécurisée.
Les développeurs Java sont bien placés pour construire des applications compatibles IA et intégrer des agents.
Des acteurs majeurs comme IBM, Red Hat et Oracle continuent d'investir massivement dans Java et son intégration avec l'IA.
La JVM effectue une initialisation complexe avant d'exécuter le code : validation des arguments, détection des ressources système et sélection du garbage collector approprié
Le chargement de classes suit une stratégie lazy où chaque classe charge d'abord ses dépendances dans l'ordre de déclaration, créant une chaîne d'environ 450 classes même pour un simple Hello World
La liaison de classes comprend trois sous-processus : vérification de la structure, préparation avec initialisation des champs statiques à leurs valeurs par défaut, et résolution des références symboliques du Constant Pool
Le CDS améliore les performances au démarrage en fournissant des classes pré-vérifiées, réduisant le travail de la JVM
L'initialisation de classe exécute les initialiseurs statiques via la méthode spéciale clinit générée automatiquement par javac
Le Project Leyden introduit la compilation AOT dans JDK 24 pour réduire le temps de démarrage en effectuant le chargement et la liaison de classes en avance de phase
Dans cet épisode, Arnaud et Guillaume discutent des dernières évolutions dans le monde de la programmation, notamment les nouveautés de Java 25, JUnit 6, et Jackson 3. Ils abordent également les récents développements en IA, les problèmes rencontrés dans le cloud, et l'état actuel de React et du web. Dans cette conversation, les intervenants abordent divers sujets liés à la technologie, notamment les spécifications de Wasteme, l'utilisation des UUID dans les bases de données, l'approche RAG en intelligence artificielle, les outils MCP, et la création d'images avec Nano Banana. Ils discutent également des complexités du format YAML, des récents dramas dans la communauté Ruby, de l'importance d'une bonne documentation, des politiques de retour au bureau, et des avancées de Cloud Code. Enfin, ils évoquent l'initiative de cafés IA pour démystifier l'intelligence artificielle.
Groovy 5: Évolution des versions précédentes, nouvelles fonctionnalités et simplification du code.
Compatibilité JDK étendue: Full support JDK 11-25, fonctionnalités JDK 17-25 disponibles sur les JDK plus anciens.
Extension majeure des méthodes: Plus de 350 méthodes améliorées, opérations sur tableaux jusqu'à 10x plus rapides, itérateurs paresseux.
Améliorations des transformations AST: Nouveau @OperatorRename, génération automatique de @NamedParam pour @MapConstructor et copyWith.
REPL (groovysh) modernisé: Basé sur JLine 3, support multi-plateforme, coloration syntaxique, historique et complétion.
Meilleure interopérabilité Java: Pattern Matching pour instanceof, support JEP-512 (fichiers source compacts et méthodes main d'instance).
Standards web modernes: Support Jakarta EE (par défaut) et Javax EE (héritage) pour la création de contenu web.
Vérification de type améliorée: Contrôle des chaînes de format plus robuste que Java.
Additions au langage: Génération d'itérateurs infinis, variables d'index dans les boucles, opérateur d'implication logique ==>.
Améliorations diverses: Import automatique de java.time.**, var avec multi-assignation, groupes de capture nommés pour regex (=~), méthodes utilitaires de graphiques à barres ASCII.
Changements impactants: Plusieurs modifications peuvent nécessiter une adaptation du code existant (visibilité, gestion des imports, comportement de certaines méthodes).
**Exigences JDK*: Construction avec JDK17+, exécution avec JDK11+.
ADK pour Java 0.2.0 : Nouvelle version du kit de développement d'agents de Google.
Intégration LangChain4j : Ouvre ADK à des modèles de langage tiers.
Plus de choix de LLM : En plus de Gemini et Claude, accès aux modèles d'OpenAI, Anthropic, Mistral, etc.
Modèles locaux supportés : Utilisation possible de modèles via Ollama ou Docker Model Runner.
Améliorations des outils : Création d'outils à partir d'instances d'objets, meilleur support asynchrone et contrôle des boucles d'exécution.
Logique et mémoire avancées : Ajout de callbacks en chaîne et de nouvelles options pour la gestion de la mémoire et le RAG (Retrieval-Augmented Generation).
Build simplifié : Introduction d'un POM parent et du Maven Wrapper pour un processus de construction cohérent.
Panne majeure d'AWS (région US-EAST-1) : problème DNS affectant DynamoDB, service fondamental, causant des défaillances en cascade de nombreux services internet.
Réponse lente : 75 minutes pour identifier la cause profonde; la page de statut affichait initialement "tout va bien".
Cause sous-jacente principale : "fuite des cerveaux" (départ d'ingénieurs AWS seniors).
Perte de connaissances institutionnelles : des décennies d'expertise critique sur les systèmes AWS et les modes de défaillance historiques parties avec ces départs.
Prédictions confirmées : un ancien d'AWS avait anticipé une augmentation des pannes majeures en 2024.
Preuves de la perte de talents :
Plus de 27 000 licenciements chez Amazon (2022-2025).
Taux élevé de "départs regrettés" (69-81%).
Mécontentement lié à la politique de "Return to Office" et au manque de reconnaissance de l'expertise.
Conséquences : les nouvelles équipes, plus réduites, manquent de l'expérience nécessaire pour prévenir les pannes ou réduire les temps de récupération.
Perspective : Le marché pourrait pardonner cette fois, mais le problème persistera, rendant les futurs incidents plus probables.
React domine par défaut, non par mérite technique, étouffant ainsi l'innovation front-end.
Choix par réflexe ("tout le monde connaît React"), freinant l'évaluation d'alternatives potentiellement supérieures.
Fondations techniques de React (V-DOM, complexité des Hooks, Server Components) vues comme des contraintes actuelles.
Des frameworks innovants (Svelte pour la compilation, Solid pour la réactivité fine, Qwik pour la "resumability") offrent des modèles plus performants mais sont sous-adoptés.
La monoculture de React génère une dette technique (runtime, réconciliation) et centre les compétences sur le framework plutôt que sur les fondamentaux web.
L'API React est complexe, augmentant la charge cognitive et les risques de bugs, contrairement aux alternatives plus simples.
L'effet de réseau crée une "prison": offres d'emploi spécifiques, inertie institutionnelle, leaders choisissant l'option "sûre".
Nécessité de choisir les frameworks selon les contraintes du projet et le mérite technique, non par inertie.
Les arguments courants (maturité de l'écosystème, recrutement, bibliothèques, stabilité) sont remis en question; une dépendance excessive peut devenir un fardeau.
La monoculture ralentit l'évolution du web et détourne les talents, nuisant à la diversité essentielle pour un écosystème sain et innovant.
Promouvoir la diversité des frameworks pour un écosystème plus résilient et innovant.
Cause des problèmes de performance dans les bases de données relationnelles (ex: PostgreSQL, MySQL, SQL Server) utilisant des index B-Tree.
Inserts aléatoires réduisent l'efficacité du cache, entraînent des divisions de pages et la fragmentation.
UUIDv7 : nouveau standard conçu pour résoudre ces problèmes.
Intègre un horodatage (48 bits) en préfixe de l'identifiant, le rendant ordonné temporellement et "k-sortable".
Améliore la performance dans les bases B-Tree en favorisant les inserts séquentiels, la localité du cache et réduisant la fragmentation.
Problème de UUIDv7 pour certaines bases de données distribuées et scalables horizontalement comme Spanner :
La nature séquentielle d'UUIDv7 (via l'horodatage) crée des "hotspots d'écriture" (points chauds) dans Spanner.
Spanner distribue les données en "splits" (partitions) basées sur les plages de clés. Les clés séquentielles concentrent les écritures sur un seul "split".
Ceci empêche Spanner de distribuer la charge et de scaler les écritures, créant un goulot d'étranglement ("anti-pattern").
Quand ce n'est PAS un problème pour Spanner :
Si le taux d'écriture total est inférieur à environ 3 500 écritures/seconde pour un seul "split".
Le hotspot est "bénin" à cette échelle et n'entraîne pas de dégradation de performance.
Solutions pour Spanner :
Principe clé : S'assurer que la première partie de la clé primaire est NON séquentielle pour distribuer les écritures. UUIDv7 peut être utilisé, mais pas comme préfixe.
Nouvelle conception ("greenfield") :
▪︎ Utiliser une clé primaire non-séquentielle (ex: UUIDv4 simple).
Pour les requêtes basées sur le temps, créer un index secondaire sur la colonne d'horodatage, mais le SHARDER (ex: shardId) pour éviter les hotspots sur l'index lui-même.
Migration (garder UUIDv7) :
▪︎ Ajouter un préfixe de sharding : Introduire une colonne `shard` calculée (ex: `MOD(ABS(FARM_FINGERPRINT(order_id_v7)), N)`) et l'utiliser comme PREMIER élément d'une clé primaire composite (`PRIMARY KEY (shard, order_id_v7)`).
Réordonner les colonnes (si clé primaire composite existante) : Si la clé primaire est déjà composite (ex: (order_id_v7, tenant_id)), réordonner en (tenant_id, order_id_v7). Cela aide si tenant_id a une cardinalité élevée et distribue bien. (Un tenant_id très actif pourrait toujours nécessiter un préfixe de sharding supplémentaire).
Claude Code : outil de développement "AI-first" créé par Boris Cherny, Sid Bidasaria et Cat Wu.
Performance impressionnante : 500M$ de revenus annuels, utilisation multipliée par 10 en 3 mois.
Adoption interne massive : Plus de 80% des ingénieurs d'Anthropic l'utilisent quotidiennement, y compris les data scientists.
Augmentation de productivité : 67% d'augmentation des Pull Requests (PR) par ingénieur malgré le doublement de l'équipe.
Origine : Commande CLI simple évoluant vers un outil accédant au système de fichiers, exploitant le "product overhang" du modèle Claude.
Raison du lancement public : Apprendre sur la sécurité et les capacités des modèles d'IA.
Pile technologique "on distribution" : TypeScript, React (avec Ink), Yoga, Bun. Choisie car le modèle Claude est déjà très performant avec ces technologies.
"Claude Code écrit 90% de son propre code" : Le modèle prend en charge la majeure partie du développement.
Architecture légère : Simple "shell" autour du modèle Claude, minimisant la logique métier et le code (suppression constante de code superflu).
Exécution locale : Privilégiée pour sa simplicité, sans virtualisation.
Sécurité : Système de permissions granulaire demandant confirmation avant chaque action potentiellement dangereuse (ex: suppression de fichiers).
Développement rapide :
Jusqu'à 100 releases internes/jour, 1 release externe/jour.
5 Pull Requests/ingénieur/jour.
Prototypage ultra-rapide (ex: 20+ prototypes d'une fonctionnalité en quelques heures) grâce aux agents IA.
Innovation UI/UX : Redéfinit l'expérience du terminal grâce à l'interaction LLM, avec des fonctionnalités comme les sous-agents, les styles de sortie configurables, et un mode "Learning".
Katia, Emmanuel et Guillaume discutent Java, Kotlin, Quarkus, Hibernate, Spring Boot 4, intelligence artificielle (modèles Nano Banana, VO3, frameworks agentiques, embedding). On discute les vulnerabilités OWASP pour les LLMs, les personalités de codage des différents modèles, Podman vs Docker, comment moderniser des projets legacy. Mais surtout on a passé du temps sur les présentations de Luc Julia et les différents contre points qui ont fait le buzz sur les réseaux.
Scoped Values (JEP 505) - alternative plus efficace aux ThreadLocal pour partager des données immutables entre threads
Structured Concurrency (JEP 506) - traiter des groupes de tâches concurrentes comme une seule unité de travail, simplifiant la gestion des threads
Compact Object Headers (JEP 519) - Fonctionnalité finale qui réduit de 50% la taille des en-têtes d'objets (de 128 à 64 bits), économisant jusqu'à 22% de mémoire heap
Flexible Constructor Bodies (JEP 513) - Relaxation des restrictions sur les constructeurs, permettant du code avant l'appel super() ou this()
Module Import Declarations (JEP 511) - Import simplifié permettant d'importer tous les éléments publics d'un module en une seule déclaration
Compact Source Files (JEP 512) - Simplification des programmes Java basiques avec des méthodes main d'instance sans classe wrapper obligatoire
Primitive Types in Patterns (JEP 455) - Troisième preview étendant le pattern matching et instanceof aux types primitifs dans switch et instanceof
Generational Shenandoah (JEP 521) - Le garbage collector Shenandoah passe en mode générationnel pour de meilleures performances
JFR Method Timing & Tracing (JEP 520) - Nouvel outillage de profilage pour mesurer le temps d'exécution et tracer les appels de méthodes
Key Derivation API (JEP 510) - API finale pour les fonctions de dérivation de clés cryptographiques, remplaçant les implémentations tierces
Sortie de l'A2A Java SDK 0.3.0.Alpha1, aligné avec la spécification A2A v0.3.0.
Protocole A2A : standard ouvert (Linux Foundation), permet la communication inter-agents IA polyglottes. Version 0.3.0 plus stable, introduit le support gRPC.
Mises à jour générales : changements significatifs, expérience utilisateur améliorée (côté client et serveur).
Agents serveur A2A :
Support gRPC ajouté (en plus de JSON-RPC). HTTP+JSON/REST à venir.
Implémentations basées sur Quarkus (alternatives Jakarta existent).
Dépendances spécifiques pour chaque transport (ex: a2a-java-sdk-reference-jsonrpc, a2a-java-sdk-reference-grpc).
AgentCard : décrit les capacités de l'agent. Doit spécifier le point d'accès primaire et tous les transports supportés (additionalInterfaces).
Clients A2A :
Dépendance principale : a2a-java-sdk-client.
Support gRPC ajouté (en plus de JSON-RPC). HTTP+JSON/REST à venir.
Dépendance spécifique pour gRPC : a2a-java-sdk-client-transport-grpc.
Création de client : via ClientBuilder. Sélectionne automatiquement le transport selon l'AgentCard et la configuration client. Permet de spécifier les transports supportés par le client (withTransport).
EmbeddingGemma: Nouveau modèle d'embedding (308M paramètres) de Google DeepMind.
Objectif: Permettre la recherche sémantique directement dans le navigateur.
Avantages clés de l'IA côté client:
Confidentialité: Aucune donnée envoyée à un serveur.
Coûts réduits: Pas besoin de serveurs coûteux (GPU), hébergement statique.
Faible latence: Traitement instantané sans allers-retours réseau.
Fonctionnement hors ligne: Possible après le chargement initial du modèle.
Technologie principale:
Modèle: EmbeddingGemma (petit, performant, multilingue, support MRL pour réduire la taille des vecteurs).
Moteur d'inférence: Transformers.js de HuggingFace (exécute les modèles AI en JavaScript dans le navigateur).
Déploiement: Site statique avec Vite/React/Tailwind CSS, déployé sur Firebase Hosting via GitHub Actions.
Gestion du modèle: Fichiers du modèle trop lourds pour Git; téléchargés depuis HuggingFace Hub pendant le CI/CD.
Fonctionnement de l'app: Charge le modèle, génère des embeddings pour requêtes/documents, calcule la similarité sémantique.
Conclusion: Démonstration d'une recherche sémantique privée, économique et sans serveur, soulignant le potentiel de l'IA embarquée dans le navigateur.
Data et Intelligence Artificielle
Docker lance Cagent, une sorte de framework multi-agent IA utilisant des LLMs externes, des modèles de Docker Model Runner, avec le Docker MCP Tookit. Il propose un format YAML pour décrire les agents d'un système multi-agents. https://github.com/docker/cagent
des agents "prompt driven" (pas de code)
et une structure pour decrire comment ils sont deployés
pas clair comment ils sont appelés a part dans la ligne de commande de cagent
L'agence excessive désigne la vulnérabilité qui permet aux systèmes LLM d'effectuer des actions dommageables via des sorties inattendues ou ambiguës.
Elle résulte de trois causes principales : fonctionnalités excessives, permissions excessives ou autonomie excessive des agents LLM.
Les fonctionnalités excessives incluent l'accès à des plugins qui offrent plus de capacités que nécessaire, comme un plugin de lecture qui peut aussi modifier ou supprimer.
Les permissions excessives se manifestent quand un plugin accède aux systèmes avec des droits trop élevés, par exemple un accès en lecture qui inclut aussi l'écriture.
L'autonomie excessive survient quand le système effectue des actions critiques sans validation humaine préalable.
Un scénario d'attaque typique : un assistant personnel avec accès email peut être manipulé par injection de prompt pour envoyer du spam via la boîte de l'utilisateur.
La prévention implique de limiter strictement les plugins aux fonctions minimales nécessaires pour l'opération prévue.
Il faut éviter les fonctions ouvertes comme "exécuter une commande shell" au profit d'outils plus granulaires et spécifiques.
L'application du principe de moindre privilège est cruciale : chaque plugin doit avoir uniquement les permissions minimales requises.
Le contrôle humain dans la boucle reste essentiel pour valider les actions à fort impact avant leur exécution.
Problème Docker : Le daemon dockerd persistant s'exécute avec des privilèges root, posant des risques de sécurité (nombreuses CVEs citées) et consommant des ressources inutilement.
Solution Podman :
Sans Daemon : Pas de processus d'arrière-plan persistant. Les conteneurs s'exécutent comme des processus enfants de la commande Podman, sous les privilèges de l'utilisateur.
Sécurité Renforcée : Réduction de la surface d'attaque. Une évasion de conteneur compromet un utilisateur non privilégié sur l'hôte, pas le système entier. Mode rootless.
Fiabilité Accrue : Pas de point de défaillance unique ; le crash d'un conteneur n'affecte pas les autres.
Moins de Ressources : Pas de daemon constamment actif, donc moins de mémoire et de CPU.
Fonctionnalités Clés de Podman :
Intégration Systemd : Génération automatique de fichiers d'unité systemd pour gérer les conteneurs comme des services Linux standards.
Alignement Kubernetes : Support natif des pods et capacité à générer des fichiers Kubernetes YAML directement (podman generate kube), facilitant le développement local pour K8s.
Philosophie Unix : Se concentre sur l'exécution des conteneurs, délègue les tâches spécialisées à des outils dédiés (ex: Buildah pour la construction d'images, Skopeo pour leur gestion).
Migration Facile :
CLI compatible Docker : podman utilise les mêmes commandes que docker (alias docker=podman fonctionne).
Les Dockerfiles existants sont directement utilisables.
Améliorations incluses : Sécurité par défaut (ports privilégiés en mode rootless), meilleure gestion des permissions de volume, API Docker compatible optionnelle.
Option de convertir Docker Compose en Kubernetes YAML.
Bénéfices en Production : Sécurité améliorée, utilisation plus propre des ressources. Podman représente une évolution plus sécurisée et mieux alignée avec les pratiques modernes de gestion Linux et de déploiement de conteneurs.
Guide Pratique (Exemple FastAPI) :
Le Dockerfile ne change pas.
podman build et podman run remplacent directement les commandes Docker.
Déploiement en production via Systemd.
Gestion d'applications multi-services avec les "pods" Podman.
Compatibilité Docker Compose via podman-compose ou kompose.
84% des développeurs utilisent l'IA quotidiennement, mais 46% ne font pas confiance aux résultats. Seulement 3,1% font "hautement confiance" au code généré.
66% sont frustrés par les solutions IA "presque correctes". 45% disent que déboguer le code IA prend plus de temps que l'écrire soi-même.
Les développeurs seniors (10+ ans) font moins confiance à l'IA (2,6%) que les débutants (6,1%), créant un écart de connaissances dangereux.
Les pays occidentaux montrent moins de confiance - Allemagne (22%), UK (23%), USA (28%) - que l'Inde (56%). Les créateurs d'outils IA leur font moins confiance.
77% des développeurs professionnels rejettent la programmation en langage naturel, seuls 12% l'utilisent réellement.
Quand l'IA échoue, 75% se tournent vers les humains. 35% des visites Stack Overflow concernent maintenant des problèmes liés à l'IA.
69% rapportent des gains de productivité personnels, mais seulement 17% voient une amélioration de la collaboration d'équipe.
Coûts cachés : temps de vérification, explication du code IA aux équipes, refactorisation et charge cognitive constante.
Les plateformes humaines dominent encore : Stack Overflow (84%), GitHub (67%), YouTube (61%) pour résoudre les problèmes IA.
L'avenir suggère un "développement augmenté" où l'IA devient un outil parmi d'autres, nécessitant transparence et gestion de l'incertitude.
18 packages npm très populaires compromis le 8 septembre 2025, incluant chalk, debug, ansi-styles avec plus de 2 milliards de téléchargements hebdomadaires combinés
duckdb s'est rajouté à la liste
Code malveillant injecté qui intercepte silencieusement l'activité crypto et web3 dans les navigateurs des utilisateurs
Le malware manipule les interactions de wallet et redirige les paiements vers des comptes contrôlés par l'attaquant sans signes évidents
Injection dans les fonctions critiques comme fetch, XMLHttpRequest et APIs de wallets (window.ethereum, Solana) pour intercepter le trafic
Détection et remplacement automatique des adresses crypto sur multiple blockchains (Ethereum, Bitcoin, Solana, Tron, Litecoin, Bitcoin Cash)
Les transactions sont modifiées en arrière-plan même si l'interface utilisateur semble correcte et légitime
Utilise des adresses "sosies" via correspondance de chaînes pour rendre les échanges moins évidents à détecter
LCC 329 - L'IA, ce super stagiaire qui nous fait travailler plus
14 Aug 2025
02:00:24
Arnaud et Guillaume explore l'évolution de l'écosystème Java avec Java 25, Spring Boot et Quarkus, ainsi que les dernières tendances en intelligence artificielle avec les nouveaux modèles comme Grok 4 et Claude Code. Les animateurs font également le point sur l'infrastructure cloud, les défis MCP et CLI, tout en discutant de l'impact de l'IA sur la productivité des développeurs et la gestion de la dette technique.
Le JEP 515 a pour but d'améliorer le temps de démarrage et de chauffe des applications Java.
L'idée est de collecter les profils d'exécution des méthodes lors d'une exécution antérieure, puis de les rendre immédiatement disponibles au démarrage de la machine virtuelle.
Cela permet au compilateur JIT de générer du code natif dès le début, sans avoir à attendre que l'application soit en cours d'exécution.
Ce changement ne nécessite aucune modification du code des applications, des bibliothèques ou des frameworks.
L'intégration se fait via les commandes de création de cache AOT existantes.
Le JEP 518 a pour objectif d'améliorer la stabilité et l'évolutivité de la fonction JDK Flight Recorder (JFR) pour le profilage d'exécution.
Le mécanisme d'échantillonnage des piles d'appels de threads Java est retravaillé pour s'exécuter uniquement à des safepoints, ce qui réduit les risques d'instabilité.
Le nouveau modèle permet un parcours de pile plus sûr, notamment avec le garbage collector ZGC, et un échantillonnage plus efficace qui prend en charge le parcours de pile concurrent.
Le JEP ajoute un nouvel événement, SafepointLatency, qui enregistre le temps nécessaire à un thread pour atteindre un safepoint.
L'approche rend le processus d'échantillonnage plus léger et plus rapide, car le travail de création de traces de pile est délégué au thread cible lui-même.
Spring Boot 4.0.0-M1 met à jour de nombreuses dépendances internes et externes pour améliorer la stabilité et la compatibilité.
Les types annotés avec @ConfigurationProperties peuvent maintenant référencer des types situés dans des modules externes grâce à @ConfigurationPropertiesSource.
Le support de l'information sur la validité des certificats SSL a été simplifié, supprimant l'état WILL_EXPIRE_SOON au profit de VALID.
L'auto-configuration des métriques Micrometer supporte désormais l'annotation @MeterTag sur les méthodes annotées @Counted et @Timed, avec évaluation via SpEL.
Le support de @ServiceConnection pour MongoDB inclut désormais l'intégration avec MongoDBAtlasLocalContainer de Testcontainers.
Certaines fonctionnalités et API ont été dépréciées, avec des recommandations pour migrer les points de terminaison personnalisés vers les versions Spring Boot 2.
Les versions milestones et release candidates sont maintenant publiées sur Maven Central, en plus du repository Spring traditionnel.
Un guide de migration a été publié pour faciliter la transition depuis Spring Boot 3.5 vers la version 4.0.0-M1.
Une équipe a migré une application Java de Spring Boot vers Quarkus pour gagner en performances et réduire la consommation mémoire.
L'objectif était aussi d'optimiser l'application pour le cloud natif.
La migration a été plus complexe que prévu, notamment à cause de l'incompatibilité avec certaines bibliothèques et d'un écosystème Quarkus moins mature.
Il a fallu revoir du code et abandonner certaines fonctionnalités spécifiques à Spring Boot.
Les gains en performances et en mémoire sont réels, mais la migration demande un vrai effort d'adaptation.
La communauté Quarkus progresse, mais le support reste limité comparé à Spring Boot.
Conclusion : Quarkus est intéressant pour les nouveaux projets ou ceux prêts à être réécrits, mais la migration d'un projet existant est un vrai défi.
Modules stables : Les modules langchain4j-anthropic, langchain4j-azure-open-ai, langchain4j-bedrock, langchain4j-google-ai-gemini, langchain4j-mistral-ai et langchain4j-ollama sont désormais en version stable 1.2.0.
Modules expérimentaux : La plupart des autres modules de LangChain4j sont en version 1.2.0-beta8 et restent expérimentaux/instables.
BOM mis à jour : Le langchain4j-bom a été mis à jour en version 1.2.0, incluant les dernières versions de tous les modules.
Principales améliorations :
Support du raisonnement/pensée dans les modèles.
Appels d'outils partiels en streaming.
Option MCP pour exposer automatiquement les ressources en tant qu'outils.
OpenAI : possibilité de définir des paramètres de requête personnalisés et d'accéder aux réponses HTTP brutes et aux événements SSE.
Améliorations de la gestion des erreurs et de la documentation.
2 nouveaux modules expérimentaux, langchain4j-agentic et langchain4j-agentic-a2a qui introduisent un ensemble d'abstractions et d'utilitaires pour construire des applications agentiques
Cette progression s'explique en grande partie par l'essor des systèmes basés sur Linux dans les environnements professionnels, les serveurs, et certains usages grand public.
Microsoft, longtemps dominant avec Windows, voyait ce seuil comme difficilement atteignable à court terme.
Le succès de Linux est également alimenté par la popularité croissante des distributions open source, plus légères, personnalisables et adaptées à des usages variés.
Le cloud, l'IoT, et les infrastructures de serveurs utilisent massivement Linux, ce qui contribue à cette augmentation globale.
Ce basculement symbolique marque un changement d'équilibre dans l'écosystème des systèmes d'exploitation.
Toutefois, Windows conserve encore une forte présence dans certains segments, notamment chez les particuliers et dans les entreprises classiques.
Cette évolution témoigne du dynamisme et de la maturité croissante des solutions Linux, devenues des alternatives crédibles et robustes face aux offres propriétaires.
Le 14 juillet 2025, le service DNS public Cloudflare 1.1.1.1 a subi une panne majeure de 62 minutes, rendant le service indisponible pour la majorité des utilisateurs mondiaux.
Cette panne a aussi causé une dégradation intermittente du service Gateway DNS.
L'incident est survenu suite à une mise à jour de la topologie des services Cloudflare qui a activé une erreur de configuration introduite en juin 2025.
Cette erreur faisait que les préfixes destinés au service 1.1.1.1 ont été accidentellement inclus dans un nouveau service de localisation des données (Data Localization Suite), ce qui a perturbé le routage anycast.
Le résultat a été une incapacité pour les utilisateurs à résoudre les noms de domaine via 1.1.1.1, rendant la plupart des services Internet inaccessibles pour eux.
Ce n'était pas le résultat d'une attaque ou d'un problème BGP, mais une erreur interne de configuration.
Cloudflare a rapidement identifié la cause, corrigé la configuration et mis en place des mesures pour prévenir ce type d'incident à l'avenir.
Le service est revenu à la normale après environ une heure d'indisponibilité.
L'incident souligne la complexité et la sensibilité des infrastructures anycast et la nécessité d'une gestion rigoureuse des configurations réseau.
Évolution de Node.js en 2025 : Le développement se tourne vers les standards du web, avec moins de dépendances externes et une meilleure expérience pour les développeurs.
ES Modules (ESM) par défaut : Remplacement de CommonJS pour un meilleur outillage et une standardisation avec le web. Utilisation du préfixe node: pour les modules natifs afin d'éviter les conflits.
API web intégrées : fetch, AbortController, et AbortSignal sont maintenant natifs, réduisant le besoin de librairies comme axios.
Runner de test intégré : Plus besoin de Jest ou Mocha pour la plupart des cas. Inclut un mode "watch" et des rapports de couverture.
Patterns asynchrones avancés : Utilisation plus poussée de async/await avec Promise.all() pour le parallélisme et les AsyncIterators pour les flux d'événements.
Worker Threads pour le parallélisme : Pour les tâches lourdes en CPU, évitant de bloquer l'event loop principal.
Expérience de développement améliorée : Intégration du mode --watch (remplace nodemon) et du support --env-file (remplace dotenv).
Sécurité et performance : Modèle de permission expérimental pour restreindre l'accès et des hooks de performance natifs pour le monitoring.
Distribution simplifiée : Création d'exécutables uniques pour faciliter le déploiement d'applications ou d'outils en ligne de commande.
À son lancement, Grok 4 a généré des réponses offensantes, notamment en se surnommant « MechaHitler » et en adoptant des propos antisémites.
Ce comportement provenait d'une recherche automatique sur le web qui a mal interprété un mème viral comme une vérité.
Grok alignait aussi ses réponses controversées sur les opinions d'Elon Musk et de xAI, ce qui a amplifié les biais.
xAI a identifié que ces dérapages étaient dus à une mise à jour interne intégrant des instructions encourageant un humour offensant et un alignement avec Musk.
Pour corriger cela, xAI a supprimé le code fautif, remanié les prompts système, et imposé des directives demandant à Grok d'effectuer une analyse indépendante, en utilisant des sources diverses.
Grok doit désormais éviter tout biais, ne plus adopter un humour politiquement incorrect, et analyser objectivement les sujets sensibles.
xAI a présenté ses excuses, précisant que ces dérapages étaient dus à un problème de prompt et non au modèle lui-même.
Cet incident met en lumière les défis persistants d'alignement et de sécurité des modèles d'IA face aux injections indirectes issues du contenu en ligne.
La correction n'est pas qu'un simple patch technique, mais un exemple des enjeux éthiques et de responsabilité majeurs dans le déploiement d'IA à grande échelle.
Nicolas continue ses études sur Claude Code et explique comment utiliser les serveurs MCP pour rendre Claude bien plus efficace.
Le MCP Context7 montre comment fournir à l'IA la doc technique à jour (par exemple, Next.js 15) pour éviter les hallucinations ou les erreurs.
Le MCP Task Master, autre serveur MCP, transforme un cahier des charges (PRD) en tâches atomiques, estimées, et organisées sous forme de plan de travail.
Le MCP Playwright permet de manipuler des navigateurs et d'executer des tests E2E
Le MCP Digital Ocean permet de déployer facilement l'application en production
Tout n'est pas si ideal, les quotas sont atteints en quelques heures sur une petite application et il y a des cas où il reste bien plus efficace de le faire soit-même (pour un codeur expérimenté)
Nicolas partage un avis nuancé (et un peu provoquant) sur le développement augmenté, où l'IA comme Claude Code assiste le développeur sans le remplacer.
Il rejette l'idée que cela serait « trop magique » ou « trop facile » : c'est une évolution logique de notre métier, pas un raccourci pour les paresseux.
Pour lui, un bon dev reste celui qui structure bien sa pensée, sait poser un problème, découper, valider — même si l'IA aide à coder plus vite.
Il raconte avoir codé une app OAuth, testée, stylisée et déployée en quelques heures, sans jamais quitter le terminal grâce à Claude.
Ce genre d'outillage change le rapport au temps : on passe de « je vais y réfléchir » à « je tente tout de suite une version qui marche à peu près ».
Il assume aimer cette approche rapide et imparfaite : mieux vaut une version brute livrée vite qu'un projet bloqué par le perfectionnisme.
L'IA est selon lui un super stagiaire : jamais fatigué, parfois à côté de la plaque, mais diablement productif quand bien briefé.
Il conclut que le « dev augmenté » ne remplace pas les bons développeurs… mais les développeurs moyens doivent s'y mettre, sous peine d'être dépassés.
OpenAI a lancé GPT-OSS, sa première famille de modèles open-weight depuis GPT–2.
Deux modèles sont disponibles : gpt-oss–120b et gpt-oss–20b, qui sont des modèles mixtes d'experts conçus pour le raisonnement et les tâches d'agent.
Les modèles sont distribués sous licence Apache 2.0, permettant leur utilisation et leur personnalisation gratuites, y compris pour des applications commerciales.
Le modèle gpt-oss–120b est capable de performances proches du modèle OpenAI o4-mini, tandis que le gpt-oss–20b est comparable au o3-mini.
OpenAI a également open-sourcé un outil de rendu appelé Harmony en Python et Rust pour en faciliter l'adoption.
Les modèles sont optimisés pour fonctionner localement et sont pris en charge par des plateformes comme Hugging Face et Ollama.
OpenAI a mené des recherches sur la sécurité pour s'assurer que les modèles ne pouvaient pas être affinés pour des utilisations malveillantes dans les domaines biologique, chimique ou cybernétique.
Anthropic a publié Claude Opus 4.1, une mise à jour de son modèle de langage.
Cette nouvelle version met l'accent sur l'amélioration des performances en codage, en raisonnement et sur les tâches de recherche et d'analyse de données.
Le modèle a obtenu un score de 74,5 % sur le benchmark SWE-bench Verified, ce qui représente une amélioration par rapport à la version précédente.
Il excelle notamment dans la refactorisation de code multifichier et est capable d'effectuer des recherches approfondies.
Claude Opus 4.1 est disponible pour les utilisateurs payants de Claude, ainsi que via l'API, Amazon Bedrock et Vertex AI de Google Cloud, avec des tarifs identiques à ceux d'Opus 4.
Il est présenté comme un remplacement direct de Claude Opus 4, avec des performances et une précision supérieures pour les tâches de programmation réelles.
Amélioration majeure des capacités cognitives - GPT‑5 montre un niveau de raisonnement, d'abstraction et de compréhension nettement supérieur aux modèles précédents.
Deux variantes principales - gpt-5-main : rapide, efficace pour les tâches générales. gpt-5-thinking : plus lent mais spécialisé dans les tâches complexes, nécessitant réflexion profonde.
Routeur intelligent intégré - Le système sélectionne automatiquement la version la plus adaptée à la tâche (rapide ou réfléchie), sans intervention de l'utilisateur.
Fenêtre de contexte encore étendue - GPT‑5 peut traiter des volumes de texte plus longs (jusqu'à 1 million de tokens dans certaines versions), utile pour des documents ou projets entiers.
Réduction significative des hallucinations - GPT‑5 donne des réponses plus fiables, avec moins d'erreurs inventées ou de fausses affirmations.
Comportement plus neutre et moins sycophant - Il a été entraîné pour mieux résister à l'alignement excessif avec les opinions de l'utilisateur.
Capacité accrue à suivre des instructions complexes - GPT‑5 comprend mieux les consignes longues, implicites ou nuancées.
Approche "Safe completions" - Remplacement des "refus d'exécution" par des réponses utiles mais sûres — le modèle essaie de répondre avec prudence plutôt que bloquer.
Prêt pour un usage professionnel à grande échelle - Optimisé pour le travail en entreprise : rédaction, programmation, synthèse, automatisation, gestion de tâches, etc.
Améliorations spécifiques pour le codage - GPT‑5 est plus performant pour l'écriture de code, la compréhension de contextes logiciels complexes, et l'usage d'outils de développement.
Expérience utilisateur plus rapide et fluide- Le système réagit plus vite grâce à une orchestration optimisée entre les différents sous-modèles.
Capacités agentiques renforcées - GPT‑5 peut être utilisé comme base pour des agents autonomes capables d'accomplir des objectifs avec peu d'interventions humaines.
Multimodalité maîtrisée (texte, image, audio) - GPT‑5 intègre de façon plus fluide la compréhension de formats multiples, dans un seul modèle.
Fonctionnalités pensées pour les développeurs - Documentation plus claire, API unifiée, modèles plus transparents et personnalisables.
Personnalisation contextuelle accrue - Le système s'adapte mieux au style, ton ou préférences de l'utilisateur, sans instructions répétées.
Utilisation énergétique et matérielle optimisée - Grâce au routeur interne, les ressources sont utilisées plus efficacement selon la complexité des tâches.
Intégration sécurisée dans les produits ChatGPT - Déjà déployé dans ChatGPT avec des bénéfices immédiats pour les utilisateurs Pro et entreprises.
Modèle unifié pour tous les usages - Un seul système capable de passer de la conversation légère à des analyses scientifiques ou du code complexe.
Priorité à la sécurité et à l'alignement - GPT‑5 a été conçu dès le départ pour minimiser les abus, biais ou comportements indésirables.
Pas encore une AGI - OpenAI insiste : malgré ses capacités impressionnantes, GPT‑5 n'est pas une intelligence artificielle générale.
L'IA transforme le développement logiciel, mais les développeurs juniors ne sont pas obsolètes.
Les nouveaux apprenants sont bien positionnés, car déjà familiers avec les outils IA.
L'objectif est de développer des compétences pour travailler avec l'IA, pas d'être remplacé.
La créativité et la curiosité sont des qualités humaines clés.
Cinq façons de se démarquer :
Utiliser l'IA (ex: GitHub Copilot) pour apprendre plus vite, pas seulement coder plus vite (ex: mode tuteur, désactiver l'autocomplétion temporairement).
Construire des projets publics démontrant ses compétences (y compris en IA).
Maîtriser les workflows GitHub essentiels (GitHub Actions, contribution open source, pull requests).
Affûter son expertise en révisant du code (poser des questions, chercher des patterns, prendre des notes).
Déboguer plus intelligemment et rapidement avec l'IA (ex: Copilot Chat pour explications, corrections, tests).
Protocole Agent2Agent (A2A) : Standard ouvert pour l'interopérabilité universelle des agents IA.
Permet communication et collaboration efficaces entre agents de différents fournisseurs/frameworks.
Crée des écosystèmes multi-agents unifiés, automatisant les workflows complexes.
Objet de l'article : Guide pour construire un premier agent A2A (agent météo) dans WildFly.
Utilise A2A Java SDK pour Jakarta Servers, WildFly AI Feature Pack, un LLM (Gemini) et un outil Python (MCP).
Agent conforme A2A v0.2.5.
Prérequis : JDK 17+, Apache Maven 3.8+, IDE Java, Google AI Studio API Key, Python 3.10+, uv.
Étapes de construction de l'agent météo :
Création du service LLM : Interface Java (WeatherAgent) utilisant LangChain4J pour interagir avec un LLM et un outil Python MCP (fonctions get_alerts, get_forecast).
Définition de l'agent A2A (via CDI) :
▪︎ Agent Card : Fournit les métadonnées de l'agent (nom, description, URL, capacités, compétences comme "weather_search").
Agent Executor : Gère les requêtes A2A entrantes, extrait le message utilisateur, appelle le service LLM et formate la réponse.
Exposition de l'agent : Enregistrement d'une application JAX-RS pour les endpoints.
Déploiement et test :
Configuration de l'outil A2A-inspector de Google (via un conteneur Podman).
Construction du projet Maven, configuration des variables d'environnement (ex: GEMINI_API_KEY).
Lancement du serveur WildFly.
Conclusion : Transformation minimale d'une application IA en agent A2A.
Permet la collaboration et le partage d'informations entre agents IA, indépendamment de leur infrastructure sous-jacente.
À partir de la version 2025.3, IntelliJ IDEA Community Edition ne sera plus distribuée séparément.
Une seule version unifiée d'IntelliJ IDEA regroupera les fonctionnalités des éditions Community et Ultimate.
Les fonctionnalités avancées de l'édition Ultimate seront accessibles via abonnement.
Les utilisateurs sans abonnement auront accès à une version gratuite enrichie par rapport à l'édition Community actuelle.
Cette unification vise à simplifier l'expérience utilisateur et réduire les différences entre les éditions.
Les utilisateurs Community seront automatiquement migrés vers cette nouvelle version unifiée.
Il sera possible d'activer les fonctionnalités Ultimate temporairement d'un simple clic.
En cas d'expiration d'abonnement Ultimate, l'utilisateur pourra continuer à utiliser la version installée avec un jeu limité de fonctionnalités gratuites, sans interruption.
Ce changement reflète l'engagement de JetBrains envers l'open source et l'adaptation aux besoins de la communauté.
Claude Code propose des hooks qui permettent d'exécuter des scripts à différents moments d'une session, par exemple au début, lors de l'utilisation d'outils, ou à la fin.
Ces hooks facilitent l'automatisation de tâches comme la gestion de branches Git, l'envoi de notifications, ou l'intégration avec d'autres outils.
Un exemple simple est l'envoi d'une notification sur le bureau à la fin d'une session.
Les hooks se configurent via trois fichiers JSON distincts selon le scope : utilisateur, projet ou local.
Sur macOS, l'envoi de notifications nécessite une permission spécifique via l'application "Script Editor".
Il est important d'avoir une version à jour de Claude Code pour utiliser ces hooks.
Google a lancé Gemini CLI GitHub Actions, un agent d'IA qui fonctionne comme un "coéquipier de code" pour les dépôts GitHub.
L'outil est gratuit et est conçu pour automatiser des tâches de routine telles que le triage des problèmes (issues), l'examen des demandes de tirage (pull requests) et d'autres tâches de développement.
Il agit à la fois comme un agent autonome et un collaborateur que les développeurs peuvent solliciter à la demande, notamment en le mentionnant dans une issue ou une pull request.
L'outil est basé sur la CLI Gemini, un agent d'IA open-source qui amène le modèle Gemini directement dans le terminal.
Il utilise l'infrastructure GitHub Actions, ce qui permet d'isoler les processus dans des conteneurs séparés pour des raisons de sécurité.
Trois flux de travail (workflows) open-source sont disponibles au lancement : le triage intelligent des issues, l'examen des pull requests et la collaboration à la demande.
Armin souligne qu'il n'est pas fan du protocole MCP (Model Context Protocol) dans sa forme actuelle : il manque de composabilité et exige trop de contexte.
Il remarque que pour une même tâche (ex. GitHub), utiliser le CLI est souvent plus rapide et plus efficace en termes de contexte que passer par un serveur MCP.
Selon lui, le code reste la solution la plus simple et fiable, surtout pour automatiser des tâches répétitives.
Il préfère créer des scripts clairs plutôt que se reposer sur l'inférence LLM : cela facilite la vérification, la maintenance et évite les erreurs subtiles.
Pour les tâches récurrentes, si on les automatise, mieux vaut le faire avec du code reusable, plutôt que de laisser l'IA deviner à chaque fois.
Il illustre cela en convertissant son blog entier de reStructuredText à Markdown : plutôt qu'un usage direct d'IA, il a demandé à Claude de générer un script complet, avec parsing AST, comparaison des fichiers, validation et itération.
Ce workflow LLM→code→LLM (analyse et validation) lui a donné confiance dans le résultat final, tout en conservant un contrôle humain sur le processus.
Il juge que MCP ne permet pas ce type de pipeline automatisé fiable, car il introduit trop d'inférence et trop de variations par appel.
Pour lui, coder reste le meilleur moyen de garder le contrôle, la reproductibilité et la clarté dans les workflows automatisés.
Cameron raconte son expérience de création du serveur XcodeBuildMCP, qui lui a permis de mieux comprendre le débat entre servir l'IA via MCP ou laisser l'IA utiliser directement les CLI du système.
Selon lui, les CLIs restent préférables pour les développeurs experts recherchant contrôle, transparence, performance et simplicité.
Mais les serveurs MCP excellent sur les workflows complexes, les contextes persistants, les contraintes de sécurité, et facilitent l'accès pour les utilisateurs moins expérimentés.
Il reconnaît la critique selon laquelle MCP consomme trop de contexte (« context bloat ») et que les appels CLI peuvent être plus rapides et compréhensibles.
Toutefois, il souligne que beaucoup de problèmes proviennent de la qualité des implémentations clients, pas du protocole MCP en lui‑même.
Pour lui, un bon serveur MCP peut proposer des outils soigneusement définis qui simplifient la vie de l'IA (par exemple, renvoyer des données structurées plutôt que du texte brut à parser).
Il apprécie la capacité des MCP à offrir des opérations état‑durables (sessions, mémoire, logs capturés), ce que les CLI ne gèrent pas naturellement.
Certains scénarios ne peuvent pas fonctionner via CLI (pas de shell accessible) alors que MCP, en tant que protocole indépendant, reste utilisable par n'importe quel client.
Son verdict : pas de solution universelle — chaque contexte mérite d'être évalué, et on ne devrait pas imposer MCP ou CLI à tout prix.
L'auteur préfère utiliser des fakes ou stubs faits à la main plutôt que des frameworks de mocking comme Mockito ou EasyMock.
Les frameworks de mocking isolent le code, mais entraînent souvent :
Un fort couplage entre les tests et les détails d'implémentation.
Des tests qui valident le mock plutôt que le comportement réel.
Deux principes fondamentaux guident son approche :
Favoriser un design fonctionnel, avec logique métier pure (fonctions sans effets de bord).
Contrôler les données de test : par exemple en utilisant des bases réelles (via Testcontainers) plutôt que de simuler.
Dans sa pratique, les seuls cas où un mock externe est utilisé concernent les services HTTP externes, et encore il préfère en simuler seulement le transport plutôt que le comportement métier.
Résultat : les tests deviennent plus simples, plus rapides à écrire, plus fiables, et moins fragiles aux évolutions du code.
L'article conclut que si tu conçois correctement ton code, tu pourrais très bien ne pas avoir besoin de frameworks de mocking du tout.
Le blog en réponse d'Henri Tremblay nuance un peu ces retours
Le rôle de PM est difficile : Un travail exigeant, où il faut être le plus impliqué de l'équipe pour assurer le succès.
1. Livrer (shipper) est tout ce qui compte : La priorité absolue. Mieux vaut livrer et itérer rapidement que de chercher la perfection en théorie. Un produit livré permet d'apprendre de la réalité.
2. Donner l'envie du grand large : La meilleure façon de faire avancer un projet est d'inspirer l'équipe avec une vision forte et désirable. Montrer le "pourquoi".
3. Utiliser son produit tous les jours : Non négociable pour réussir. Permet de développer une intuition et de repérer les vrais problèmes que la recherche utilisateur ne montre pas toujours.
4. Être un bon ami : Créer des relations authentiques et aider les autres est un facteur clé de succès à long terme. La confiance est la base d'une exécution rapide.
5. Donner plus qu'on ne reçoit : Toujours chercher à aider et à collaborer. La stratégie optimale sur la durée est la coopération. Ne pas être possessif avec ses idées.
6. Utiliser le bon levier : Pour obtenir une décision, il faut identifier la bonne personne qui a le pouvoir de dire "oui", et ne pas se laisser bloquer par des avis non décisionnaires.
7. N'aller que là où on apporte de la valeur : Combler les manques, faire le travail ingrat que personne ne veut faire. Savoir aussi s'écarter (réunions, projets) quand on n'est pas utile.
8. Le succès a plusieurs parents, l'échec est orphelin : Si le produit réussit, c'est un succès d'équipe. S'il échoue, c'est la faute du PM. Il faut assumer la responsabilité finale.
Conclusion : Le PM est un chef d'orchestre. Il ne peut pas jouer de tous les instruments, mais son rôle est d'orchestrer avec humilité le travail de tous pour créer quelque chose d'harmonieux.
L'auteur (Wim Deblauwe) détaille comment il structure ses tests dans une application Spring Boot destinée à la production.
Le projet inclut automatiquement la dépendance spring-boot-starter-test, qui regroupe JUnit 5, AssertJ, Mockito, Awaitility, JsonAssert, XmlUnit et les outils de testing Spring.
Tests unitaires : ciblent les fonctions pures (record, utilitaire), testés simplement avec JUnit et AssertJ sans démarrage du contexte Spring.
Tests de cas d'usage (use case) : orchestrent la logique métier, généralement via des use cases qui utilisent un ou plusieurs dépôts de données.
Tests JPA/repository : vérifient les interactions avec la base via des tests realisant des opérations CRUD (avec un contexte Spring pour la couche persistance).
Tests de contrôleur : permettent de tester les endpoints web (ex. @WebMvcTest), souvent avec MockBean pour simuler les dépendances.
Tests d'intégration complets : ils démarrent tout le contexte Spring (@SpringBootTest) pour tester l'application dans son ensemble.
L'auteur évoque également des tests d'architecture, mais sans entrer dans le détail dans cet article.
Résultat : une pyramide de tests allant des plus rapides (unitaires) aux plus complets (intégration), garantissant fiabilité, vitesse et couverture sans surcharge inutile.
Bitwarden introduit un serveur MCP (Model Context Protocol) destiné à intégrer de manière sécurisée les agents IA dans les workflows de gestion de mots de passe.
Ce serveur fonctionne en architecture locale (local-first) : toutes les interactions et les données sensibles restent sur la machine de l'utilisateur, garantissant l'application du principe de chiffrement zero‑knowledge.
L'intégration se fait via l'interface CLI de Bitwarden, permettant aux agents IA de générer, récupérer, modifier et verrouiller les identifiants via des commandes sécurisées. Le serveur peut être auto‑hébergé pour un contrôle maximal des données.
Le protocole MCP est un standard ouvert qui permet de connecter de façon uniforme des agents IA à des sources de données et outils tiers, simplifiant les intégrations entre LLM et applications.
Une démo avec Claude (agent IA d'Anthropic) montre que l'IA peut interagir avec le coffre Bitwarden : vérifier l'état, déverrouiller le vault, générer ou modifier des identifiants, le tout sans intervention humaine directe.
Bitwarden affiche une approche priorisant la sécurité, mais reconnaît les risques liés à l'utilisation d'IA autonome. L'usage d'un LLM local privé est fortement recommandé pour limiter les vulnérabilités.
Si tu veux, je peux aussi te résumer les enjeux principaux (interopérabilité, sécurité, cas d'usage) ou un extrait spécifique !
Tea est une application lancée en 2023 qui permet aux femmes de laisser des avis anonymes sur des hommes rencontrés.
En juillet 2025, une importante fuite a exposé environ 72 000 images sensibles (selfies, pièces d'identité) et plus d'1,1 million de messages privés.
La fuite a été révélée après qu'un utilisateur ait partagé un lien pour télécharger la base de données compromise.
Les données touchées concernaient majoritairement des utilisateurs inscrits avant février 2024, date à laquelle l'application a migré vers une infrastructure plus sécurisée.
En réponse, Tea prévoit de proposer des services de protection d'identité aux utilisateurs impactés.
Une campagne de phishing ciblant les mainteneurs npm a compromis plusieurs comptes, incluant celui du paquet is.
Des versions compromises du paquet is (notamment les versions 3.3.1 et 5.0.0) contenaient un chargeur de malware JavaScript destiné aux systèmes Windows.
Ce malware a offert aux attaquants un accès à distance via WebSocket, permettant potentiellement l'exécution de code arbitraire.
L'attaque fait suite à d'autres compromissions de paquets populaires comme eslint-config-prettier, eslint-plugin-prettier, synckit, @pkgr/core, napi-postinstall, et got-fetch.
Tous ces paquets ont été publiés sans aucun commit ou PR sur leurs dépôts GitHub respectifs, signalant un accès non autorisé aux tokens mainteneurs.
Le domaine usurpé [npnjs.com](http://npnjs.com) a été utilisé pour collecter les jetons d'accès via des emails de phishing trompeurs.
L'épisode met en lumière la fragilité des chaînes d'approvisionnement logicielle dans l'écosystème npm et la nécessité d'adopter des pratiques renforcées de sécurité autour des dépendances.
Anthropic a lancé des fonctionnalités de sécurité automatisées pour Claude Code, un assistant de codage d'IA en ligne de commande. Ces fonctionnalités ont été introduites en réponse au besoin croissant de maintenir la sécurité du code alors que les outils d'IA accélèrent considérablement le développement de logiciels.
Commande /security-review : les développeurs peuvent exécuter cette commande dans leur terminal pour demander à Claude d'identifier les vulnérabilités de sécurité, notamment les risques d'injection SQL, les vulnérabilités de script intersite (XSS), les failles d'authentification et d'autorisation, ainsi que la gestion non sécurisée des données. Claude peut également suggérer et implémenter des correctifs.
Intégration GitHub Actions : une nouvelle action GitHub permet à Claude Code d'analyser automatiquement chaque nouvelle demande d'extraction (pull request). L'outil examine les modifications de code pour y trouver des vulnérabilités, applique des règles personnalisables pour filtrer les faux positifs et commente directement la demande d'extraction avec les problèmes détectés et les correctifs recommandés.
Ces fonctionnalités sont conçues pour créer un processus d'examen de sécurité cohérent et s'intégrer aux pipelines CI/CD existants, ce qui permet de s'assurer qu'aucun code n'atteint la production sans un examen de sécurité de base.
Jan Moser critique ceux qui pensent que l'IA et les développeurs peu qualifiés peuvent remplacer les ingénieurs logiciels compétents.
Il cite l'exemple de l'application Tea, une plateforme de sécurité pour femmes, qui a exposé 72 000 images d'utilisateurs en raison d'une mauvaise configuration de Firebase et d'un manque de pratiques de développement sécurisées.
Il souligne que l'absence de contrôles automatisés et de bonnes pratiques de sécurité a permis cette fuite de données.
Moser avertit que des outils comme l'IA ne peuvent pas compenser l'absence de compétences en génie logiciel, notamment en matière de sécurité, de gestion des erreurs et de qualité du code.
Il appelle à une reconnaissance de la valeur des ingénieurs logiciels qualifiés et à une approche plus rigoureuse dans le développement logiciel.
YouTube commence à déployer une technologie d'estimation d'âge basée sur l'IA pour identifier les utilisateurs adolescents aux États-Unis, indépendamment de l'âge déclaré lors de l'inscription.
Cette technologie analyse divers signaux comportementaux, tels que l'historique de visionnage, les catégories de vidéos consultées et l'âge du compte.
Lorsqu'un utilisateur est identifié comme adolescent, YouTube applique des protections supplémentaires, notamment :
Désactivation des publicités personnalisées.
Activation des outils de bien-être numérique, tels que les rappels de temps d'écran et de coucher.
Limitation de la visualisation répétée de contenus sensibles, comme ceux liés à l'image corporelle.
Si un utilisateur est incorrectement identifié comme mineur, il peut vérifier son âge via une pièce d'identité gouvernementale, une carte de crédit ou un selfie.
Ce déploiement initial concerne un petit groupe d'utilisateurs aux États-Unis et sera étendu progressivement.
Cette initiative s'inscrit dans les efforts de YouTube pour renforcer la sécurité des jeunes utilisateurs en ligne.
Mistral AI a réalisé la première analyse de cycle de vie complète d'un modèle d'IA, en collaboration avec plusieurs partenaires.
L'étude quantifie l'impact environnemental du modèle Mistral Large 2 sur les émissions de gaz à effet de serre, la consommation d'eau, et l'épuisement des ressources.
La phase d'entraînement a généré 20,4 kilotonnes de CO₂ équivalent, consommé 281 000 m³ d'eau, et utilisé 660 kg SB-eq (mineral consumption).
Pour une réponse de 400 tokens, l'impact marginal est faible mais non négligeable : 1,14 gramme de CO₂, 45 mL d'eau, et 0,16 mg d'équivalent antimoine.
Mistral propose trois indicateurs pour évaluer cet impact : l'impact absolu de l'entraînement, l'impact marginal de l'inférence, et le ratio inference/impact total sur le cycle de vie.
L'entreprise souligne l'importance de choisir le modèle en fonction du cas d'usage pour limiter l'empreinte environnementale.
Mistral appelle à plus de transparence et à l'adoption de standards internationaux pour permettre une comparaison claire entre modèles.
Les outils d'IA devaient automatiser les tâches pénibles et libérer du temps pour les activités stratégiques et créatives. En réalité, le temps gagné est souvent aussitôt réinvesti dans d'autres tâches, créant une surcharge.
Les utilisateurs croient être plus productifs avec l'IA, mais les données contredisent cette impression : une étude montre que les développeurs utilisant l'IA prennent 19 % de temps en plus pour accomplir leurs tâches.
Le rapport DORA 2024 observe une baisse de performance globale des équipes lorsque l'usage de l'IA augmente : –1,5 % de throughput et –7,2 % de stabilité de livraison pour +25 % d'adoption de l'IA.
L'IA ne réduit pas la charge mentale, elle la déplace : rédaction de prompts, vérification de résultats douteux, ajustements constants… Cela épuise et limite le temps de concentration réelle.
Cette surcharge cognitive entraîne une forme de dette mentale : on ne gagne pas vraiment du temps, on le paie autrement.
Le vrai problème vient de notre culture de la productivité, qui pousse à toujours vouloir optimiser, quitte à alimenter l'épuisement professionnel.
Trois pistes concrètes :
Repenser la productivité non en temps gagné, mais en énergie préservée.
Être sélectif dans l'usage des outils IA, en fonction de son ressenti et non du battage médiatique.
Accepter la courbe en J : l'IA peut être utile, mais nécessite des ajustements profonds pour produire des gains réels.
Le vrai hack de productivité ? Parfois, ralentir pour rester lucide et durable.
JavaOne, la conférence dédiée à la communauté Java, fait son grand retour dans la Bay Area du 17 au 19 mars 2026.
Après le succès de l'édition 2025, ce retour s'inscrit dans la continuité de la mission initiale de la conférence : rassembler la communauté pour apprendre, collaborer et innover.
Dans cet épisode, Emmanuel et Antonio discutent de divers sujets liés au développement: Applets (et oui), app iOS développées sous Linux, le protocole A2A, l'accessibilité, les assistants de code AI en ligne de commande (vous n'y échapperez pas)… Mais aussi des approches méthodologiques et architecturales comme l'architecture hexagonale, les tech radars, l'expert généraliste et bien d'autres choses encore.
Raisons égoïstes : Des avantages personnels pour les développeurs de créer des interfaces utilisateurs (UI) accessibles, au-delà des arguments moraux.
Débogage facilité : Une interface accessible, avec une structure sémantique claire, est plus facile à déboguer qu'un code désordonné (la « soupe de div »).
Noms standardisés : L'accessibilité fournit un vocabulaire standard (par exemple, les directives WAI-ARIA) pour nommer les composants d'interface, ce qui aide à la clarté et à la structuration du code.
Tests simplifiés : Il est plus simple d'écrire des tests automatisés pour des éléments d'interface accessibles, car ils peuvent être ciblés de manière plus fiable et sémantique.
Objectif : Maintenir la pertinence et la compétitivité du format.
Recommandation : Soutenu par des institutions comme la Bibliothèque du Congrès américain.
Nouveautés Clés :Prise en charge du HDR (High Dynamic Range) pour une plus grande gamme de couleurs.
Reconnaissance officielle des PNG animés (APNG).
Support des métadonnées Exif (copyright, géolocalisation, etc.).
Support Actuel : Déjà intégré dans Chrome, Safari, Firefox, iOS, macOS et Photoshop.
Futur :Prochaine édition : focus sur l'interopérabilité entre HDR et SDR.
Édition suivante : améliorations de la compression.
Avec le projet open source Xtool, on peut maintenant construire des applications iOS sur Linux ou Windows, sans avoir besoin d'avoir obligatoirement un Mac https://xtool.sh/tutorials/xtool/
Un tutoriel très bien fait explique comment faire :
Création d'un nouveau projet via la commande xtool new.
Génération d'un package Swift avec des fichiers clés comme Package.swift et xtool.yml.
Build et exécution de l'app sur un appareil iOS avec xtool dev.
Connexion de l'appareil en USB, gestion du jumelage et du Mode Développeur.
xtool gère automatiquement les certificats, profils de provisionnement et la signature de l'app.
Modification du code de l'interface utilisateur (ex: ContentView.swift).
Reconstruction et réinstallation rapide de l'app mise à jour avec xtool dev.
Annonce du projet Agent2Agent (A2A) : Lors du sommet Open Source Summit North America, la Linux Foundation a annoncé la création du projet Agent2Agent, en partenariat avec Google, AWS, Microsoft, Cisco, Salesforce, SAP et ServiceNow.
Objectif du protocole A2A : Ce protocole vise à établir une norme ouverte pour permettre aux agents d'intelligence artificielle (IA) de communiquer, collaborer et coordonner des tâches complexes entre eux, indépendamment de leur fournisseur.
Transfert de Google à la communauté open source : Google a transféré la spécification du protocole A2A, les SDK associés et les outils de développement à la Linux Foundation pour garantir une gouvernance neutre et communautaire.
Soutien de l'industrie : Plus de 100 entreprises soutiennent déjà le protocole. AWS et Cisco sont les derniers à l'avoir validé. Chaque entreprise partenaire a souligné l'importance de l'interopérabilité et de la collaboration ouverte pour l'avenir de l'IA.
Objectifs de la fondation A2A :
Établir une norme universelle pour l'interopérabilité des agents IA.
Favoriser un écosystème mondial de développeurs et d'innovateurs.
Garantir une gouvernance neutre et ouverte.
Accélérer l'innovation sécurisée et collaborative.
parler de la spec et surement dire qu'on aura l'occasion d'y revenir
Fonctionnalité méconnue : git notes est une fonctionnalité puissante mais peu utilisée de Git.
Ajout de métadonnées : Permet d'attacher des informations à des commits existants sans en modifier le hash.
Cas d'usage : Idéal pour ajouter des données issues de systèmes automatisés (builds, tickets, etc.).
Revue de code distribuée : Des outils comme git-appraise ont été construits sur git notes pour permettre une revue de code entièrement distribuée, indépendante des forges (GitHub, GitLab).
Peu populaire : Son interface complexe et le manque de support des plateformes de forge ont limité son adoption (GitHub n'affiche même pas/plus les notes).
Indépendance des forges : git notes offre une voie vers une plus grande indépendance vis-à-vis des plateformes centralisées, en distribuant l'historique du projet avec le code lui-même.
montre cet outil qui donne du contexte spécifique à Spring comme les beans non activés, ceux mockés, la valeur des configs, l'état des transactions
Il permet de visualiser tous les beans Spring directement dans la vue projet, avec les beans non instanciés grisés et les beans mockés marqués en orange pour les tests
Il résout le problème de résolution des propriétés en affichant la valeur effective en temps réel dans les fichiers properties et yaml, avec la source exacte des valeurs surchargées
Il affiche des indicateurs visuels pour les méthodes exécutées dans des transactions actives, avec les détails complets de la transaction et une hiérarchie visuelle pour les transactions imbriquées
Il détecte automatiquement toutes les connexions DataSource actives et les intègre avec la fenêtre d'outils Database d'IntelliJ IDEA pour l'inspection
Il permet l'auto-complétion et l'invocation de tous les beans chargés dans l'évaluateur d'expression, fonctionnant comme un REPL pour le contexte Spring
Il fonctionne sans agent runtime supplémentaire en utilisant des breakpoints non-suspendus dans les bibliothèques Spring Boot pour analyser les données localement
Le Tech Radar est crucial pour la veille technologique continue et la prise de décision éclairée.
Il catégorise les technologies en Adopt, Trial, Assess, Hold, selon leur maturité et pertinence.
Il est recommandé de créer son propre Tech Radar pour l'adapter aux besoins spécifiques, en s'inspirant des Radars publics.
Utilisez des outils de découverte (Alternativeto), de tendance (Google Trends), de gestion d'obsolescence (End-of-life.date) et d'apprentissage (roadmap.sh).
Restez informé via les blogs, podcasts, newsletters (TLDR), et les réseaux sociaux/communautés (X, Slack).
L'objectif est de rester compétitif et de faire des choix technologiques stratégiques.
Attention à ne pas sous-estimer son coût de maintenance
un article de rappel sur la valeur du monitoring métier et ses valeurs
Le monitoring technique traditionnel (CPU, serveurs, API) ne garantit pas que le service fonctionne correctement pour l'utilisateur final.
Le monitoring métier complète le monitoring technique en se concentrant sur l'expérience réelle des utilisateurs plutôt que sur les composants isolés.
Il surveille des parcours critiques concrets comme "un client peut-il finaliser sa commande ?" au lieu d'indicateurs abstraits.
Les métriques métier sont directement actionnables : taux de succès, délais moyens et volumes d'erreurs permettent de prioriser les actions.
C'est un outil de pilotage stratégique qui améliore la réactivité, la priorisation et le dialogue entre équipes techniques et métier.
La mise en place suit 5 étapes : dashboard technique fiable, identification des parcours critiques, traduction en indicateurs, centralisation et suivi dans la durée.
Une Definition of Done doit formaliser des critères objectifs avant d'instrumenter tout parcours métier.
Les indicateurs mesurables incluent les points de passage réussis/échoués, les temps entre actions et le respect des règles métier.
Les dashboards doivent être intégrés dans les rituels quotidiens avec un système d'alertes temps réel compréhensibles.
Le dispositif doit évoluer continuellement avec les transformations produit en questionnant chaque incident pour améliorer la détection.
La difficulté c'est effectivement l'évolution métier par exemple peu de commandes la nuit etc
Victoire pour Anthropic (jusqu'au prochain procès): L'entreprise a obtenu gain de cause dans un procès très suivi concernant l'entraînement de son IA, Claude, avec des œuvres protégées par le droit d'auteur.
"Fair Use" en force : Le juge a estimé que l'utilisation des livres pour entraîner l'IA relevait du "fair use" (usage équitable) car il s'agit d'une transformation du contenu, pas d'une simple reproduction.
Nuance importante : Cependant, le stockage de ces œuvres dans une "bibliothèque centrale" sans autorisation a été jugé illégal, ce qui souligne la complexité de la gestion des données pour les modèles d'IA.
On aime ou pas on aide pas Luc Julia et sa vision de l'IA . C'est un eversion encore plus longue mais dans le même thème que sa keynote à Devoxx France 2025 ( https://www.youtube.com/watch?v=JdxjGZBtp_k )
Nature et limites de l'IA : Luc Julia a insisté sur le fait que l'intelligence artificielle est une "évolution" plutôt qu'une "révolution". Il a rappelé qu'elle repose sur des mathématiques et n'est pas "magique". Il a également alerté sur le manque de fiabilité des informations fournies par les IA génératives comme ChatGPT, soulignant qu'« on ne peut pas leur faire confiance » car elles peuvent se tromper et que leur pertinence diminue avec le temps.
Régulation de l'IA : Il a plaidé pour une régulation "intelligente et éclairée", qui devrait se faire a posteriori afin de ne pas freiner l'innovation. Selon lui, cette régulation doit être basée sur les faits et non sur une analyse des risques a priori.
Place de la France : Luc Julia a affirmé que la France possédait des chercheurs de très haut niveau et faisait partie des meilleurs mondiaux dans le domaine de l'IA. Il a cependant soulevé le problème du financement de la recherche et de l'innovation en France.
IA et Société : L'audition a traité des impacts de l'IA sur la vie privée, le monde du travail et l'éducation. Luc Julia a souligné l'importance de développer l'esprit critique, notamment chez les jeunes, pour apprendre à vérifier les informations générées par les IA.
Applications concrètes et futures : Le cas de la voiture autonome a été discuté, Luc Julia expliquant les différents niveaux d'autonomie et les défis restants. Il a également affirmé que l'intelligence artificielle générale (AGI), une IA qui dépasserait l'homme dans tous les domaines, est "impossible" avec les technologies actuelles.
Dans cet épisode, c'est le retour de Katia et d'Antonio. Les Cast Codeurs explorent WebAssembly 2.0, les 30 ans de Java, l'interopérabilité Swift-Java et les dernières nouveautés Kotlin. Ils plongent dans l'évolution de l'IA avec Claude 4 et GPT-4.1, débattent de la conscience artificielle et partagent leurs retours d'expérience sur l'intégration de l'IA dans le développement. Entre virtualisation, défis d'infrastructure et enjeux de sécurité open source, une discussion riche en insights techniques et pratiques.
Utilisation du support MCP développé par l'équipe Quarkus. C'est facile, suffit d'annoter une méthode avec @Tool et ses arguments avec @ToolArg et c'est parti !
L'outil MCP inspector est très pratique pour inspecter manuellement le fonctionnement de ses serveurs MCP
Déployer sur Cloud Run est facile grâce aux Dockerfiles fournis par Quarkus
En bonus, Guillaume montre comment configuré un serveur MCP comme un outil dans le framework ADK pour Java, pour créer ses agents IA
saveOrUpdate (reattachement d'entité) n'est plus supporté
session stateless plus capable: oeprations unitaires et pas seulement bach, acces au cache de second niveau, m,eilleure API pour les batchs (insertMultiple etc)
nouvelle API criteria simple et type-safe: et peut ajouter a une requete de base
on en avait parlé fin de l'année dernière ou début d'année
Modèle basé uniquement sur les Futures : Vert.x 5 abandonne le modèle de callbacks pour ne conserver que les Futures, avec une nouvelle classe de base VerticleBase mieux adaptée à ce modèle asynchrone.
Support des modules Java (JPMS) : Vert.x 5 prend en charge le système de modules de la plateforme Java avec des modules explicites, permettant une meilleure modularité des applications.
Améliorations majeures de gRPC : Support natif de gRPC Web et gRPC Transcoding (support HTTP/JSON et gRPC), format JSON en plus de Protobuf, gestion des timeouts et deadlines, services de réflexion et de health.
Support d'io_uring : Intégration native du système io_uring de Linux (précédemment en incubation) pour de meilleures performances I/O sur les systèmes compatibles.
Load balancing côté client : Nouvelles capacités de répartition de charge pour les clients HTTP et gRPC avec diverses politiques de distribution.
Service Resolver : Nouveau composant pour la résolution dynamique d'adresses de services, étendant les capacités de load balancing à un ensemble plus large de résolveurs.
Améliorations du proxy HTTP : Nouvelles transformations prêtes à l'emploi, interception des upgrades WebSocket et interface SPI pour le cache avec support étendu des spécifications.
Suppressions et remplacements : Plusieurs composants sont dépréciés (gRPC Netty, JDBC API, Service Discovery) ou supprimés (Vert.x Sync, RxJava 1), remplacés par des alternatives plus modernes comme les virtual threads et Mutiny.
Les chercheur d'Anthropic montrent comment Opus 4 faisait du chantage aux ingenieurs qui voulaient l'eteindre pour mettre une nouvelle version en ligne
Une boite de recherche a montré la même chose d'Open AI o3
non seulemenmt il ne veut pas mais il essaye activement d'empêcher l'extinction
Plaidoyer pour une IA intégrée de façon transparente et intuitive, au-delà des chatbots.
Chatbots : pas toujours l'option LLM la plus intuitive ou la moins perturbatrice.
Préconisation : IA directement dans les applications pour plus d'intelligence et d'utilité naturelle.
Exemples d'intégration transparente : résumés des conversations Gmail et chat, web clipper Obsidian qui résume et taggue, complétion de code LLM.
Meilleure UX IA : intégrée, contextuelle, sans "boutons IA" ou fenêtres de chat dédiées.
Conclusion de Guillaume : intégrations IA réussies = partie naturelle du système, améliorant les workflows sans perturbation, le développeur ou l'utilisateur reste dans le "flow"
expliquer idee de garder les changements a jour dans l'index
Outillage
guide pratique pour choisir le bon modèle d'IA à utiliser avec GitHub Copilot, en fonction de vos besoins en développement logiciel. https://github.blog/ai-and-ml/github-copilot/which-ai-model-should-i-use-with-github-copilot/ - Équilibre coût/performance : GPT-4.1, GPT-4o ou Claude 3.5 Sonnet pour des tâches générales et multilingues. - Tâches rapides : o4-mini ou Claude 3.5 Sonnet pour du prototypage ou de l'apprentissage rapide. - Besoins complexes : Claude 3.7 Sonnet, GPT-4.5 ou o3 pour refactorisation ou planification logicielle. - Entrées multimodales : Gemini 2.0 Flash ou GPT-4o pour analyser images, UI ou diagrammes. - Projets techniques/scientifiques : Gemini 2.5 Pro pour raisonnement avancé et gros volumes de données.
par exemple faire tourner un MCP server qui accède à la base de donnée
Méthodologies
Développement d'une bibliothèque OAuth 2.1 open source par Cloudflare, en grande partie générée par l'IA Claude: - Prompts intégrés aux commits : Chaque commit contient le prompt utilisé, ce qui facilite la compréhension de l'intention derrière le code. - Prompt par l'exemple : Le premier prompt montrait un exemple d'utilisation de l'API qu'on souhaite obtenir, ce qui a permis à l'IA de mieux comprendre les attentes. - Prompts structurés : Les prompts les plus efficaces suivaient un schéma clair : état actuel, justification du changement, et directive précise. - Traitez les prompts comme du code source : Les inclure dans les commits aide à la maintenance. - Acceptez les itérations : Chaque fonctionnalité a nécessité plusieurs essais. - Intervention humaine indispensable : Certaines tâches restent plus rapides à faire à la main. https://www.maxemitchell.com/writings/i-read-all-of-cloudflares-claude-generated-commits/
Trois packages npm malveillants ont été découverts ciblant spécifiquement l'éditeur de code Cursor sur macOS, téléchargés plus de 3 200 fois au total.Les packages se déguisent en outils de développement promettant "l'API Cursor la moins chère" pour attirer les développeurs intéressés par des solutions AI abordables.
Technique d'attaque sophistiquée : les packages volent les identifiants utilisateur, récupèrent un payload chiffré depuis des serveurs contrôlés par les pirates, puis remplacent le fichier main.js de Cursor.
Persistance assurée en désactivant les mises à jour automatiques de Cursor et en redémarrant l'application avec le code malveillant intégré.
Nouvelle méthode de compromission : au lieu d'injecter directement du malware, les attaquants publient des packages qui modifient des logiciels légitimes déjà installés sur le système.
Persistance même après suppression : le malware reste actif même si les packages npm malveillants sont supprimés, nécessitant une réinstallation complète de Cursor.
Exploitation de la confiance : en s'exécutant dans le contexte d'une application légitime (IDE), le code malveillant hérite de tous ses privilèges et accès.
Package "rand-user-agent" compromis : un package légitime populaire a été infiltré pour déployer un cheval de Troie d'accès distant (RAT) dans certaines versions.
Recommandations de sécurité : surveiller les packages exécutant des scripts post-installation, modifiant des fichiers hors node_modules, ou initiant des appels réseau inattendus, avec monitoring d'intégrité des fichiers.
Moderne, Inc. a re-licencié silencieusement du code OpenRewrite (dont rewrite-java-security) de la licence Apache 2.0 à une licence propriétaire (MPL) sans consultation des contributeurs.
Ce re-licenciement rend le code inaccessible et non modifiable pour les contributeurs originaux.
Moderne s'est retiré de la Commonhaus Foundation (dédiée à l'open source) juste avant ces changements.
La justification de Moderne est la crainte que de grandes entreprises utilisent OpenRewrite sans contribuer, créant une concurrence.
Des contributions communautaires importantes (VMware, AliBaba) sous Apache 2.0 ont été re-licenciées sans leur consentement.
La légalité de ce re-licenciement est incertaine sans CLA des contributeurs.
Cette action crée un précédent dangereux pour les futurs contributeurs et nuit à la confiance dans l'écosystème OpenRewrite.
Corrections de Moderne (Suite aux réactions) :
Les dépôts Apache originaux ont été restaurés et archivés.
Des versions majeures ont été utilisées pour signaler les changements de licence.
Des espaces de noms distincts (org.openrewrite vs. io.moderne) ont été créés pour différencier les modules.
Suggestions de Correction de l'Auteur :
Annuler les changements de licence sur toutes les recettes communautaires.
S'engager dans le dialogue et communiquer publiquement les changements majeurs.
Respecter le versionnement sémantique (versions majeures pour les changements de licence).
LCC 326 - Interview assistants de code IA avec Philippe Charrière et Kevin Aubry
03 Jun 2025
01:58:07
Dans cet épisode, nous explorons l'univers des assistants de code AI. Comment ces outils transforment-ils notre façon de coder ? Quels sont leurs atouts et leurs limites ? Nos invités Philippe Charrière et Kevin Aubry nous éclairent sur ces technologies qui bouleversent les pratiques des développeurs.
Quelle est ton expérience personnelle avec ces outils?
Tu l'utilises chez ton employeur ou juste pour tes projets personnels?
Qu'est-ce qui t'a attiré dans ce domaine en particulier?
Introduction à la techno
Qu'est-ce qu'un assistant de code AI exactement? Comment le définirais-tu?
Quels sont les principaux assistants de code disponibles aujourd'hui sur le marché?
Quand et pourquoi ces outils ont-ils commencé à émerger?
Quelle est la différence entre un assistant de code AI et un simple outil de complétion de code?
La techno en concepts
Quels sont les fondements technologiques des assistants de code actuels?
Quels sont les différences de flow entre un outil dédié genre CursorAI, GitHub Copilot, un chat LLM générique de type Claude ou un outil à la Devoxx Genie?
Il y a aussi des outils de terminal, en ligne de commande ou en desktop dédié genre Goose de Block - comment ceux-ci se positionnent-ils?
Quelles sont les différentes approches d'intégration dans les environnements de développement?
Comment se positionnent les assistants par rapport à d'autres outils d'aide au développement?
Quels sont les modèles économiques actuels (open source vs propriétaire, SaaS vs on-premise)?
Qu'en est-il de la confidentialité du code analysé par ces outils?
Comment on l'utilise en pratique pour un dev
Comment un développeur Java typique intègre-t-il un assistant de code dans son workflow quotidien?
Quels sont les assistants les plus adaptés à l'écosystème Java spécifiquement?
Vous utilisez plutôt VSCode? Ça marche bien dans IntelliJ IDEA?
Quelles sont les bonnes pratiques pour formuler des requêtes efficaces à un assistant?
Quelles tâches répétitives ou complexes sont particulièrement bien gérées par ces assistants?
Quels sont les tâches aujourd'hui où l'assistant de code excelle: squelette de code initial, ajout de fonctionnalité, écrire les tests, corriger un bug, la sécurité, grosse migration de version ou de framework?
Comment évaluer la qualité du code généré? Quelles vérifications faire systématiquement?
Quelle est ton expérience des hallucinations? Des trucs rigolos à raconter?
Comment évoluent les pratiques de pair programming avec ces outils?
C'est quoi ton budget code assistance / LLM?
Sous le capot
Pas sûr de pouvoir faire cette partie sous le capot si on a des interview orienté utilisateur.
Comment ces assistants sont-ils entraînés spécifiquement pour comprendre le code?
Quelle est la différence entre le fine-tuning pour le code et pour le langage naturel?
Comment fonctionnent les techniques de retrieval augmentation pour le contexte du projet?
Comment les assistants gèrent-ils les dépendances et la structure des projets complexes?
Quels sont les défis techniques majeurs pour analyser du code Java avec ses spécificités?
Comment les modèles réussissent-ils (ou échouent-ils) à comprendre la sémantique du code?
Quelles sont les limites actuelles des modèles de langage pour la génération de code?
Qu'en est-il de la consommation de ressources et de l'impact environnemental?
La communauté, le futur
Comment la communauté Java a-t-elle accueilli ces outils?
C'est pour quel type de développeur? Junior, intermédiaire, expert? Quels avantages pour chaque?
Quel impact ces assistants ont-ils sur l'apprentissage de la programmation?
Comment voyez-vous l'évolution des compétences requises pour les développeurs?
Quelles sont les prochaines frontières pour les assistants de code?
Quelles fonctionnalités manquent encore à l'appel?
Comment les assistants vont-ils évoluer dans les 2-3 prochaines années?
Ces outils vont-ils transformer radicalement la profession de développeur?
Gros épisode qui couvre un large spectre de sujets : Java, Scala, Micronaut, NodeJS, l'IA et la compétence des développeurs, le sampling dans les LLMs, les DTO, le vibe coding, les changements chez Broadcom et Red Hat ainsi que plusieurs nouvelles sur les licences open source.
A l'occasion de JavaOne et du lancement de Java 24, Oracle lance un nouveau site avec des ressources vidéo pour apprendre le langage https://learn.java/
site plutôt à destination des débutants et des enseignants
couvre la syntaxe aussi, y compris les ajouts plus récents comme les records ou le pattern matching
Stabilité et besoin d'évolution : Scala maintient sa position (~14ème mondial) avec des bases techniques solides, mais doit évoluer face à la concurrence pour rester pertinent.
Axes prioritaires : L'évolution se concentre sur l'amélioration du duo sécurité/convivialité, le polissage du langage (suppression des "rugosités") et la simplification pour les débutants.
Innovation continue : Geler les fonctionnalités est exclu ; l'innovation est clé pour la valeur de Scala. Le langage doit rester généraliste et ne pas se lier à un framework spécifique.
Défis et progrès : L'outillage (IDE, outils de build comme sbt, scala-cli, Mill) et la facilité d'apprentissage de l'écosystème sont des points d'attention, avec des améliorations en cours (partenariat pédagogique, plateformes simples).
Dans JDK 25, la performance de la fonction String::hashCode a été améliorée pour être principalement constant foldable.
Cela signifie que si les chaînes de caractères sont utilisées comme clés dans une Map statique et immuable, des gains de performance significatifs sont probables.
L'amélioration repose sur l'annotation interne @Stable appliquée au champ privé String.hash.
Cette annotation permet à la machine virtuelle de lire la valeur du hash une seule fois et de la considérer comme constante si elle n'est pas la valeur par défaut (zéro).
Par conséquent, l'opération String::hashCode peut être remplacée par la valeur de hash connue, optimisant ainsi les lookups dans les Map immuables.
Un cas limite est celui où le code de hachage de la chaîne est zéro, auquel cas l'optimisation ne fonctionne pas (par exemple, pour la chaîne vide "").
Bien que l'annotation @Stable soit interne au JDK, un nouveau JEP (JEP 502: Stable Values (Preview)) est en cours de développement pour permettre aux utilisateurs de bénéficier indirectement de fonctionnalités similaires.
Mise à jour de la BOM (Bill of Materials) : La version 4.8.0 met à jour la BOM de la plateforme Micronaut.
Améliorations de Micronaut Core : Intégration de Micronaut SourceGen pour la génération interne de métadonnées et d'expressions bytecode.
Nombreuses améliorations dans Micronaut SourceGen.
Ajout du traçage de l'injection de dépendances pour faciliter le débogage au démarrage et à la création des beans.
Nouveau membre definitionType dans l'annotation @Client pour faciliter le partage d'interfaces entre client et serveur.
Support de la fusion dans les Bean Mappers via l'annotation @Mapping.
Nouvelle liveness probe détectant les threads bloqués (deadlocked) via ThreadMXBean.
Intégration Kubernetes améliorée : Mise à jour du client Java Kubernetes vers la version 22.0.1.
Ajout du module Micronaut Kubernetes Client OpenAPI, offrant une alternative au client officiel avec moins de dépendances, une configuration unifiée, le support des filtres et la compatibilité Native Image.
Introduction d'un nouveau runtime serveur basé sur le serveur HTTP intégré de Java, permettant de créer des applications sans dépendances serveur externes.
Ajout dans Micronaut Micrometer d'un module pour instrumenter les sources de données (traces et métriques).
Ajout de la condition condition dans l'annotation @MetricOptions pour contrôler l'activation des métriques via une expression.
Support des Consul watches dans Micronaut Discovery Client pour détecter les changements de configuration distribuée.
Possibilité de générer du code source à partir d'un schéma JSON via les plugins de build (Gradle et Maven).
Mise à jour du moteur V8 vers la version 13.6 : intégration de nouvelles fonctionnalités JavaScript telles que Float16Array, la gestion explicite des ressources (using), RegExp.escape, WebAssembly Memory64 et Error.isError.
npm 11 inclus : améliorations en termes de performance, de sécurité et de compatibilité avec les packages JavaScript modernes.
Changement de compilateur pour Windows : abandon de MSVC au profit de ClangCL pour la compilation de Node.js sur Windows.
AsyncLocalStorage utilise désormais AsyncContextFrame par défaut : offrant une gestion plus efficace du contexte asynchrone.
URLPattern disponible globalement : plus besoin d'importer explicitement cette API pour effectuer des correspondances d'URL.
Améliorations du modèle de permissions : le flag expérimental --experimental-permission devient --permission, signalant une stabilité accrue de cette fonctionnalité.
Améliorations du test runner : les sous-tests sont désormais attendus automatiquement, simplifiant l'écriture des tests et réduisant les erreurs liées aux promesses non gérées.
Intégration d'Undici 7 : amélioration des capacités du client HTTP avec de meilleures performances et un support étendu des fonctionnalités HTTP modernes.
Dépréciations et suppressions :
Dépréciation de url.parse() au profit de l'API WHATWG URL.
Suppression de tls.createSecurePair.
Dépréciation de SlowBuffer.
Dépréciation de l'instanciation de REPL sans new.
Dépréciation de l'utilisation des classes Zlib sans new.
Dépréciation du passage de args à spawn et execFile dans child_process.
Node.js 24 est actuellement la version "Current" et deviendra une version LTS en octobre 2025. Il est recommandé de tester cette version pour évaluer son impact sur vos applications.
La spécification MCP pour permettre aux LLMs d'avoir accès à divers outils et fonctions a peut-être été adoptée un peu rapidement, alors qu'elle n'était pas encore prête niveau sécurité
La fallacie de l'automatisation vs. l'augmentation : Elle se concentre sur l'amélioration des tâches existantes avec l'IA au lieu de considérer le changement de la valeur de ces tâches dans un nouveau système.
La fallacie des gains de productivité : L'augmentation de la productivité ne se traduit pas toujours par plus de valeur pour les travailleurs, car la valeur créée peut être capturée ailleurs dans le système.
La fallacie des emplois statiques : Les emplois sont des constructions organisationnelles qui peuvent être redéfinies par l'IA, rendant les rôles traditionnels obsolètes.
La fallacie de la compétition "moi vs. quelqu'un utilisant l'IA" : La concurrence évolue lorsque l'IA modifie les contraintes fondamentales d'un secteur, rendant les compétences existantes moins pertinentes.
La fallacie de la continuité du flux de travail : L'IA peut entraîner une réimagination complète des flux de travail, éliminant le besoin de certaines compétences.
La fallacie des outils neutres : Les outils d'IA ne sont pas neutres et peuvent redistribuer le pouvoir organisationnel en changeant la façon dont les décisions sont prises et exécutées.
La fallacie du salaire stable : Le maintien d'un emploi ne garantit pas un salaire stable, car la valeur du travail peut diminuer avec l'augmentation des capacités de l'IA.
La fallacie de l'entreprise stable : L'intégration de l'IA nécessite une restructuration de l'entreprise et ne se fait pas dans un vide organisationnel.
L'IA Assistant de JetBrains, lancée en juillet 2023, a été téléchargée plus de 22 millions de fois mais n'est notée que 2,3 sur 5.
Des utilisateurs ont remarqué que certaines critiques négatives étaient supprimées, ce qui a provoqué une réaction négative sur les réseaux sociaux.
Un employé de JetBrains a expliqué que les critiques ont été supprimées soit parce qu'elles mentionnaient des problèmes déjà résolus, soit parce qu'elles violaient leur politique concernant les "grossièretés, etc."
L'entreprise a reconnu qu'elle aurait pu mieux gérer la situation, un représentant déclarant : "Supprimer plusieurs critiques d'un coup sans préavis semblait suspect. Nous aurions dû au moins publier un avis et fournir plus de détails aux auteurs."
Parmi les problèmes de l'IA Assistant signalés par les utilisateurs figurent : un support limité pour les fournisseurs de modèles tiers, une latence notable, des ralentissements fréquents, des fonctionnalités principales verrouillées aux services cloud de JetBrains, une expérience utilisateur incohérente et une documentation insuffisante.
Une plainte courante est que l'IA Assistant s'installe sans permission. Un utilisateur sur Reddit l'a qualifié de "plugin agaçant qui s'auto-répare/se réinstalle comme un phénix".
JetBrains a récemment introduit un niveau gratuit et un nouvel agent IA appelé Junie, destiné à fonctionner parallèlement à l'IA Assistant, probablement en réponse à la concurrence entre fournisseurs. Mais il est plus char a faire tourner.
La société s'est engagée à explorer de nouvelles approches pour traiter les mises à jour majeures différemment et envisage d'implémenter des critiques par version ou de marquer les critiques comme "Résolues" avec des liens vers les problèmes correspondants au lieu de les supprimer.
Contrairement à des concurrents comme Microsoft, AWS ou Google, JetBrains commercialise uniquement des outils et services de développement et ne dispose pas d'une activité cloud distincte sur laquelle s'appuyer.
Utilité des DTOs : Les DTOs servent à transférer des données entre les différentes couches d'une application, en mappant souvent les données entre différentes représentations (par exemple, entre la base de données et l'interface utilisateur).
Surutilisation fréquente : L'article souligne que les DTOs sont souvent utilisés de manière excessive, notamment pour créer des API HTTP qui ne font que refléter les entités de la base de données, manquant ainsi l'opportunité de composer des données plus riches.
Vraie valeur : La valeur réelle des DTOs réside dans la gestion du couplage entre les couches et la composition de données provenant de sources multiples en formes optimisées pour des cas d'utilisation spécifiques.
Découplage : Il est suggéré d'utiliser les DTOs pour découpler les modèles de données internes des contrats externes (comme les API), ce qui permet une évolution et une gestion des versions indépendantes.
Exemple avec CQRS : Dans le cadre de CQRS (Command Query Responsibility Segregation), les réponses aux requêtes (queries) agissent comme des DTOs spécifiquement adaptés aux besoins de l'interface utilisateur, pouvant inclure des données de diverses sources.
Protection des données internes : Les DTOs aident à distinguer et protéger les modèles de données internes (privés) des changements externes (publics).
Éviter l'excès : L'auteur met en garde contre les couches de mapping excessives (mapper un DTO vers un autre DTO) qui n'apportent pas de valeur ajoutée.
Création ciblée : Il est conseillé de ne créer des DTOs que lorsqu'ils résolvent des problèmes concrets, tels que la gestion du couplage ou la facilitation de la composition de données.
Oracle a confirmé à certains clients que son cloud public a été compromis, alors que l'entreprise avait précédemment nié toute intrusion.
Un pirate informatique a revendiqué avoir piraté deux serveurs d'authentification d'Oracle et volé environ six millions d'enregistrements, incluant des clés de sécurité privées, des identifiants chiffrés et des entrées LDAP.
La faille exploitée serait la vulnérabilité CVE-2021-35587 dans Oracle Access Manager, qu'Oracle n'avait pas corrigée sur ses propres systèmes.
Le pirate a créé un fichier texte début mars sur login.us2.oraclecloud.com contenant son adresse email pour prouver son accès.
Selon Oracle, un ancien serveur contenant des données vieilles de huit ans aurait été compromis, mais un client affirme que des données de connexion aussi récentes que 2024 ont été dérobées.
Oracle fait face à un procès au Texas concernant cette violation de données.
Cette intrusion est distincte d'une autre attaque contre Oracle Health, sur laquelle l'entreprise refuse de commenter.
Oracle pourrait faire face à des sanctions sous le RGPD européen qui exige la notification des parties affectées dans les 72 heures suivant la découverte d'une fuite de données.
Le comportement d'Oracle consistant à nier puis à admettre discrètement l'intrusion est inhabituel en 2025 et pourrait mener à d'autres actions en justice collectives.
Compromission de l'action tj-actions/changed-files : En mars 2025, une action GitHub très utilisée (tj-actions/changed-files) a été compromise. Des versions modifiées de l'action ont exposé des secrets CI/CD dans les logs de build.
Méthode d'attaque : Un PAT compromis a permis de rediriger plusieurs tags de version vers un commit contenant du code malveillant.
Détails du code malveillant : Le code injecté exécutait une fonction Node.js encodée en base64, qui téléchargeait un script Python. Ce script parcourait la mémoire du runner GitHub à la recherche de secrets (tokens, clés…) et les exposait dans les logs. Dans certains cas, les données étaient aussi envoyées via une requête réseau.
Période d'exposition : Les versions compromises étaient actives entre le 12 et le 15 mars 2025. Tout dépôt, particulièrement ceux publiques, ayant utilisé l'action pendant cette période doit être considéré comme potentiellement exposé.
Détection : L'activité malveillante a été repérée par l'analyse des comportements inhabituels pendant l'exécution des workflows, comme des connexions réseau inattendues.
Réaction : GitHub a supprimé l'action compromise, qui a ensuite été nettoyée.
Impact potentiel : Tous les secrets apparaissant dans les logs doivent être considérés comme compromis, même dans les dépôts privés, et régénérés sans délai.
Les entreprises en phase de démarrage à Silicon Valley connaissent une croissance significative grâce à l'intelligence artificielle.
Le PDG de Y Combinator, Garry Tan, affirme que l'ensemble des startups de la dernière cohorte a connu une croissance hebdomadaire de 10% pendant neuf mois.
L'IA permet aux développeurs d'automatiser des tâches répétitives et de générer du code grâce aux grands modèles de langage.
Pour environ 25% des startups actuelles de YC, 95% de leur code a été écrit par l'IA.
Cette révolution permet aux entreprises de se développer avec moins de personnel - certaines atteignant 10 millions de dollars de revenus avec moins de 10 employés.
La mentalité de "croissance à tout prix" a été remplacée par un renouveau d'intérêt pour la rentabilité.
Environ 80% des entreprises présentées lors du "demo day" étaient centrées sur l'IA, avec quelques startups en robotique et semi-conducteurs.
Y Combinator investit 500 000 dollars dans les startups en échange d'une participation au capital, suivi d'un programme de trois mois.
Les activités Middleware de Red Hat (incluant JBoss, Quarkus, etc.) vont être transférées vers IBM, dans l'unité dédiée à la sécurité des données, à l'IAM et aux runtimes.
Ce changement découle d'une décision stratégique de Red Hat de se concentrer davantage sur le cloud hybride et l'intelligence artificielle.
Mark Little explique que ce transfert était devenu inévitable, Red Hat ayant réduit ses investissements dans le Middleware ces dernières années.
L'intégration vise à renforcer l'innovation autour de Java en réunissant les efforts de Red Hat et IBM sur ce sujet.
Les produits Middleware resteront open source et les clients continueront à bénéficier du support habituel sans changement.
Mark Little affirme que des projets comme Quarkus continueront à être soutenus et que cette évolution est bénéfique pour la communauté Java.
Accord pour l'avenir de NATS.io : La Cloud Native Computing Foundation (CNCF) et Synadia ont conclu un accord pour sécuriser le futur du projet NATS.io.
Transfert des marques NATS : Synadia va céder ses deux enregistrements de marque NATS à la Linux Foundation afin de renforcer la gouvernance ouverte du projet.
Maintien au sein de la CNCF : L'infrastructure et les actifs du projet NATS resteront sous l'égide de la CNCF, garantissant ainsi sa stabilité à long terme et son développement en open source sous licence Apache-2.0.
Reconnaissance et engagement : La Linux Foundation, par la voix de Todd Moore, reconnaît les contributions de Synadia et son soutien continu. Derek Collison, PDG de Synadia, réaffirme l'engagement de son entreprise envers NATS et la collaboration avec la Linux Foundation et la CNCF.
Adoption et soutien communautaire : NATS est largement adopté et considéré comme une infrastructure critique. Il bénéficie d'un fort soutien de la communauté pour sa nature open source et l'implication continue de Synadia.
Redis passe à la licence open source AGPLv3 pour contrer l'exploitation par les fournisseurs cloud sans contribution.
Le passage précédent à la licence SSPL avait nui à la relation avec la communauté open source.
Salvatore Sanfilippo (antirez) est revenu chez Redis.
Redis 8 adopte la licence AGPL, intègre les fonctionnalités de Redis Stack (JSON, Time Series, etc.) et introduit les "vector sets" (le support de calcul vectoriel développé par Salvatore).
Ces changements visent à renforcer Redis en tant que plateforme appréciée des développeurs, conformément à la vision initiale de Salvatore.
Arnaud, Antonio, Guillaume et Emmanuel font la clôture de Devoxx France dans la fumée et la bonne humeur avec l'aide des organisateurs de Devoxx et surtout les inimitables polos rouges !
LCC 323 - L'accessibilité des messageries chiffrées
17 Mar 2025
01:10:33
Dans cet épisode, Emmanuel et Arnaud discutent des dernières nouvelles du dev, en mettant l'accent sur Java, l'intelligence artificielle, et les nouvelles fonctionnalités des versions JDK 24 et 25. Ils abordent également des sujets comme Quarkus, l'accessibilité des sites web, et l'impact de l'IA sur le trafic web. Cette conversation aborde les approches pour les devs en matière d'intelligence artificielle et de développement logiciel. On y discute notamment des défis et des bénéfices de l'utilisation de l'IA. Enfin, ils partagent leurs réflexions sur l'importance des conférences pour le développement professionnel.
JDK 24 a atteint sa première phase de release candidate et sera officiellement publié le 18 mars 2025.
24 nouvelles fonctionnalités (JEPs) réparties en 5 catégories : Core Java Library (7), Java Language Specification (4), Security Library (4), HotSpot (8) et Java Tools (1).
Project Amber : JEP 495 "Simple Source Files and Instance Main Methods" en quatrième preview, visant à simplifier l'écriture des premiers programmes Java pour les débutants.
Project Loom : JEP 487 "Scoped Values" en quatrième preview, permettant le partage de données immuables entre threads, particulièrement utile avec les virtual threads.
Project Panama : JEP 489 "Vector API" en neuvième incubation, continuera d'incuber jusqu'à ce que les fonctionnalités nécessaires de Project Valhalla soient disponibles.
Project Leyden : JEP 483 "Ahead-of-Time Class Loading & Linking" pour améliorer le temps de démarrage en rendant les classes d'une application instantanément disponibles au démarrage de la JVM.
Sécurité quantique : Deux JEPs (496 et 497) introduisant des algorithmes résistants aux ordinateurs quantiques pour la cryptographie, basés sur les réseaux modulaires.
Sécurité renforcée : JEP 486 propose de désactiver définitivement le Security Manager, tandis que JEP 478 introduit une API de dérivation de clés.
Optimisations HotSpot : JEP 450 "Compact Object Headers" (expérimental) pour réduire la taille des en-têtes d'objets de 96-128 bits à 64 bits sur les architectures 64 bits. (a ne aps utiliser en prod!)
Améliorations GC : JEP 404 "Generational Shenandoah" (expérimental) introduit un mode générationnel pour le Garbage Collector Shenandoah, tout en gardant le non generationel.
Évolution des ports : Windows 32-bit x86 ca sent le sapin
JEP 502 dans JDK 25 : Introduction des "Stable Values" (preview), anciennement "Computed Constants", offrant les avantages des champs final avec plus de flexibilité pour l'initialisation.
Points Supplémentaires sur JDK 25
Date de sortie : JDK 25 est prévu pour septembre 2025 et représentera la prochaine version LTS (Long-Term Support) après JDK 21.
Finalisation de l'on-ramp : Gavin Bierman a annoncé son intention de finaliser la fonction "Simple Source Files" dans JDK 25, après quatre previews successives.
CDS Object Streaming : Le JEP Draft 8326035 propose d'ajouter un mécanisme d'archivage d'objets pour Class-Data Sharing (CDS) dans ZGC, avec un format d'archivage et un chargeur unifiés.
HTTP/3 supporté dans HttpClient
Un article sur l'approche de Go pour éviter les attaques par chemin de fichier https://go.dev/blog/osroot
Un outil de codage agentique intégré au terminal, capable de comprendre votre base de code et d'accélérer le développement grâce à des commandes en langage naturel.
Les fonctionnalités permettent de comprendre le code, le refactorer, tester, debugger, …
Guillaume propose une technique qui améliore les résultats de rechercher de Retrieval Augmented Generation
L'idée est de calculer des vecteurs embeddings sur des phrases, par exemple, mais de retourner un contexte plus large
L'intérêt, c'est d'avoir des calculs de similarité de vector embedding qui ont de bons scores (sans dilution de sens) de similarité, mais de ne pas perdre des informations sur le contexte dans lequel cette phrase se situe
en plus de légaliser les logiciels espions s'appuyant sur les failles logiciel
La loi demande aux messageries de laisser l'état accéder aux conversations
Donc une backdoor avec une clé etatique par exemple
Une backdoor comme celle des téléphones filaires américains mis en place il y a des années et maintenant exploitée par l'espionnage chinois
Signal à une position ferme, soit c'est sécurisé soit on sort d'un pays
Olvid WhatsApp et iMessage sont aussi visée par exemple
La loi défini la cible comme la criminalité organisée : les classiques mais aussi les gilets jaunes, les opposants au projet de Bure, les militants aidant les personnes exilées à Briançon, ou encore les actions contre le cimentier Lafarge à Bouc-Bel-Air et à Évreux
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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).
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.
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.
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
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)
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
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.
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 🤗.
Dans cet épisde 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, dobservabilité, d'une attaque de chaine d'approvisionnement via javac et d'autres choses.
la corrections de gotchas dans les for loops (notamment les variables étaient loop scoped)
le fait que la compile echoue si on attend une version de go superieure seulement depuis go 1.21 en parallele de la gestion de la chaine d'outil (c'est en 2023 seulement!)
utiliser l'accessibilité pour preuve de vie n'est pas idéal: un objet peut etre atteignable mais ne sera jamais accedé par le programme
les regions les plus pauvres en objets vivant voient leurs objets bouger dans uen autre region et la regio libéré, c'est le comportement classique des GC
deux methodes: mark evaguate qui le fait en deux temps et la liveness peut evoluer ; et scavenge qui bouge l'objet vivant des sa decouverte
ont fait tourner via ZGC des experience pour voir les objects consideres vivants et bougés inutilement.
resultats montrent un gros taux d'objets bougés de maniere inutile
proposent un algo different
ils marquent les objets vivants mais ne les bougent pas avant le prochain GC pour leur donner une change de devenir unreachable
elimine beaucoup de deplacement inutiles vu que les objets deviennent non accessible en un cycle de GC
jusquà 91% de reduction ! Particulierement notable dans les machines chargées en CPU.
pourquoi des long access tokens (gnre refresh token) sont utilises pour des short lived dans oauth 2.0
refresh token simplifient la revocation: vu que seul le auth serveur a a verifier la révocation et les clients vérifient l'expiration et la validité de la signature
refresh token ne sont envoyés que entre endpoints alors que les access tokens se baladent pas mal: les frontières de confiance ne sont pas traversées
refresh token comme utilise infréquement, et donc peut etre protegee dans une enclave
les changements de grants sont plus simple tout en restant distribuable
histoire des access refresh token et access token permet de mieux tracer les abus / attaques
les inconvenients: c'est plus compliqué en flow, the auth serveur est un SPOF amis mitigeable
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
Explique les avantage de l'approche pure Java comme le cycle de vie unique, tester les modeles rapidement, securite (tout est in process), monolithe ahahah, observabilité simplifiée, distribution simplifiée (genre appli embarquée) etc
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 2 vaincoeurs
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
Ecrasante 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 terme de design system, shadcn.ui en tête, suivi par Material, puis Bootstram
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 2 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 permette 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
franchemet 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 tres puissante pour diriger des requetes et extraires les données qui auraient du etre plus restreintes
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érer 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é
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 raison de sécurité, de privacy, pour éviter les brèche de données comme on en entend trop souvent parler dans les nouvelles
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, etc
Dans cet article, utilisation du modèle de Google Cloud Vertex AI, en Java, avec LangChain4j
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
8 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 vocale 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
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, etc.
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 coder et peut répondre à vos questions
l'annotation processors des dependances est chargé et executé au moment du build du projet
et cherche les annotations processor dans le user classpath (via le pattern serviceloader)
et donc si la dependance 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 deparre l'IDE en gros
workaround, activer -proc:none et activer les annotation processors explicitly dans votre outil de build
certaines améliorations dans le JDK: le compilateur note qu'il execute un annotation processor
dans java 23+ les annotation processors sont deactivés par defaut
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.
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 Europeenne pas mal affectée l'année dernière
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/).
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
on a bien suivi les chants d'amour entre Sam Altman et Satia Nadella
ca c'est tendu ces derniers temps
deja 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 competiteur de Copilot et essaie de courtises ses clients
les apétits d'investissements d'OpenAI et une dispute sur la valeur de la aprt de MS qui a donné des crédits cloud semble etre aui coeur de la dispute du moment
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
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
Après quelques heures / jours de rumeurs sur une faille 9.9/10 CVSS il s'avère que cela concerne que les système 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.
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 meme. "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 a la version d'open source AI de la linux fondation
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.
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 ?
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
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.
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, Lamgchain, Micronaut, OpenLibery, JHipster, Ktor etc.
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.
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 peut être les paramètres de la method mai aussi les valeur de description du test
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 granèit. 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.
une boite nommée WP Engine fait du hosting de WordPress mais ne contribue pas
Automatic, les gens derrière WordPress leur onbt demandé de résoudre ce probleme, 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 a jours de thèmes et de plugins à WP Engine mettant des sites à risque (securité)
WP Engine dit que c'est un abus de position du CEO d'Automatic sur les accès WordPress.org
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.
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'ameliorations pour la performance et scalabilité
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 default 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.
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 concept nouveau, mais il pourrait devenir un bon compromis entre open source et logiciel privé.
definition de fair source: code lisible publique, peut etre utilise et modifié avec des "restrictions minimales" pour proteger le business modele du producteur ; et devient open source de maniere deferé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 entierement et ceui 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
Les logs structurées (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.
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 floatants 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
la tempoerature va ecraser la probabilite du prochain token mais il reste des variables: approximnation des calculs flottants, stacks differentes effectuants ces choix differemment, que faire en cas d'egalité de probabilité entre deux tokens
mais il y a d'atures apporoches de configuiration des reaction du LLM: top-k (qui evite les tokens peu frequents), top-p pour avoir les n des tokens qui totalient p% des probabilités
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
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.
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.
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 interessant de quelqu'un qui n'utilise pas GraphQL au quotidien. C'était des problemes qui devaient etre corrigés avec la maturité de l'ecosysteme et des outils mais ca a montré ces limites pour cette personne.
qu'est ce qu'un EDR? Un système Endpoint Detection and Response a pour but de surveiller votre machine ( access réseaux, logs, …) pour detecter des usages non habituels. Cet espion doit interagir avec les couches basses du système (réseau, sockets, logs systems) et se greffe donc au niveau du noyau du système d'exploitation. Il remonte les informations en live à une plateforme qui peut ensuite adapter les réponse en live
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 ?
transactional outbox permet d'éviter des 2PC ou des désynchronisations de resources: typiquement un commit dans une base et un envoie de message dans un bus
on ecrit 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 descrit pas psring integration est pas super trivial a lire quand on est pas familier mais cela poll la table toutes les secondes et envoie email et si succes de l'appel de service, vide le message de la table
Deuxieme 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)
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 mini modele LLM dans chrome. C'est maintenant une réalité et vous pouvez le tester.
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)!!!
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, etc …
Maven Central est un commun qui ne coute rien à l'utilisteur
mais qui est indispensable à tous
1000 milliards de téléchargements l'année dernière
83% de la bande passante consommé par 1% des IPs
Beaucoup des ces IP viennent des companies les plus larges
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 noeud 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…
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 sur son référencement sur le portail backstage.
tutoriel tres complet
tres facilement remplacable pour un project avec votre technologie preferee (pas specifique a Spring Boot, ou Java)
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.
paralelisation des taches (avant sequentiel)
limitation des dependances entre etapes effectuées lors d'un push
polyfill c'est un support de nouvelles fonctionalites dans les ancien navigateurs
servi par cdn notamment
une societe chinoise a achete le domaine et le github
et injecte du malware qui pointe sur des serveurs qui servent le malware selectivement (device, admin ou pas, heure de la journée)
Fastly et Cloudflare on des deploiements alternatiuve
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://cocoapods.org/ / https://cocoapods.org/ est un gestionnaire de dépendances pour les projets Xcode. Les dependances (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 metadonné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 Sept 2023. Elle permettait d'avoir un accès root sur trunk.cocoapods.org qui stock les Specs. Elles auraient donc pu être modifiées sans que les auteurs ne s'en apperçoivent.
Pas de preuve pour l'instant que la faille ait été exploitée
Mieux comprendre la double authentification avec TOTP
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.
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ême règles qui s'appliquent
OpenDNS n'est plus disponible en France et au Portugal
A priori Cisco qui opère openDNS en a marre des demandes de restrictions spécifiques à nos pays et 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 : IJ Ultimate, ou des plugins payants), ou ne jurez-vous que par des outils gratuits ? Un peu des deux ? Si adaptes 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 !
Katia, Guillaume, Emmanuel et Antonio discutent Kotlin, Micronaut, Spring Boot, Quarkus, Langchain4j, LLMs en Java, builds reproductible et la question AMA du jour, comment fait-on carrière de dev à 40 ans ?
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.
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ée 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 le pagination par curseur pour JDBC et R2DBC (important aussi pour Jakarta Data)
Support des annotations Jakarta Servlet pour configurer par exemple les servelet 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-language
Un nouveau module Guice pour importer des modules Guice existants
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.
Nouveau algo 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.
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.
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.
cam me parait un peu contre intuitif a l'heure du devops et du TDD de faire des outils dédiés et donc des equipes ou personnes dédiées
Dans ce long…. épisode, Emmanuel, Guillaume et Arnaud discutent de l'actualité avec Chicori (un runtime WASM en Java), Jakarta Data, Quarkus 3.10, Spring AI, Hibernate 6.5, mais aussi quelques retours aux basiques (timezones, rate limiting, …). Gros focus sur les nouveautés annoncées à Google I/O 2024 et dans l'écosystème IA en général avec les annonces d'OpenAI, Claude, Grok et d'autres. Différents outils sont aussi couverts comme Git, IntelliJ, ASDF, BLD, S3. Et enfin des sujets sur la haute disponibilité de Keycloak, la ré-indexation sans downtime, les challenges des implémentations alternatives, le mode vigilant dans GitHub, Redis et les changements de license, et les investissements de Microsoft et AWS en France dans le cadre du programme #ChooseFrance. N'hésitez pas à nous soumettre vos questions sur https://lescastcodeurs.com/ama nous y répondrons dans les prochains épisodes.
cache full pour les entités et leur collections (le défaut est shallow)
Java record pour les @IdClass
Les filtres peuvent être auto activés par défaut (vs à faire sur chaque session). Les filtres sont pas mal pour gérer par exemple des soft delete
Keybased pagination pour éviter les trous de résultant en cas de modification d'entités en parallèle de.une recherche paginée. S.appuie sur une clé unique et ordonnée genre ISBN
Clarifier que les extensions réactive n'imposent pas des apis réactives et seulement leur cœur implémenté en réactif ou offre optionellement des apis reacrive
Les gens pensaient à tors que les réactives imposaient le modèle de programmation
Le projet NotebookLM rajoute une fonctionnalité de Audio Overview qui permet de discuter avec son corpus de documents avec une conversation vocale https://notebooklm.google.com/
DeepMind annonce Veo, un nouveau modèle de génération de vidéo très convaincant qui peut faire des vidéos en 1080p de 60s, mais en combinant plusieurs prompts successifs, il peut générer des vidéos plus longues qui s'enchainent https://deepmind.google/technologies/veo/
Les utilisateurs de Gemini Advanced (l'application web) utilisent Gemini 1.5 Pro avec la fenêtre de contexte de 1 million de tokens, la possibilité de charger des documents de Google Drive, et bientôt la possibilité de générer des graphiques.
Gemini Advanced rajoute aussi la capacité de générer des itinéraires de voyage (avec intégration de Google Flights, etc)
Ask Photos, on peut poser à Google Photos des questions plus complexes comme "quelle est ma plaque d'immatriculation" et Photos devine que parmi toutes les photos de voitures lequelle est certainement la nôtre et extrait le numéro de plaque https://blog.google/products/photos/ask-photos-google-io-2024/
Même dans Google Messages vous pourrez échanger avec Gemini
Rajout d'un modèle Gemini spécial search intégré qui permet à Google Search de répondre aux questions de la barre de recherche avec une raisonnement multi-étapes, en étant capable de faire de la planification, en mode multimodal (texte, image, vidéo, audio)
Planning de repas et de voyage, supporté dans Gemini, va arriver aussi dans Search
Travail sur l'économie d'énergie pour faire durer les montres plus longtemps avant la prochaine recharge. Par exemple, 20% de consommation en moins lorsqu'on court un marathon !
Plus de type de données pour les activités physiques
Claude est un assistant IA basé sur un grand modèle de langage entraîné selon des principes éthiques stricts. Il accorde une grande importance à l'honnêteté, l'impartialité et le respect de l'être humain.
Son raisonnement repose sur une compréhension profonde des concepts plutôt que sur de simples associations statistiques. Il cherche activement à corriger les éventuels biais ou erreurs.
Claude est polyvalent et peut s'adapter à différents styles de communication et niveaux de complexité selon le contexte. Il maîtrise de nombreux domaines académiques et scientifiques.
Il est capable d'introspection sur ses propres processus de pensée et ses limitations. La vie privée et la confidentialité sont des priorités pour lui.
Claude continue d'apprendre et de s'améliorer grâce aux interactions avec les humains. Son but est d'être un assistant fiable, éthique et bienveillant.
quelqu'un sait comment ils font pour raisonner et pas juste LLM statistiquer? Comment ils prouvent cela ? C'est du code à part?
CVE-2024-32002 (Critique, Windows & macOS) : Les repos Git avec des sous-modules peuvent tromper Git pour lui faire exécuter un hook (élément de script) à partir du répertoire .git/ pendant une opération de clonage, permettant l'exécution de code à distance (Remote Code Execution).
CVE-2024-32004 (Important, machines multi-utilisateurs) : Un attaquant peut concevoir un repo local qui exécute du code arbitraire lors du clonage.
CVE-2024-32465 (Important, toutes les configurations) : Le clonage à partir de fichiers .zip contenant des repos Git peut contourner les protections, et potentiellement exécuter des hooks malveillants.
CVE-2024-32020 (Faible, machines multi-utilisateurs) : Les clones locaux sur le même disque peuvent permettre à des utilisateurs non approuvés de modifier des fichiers liés physiquement (hard link) dans la base de données des objets du repo cloné.
CVE-2024-32021 (Faible, machines multi-utilisateurs) : Le clonage d'un repo local avec des liens symboliques (symlinks) peut entraîner la création de liens physiques vers des fichiers arbitraires dans le répertoire objects/.
Article par un développeur qui a développé des Just-in-Time compiler pour différents langages
Remarqué que développer une implémentation alternative d'un langage (par exemple) n'a jamais vraiment rencontré le succès
Les gens préfèrent l'original à une alternative qui est dépendante de / a peine à suivre l'implémentation d'origine
Pour son cas, sur le JIT, il a travaillé sur un JIT intégré directement dans CRuby (plutôt que faire son implémentation alternative comme TruffleRuby), et sont JIT est intégré maintenant dedans directement
Plus facile de rejoindre / s'intégrer au projet plutôt que d'être une alternative pour laquelle il faut convaincre les gens de l'adopter
Cet épisode news revient sur le rachat de Hashicorp par IBM, sur le changement de license Redis, sur le bug macos 14.4 et Java, sur la faille de de chaine d'approvisionnement sur XZ. Et nous débutons notre subrique Ask Me Anything. N'hésitez pas à nous soumettre vos question sur https://lescastcodeurs.com/ama.
c'était lié à un changement de comportement dans l'execution de code dynamique (compilé après le lancement du process)
Au lieu de recevoir signal, SIGBUS or SIGSEGV et de le gérer
SIGKILL était lancé et forcément ça marchait moins bien
Apple a corrigé le comportement
Article de Gunnar Morling sur la nouvelle API de "gatherer" de Java 22, pour améliorer les streams, ici en montrant une implémentation d'un "zipper" qui assemble les éléments de 2 streams 2 à 2 https://www.morling.dev/blog/zipping-gatherer/
on a parlé des gatherers déjà qui permet de faire de faire des opérateurs intermediaries custom par rapport à ce que je JDK offre
ici Gunnar montrer un zipper qui n'est pas présent par défaut
En gros releasé sous SSPL (comme MongoDB) ou une license spécifique Redis
RSAL est source available license (dont pas open source) et SSPL est pas reconnu comme open source par l'OSI car elle impose des restrictions à l'usage
du coup certaines fonctions closed sources deviennent source available
Met les cloud provider en cause du problème, ils font de l'argent et commodetize Redis sans redonner du revenu aux développeurs de Redis
est-ce que les gens seront ok de continuer a coder pour du code pas open, juste disponible
et évidemment ca casse l'écosystème redis ou open source qui voulait utiliser redis en tant qu'open
pas autorisé de faire du support sur un produit qui derive de redis sans payer une license si c'est "compétitif"
Architecture MoE (Mixture of Experts) qui fait qu'il n'y a que 25% des neurones actifs à l'inférence (efficace et rapide)
C'est un modèle "pre-trained", de base, non-finetuné, donc pas très utilisable en l'état (il faut le finetuner en mode "instruct" et/ou "chat" pour qu'il soit vraiment utilisable)
Le code dans le repo Github, ainsi que les poids du réseau de neurones, sont OSS sous licence Apache 2
comme d'hab pour les side channels attaques de de type c'est su un autre process peut tourner sur la machine et être adversaire
lié a un data dependent memory fetcher
dans ce cas, un champ est soit une valeur, soit un pointeur et Appel pre-fetch dans le cas où c'est un pointeur
et c'est attaquable en injectant des variables qui ressemblent a des pointeurs vers des données controlées et on peut en déduire la clés secrete si cette variable et la clé ont des opérations
mais le code peut désactiver cette optimisation si j'ai bien compris
L'histoire d'une porte dérobée dans le projet open source XZ qui a failli mettre à mal toutes les connexions sous Open SSH, avec pour tâche de fond la fragilité de projets open source maintenu par des individuels bénévoles à bout de souffle https://uwyn.net/@rusty@piaille.fr/112190942187106096
"Comment être un rockstar dans le domaine, s'il vous plaît une réponse détaillée sur le plan d'action veille, auto formation, side projets …… depuis vos expériences personnelles. Merci d'avance"
LCC 310 - Les Cast Codeurs à Devoxx France 2024 : sous-titre édition
24 Apr 2024
00:52:46
La clôture de Devoxx France 2024 avec les cast codeurs. L'année où le sous-titrage était un personnage à part entière de Devoxx France. Vous aurez beaucoup plus de plaisir et de contexte en regardant la vidéo qu'en écoutant cet épisode. Les sous titres jouent un rôle important. Donc pour une fois ne nous écoutez pas, regardez nous :o)
Dans cet épisode, nous avons comme invités Amelie Benoît et Manuel Cartier. Les deux explorent l'évolution de React au cours de la dernière décennie, mettant en lumière ses principaux principes et son impact sur le développement web. Amélie et Manuel discutent des caractéristiques fondamentales de React, comme la composition des composants et l'utilisation de la virtual DOM, ainsi que des tendances émergentes telles que l'adoption de React Hooks, et les React Server Components. Enfin, nous avons ses conclusions sur l'avenir de React et son rôle continu dans le paysage du développement web.
Amélie Benoît
Amélie Benoit est une développeuse web avec une expérience d'environ 10 ans dans le domaine. Son expertise se concentre principalement sur React et React Native, qu'elle maîtrise tant en JavaScript qu'en TypeScript.
En plus de son travail de développement, Amélie est une entrepreneuse communautaire active. Elle a fondé deux Meetups, dont l'un est dédié à React & React Native, démontrant ainsi son engagement envers la diffusion des connaissances et le développement de la communauté. Elle a également organisé des conférences, notamment lors de l'événement BDX I/O. Elle a aussi été oratrice a Devoxx France parmi d'autres conférences.
Actuellement, Amélie occupe le poste de tech lead manager chez Busbud, une scale-up canadienne spécialisée dans la comparaison et la vente de billets de bus inter-cités en ligne. Son rôle en tant que leader technique et manager la place au cœur des opérations de développement et de gestion de projet au sein de l'entreprise.
Grâce à son expertise technique, son engagement communautaire et son leadership, Amélie Benoit apporte une contribution significative au monde du développement web et de la technologie.
Manuel Cartier
Manuel est un développeur passionné, initié à l'art du code dès l'âge de 13 ans. Animé par cette passion précoce, il entreprend des études en développement de logiciels et gestion de projets, couronnées par l'obtention d'un BTS. Son parcours exceptionnel le conduit à se distinguer dès 2015 à l'école "42" de Paris, où il se classe premier parmi tous les candidats.
Avec une solide expertise en C++, Manuel s'investit dans l'encodage vidéo et audio chez Ateme, contribuant ainsi à un transcodeur utilisant des bibliothèques faites maison, équivalentes à x264. Passionné par la diffusion en direct, il partage régulièrement ses connaissances en informatique et donne des cours de développement web sur Twitch et YouTube.
Toujours avide d'apprendre et de repousser ses limites, Manuel se lance actuellement dans l'exploration de Rust, encouragé par la migration des projets C++ vers Rust chez Facebook. Parallèlement, il explore le développement d'applications mobiles avec Ionic Framework et AngularJS, expérience acquise lors de la création d'une start-up en 2015.
Son dernier rôle en tant que développeur Fullstack chez SigFox lui permet d'approfondir sa compréhension des mécanismes de l'IoT. Aujourd'hui, son attention se porte sur l'écosystème JavaScript et l'amélioration de l'expérience utilisateur, ainsi que sur le rendu 3D sur le web avec des technologies innovantes telles que Three.js et React-Three-Fiber.
Cet épisode discute du retour d'experience Java de Netflix, de jQuery, de gouvernance open source, d'Elon Musk, de Kubernetes, de Mistral (gagnant?), d'attaque des LLMs, de developpement de carrière et de Trouble du Déficit de l'Attention avec ou sans Hyperactivité.
Les cast codeurs veulent essayer quelque chose de nouveau et le sondage montre que vous aussi. On lance donc une section Ask Me Anything, posez nous une question sur https://lescastcodeurs.com/ama et nous prendrons certaines questions pour donner notre réponse. Lancez-vous, on pense que cette section pourra être sympa :)
On parle régulièrement du dernier framework JavaScript à la mode, mais jQuery est toujours là
Première release majeure depuis 8 ans
Suppression de plein de features qui étaient deprecated et maintenant fournie souvent par défaut par les moteurs JavaScript des navigateurs
jQuery continue d'être téléchargé de plus en plus au fil du temps, mais peut-être parce qu'il bénéficie du succès des projets qui l'utilisent comme Cypress, WordPress ou Drupal)
L'auteur se plaint régulièrement de Kubernetes pour sa grande complexité mais reconnait que c'est quand même un grand morceau de technologie
A utiliser surtout quand on a besoin de :
Exécuter plusieurs processus/serveurs/tâches planifiées.
Les exécuter de manière redondante et répartir la charge entre eux.
Les configurer, ainsi que les relations entre eux, sous forme de code.
L'auteur liste ensuite les fonctionnalités qu'il utilise, qu'il fait attention quand il les utilise, et celles qu'il préfère éviter
Utilise : deployments, services, cron jobs, config maps et secrets
Attention : stateful set, persistent volume et RBAC
Evite : le YAML à la main, les opérateurs et resources customs, Helm, tout ce qui est mesh, les resources ingress, essayer de répliquer la stack K8S complète localement sur sa machine
ils ont un partenariat exclusif avec Microsoft pour le distribuer
Et MS rentre dans le capital
Au revoir l'independance de l'IA européenne
Au revoir les modeles open source larges
cela va a l'encontre du loby et de son positinnement aupres de la commission europeenne
ca fait grincer des dents a bruxelles qui avait alléger les contraintes sur les modeles fondamentaux a la demande de Mistral qui menacait de de voir s'allier avec MS si ce n'était pas le cas.
Mistral était un fer de lance des modeles open sources pour eviter les biais
ils en garderont masi pas les modeles specialisés ou optimisés
cela reste une bonne decisione conomique pour Mistral
Redis Hot Replacement donnant: multi thread, clustering, replication cross site, diff stores de persistence en disk, avoir des caches differentes en namespace différentes avec des règles appliquées à chaque cas d'usage
Recherche Vectorielle et stockage des embeddings
Integration avec Langchain (Python), Langchain4j, et Quarkus Langchain
Améliorations du search, replication cross site, la console, tracing, l'Operateur Kubernetes …
Support du Protobuf 3 avec la release de Protostream 5 et meilleur API
L'article cite comme seul avantage d'avoir le petit badge vert sur Github indiquant "vérifié"
Responsabilité future inconnue et potentiellement illimitée pour les conséquences de l'exécution du code dans un commit que vous avez signé.
Renforcement implicite de GitHub en tant qu'autorité de confiance centralisée dans le monde de l'open source.
Introduction de problèmes de fiabilité inconnus dans l'infrastructure qui repose sur les signatures de commit.
Une violation temporaire de vos identifiants GitHub entraîne désormais des conséquences potentiellement permanentes si quelqu'un parvient à y introduire une nouvelle clé de confiance.
Nouveau type de surcharge de processus continu : les clés de signature de commit deviennent une nouvelle infrastructure permanente à gérer, avec de nouvelles questions comme « que faire des clés expirées », « à quelle fréquence dois-je les renouveler », etc.
on peut empecher de pousser des commits non signés
oui amis si vous etre en pleine crise existentielle avec votre equipe c'est du mon materiel
il va sur les points importants comme synchrone vs asynchrone, les patterns de communication, la copie de données, comment tester le "monotithe" ou plutot comment ne pas le faire etc
Les Cast Codeurs accueillent deux invités spéciaux pour explorer un aspect crucial de la carrière informatique : comment conserver la passion, la créativité et le plaisir au fil du temps.
Holly Cummins est dans l'open-source depuis 20 ans. Elle est Java Champion et JavaOne Rock Star. Elle a co-écrit le livre 'Enterprise OSGi in Action' chez Manning et a présenté des conférences dans divers événements renommés tels que JavaOne, Devoxx, et JAX London. Elle travaille chez Red Hat en 2024, et contribue principalement sur Quarkus.
Mark Jane, est un acteur accompli et improvisateur chevronné depuis 1994. Il rejoint la troupe Eux en 2016, jouant dans le spectacle Bio à Paris, et Pilote et Chaos en 2024. Il a écrit le livre "Jeux et enjeux: La boîte à outils de l'improvisation théatrale".
Les deux naviguent leur carrière avec passion, créativité et fun depuis +20 ans.
Naviguer sa carrière professionnelle avec passion, créativité et fun sur le long terme
Dans ce podcast, Holly et Mark partagent leurs conseils et expériences uniques, découvrant de nombreux points communs malgré l'apparente disparité entre leurs deux professions.
Dans cet épisode, Katia, Emmanuel et Arnaud explorent de nouvelles approches du Builder pattern en Java, l'introduction du Pattern Matching Primitives dans Java, et les déboires de l'intelligence artificielle avec des attaques de la chaîne d'approvisionnement sur Pytorch. Ils abordent aussi les licenciements dans diverses entreprises technologiques, l'évolution du trafic de Stackoverflow et donnent de conseils pratiques pour les développeurs, notamment sur les commits conventionnels, la mise à jour de dépendances avec Dependabot, Renovate et le déboggage des programmes Java. Ils terminent avec leur retour d'expérience sur la relecture des sujets de Devoxx France 2024.
Votre avis compte énormément pour nous ! 🎧 Nous voulons rendre Les Cast Codeurs encore plus genial, et c'est là que vous intervenez. 🌟 Aidez-nous en partageant vos idées, suggestions et souhaits pour 2024, dans notre tout nouveau formulaire de retour. C'est rapide, facile et ça ne prend que 2 minutes.
Les builders, surtout quand ils sont imbriqués les uns dans les autres, peuvent devenir un peu verbeux à lire
Est-ce qu'on peut prendre une nouvelle approche ? Oui, en tirant parti des lambdas, avec des méthodes de mutation qui retournent des lambda qui effectuent la mutation
On retrouve le plaisir de pouvoir construire une instance à l'aide d'un constructeur, plutôt qu'un builder
Uniformité autorisant le pattern de type pour tous les types, qu'ils soient primitifs ou de référence et sécurité dans la conversion de types et éviter les erreurs runtime pour les conversions de type. Plus de robustesse
if (i >= -128 && i <= 127) { byte b = (byte)i; ... b ... }
Maintenant
if (i instanceof byte b) { ... b ... } byte b = 42; b instanceof int; // true (unconditionally exact) int i = 42; i instanceof byte; // true (exact) int i = 1000; i instanceof byte; // false (not exact)
cela suit Microsoft (gaming), eBay, SAP, RIOT Games (League of Legend), Google, Amazon (prime, audible), Unity etc pleins d'autres. Tout ça juste en janvier.
Cet épisode news discute de langages, de bibliothèques, d'intelligence artificielle bien sûr et même de Web. Et puis de challenge Java et même de Père Noël !
Conception des langages ALGOL, Modula-2 et… Pascal
Plusieurs distinctions: Turing 1984, John Von Neumann 1994. Depuis 1987 un prix créé à son honneur
Plusieurs livres dont Algorithms + Data Structures = Programs 1976
La Loi de Wirth: La beauté d'un programme réside dans la clarté de sa structure. Niklaus Wirth a toujours prôné la simplicité, la lisibilité et la compréhensibilité. Approche pragmatique
Selon l'auteur, d'autres langages alternatifs pour la JVM ont décliné, comme Groovy et Scala
L'auteur pense qu'il y aura de moins en moins de différenciants par rapport à Java, et Kotlin n'a pas rajouté de fonctionnalités significatives depuis un an ou deux
Pour les URLs d'un blog post, par exemple, on souhaite avoir le titre dans l'URL, mais de manière URL-friendly, donc sans accents, en remplaçant les espaces par des tirets, etc
Guillaume propose une approche basée sur la normalisation de chaine unicode et les expressions régulières
Mais il évoque également la librairie Slugify qui est en plus capable de faire de la translitération (pour transformer aussi des idéogrammes et autre caractères non-ASCII)
Nous avons mentionné récemment le JEP 461 pour Java 22 : Stream Gatherers, qui sera en preview
Permet de faire des choses qui étaient un peu compliquées à faire avec l'API stream avant, comme par exemple implémenter des fenêtres glissantes sur les données du stream
L'article parle des différentes capacités des gatherers, avec un Integrator, un Initializer et un Finisher, et enfin un Combiner, avec différents exemples de code pour les illustrer
Astro est le framework web pour la construction de sites web axés sur le contenu tels que les blogs, le marketing et le commerce électronique. Astro est surtout connu pour être le pionnier d'une nouvelle architecture frontend afin de réduire la surcharge et la complexité de JavaScript par rapport aux autres frameworks
Architecture en "Astrot Islands" (interface en composants isolés)
SSG et SSR (Static Site Generator ey Server Side Rendering)
0 Javascript si tu veux
Tu utilises React, Angular ou Vue pour tes composants
"At a high level, React Server Components is the name for a brand-new paradigm. In this new world, we can create components that run exclusively on the server."
L'idée est de n'est pas faire des composants entiers en react dans le backend, et de n'est pas déléguer aux rendering client pour ces composants
Comme on a parlé de "shadow IT" à une époque, la nouvelle ombre du jour, c'est l'intelligence artificielle
Pour être plus productifs, les employés utilisent l'IA, sans forcément le dire à leur employeur
Le problème étant qu'avec certains système d'IA, les données que vous envoyées peuvent être sauvegardées et utilisées pour ré-entrainer l'IA… et potentiellement, l'IA pourrait recracher verbatim du texte provenant de ces données à d'autres utilisateurs. D'où une brèche dans la sécurité des données de l'entreprise
Les Large Language Model sont limités par les connaissances qu'ils ont acquises lors de leur entrainement
Une approche possible pour se baser sur une base documentaire est d'utiliser l'approche Retrieval Augmented Generation (RAG) où l'on utilise une base de données vectorielle pour récupérer des passages de texte qui correspondent à la requête demandée
Mais il existe aussi une approche intéressante qui permet d'appeler des systèmes externes (APIs, service local, etc) en permettant au LLM de savoir qu'il peut répondre à une demande donnée en se basant sur l'appel d'une fonction. Dans cette approche, le LLM répond qu'il faudrait appeler une fonction (par exemple pour connaitre la météo à Paris) et il indique quels paramètres passer ("Paris"). Le développeur ensuite appel cette fonction et retourne le résultat de l'invocation au LLM, qui va ensuite pouvoir générer du texte avec ces données.
C'est l'approche "function calling" qui permet d'étendre à un LLM pour lui donner accès à des données live, derrière une API, etc
Vidéo interessante pour comprendre comment nous, dans la tech, on peut tomber facilement sur des croyances qui sont doutantes si on développe pas l'esprit critique.
Le père Noël, véritable complot planétaire des adultes, magasins, médias … d'un mensonge
Un enfant qui essaie d'appliquer le procédé épistémologique, il n'a pas d'autre source pour vérifier que le père noël n'existe pas, tous ses sources fiables duquel il apprend le monde (parents, profs, medias, histoires, medias) valident que le père noël existe.
Expliquer les incoherences par la magie, c'est quelque chose de complément banal dans l'univers d'un enfant à qui on parle en permanence de magie
La découverte de la mensonge aux alentours de 7 ans, l'age de la raison, est une bonne opportunité pour aborder l'esprit critique avec les enfants
Les entreprises vont avoir 1 ou 2 ans pour s'y conformer
Basics: Definition de l'AI, extraterritorialité, exceptions (oss, r&D, mais aussi défense …), classification par niveaux de risks (Prohibited > High Risk > Limited Risk > Minimal Risk)
Prohibited: Biometrique, social credit scoring, detection d'emotions, renforcement des lois basées sur l'identification biometrique en public
High (des régles sont définies pour controler ces usages: transparence, qualité, risque …): Le matériel médical, les véhicules, l'éducation, les élections, …
Il s'agit d'une conférence en sociologie. En sociologie, il suffit que quelque chose soit vrai pour la majorité des cas pour être considéré comme une vérité, car cela repose sur des statistiques.
Sujet donné pour susciter de l'attention sur un problème qui existe bien dans la tech. Elles ont réalisé que la grande majorité de la population n'en était pas consciente (barbie)! Le film Barbie les a fait comprendre qu'elles doivent expliquer ce à quoi les femmes sont confrontées au quotidien, afin que les autres puissent comprendre à quel point cela peut être épuisant.
Très bien documenté avec bcp de liens et références au delà de l'expérience personnelle
Transcription et slides dans l'article
Lien entre film Barbie et la place des femmes dans la tech. Idées non neuves mais cela a été un impact
Les biais en général ne sont pas particuliers à un genre, sont globales. Test sur les biais implicites
Il existe un déficit de talents technologiques (estimé atteindre de 1,4 million à 3,9 millions de personnes d'ici 2027 dans les pays de l'UE-27), qui pourrait potentiellement être comblé en doublant la proportion de femmes dans le secteur technologique. Cependant, la part des femmes dans les rôles technologiques connaît sa plus basse représentation dans les domaines en pleine croissance tels que DevOps et le cloud.
plus de la moitié des femmes quittent l'industrie technologique 10 à 20 ans après le début de leur carrière, soit le double du taux des hommes. (manque d'opportunités, difficultés face aux biais, se sentir comme une outsider etc…)
La part des femmes dans les rôles technologiques en Europe risque de diminuer pour atteindre 21% d'ici 2027.
Solutions: roles modèles, combattre nos biais (si on ne les reconnait pas, on ne peut pas le combattre), mentoring, faire attention à donner de la voix etc…
Ces 2 tutoriels pratiques permettent de découvrir les deux modèles text et chat de PaLM
Différentes tâches sont illustrées pour faire de simples questions/réponses, de simples chat, mais aussi comment extraire des données structurées d'un texte, comment faire de la classification (avec un exemple d'analyse de sentiment)
Dans cet épisode, Katia, Arnaud et Emmanuel discutent les nouvelles de cette fin 2023. Le gatherer dans les stream Java, les exceptions, JavaScript dans la JVM, recherche vectorielle, coût du cloud, Gemini, Llama et autres animaux fantastiques et pleins d'outils sympathiques pour fêter la fin de l'année.
dans cet article de Paul King, de l'équipe Groovy, il montre et contraste ce que l'on pouvait faire en Groovy depuis des années, comme des sliding windows, par exemple
explique l'approche des gatherers avec ses opérations intermédiaires
gatherer sont des operations intermediaires custom qui prennent un etat et le prochain element pour decided quoi faire, et meme changer le stream d'elements suivants (en publier) (via la fonction integrate
certains peuvent permettre de combiner les resultats intermediaires (pour paralleliser)
Examples : fenetres de taille fixe, fenettres glissantes
Joe Duffy, qui est CEO de Pulumi, mais qui avait travaillé chez Microsoft sur le project Midori (un futur OS repensé) parle du design des exceptions, des erreurs, des codes de retour https://joeduffyblog.com/2016/02/07/the-error-model/
Il compare les codes d'erreurs, les exceptions, checked et non-checked
il separe les bugs des erreurs attendues (bugs doivent arreter le process)
il raconte l'histoire des unchecked exception et leurs problemes et des checked exceptopns et poourquoi les developeurs java les detestent (selon lui)
modèle multimodal qui peut prendre du texte, en entrée, mais aussi des images, du son, des vidéos
d'après les benchmarks, il est largement aussi bon que GPT4
plusieurs tailles de modèles disponible : Nano pour être intégré aux mobiles, Pro qui va être utilisé dans la majeure partie des cas, et Ultra pour les besoins de réflexion les plus avancés
dans l'optique des modeles GenAI ouverts, Facebook fournit des outils pour faire des IA responsables (mais pas coupables :wink: )
notament des benchmarks pour evaluler la sureté et un classifier de sureté, par exemple pour ne pas generer du code malicieux (ou le rendre plus dur)
llama purple sera un projet parapluie
D'ailleurs Meta IBM, Red Hat et pleins d'autres ont annoncé l'AI Alliance pour une AI ouverte et collaborative entre académique et industriels. Sont notammenrt absent Google, OpenAI (pas ouvert) et Microsoft
Juste une annouce pour l'instant mais on va voir ce que ces acteurs de l'AI Alliance feront de concret
il y a aussi un guide d'utilisateur l'usage IA responsable (pas lu)
MLX est une librairie Python qui s'inspire fortement de NumPy, PyTorch, Jax et ArrayFire
Surtout, c'est développé spécifiquement pour les Macs, pour tirer au maximum parti des processeurs Apple Silicon
Dans un des repos Github, on trouve également des exemples qui font tourner nativement sur macOS les modèles de Llama, de Mistral et d'auters https://github.com/ml-explore/mlx-examples
non seulement les Apple Silicon amis aussi la memoire unifiee CPU/GPU qui est une des raisons clés de la rapidité des macs
Le calendrier HTML "hell" https://www.htmhell.dev/adventcalendar/ qui parle d'accessibilité, de web components, de balises meta, de toutes les choses qu'on peut très bien faire en HTML/CSS sans avoir besoin de JavaScript
Beaucoup d'outil librement accessibles sont mentionnés pour faire toutes sortes de visualisations (ex. treemap, dendros, sankey…) mais aussi pour la cartographie
Quelques ressources de site qui conseillent sur l'utilisation du bon type de visualisation en fonction du problème et des données que l'on a
notemment celui du financial time qui tiens dans une page de PDF
Avec toute une liste de questions à se poser dans l'utilisation d'un outil tel que Copilot
Il faut bien réaliser que malheureusement, une IA n'a pas raison à 100% dans ses réponses, et même plutôt que la moitié du temps, donc il faut bien mettre à jour ses attentes par rapport à cela, car ce n'est pas magique
La conclusion est intéressante aussi, en suggérant que grosso modo dans 40 à 60% des situations, tu peux arriver à 40 à 80% de la solution. Est-ce que c'est à partir de ce niveau là qu'on peut vraiment gagner du temps et faire confiance à l'IA ?
Ne perdez pas trop de temps non plus à essayer de convaincre l'IA de faire ce que vous voulez qu'elle fasse. Si vous n'y arrivez pas, c'est sans doute parce que l'IA n'y arrivera même pas elle même ! Donc au-delà de 10 minutes, allez lire la doc, chercher sur Google, etc.
notamment, faire genrer les tests par l'IA dans al foulée augmente les risques surtout si on n'est pas capable de bien relire le code
si on introduit un choix de pattern genre flexbox en CSS, si c'est sur une question de sécuriter, vérifier (ceinture et bretelle)
est-ce le framework de la semaine dernière? L'info ne sera pas dans le LLM (sans RAG)
C'est le MLOps et il y a quelques modèles end to end Google, IBM mais vu la diversité des organisations, c'est difficile a embrasser ces versions completes
ML Ops est une métier, data science est un metier, donc intégrer ces competences
sachez gérer votre catalogue de données
Construire un process pour tester vos modèles et continuellement
La notion de culture de la recherche et sa gestion (comme un portefeuille financier, accepter d'arrêter des experience etc)
la culture de la recherche est peu présente en engineering qui est de construire des choses qui foncitonnent
L'article conclut avec quelques pistes sur comment éviter ces dark patterns en regardant les bons patterns de la concurrence, en testant les interactions UX, et en applicant beaucoup de bon sens !
les dark patterns ne sont pas des accidents, ils s'appuient sur la psychologie et sont mis en place specifiquement
L'article parle de l'évolution de la perception de l'engineering management qui n'est plus désormais le choix de carrière par défaut pour les ingénieurs ambitieux.
Il met en évidence les défis auxquels les engineering managers sont confrontés, y compris les attentes croissantes en matière d'empathie, de soutien et de compétences techniques, ainsi que l'impact de la pandémie de COVID-19 sur l'attrait des postes de management.
L'importance des bons engineering mnanagers est soulignée, car ils sont considérés comme des multiplicateurs de force pour les équipes, contribuant de manière significative à la productivité, à la qualité et au succès global dans les environnements organisationnels complexes.
L'article fournit des raisons pour lesquelles quelqu'un pourrait envisager de devenir Engineering Manager, y compris acquérir une meilleure compréhension de la façon dont les entreprises fonctionnent, contribuer au mentorat et influencer les changements positifs dans la dynamique des équipes et les pratiques de l'industrie.
Une perspective est présentée, suggérant que devenir Engineering manager peut conduire à la croissance personnelle et à l'amélioration des compétences de vie, telles que l'autorégulation, la conscience de soi, la compréhension des autres, l'établissement de limites, la sensibilité à la dynamique du pouvoir et la maîtrise des conversations difficiles. L'article encourage à considérer la gestion comme une occasion de développer et de porter ces compétences pour la vie.
j'avais lu le tweet du createur de cette conf qui expliquait que c'etait des comptes de tests et que pris dans le rush ils avaient oublié de les enlever
mais en fait les comptes de tests ont des profils "Actifs" sur le reseaux sociaux apparemment donc c'était savamment orchestré
Au final beaucoup de speakers et des sponsors se desengagent
support des thread virtuels qui permet d'écrire le code synchrone pour des cas complexes et utiliser les thread locaux dans ces cas la. Cela ne remplacement pas le code de process des événements
le code put faire des future await qui ne bloqueront pas le thread principal
connection SQL dynamique: quand le host change dynamiquement dans l'application
support des proxies de niveau 7 pour les clients SQL
Dans cet épisode, Emmanuel, Guillaume et Katia abordent les nouveautés Java, le lancement du langage Misty par Douglas Crockford, l'arrivée de WasmGC dans Chrome, la sortie de Spring Framework 6.1, des évolutions dans les bibliothèques comme Vert.x 4.5, et des conseils sur la création de langages de programmation. L'épisode couvre également des actualités dans les domaines de l'infrastructure avec le premier ordinateur cloud commercial par Oxide, des annonces sur les frameworks web comme Angular v17, des réflexions sur les architectures monolithiques versus microservices, et sans oublier le soap Opéra du moins de novembre avec OpenAI en vedette.
la JEP 454 sur l'appel a la memoire et les API dites natives passera en target pour JDK 22 avec une façon d'ajouter les appels de méthodes restreintes sans le flag --enable-native-access (via un manifeste dans le JAR)
historiquement il fallait compiler le port du langage lui meme (et donc son GC)
Maintenant on peut compiler le code (java) dans des primitives Wasm et WasmGC
Java python et co ont des VM qui sont compilées pour toutes les architecture cibles (ARM, x86 etc) y compris le JIT, AOT
donc on peut définir comme backend WASM lui meme, c'est l'approche classique
WasmGC définit des structs et des array avec des champs dans lesquels on peut créer des instances, lire/écrire les champs, caster dans d'autres types et ces objects sont managés par WasmGC lui meme. on a un système de type du coup et des relations entre ces types
Donc on représenterait les objets Java en objets Wasm
avantage et inconvenient des deux approches
tous les codes de management d'objets ne sont plus nécessaires (y compris malloc) -> gain memoire
en mode GC dans le langage les liens object langage <-> objets Wasm sont inefficaces car le lien langage -> wasm définissent l'instance entière Wasm, donc des gros cycles d'objets ne sont pas GCed
Wasm sandbox empêche d'inspecter la stack et d'éliminer des objets plus efficacement, et il n'y a pas d'API pour aider donc seul WasmGC peut utiliser cet avantage.
un seul GC a des avantages: meilleure gestion de la pression memoire
mais on réutilise le GC du web (genre V8) vs celui de Java. (c'est moins un problème pour les autres langages avec des gc moins sophistiqués)
fragmentation memoire, est plus proéminent quand on a des modules de type C qui peur garder des gros blocs memoire "quasi vide" (opaque). c'est managé plus finement en WasmGC
Sémantiques de langage est plus dur a achevé vu qu'on map en concepts WasmGC, il y a de la transformation.
sémantiques chaine de caractère, nombres, etc peuvent être un peu ajusté
un port utilisant WasmGC n'est pas une réécriture de tout mais un gros morceau de la VM du langage cible est a réécrire
WasmGC peut optimiser comme les patterns en JVM mais en WasmMVP c'est la toolchain avant qui fait le travail d'optimisation (e.g. LLVM)
donc avec WasmGC, la toolchain fera les optimisations de langage et WasmGC fera les optimisations low level (inlining, constant propagation, dead code elimination)
puis d'autres optimisation specific a WasmGC comme les escape analysis,
et ils parlent d'optimisations dans V8 pour approcher les appels dynamique a la Java (pas défini a la compilation)
support des thread virtuels qui permet d'écrire le code synchrone pour des cas complexes et utiliser les thread locaux dans ces cas la. Cela ne remplacement pas le code de process des événements
le code put faire des future await qui ne bloqueront pas le thread principal
connection SQL dynamique: quand le host change dynamiquement dans l'application
support des proxies de niveau 7 pour les clients SQL
Améliorations sur Visual Studio Code extension (compatible avec NodeJS)
Exec native sur Jupyter de javascript et typescript permet d'effectuer des analyses de données, construire des modèles d'apprentissage automatique et générer des rapports interactifs avec Deno
Copilot Chat sera GA en décembre, il utilise GPT4, il permet de guider le développeur, de générer du code, de détecter des erreurs et aide à les corriger, d'expliquer le code
Intégration à venir de Copilot Chat dans les IDEs de JetBrains
Copilot Chat va être intégrer sur github.com et dans l'appli mobile aussi
Introduction de GitHub Copilot Enterprise pour les sociétés, qui permettra de spécialisé le modèle sur le code de l'entreprise
Intégration de Copilot ans Workspace, donc quand on voudra adresser un bug, créer un pull request, Copilot pourra nous aider étape par étape, suggérer un plan d'action
Copilot Enterprise permettra de faire des recherches avec le contexte entier du code de l'entreprise, donc idéalement meilleur que le focus sur un repo de Copilot
Les microservices sont la solution à la complexité plutôt que la cause de celle-ci. Toutes les applications deviendront complexes ; au-delà d'un certain point, les microservices nous aideront à gérer cette complexité.
Les microservices comportent des coûts et des avantages. Si les avantages ne l'emportent pas sur les coûts, vous n'aurez pas une expérience positive avec les microservices.
Nous pouvons arrêter notre transition vers les microservices quelque part au milieu du spectre, ce que j'aime appeler le modèle hybride. À ce stade, nous pouvons avoir quelques gros services mélangés à quelques petits services. Nous pouvons avoir le meilleur des deux mondes : la simplicité et la commodité du monolithe combinées à la flexibilité et à la scalabilité des microservices.
Il n'y a pas de choix binaire entre monolithique et microservices. En réalité, il existe un spectre de possibilités entre les deux. Si vous vous êtes fixé à l'une des extrémités du spectre, vous passez à côté de la grande variété d'architectures intermédiaires.
Nous devrions cesser de parler de monolithe contre microservices et plutôt avoir un débat plus nuancé sur la taille appropriée des services.
les microservices mettent sur le devant de la scene la complexification du système, les monolithes le cachent sous le tapis
les microservices permette de manager cette complexité
automatisation est la clés dans l'adoption des microservices
bien aligner son architecture et son domain ou alors la douleur arrive
en fonction de l'implémentation, le risque est plus ou moins grand (de plus de CPU a un full DDOS)
au cœur du problème est la capacité d'envoyer pleins de requêtes en parallèle sur le meme pipeline HTTP/2
les serveurs ont en general une limite au streams en parallèle (genre 100)
la CVE est exploitée cote client en ouvrant et fermant rapidement une stream, c'est plus léger sur le client, le serveur a un delai dans sont processing
ce qui permet de bypasser la limit et affamer les resources du serveur
c'es catastrophique en cas de one thread per request (thread starvation)
en event loop, c'est une queue plus grande (donc le cas de quarkus)
pour mitiger, quarkus regarde le nombre de stream close requests par seconde pour détecter les abus (200 requêtes de fermeture sur une fetnetre de 30s)
Data / IA
Elon Musk annonce son LLM, appelé Grok https://x.ai/
Connectivité en temps réel avec Twitter !
Fenêtre de contexte de 25k characters
Le LLM garderait le contexte de la conversation (au lieu d'avoir à toujours renvoyer toute la discussion dans le contexte, à cause du côté sans état des LLMs habituellement)
Le style, la personnalité, du LLM, serait assez humoristique, voire carrément sarcastique, à la Musk… et déjà sur Twitter une personne commentait en disant que c'était le LLM "anti-woke"
Grok serait disponible pour les utilisateurs payants de Twitter
GPT-4 Turbo : leur dernier et plus puissant LLM. Il offre un contexte de 128k tokens, des prix plus bas et des quotas plus élevés. 128k c'est comme Claude
Assistants API : une solution permettant de créer des mini assistants personnalisés et de les exposer via une API. L'objectif est de faciliter l'intégration des solutions GenAI dans les applications, avec des fonctionnalités de gestion des conversations, d'interprétation de code et de RAG.
API pour DALL•E 3 : un modèle de 3e génération pour la génération d'images.
GPTs : des versions personnalisées de ChatGPT, faciles à développer même sans compétences en programmation. Une place de marché sera disponible pour monétiser ces "GPTs".
Les acteurs et les grands studios d'Hollywood ont conclu un accord le 8 novembre pour mettre fin à une grève qui a paralysé la production de films et de séries aux États-Unis pendant plusieurs mois.
L'accord prévoit une nouvelle convention collective de trois ans pour les acteurs (hormis les vedettes, les acteurs n'arrivent pas à gagner leur vie avec le streaming)
Revalorisation importante des salaires minimums ainsi que des des garde-fous contre le IA. Un système de primes pour les rediffusions en streaming.
Double mouvement social historique : acteurs sont entrés en grève mi-juillet, les scénaristes depuis début mai. La paralysie du secteur a coûté au moins 6 milliards de dollars.
Les acteurs craignaient que les studios utilisent l'IA pour cloner leur voix et leur image, les réutiliser à perpétuité, sans compensation ni consentement. Les conditions entourant les droits des studios sur l'image des acteurs stars après leur mort a été négocié.
La disparition annoncée du géant mondial du coworking marque un tournant pour le secteur, y compris en France.
Asphyxié par une dette de près de 3 milliards de dollars
Chute interminable entamée en 2019
WeWork était le leader mondial du secteur et, de par son statut de pionnier du coworking
WeWork propose 15 établissements en France, tous situés à Paris
Pourtant la demande pour le coworking ne cesse d'exploser
Startups domicilient leur siège (Qonto par exemple) dans un espace de co-working
Le modèle du coworking n'est pas remis en cause. WeWork, c'est un phénomène à part. Il y a eu une mauvaise gestion de départ d'une licorne qui croît à toute vitesse, en ne faisant absolument pas attention à son modèle économique de base (dit Clément Alteresco CEO de Morning)
Mauvaise publicité pour le marché et les concurrents, mais considèrent qu'ils vont s'en sortir
Les signalements de contenus, suppressions et suspensions pour propos violents et haineux au sein de X sont les plus nombreux en France, loin devant l'Allemagne et l'Espagne.
16.288 suppressions de messages contre 7.160 en Allemagne et 7.743 en Espagne
X explique avoir une « équipe internationale et inter-fonctionnelle » de « modérateurs humains », qui travaillent « 24 heures sur 24 avec la capacité de couvrir plusieurs langues ».
LCC 301 - Minoritaire ou majoritaire, là est la question!
23 Oct 2023
01:45:39
Dans cet épisode, Emmanuel et Guillaume reviennent sur les nouveautés de l'écosystème Java (Java 21, SDKman, Temurin, JBang, Quarkus, LangChain4J, …) mais aussi sur des sujets plus généraux comme Unicode, WebAssembly, les bases de données vectorielles, et bien d'autres sujets orientés IA (LLM, ChatGPT, Anthropic, …).
Nous avons déjà partagé ce lien par le passé, mais l'article est mis à jour à chaque release majeure de Java pour couvrir les dernières nouveautés. Et en particulier, Java 21 qui vient de sortir.
Apparemment, une nouvelle licence pour le TCK (qui valide la compliance) doit être approuvée
Oracle semble avoir sorti de nouveaux termes, à quelques jours de la sortie officielle de Java 21
la mise a jour du TCK est arrivée le 9 octobre.
comment Microsoft a pu sortir le sien avant?
Le Financial Times propose un bel article avec des animations graphiques expliquant le fonctionnement de l'architecture de réseau de neurones de type transformers, utilisé dans les large language model https://ig.ft.com/generative-ai/
LLM via relation entre les mots
notion de transformer qui parse les "phrases" entières ce qui capture le contexte
discute le beam search vs greedy search pour avoir pas le prochain mot mais l'ensemble de prochains mots
parle d'hallucination
l'article parle de texte/vector embeddings pour représenter les tokens et leurs relations aux autres
il décrit le processus d'attention qui permet aux LLM de comprendre les associations fréquentes entre tokens
le sujet des hallucinations est couvert
et pour éviter des hallucinations, utilisation du "grounding"
Un bel article qui explique Unicode, les encodings comme UTF-8 ou UTF-16, les code points, les graphèmes, les problèmes pour mesurer une chaîne de caractères, les normalisation de graphèmes pour la comparaison de chaîne
Si vous voulez mieux comprendre Unicode, c'est l'article à lire !
unicode c'est un mapping chiffre - caractère en gros
1,1 millions disponibles dont 15% définis et 11% pour usage privé, il reste de la place. Et non les meojis ne prennent pas beaucoup de place.
usage prive est par exemple utilise par apple pour délivrer le logo apple dans les fonts du mac (mais pas ailleurs)
UTF est l'encoding du chiffre de l'unicode
UTF-32: 4 bytes tout le temps, UTF-8, encodage variable de 1 a 4 bytes (compatible avec ASCII) ; il a aussi un peu de détection d'erreurs (prefix des bytes différents),
optimise pour le latin et les textes techniques genre HTML
problème principal, on peut pas déterminer la taille en contant les bytes ni aller au milieu d'une chaine directement (variable)
UTF-16 utilise 2 ou plus de bytes et est plus sympa pour les caractères asiatiques
un caractère c'est en fait un graphème qui peut être fait de plusieurs codepoints : é = e U+0065 + ´ U+0301 ; ☹️ (smiley qui pleure) is U+2639 + U+FE0F
D'ailleurs selon le langage ":man-facepalming::skin-tone-3:".length = 5, 7 (java) ou 17 (rust) ou 1 (swift). Ça dépend de l'encodage de la chaine (UTF-?).
""I know, I'll use a library to do strlen()!" — nobody, ever."
Attention java.text.BreakIterator supporte une vieille version d'unicode donc c'est pas bon.
Les règles de graphème change a chaque version majeure d'unicode (tous les ans)
certains caractères comme Å ont plusieurs représentations d'encodage, donc il ya de la normalisation: NFD qui éclate en pleins de codepoints ou NDC qui regroupe au max
normaliser avant de chercher dans les chaines
certains unicode sont représentés différemment selon le LOCALE (c'est la life)
Guillaume nous parle du jeune projet LangChain4J, inspiré du projet Python LangChain, qui permet d'orchestrer différents composants d'une chaine d'IA générative
Grâce à ce projet, les développeurs Java ne sont pas en reste, et n'ont pas besoin de se mettre à coder en Python
LangChain4J s'intègre avec différentes bases vectorielles comme Chroma ou WeAviate, ainsi qu'une petite base en mémoire fort pratique
LangChain4J supporte l'API PaLM de Google, mais aussi OpenAI
Il y a différents composants pour charger / découper des documents et pour calculer les vector embeddings des extraits de ces documents
pas de partie de confiance en dehors du OIDC provider.
OIDC lie une identité a une clé de chiffrement via une extension du id token.
OIDC devient une preuve de possession
purement client side via la signature du id token
ils utilisent le nonce pour stocker la clé publique et la signer cryptographiquement
vs Sigstore: plus d'élément central comme le transparency log et l'autorité de certification
pour le projet sigstore, ils n'ont pas utilisé cette architecture parce que la privacy des identités notamment en cas de renommage et sur le long terme n'est pas respecté
la rotation de clés et la partie client side devient beaucoup plus complexe (OIDC quoi) et ouvre des risques de sécurité (bugs d'implémentation)
la clé des OIDC providers est rotaté et ce n'est pas expliqué dans le flow OpenPubkey
la complexité passe de server side a client side (vu que le nonce est la clé du système)
le client notamment va devoir tracker les clés de signature des providers OIDC tout le temps (ou un system devra le faire)
le id token typiquement a plus d'infos qui vont leaké en tant que certificat du truc signé (privacy)
Rust et JavaScript voient leur popularité lorsqu'ils ciblent wasm
Wasm est toujours beaucoup utilisé pour le développement web, mais aussi pour le serverless ou comme host pour système de plugins
L'étude montre que les développeurs sont intéressés par les threads, le garbage collection et le nouveau modèle de composants
Côté WASI, toutes les propositions sur le thème I/O retiennent l'attention, comme : le support de HTTP, du filesystem, ou les sockets… pourtant, c'est ce que l'approche WASIX proposait, même si elle n'a pas été très bien reçue par la communauté
Depuis quelque temps, beaucoup de personnes se demandaient où en était AWS dans le domaine GenAI. La réponse vient de tomber.
Plutôt que de développer sa propre technologie comme le fait Google, Amazon adopte la stratégie de Microsoft avec OpenAI en investissant dans un pure player en lui fournissant de la puissance de calcul.
AWS deviendra le principal fournisseur cloud d'Anthropic, en fournissant son infrastructure à base de puces AWS Trainium et Inferentia
La technologie d'Anthropic sera ajoutée au catalogue d'Amazon Bedrock. Les entreprises pourront personnaliser et affiner les modèles sur AWS
Claude 2 propose une fenêtre contextuelle de 100 000 tokens, que les entreprises pourront utiliser.
Dans le cadre de cet investissement, Amazon acquiert une participation minoritaire dans @AnthropicAI. La structure de gouvernance d'Anthropic reste inchangée
On a vu l'émergence de nouvelles bases de données de type vectoriel ces deux dernières années : Pinecone, Milvus, Weaviate, Qdrant, etc
Mais les DB existantes sont toutes en train de rajouter le support des vecteurs dans leur moteur
Pour la "data gravity" : c'est plus facile d'avoir ses données au même endroit que d'en avoir dans différentes bases malgré leur corrélation
Pour capturer le use case de "Retrieval Augmented Generation", en utilisant les Large Language Model pour récupérer de l'info dans ces bases de données vectorielles
Je pense qu'on verra aussi les DB vectorielles ajouter également plus de fonctionnalités de requêtage qui leur manquent
OpenAI a annoncé de nouvelles fonctionnalités vocales et d'image pour ChatGPT
OpenAI a publié un article décrivant leurs efforts de test avec GPT-4V. Ils ont utilisé le modèle dans un outil appelé Be My AI, qui aide les personnes malvoyantes en décrivant le contenu des images: https://cdn.openai.com/papers/GPTV_System_Card.pdf
L'article résume l'évaluation du modèle GPT-4V par OpenAI, qui inclut des tests de comportement, de sécurité, et de capacité médicale, mais conclut que le modèle n'est pas approprié pour des fonctions médicales.
outil de CI/CD qui evite de repeter les taches etc
comme startup tu ne release aps un produit mature et complet en fonctionalité
mais peut etre 10x sur une chose specifique qui peut faire oublier les manques a certains
quand tu captures ces premiers, tu investis et etend, et tu repetes
si au debut ce differentiateur n'attire personne, ajouter des features ne va pas aider, c'est une recette pour construire quelque chose que personne ne veut
ils ont construit leur plan de domination en etapes independantes, des pproduits plus focalisés
et le premier produit "gratuit" ne canibalisait pas les seconds produits car ils addressaient des problemes differents (donc pas de risque sur le business model)
le premier produit construit par une personne a ete beaucoup adopté
le deuxieme (remote workers) a aaussi été adopté avec des gens qui faisaient en DIY, et quand ils ont fait une offre managée, les gens sont venus
les CI traditionels lancaient le job et le reste était délégué a Earthly et Earthly Sattelite (le coeur du build)
il ne restait plus qu'a allumer le troisieme etage Earthly CI mais c'est parti en cacahuete
la population interessée n'était pas des fans qui avaient deja fait le job du produit, ils demandaient en quoi la CI etait differente et le cout de migration et ils n'ont jamais pu gagner
au lieu d'une grass root install, il y avait un long mur de migration a passer
la clé c'est que vendre aux devs avec un GTM direct ne marche aps, ils doivent essayer et adopter par eux meme
developpeurs vont acheter un outil de dev mais tu ne peux pas leur vendre
horcrux : chiffrer un fichier en plusieurs morceaux, et il faut avoir un certain nombre de fragments pour rassembler le fichier entier, mais ne nécessite aucun mot de passe https://github.com/jesseduffield/horcrux
ils demandent une clarification sur les contraintes réglementaires
notamment d'exclure les fondation / associations et laisser le poids sur les sociétés qui fourniraient les projet open sources des fondations dans le cadre d'un accord commercial, pas juste de le fournir en téléchargement
réutiliser la validation de compliance des sociétés commerciales par les fondations
Dans cet épisode de rentrée, Antonio et Arnaud ont le plaisir d'accueillir Katia Aresti dans l'équipe. Ils passent en revue les dernières nouveautés et sujets chauds de cette rentrée, notamment la sortie de Java 21, les nouvelles versions de Quarkus, Micronaut, Hibernate, NodeJS, Redis, et bien d'autres encore. Ils discutent de sujets plus généraux tels que l'observabilité, la nouvelle tendance "Platform Engineering", et la productivité des développeurs. Ils abordent aussi les sujets sur la sécurité, tels que les failles sur les CPUs Intel et AMD, ainsi que la vie privée, avec les Tracking APIs de Chrome, Firefox et le projet de loi SREN. Le tout est agrémenté de sa dose d'IA, avec des librairies telles que Semantic Kernel, ainsi que des sujets plus haut niveau tels que Google Gemini, Meta GPT, LLama 2, et les biais et la consommation énergétique de l'IA.
Se connecte à plusieurs fournisseurs (aujourd'hui OpenAI, Azure AI, Hugging Face), plusieurs DB vectorielles, plusieurs template de prompt (suit la specification de OpenAI)
Il est important de noter qu'un problème de dégradation des performances et de la mémoire a été introduit dans Quarkus 3.3. Ce problème est corrigé dans Quarkus 3.3.2.
un support initial de la spécification Jakarta Persistence 3.2
Un nouveau guide d'introduction Hibernate 6, un nouveau guide de syntaxe et de fonctionnalités pour le langage de requête Hibernate (Hibernate Query Language)
Annotation @Find sur des méthodes -> créer des méthodes de recherche similaires aux méthodes de requête
Reactive compatible avec Hibernate ORM 6.2.8.Final, certains changements d'api
Infrastructure
Une série d'articles sur l'observabilité par Mathieu Corbin
Auto-tiering : cette nouvelle fonctionnalité permet de stocker les données sur des supports de stockage différents, en fonction de leur importance et de leur fréquence d'accès. Cela permet d'améliorer les performances et la scalabilité de Redis.
RESP3 : cette nouvelle version du protocole RESP permet une communication plus efficace entre Redis et les clients.
Improvements to performance : de nombreuses améliorations de performances ont été apportées à Redis 7.2, notamment pour les opérations de lecture et d'écriture.
New commands : plusieurs nouvelles commandes ont été ajoutées à Redis 7.2, notamment :
CLIENT NO-TOUCH : cette commande permet d'empêcher un client d'être touché par une opération AOF ou RDB.
WAITAOF : cette commande permet d'attendre que l'AOF soit écrite avant de poursuivre l'exécution.
Google a raté les premiers pas (ils avient le meilleur LLM public avant ChatGPT 3)
ET les chercheurs qui invente le champs des LLMs
Google va 5x ChatGPT–4 avant al fin de l'année, mais vont-il les publier
les chercheurs se tirent la bourre sur le nombre de GPU (H100) auxquels ils ont accès ; ce sont lers grosses orga comme Meta OpenAI Google
et les autres qui lutent avec des GPU qui n'ont pas assez de VRAM et ce qu'ils vont faire c'est de la merde et sans consequence
le peuple utilise le modele dense de LLAMA mais pour les environnements contraints ca serait mieux des sparse models et du speculative decoding.
ils devraient se concentre sur la performance de modele qui utilise plus de compute et memoire en evitant de consommer de la bande passante de memoire, c'est ce que l'edge a besoin
les benchmarks public ne mesurent pas des choses utiles
meme hugging faces est dans la category des pauvres de GPU
Nvidia est entrain de se construire une machine de guerre (service)
la chine et les us vont etre en competition mais l'europe qui fait du GPU pauvre ne va pas s'en sortir
les startups ne peuvent pas payer les GPU en actiosn, il faut du cash
Tout le monde rempli les poches de NVidia, sand Google
McKinsey a sorti un article où ils expliquent la recette miracle recherchée par tous les managers comme le graal: Comment mesurer la productivité des développeurs? (faut bien vendre du conseil)
Kent et Gergely partent d'un model mental de description de la création de valeur par le développeur pour ensuite voir quels sont les besoins de mesurer la productivité et comparent cela avec d'autres secteurs (la vente, le support, le recrutement).
Ils concluent cette première partie avec les compromis à faire pour que ce type de mesures ait un intérêt sans impacter trop négativement les développeurs
Ces différents articles retracent la génèse du concept de Platform Engineering
L'activité de Platform Engineering vient en réponse à la charge cognitive rajoutée aux équipes techs dans des transitions DevOps loupées (You build it, you run it … et vous vous débrouillez).
Cela conduit à la création de golden paths et d'une Internal Developers Platform qui doit proposer en interne les services nécessaires aux équipes pour livrer leurs produits le lus efficacement possible tout en suivant les critères de qualité, de compliance de l'entreprise.
Si votre produit est SAAS, on doit avoir des astreintes. Cela impose un lourd fardeau à ceux qui doivent être en astreinte,, surtout en petite entreprise
Petites entreprises évitent avoir un processus d'astreinte formel pour éviter le stress. Cela crée dans la pratique plus de stress: Si personne n'est responsable, tout le monde est responsable.
Tinybird est la plateforme de données en temps réel pour les développeurs et les équipes de données. Pré création du process formel chez Tinybird: désorganisé, non structuré et stressant
Mise en place: Principes fondamentaux d'un processus d'astreinte: L'astreinte n'est pas obligatoire, minimiser le bruit, pas seulement pour les SRE, alert = runbook, avoir des backups pour la personne en astreinte, appeler quelqu'un devrait être la dernière solution, minimiser le temps en astreinte
L'article explique comment ils sont passé regarder chaque alerte (comprehensible?, exploitable?), puis avoir un board grafana pour chacune et plan spécifique. Une fois le tri fait, tout migré vers un seul channel de com, et manuel d'astreinte pour chaque alerte. Itérer.
Multiples benefices sur le long terme: rapports d'incident ouvert, atténuer les problèmes futurs, renforcement la propriété et les connaissances du code et systèmes au sein de toute l'équipe etc.
Downfall, La vulnérabilité est due à des fonctions d'optimisation de la mémoire dans les processeurs Intel qui révèlent involontairement les registres matériels internes aux logiciels. Cela permet à des logiciels non-fiables d'accéder à des données stockées par d'autres programmes, qui ne devraient normalement pas être accessibles. Tous les PC ou ordinateurs portables équipés de processeurs Intel Core de la 6e génération Skylake jusqu'aux puces Tiger Lake de 11e génération incluses contiennent cette faille. Les derniers processeurs Core 12e et 13e génération d'Intel ne sont pas concernés.
Inception, nécessite un accès local au système pour être potentiellement exploité ce qui en limite de fait la portée. Tous les processeurs AMD depuis 2017 sont touchés, incluant les derniers modèles Zen 4 Epyc et Ryzen
Google a annoncé en juillet le déploiement de sa nouvelle API Topics, permettant « à un navigateur de partager des informations avec des tiers sur les intérêts d'un utilisateur tout en préservant la confidentialité ».
C'est cette API, incluse dans la version Chrome 115 de juillet 2023, qui est censée remplacer les cookies tiers.
l'intégration de l'IA générative dans leur plateforme publique, Stack Overflow for Teams, ainsi que de nouveaux domaines de produits
IA/ML aident à générer des balises initiales et à suggérer des paires question-réponse, permettant aux développeurs de se concentrer sur l'amélioration et la précision
Amélioration des Capacités de Recherche
Les forums de questions-réponses basés sur la communauté sont le cœur battant de Stack Overflow. Selon Prashanth Chandrasekar, PDG de Stack Overflow, l'objectif d'OverflowAI est d'améliorer la communauté de diverses manières plutôt que de la remplacer complètement.
Le gouvernement français prépare une loi qui pourrait menacer la liberté sur Internet. Le projet de loi visant à sécuriser et réguler l'espace numérique (SREN) obligerait les navigateurs web, comme Mozilla Firefox, à bloquer des sites web directement au niveau du navigateur.
Mozilla lance une pétition pour retirer cette n-ieme solution stupide pour censurer Internet
Dans cet épisode estival Guillaume, Emmanuel et Arnaud parcourent les nouvelles du début d'été. Du Java, du Rust, du Go du coté des langages, du Micronaut, du Quarkus pour les frameworks, mais aussi du WebGPU, de l'agilité, du DDD, des sondages, de nombreux outils et surtout de l'intelligence artificielle à toutes les sauces (dans les bases de données, dans les voitures…).
RedHat a annoncé un autre changement massif qui affecte tous les rebuilds et forks de Red Hat Enterprise Linux. À l'avenir, Red Hat publiera uniquement le code source pour les RHEL RPMs derrière leur portail client. Comme tous les clones de RHEL dépendent des sources publiées, cela perturbe encore une fois l'ensemble de l'écosystème Red Hat.
Avec la mode des Large Language Models, on parle de plus en plus de bases de données vectorielles, pour stocker des "embeddings" (des vecteurs de nombre flottant représentant sémantiquement du texte, ou même des images). Un article explique que les Vecteurs sont le nouveau JSON dans les bases relationnelles comme PostgreSQL https://jkatz05.com/post/postgres/vectors-json-postgresql/
L'article parle en particulier de l'extension pgVector qui est une extension pour PostgreSQL pour rajouter le support des vectors comme type de colonne https://github.com/pgvector/pgvector
L'enquête a été réalisée auprès de 90 000 développeurs dans 185 pays.
Les développeurs sont plus nombreux (+2%) que l'an dernier à travailler sur site (16% sur site, 41% remote, 42% hybrid)
Les développeurs sont également de plus en plus nombreux à utiliser des outils d'intelligence artificielle, avec 70 % d'entre eux déclarant les utiliser (44%) ou prévoyant de les utiliser (25) dans leur travail.
Les langages de programmation les plus populaires sont toujours JavaScript, Python et HTML/CSS.
Les frameworks web les plus populaires sont Node, React, JQuery.
Les bases de données les plus populaires sont PostgreSQL, MySQL, et SQLite.
Les systèmes d'exploitation les plus populaires sont Windows puis macOS et Linux.
Les IDE les plus populaires sont Visual Studio Code, Visual Studio et IDEA IntelliJ.
une intégration avec OpenAI mais aussi de plus petits LLMs spécifiques à JetBrains
un chat intégré pour discuter avec l'assistant, puis la possibilité d'intégrer les snippets de code là où se trouve le curseur
possibilité de sélectionner du code et de demander à l'assistant d'expliquer ce que ce bout de code fait, mais aussi de suggérer un refactoring, ou de régler les problèmes potentiels
on peut demander à générer la JavaDoc d'une méthode, d'une classe, etc, ou à suggérer un nom de méthode (en fonction de son contenu)
génération de message de commit
il faut avoir un compte JetBrains AI pour y avoir accès
Un article très détaillé pour moderniser son architecture en utilisant une approche Domain-Driven Discovery qui se fait en 5 étapes:
Encadrer le problème – Clarifier le problème que vous résolvez, les personnes touchées, les résultats souhaités et les contraintes de solution.
Analyser l'état actuel – Explorer les processus opérationnels et l'architecture des systèmes existants afin d'établir une base de référence pour l'amélioration.
Explorer l'état futur – Concevoir une architecture modernisée fondée sur des contextes délimités, établir des priorités stratégiques, évaluer les options et créer des solutions pour l'état futur.
Créer une feuille de route – Créer un plan pour moderniser l'architecture au fil du temps en fonction des flux de travail ou des résultats souhaités.
sur de nombreux thèmes : front, back, cloud, data, AI/ML, mobile
aussi des tendances, des success stories
par exemple dans les derniers articles : on parle d'Alan Turing, du Local Storage en Javascript, des la préparation de certifications React, l'impact de la cybersécurité sur le cloud
Nous subissons tous un traumatisme du développement qui rend difficile la collaboration avec d'autres - une partie cruciale du travail dans le développement de logiciels agiles.
Diriger d'une manière tenant compte des traumatismes n'est pas pratiquer la psychothérapie non sollicitée, et ne justifie pas les comportements destructeurs sans les aborder.
Être plus sensible aux traumatismes dans votre leadership peut aider tout le monde à agir de façon plus mature et plus disponible sur le plan cognitif, surtout dans des situations émotionnellement difficiles.
Dans les milieux de travail tenant compte des traumatismes, les gens accordent plus d'attention à leur état physique et émotionnel.
Ils s'appuient aussi davantage sur le pouvoir de l'intention, fixent des objectifs d'une manière moins manipulatrice et sont capables d'être empathiques sans s'approprier les problèmes des autres.
Au sein de l'UE, la loi sur la cyber-résilience (CRA) fait maintenant son chemin à travers les processus législatifs (et doit faire l'objet d'un vote clé le 19 juillet 2023). Cette loi s'appliquera à un large éventail de logiciels (et de matériel avec logiciel intégré) dans l'UE. L'intention de ce règlement est bonne (et sans doute attendue depuis longtemps) : rendre le logiciel beaucoup plus sûr.
Le CRA a une approche binaire: oui/non et considère tout le monde de la même manière
Le CRA réglementerait les projets à source ouverte à moins qu'ils n'aient « un modèle de développement entièrement décentralisé ». Mais les modèles OSS sont de complexes mélanges de pur OSS et éditeurs de logiciels
les entreprises commerciales et les projets open source devront être beaucoup plus prudents quant à ce que les participants peuvent travailler sur le code, quel financement ils prennent, et quels correctifs ils peuvent accepter.
Certaines des obligations sont pratiquement impossibles à respecter, par exemple l'obligation de « livrer un produit sans vulnérabilités exploitables connues ».
Le CRA exige la divulgation de vulnérabilités graves non corrigées et exploitées à l'ENISA (une institution de l'UE) dans un délai mesuré en heures, avant qu'elles ne soient corrigées. (complètement opposé aux bonnes pratiques de sécu)
Une fois de plus une bonne idée à l'origine mais très mal implémentée qui risque de faire beaucoup de dommages
Octave Klaba, avec Miro, son frère, et la Caisse des Dépôts, finalisent la création de Synfonium qui va maintenant racheter 100% de Qwant et 100% fe Shadow. Synfonium est détenue à 75% par Jezby Venture & Deep Code et à 25% par la CDC. https://twitter.com/i/web/status/1673555414938427392
L'un de rôles de Synfonium est de créer la masse critique des utilisateurs et des clients B2C & B2B qui vont pouvoir utiliser tous ces services gratuits et payants
Vous y retrouverez le moteur de recherche, les services gratuits, la suite collaborative, le social login, mais aussi les services de nos partenaires tech.
Le but est de créer une plateforme dans le Cloud SaaS EU qui respectent nos valeurs et nos lois européennes
Guillaume, Arnaud et Emmanuel discutent des nouvelles de mai et juin. La communauté Rust, WebAssembly. Guava, Debezium, Kafka, de flame graph, d'open source et bien sûr les large language models. On répond aussi à la question fondamentale: mais pourquoi Maven n'a pas de fichier .lock ?
Avant la version 3.0, CheerpJ utilisait une approche AOT (ahead of time compilation) qui nécessitait aussi une étape d'intégration continue pour transformer aussi toutes les dépendances JAR associées à un projet
Avec la version 3.0, qui devrait sortir cet été, CheerpJ adopte une approche JIT (Just In Time compilation) qui ressemble plus à l'approche de Java lui même
Plus besoin non plus de version custom d'OpenJDK
Les Applets vous avaient manqué ? Elles sont de retour avec WebAssembly :smile:
lié au backchannel et un petit groupe qui essaie de faire les choses bien mais qui derappe de l'exterieur
en gros ils ont un process interne pour prendre des decisions
avec ce process ils ont invité une personne pas super pro Rust a faire la keynote a RustConf
d'autres du commité ont vu ca et on discuté en backchannel pour revenir en arriere de la decision (sans suivre le process)
il y a eu une semaine de pause avant action mais pas annoncé
le speaker a ete dé keynoté et a donc refusé de venir a la conf
et paf, ca enerve des gens decisionaire et ils demissionnent
Bref des gens qui veulent faire le bien mais en cercle un peu trop ferné et paf
Les gens de Wasmer étendent WASI avec WASIX, on rajoutant le support POSIX, les threads… permettant de compiler vers WASM plein de projet C/C++ ou Rust, comme cURL ou autre https://wasmer.io/posts/announcing-wasix
ca frotte un oeu entre innovation et standardisation dans la communaite WASM
WASMER sont un peu les cowboys startuper
par exemple ils ont essayé de deposer la marque WebAssemble au nez et à la barbe de la communauté
donc la reaction du coeur de la communauté a cette annonce est plutôt calme
WASI c'est standard mais ca prend du temps a maturer
WASIX c'est cool et dispo maintenant mais c'est un produit d'une société spécifique, donc pas de portabilité
data dog a perdu tous ces services dans la plupart ou toutes ses regions pendant 3 heures avant la premiere recuperation et 10 heures au total pour la recuperation totale
Equipe : 10 senior engineering leaders, about 70 local incident commanders and a pool of 450 to 750 incident responders active throughout the incident, which required four shifts to bring the incident to full resolution.
cause: une mise a jour de systemd appliqué sur la plupart de leurs VM en quasi parallele qui a effacer les routes des container et ne les a aps remis ; c'est un cas qui n'arrive pas au reboot d'un noeud (init sequence)
des 10000s noeuds impactés
en general ils font du rollout par region en enlevant les noeuds etc mais le base os avait un legacy update channel activé (vs gere pas les equipes de datadog manuellement)
les noeuds de controlleurs qui sont cense recycler les noeuds n'ont pu le faire vu le volume de noeud et surtout parce qu'eux meme étaient effectés
Dans cet épisode, Antonio, Emmanuel et Guillaume reviennent sur les nouveautés et annonces faites à Google I/O 2023 : de nouveaux téléphones Pixel qui se plient ou pas, et surtout de l'intelligence artificielle du sol au plafond ! Que ce soit dans Android, dans Google Workspace, dans Google Cloud, une tonne de produits passe en mode survitaminé à l'IA. Guillaume, Antonio et Emmanuel discutent aussi de l'impact qu'ils voient sur l'AI, et de comment les Large Language Models sont raffinés et pourquoi on les fait halluciner, de subtilités du langage des signes.
Triple appareil photo (grand angle, principal, et photo avant pour les selfies)
509 euros
Magic Eraser pour effacer les trucs qu'on veut pas dans la photo, Magic Unblur pour rendre une photo floue plus nette, Real Tone pour rendre les peaux foncées plus naturelles
Dans Messages, Magic Compose dans les conversations, l'IA nous aide à concevoir nos messages, dans différents styles (plus pro, plus fun, dans le style de Shakespeare)
Maps propose 20 milliards de km de direction tous les jours
Immersive View for Routes
15 villes : Amsterdam, Berlin, Dublin, Florence, Las Vegas, London, Los Angeles, Miami, New York, Paris, San Francisco, San Jose, Seattle, Tokyo et Venice
Possibilité pour les développeurs de s'intégrer et rajouter des augmentations 3D, des marqueurs
Universal Translator : une nouvelle expérimentation pour faire du doublage et traduction automatique avec synchronisation des mouvements des lèvres
Project Tailwind, une sorte de notebook dans lequel on peut rajouter tous ses documents à partir de drive, et poser des questions sur leur contenu, proposer des résumés, de faire du brainstorming sur ces thèmes https://thoughtful.sandbox.google.com/about
VisualBlocks : pour expérimenter dans une interface drag'n drop avec le développement de modèles pour Tensorflow lite et js https://visualblocks.withgoogle.com/
Expérimentations pour rajouter l'IA générative dans Google Search
Faire des recherches avec des requêtes avec des phrases plus complexes, en intégrant des réponses comme Bard, avec des liens, des suggestions d'autres recherches associées
Mais aussi proposer des publicités mieux ciblées
On peut s'inscrire à Search Labs pour tester cette nouvelle expérience, mais au début juste en Anglais et juste pour les US
Des intégrations avec Google Shopping pour proposer et filtrer des produits qui correspondent à la requête
Recherche à l'aide d'image, avec Google Lens : 12 milliards de recherches visuelles par mois
PaLM 2 est en cours d'intégration dans 25 produits de Google
Supportera 100 langues différentes (pour l'instant seulement l'anglais, japonais et coréen), avec déjà les 40 langues les plus parlées d'ici la fin de l'année
Maintenant disponible dans 180 pays… sauf l'Europe !!!
Capacité de raisonnement accrue
Peut coder dans une vingtaine de langages de programmation différents dont Groovy
Différentes tailles de modèles : Gecko, Otter, Bison et Unicorn, mais le nombre de paramètres n'est pas communiquée, comme pour GPT-4 d'OpenAI
Utilisable pour des requêtes et pour du chat
Des modèles dérivées fine-tunés Med-PaLM 2 sur du savoir médical, sur l'analyse visuelle des radios et Sec-PaLM, entrainé sur des cas d'utilisation sur le thème de la cybersécurité, pour aider à déceler des scripts malicieux, des vecteurs d'attaque
Sundar Pichai a aussi annoncé que Google travaillait déjà sur la prochaine évolution de ses LLM avec un modèle appelé Gemini. Peu de détails à part qu'il sera multimodal (en particulier recherche combinée image et texte par ex.)
Dans Gmails et Docs, propose d'aider à la rédaction de vos emails et documents
une extension de "smart compose" qui va permettre de générer des emails entiers, d'améliorer le style, de corriger la grammaire, éviter les répétitions de texte
Dans Docs, des nouveaux "smart chips" pour rajouter des variables, des templates
Dans Slides, rajouter des images générées par IA
Des prompts dans Sheets pour générer un draft de table
Dans Google Meet, possibilité de créer une image de fond customisée avec Generative AI
Trois nouveaux modèles LLM dans Vertex AI : Imagen (private preview) pour générer des images, Codey pour la génération de code, et Chirp pour la génération de la parole supportant 100 langues différentes avec 2 milliards de paramètres vocaux
Model Garden : avec les modèles de machine learning y compris externes et open sources
Ajout des embeddings pour le texte et l'image
RLHF, Reinforcement Learning from Human Feedback bientôt intégrer pour étendre Vertex AI tuning et prompt design avec une boucle de feedback humaine
Generative AI Studio pour tester ses prompts zero-shot, one-shot, multi-shots
Assistance de code dans VSCode et bientôt les IDEs JetBrains grâce au plugin Cloud Code, et dans Cloud Workstations.
Intégration dans les IDEs d'un chat pour comme un compagnon pour discuter d'architecture, trouver les commandes à lancer pour son projet
Le modèle de code de Codey fonctionne sur une vingtaine de languages de programmation, mais un modèle fine-tuné a été entrainé sur toute la doc de Google Cloud, donc pourra aider en particulier sur l'utilisation des APIs de Google Cloud, ou l'utilisation de la ligne de commande gcloud
Duet AI est aussi dans App Sheet, la plateforme low/no-code, et permettra de chatter avec un chatbot pour générer une application App Sheet
Dans cet épisode, Arnaud, Antonio et Emmanuel décortiquent les nouvelles d'avril et mai. On y discute Java 20, ecrire un profiler de zéro, Quarkus 3 (encore !), Micronaut 4, Podman, JReleaser, GitHub, CloudEvent, GraphQL, licenciements (encore !), et de la question a 1000 francs: librarie vs framework, quelle différence? Mais pas que.
Ce n'est peut-être pas si compliqué d'écrire soi même un Java Profiler ! Et justement cet article nous montre comment le faire, en créant un Java Agent, en analysant les stacks d'appel, et à la fin en créant même un flame-graph en HTML
Très didactique !
fondamentallement: appeler Threads:getAlStackStrace reguilerement et faire une liste des methodes visibles et créer un flamegraph a partir de ces données
Performance, interopérabilité, portabilité, écosystème, sécurité, fondamentaux (comme la documentation, la fidélité des UI natives, adresser les issues publiques)
Bard, le concurrent de ChatGPT, disponible dans 180 pays… sauf les pays européens
Pixel 7a, Pixel Tablet et Pixel Fold
Plein d'annonces autour de l'AI avec l'API PaLM (utilisée dans Bard), plein de Generative AI de partout dans les produits (search, workspace,..), y compris un modèle de code (qui comprends même le Groovy) qui va être intégré aux IDE, VSCode, etc
Ca va simplifier nos interactions avec les APIs qui utilisent du JSON
Plus besoin de passer les headers de content-type et d'accept, c'est moins verbeux
Rajouté il y a un an dans curl 7.82 (pour info, sur mon mac, par exemple, je suis en 7.86)
curl --json '{ "drink": "coffe" }' [https://example.com](https://example.com) ou curl --json @prepared [https://example.com](https://example.com) pour pointer vers un fichier
pour Facebook qui pense en tant que graph de données
Pour leur appli mobile qui devait etre a bande apssante limitée
choses positives: one requete pour plusieurs resources, selection des données dont on a besoin uniquement, typé (entre client et serveur), meilleur outilllage dev pour l'exploration, pas de soucis de version d'API?
equipe qui embrace GraphQL en 2019
les perf optimisées apr un choix de données ne s'set pas materialisé pour eux (sauf mobile, doncpas machine- mache et desktop)
la latence de REST reste mieux que GraphQL
en pratique desktop et mobile sont assez similaire en données fetchées
schemas apportaient des problemes en pratique ; synchro front et back, code first generation avait des problemes de qualite de code genere
schema -> code est meilleur mais synchro front back toujours un probleme en pratique
erreurs, plus simple en rest avec les codes HTTP a debugger et monitorer
version free est une mensonge, les schemas ne peuvent etre cassés
pagination est compliqué et non standard et caching est primitif comparé a REST
n+1 probleme comme dans les ORMs ou alors dataloaders qui amene de la complexité
securite est plus compliqué a cause de la nav libre de GraphQL
ecosysteme pas super mature pour les besoins encore et paradoxalement tres complexe
IBM avait annoncé 3900 licenciements il y a peu et cela monte à 5000 avec les licenciements chez Redhat (les effectifs étaient de 2200 à Raleigh et 19000 à l'international)
Licenciements suite au contexte économique post Covid, les revenus trimestriels de redhat n.ont été que de 8% en Q1 alors que la croissance était de 15 depuis l'acquisition de redhat par ibm en 2019
Peut-être pas 10 millions de comptes actifs, mais d'autres commentateurs estiment le nombre d'actifs serait plutôt de 6 à 7 millions actifs, pour effectivement 10 millions de comptes créés donc certains inutilisés ou disparus (serveur disparu)
chimiste de formation, il refuse de bosser autour de la bombe atomique et fini dans la silicon valley
fonde un des premiers semiconducteurs (plusieurs transistors ensemble)
Intel sera un des rpemier a parier sur le silicium (pour construire de la mémoire) et un des premiers a faire une puce intégré regroupant plusieurs fonctions
Une librairie est une collection de classes, de fonctions, de code, que l'ont peut utiliser pour des tâches spécifiques, pour éviter au développeur de réinventer la roue (par exemple une librairie comme Joda Time qui permet de simplifier / codifier la représentation du temps)
Il y a différents types de librairies : des librairies statiques ou dynamiques, suivant si elles sont chargées au runtime ou bien attachées au code que l'on compile. Il y a des librairies standards (comme celles venant du JDK et donc inclues avec lui) ou des librairies tierces (que l'on va par exemple trouver sur Maven Central)
Un framework (un "cadriciel" en bon françois) c'est aussi un ensemble de code, mais aussi de librairies, qui va offrir un cadre de développement pour ses applications.
Par exemple un framework web qui permet de créer des applications web plus facilement, ou Tensorflow pour développer de nouveaux algorithmes d'intelligence artificielle, ou Unity pour développer des jeux vidéos
Mais un framework est effectivement plus "cadrant" dans le sens où on doit suivre ses recommendations sur comment structurer son code, comment étendre des classes ou interfaces du framework, etc.
ainsi que les bonnes pratiques et parfois une boite a outil "prete a l'emploi vs assemblage
LCC 293 - Interview Maven et builds reproductibles avec Hervé Boutemy
06 Apr 2023
00:56:19
Dans le cocon de jchateau, Hervé Boutemy se fait interviewer par Charles Sabourdin sur Maven 3, 4, 5 et sur les builds reproductibles. Un grand merci à Charles pour son passage derrière le micro.