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…).

Enregistré le 20 octobre 2023

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

News

Langages

Gérer facilement de multiples versions de Java grâce à SDKMan! https://foojay.io/today/easily-manage-different-java-versions-on-your-machine-with-sdkman/

  • SDKMan! supporte Java, mais aussi GraalVM, JBang, Quarkus, Micronaut… (les CLIs).
  • La CLI UI est toujours un peu chelou, donc cet article est utile pour un rappel.

Tous les changements de Java 8 à Java 21 https://advancedweb.hu/a-categorized-list-of-all-java-and-jvm-features-since-jdk-8-to-21/

  • 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.

Eclipse Temurin ne va pas sortir son Java 21 tout de suite https://adoptium.net/en-GB/blog/2023/09/temurin21-delay/

  • 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 à 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 Models 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 non pas le prochain mot, mais l’ensemble des prochains mots.
  • 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.

The Absolute Minimum Every Software Developer Must Know About Unicode in 2023 https://tonsky.me/blog/unicode/

  • 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 normalisations 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 million de caractères disponibles, dont 15% définis et 11% pour usage privé : il reste de la place. Et non les emojis ne prennent pas beaucoup de place.
  • Par exemple Apple utilise les usages privés 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 à 4 bytes (compatible avec ASCII) ; il a aussi un peu de détection d’erreurs (prefix des bytes différents).
  • Optimisé pour le latin et les textes techniques genre HTML.
  • Problème principal : on ne peut pas déterminer la taille en comptant 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 en java, 17 en rust ou 1 en swift. Ça dépend de l’encodage de la chaine (UTF-?).
  • ““I know, I’ll use a library to do strlen()!” — nobody, ever.”
  • En java, utiliser ICU.
  • Attention java.text.BreakIterator supporte une vieille version d’Unicode, donc ce n’est pas bon.
  • Les règles de graphème changent à chaque version majeure d’Unicode (tous les ans).
  • Certains caractères comme Å ont plusieurs représentations d’encodage, donc il y a 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 la LOCALE (c’est la life).
  • Et ça continue dans l’article…

JBang permet d’appeler Java depuis Python via un PyPI https://jbang.dev/learn/python-with-jbang/

  • C’est particulièrement intéressant pour appeler Java depuis son Jupyter notebook.
  • Ça fait un appel à un autre process (mais installe JBang et Java au besoin).

Librairies

Quarkus 3.4 est sorti https://quarkus.io/blog/quarkus-3-4-1-released/

  • Un CVE donc mettez a jour vos Quarkus.
  • Support de Redis 7.2.
  • Plus de granularité sur la désactivation de Flyway globalement ou par data source. Depuis l’activation transparente et automatique en 3.3.
  • quarkus update est l’approche recommandée pour mettre à jour.

Comment tester si un thread virtuel “pin” https://quarkus.io/blog/virtual-threads-3/

  • Exemple avec quarkus.
  • Comment générer la stacktrace.
  • Et un utilitaire JUnit qui fait échouer le test quand le thread pin.
  • Une série d’articles de Clement sur les threads virtuels et comment les utiliser dans quarkus https://quarkus.io/blog/virtual-thread-1/.

À la découverte de LangChain4J, l’orchestration pour l’IA générative en Java https://glaforge.dev/posts/2023/09/25/discovering-langchain4j/

  • 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.
  • Vidéo enregistrée à Devoxx sur ce thème : https://www.youtube.com/watch?v=ioTPfL9cd9k.

Infrastructure

OpenTF devient OpenTofu https://www.linuxfoundation.org/press/announcing-opentofu

Dans les Dockerfiles, on peut utiliser la notation “heredocs” : <<EOF, des commandes, puis EOF pour indiquer une suite de commandes à exécuter https://www.docker.com/blog/introduction-to-heredocs-in-dockerfiles/

  • C’est comme faire un seul RUN avec des commandes séparées par des &&, mais en plus sympa parce que ça ressemble à un script Bash classique.
  • Par contre, c’est spécifique Docker et ça n’est pas portable sur Podman ou autre.

