LCC 304 - Dark punk

Published: Dec. 18, 2023, 9:28 a.m.

Dans cet \xe9pisode, 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\xfbt du cloud, Gemini, Llama et autres animaux fantastiques et pleins d\u2019outils sympathiques pour f\xeater la fin de l\u2019ann\xe9e.

Enregistr\xe9 le 15 d\xe9cembre 2023

T\xe9l\xe9chargement de l\u2019\xe9pisode LesCastCodeurs-Episode-304.mp3

News

Aide Les Cast Codeurs et remplis un petit formulaire pour nous guider l\u2019ann\xe9e prochaine https://lescastcodeurs.com/sondage

Langages

Avec JEP 461, arriv\xe9e dans en preview dans Java 22 de la notion de \u201cgatherer\u201d pour les streams https://groovy.apache.org/blog/groovy-gatherers

  • dans cet article de Paul King, de l\u2019\xe9quipe Groovy, il montre et contraste ce que l\u2019on pouvait faire en Groovy depuis des ann\xe9es, comme des sliding windows, par exemple
  • explique l\u2019approche des gatherers avec ses op\xe9rations interm\xe9diaires
  • gatherer sont des operations intermediaires custom qui prennent un etat et le prochain element pour decided quoi faire, et meme changer le stream d\u2019elements 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\xe9 chez Microsoft sur le project Midori (un futur OS repens\xe9) 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\u2019erreurs, les exceptions, checked et non-checked
  • il separe les bugs des erreurs attendues (bugs doivent arreter le process)
  • il raconte l\u2019histoire 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\xe9 au bout :smile:

Apr\xe8s 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\u2019int\xe9grer JavaScript avec le moteur V8
  • Mais aussi carr\xe9ment Node.js
  • c\u2019est super comme capacit\xe9 car on a les deux mielleurs moteurs, par contre le support hors x86 est plus limit\xe9 (genre arm sous windows c\u2019est non)
Librairies

Une partie de l\u2019\xe9quipe Spring se fait lourder apr\xe8s le rachat effectif de Broadcom https://x.com/odrotbohm/status/1729231722498425092?s=20

  • peu d\u2019info en vrai \xe0 part ce tweet
  • mais l\u2019acquisition Broadcome n\u2019a pas l\u2019air 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\xe9 de g\xe9n\xe9rer al\xe9atoirement des BIC
  • am\xe9lioration de la g\xe9n\xe9ration d\u2019IBAN
  • 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\xe9 sur Lucerne 9.8
  • support sur Amazon OpenSearch Serverless (experimental)
  • attention sous ensemble de fonctionnalit\xe9s sur Serverless, c\u2019est 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\xe8rement utilis\xe9es par l\u2019IA/ML
  • \xe9v\xe9nement sp\xe9cifiques JFR

Int\xe9gration de citrus et Quarkus pour les tests d\u2019int\xe9grations 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\xe8mes 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\xe9 les notifications)

Hibernate Search 7.1 (dev 7.1.0.Alpha1) avec derni\xe8re 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\xfbt
  • la securit\xe9 l\xe9gale de vos donn\xe9es
  • la consommation carbone de la r\xe9gion choisie (la France est top, la Pologne moins)
  • la latence vs o\xf9 sont vos clients
  • les services support\xe9s
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\u2019approche 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\xe9curit\xe9, la reliabilit\xe9, l\u2019interop\xe9rabilit\xe9, la simplicit\xe9 et la compatibilit\xe9 (ascendante / descendante)
  • sans la spec, chaque webhook est different dans son comportement et donc les clients doivent s\u2019adapter dans la sematique et les erreurs etc
  • la (meta-) structure de la payload, la taille, la securisation via signature (e.g.\xa0hmac), 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 \xe9crit sur comment appeler Gemini en Java https://glaforge.dev/posts/2023/12/13/get-started-with-gemini-in-java/

  • Gemini est multimod\xe8le, donc on peut passer aussi bien du texte que des images, ou m\xeame de la vid\xe9o
  • Il y a un SDK en Java pour interagir avec l\u2019API 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\u2019optique des modeles GenAI ouverts, Facebook fournit des outils pour faire des IA responsables (mais pas coupables :wink: )
  • notament des benchmarks pour evaluler la suret\xe9 et un classifier de suret\xe9, par exemple pour ne pas generer du code malicieux (ou le rendre plus dur)
  • llama purple sera un projet parapluie
  • D\u2019ailleurs Meta IBM, Red Hat et pleins d\u2019autres ont annonc\xe9 l\u2019AI Alliance pour une AI ouverte et collaborative entre acad\xe9mique et industriels. Sont notammenrt absent Google, OpenAI (pas ouvert) et Microsoft
  • Juste une annouce pour l\u2019instant mais on va voir ce que ces acteurs de l\u2019AI Alliance feront de concret
  • il y a aussi un guide d\u2019utilisateur l\u2019usage 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\u2019inspire fortement de NumPy, PyTorch, Jax et ArrayFire
  • Surtout, c\u2019est d\xe9velopp\xe9 sp\xe9cifiquement pour les Macs, pour tirer au maximum parti des processeurs Apple Silicon
  • Dans un des repos Github, on trouve \xe9galement des exemples qui font tourner nativement sur macOS les mod\xe8les de Llama, de Mistral et d\u2019auters 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\xe9s de la rapidit\xe9 des macs

