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
NewsAide Les Cast Codeurs et remplis un petit formulaire pour nous guider l’année prochaine https://lescastcodeurs.com/sondage
LangagesAvec 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)
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.
- 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 en Infinispan 15 (dev) qui sortira
- La recherche vectoriolle et stockage de vecteurs, permettent convertir Infinispan en Embedding Store (langchain)
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
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
Google annonce Gemini, son nouveau Large Language Model https://blog.google/technology/ai/google-gemini-ai/#sundar-note
- 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 disponible : 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 dispo)
- 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 fausse ce qui a amené un discrédit (non du) sur Gemini
- par exemple la video “aspirationelle” était vendue comme du réel mais ce n’est pas le cas. et ultra n’est pas disponible encore
- ausso la comparaison de ChatGPT sur la page (initialement au moins) comparait des choux et des carottes, meme 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 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
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/
- Mais il y a aussi l’Advent of Java https://www.javaadvent.com/
- Ou un calendrier pour apprendre les bases de SVG https://svg-tutorial.com/
- Le calendrier HTML “hell” https://www.htmhell.dev/adventcalendar/ 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 ! https://typehero.dev/aot-2023
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/
- 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/
Comment implémenter la reconnaissance de chanson, 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
- d’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 hash qui peut etre comparés et le plus de hash veut dire que les chansons sont plus similaires
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.
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
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 :
- 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)
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/