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 dans 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 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
  • gatherer sont des operations intermediaires custom qui prennent un etat et le prochain element pour decided quoi faire, et meme changer le stream d’elements suivants (en publier) (via la fonction integrate
  • certains peuvent permettre de combiner les resultats intermediaires (pour paralleliser)
  • Examples : fenetres de taille fixe, fenettres 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, 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 separe les bugs des erreurs attendues (bugs doivent arreter le process)
  • il raconte l’histoire des unchecked exception et leurs problemes et des checked exceptopns et poourquoi les developeurs java les detestent (selon lui)
  • long article maisn interessant dans ses retours
  • mais lon je ne suis pas allé au bout :smile:

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 mielleurs 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 Broadcome 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 d’IBAN
  • jbanking est une bibliotheque pour manipuler des structures typiques des banques comme les IBAN les BIC, les monnaies, les SEPA etc.

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 Lucerne 9.8
  • support sur Amazon OpenSearch Serverless (experimental)
  • attention sous ensemble de fonctionnalités sur Serverless, c’est un API first search cluster vendu a 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énement 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 entrees / sorties attendues de systèmes de messages (HTTP, Kafka, serveur mail etc)
  • top pour tester les application 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 dernière version de Lucene (9.8), Infinispan rajoute le support pour la recherche vectorielle.

Cloud

Comment choisir sa region cloud https://blog.scottlogic.com/2023/11/23/conscientious-cloud-pick-your-cloud-region-deliberately.html

  • pas si simple
  • le coût
  • la securité 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 https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md
  • Les objectifs sont la sécurité, la reliabilité, 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 sematique et les erreurs etc
  • la (meta-) structure de la payload, la taille, la securisation via signature (e.g. hmac), les erreurs (via erreurs HTTP), etc
Data et Intelligence Artificielle

Google annonce Gemini, son nouveau Large Language Model https://blog.google/technology/ai/google-gemini-ai/#sundar-note

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 modeles GenAI ouverts, Facebook fournit des outils pour faire des IA responsables (mais pas coupables :wink: )
  • notament des benchmarks pour evaluler la sureté et un classifier de sureté, par exemple pour ne pas generer 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 AI ouverte et collaborative entre académique et industriels. Sont notammenrt absent Google, OpenAI (pas ouvert) et Microsoft
  • Juste une annouce pour l’instant mais on va voir ce que ces acteurs de l’AI Alliance feront de concret
  • il y a aussi un guide d’utilisateur l’usage IA responsable (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’auters https://github.com/ml-explore/mlx-examples
  • non seulement les Apple Silicon amis aussi la memoire unifiee 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 a 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 a 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 accessibles 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
  • notemment celui du financial time qui tiens dans une page de PDF
  • Bref c’est cool mais c’est long a 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 - Marker, en Python, pour transformer des PDF en beau Markdown https://github.com/VikParuchuri/marker - n8n un outil de workflow open source https://n8n.io/

  • gron en fait montre des lignes avec des assignments genre jsonpath = value
  • et tu peux ungroner apres pour revenir a du json
  • Marker utilise du machine learning mais il halklucine moins que nougat (nous voilà rassuré)

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 chanson, 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, etc.
  • notamment, faire genrer les tests par l’IA dans al 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écuriter, 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, c’est difficile a embrasser ces versions completes
  • ML Ops est une métier, data science est un metier, donc intégrer ces competences
  • sachez gérer votre catalogue de données
  • Construire un process pour tester vos modèles et continuellement
  • La notion de culture de la recherche et sa gestion (comme un portefeuille financier, accepter d’arrêter des experience etc)
  • la culture de la recherche est peu présente en engineering qui est de construire des choses qui foncitonnent
  • c’est un monde pre 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 specifiquement

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
  • Mieux vaut éviter des couleurs trop pures ou des couleurs trop brillantes et saturées
  • Avoir un bon contraste
  • Penser aussi aux daltoniens !
  • j’ai personnellement eu toujours du mal avec saturationm vs brightness
  • faire que les cloueirs en noir et blanc soient separees evant de le remettre (en changeant la brightness de chaque couleur) ca aide les daltoniens
  • eviter les couleurs aux 4 coins amis plutot des couleurs complementaires (proches)
  • rouge orange et jaune (non saturé) et variations de bleu sont pas mal
  • les couleurs saturées sont aggressives 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 mnanagers 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 eimages qu’on voit au boot
  • permet d’executer du code arbitraire au tout debuit de la securisation du UEFI (le boot le plus utilisé)
  • donc c’est game over parce que ca demarre avant l’OS
  • c’est pas une exploitation a distance, il faut etre sur la machine avec des droits assez elevés deja mais ca peut etre la fin de la chaine d’attaque
  • et comme d’hab un interpreteur d’image est la cause de ces vulnerabilités
Conférences

L’IA au secours de conférences tech: rajoute des profile tech femme comme speaker au programme pour passer le test diversité online via des profiles 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-e[…]s-avoir-cree-de-fausses-oratrices-generees-automatiquement/

  • j’avais lu le tweet du createur de cette conf qui expliquait que c’etait 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 le reseaux sociaux apparemment donc c’était savamment orchestré
  • Au final beaucoup de speakers et des sponsors se desengagent

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/