LCC 297 - Lockless design - a podcast by Emmanuel Bernard, Guillaume Laforge, Vincent Massol, Antonio Goncalves, Aud

from 2023-06-12T12:53:04

:: ::

Guillaume, Arnaud et Emmanuel discutent des nouvelles de mai et juin. La communauté Rust, WebAssembly. Guava, Debezium, Kafka, de flame graph, d’open source et bien sûr les large language models. On répond aussi à la question fondamentale: mais pourquoi Maven n’a pas de fichier .lock ?

Enregistré le 9 juin 2023

Téléchargement de l’épisode LesCastCodeurs-Episode-297.mp3

News

Langages

Lors de Microsoft BUILD 2023, un des fondateurs de OpenAI a fait une excellente présentation 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 à générer ce qu’ils génèrent
  • Le fine-tuning, l’apprentissage renforcé avec feedback humain, l’art du prompting
  • Des patterns comme Chain of Thought (CoT) ou ReAct (Reflect then Act)

Leaning Technologies annonce l’arrivée prochaine de CheerpJ 3 : le retour de Java dans la navigateur, grâce à 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écessitait aussi une étape d’intégration continue pour transformer aussi toutes les dépendances JAR associées à un projet
  • Avec la version 3.0, qui devrait sortir cet été, CheerpJ adopte une approche JIT (Just In Time compilation) qui ressemble plus à l’approche de Java lui même
  • Plus besoin non plus de version custom d’OpenJDK
  • Les Applets vous avaient manqué ? Elles sont de retour avec WebAssembly :smile:

Communauté RUST: Il y a de l’eau dans le gaz https://www.jntrnr.com/why-i-left-rust/

  • Plus d’infos https://gist.github.com/fasterthanlime/42da9378768aebef662dd26dddf04849
  • lié au backchannel et un petit groupe qui essaie de faire les choses bien mais qui derappe de l’exterieur
  • en gros ils ont un process interne pour prendre des decisions
  • avec ce process ils ont invité une personne pas super pro Rust a faire la keynote a RustConf
  • d’autres du commité ont vu ca et on discuté 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é
  • le speaker a ete dé keynoté et a donc refusé 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é et paf

Les gens de Wasmer étendent WASI avec WASIX, on rajoutant le support POSIX, les threads… 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é de deposer la marque WebAssemble au nez et à la barbe de la communauté
  • donc la reaction du coeur de la communauté a cette annonce est plutôt calme
  • WASI c’est standard mais ca prend du temps a maturer
  • WASIX c’est cool et dispo maintenant mais c’est un produit d’une société spécifique, donc pas de portabilité

Librairies

Guava 32 est sorti et beaucoup de choses annotées 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’ont pas bougé ces API ou peu
  • donc ils ont enlevé @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émarrer avec l’API 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’utilisation 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’est du “classique” mais bon de se le faire rappeler
  • beaucoup d’evenements CloudFlare passent pas Kafka pour processing
  • Kafka en tant que bus generique
  • Ils ont imposé 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éveloppé un connector framework declaratif pour étendre le pannel de patrons d’architecture disponibles
  • developé des SDKs d’access a KAfka avec monitoring (prometheus)
  • sympa a lire

Post mortem du problème 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é sur la plupart de leurs VM en quasi parallele qui a effacer les routes des container et ne les a aps remis ; c’est un cas qui n’arrive pas au reboot d’un noeud (init sequence)
  • des 10000s noeuds impactés
  • en general ils font du rollout par region en enlevant les noeuds etc mais le base os avait un legacy update channel activé (vs gere pas les equipes de datadog manuellement)
  • les noeuds de controlleurs qui sont cense recycler les noeuds n’ont pu le faire vu le volume de noeud et surtout parce qu’eux meme étaient effectés
  • l’autre 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’est déclenché qui a touché une zone
  • le DC reste opérationnel sur les zones non touchée sauf BigTable qui a besoin de la zone touchée
  • les autres services fonctionnent
  • sauf les applis utilisateurs qui ne tournaiuent que sur la zone affecté

Outillage

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

  • pas grand chose a dire que c’est la 1.0
  • “Works on my machine”

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

  • Conference
  • quand on change un microservice l’autre casse
  • les tests d’integration 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’autre équipe
  • D’où Contract test qui vit entre les end to end et les unit tests.
  • Peut partir d’un test mock et rempalcer avec pact cote consommateur
  • en faisait tourner, un pack listener enregistre la declaration (le DSL) et le retours attendus / generés par l’appel 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’un test OPENAPI
  • consommateur utilise pact comme mock et verifie le provider wrt le contract du mock

Pourquoi Maven n’a 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’est du aux valeurs par defaut initiales et à la culture de la communauté
  • les version range sont peu ou pas utilisés en Maven
  • alors que le default dans d’autres plateformes
  • la poule et l’oeuf

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é et pas un call graph
  • hauteur c’est la profondeur d’appel
  • ne regarder que la largeur, pas l’ordre
  • pas quand et ou une action est faite mais qui l’a fait
  • reste discute comment utiliser jbang pour lancer le prgramme et le javaagent

Les modérateurs de Stack Overflow en greve contre le flux de réponses d’intelligence artificeille https://openletter.mousetail.nl/

  • le ban des contenus generes par l’IA a ete levé discrètement par stack overflow
  • peur du flux de données massif et des hallucinations difficiles à détecter sans passer du temps
  • pas de consensus communautaire
  • stackoverflow est une des sources trustées pour les LLM des intelligences arificielles generatives (serpent qui se mord la queue)
  • les modérateurs font tourner l’anti spam, gere les flag levés, ferment ou effacent les entrées, 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ée de make, pour exécuter des commandes fréquentes dans nos projets https://glaforge.dev/posts/2023/06/07/just-a-handy-command-line-tool/

  • Syntaxe proche de celle de make
  • Possibilité de définir des dépendances entre tâches
  • Support de paramètres
  • Peut charger des fichier .env
  • S’installe sur tous les systèmes d’exploitation qu’on aime bien et qu’on n’aime pas aussi

Méthodologies

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

  • ils ont open sourcé en espérant des contributions il y a deux ans
  • mais sans changer les approche en interne
  • resultat copie de repo de l’interieur vers l’exterieur
  • tracker de travail interne != externe
  • c’était plus compliqué
  • leçon, embrace entièrement sinon les frictions sont compliquées

Un guide pour communiquer avec l’IA: https://learnprompting.org/

  • Gratuit et open source
  • Prompt Engineering ou comment rédiger vos prompts
  • Plusieurs niveau (Basic, Intermediaire, Avancé..)
  • Défini plein de concepts: Prompt, Few Shot Prompt, LLMs…

Loi, société et organisation

Migration de Twitter vers Mastodon (ou plutôt “dual run”) https://glaforge.dev/talks/2023/06/09/from-bird-to-elephant-starting-a-new-journey-on-mastodon/

Conférences

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

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/

Further episodes of Les Cast Codeurs Podcast

Further podcasts by Emmanuel Bernard, Guillaume Laforge, Vincent Massol, Antonio Goncalves, Aud

Website of Emmanuel Bernard, Guillaume Laforge, Vincent Massol, Antonio Goncalves, Aud