LCC 297 - Lockless design

Published: June 12, 2023, 12:53 p.m.

Guillaume, Arnaud et Emmanuel discutent des nouvelles de mai et juin. La communaut\xe9 Rust, WebAssembly. Guava, Debezium, Kafka, de flame graph, d\u2019open source et bien s\xfbr les large language models. On r\xe9pond aussi \xe0 la question fondamentale: mais pourquoi Maven n\u2019a pas de fichier .lock ?

Enregistr\xe9 le 9 juin 2023

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

News Langages

Lors de Microsoft BUILD 2023, un des fondateurs de OpenAI a fait une excellente pr\xe9sentation de Large Language Models, des GPT https://build.microsoft.com/en-US/sessions/db3f4859-cd30-4445-a0cd-553c3304f8e2

  • Il parle du fonctionnement des LLM, comment/pourquoi ils arrivent \xe0 g\xe9n\xe9rer ce qu\u2019ils g\xe9n\xe8rent
  • Le fine-tuning, l\u2019apprentissage renforc\xe9 avec feedback humain, l\u2019art du prompting
  • Des patterns comme Chain of Thought (CoT) ou ReAct (Reflect then Act)

Leaning Technologies annonce l\u2019arriv\xe9e prochaine de CheerpJ 3 : le retour de Java dans la navigateur, gr\xe2ce \xe0 WebAssembly https://leaningtech.com/announcing-cheerpj-3-0-a-jvm-replacement-in-html5-and-webassembly-to-run-java-applications-and-applets-on-modern-browsers/

  • Avant la version 3.0, CheerpJ utilisait une approche AOT (ahead of time compilation) qui n\xe9cessitait aussi une \xe9tape d\u2019int\xe9gration continue pour transformer aussi toutes les d\xe9pendances JAR associ\xe9es \xe0 un projet
  • Avec la version 3.0, qui devrait sortir cet \xe9t\xe9, CheerpJ adopte une approche JIT (Just In Time compilation) qui ressemble plus \xe0 l\u2019approche de Java lui m\xeame
  • Plus besoin non plus de version custom d\u2019OpenJDK
  • Les Applets vous avaient manqu\xe9 ? Elles sont de retour avec WebAssembly :smile:

Communaut\xe9 RUST: Il y a de l\u2019eau dans le gaz https://www.jntrnr.com/why-i-left-rust/

  • Plus d\u2019infos https://gist.github.com/fasterthanlime/42da9378768aebef662dd26dddf04849
  • li\xe9 au backchannel et un petit groupe qui essaie de faire les choses bien mais qui derappe de l\u2019exterieur
  • en gros ils ont un process interne pour prendre des decisions
  • avec ce process ils ont invit\xe9 une personne pas super pro Rust a faire la keynote a RustConf
  • d\u2019autres du commit\xe9 ont vu ca et on discut\xe9 en backchannel pour revenir en arriere de la decision (sans suivre le process)
  • il y a eu une semaine de pause avant action mais pas annonc\xe9
  • le speaker a ete d\xe9 keynot\xe9 et a donc refus\xe9 de venir a la conf
  • et paf, ca enerve des gens decisionaire et ils demissionnent
  • Bref des gens qui veulent faire le bien mais en cercle un peu trop fern\xe9 et paf

Les gens de Wasmer \xe9tendent WASI avec WASIX, on rajoutant le support POSIX, les threads\u2026 permettant de compiler vers WASM plein de projet C/C++ ou Rust, comme cURL ou autre https://wasmer.io/posts/announcing-wasix

  • ca frotte un oeu entre innovation et standardisation dans la communaite WASM
  • WASMER sont un peu les cowboys startuper
  • par exemple ils ont essay\xe9 de deposer la marque WebAssemble au nez et \xe0 la barbe de la communaut\xe9
  • donc la reaction du coeur de la communaut\xe9 a cette annonce est plut\xf4t calme
  • WASI c\u2019est standard mais ca prend du temps a maturer
  • WASIX c\u2019est cool et dispo maintenant mais c\u2019est un produit d\u2019une soci\xe9t\xe9 sp\xe9cifique, donc pas de portabilit\xe9
Librairies

