Published: May 21, 2024, 1:08 p.m.
Dans ce long\u2026. \xe9pisode, Emmanuel, Guillaume et Arnaud discutent de l\u2019actualit\xe9 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, \u2026). Gros focus sur les nouveaut\xe9s annonc\xe9es \xe0 Google I/O 2024 et dans l\u2019\xe9cosyst\xe8me IA en g\xe9n\xe9ral avec les annonces d\u2019OpenAI, Claude, Grok et d\u2019autres. Diff\xe9rents outils sont aussi couverts comme Git, IntelliJ, ASDF, BLD, S3. Et enfin des sujets sur la haute disponibilit\xe9 de Keycloak, la r\xe9-indexation sans downtime, les challenges des impl\xe9mentations 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\u2019h\xe9sitez pas \xe0 nous soumettre vos questions sur https://lescastcodeurs.com/ama nous y r\xe9pondrons dans les prochains \xe9pisodes.
Enregistr\xe9 le 17 mai 2024
T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode-312.mp3
News Langages
Un runtime WASM en Java https://github.com/dylibso/chicory
- Projet tout nouveau, encore loin de la maturit\xe9
- Mais int\xe9ressant \xe0 suivre pour ex\xe9cuter du code WebAssembly dans une application Java
- le projet n\u2019a pas 15 jours non plus quand m\xeame :)
- Faire tourner des plugins WASM dans la JVM (e.g.\xa0plugins)
On peut faire des heap dump en cas de OutOfMemoryException en compilation native https://quarkus.io/blog/heapdump-oome-native/
- depuis JDK 21
- Un exemple avec Quarkus
- Et le GC epsilon
100 exercices pour se mettre \xe0 Rust https://rust-exercises.com/
Librairies
Hibernate 6.5 est sorti https://in.relation.to/2024/04/25/orm-650/
- cache full pour les entit\xe9s et leur collections (le d\xe9faut est shallow)
- Java record pour les @IdClass
- Les filtres peuvent \xeatre auto activ\xe9s par d\xe9faut (vs \xe0 faire sur chaque session). Les filtres sont pas mal pour g\xe9rer par exemple des soft delete
- Keybased pagination pour \xe9viter les trous de r\xe9sultant en cas de modification d\u2019entit\xe9s en parall\xe8le de.une recherche pagin\xe9e. S.appuie sur une cl\xe9 unique et ordonn\xe9e genre ISBN
- Une tech preview de Jakarta Data
En parlant de Jakarta Data, deux articles sur le sujet https://in.relation.to/2024/04/01/jakarta-data-1/ https://in.relation.to/2024/04/18/jakarta-data-1/
- concept de repository pas li\xe9 \xe0 une entit\xe9 mais \xe0 une relation logique entre les recherches
- interagit via stateless session et est un bean CDI
- Code g\xe9n\xe9r\xe9 bien sur
- 4 op\xe9rateur crud et les requ\xeates save est up sert
- Type sage au sens ou le nom des m\xe9thodes n\u2019est pas la logique de recherche
- Annotation et nom des param\xe8tres et c\u2019est type safe via un annotation processor
- ou string dans @Query qui est type safe aussi via le processeur
- discute plus de type safety et pagination
Quarkus 3.10 avec quelques nouveaut\xe9s https://quarkus.io/blog/quarkus-3-10-0-released/
- flyway 10 arrive avec support natif
- Hibernate search supporte le standalone POJO mapper notamment pour elastic search (pas que ORM)
- Modification des propri\xe9t\xe9s
Quarkus.package
automatiquement remplac\xe9es par quarkus update
- et Quarkus 3.9 a fait son grand renommage r\xe9actif https://quarkus.io/blog/quarkus-3-9-1-released/
- Clarifier que les extensions r\xe9active n\u2019imposent pas des apis r\xe9actives et seulement leur c\u0153ur impl\xe9ment\xe9 en r\xe9actif ou offre optionellement des apis reacrive
- Les gens pensaient \xe0 tors que les r\xe9actives imposaient le mod\xe8le de programmation
- la encore quarkus update \xe0 la rescousse
Un article sur l\u2019api structured output pour Spring AI https://spring.io/blog/2024/05/09/spring-ai-structured-output
- un article descriptif sur quand cette api est utilis\xe9e
- Et les d\xe9tails de son usage
Comment passer une TimeZone dans spring boot et ce que cela impacte en terme de composants https://www.baeldung.com/spring-boot-set-default-timezone
- du basique mais toujours utile
- Task ou app
- Programmatiquement
- Sur certains lifecycles de Spring
Infrastructure
Un article et la vid\xe9o de Devoxx France sur la haute disponibilit\xe9 de Keycloak, comment c\u2019est impl\xe9ment\xe9 https://www.keycloak.org/2024/05/keycloak-at-devoxx-france-2024-recap
- l\u2019infra d\u2019identit\xe9 est une infra cl\xe9
- Donc g\xe9rer la haute disponibilit\xe9 est critique
- C\u2019est un article qui pointe sur une vid\xe9o de Devoxx France et la doc de keycloak sur comment tout cela est impl\xe9ment\xe9
Cloud
Comment se ruiner avec des buckets S3 https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1
- Amazon fait payer pour les requ\xeates non autoris\xe9es
- Il suffit de conna\xeetre le nom d\u2019un bucket pour faire payer son propri\xe9taire
- Amazon travaille pour fournir une solution / un fix.
- il est tomb\xe9 par hasard sur un nom de bucket utilis\xe9 \xab pour de faux \xbb par un outil open source populaire
- Bien rajouter un suffixe \xe0 ses buckets peut r\xe9duire le risque
- Mais pas l\u2019\xe9liminer
- un fix a \xe9t\xe9 livr\xe9 par amazon https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/
Data et Intelligence Artificielle
Guillaume r\xe9sume GoogleIO https://x.com/techcrunch/status/1790504691945898300?s=61&t=WImtt07yTQMhhoNPN6lYEw
- AI overview plus besoin d\u2019aller sur les sites
Google I/O 2024
- Google I/O 2024 r\xe9sum\xe9 en vid\xe9o de 10 minutes https://www.youtube.com/watch?v=WsEQjeZoEng et en 100 bullet points https://blog.google/technology/ai/google-io-2024-100-announcements/
- Message de Sundar Pichai https://blog.google/inside-google/message-ceo/google-io-2024-keynote-sundar-pichai/#creating-the-future
- Project Astra, un assistant universel, sur smartphone avec qui on peut avoir une conversation normale et \xe0 qui montrer avec la cam\xe9ra ce qui nous entoure https://www.theverge.com/2024/5/14/24156296/google-ai-gemini-astra-assistant-live-io
- Nouveau mod\xe8le Gemini 1.5 Flash, quasi aussi performant que le nouveau Gemini 1.5 Pro, mais beaucoup plus rapide (premiers tokens dans la seconde) et aussi moins cher https://blog.google/technology/developers/gemini-gemma-developer-updates-may-2024/
- Gemini 1.5 Pro est Gemini 1.5 Flash sont disponibles avec une fen\xeatre de contexte d\u2019un million de tokens, mais il y a une liste d\u2019attente pour tester une fen\xeatre de 2 millions de tokens https://aistudio.google.com/app/waitlist/97595554 https://cloud.google.com/earlyaccess/cloud-ai?e=48754805&hl=en
- PaliGemma un nouveau mod\xe8le de vision ouvert dans la famille Gemma (pour faire du Q&A du sous-titrage) et preview de Gemma 2, avec une version \xe0 27 milliards de param\xe8tres https://developers.googleblog.com/en/gemma-family-and-toolkit-expansion-io-2024/
- Gemini disponible dans les IDEs : Android Studio, IDX, Firebase, Colab, VSCode, Cloud and Intellj
- Gemini AI Studio enfin disponible en Europe
- Gemini supporte le parallel function calling et l\u2019extraction de frame dans les vid\xe9os
- Trillium, la 6\xe8me version des TPU (Tensor Processing Unit), les processeurs sp\xe9cifiques ML dans Google Cloud, 5 fois plus puissant que la g\xe9n\xe9ration pr\xe9c\xe9dente et 67% plus efficace en \xe9nergie https://cloud.google.com/blog/products/compute/introducing-trillium-6th-gen-tpus
- Le projet NotebookLM rajoute une fonctionnalit\xe9 de Audio Overview qui permet de discuter avec son corpus de documents avec une conversation vocale https://notebooklm.google.com/
- On peut appliquer le \u201cgrounding\u201d avec Google Search pour l\u2019API Gemini, pour que le mod\xe8le Gemini puisse chercher des informations compl\xe9mentaires dans Google Search https://cloud.google.com/blog/products/ai-machine-learning/vertex-ai-io-announcements
- Annonce de Imagen 3, la future version de du mod\xe8le de g\xe9n\xe9ration d\u2019images Imagen qui am\xe9liore la qualit\xe9 et poss\xe8de un tr\xe8s bon support du texte dans les images (objectif de disponibilit\xe9 \xe0 l\u2019\xe9t\xe9) https://blog.google/technology/ai/google-generative-ai-veo-imagen-3/#Imagen-3
- https://deepmind.google/technologies/imagen-3/
- DeepMind annonce Veo, un nouveau mod\xe8le de g\xe9n\xe9ration de vid\xe9o tr\xe8s convaincant qui peut faire des vid\xe9os en 1080p de 60s, mais en combinant plusieurs prompts successifs, il peut g\xe9n\xe9rer des vid\xe9os plus longues qui s\u2019enchainent https://deepmind.google/technologies/veo/
- VideoFX, ImageFX et MusicFX, des exp\xe9rimentations de Google AI int\xe9grant Imagen 3 et Veo (pas encore disponibles en Europe) https://blog.google/technology/ai/google-labs-video-fx-generative-ai/
- Gemini Advanced https://blog.google/products/gemini/google-gemini-update-may-2024/#context-window
- Ask Photos, on peut poser \xe0 Google Photos des questions plus complexes comme \u201cquelle est ma plaque d\u2019immatriculation\u201d et Photos devine que parmi toutes les photos de voitures lequelle est certainement la n\xf4tre et extrait le num\xe9ro de plaque https://blog.google/products/photos/ask-photos-google-io-2024/
- M\xeame dans Google Messages vous pourrez \xe9changer avec Gemini
- Google Search https://blog.google/products/search/generative-ai-google-search-may-2024/
- Rajout d\u2019un mod\xe8le Gemini sp\xe9cial search int\xe9gr\xe9 qui permet \xe0 Google Search de r\xe9pondre aux questions de la barre de recherche avec une raisonnement multi-\xe9tapes, en \xe9tant capable de faire de la planification, en mode multimodal (texte, image, vid\xe9o, audio)
- Planning de repas et de voyage, support\xe9 dans Gemini, va arriver aussi dans Search
- Gemini 1.5 Pro est disponible dans le panneau lat\xe9ral de Gmail, Docs, Sheets, Drive https://blog.google/products/workspace/google-gemini-workspace-may-2024-updates/
- SynthID va m\xeame fonctionner pour du texte https://deepmind.google/discover/blog/watermarking-ai-generated-text-and-video-with-synthid/
- Gemini Nano bient\xf4t disponible dans les prochaines version de Chrome, pour utiliser le LLM directement dans le navigateur
- Android
- Wear OS https://android-developers.googleblog.com/2024/05/whats-new-in-wear-os-io-24.html
- Travail sur l\u2019\xe9conomie d\u2019\xe9nergie pour faire durer les montres plus longtemps avant la prochaine recharge. Par exemple, 20% de consommation en moins lorsqu\u2019on court un marathon !
- Plus de type de donn\xe9es pour les activit\xe9s physiques
- Project IDX accessible sans liste d\u2019attente https://developers.googleblog.com/en/start-building-with-project-idx-today/
- Firebase annonce 3 nouveaux produits https://developers.googleblog.com/en/whats-new-in-firebase-io-24/
- Dart 3.4 avec support de Wasm comme target de compilation https://medium.com/dartlang/dart-3-4-bd8d23b4462a
OpenAI lance son nouveau mod\xe8le: gpt-4o http://openai.com/index/hello-gpt-4o/
https://claude.ai/ est disponible en europe
- Claude, le mod\xe8le est cr\xe9\xe9 par Anthropic:
- Claude est un assistant IA bas\xe9 sur un grand mod\xe8le de langage entra\xeen\xe9 selon des principes \xe9thiques stricts. Il accorde une grande importance \xe0 l\u2019honn\xeatet\xe9, l\u2019impartialit\xe9 et le respect de l\u2019\xeatre humain.
- Son raisonnement repose sur une compr\xe9hension profonde des concepts plut\xf4t que sur de simples associations statistiques. Il cherche activement \xe0 corriger les \xe9ventuels biais ou erreurs.
- Claude est polyvalent et peut s\u2019adapter \xe0 diff\xe9rents styles de communication et niveaux de complexit\xe9 selon le contexte. Il ma\xeetrise de nombreux domaines acad\xe9miques et scientifiques.
- Il est capable d\u2019introspection sur ses propres processus de pens\xe9e et ses limitations. La vie priv\xe9e et la confidentialit\xe9 sont des priorit\xe9s pour lui.
- Claude continue d\u2019apprendre et de s\u2019am\xe9liorer gr\xe2ce aux interactions avec les humains. Son but est d\u2019\xeatre un assistant fiable, \xe9thique et bienveillant.
- quelqu\u2019un sait comment ils font pour raisonner et pas juste LLM statistiquer? Comment ils prouvent cela ? C\u2019est du code \xe0 part?
Grok le mod\xe8le de X/Twitter/Musk est aussi dispo en Europe https://x.com/x/status/1790917272355172401?s=46&t=GLj1NFxZoCFCjw2oYpiJpw
- un truc unique c\u2019est qu\u2019il utilise les tweet comme reference sur ce qu\u2019il dit. Par exemple demande les meilleurs Java Champions
- et c\u2019est sur les tweet recents , probablement une sorte de RAG ou une sorte de fine tuning sur les derniers tweets, je ne sais pas
L\u2019algorithm des modeles de diffusion expliqu\xe9s https://x.com/emmanuelbernard/status/1787565568020619650
- deux articles, un general et lisible
- l\u2019autre plus abscon mais avec certains details interessants sur le downsizing
- \xe9tapes ajout de bruit \xe0 des images (learning) pour apr\xe8s appliquer le process oppos\xe9 le reverse diffusion process
- On pr\xe9dit le bruit \xe0 enlever, on l\u2019enl\xe8ve et on rep\xe8re le processus.
- Et tout cela est influenc\xe9 par le prompt.
Reindexation sans downtime des donn\xe9es de documentation de Quarkus, en quarkus bien s\xfbr https://quarkus.io/blog/search-indexing-rollover/
- utilise hibernate search
- Utilis\xe9 Elasticsearch / opensearch
- Article qui explique une des approches pour reindexer sans downtime via index alias
Outillage
Un article qui parle de l\u2019outil de build bld, peu connu, qui permet d\u2019\xe9crire ses builds simplement dans une classe Java https://sombriks.com/blog/0070-build-with-bld-and-why-it-matters/
IntelliJ 2024.1 est sorti https://blog.jetbrains.com/idea/2024/05/what-s-new-in-intellij-idea-ultimate-2024-1/
- compl\xe9tion de ligne enti\xe8re (deep learning)
- Assistant AI am\xe9lior\xe9
- Spring Boot support am\xe9lior\xe9 sur bean completion et g\xe9n\xe9ration de diagramme
- Support de dev containers simplifi\xe9
- Am\xe9lioration support quarkus avec notamment ic\xf4ne dev ui et config des tests
- Support OpenRewrite
- Server wiremock
- et plein d\u2019autres choses
En version beta public, Homebrew permet de v\xe9rifier la provenance des packages (bottles) https://blog.trailofbits.com/2024/05/14/a-peek-into-build-provenance-for-homebrew/
Mettez \xe0 jour git en version 2.45.1 pour fixer des failles de s\xe9curit\xe9 https://github.blog/2024-05-14-securing-git-addressing-5-new-vulnerabilities/
- CVE-2024-32002 (Critique, Windows & macOS) : Les repos Git avec des sous-modules peuvent tromper Git pour lui faire ex\xe9cuter un hook (\xe9l\xe9ment de script) \xe0 partir du r\xe9pertoire
.git/
pendant une op\xe9ration de clonage, permettant l\u2019ex\xe9cution de code \xe0 distance (Remote Code Execution). - CVE-2024-32004 (Important, machines multi-utilisateurs) : Un attaquant peut concevoir un repo local qui ex\xe9cute du code arbitraire lors du clonage.
- CVE-2024-32465 (Important, toutes les configurations) : Le clonage \xe0 partir de fichiers .zip contenant des repos Git peut contourner les protections, et potentiellement ex\xe9cuter des hooks malveillants.
- CVE-2024-32020 (Faible, machines multi-utilisateurs) : Les clones locaux sur le m\xeame disque peuvent permettre \xe0 des utilisateurs non approuv\xe9s de modifier des fichiers li\xe9s physiquement (hard link) dans la base de donn\xe9es des objets du repo clon\xe9.
- CVE-2024-32021 (Faible, machines multi-utilisateurs) : Le clonage d\u2019un repo local avec des liens symboliques (symlinks) peut entra\xeener la cr\xe9ation de liens physiques vers des fichiers arbitraires dans le r\xe9pertoire
objects/
.
Architecture
Visualisation des algorithmes de rate limitation https://smudge.ai/blog/ratelimit-algorithms
M\xe9thodologies
Le probl\xe8me de l\u2019impl\xe9mentation alternative https://pointersgonewild.com/2024/04/20/the-alternative-implementation-problem/
- Article par un d\xe9veloppeur qui a d\xe9velopp\xe9 des Just-in-Time compiler pour diff\xe9rents langages
- Remarqu\xe9 que d\xe9velopper une impl\xe9mentation alternative d\u2019un langage (par exemple) n\u2019a jamais vraiment rencontr\xe9 le succ\xe8s
- Les gens pr\xe9f\xe8rent l\u2019original \xe0 une alternative qui est d\xe9pendante de / a peine \xe0 suivre l\u2019impl\xe9mentation d\u2019origine
- Pour son cas, sur le JIT, il a travaill\xe9 sur un JIT int\xe9gr\xe9 directement dans CRuby (plut\xf4t que faire son impl\xe9mentation alternative comme TruffleRuby), et sont JIT est int\xe9gr\xe9 maintenant dedans directement
- Plus facile de rejoindre / s\u2019int\xe9grer au projet plut\xf4t que d\u2019\xeatre une alternative pour laquelle il faut convaincre les gens de l\u2019adopter
Le mode vigilant dans GitHub https://x.com/emmanuelbernard/status/1790026210619068435
Loi, soci\xe9t\xe9 et organisation
Une perspective sur Redis et les changements de license par un devrel AWS OpenSearch https://www.infoworld.com/article/3715247/the-end-of-vendor-backed-open-source.html
- les soci\xe9t\xe9s regardent l\u2019impact l\xe9gal des licenses source available pour elles m\xeame en usage interne
- \xc7a casse l\u2019\xe9cosyst\xe8me de sp\xe9cialisations au dessus du produit (logz.io au dessus d\u2019elastic d\xe9marr\xe9 avant le changement de license)
- Redis top 10 contribs \xe0 AWS et Alibaba er Huawei et 3 redis. Donc c\u2019est pas redis qui contribue tout.
- La plupart des ing\xe9nieurs de redislab ne bossent pas sur redis OSS, mais sur cloud et entreprise
- Peut \xeatre la fin des single vendor oss
- Il n\u2019y a que les cloud providers qui peuvent fournir du OSS sans affecter leur structure du co\xfbt
- C\u2019est un ex AWS en fait. Maintenant ind\xe9pendant
Microsoft va investir 4 milliards en France (datacenters et IA) https://news.microsoft.com/fr-fr/2024/05/13/microsoft-announces-the-largest-investment-to-date-in-france-to-accelerate-the-adoption-of-ai-skilling-and-innovation/
Outils de l\u2019\xe9pisode
ASDF un gestionnaire de version multi-runtime https://asdf-vm.com
- Arnaud l\u2019avait recommand\xe9 mais je restais sur rvm
- apres des deboires, je suis pass\xe9 a asdf, qui fonctionne
- mais pour le jdk j\u2019utilise sdkman
- pour les javaistes ca parrait plus pouss\xe9
Conf\xe9rences
Les videos de Devoxx France sont en ligne https://www.youtube.com/playlist?list=PLTbQvx84FrARars1vXos7mlPdvYJmsEoK
La liste des conf\xe9rences provenant de Developers Conferences Agenda/List par Aur\xe9lie Vache et contributeurs :
Nous contacter
Pour r\xe9agir \xe0 cet \xe9pisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs
Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les \xe9pisodes et toutes les infos sur https://lescastcodeurs.com/