LCC 312 - Dans la ferme de Mathurin IA IA IO !

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

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/