Guava 32 est sorti et beaucoup de choses annot\xe9es en @Beta ne le sont plus https://www.reddit.com/r/java/comments/13w2l8w/guava_320_released_today_and_the_beta_annotation/

  • ont eu des API en @Beta pendant longtemps pour proteger des risques de changements
  • en pratique quasi personne ne se limitait au non beta, et elles n\u2019ont pas boug\xe9 ces API ou peu
  • donc ils ont enlev\xe9 @Beta de la plupart
  • beaucoup de parties de Guava sont dans le JDK, le cache est dans Caffeine
  • des bons echanges dans les commentaires entre les utilisateurs et Kevin un des mainteneurs chez Google

Comment d\xe9marrer avec l\u2019API PaLM de Google, mais en Java! https://glaforge.dev/posts/2023/05/30/getting-started-with-the-palm-api-in-the-java-ecosystem/

Infrastructure

Debezium 2.2 https://debezium.io/blog/2023/04/20/debezium-2-2-final-released/

  • Experimental, opt-in Parallel Snapshots
  • Incremental snapshots with surrogate keys
  • Quarkus 3 support
  • Ingestion of Oracle changes from logical standby instances
  • Google Spanner improvementsNew Debezium Server sinks for Infinispan, RabbitMQ, and RocketMQ
  • New Storage APIs for Amazon S3 and RocketMQ
  • Many MongoDB improvements
  • Cassandra connector for Cassandra Enterprise

Un article sur l\u2019utilisation de Kafka par CloudFlare https://www.infoq.com/articles/kafka-clusters-cloudflare/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=architecture-design

  • c\u2019est du \u201cclassique\u201d mais bon de se le faire rappeler
  • beaucoup d\u2019evenements CloudFlare passent pas Kafka pour processing
  • Kafka en tant que bus generique
  • Ils ont impos\xe9 un message unique par topic via protobuf
  • ils sont une Application Service team (internal developer platform) depuis peu de temps
  • gitops pour creation de topic etc
  • d\xe9velopp\xe9 un connector framework declaratif pour \xe9tendre le pannel de patrons d\u2019architecture disponibles
  • develop\xe9 des SDKs d\u2019access a KAfka avec monitoring (prometheus)
  • sympa a lire

Post mortem du probl\xe8me chez datadogHQ https://www.datadoghq.com/blog/2023-03-08-multiregion-infrastructure-connectivity-issue/

  • data dog a perdu tous ces services dans la plupart ou toutes ses regions pendant 3 heures avant la premiere recuperation et 10 heures au total pour la recuperation totale
  • Equipe : 10 senior engineering leaders, about 70 local incident commanders and a pool of 450 to 750 incident responders active throughout the incident, which required four shifts to bring the incident to full resolution.
  • cause: une mise a jour de systemd appliqu\xe9 sur la plupart de leurs VM en quasi parallele qui a effacer les routes des container et ne les a aps remis ; c\u2019est un cas qui n\u2019arrive pas au reboot d\u2019un noeud (init sequence)
  • des 10000s noeuds impact\xe9s
  • en general ils font du rollout par region en enlevant les noeuds etc mais le base os avait un legacy update channel activ\xe9 (vs gere pas les equipes de datadog manuellement)
  • les noeuds de controlleurs qui sont cense recycler les noeuds n\u2019ont pu le faire vu le volume de noeud et surtout parce qu\u2019eux meme \xe9taient effect\xe9s
  • l\u2019autre article
Cloud

Le data center parisien europe-west9-a est en panne depuis 3 semaines https://www.lebigdata.fr/data-center-panne

  • un feu s\u2019est d\xe9clench\xe9 qui a touch\xe9 une zone
  • le DC reste op\xe9rationnel sur les zones non touch\xe9e sauf BigTable qui a besoin de la zone touch\xe9e
  • les autres services fonctionnent
  • sauf les applis utilisateurs qui ne tournaiuent que sur la zone affect\xe9
Outillage

Podman Desktop 1.0 est sorti https://podman-desktop.io/blog/podman-desktop-release-1.0

  • pas grand chose a dire que c\u2019est la 1.0
  • \u201cWorks on my machine\u201d

