LCC 301 - Minoritaire ou majoritaire, là est la question!


Episode Artwork
1.0x
0% played 00:00 00:00
Oct 23 2023 105 mins   266

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 des versions multiples de Java grâce à SDKman https://foojay.io/today/easily-manage-different-java-versions-on-your-machine-with-sdkman/

  • sdkman support java mais aussi graalVM, jbang, Quarkus, Micronaut etc (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 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”

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 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.”
  • En java utiliser ICU https://github.com/unicode-org/icu
  • 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)
  • 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 interessant pour appeler Java de son Jupyter notebook
  • ça fait un appel a 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 desactivation 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 stackstrace
  • et un utilitaire JUnit qui fait échouer le test quand le thread pin
  • une série d’articles de Clements 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” < 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 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 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)

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 150kb
  • a 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 milliars 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 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, 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

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$
  • donc il va 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 ?
  • 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 recemment
  • 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 Descktop donnée
  • permet de mettre les ports fixes (plus facile a debuger)
  • le gel des container pour laisser le container tourner pour l’inspection
  • supporte les moteurs de containers alternatifs a Docker (dont podman et d’autres que je ne connaissais pas)

Nouvelle version 1.7 de jq, l’outile de 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 logguer des message 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’acces a des resources privées au runner via une gateway qui reçoit un token OIDC specific au runner
  • workflow réutilisables
  • sortie de workflow réutilisable pour optimiser si le git id est le meme 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 majorite des usages
  • mais pas que (serveur web, emulateur de cloud, microservices internes)
  • 40% des utilisateurs utilisent autres 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 requettage, plutôt que de faire des greps sur des messages de log

Méthodologies

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

  • 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

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
  • “synergetique”
  • Objectif, un geant de l’obnservabilité et la sécurité
  • avec de l’IA parce que c’est comme ca qu’on justifie ces achats
  • encore a valider cet achat par les autorités concurencielles
  • 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 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
  • autre article de la linux foundation https://www.linuxfoundation.org/blog/understanding-the-cyber-resilience-act
  • fourniture de matchs, auditing, fournir des mises a jour
  • bouge 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 a 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’ici 24h d’une vulnerabilité
  • 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 permets 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 modele derrière une API peut êtres éteint
  • les partisans de l’avis contraire pointent que contourner les restrictions de ChatGPT ont été triviales jusqu’à présent
  • et que l’obscurité amène a un déficit de transparence, de connaissance du public.
  • va affecté les chercheurs indépendants
  • cela dit ce n’est pas open source pur car les sources et comment le modele est entrainé est peu publié
  • OSI travaille a une définition d’OpenSource 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 a 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 querty adapté pour les lettres à accent https://altgr-weur.eu/ (via Thomas Recloux)

Conférences

Toutes les vidéos de Devoxx Belgique sont disponibles 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/