Docker annonce un nouveau protocole pour signer ses images OpenPubkey https://www.linuxfoundation.org/press/announcing-openpubkey-project

  • Sigstore répond : https://blog.sigstore.dev/openpubkey-and-sigstore/.
  • OpenPubkey s’appuie sur OIDC.
  • C’est un repo GitHub pour l’instant.
  • Pas de tier de confiance en dehors du OIDC provider.
  • OIDC lie une identité à une clé de chiffrement via une extension de l’ID token.
  • OIDC devient une preuve de possession.
  • Purement client side via la signature de l’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ée.
  • 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ée et ce n’est pas expliqué dans le flow OpenPubkey.
  • La complexité passe de server side à 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 système devra le faire).
  • L’ID token typiquement a plus d’infos qui vont leaker en tant que certificat du truc signé (privacy).

Cloud

Oracle Cloud rajoute GraalOS https://blogs.oracle.com/java/post/introducing-graalos

  • Plateforme serverless sans container.
  • Application native.
  • En fait des applis compilées avec GraalVM native image.

Web

Comment créer le plus petit conteneur qui sert du contenu statique https://lipanski.com/posts/smallest-docker-image-static-website

  • En utilisant les images Busybox.
  • On peut descendre à environ 150 Ko.
  • À voir la scalabilité.
  • Et les CVEs.

The state of WebAssembly in 2023 https://blog.scottlogic.com/2023/10/18/the-state-of-webassembly-2023.html

  • 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é.

Data & IA

AWS investit 4 milliards dans Anthropic.ai et devient actionnaire minoritaire https://twitter.com/didiergirard/status/1706226172428701896?s=61&t=cvEVELchNh1NmF0qxg2GgA

  • 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 et 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.
  • L’annonce : https://www.anthropic.com/index/anthropic-amazon.
  • Merci Didier Girard pour ce résumé.

Article d’opinion : les bases de données vectorielles ne sont pas une catégorie de base de donnée séparée https://nextword.substack.com/p/vector-database-is-not-a-separate

  • On a vu l’émergence de nouvelles bases de données de type vectoriel ces deux dernières années : Pinecone, Milvus, Weaviate, Qdrant…
  • 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.

Chat GPT: voix et image https://openai.com/blog/chatgpt-can-now-see-hear-and-speak

  • 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.

L’IA, c’est pas rentable https://www.tomshardware.com/news/microsoft-lost-money-on-ai

  • Copilot dépense 20$ par utilisateur qui ramène 10$.
  • Il va donc y avoir de la rationalisation après l’acquisition rush d’utilisateurs.
  • En augmentant les prix.
  • En mettant des limites plus restrictives.
  • En utilisant des modèles plus simples et plus légers.
  • Peut-être avec du hardware plus optimisé en coût.
  • C’est intéressant que l’IA est déjà trop puissante pour son coût et pas encore assez pour être suffisante. Loi de Moore ?v
  • MS dit que ce chiffre est faux, mais ne donne pas le vrai chiffre.

Outillage

Amazon acquiert Fig https://techcrunch.com/2023/08/29/amazon-fig-command-line-terminal-generative-ai/

  • On en parlait récemment.
  • C’est un terminal boosté à l’IA.

Introduction de TestContainer Desktop https://www.infoq.com/news/2023/09/testcontainers-desktop/

  • Vient de l’appli proprio TestContainer Cloud Desktop.
  • Permet de mettre les ports fixes (plus facile à debugger).
  • Le gel des containers pour laisser le container tourner pour l’inspection
  • Supporte les moteurs de containers alternatifs à Docker (dont Podman et d’autres que je ne connaissais pas).