Contract testing with Pact https://hollycummins.com/contract-testing-devoxx-greece/

  • Conference
  • quand on change un microservice l\u2019autre casse
  • les tests d\u2019integration sont lent, instable et demande des grosses machines ou des environnements remote de dev
  • mock / unit tests ne sont pas vraiment le code de l\u2019autre \xe9quipe
  • D\u2019o\xf9 Contract test qui vit entre les end to end et les unit tests.
  • Peut partir d\u2019un test mock et rempalcer avec pact cote consommateur
  • en faisait tourner, un pack listener enregistre la declaration (le DSL) et le retours attendus / gener\xe9s par l\u2019appel du test
  • copier ce fichier vers le producteur
  • copier a la main, dans le repo, via a broker
  • ajoute un test pact cote producteur qui va exercer le JSON et verifier que cela marche
  • tests de pack sont plus profonds qu\u2019un test OPENAPI
  • consommateur utilise pact comme mock et verifie le provider wrt le contract du mock

Pourquoi Maven n\u2019a pas de fichier lock ? https://www.reddit.com/r/Maven/comments/vkcmys/why_maven_doesnt_have_a_lock_file_like/?utm_source=share&utm_medium=ios_app&utm_name=ioscss&utm_content=1&utm_term=9

  • conversation interessance sur les fichiers .lock dans les builds
  • Par exemple ruby a le Gemfile.lock, npm pareil mais pas Java?
  • Fondamentalement c\u2019est du aux valeurs par defaut initiales et \xe0 la culture de la communaut\xe9
  • les version range sont peu ou pas utilis\xe9s en Maven
  • alors que le default dans d\u2019autres plateformes
  • la poule et l\u2019oeuf

Simplifier les flame graph avec jbang https://someth2say.wordpress.com/2023/06/04/jbang-and-flame-graphs/

  • discute les flame graph
  • pour le temps comsomm\xe9 et pas un call graph
  • hauteur c\u2019est la profondeur d\u2019appel
  • ne regarder que la largeur, pas l\u2019ordre
  • pas quand et ou une action est faite mais qui l\u2019a fait
  • reste discute comment utiliser jbang pour lancer le prgramme et le javaagent

Les mod\xe9rateurs de Stack Overflow en greve contre le flux de r\xe9ponses d\u2019intelligence artificeille https://openletter.mousetail.nl/

  • le ban des contenus generes par l\u2019IA a ete lev\xe9 discr\xe8tement par stack overflow
  • peur du flux de donn\xe9es massif et des hallucinations difficiles \xe0 d\xe9tecter sans passer du temps
  • pas de consensus communautaire
  • stackoverflow est une des sources trust\xe9es pour les LLM des intelligences arificielles generatives (serpent qui se mord la queue)
  • les mod\xe9rateurs font tourner l\u2019anti spam, gere les flag lev\xe9s, ferment ou effacent les entr\xe9es, genre les bots qui detectent le plagiat etc.
  • 414 votants des les premiers heures

Just, un petit outil en ligne de commande avec une syntaxe inspir\xe9e de make, pour ex\xe9cuter des commandes fr\xe9quentes dans nos projets https://glaforge.dev/posts/2023/06/07/just-a-handy-command-line-tool/

  • Syntaxe proche de celle de make
  • Possibilit\xe9 de d\xe9finir des d\xe9pendances entre t\xe2ches
  • Support de param\xe8tres
  • Peut charger des fichier .env
  • S\u2019installe sur tous les syst\xe8mes d\u2019exploitation qu\u2019on aime bien et qu\u2019on n\u2019aime pas aussi
M\xe9thodologies

AWS retire ses documentations en Open Source https://www.infoq.com/news/2023/06/aws-documentation-github/

  • ils ont open sourc\xe9 en esp\xe9rant des contributions il y a deux ans
  • mais sans changer les approche en interne
  • resultat copie de repo de l\u2019interieur vers l\u2019exterieur
  • tracker de travail interne != externe
  • c\u2019\xe9tait plus compliqu\xe9
  • le\xe7on, embrace enti\xe8rement sinon les frictions sont compliqu\xe9es

Un guide pour communiquer avec l\u2019IA: https://learnprompting.org/

  • Gratuit et open source
  • Prompt Engineering ou comment r\xe9diger vos prompts
  • Plusieurs niveau (Basic, Intermediaire, Avanc\xe9..)
  • D\xe9fini plein de concepts: Prompt, Few Shot Prompt, LLMs\u2026
Loi, soci\xe9t\xe9 et organisation

Migration de Twitter vers Mastodon (ou plut\xf4t \u201cdual run\u201d) https://glaforge.dev/talks/2023/06/09/from-bird-to-elephant-starting-a-new-journey-on-mastodon/

Conf\xe9rences

Aurelie Vache publie sont agenda des conferences via le site: https://developers.events/

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/