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.

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/

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/

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

Docker acquiert Testcontainers https://techcrunch.com/2023/12/11/docker-acquires-atomicjar-a-testing-startup-that-raised-25m-in-january/

Architecture

Comment implémenter la reconnaissance de chansons, comme Shazam https://www.cameronmacleod.com/blog/how-does-shazam-work

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 :

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/