Faire tourner Java dans un notebook Jupyter https://www.javaadvent.com/2023/12/jupyter-notebooks-and-java.html

  • Max Andersen explore l\u2019utilisation 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\u2019on utilise
  • et c\u2019est la que jbang installable via pip vient a la rescousse
  • il installe automatiquement ces kernels en quelques lignes
Outillage

Sfeir liste des jeux orient\xe9s d\xe9veloppeurs https://www.sfeir.dev/tendances/notre-selection-de-jeux-de-programmation/

  • parfait pour No\xebl
  • mais c\u2019est pour ceux qui veulent continuer a challenger leur cerveau apr\xe8s 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\u2019Avent sont populaires pour les d\xe9veloppeurs ! En particulier avec Advent of Code https://adventofcode.com/

Un super thread de Clara Dealberto sur le th\xe8me de la \u201cdataviz\u201d (data visualization) https://twitter.com/claradealberto/status/1729447130228457514

  • Beaucoup d\u2019outil librement accessibles sont mentionn\xe9s pour faire toutes sortes de visualisations (ex. treemap, dendros, sankey\u2026) mais aussi pour la cartographie
  • Quelques ressources de site qui conseillent sur l\u2019utilisation du bon type de visualisation en fonction du probl\xe8me et des donn\xe9es que l\u2019on a
  • notemment celui du financial time qui tiens dans une page de PDF
  • Bref c\u2019est cool mais c\u2019est long a lire

Une petite liste d\u2019outils sympas - jc pour convertir la sortie de commandes unix en JSON https://github.com/kellyjonbrazil/jc - AltTab pour macOS pour avoir le m\xeame comportement de basculement de fen\xeatre que sous Windows https://alt-tab-macos.netlify.app/ - gron pour rendre le JSON grep-able, en transformant chaque valeur en ligne ressemblant \xe0 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\xe0 rassur\xe9)

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

Architecture

Comment impl\xe9menter la reconnaissance de chanson, comme Shazam https://www.cameronmacleod.com/blog/how-does-shazam-work

M\xe9thodologies

Un m\xe9mo de chez ThoughtWorks \xe0 propos du coding assist\xe9 par IA https://martinfowler.com/articles/exploring-gen-ai.html#memo-08

  • Avec toute une liste de questions \xe0 se poser dans l\u2019utilisation d\u2019un outil tel que Copilot
  • Il faut bien r\xe9aliser que malheureusement, une IA n\u2019a pas raison \xe0 100% dans ses r\xe9ponses, et m\xeame plut\xf4t que la moiti\xe9 du temps, donc il faut bien mettre \xe0 jour ses attentes par rapport \xe0 cela, car ce n\u2019est pas magique
  • La conclusion est int\xe9ressante aussi, en sugg\xe9rant que grosso modo dans 40 \xe0 60% des situations, tu peux arriver \xe0 40 \xe0 80% de la solution. Est-ce que c\u2019est \xe0 partir de ce niveau l\xe0 qu\u2019on peut vraiment gagner du temps et faire confiance \xe0 l\u2019IA ?
  • Ne perdez pas trop de temps non plus \xe0 essayer de convaincre l\u2019IA de faire ce que vous voulez qu\u2019elle fasse. Si vous n\u2019y arrivez pas, c\u2019est sans doute parce que l\u2019IA n\u2019y arrivera m\xeame pas elle m\xeame ! Donc au-del\xe0 de 10 minutes, allez lire la doc, chercher sur Google, etc.
  • notamment, faire genrer les tests par l\u2019IA dans al foul\xe9e augmente les risques surtout si on n\u2019est pas capable de bien relire le code
  • si on introduit un choix de pattern genre flexbox en CSS, si c\u2019est sur une question de s\xe9curiter, v\xe9rifier (ceinture et bretelle)
  • est-ce le framework de la semaine derni\xe8re? L\u2019info ne sera pas dans le LLM (sans RAG)