Nouvelle version 1.7 de jq, l’outil en ligne de commande pour examiner/modifier vos documents JSON https://github.com/jqlang/jq/releases

  • Utilisation des nombres décimaux pour ne pas perdre de précision.
  • Une fonction pick(stream) pour faire des projections et ne garder que les champs qui nous intéressent.
  • Une fonction debug() pour loguer des messages sur stderr.
  • Une fonction abs() pour calculer la valeur absolue.
  • Et plein d’autres petits raffinements et correctifs de bugs.
  • La version d’avant datait de novembre 2018.

Pratiques de Dogfooding : utiliser tes propres outils comme GitHub utilise GitHub actions pour son propre système CI https://www.infoq.com/news/2023/10/running-GitHub-using-actions/

  • Avoir des runners plus larges.
  • Donner l’accès à des resources privées au runner via une gateway qui reçoit un token OIDC specific au runner.
  • Workflow réutilisables.
  • Sortie de workflows réutilisables pour optimiser si le git id est le même qu’un run ancien.

Sondage de la communauté TestContainer https://www.atomicjar.com/2023/09/state-of-local-development-and-testing-2023/

  • TestContainer pour plus de 10 languages, pas juste Java.
  • RDBMS puis message brokers et les bases nosql sont la majorité des usages.
  • Mais pas que (serveur web, émulateur de cloud, microservices internes).
  • 40% des utilisateurs utilisent autre chose que Docker Desktop (docker engine, podman, rancher etc).
  • TestContainer au moment du dev et pas que pour les tests.

Architecture

Vous êtes plutôt logging ou plutôt tracing ? https://andydote.co.uk/2023/09/19/tracing-is-better/

  • L’article essaie de démontrer que le tracing, c’est mieux que le logging.
  • L’imbrication des traces permet de mieux voir la corrélation que des logs.
  • Les traces donnent des informations de durées, pas que des timestamp.
  • On peut rajouter des attributs à ses traces, ce qui rend plus facile le requêtage, plutôt que de faire des greps sur des messages de log.

Méthodologies

On a construit un produit top et ça a échoué Earthly.dev raconte https://earthly.dev/blog/shutting-down-earthly-ci/

  • Outil de CI/CD qui évite de répéter les tâches…
  • Comme startup, tu ne releases pas un produit mature et complet en fonctionnalités.
  • Mais peut-être 10x meilleur sur une chose spécifique qui peut faire oublier les manques à certains.
  • Quand tu captures ces premiers, tu investis et étends, et tu répètes.
  • Si au début ce différenciateur 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 étapes indépendantes, des produits plus focalisés.
  • Et le premier produit “gratuit” ne cannibalisait pas les seconds produits, car ils adressaient différents problèmes (donc pas de risque sur le business model).
  • Le premier produit construit par une personne a été beaucoup adopté.
  • Le deuxième (remote workers) a aussi été adopté avec des gens qui faisaient en DIY, et quand ils ont fait une offre managée, les gens sont venus.
  • Les CI traditionnelles lançaient le job et le reste était délégué à Earthly et Earthly Satellites (le cœur du build).
  • Il ne restait plus qu’à allumer le troisième étage Earthly CI, mais c’est parti en cacahuete.
  • La population intéressée n’était pas des fans qui avaient déjà fait le job du produit, ils demandaient en quoi la CI était différente, le coût de migration et ils n’ont jamais pu gagner.
  • Au lieu d’une grass root install, il y avait un long mur de migration à passer.
  • La clé, c’est que vendre aux devs avec un GTM direct ne marche pas, ils doivent essayer et adopter par eux-mêmes.
  • Les développeurs vont acheter un outil de dev, mais tu ne peux pas leur vendre.

horcrux https://github.com/jesseduffield/horcrux

  • Permet de chiffrer un fichier en plusieurs morceaux, et il faut avoir un certain nombre de fragments pour rassembler le fichier entier.
  • Ne nécessite aucun mot de passe.

Sécurité

