LCC 304 - Dark punk
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.
Enregistré le 15 décembre 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-304.mp3
News
Aide Les Cast Codeurs et remplis un petit formulaire pour nous guider l’année prochaine https://lescastcodeurs.com/sondage
Langages
Avec JEP 461, arrivée dans en preview en Java 22 de la notion de gatherer pour les streams https://groovy.apache.org/blog/groovy-gatherers
- Dans cet article de Paul King, de l’équipe Groovy, il montre et contraste avec 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.
- Les gatherers sont des operations intermédiaires spécifiques qui prennent un état et le prochain élément pour décider quoi faire, et même changer le stream d’éléments suivants (via la fonction
integrate
). - Certains peuvent permettre de combiner les résultats intermédiaires (pour paralléliser).
- Exemples : fenêtres de taille fixe, fenêtres 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 et 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 sépare les bugs des erreurs attendues (les bugs doivent arrêter le process).
- Il raconte l’histoire des unchecked exceptions et de leurs problèmes, des checked exceptions, et pourquoi les développeurs Java les détestent (selon lui).
- Long article, mais intéressant dans ses retours.
- Mais long, je ne suis pas allé au bout 😊.
Après la disparition de Nashorn dans le JDK, on peut se tourner vers le projet Javet https://www.caoccao.com/Javet/index.html
- Javet permet d’intégrer JavaScript avec le moteur V8.
- Mais aussi carrément Node.js.
- C’est super comme capacité, car on a les deux meilleurs moteurs.
- Par contre, le support hors x86 est plus limité (genre ARM sous windows c’est non).
Librairies
Une partie de l’équipe Spring se fait lourder après le rachat effectif de Broadcom https://x.com/odrotbohm/status/1729231722498425092?s=20
- Peu d’info en vrai, à part ce tweet.
- Mais l’acquisition Broadcom n’a pas l’air de se faire dans le monde des Bisounours.
Marc Wrobel annonce la sortie de jbanking 4.2.0 https://www.marcwrobel.fr/sortie-de-jbanking-4-2-0
- Support de Java 21.
- Possibilité de générer aléatoirement des BIC.
- Amélioration de la génération aléatoire d’IBAN.
- jbanking est une bibliothèque pour manipuler des structures typiques des banques, comme les IBAN, les BIC…
Hibernate Search 7 est sorti https://in.relation.to/2023/12/05/hibernate-search-7-0-0-Final/
- Support ElasticSearch 8.10-11 et openSearch 2.10-11.
- Rebasé sur Lucene 9.8.
- Support sur Amazon OpenSearch Serverless (experimental).
- Attention, sous-ensemble de fonctionnalités sur Serverless, c’est un API-first search cluster vendu à la Lambda.
- En lien aussi sur la version 7.1.Alpha1.
Hibernate ORM 6.4 est sorti https://in.relation.to/2023/11/23/orm-640-final/
- Support pour SoftDelete (colonne marquant la suppression).
- Support pour les operations vectorielles (support PostgreSQL initialement).
- Les fonctions vectorielles sont particulièrement utilisées par l’IA/ML.
- Événements spécifiques JFR.
Intégration de citrus et Quarkus pour les tests d’intégrations de pleins de protocoles et formats de message https://quarkus.io/blog/testing-quarkus-with-citrus/
- Permet de tester les entrées / sorties attendues de systèmes de messages (HTTP, Kafka, serveur mail…).
- Top pour tester les applications Event-driven.
- Pas de rapport, mais Quarkus 3.7 ciblera Java 17 (~8% des gens utilisaient Java 11 dans les builds qui ont activé les notifications).
Hibernate Search 7.1 (dev 7.1.0.Alpha1) avec la dernière version de Lucene (9.8), Infinispan rajoute le support pour la recherche vectorielle.
- https://hibernate.org/search/releases/7.1/.
- https://infinispan.org/blog/2023/12/13/infinispan-vector-search.
- Hibernate Search permet maintenant la recherche vectorielle.
- La dernière version est intégrée dans Infinispan 15 (dev).
- La recherche vectorielle et le stockage de vecteurs permettent de convertir Infinispan en Embedding Store (LangChain).
Cloud
Comment choisir sa région cloud https://blog.scottlogic.com/2023/11/23/conscientious-cloud-pick-your-cloud-region-deliberately.html
- Pas si simple.
- Critères :
- le coût,
- la sécurité légale de vos données,
- la consommation carbone de la région choisie (la France est top, la Pologne moins),
- la latence vs où sont vos clients,
- les services supportés.
Web
Vers une standardisation des Webhooks ? https://www.standardwebhooks.com/
- Des gens de Zapier, Twilio, Ngrok, Kong, Supabase et autres, se rejoignent pour essayer de standardiser l’approche des Webhooks.
- La spec est open source (Apache) sur Github.
- Les objectifs sont la sécurité, la fiabilité, l’interopérabilité, la simplicité et la compatibilité (ascendante / descendante).
- Sans la spec, chaque webhook est different dans son comportement et donc les clients doivent s’adapter dans la sémantique, les erreurs…
- La (meta-) structure de la payload, la taille, la sécurisation via signature (p. ex. HMAC), les erreurs (via des erreurs HTTP)…
Data et Intelligence Artificielle
Google annonce Gemini, son nouveau Large Language Model https://blog.google/technology/ai/google-gemini-ai/
- 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 disponibles : 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.
- Android va rajouter aussi des librairies AICore pour utiliser Gemini Nano dans les téléphones Pixel (https://android-developers.googleblog.com/2023/12/a-new-foundation-for-ai-on-android.html).
- Gemini Pro va être disponible dans Bard (en anglais et dans 170 pays, mais l’Europe va devoir attendre un petit peu pour que ce soit disponible).
- Gemini Ultra devrait aussi rejoindre Bard, dans une version étendue (https://blog.google/products/bard/google-bard-try-gemini-ai/).
- Gemini va être intégré progressivement dans plein de produits Google.
- DeepMind parlant de Gemini : https://deepmind.google/technologies/gemini/#introduction.
- Un rapport de 60 pages sur Gemini : https://storage.googleapis.com/deepmind-media/gemini/gemini_1_report.pdf.
- Gemini a permis aussi de pouvoir développer une nouvelle version du modèle AlphaCode qui excelle dans les compétitions de coding : https://storage.googleapis.com/deepmind-media/AlphaCode2/AlphaCode2_Tech_Report.pdf.
- Liste de petites vidéos sur YouTube avec des interviews et démonstrations des capacités de Gemini : https://www.youtube.com/playlist?list=PL590L5WQmH8cSyqzo1PwQVUrZYgLcGZcG.
- Malheureusement certaines des annonces sont un peu fausses, ce qui a amené un discrédit (non du) sur Gemini.
- Par exemple la vidéo “aspirationnelle” était vendue comme du réel, mais ce n’était pas le cas. Et ultra n’est pas encore disponible.
- Aussi la comparaison de ChatGPT sur la page (initialement au moins) comparait des choux et des carottes, même si le papier de recherche était correct.
Avec la sortie de Gemini, Guillaume a écrit sur comment appeler Gemini en Java https://glaforge.dev/posts/2023/12/13/get-started-with-gemini-in-java/
- Gemini est multimodèle, donc on peut passer aussi bien du texte que des images, ou même de la vidéo.
- Il y a un SDK en Java pour interagir avec l’API de Gemini.
Facebook, Purple Llama https://ai.meta.com/blog/purple-llama-open-trust-safety-generative-ai/
- Opensource https://ai.meta.com/llama/.
- Dans l’optique des modèles GenAI ouverts, Facebook fournit des outils pour faire des IA responsables (mais pas coupables 😉).
- Notamment des benchmarks pour évaluer la sureté et un classifier de sureté, par exemple pour ne pas générer 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 IA ouverte et collaborative entre académique et industriels. Sont notamment absent Google, OpenAI (pas ouvert) et Microsoft.
- Juste une annonce pour l’instant, mais on va voir ce que ces acteurs de l’AI Alliance feront de concret.
- Il y a aussi un Responsible Use Guide (pas lu).
Apple aussi se met aux librairies de Machine Learning https://ml-explore.github.io/mlx/build/html/index.html
- 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’autres (https://github.com/ml-explore/mlx-examples).
- Non seulement les Apple Silicon, mais aussi la mémoire unifiée CPU/GPU qui est une des raisons clés de la rapidité des Macs.
Faire tourner Java dans un notebook Jupyter https://www.javaadvent.com/2023/12/jupyter-notebooks-and-java.html
- Max Andersen explore l’utilisation de Java dans les notebooks Jupyter, au lieu du classique Python.
- Il y a des kernels Java selon vos besoins.
- Mais il faut les installer dans la distro jupyter qu’on utilise.
- Et c’est la que jbang, installable via pip, vient à la rescousse.
- Il installe automatiquement ces kernels en quelques lignes.
Outillage
Sfeir liste des jeux orientés développeurs https://www.sfeir.dev/tendances/notre-selection-de-jeux-de-programmation/
- Parfait pour Noël.
- Mais c’est pour ceux qui veulent continuer à challenger leur cerveau après le boulot.
- Jeu de logique, jeu de puzzle avec le code comme forme, jeu autour du machine learning, jeu de programmation assembleur.
Les calendriers de l’Avent sont populaires pour les développeurs ! En particulier avec Advent of Code https://adventofcode.com/
- Mais il y a aussi l’Advent of Java.
- Ou un calendrier pour apprendre les bases de SVG.
- Le calendrier HTML “hell” 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.
- Pour les développeurs TypeScript, il y a aussi un calendrier de l’Avent pour vous !
Un super thread de Clara Dealberto sur le thème de la “dataviz” (data visualization) https://twitter.com/claradealberto/status/1729447130228457514
- Beaucoup d’outil librement accéssibles 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.
- Notamment celui du Financial Times qui tient dans une page de PDF.
- Bref c’est cool, mais c’est long à lire.
Une petite liste d’outils sympas
jc
pour convertir la sortie de commandes unix en JSON (https://github.com/kellyjonbrazil/jc),- AltTab pour macOS, pour avoir le même comportement de basculement de fenêtre que sous Windows (https://alt-tab-macos.netlify.app/),
gron
pour rendre le JSON grep-able, en transformant chaque valeur en ligne ressemblant à du JSONPath (https://github.com/tomnomnom/gron),- gron en fait montre des lignes avec des assignments genre
jsonpath = value
, et tu peux ungroner apres pour revenir à du JSON.
- gron en fait montre des lignes avec des assignments genre
- Marker, en Python, pour transformer des PDF en beau Markdown (https://github.com/VikParuchuri/marker),
- Marker utilise du machine learning, mais il hallucine moins que nougat (nous voilà rassuré).
- n8n un outil de workflow open source https://n8n.io/.
Docker acquiert Testcontainers https://techcrunch.com/2023/12/11/docker-acquires-atomicjar-a-testing-startup-that-raised-25m-in-january/
- Annonce par AtomicJar : https://www.atomicjar.com/2023/12/atomicjar-is-now-part-of-docker/.
- Annonce par Docker : https://www.docker.com/blog/docker-whale-comes-atomicjar-maker-of-testcontainers/.
Architecture
Comment implémenter la reconnaissance de chansons, comme Shazam https://www.cameronmacleod.com/blog/how-does-shazam-work
- Il faut d’abord passer en mode fréquence avec des transformées de Fourrier pour obtenir des spectrogrammes.
- Puis créer une sorte d’empreinte qui rassemble des pics de fréquences notables à divers endroits de la chanson.
- Puis associer ces pics pour retrouver un enchainement de tels pics de fréquence dans le temps.
- L’auteur a partagé son implémentation sur Github : https://github.com/notexactlyawe/abracadabra/blob/e0eb59a944d7c9999ff8a4bc53f5cfdeb07b39aa/abracadabra/recognise.py#L80.
- Il y avait également une très bonne présentation sur ce thème par Moustapha Agack à DevFest Toulouse : https://www.youtube.com/watch?v=2i4nstFJRXU.
- Les pics associés sont des hashs qui peuvent être comparés, et le plus de hash veut dire que les chansons sont plus similaires.
Méthodologies
Un mémo de chez ThoughtWorks à propos du coding assisté par IA https://martinfowler.com/articles/exploring-gen-ai.html#memo-08
- 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…
- Notamment, faire générer les tests par l’IA dans la 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écurité, vérifier (ceinture et bretelle).
- Est-ce le framework de la semaine dernière ? L’info ne sera pas dans le LLM (sans RAG).
Quelles capacités sont nécessaires pour déployer un projet AI/ML https://blog.scottlogic.com/2023/11/22/capabilities-to-deploy-ai-in-your-organisation.html
- C’est le MLOps et il y a quelques modèles end to end (Google, IBM).
- Mais vu la diversité des organisations, il est difficile d’embrasser ces versions complètes.
- MLOps est un métier, data science est un métier, donc intégrer ces compètences.
- Sachez gérer votre catalogue de données.
- Construire un process pour tester vos modèles en continu.
- La notion de culture de la recherche et sa gestion (comme un portefeuille financier, accepter d’arrêter des expèriences etc).
- La culture de la recherche est peu présente en ingénierie, qui est plus de construire des choses qui fonctionnent.
- C’est un monde pré-LLM.
Vous connaissez les 10 dark patterns de l’UX ? Pour vous inciter à cliquer ici ou là, pour vous faire rester sur le site, et plus encore https://dodonut.com/blog/10-dark-patterns-in-ux-design/
- Parmi les dark patterns couverts
- Confirmshaming,
- Fake Urgency and the Fear of Missing Out,
- Nagging,
- Sneaking,
- Disguised Ads,
- Intentional Misdirection,
- The Roach Motel Pattern,
- Preselection,
- Friend Spam,
- Negative Option Billing or Forced Continuity.
- 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 spécifiquement.
Comment choisir de belles couleurs pour la visualisation de données ? https://blog.datawrapper.de/beautifulcolors/
- Plutôt que de penser en RGB, il vaut mieux se positionner dans le mode Hue Saturation Brightness.
- Plein d’exemples montrant comment améliorer certains choix de couleurs.
- Il vaut mieux éviter les couleurs trop pures ou les couleurs trop brillantes et saturées.
- Avoir un bon contraste.
- Penser aussi aux daltoniens !
- J’ai personnellement eu toujours du mal avec saturation vs brightness.
- Faire que les couleurs en noir et blanc soient séparées avant de le remettre (en changeant la brightness de chaque couleur), ça aide les daltoniens.
- Éviter les couleurs aux 4 coins, mais plutôt des couleurs complémentaires (proches).
- Rouge, orange et jaune (non saturé) et variations de bleu sont pas mal.
- Les couleurs saturées sont agressives et stressent les gens.
Pourquoi vous devriez devenir Engineering Manager ? https://charity.wtf/2023/12/15/why-should-you-or-anyone-become-an-engineering-manager/
- 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 managers 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.
Sécurité
LogoFAIL une faille du bootloader de beaucoup de machines https://arstechnica.com/security/2023/12/just-about-every-windows-and-linux-device-vulnerable-to-new-logofail-firmware-attack/
- En gros en changeant les images qu’on voit au boot.
- Permet d’exécuter du code arbitraire au tout début de la sécurisation de l’UEFI (le boot le plus utilisé).
- Donc c’est game over parce que ça démarre avant l’OS.
- Ce n’est pas une exploitation à distance, il faut être sur la machine avec des droits assez deja élevés, mais ça peut être la fin de la chaine d’attaque.
- Et, comme d’habitude, un interpréteur d’images est la cause de ces vulnérabilités.
Conférences
L’IA au secours de conférences tech : rajoute des profils tech femme comme speaker au programme pour passer le test diversité online via des profils fake. https://twitter.com/GergelyOrosz/status/1728177708608450705 https://www.theregister.com/2023/11/28/devternity_conference_fake_speakers/ https://www.developpez.com/actu/351260/La-conference-DevTernity-sur-la-technologie-s-effondre-apres-que-l-organisateur-a-admis-avoir-cree-de-fausses-oratrices-generees-automatiquement/
- J’avais lu le tweet du créateur de cette conf qui expliquait que c’était 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 les réseaux sociaux apparemment, donc c’était savamment orchestré.
- Au final beaucoup de speakers et de sponsors se désengagent.
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 31 janvier 2024-3 février 2024 : SnowCamp - Grenoble (France)
- 1 février 2024 : AgiLeMans - Le Mans (France)
- 6 février 2024 : DevFest Paris - Paris (France)
- 8-9 février 2024 : Touraine Tech - Tours (France)
- 15-16 février 2024 : Scala.IO - Nantes (France)
- 6-7 mars 2024 : FlowCon 2024 - Paris (France)
- 14-15 mars 2024 : pgDayParis - Paris (France)
- 19 mars 2024 : AppDeveloperCon - Paris (France)
- 19 mars 2024 : ArgoCon - Paris (France)
- 19 mars 2024 : BackstageCon - Paris (France)
- 19 mars 2024 : Cilium + eBPF Day - Paris (France)
- 19 mars 2024 : Cloud Native AI Day Europe - Paris (France)
- 19 mars 2024 : Cloud Native Wasm Day Europe - Paris (France)
- 19 mars 2024 : Data on Kubernetes Day - Paris (France)
- 19 mars 2024 : Istio Day Europe - Paris (France)
- 19 mars 2024 : Kubeflow Summit Europe - Paris (France)
- 19 mars 2024 : Kubernetes on Edge Day Europe - Paris (France)
- 19 mars 2024 : Multi-Tenancy Con - Paris (France)
- 19 mars 2024 : Observabiity Day Europe - Paris (France)
- 19 mars 2024 : OpenTofu Day Europe - Paris (France)
- 19 mars 2024 : Platform Engineering Day - Paris (France)
- 19 mars 2024 : ThanosCon Europe - Paris (France)
- 19-21 mars 2024 : IT & Cybersecurity Meetings - Paris (France)
- 19-22 mars 2024 : KubeCon + CloudNativeCon Europe 2024 - Paris (France)
- 26-28 mars 2024 : Forum INCYBER Europe - Lille (France)
- 28-29 mars 2024 : SymfonyLive Paris 2024 - Paris (France)
- 4-6 avril 2024 : Toulouse Hacking Convention - Toulouse (France)
- 17-19 avril 2024 : Devoxx France - Paris (France)
- 18-20 avril 2024 : Devoxx Greece - Athens (Greece)
- 25-26 avril 2024 : MiXiT - Lyon (France)
- 25-26 avril 2024 : Android Makers - Paris (France)
- 8-10 mai 2024 : Devoxx UK - London (UK)
- 16-17 mai 2024 : Newcrafts Paris - Paris (France)
- 24 mai 2024 : AFUP Day Nancy - Nancy (France)
- 24 mai 2024 : AFUP Day Poitiers - Poitiers (France)
- 24 mai 2024 : AFUP Day Lille - Lille (France)
- 24 mai 2024 : AFUP Day Lyon - Lyon (France)
- 2 juin 2024 : PolyCloud - Montpellier (France)
- 6-7 juin 2024 : DevFest Lille - Lille (France)
- 6-7 juin 2024 : Alpes Craft - Grenoble (France)
- 27-28 juin 2024 : Agi Lille - Lille (France)
- 4-5 juillet 2024 : Sunny Tech - Montpellier (France)
- 19-20 septembre 2024 : API Platform Conference - Lille (France) & Online
- 7-11 octobre 2024 : Devoxx Belgium - Antwerp (Belgium)
- 10-11 octobre 2024 : Volcamp - Clermont-Ferrand (France)
- 10-11 octobre 2024 : Forum PHP - Marne-la-Vallée (France)
- 17-18 octobre 2024 : DevFest Nantes - Nantes (France)
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/