Quelles capacit\xe9s sont n\xe9cessaires pour d\xe9ployer un projet AI/ML https://blog.scottlogic.com/2023/11/22/capabilities-to-deploy-ai-in-your-organisation.html

  • C\u2019est le MLOps et il y a quelques mod\xe8les end to end Google, IBM mais vu la diversit\xe9 des organisations, c\u2019est difficile a embrasser ces versions completes
  • ML Ops est une m\xe9tier, data science est un metier, donc int\xe9grer ces competences
  • sachez g\xe9rer votre catalogue de donn\xe9es
  • Construire un process pour tester vos mod\xe8les et continuellement
  • La notion de culture de la recherche et sa gestion (comme un portefeuille financier, accepter d\u2019arr\xeater des experience etc)
  • la culture de la recherche est peu pr\xe9sente en engineering qui est de construire des choses qui foncitonnent
  • c\u2019est un monde pre LLM

Vous connaissez les 10 dark patterns de l\u2019UX ? Pour vous inciter \xe0 cliquer ici ou l\xe0, 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\u2019article conclut avec quelques pistes sur comment \xe9viter 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\u2019appuient sur la psychologie et sont mis en place specifiquement

Comment choisir de belles couleurs pour la visualisation de donn\xe9es ? https://blog.datawrapper.de/beautifulcolors/

  • Plut\xf4t que de penser en RGB, il vaut mieux se positionner dans le mode Hue Saturation Brightness
  • Plein d\u2019exemples montrant comment am\xe9liorer certains choix de couleurs
  • Mieux vaut \xe9viter des couleurs trop pures ou des couleurs trop brillantes et satur\xe9es
  • Avoir un bon contraste
  • Penser aussi aux daltoniens !
  • j\u2019ai 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\xe9) et variations de bleu sont pas mal
  • les couleurs satur\xe9es 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\u2019article parle de l\u2019\xe9volution de la perception de l\u2019engineering management qui n\u2019est plus d\xe9sormais le choix de carri\xe8re par d\xe9faut pour les ing\xe9nieurs ambitieux.
  • Il met en \xe9vidence les d\xe9fis auxquels les engineering managers sont confront\xe9s, y compris les attentes croissantes en mati\xe8re d\u2019empathie, de soutien et de comp\xe9tences techniques, ainsi que l\u2019impact de la pand\xe9mie de COVID-19 sur l\u2019attrait des postes de management.
  • L\u2019importance des bons engineering mnanagers est soulign\xe9e, car ils sont consid\xe9r\xe9s comme des multiplicateurs de force pour les \xe9quipes, contribuant de mani\xe8re significative \xe0 la productivit\xe9, \xe0 la qualit\xe9 et au succ\xe8s global dans les environnements organisationnels complexes.
  • L\u2019article fournit des raisons pour lesquelles quelqu\u2019un pourrait envisager de devenir Engineering Manager, y compris acqu\xe9rir une meilleure compr\xe9hension de la fa\xe7on dont les entreprises fonctionnent, contribuer au mentorat et influencer les changements positifs dans la dynamique des \xe9quipes et les pratiques de l\u2019industrie.
  • Une perspective est pr\xe9sent\xe9e, sugg\xe9rant que devenir Engineering manager peut conduire \xe0 la croissance personnelle et \xe0 l\u2019am\xe9lioration des comp\xe9tences de vie, telles que l\u2019autor\xe9gulation, la conscience de soi, la compr\xe9hension des autres, l\u2019\xe9tablissement de limites, la sensibilit\xe9 \xe0 la dynamique du pouvoir et la ma\xeetrise des conversations difficiles. L\u2019article encourage \xe0 consid\xe9rer la gestion comme une occasion de d\xe9velopper et de porter ces comp\xe9tences pour la vie.
S\xe9curit\xe9

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\u2019on voit au boot
  • permet d\u2019executer du code arbitraire au tout debuit de la securisation du UEFI (le boot le plus utilis\xe9)
  • donc c\u2019est game over parce que ca demarre avant l\u2019OS
  • c\u2019est pas une exploitation a distance, il faut etre sur la machine avec des droits assez elev\xe9s deja mais ca peut etre la fin de la chaine d\u2019attaque
  • et comme d\u2019hab un interpreteur d\u2019image est la cause de ces vulnerabilit\xe9s
Conf\xe9rences

L\u2019IA au secours de conf\xe9rences tech: rajoute des profile tech femme comme speaker au programme pour passer le test diversit\xe9 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[\u2026]s-avoir-cree-de-fausses-oratrices-generees-automatiquement/

  • j\u2019avais lu le tweet du createur de cette conf qui expliquait que c\u2019etait des comptes de tests et que pris dans le rush ils avaient oubli\xe9 de les enlever
  • mais en fait les comptes de tests ont des profils \u201cActifs\u201d sur le reseaux sociaux apparemment donc c\u2019\xe9tait savamment orchestr\xe9
  • Au final beaucoup de speakers et des sponsors se desengagent

La liste des conf\xe9rences provenant de Developers Conferences Agenda/List par Aur\xe9lie Vache et contributeurs :

Nous contacter

Pour r\xe9agir \xe0 cet \xe9pisode, 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 \xe9pisodes et toutes les infos sur https://lescastcodeurs.com/