Des pseudos chercheurs en sécurité utilisent Bard pour reporter un CVE pour le projet cURL https://hackerone.com/reports/2199174

  • Heureusement, Daniel Steinberg (le créateur de cURL) et les mainteneurs du projet ont rapidement détecté la supercherie.
  • Les LLMs sont super créatifs : ils ont déjà vu dans leur corpus d’entrainement des pages de CVE, et sont donc capables d’en imaginer aussi !
  • Mais imaginez le temps perdu par les mainteneurs de projet OSS s’ils doivent du coup perdre leur temps à vérifier de telles inepties ?
  • Au nez et à la Bard de l’IA.

Loi, société et organisation

Cisco achète Splunk pour 28 milliards https://techcrunch.com/2023/09/21/cisco-to-acquire-splunk-in-28b-mega-deal/

  • Bouge cisco plus dans le software.
  • “synergétique”.
  • Objectif : un géant de l’observabilité et la sécurité.
  • Avec de l’IA parce que c’est comme ça qu’on justifie ces achats.
  • Cet achat doit encore être validé par les autorités de concurrence.
  • Quelque part en 2024.

Les fondations comme Eclipse ont peur du Cyber Résilience Act Européen tel que présenté jusqu’à présent https://newsroom.eclipse.org/news/announcements/cra-should-support-open-practices-open-source-and-development-european-open

  • Ils demandent une clarification sur les contraintes réglementaires.
  • Notamment d’exclure les fondations / associations et laisser le poids sur les sociétés qui fourniraient les projets 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.
  • Autre article de la linux foundation : https://www.linuxfoundation.org/blog/understanding-the-cyber-resilience-act.
  • Fourniture de matchs, auditing, fournir des mises à jour.
  • Bouge la responsabilité de l’utilisateur vers le développeur du logiciel.
  • Un individu qui ne reçoit pas de contribution ni ne fait de consulting ⇒ exclu.
  • Fondations et sociétés commerciales ⇒ inclues.
  • Défini des classes de logiciels de non critique à classe 1 et 2.
  • Doit faire un risk assessment avant de livrer (pas de bug de sécurité, secure par défaut, security update).
  • De la doc sur le process d’évaluation des risques et un SBOM notamment.
  • Notifier d’une vulnérabilité en moins de 24h.
  • Il y a une campagne : #FixTheCRA.

Des protestations contre l’ouverture des modèles d’IA de Meta https://spectrum.ieee.org/meta-ai

  • Ouvrir les modèles et leurs poids permet aux acteurs de bypasser les restrictions (biais etc).
  • Donc des gens de Meta protestent contre la politique open source de Meta dans ce domaine.
  • L’argument, c’est qu’un modèle derrière une API peut être éteint.
  • Les partisans de l’avis contraire pointent que contourner les restrictions de ChatGPT a été trivial jusqu’à présent.
  • Et que l’obscurité amène à un déficit de transparence, de connaissance du public.
  • Va affecter les chercheurs indépendants.
  • Cela dit, ce n’est pas de l’open source pur, car les sources et comment le modèle est entrainé est peu publié.
  • L’OSI travaille à une définition d’Open Source AI.

Un site pour mettre une pause à l’IA https://pauseai.info/

  • NOUS RISQUONS DE PERDRE LE CONTRÔLE
  • NOUS RISQUONS L’EXTINCTION DE L’HUMANITÉ
  • NOUS AVONS BESOIN D’UNE PAUSE
  • NOUS DEVONS AGIR IMMÉDIATEMENT
  • Il y a un agenda des manifestations à travers le monde (Londres, Bruxelles, SFO… mais où est Paris ?).
  • Twitter/Discord/Facebook/TikTok/LinkedIn.
  • Alors qui va gagner la course à l’extinction de l’humanité ? La guerre, le réchauffement climatique ou l’IA ?
  • Sarah Connor !!!

Outils de l’épisode

Un QWERTY adapté pour les lettres à accent https://altgr-weur.eu/ (via Thomas Recloux)

Conférences

Toutes les vidéos de Devoxx Belgique sont disponibles sur https://www.youtube.com/@DevoxxForever.

Hacktoberfest, édition 10 https://hacktoberfest.com/.

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

Nous contacter

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

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