Le podcast Java en Français

Les Cast Codeurs est un podcast en français de, par et pour les développeurs.

Prenez connaissance des dernières nouvelles de la sphère Java et du développement en général. Plongez sur un sujet précis avec les épisodes interview.

Supportez les radotages de vos hôtes : Emmanuel Bernard (JBoss, Hibernate), Arnaud Héritier (Doctolib, Jenkins), Guillaume Laforge (Google, Groovy), Antonio Goncalves (Microsoft, auteur), Vincent Massol (XWiki, Maven), Audrey Neveu (Reactor/Spring, Devoxx4Kids). Katia Aresti (Red Hat, Infinispan).

LCC 314 - 1000 fois 1000 dépendances

Posté le 16/07/2024

Emmanuel, Guillaume et Arnaud discutent des nouvelles de l’été. JEPs, transactional outbox pattern avec Spring, LLM dans Chrome, faille polyfill.io, TOTP, congés illimités et IDE payant ou pas payant ?

Enregistré le 12 juillet 2024

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

News

Langages

Les fonctionnalités de JDK 23 ont été figées début juin (release prévue en septembre) https://openjdk.org/projects/jdk/23/ https://www.youtube.com/watch?v=kzjGp7LmW0I

  • JEPs finales:
    • 467: Markdown Documentation Comments
    • 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal
    • 474: ZGC: Generational Mode by Default
  • JEPs en incubation / preview
    • 455: Primitive Types in Patterns, instanceof, and switch (Preview)
    • 466: Class-File API (Second Preview)
    • 469: Vector API (Eighth Incubator)
    • 473: Stream Gatherers (Second Preview)
    • 476: Module Import Declarations (Preview)
    • 477: Implicitly Declared Classes and Instance Main Methods (Third Preview)
    • 480: Structured Concurrency (Third Preview)
    • 481: Scoped Values (Third Preview)
    • 482: Flexible Constructor Bodies (Second Preview)

Librairies

Le transactional outbox pattern avec Spring Boot https://www.wimdeblauwe.com/blog/2024/06/25/transactional-outbox-pattern-with-spring-boot/

  • Transactional outbox permet d’éviter des 2PC ou des désynchronisations de resources : typiquement un commit dans une base et un envoi de message dans un bus.
  • on écrit le message dans une table de la base de données, et un process séparé récupère les messages et les envoient dans le bus.
  • Implémentation utilise Spring Integration
  • Dans l’article, la seconde resource est l’envoie d’email.
  • Montre une approche de tests.
  • Le flow décrivant Spring Integration n’est pas super trivial à lire quand on n’est pas familier. Mais cela poll la table toutes les secondes et envoi un email puis, en cas de succès de l’appel de service, supprime le message de la table.
  • Deuxième exemple avec Spring Modulith qui a un event bus interne qui peut être persisté.
  • Décrit les differences avec Spring Integration et les limites de l’approche Modulith (message order, retry etc).

Comment tester des valeurs de propriétés différentes dans un test Quarkus https://quarkus.io/blog/overriding-configuration-from-test-code/

  • On a tendance à ne pas tester les propriétés de config.
  • Ce blog montre 5 (enfin 4 utiles) façons de le faire avec Quarkus.
  • Les profils de test, mocker l’objet de config, les test components (experimental), l’injection dans les constructeurs.

Quarkus 3.12 https://quarkus.io/blog/quarkus-3-12-0-released/

  • centralisation des configs TLS,
  • support pour le load shedding (reject requests on service overload),
  • événements JFR specific a Quarkus,
  • native image agent,
  • support Spring Boot 3 (compat layer),
  • support Kotlin 2,
  • etc

Cloud

On vous parlait dans un épisode précédent de ce problème de coûts S3 sur des requêtes non autorisées. C’est Graphana Loki qui a mis ce problème sous les projecteurs https://grafana.com/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/

  • le problème venait des valeurs par défaut des buckets déclarés dans le chart helm de Loki, en particulier celui nommé ‘chunks’

Data et Intelligence Artificielle

Guillaume avait partagé l’information sur la disponibilité prochaine d’un minimodèle LLM dans Chrome. C’est maintenant une réalité et vous pouvez le tester. https://ai-sdk-chrome-ai.vercel.app/

  • Nécessite Chrome 127 (version stable à partir de mi-juillet).
  • Utilise le SDK Vercel AI.

Guillaume nous parle de toutes les nouveautés liées au modèle Gemini de Google dans la dernière release de LangChain4j https://glaforge.dev/posts/2024/07/05/latest-gemini-features-support-in-langchain4j/

Outillage

1% des utilisateurs de Maven Central utilisent 83% de sa bande passante. Installez un repository manager qui fait proxy (et cela pour tous les types de dépendances)!!! https://www.sonatype.com/blog/maven-central-and-the-tragedy-of-the-commons

  • Rien n’est réellement gratuit et l’abus d’une minorité peut nuire à l’ensemble.
  • Cela fait maintenant plus de 20 ans que les communautés le répète : installer un gestionnaire de dépendances dans votre infrastructure (Nexus, Artifactory, CodeArtifact, …). En plus de protéger le bien commun cela vous permet de raffiner le filtrage des dépendances, d’assurer la reproductibilité de vos builds, d’optimiser les performances (et réduire les coûts) en ne téléchargeant que depuis votre propre infrastructure…
  • Maven Central est un commun qui ne coûte rien à l’utilisateur.
  • Mais qui est indispensable à tous.
  • 1000 milliards de téléchargements l’année dernière.
  • 83% de la bande passante consommée par 1% des IPs.
  • Beaucoup des ces IP viennent des companies les plus grandes.
  • Proxy pour réduire charge sur central, réduire couts ingress/egress.
  • Ils vont implementer un mécanisme de throttling.
  • Question est-ce que la concentration des IPs veut juste dire que c’est le dernier nœud, mais que cacher n’est pas effectif pour eux et qu’il y a des milliers de clients derrière une IP ?
  • Le trotting ferait mal.
  • Et le proxy ne marche plus dans un monde ou le dev est dans le cloud et distribue géographiquement.

Comment mettre en place backstage, ici avec un projet Spring Boot utilisant CircleCi, Renovate, SonarCloud… https://piotrminkowski.com/2024/06/13/getting-started-with-backstage/

  • Cet article explique comment utiliser backstage pour fournir à vos équipes un template d’une application Spring Boot.
  • Elle est automatiquement créée sous forme d’un repository git(hub) avec les integrations classiques pour gérer la CI (via CircleCI), la qualité (via SonarCloud), la mise à jour de dépendances (via Renovate) et bien sûr son référencement sur le portail backstage.
  • Tutoriel très complet.
  • Très facilement remplaçable pour un project avec votre technologie préférée (pas spécifique à Spring Boot ou Java).

Architecture

Que se passe-t-il quand vous faites un push sur GitHub ? https://github.blog/2024-06-11-how-we-improved-push-processing-on-github/

  • GitHub explique comment ils ont amélioré leur architecture, notamment en mettant en place Kafka pour distribuer les actions qui découlent d’un push sur GitHub.
  • Parallélisation des tâches (avant séquentiel)
  • Limitation des dépendances entre étapes effectuées lors d’un push.
  • Plus de tâches peuvent faire un retry.
  • Un classique de decoupling via un EDA.

Sécurité

Attaque du CDN polyfill.io https://sansec.io/research/polyfill-supply-chain-attack

  • Polyfill permet le support de nouvelles fonctionnalités dans les anciens navigateurs.
  • Servi par CDN notamment.
  • Une société chinoise a acheté le domaine et le GitHub.
  • Et injecte du malware qui pointe sur des serveurs qui servent le malware de manière selective (device, admin ou pas, heure de la journée).
  • Fastly et Cloudflare ont des déploiements alternatifs.

Une faille de sécurité, de type Remote Code Execution, vieille de 10ans, dans CocoaPods, un gestionnaire de dépendances très utilisé dans le monde Apple (macOS et iOS) https://securityboulevard.com/2024/07/cocoapods-apple-vulns-richixbw/

  • https://cocoapods.org/ est un gestionnaire de dépendances pour les projets Xcode. Les dépendances (Pods) sont publiées sous forme de Specs qui sont référencées dans un Specs Repo (une sorte de Maven central, mais seulement avec des métadonnées).
  • CVE-2024-38366 est une vulnérabilité de type remote code execution avec un score CVSS de 10.
  • La faille existait depuis 10 ans et a été corrigée en septembre 2023. Elle permettait d’avoir un accès root sur trunk.cocoapods.org qui stocke les Specs. Elles auraient donc pu être modifiées sans que les auteurs s’en aperçoivent.
  • Pas de preuve pour l’instant que la faille ait été exploitée.

Mieux comprendre la double authentification avec TOTP https://hendrik-erz.de/post/understanding-totp-two-factor-authentication-eli5

  • Cet article revient sur le fonctionnement de TOTP et comment l’implémenter avec des exemples en python.
  • Le QR code est une URL qui contient : le secret en base 32. le nom du totp, qui a fourni le TOTP, combien de chiffres et la durée de vie du TOTP.
  • Pour générer les chiffres, prends le secret, le temps et hash le tout, prendre 4 bytes et les convertir le chiffre.
  • Typiquement le serveur génère les deux d’avant, les deux d’après et le courant pour comparer.

Loi, société et organisation

L’équipe Apache Maven gagne le troisième prix BlueHats https://nlnet.nl/bluehatsprize/2024/3.html

  • le projet remporte un gain de 10000€.
  • Ce prix est organisé par le gouvernement français afin de récompenser les projets open sources les plus impactants.

La clause de congés illimités en Europe https://www.osborneclarke.com/insights/why-your-unlimited-vacation-policy-may-be-of-limited-use-in-europe

  • Les politiques de congés illimités, populaires aux États-Unis, ne sont pas aussi avantageuses en Europe.
  • En Europe, les employeurs doivent suivre les congés pris pour respecter les minima légaux de quatre semaines par an donc ils ne peuvent pas economiser sur le faire de ne plus les gérer.
  • Les congés illimités permettent aux US de ne plus à devoir les payer au départ de l’employé. En Europe les employeurs doivent payer les congés non utilisés lors de la fin du contrat.
  • Les employés européens pourraient prendre davantage de congés, car ils sont mieux protégés contre le licenciement.
  • Les jours de maladie sont plus cadrés en europe. Un employé qui souffre d’une maladie longue pourrait utiliser les congés illimités, mais ce ne sont pas les mêmes règles qui s’appliquent.

OpenDNS n’est plus disponible en France et au Portugal https://support.opendns.com/hc/en-us/articles/27951404269204-OpenDNS-Service-Not-Available-To-Users-In-France-and-Portugal

  • A priori Cisco qui opère openDNS en a marre des demandes de restrictions spécifiques à nos pays.
  • Cisco préfère donc retirer entièrement l’accès au service plutôt que de se conformer à la énième demande de restrictions qui faisait suite à la plainte du groupe Canal+ portant sur l’accès à des sites illicites de streaming pour du sport.

Ask Me Anything

Salut ! Êtes-vous plutôt IDE payants (ex : IntelliJ IDEA Ultimate, ou des plugins payants), ou ne jurez-vous que par des outils gratuits ? Un peu des deux ? Si adéptes du payant, ça ne vous déprime pas qu’un nombre considérable d’employeurs rechignent à nous payer nos outils ? Que “de toute façon VSCode c’est gratuit” (à prononcer avec une voix méprisante) ? Quid du confort, ou de la productivité et/ou qualité accrue quand on maîtrise de tels outils ? Merci !

Conférences

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/


LCC 313 - 313 CCL

Posté le 15/06/2024

Katia, Guillaume, Emmanuel et Antonio discutent Kotlin, Micronaut, Spring Boot, Quarkus, Langchain4j, LLMs en Java, builds reproductibles et la question AMA du jour, comment fait-on carrière de dev à 40 ans ?

Enregistré le 14 juin 2024

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

News

Langages

Android avec Kotlin Multiplatform our Flutter avec Dart ? https://developers.googleblog.com/en/making-development-across-platforms-easier-for-developers/

  • Des licenciements ont continué chez Google et l’équipe Flutter/Dart comme plein d’autres ont été touchées, mais sur les réseaux sociaux les gens ont pensé que Google désinvestissait dans Flutter et Dart.
  • Par ailleurs, côté Android, ils poussent plutôt du côté de Kotlin et KMP, mais naturellement aussi les gens se sont demandé si Google avait pris parti pour pousser plus Kotlin/KMP plutôt que Flutter/Dart.
  • Pour essayer de mieux faire comprendre aux développeurs l’intérêt des deux plateformes, et leurs avantages et inconvénients, les directeurs des deux plateformes ont rédigé un article commun.
  • Si l’on souhaite une expérience plus proche du hardware et des dernières nouveautés d’Android, et d’avoir aussi une UI/UX vraiment native Android, mieux vaut aller du côté de Kotlin/KMP.
  • Si l’on souhaite par contre une expérience multiplateforme Web, mobile, desktop avec une UX commune cross-plateforme, avec également le partage de business logic à partir d’une même base de code, Flutter et Dart sont plus adaptés.

Recap de KotlinConf https://x.com/gz_k/status/1793887581433971083?s=46&t=C18cckWlfukmsB_Fx0FfxQ

  • RPC multiplatform
  • La présentation Grow with the flow montrant la réécriture en Kotlin plus simple que des solutions complexes ailleurs.
  • Power-assert pour écrire des tests
  • Kotlin 2.0 et les évolutions majeures
  • Kotlin multiplatform maintenant stable
  • Kotlin Compose Multiplatform continue a maturer
  • Retour d’expérience de la migration d’Android Jetpack vers Kotlin Multiplatform
  • Use cases de coroutines et scope.

Librairies

Quarkus veut aller dans une fondation https://quarkus.io/blog/quarkus-in-a-foundation/

  • Améliorer l’adoption (encore plus), améliorer la transparence, et la collaboration, encourager la participation multi-vendeur
  • Première étape : une gouvernance plus ouverte.
  • Deuxième étape : bouger dans une fondation.
  • Échange avec la communauté sur la proposition et les fondations cibles.
  • Des critères pour la fondation (notamment la rapidité de delivery).

Quarkus 3.11 https://quarkus.io/blog/quarkus-3-11-0-released/

  • Websocket.next en cours.
  • Dev services pour observabilité (Grafana, Jaeger, Open Telemetry).
  • Extension Infinispan cache.
  • #38448 - Observability extensions - Dev Services, Dev Resources, LGTM.
  • #39836 - Infinispan Cache Extension.
  • #40309 - WebSockets Next: client endpoints.
  • #40534 - WebSockets Next: initial version of security integration.
  • #40273 - Allow quarkus:run to launch Dev Services.
  • #40539 - Support for OIDC session expired page.
  • #40600 - Introduce OidcRedirectFilter.

LangChain4j 0.31 est sorti https://github.com/langchain4j/langchain4j/releases/tag/0.31.0

  • Recherche Web pour le RAG avec Google et Tavily.
  • RAG avec les bases de données SQL (expérimental).
  • Récupération des resources remontées par le RAG lorsque AiServices retourne un Result<T>.
  • Observabilité LLM pour OpenAI pour être notifié des requêtes, réponses et erreurs.
  • Intégration de Cohere (embedding), Jina (embedding et re-ranking scoring), Azure CosmosDB comme embedding store.
  • Mise à jour de Gemini avec le parallel function calling et les instructions système.

Spring Boot 3.3.0 est sorti https://spring.io/blog/2024/05/23/spring-boot-3-3-0-available-now

  • Support DE Class Data Sharing (CDS).
  • Micrometer support de spantag, etc.
  • Amelioration Spring Security comme JwtAuthenticationConverter.
  • Support docker compose pour les images de conteneur Bitnami.
  • Virtual thread pour les websockets.
  • Support SBOM via an actuator.
  • SNI for embedded web servers.
  • Une nouvelle doc via Antora.

Micronaut 4.5 est sortie https://github.com/micronaut-projects/micronaut-platform/releases/tag/v4.5.0

  • Le serveur basé sur Netty inclus la détection d’opération bloquante et les modules l’utilisant indiqueront à l’utilisateur quand certaines opérations peuvent être redirigées plutôt sur un virtual thread ou dans le thread pool IO.
  • Micronaut Data inclus le support de la multitenance avec partitionnement par discriminateur pour JDBC et R2DBC.
  • Micronaut Data rajoute la pagination par curseur pour JDBC et R2DBC (important aussi pour Jakarta Data).
  • Support des annotations Jakarta Servlet pour configurer par exemple les servlet filters.
  • Support virtual thread et HTTP/2 .
  • Un nouveau module JSON Schema pour générer des JSON Schemas pour les records Java.
  • Un nouveau module Source Gen pour faire de la génération de source pour Java et Kotlin cross-langage.
  • Un nouveau module Guice pour importer des modules Guice existants.

Web

Angular 18 est sorti https://blog.angular.dev/angular-v18-is-now-available-e79d5ac0affe

  • Support expérimental pour la détection de changement sans zone.
  • Angular.dev est désormais le nouveau site pour les développeurs Angular.
  • Material 3, les deferrable views, le built-in control flow sont maintenant stables et intègrent une série d’améliorations.
  • Améliorations du rendu côté serveur telles que le support de l’hydratation i18n, un meilleur débogage, le support de l’hydratation dans Angular Material, et la event replay qui utilise la même bibliothèque que Google Search.

Data et Intelligence Artificielle

Une version pure Java du LLM Llama3 de Meta https://github.com/mukel/llama3.java/tree/main

  • Utilise la future API Vector de Java.

JLama, un moteur d’exécution de LLM en Java avec l’API vector https://www.infoq.com/news/2024/05/jlama-llm-inference-java/

  • Basé sur llama.c qui est un moteur d’inférence de LLM (l’exécution des requêtes).
  • JLama implémenté avec vector APIs et PanamaTensorOperations.
  • Plusieurs alternatives (native binding, implementation pure en Java, Scala, Kotlin).

Target Speech Hearing https://www.infoq.com/news/2024/05/target-speech-hearing/

  • Nouvel algo de Deep Learning de l’Université de Washington permet d’écouter une seule personne de ton choix et effacer tout le bruit autour.
  • le système nécessite que la personne portant les écouteurs appuie sur un bouton tout en regardant quelqu’un parler ou simplement en le fixant pendant trois à cinq secondes.
  • Permet à un modèle d’apprendre les schémas vocaux du locuteur et de s’y attacher pour pouvoir les restituer à l’auditeur, même s’il se déplace et cesse de regarder cette personne.
  • Selon les chercheurs, cela constitue une avancée significative par rapport aux écouteurs à réduction de bruit existants, qui peuvent annuler efficacement tous les sons, mais ne peuvent pas sélectionner les locuteurs en fonction de leurs caractéristiques vocales.
  • Actuellement, le système ne peut enregistrer qu’un seul locuteur à la fois. Une autre limitation est que l’enregistrement ne réussira que si aucune autre voix forte ne provient de la même direction.
  • L’équipe a mis en open source leur code et leur jeu de données afin de faciliter les travaux de recherche futurs pour améliorer l’audition de la parole cible.

Outillage

Utiliser LLM pour migrer du framework de testing https://www.infoq.com/news/2024/06/slack-automatic-test-conversion/

  • Slack a migré 15.000 tests de Enzyme à React Testing Library avec un succès de 80%.
  • Migration nécessaire pour le manque de support de Enzyme pour React 18.
  • L’équipe a essayé d’automatiser la conversion avec des transformations AST, mais n’a atteint que 45 % de succès à cause de la complexité des méthodes d’Enzyme et du manque d’accès aux informations contextuelles du DOM.
  • L’équipe a utilisé Claude 2.1 pour la conversion, avec des taux de réussite variant de 40 % à 60 %, les résultats dépendant largement de la complexité des tâches.
  • Suite aux résultats insatisfaisants, l’équipe a décidé d’observer comment les développeurs humains abordaient la conversion des tests unitaires.
  • Les développeurs humains utilisaient leurs connaissances sur React, Enzyme et RTL, ainsi que le contexte du rendu et les conversions AST de l’outil initial pour mieux convertir les tests unitaires.
  • Finalement les ingénieurs de Slack ont combiné transformations AST et LLM en intégrant des composants React rendus et des conversions AST dans les invites, atteignant un taux de réussite de 80 % démontrant ainsi la complémentarité de ces technologies.
  • Claude 2.1 est un modèle de langage de grande taille (LLM) annoncé en novembre 2023 par Anthropic. Il inclut une fenêtre contextuelle de 200 000 tokens, des réductions significatives des taux d’hallucination du modèle, des invites système et permet l’utilisation d’outils. Depuis, Anthropic a introduit la famille de modèles Claude 3, composée de trois modèles distincts, avec des capacités multimodales et une compréhension contextuelle améliorée.
  • Un arbre de syntaxe abstraite (AST) est une représentation arborescente de la structure syntaxique abstraite du code source écrit dans un langage de programmation. Chaque nœud de l’arbre représente une construction du code source. Un arbre de syntaxe se concentre sur la structure et le contenu nécessaires pour comprendre la fonctionnalité du code. Les AST sont couramment utilisés dans les compilateurs et les interpreters pour analyser et examiner le code, permettant diverses transformations, optimisations et traductions lors de la compilation.

IDE de test de JetBrains https://blog.jetbrains.com/qa/2024/05/aqua-general-availability/

  • Aqua, le premier IDE conçu pour l’automatisation des tests, supporte plusieurs langages (Java, Python, JavaScript, TypeScript, Kotlin, SQL) et frameworks de tests (Selenium, Playwright, Cypress).
  • Pourquoi ? Les tests d’applications nécessitent des compétences spécifiques. Aqua, un IDE adapté, est recommandé par les ingénieurs en automatisation des tests.
  • Aqua propose deux plans de licence : un gratuit pour les usages non commerciaux et un payant pour les usages commerciaux.
  • Ça me parait un peu contre intuitif à l’heure du devops et du TDD de faire des outils dédiés et donc des équipes ou personnes dédiées.

Méthodologies

Les 10 principes à suivre, selon le créateur de cURL, pour être un bon BDFL (Benevolent Dictator For Life) https://daniel.haxx.se/blog/2024/05/27/my-bdfl-guiding-principles/

  • Être ouvert et amical.
  • Livrer des produits solides comme le roc.
  • Être un leader de l’Open Source.
  • Privilégier la sécurité.
  • Fournir une documentation de premier ordre.
  • Rester indépendant.
  • Répondre rapidement.
  • Suivre l’actualité.
  • Rester à la pointe de la technologie.
  • Respecter les retours d’information.
  • Dans un vieil article de Artima, Guido Van Rossum, le créateur de Python et premier BDFL d’un projet, se remémore un échange de 1995 qui est à l’origine de ce concept https://www.artima.com/weblogs/viewpost.jsp?thread=235725.
  • Guido Van Rossum a été le premier à endosser ce “rôle”.

Un site compréhensif sur les build reproductibles https://reproducible-builds.org

  • Longue doc.
  • De la définition aux méthodes pour résoudre des problèmes spécifiques.

Masterclass de Fabien Olicard : Le Palais Mental https://www.youtube.com/watch?v=u6wu_iY4xd8

  • Technique pour retenir de l’information plus longtemps que dans sa mémoire courte.

Les APIs web ne devraient pas rediriger HTTP vers HTTPS https://jviide.iki.fi/http-redirects

  • Grosso modo le risque majeur est d’envoyer des données confidentielles en clair sur le réseau.
  • Le mieux serait de ne pas rediriger vers HTTPS, mais par contre de retourner une vraie erreur explicite.
  • Notamment les clés d’API et c’est facile de ne pas le voir vu les redirects.

Sécurité

Blog de GitHub sur la provenance et l’attestation https://github.blog/2024-04-30-where-does-your-software-really-come-from/

  • Discute les concepts de sécurisation de chaine d’approvisionnement de logiciel et comment elles s’articulent entre elle, à haut niveau.
  • Discute les hash pour garantir le même fichier.
  • La signature asymétrique pour prouver que j’ai signé (le hash) et donc que je garantis.
  • L’attestation qui déclare des faits sur un artifact.
  • Attestation de provenance : source code et instructions de build (SLSA provenance).
  • Mais il faut garantir les signatures avec une autorité de certification et avec des certificats à courte durée de vie idéalement, c’est sigstore.
  • Mentionne aussi The Update Framework pour s’appuyer sur cela et garantir des updates non compromis.

Keycloak 25 est sorti https://www.keycloak.org/2024/06/keycloak-2500-released.html

  • Argon2 pour le hashing de mots de passe.
  • Dépreciation des adaptateurs (Tomcat, servlet etc).
  • Java 21 et dépreciation de Java 17.
  • Session utilisateur persistente même pour les instances online (pour survivre à une rotation de keycloak).
  • Améliorations autour des Passkeys.
  • Management et health endpoint sur un port différent.
  • Et plus.

Demande aux cast codeurs

À 40 ans, tu peux encore être codeur reconnu ?

Conférences

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/


LCC 312 - Dans la ferme de Mathurin IA IA IO !

Posté le 21/05/2024

Dans ce long…. épisode, Emmanuel, Guillaume et Arnaud discutent de l’actualité avec Chicori (un runtime WASM en Java), Jakarta Data, Quarkus 3.10, Spring AI, Hibernate 6.5, mais aussi quelques retours aux basiques (timezones, rate limiting, …). Gros focus sur les nouveautés annoncées à Google I/O 2024 et dans l’écosystème IA en général avec les annonces d’OpenAI, Claude, Grok et d’autres. Différents outils sont aussi couverts comme Git, IntelliJ, ASDF, BLD, S3. Et enfin des sujets sur la haute disponibilité de Keycloak, la ré-indexation sans downtime, les challenges des implémentations alternatives, le mode vigilant dans GitHub, Redis et les changements de license, et les investissements de Microsoft et AWS en France dans le cadre du programme #ChooseFrance. N’hésitez pas à nous soumettre vos questions sur https://lescastcodeurs.com/ama nous y répondrons dans les prochains épisodes.

Enregistré le 17 mai 2024

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

News

Langages

Un runtime WASM en Java https://github.com/dylibso/chicory

  • Projet tout nouveau, encore loin de la maturité.
  • Mais intéressant à suivre pour exécuter du code WebAssembly dans une application Java.
  • Le projet n’a pas 15 jours non plus quand même :).
  • Faire tourner des plugins WASM dans la JVM.

On peut faire des heap dumps en cas de OutOfMemoryException en compilation native https://quarkus.io/blog/heapdump-oome-native/

  • Depuis JDK 21.
  • Un exemple avec Quarkus.
  • Et le GC epsilon.

100 exercices pour se mettre à Rust https://rust-exercises.com/

Librairies

Hibernate 6.5 est sorti https://in.relation.to/2024/04/25/orm-650/

  • Cache full pour les entités et leurs collections (le défaut est shallow).
  • Java record pour les @IdClass.
  • Les filtres peuvent être auto activés par défaut (vs à faire sur chaque session). Les filtres sont pas mal pour gérer par exemple des soft delete.
  • Key-based pagination pour éviter les trous de résultat en cas de modification d’entités en parallèle d’une recherche paginée. S’appuie sur une clé unique et ordonnée, genre ISBN.
  • Une tech preview de Jakarta Data.

En parlant de Jakarta Data, deux articles sur le sujet https://in.relation.to/2024/04/01/jakarta-data-1/, https://in.relation.to/2024/04/18/jakarta-data-1/

  • Concept de repository pas lié à une entité, mais à une relation logique entre les recherches.
  • Interagit via stateless session et est un bean CDI.
  • Code généré bien sûr.
  • 4 opérateurs CRUD et les requêtes save et upsert.
  • Type sage au sens ou le nom des méthodes n’est pas la logique de recherche.
  • Annotation et nom des paramètres et c’est type safe via un annotation processor.
  • Ou String dans @Query qui est type-safe aussi via le processeur.
  • Discute plus de type safety et pagination.

Quarkus 3.10 avec quelques nouveautés https://quarkus.io/blog/quarkus-3-10-0-released/

  • Flyway 10 arrive avec support natif.
  • Hibernate search supporte le standalone POJO mapper notamment pour Elasticsearch (pas que ORM).
  • Modification des propriétés Quarkus.package automatiquement remplacées par quarkus update.
  • Et Quarkus 3.9 a fait son grand renommage réactif : https://quarkus.io/blog/quarkus-3-9-1-released/.
  • Clarifier que les extensions réactive n’imposent pas des APIs réactives et seulement leur cœur implémenté en réactif ou offre optionnellement des APIs reactive.
  • Les gens pensaient à tors que les réactives imposaient le modèle de programmation.
  • Là encore quarkus update à la rescousse.

Un article sur l’API structured output pour Spring AI https://spring.io/blog/2024/05/09/spring-ai-structured-output

  • Un article descriptif sur quand cette API est utilisée.
  • Et les détails de son usage.

Comment passer une TimeZone dans Spring Boot et ce que cela impacte en termes de composants https://www.baeldung.com/spring-boot-set-default-timezone

  • Du basique, mais toujours utile.
  • Task ou app.
  • Programmatiquement.
  • Sur certains lifecycles de Spring.

Infrastructure

Un article et la vidéo de Devoxx France sur la haute disponibilité de Keycloak, comment c’est implémenté https://www.keycloak.org/2024/05/keycloak-at-devoxx-france-2024-recap

  • L’infra d’identité est une infra clé.
  • Donc gérer la haute disponibilité est critique.
  • C’est un article qui pointe sur une vidéo de Devoxx France et la doc de keycloak sur comment tout cela est implémenté.

Cloud

Comment se ruiner avec des buckets S3 https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1

  • Amazon fait payer pour les requêtes non autorisées.
  • Il suffit de connaître le nom d’un bucket pour faire payer son propriétaire.
  • Amazon travaille pour fournir une solution / un fix.
  • Il est tombé par hasard sur un nom de bucket utilisé « pour de faux » par un outil open source populaire.
  • Bien rajouter un suffixe à ses buckets peut réduire le risque, mais pas l’éliminer.
  • Un fix a été livré par Amazon : https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/.

Data et Intelligence Artificielle

Guillaume résume GoogleIO https://x.com/techcrunch/status/1790504691945898300?s=61&t=WImtt07yTQMhhoNPN6lYEw

  • AI overview plus besoin d’aller sur les sites

Google I/O 2024

OpenAI lance son nouveau modèle : gpt-4o http://openai.com/index/hello-gpt-4o/

https://claude.ai/ est disponible en europe

  • Claude, le modèle est créé par Anthropic.
  • Claude est un assistant IA basé sur un grand modèle de langage entraîné selon des principes éthiques stricts. Il accorde une grande importance à l’honnêteté, l’impartialité et le respect de l’être humain.
  • Son raisonnement repose sur une compréhension profonde des concepts plutôt que sur de simples associations statistiques. Il cherche activement à corriger les éventuels biais ou erreurs.
  • Claude est polyvalent et peut s’adapter à différents styles de communication et niveaux de complexité selon le contexte. Il maîtrise de nombreux domaines académiques et scientifiques.
  • Il est capable d’introspection sur ses propres processus de pensée et ses limitations. La vie privée et la confidentialité sont des priorités pour lui.
  • Claude continue d’apprendre et de s’améliorer grâce aux interactions avec les humains. Son but est d’être un assistant fiable, éthique et bienveillant.
  • Quelqu’un sait comment ils font pour raisonner et pas juste LLM statistique ? Comment ils prouvent cela ? C’est du code à part ?

Grok le modèle de X/Twitter/Musk est aussi disponible en Europe https://x.com/x/status/1790917272355172401?s=46&t=GLj1NFxZoCFCjw2oYpiJpw

  • Un truc unique est qu’il utilise les tweets comme référence sur ce qu’il dit. Par exemple demande les meilleurs Java Champions
  • Et c’est sur les tweets récents, probablement une sorte de RAG ou une sorte de fine tuning sur les derniers tweets, je ne sais pas.

L’algorithme des modèles de diffusion expliqués https://x.com/emmanuelbernard/status/1787565568020619650

  • Deux articles, un general et lisible.
  • L’autre plus abscond mais avec certains details intéressants sur le downsizing.
  • Étapes ajout de bruit à des images (learning) pour après appliquer le process opposé le reverse diffusion process.
  • On prédit le bruit à enlever, on l’enlève et on repère le processus.
  • Et tout cela est influencé par le prompt.

Réindexation sans downtime des données de documentation de Quarkus, en quarkus bien sûr https://quarkus.io/blog/search-indexing-rollover/

  • Utilise Hibernate search.
  • Utilisé Elasticsearch / Opensearch.
  • Article qui explique une des approches pour ré-indexer sans downtime via index alias.

Outillage

Un article qui parle de l’outil de build bld, peu connu, qui permet d’écrire ses builds simplement dans une classe Java. https://sombriks.com/blog/0070-build-with-bld-and-why-it-matters/

IntelliJ 2024.1 est sorti https://blog.jetbrains.com/idea/2024/05/what-s-new-in-intellij-idea-ultimate-2024-1/

  • Complétion de ligne entière (deep learning).
  • Assistant AI amélioré
  • Spring Boot support amélioré sur bean completion et génération de diagramme.
  • Support des Dev Containers simplifié.
  • Amélioration support quarkus avec notamment icône dev ui et config des tests.
  • Support de OpenRewrite.
  • Server Wiremock.
  • Et plein d’autres choses.

En version beta public, Homebrew permet de vérifier la provenance des packages (bottles) https://blog.trailofbits.com/2024/05/14/a-peek-into-build-provenance-for-homebrew/

Mettez à jour git en version 2.45.1 pour fixer des failles de sécurité https://github.blog/2024-05-14-securing-git-addressing-5-new-vulnerabilities/

  • CVE-2024-32002 (Critique, Windows & macOS) : Les repos Git avec des sous-modules peuvent tromper Git pour lui faire exécuter un hook (élément de script) à partir du répertoire .git/ pendant une opération de clonage, permettant l’exécution de code à distance (Remote Code Execution).
  • CVE-2024-32004 (Important, machines multi-utilisateurs) : Un attaquant peut concevoir un repo local qui exécute du code arbitraire lors du clonage.
  • CVE-2024-32465 (Important, toutes les configurations) : Le clonage à partir de fichiers .zip contenant des repos Git peut contourner les protections, et potentiellement exécuter des hooks malveillants.
  • CVE-2024-32020 (Faible, machines multi-utilisateurs) : Les clones locaux sur le même disque peuvent permettre à des utilisateurs non approuvés de modifier des fichiers liés physiquement (hard link) dans la base de données des objets du repo cloné.
  • CVE-2024-32021 (Faible, machines multi-utilisateurs) : Le clonage d’un repo local avec des liens symboliques (symlinks) peut entraîner la création de liens physiques vers des fichiers arbitraires dans le répertoire objects/.

Architecture

Visualisation des algorithmes de rate limitation https://smudge.ai/blog/ratelimit-algorithms

Méthodologies

Le problème de l’implémentation alternative https://pointersgonewild.com/2024/04/20/the-alternative-implementation-problem/

  • Article par un développeur qui a développé des Just-in-Time compiler pour différents langages.
  • Remarqué que développer une implémentation alternative d’un langage (par exemple) n’a jamais vraiment rencontré le succès.
  • Les gens préfèrent l’original à une alternative qui est dépendante de / a peine à suivre l’implémentation d’origine.
  • Pour son cas, sur le JIT, il a travaillé sur un JIT intégré directement dans CRuby (plutôt que faire son implémentation alternative comme TruffleRuby), et sont JIT est intégré maintenant dedans directement.
  • Plus facile de rejoindre / s’intégrer au projet plutôt que d’être une alternative pour laquelle il faut convaincre les gens de l’adopter.

Le mode vigilant dans GitHub https://x.com/emmanuelbernard/status/1790026210619068435

Loi, société et organisation

Une perspective sur Redis et les changements de license par un DevRel AWS OpenSearch https://www.infoworld.com/article/3715247/the-end-of-vendor-backed-open-source.html

  • Les sociétés regardent l’impact légal des licenses source available pour elles même en usage interne.
  • Ça casse l’écosystème de spécialisations au-dessus du produit (logz.io au-dessus d’Elastic démarré avant le changement de license).
  • Redis top 10 contribs à AWS et Alibaba et Huawei et 3 redis. Donc ce n’est pas Redis qui contribue tout.
  • La plupart des ingénieurs de Redis Labs ne bossent pas sur Redis OSS, mais sur cloud et entreprise.
  • Peut-être la fin des single-vendor OSS.
  • Il n’y a que les cloud providers qui peuvent fournir de l’OSS sans affecter leur structure du coût.
  • C’est un ex-AWS en fait, maintenant indépendant.

Microsoft va investir 4 milliards en France (datacenters et IA) https://news.microsoft.com/fr-fr/2024/05/13/microsoft-announces-the-largest-investment-to-date-in-france-to-accelerate-the-adoption-of-ai-skilling-and-innovation/

Outils de l’épisode

ASDF un gestionnaire de version multi-runtime https://asdf-vm.com

  • Arnaud l’avait recommandé, mais je restais sur rvm
  • Apres des déboires, je suis passé à asdf, qui fonctionne.
  • Mais pour le JDK, j’utilise SDKMAN!.
  • Pour les javaistes, ça parait plus poussé.

Conférences

Les videos de Devoxx France sont en ligne https://www.youtube.com/playlist?list=PLTbQvx84FrARars1vXos7mlPdvYJmsEoK

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/


LCC 311 - Tu changes ta licence et tu vends

Posté le 29/04/2024

Cet épisode news revient sur le rachat de HashiCorp par IBM, sur le changement de license Redis, sur le bug macOS 14.4 et Java, sur la faille de chaine d’approvisionnement sur XZ. Et nous commençons notre rubrique Ask Me Anything. N’hésitez pas à nous soumettre vos questions sur https://lescastcodeurs.com/ama.

Enregistré le 26 avril 2024

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

News

Langages

Attendez peut-être avant d’upgrader macOS à la version 14.4, si vous faites du Java ! Attention le crash ! https://blogs.oracle.com/java/post/java-on-macos-14-4

Article de Gunnar Morling sur la nouvelle API de “gatherer” de Java 22, pour améliorer les streams, ici en montrant une implémentation d’un “zipper” qui assemble les éléments de 2 streams 2 à 2 https://www.morling.dev/blog/zipping-gatherer/

  • On a déjà parlé des gatherers qui permettent de faire des opérateurs intermédiaires custom par rapport à ce qu’offre le JDK.
  • Ici Gunnar montre un Zipper qui n’est pas présent par défaut.

Julien Ponge est Java champion, félicitations !

JFR 9 est sorti https://hirt.se/blog/?p=1477

  • Peut tourner dans Eclipse.
  • Support de ARM64 pour Linux et macOS.
  • Dark mode !
  • Des améliorations de performance.
  • Support GraalVM native image.
  • Nouvel afficheur de flame graph.
  • G1 pause target compliance.

Librairies

Nouvelle version de Jilt, l’annotation processor qui implémente les builders https://www.endoflineblog.com/jilt-1_5-released

  • Évite les hacks à la Lombok.
  • Une nouvelle méthode toBuilder() pour obtenir un builder d’un bean déjà configuré.
  • Support des méta-annotations, histoire de pas répéter sur chaque type comment on souhaite définir ses builders.
  • Possibilité de mettre l’annotation @Builder sur les constructeurs privés.
  • Support agnostique de @Nullable quelle que soit l’origine de cette annotation

Infrastructure

IBM pourrait racheter HashiCorp https://www.reuters.com/markets/deals/ibm-nearing-buyout-deal-hashicorp-wsj-reports-2024-04-23/

Web

Google intègre son framework interne Wiz dans Angular https://blog.angular.io/angular-and-wiz-are-better-together-91e633d8cd5a

  • Wiz est un framework interne à Google utilisé dans des produits comme Google Search ou Photos, très axé sur la performance.
  • Wiz va amener plus de performance à Angular, tout en gardant la super interactivité d’Angular.
  • Wiz historiquement sur la perf et peu d’interactions utilisateur, Angular sur interactions riches et super experience développeur.
  • Wiz server side rendering first est streamé, ce qui élimine le javascript dans le chemin de charge initial.
  • Des fonctions comme deferred views sont venus vers Angular et signals sont venus à wiz.
  • Vont merger au fur et à mesure des prochaines années via Angular comme receptacle open.

Data et Intelligence Artificielle

Redis aussi se met à changer sa licence pour une licence pas tout à fait open source. Un fork nommé Valkey, animé par des mainteneurs de Redis, rejoint la fondation Linux https://www.linuxfoundation.org/press/linux-foundation-launches-open-source-valkey-community

  • AWS, Google, Oracle, Ericsson et Snap sont nommés dans l’effort.
  • Open Source fight back mais via des grands acteurs qui ont un intérêt dans la version “gratuite” pour le cloud.
  • Les infos de Redis https://redis.com/blog/redis-adopts-dual-source-available-licensing/.
  • En gros releasé sous SSPL (comme MongoDB) ou une license spécifique Redis.
  • RSAL est une source available license (donc pas open source) et SSPL n’est pas reconnue comme open source par l’OSI car elle impose des restrictions à l’usage.
  • Du coup certaines fonctions closed sources deviennent source available.
  • Met les cloud providers en cause du problème, ils font de l’argent et commoditisent Redis sans redonner du revenu aux développeurs de Redis.
  • Est-ce que les gens seront ok de continuer à coder pour du code pas open, juste disponible ?
  • Et évidemment ça casse l’écosystème Redis ou open source qui voulait utiliser Redis en tant qu’open.
  • Pas autorisé de faire du support sur un produit qui derive de Redis sans payer une license si c’est “compétitif”.

Elon Musk tient sa promesse et ouvre son Large Language Model, Grok https://x.ai/blog/grok-os

  • Modèle de 314 milliards de paramètres (Pi !).
  • Architecture MoE (Mixture of Experts) qui fait qu’il n’y a que 25% des neurones actifs à l’inférence (efficace et rapide).
  • C’est un modèle “pre-trained”, de base, non-fine-tuné, donc pas très utilisable en l’état (il faut le fine-tuner en mode “instruct” et/ou “chat” pour qu’il soit vraiment utilisable).
  • Le code dans le repo Github, ainsi que les poids du réseau de neurones, sont OSS sous licence Apache 2.
  • L’entrainement a été effectué avec JAX et Rust !
  • La cut-off date est octobre 2023.

Outillage

Oracle lance son extension VSCode pour Java https://devclass.com/2024/03/19/java-22-is-out-and-oracle-is-pushing-its-own-extension-for-vs-code-over-not-very-good-red-hat-alternative/

  • Une extension en compétition avec l’extension officielle et historique Java faite par Microsoft et Red Hat.
  • Oracle estime l’extension pas trés bonne, car basée sur le compilateur Eclipse.
  • 33M de téléchargements quand même.
  • La nouvelle s’appuie sur javac donc proche de la vérité par définition et en avance par définition de la facon dont Oracle release quand il veut.
  • Aligné sur le timing de simplification de Java pour les débutants.

Sécurité

Rémi Forax nous partage cet article sur les puces M1/M2/M3 d’Apple, qui utilisent un nouveau prefetcher un peu trop agressif qui permet de leaker les clés utilisées lors des opérations cryptographiques : https://arstechnica.com/security/2024/03/hackers-can-extract-secret-encryption-keys-from-apples-mac-chips/

  • Comme d’habitude, pour les side channels attaques de ce type, c’est sur un autre process qui peut tourner sur la machine et être adversaire.
  • Lié à un data dependent memory fetcher.
  • Dans ce cas, un champ est soit une valeur, soit un pointeur et appel pre-fetch dans le cas où c’est un pointeur.
  • Et c’est attaquable en injectant des variables qui ressemblent à des pointeurs vers des données contrôlées et on peut en déduire la clé secrete si cette variable et la clé ont des opérations.
  • Mais le code peut désactiver cette optimisation si j’ai bien compris.

L’histoire d’une porte dérobée dans le projet open source XZ qui a failli mettre à mal toutes les connexions sous Open SSH, avec pour tâche de fond la fragilité de projets open source maintenu par des individuels bénévoles à bout de souffle https://uwyn.net/@rusty@piaille.fr/112190942187106096

Les impacts de laisser trainer son client secret dans les connections Keycloak https://medium.com/@benjaminbuffet/dis-keycloack-cest-grave-si-je-laisse-tra%C3%AEner-mon-client-secret-d371a0f657ee

  • Un article qui explique les raisons plutôt que de dire “c’est mal, car c’est secret”.
  • Quand on utilise un mot de passe du client (et pas un JWT signé ou une clé privée).
  • Si ça se perd, c’est l’usurpation de l’identité d’un utilisateur via son usage de client qui est en jeu (donc joué en tant que).
  • Ou usurper l’identité client en tant que telle (plus facile).
  • Et quelques conseils pour réduire ce risque.

Loi, société et organisation

JavaOne serait de retour pour de vrai ? https://www.oracle.com/javaone/

  • En mars 2025, c’est dans un an, on a le temps !
  • Ça se déroulera sur le campus d’Oracle dans la Silicon Valley.
  • Peu d’infos et de détails, pas sûr que cela soit le JavaOne de nos souvenirs.

Des infos concretes sur l’IA souveraine Albert https://x.com/emile_marzolf/status/1783072739630121432

AMA, Ask Me Anything

Hamza:

Comment être une rockstar dans le domaine, s’il vous plaît une réponse détaillée sur le plan d’action veille, auto formation, side projets …… depuis vos expériences personnelles. Merci d’avance

Conférences

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/


LCC 310 - Les Cast Codeurs à Devoxx France 2024 - sous-titre édition

Posté le 24/04/2024

La clôture de Devoxx France 2024 avec les cast codeurs. L’année où le sous-titrage était un personnage à part entière de Devoxx France.
Vous aurez beaucoup plus de plaisir et de contexte en regardant la vidéo qu’en écoutant cet épisode. Les sous-titres jouent un rôle important. Donc pour une fois ne nous écoutez pas, regardez nous :o)

Enregistré le 19 avril 2024

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

News

L’enregistrement en direct de Devoxx France 2024.

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/


LCC 309 - React a 10 ans

Posté le 04/04/2024

React a 10 ans. 10 Ans de Révolution dans le Développement Web avec Amélie Benoît (@AmelieBenoit33) et Manuel Cartier (@neolectron).

Enregistré le 04 mars 2024

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

React a 10 ans, longue vie à React !

Dans cet épisode, nous avons comme invités Amelie Benoît et Manuel Cartier. Les deux explorent l’évolution de React au cours de la dernière décennie, mettant en lumière ses principaux principes et son impact sur le développement web. Amélie et Manuel discutent des caractéristiques fondamentales de React, comme la composition des composants et l’utilisation de la virtual DOM, ainsi que des tendances émergentes telles que l’adoption de React Hooks, et les React Server Components. Enfin, nous avons ses conclusions sur l’avenir de React et son rôle continu dans le paysage du développement web.

Amélie Benoît

Amélie Benoit est une développeuse web avec une expérience d’environ 10 ans dans le domaine. Son expertise se concentre principalement sur React et React Native, qu’elle maîtrise tant en JavaScript qu’en TypeScript.

En plus de son travail de développement, Amélie est une entrepreneuse communautaire active. Elle a fondé deux Meetups, dont l’un est dédié à React & React Native, démontrant ainsi son engagement envers la diffusion des connaissances et le développement de la communauté. Elle a également organisé des conférences, notamment lors de l’événement BDX I/O. Elle a aussi été oratrice a Devoxx France parmi d’autres conférences.

Actuellement, Amélie occupe le poste de tech lead manager chez Busbud, une scale-up canadienne spécialisée dans la comparaison et la vente de billets de bus inter-cités en ligne. Son rôle en tant que leader technique et manager la place au cœur des opérations de développement et de gestion de projet au sein de l’entreprise.

Grâce à son expertise technique, son engagement communautaire et son leadership, Amélie Benoit apporte une contribution significative au monde du développement web et de la technologie.

Manuel Cartier

Manuel est un développeur passionné, initié à l’art du code dès l’âge de 13 ans. Animé par cette passion précoce, il entreprend des études en développement de logiciels et gestion de projets, couronnées par l’obtention d’un BTS. Son parcours exceptionnel le conduit à se distinguer dès 2015 à l’école “42” de Paris, où il se classe premier parmi tous les candidats.

Avec une solide expertise en C++, Manuel s’investit dans l’encodage vidéo et audio chez Ateme, contribuant ainsi à un transcodeur utilisant des bibliothèques faites maison, équivalentes à x264. Passionné par la diffusion en direct, il partage régulièrement ses connaissances en informatique et donne des cours de développement web sur Twitch et YouTube.

Toujours avide d’apprendre et de repousser ses limites, Manuel se lance actuellement dans l’exploration de Rust, encouragé par la migration des projets C++ vers Rust chez Facebook. Parallèlement, il explore le développement d’applications mobiles avec Ionic Framework et AngularJS, expérience acquise lors de la création d’une start-up en 2015.

Son dernier rôle en tant que développeur Fullstack chez SigFox lui permet d’approfondir sa compréhension des mécanismes de l’IoT. Aujourd’hui, son attention se porte sur l’écosystème JavaScript et l’amélioration de l’expérience utilisateur, ainsi que sur le rendu 3D sur le web avec des technologies innovantes telles que Three.js et React-Three-Fiber.

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/


LCC 308 - Après c'est avant

Posté le 19/03/2024

Cet épisode discute du retour d’expérience Java de Netflix, de jQuery, de gouvernance open source, d’Elon Musk, de Kubernetes, de Mistral (gagnant ?), d’attaques des LLMs, de développement de carrière et de Trouble du Déficit de l’Attention avec ou sans Hyperactivité.

Enregistré le 15 mars 2024

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

News

Les Cast Codeurs veulent essayer quelque chose de nouveau et le sondage montre que vous aussi. On lance donc une section “Ask Me Anything” (AMA) ! Posez-nous une question sur https://lescastcodeurs.com/ama et nous prendrons certaines questions pour y répondre. Lancez-vous, on pense que cette section pourra être sympa :).

Langages

Retour d’expérience de Netflix sur ZGC https://netflixtechblog.com/bending-pause-times-to-your-will-with-generational-zgc-256629c9386b

  • Moins de tail latency ce qui veut dire moins de charge sur le système (moins de retries).
  • Aussi plus facile de trouver les vrais problèmes de latence (plus cachés dans les latences de GC).
  • Et sans consommation supérieure de CPU pour les mêmes perfs, malgré les barrières différentes de ZGC.
  • Pas de tuning explicite de leur part (enfin presque).
  • Même si les pointeurs ne sont pas compressés, l’efficacité du GC compense.

Librairies

Sortie de Spock 2.4-M2 https://spockframework.org/spock/docs/2.4-M2/release_notes.html

  • Support de plusieurs librairies de mocking.
  • Meilleur support dans les IDEs.
  • Et plein d’autres petites améliorations.

jQuery 4 est sorti ! jQuery est de retour ! https://www.infoq.com/news/2024/03/jquery-4-beta-release-note/

  • On parle régulièrement du dernier framework JavaScript à la mode, mais jQuery est toujours là.
  • Première release majeure depuis 8 ans.
  • Suppression de plein de features qui étaient dépréciées et maintenant souvent fournie par défaut par les moteurs JavaScript des navigateurs.
  • jQuery continue d’être téléchargé de plus en plus au fil du temps, mais peut-être parce qu’il bénéficie du succès des projets qui l’utilisent, tels que Cypress, WordPress ou Drupal.

Quarkus sort sa deuxième LTS https://quarkus.io/blog/quarkus-3-8-released/

  • Explique les changements importants depuis la LTS 3.2.

Infrastructure

Linkerd, ou plutôt la boîte derrière, va faire payer pour accéder aux builds stable du projet. Cela crée des conversations au sein de la CNCF https://www.techtarget.com/searchitoperations/news/366571035/Linkerd-paywall-prompts-online-debate-CNCF-TOC-review

  • Deploy envoy, c’est plus dur.
  • Buoyant est le principal contributeur derrière Linkerd.
  • Et ils ont décidé de mettre les distributions stables derrière un paywall.
  • Pour les sociétés de plus de 50 employés ($2000 par cluster).
  • Les gens se trouvent floués, car ils ont aidé au succès et ensuite se retrouvent piégés.
  • La licence reste ASL, mais la version stable est derrière un paywall, comme Red Hat Enterprise Linux récemment.
  • Un autre exemple de projet open source qui vire commercial.
  • Questionne la gouvernance open source, la CNCF va enquêter et peut-être durcir ses critères de graduation.
  • Weaveworks (FluxCD) a aussi fermé ces dernières semaines.

Cloudflare a réécrit un proxy HTTP en Rust https://blog.cloudflare.com/how-we-built-pingora-the-proxy-that-connects-cloudflare-to-the-internet/

  • Ils ont utilisé Nginx pendant longtemps.
  • Mais le single-worker model ne permettait pas certaines optimisations.
  • Et ils ont des besoins spécifiques.
  • Bref ils ont réécrit en Rust, multithreaded et avec work stealing.
  • Et ils sont contents.

Le guide du “hater” sur Kubernetes https://paulbutler.org/2024/the-haters-guide-to-kubernetes/

  • L’auteur se plaint régulièrement de Kubernetes pour sa grande complexité, mais reconnait que c’est quand même un grand morceau de technologie.
  • À utiliser surtout quand on a besoin:
    • d’exécuter plusieurs processus/serveurs/tâches planifiées,
    • de les exécuter de manière redondante et répartir la charge entre eux,
    • de les configurer, ainsi que les relations entre eux, sous forme de code.
  • L’auteur liste ensuite les fonctionnalités qu’il utilise, celles auxquelles il fait attention quand il les utilise, et celles qu’il préfère éviter :
    • Utilise : deployments, services, cron jobs, config maps et secrets.
    • Attention : stateful set, persistent volume et RBAC.
    • Évite : le YAML à la main, les opérateurs et resources customs, Helm, tout ce qui est mesh, les resources ingress, essayer de répliquer la stack K8S complète localement sur sa machine.

Data et Intelligence Artificielle

Mistral AI et Microsoft passent un accord sur le modèle le plus puissant de Mistral, et certains ne sont pas content https://www.latribune.fr/technos-medias/informatique/l-alliance-entre-mistral-et-micr[…]usion-de-l-independance-technologique-europeenne-991558.html

  • Mistral avançait son approche open source.
  • Mais son modèle le plus puissant ne l’est pas.
  • Ils ont un partenariat exclusif avec Microsoft pour le distribuer.
  • Et MS rentre dans le capital.
  • Au revoir l’indépendance de l’IA européenne.
  • Au revoir les grands modèles open source.
  • Cela va à l’encontre du lobby et de son positionnement auprès de la commission européenne.
  • Ça fait grincer des dents à Bruxelles, qui avait allégé les contraintes sur les modèles fondamentaux à la demande de Mistral qui menaçait de devoir s’allier avec Microsoft si ce n’était pas le cas.
  • Mistral était un fer de lance des modèles open sources pour éviter les biais.
  • Ils en garderont, mais pas les modèles specialisés ou optimisés.
  • Cela reste une bonne decision économique pour Mistral.

Infinispan 15 est sorti https://infinispan.org/blog/2024/03/13/infinispan-15

  • JDK 17.
  • Redis Hot Replacement donnant : multi-threads, clustering, réplication cross-site, diff stores de persistence en disk, avoir des caches différents en namespace différentes avec des règles appliquées à chaque cas d’usage.
  • Recherche Vectorielle et stockage des embeddings.
  • Integration avec Langchain (Python), Langchain4j, et Quarkus Langchain.
  • Améliorations du search, replication cross site, la console, tracing, l’opérateur Kubernetes…
  • Support du Protobuf 3 avec la release de Protostream 5 et meilleur API.

Outillage

Ne pas signer ses commits cryptographiquement ? https://blog.glyph.im/2024/01/unsigned-commits.html

  • L’article cite comme seul avantage d’avoir le petit badge vert sur Github indiquant “vérifié”.
  • Responsabilité future inconnue et potentiellement illimitée pour les conséquences de l’exécution du code dans un commit que vous avez signé.
  • Renforcement implicite de GitHub en tant qu’autorité de confiance centralisée dans le monde de l’open source.
  • Introduction de problèmes de fiabilité inconnus dans l’infrastructure qui repose sur les signatures de commit.
  • Une violation temporaire de vos identifiants GitHub entraîne désormais des conséquences potentiellement permanentes si quelqu’un parvient à y introduire une nouvelle clé de confiance.
  • Nouveau type de surcharge de processus continu : les clés de signature de commit deviennent une nouvelle infrastructure permanente à gérer, avec de nouvelles questions comme « que faire des clés expirées », « à quelle fréquence dois-je les renouveler », etc.
  • On peut empêcher de pousser des commits non signés.

Sécurité

Des modèles avec des backdoors uploadés sur hugging faces non détectés https://arstechnica.com/security/2024/03/hugging-face-the-github-of-ai-hosted-code-that-backdoored-user-devices/

  • Par les chercheurs de JFrog.
  • Une centaine ont été détectés, dont 10 malicieux.
  • Des tests de chercheurs, mais un faisant un reverse SSH.
  • S’appuie sur le format de serialisation pickle en Python. Populaire, mais reconnu comme dangereux.

Une première side attack channel sur les LLMs https://arstechnica.com/security/2024/03/hackers-can-read-private-ai-assistant-chats-even-though-theyre-encrypted/

  • Cela s’appuie sur la taille des packets chiffrés envoyés et leur timing pour détecter la longueur des tokens.
  • Ensuite un LLM spécialisé reconstruit la suite de mots la plus probable vu la longueur.
  • C’est dû à l’UX qui envoie les tokens au fil de l’eau.
  • C’est facilement corrigeable en rendant les paquets de taille fixe et en ajoutant du hasard de délai d’envoi…
  • Mais c’est rigolo comment les LLMs peuvent amplifier les side-channel attacks.

Architecture

Netflix et Java https://www.infoq.com/presentations/netflix-java/

  • Netflix est un java shop.
  • La “stack Netflix” connue du public a beaucoup évolué.
  • Pleins de microservices.
  • Gen1 : Groovy en gateway frontend for backend, RxJava et Hystrix.
  • Gen2 : GraphQL et GraphQL fédéré ; plus de réactif dans la gateway.
  • Java 17 : 2800 apps java.
  • Utilisent Azul JDK.
  • Avaient du Java 8 sur du Guice et des app custom.
  • Utilisent G1, Java 17 = -20% CPU et Shenandoah pour la gateway Zuul.
  • Plans pour Java 21 (ZGC, virtual threads).
  • Après spéculatif.
  • Ils ont standardisé sur Spring Boot il n’y a pas si longtemps.

Un long article sur les microservices https://mcorbin.fr/posts/2024-02-12-microservice/

  • Encore un me direz vous !
  • Oui, mais si vous êtes en pleine crise existentielle avec votre équipe, c’est du bon matériel.
  • Il va sur les points importants comme synchrone vs asynchrone, les patterns de communication, la copie de données, comment tester le “monolithe” ou plutôt comment ne pas le faire…
  • C’est un peu long mais, ça recadre bien.

Méthodologies

Opinion: est-ce qu’on peut devenir dev à partir de 40 ans https://www.codemotion.com/magazine/dev-life/can-you-become-a-programmer-after-40/?utm_source=ActiveCampaign&utm_medium=email&utm_content=5+Frontend+Trends+we+Didn+t+See+Coming+in+2024&utm_campaign=NL_EN_240215+%28Copy%29&vgo_ee=sFCRn4bbw8NuvJwlxj4PgXiVS4eICnA1ZPdkH4DGKyhNNwh6NQ%3D%3D%3Au3g96%2Fz3Uf7kZHAF7tezy9Y0ZJ6paAsE

  • Programmeur de CSS à 40 ans, je sais pas 😜
  • L’auteur regrette les pubs pour devenir dev à 40 ans facilement.
  • Développeur, c’est beaucoup de connaissance et de travail et ce doit être un choix éclairé, pas un choix pas default ou facile.
  • Il décrit certains biais comme un 20 ans sans expérience est plus pardonné qu’à 40, le temps à y consacrer est différent…
  • Compensé par des actes de motivation (GitHub, participation open source, meetups…).
  • Mais le temps d’apprendre de ses erreurs n’a pas vraiment de court-circuit.
  • Bref, une formation, c’est bien mais pas suffisant.

Navigate your own way https://www.infoq.com/presentations/lessons-opportunities-carrier/

  • IBMer for 21 years. I’m a Java champion.
  • Réfléchir à sa carrière en mode time box, chercher sa promotion ? Tu peux décider ton chemin.
  • Momentum pandémie ça lui a fait beaucoup réfléchir sur sa vie et où elle était. Moment où elle quittait IBM pour aller vers RH (cœur se brise).
  • Essentiels pour prendre ton propre chemin.
  • Se connaître soit-même, reconnaître les différences avec les autres.
  • Connaître tes valeurs : qu’est-ce qui est important pour toi, qu’est-ce qui te motive ou te démotive. Écrire des mots.
  • Se fixer des objectifs avec l’aide des autres.
  • Repousser ses limites sur des sujets dont tu penses que ce n’est pas possible pour toi.
  • Participe activement, entoure-toi bien.
  • Un talk très personnel et inspirant.

Un article sur le trouble TDAH chez le développeur adulte https://rlemaitre.com/fr/posts/2023/11/hacker-le-tdah-strat%C3%A9gies-pour-le-d%C3%A9veloppeur-moderne/

  • Diagnostiqué à 44 ans.
  • Schéma d’inattention et d’hyperactivité/impulsivité qui interfère avec le fonctionnement.
  • Affecte le fonctionnement social scolaire ou professionnel.
  • Non diagnostiqué : burn out, anxiété ou depression.
  • Souvent non diagnostiqué jusqu’à ce que ses propres enfants soient diagnostiqués.
  • Mais cela amène du positif : hyperfocus, résolution créative de problèmes, adaptation rapide aux changements qui sont du pain béni.
  • Le négatif, c’est la gestion du temps, l’organisation, l’instabilité.
  • Discute ensuite les phénomènes dans le cerveau.
  • Et donne des techniques et des pièges à éviter.
  • Vous avez sûrement des collègues TDAH ou, l’êtes-vous vous-même.

Conférences

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/


LCC 307 - Interview sur la passion, la créativité et le fun sur le long terme avec Holly Cummins et Mark Jane

Posté le 04/03/2024

Enregistré le 27 février 2024

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

Interview

Les Cast Codeurs accueillent deux invités spéciaux pour explorer un aspect crucial de la carrière informatique : comment conserver la passion, la créativité et le plaisir au fil du temps.

Holly Cummins et Mark Jane

Holly Cummins
Mark Jane

Holly Cummins est dans l’open-source depuis 20 ans. Elle est Java Champion et JavaOne Rock Star. Elle a co-écrit le livre ‘Enterprise OSGi in Action’ chez Manning et a présenté des conférences dans divers événements renommés tels que JavaOne, Devoxx, et JAX London. Elle travaille chez Red Hat en 2024, et contribue principalement sur Quarkus.

Mark Jane, est un acteur accompli et improvisateur chevronné depuis 1994. Il rejoint la troupe Eux en 2016, jouant dans le spectacle Bio à Paris, et Pilote et Chaos en 2024. Il a écrit le livre “Jeux et enjeux: La boîte à outils de l’improvisation théatrale”.

Les deux naviguent leur carrière avec passion, créativité et fun depuis +20 ans.

Dans ce podcast, Holly et Mark partagent leurs conseils et expériences uniques, découvrant de nombreux points communs malgré l’apparente disparité entre leurs deux professions.

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/


LCC 306 - Alors tu squash ou tu pointes?

Posté le 13/02/2024

Dans cet épisode, Katia, Emmanuel et Arnaud explorent de nouvelles approches du Builder pattern en Java, l’introduction du Pattern Matching des Primitives en Java, et les déboires de l’intelligence artificielle avec des attaques de la chaîne d’approvisionnement sur Pytorch. Ils abordent aussi les licenciements dans diverses entreprises technologiques, l’évolution du trafic de Stackoverflow et donnent de conseils pratiques pour les développeurs, notamment sur les commits conventionnels, la mise à jour de dépendances avec Dependabot, Renovate et le débogage des programmes Java. Ils terminent avec leur retour d’expérience sur la relecture des sujets de Devoxx France 2024.

Enregistré le 9 février 2024

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

Votre avis compte énormément pour nous ! 🎧 Nous voulons rendre Les Cast Codeurs encore plus genial, et c’est là que vous intervenez. 🌟 Aidez-nous en partageant vos idées, suggestions et souhaits pour 2024, dans notre tout nouveau formulaire de retour. C’est rapide, facile et ça ne prend que 2 minutes.

News

Langages

Une approche différente du Builder pattern en Java, inspirée par ce qui se fait dans la communauté Golang https://glaforge.dev/posts/2024/01/16/java-functional-builder-approach/

  • Les builders, surtout quand ils sont imbriqués les uns dans les autres, peuvent devenir un peu verbeux à lire.
  • Est-ce qu’on peut prendre une nouvelle approche ? Oui, en tirant parti des lambdas, avec des méthodes de mutation qui retournent des lambda qui effectuent la mutation.
  • On retrouve le plaisir de pouvoir construire une instance à l’aide d’un constructeur, plutôt qu’un builder.
  • En recherchant le sujet, Guillaume est aussi tombé sur une approche type safe du builder classique https://www.endoflineblog.com/type-safe-builder-pattern-in-java-and-the-jilt-library (qui est implémentée sous forme d’annotation processor dans le petit projet open source Jilt).

Pattern Matching Primitives (JEP 455) https://openjdk.org/jeps/455

  • Uniformité autorisant le pattern de type pour tous les types, qu’ils soient primitifs ou de référence et sécurité dans la conversion de types et éviter les erreurs runtime pour les conversions de type. Plus de robustesse.
  • Ça l’explique bien ici. Les deux https://www.infoq.com/news/2024/02/java-enhances-pattern-matching/.
  • Exemple :
    • Avant
      if (i >= -128 && i <= 127) {
          byte b = (byte)i;
          ... b ...
      }
      
    • Maintenant
      if (i instanceof byte b) {
          ... b ...
      }
      byte b = 42;
      b instanceof int;         // true (unconditionally exact)
      int i = 42;
      i instanceof byte;        // true (exact)
      int i = 1000;
      i instanceof byte;        // false (not exact)
      

News Java, le tour https://www.infoq.com/news/2024/02/java-news-roundup-jan29-2024/

  • Open JDK avec preview de Classe File API,
  • JDK 22 et 23,
  • Glassfish, GraalVM, Spring, Quarkus, Infinispan, Hibernate, Grails, Vert.x… plein d’outils,
  • Keycloak,
  • Langchain,
  • Lire les détails dans l’article d’InfoQ.

Data et Intelligence Artificielle

Une attaque de supply chain sur Pytorch et l’IA https://johnstawinski.com/2024/01/11/playing-with-fire-how-we-executed-a-critical-supply-chain-attack-on-pytorch/

  • Soumettre une PR avec une correction de typo.
  • Ça leur a permis de faire tourner la CI automatiquement quand ils poussent la PR.
  • Soumis une PR qui curl fetch un gist qui tournait sur un runner auto-hébergé.
  • Et ils ont choppé les tokens pour plus tard publier les binaires dans les repos officiels.
  • Et personne n’a rien vu.

Support du modèle de génération d’image Imagen dans LangChain4j rajouté dans la dernière version du project https://glaforge.dev/posts/2024/02/01/image-generation-with-imagen-and-langchain4j/

  • Contribué par Guillaume.
  • On peut générer des images, mais aussi les éditer.

Collab entre Google et Hugging Face https://www.infoq.com/news/2024/01/hugging-face-gcp-ai/

  • Intégration avec Vertex.ai et d’autres services Google.
  • Facilite le deploy dans le cloud Google et l’intégration avec Kubernetes.

Guillaume a écrit un article et développé une application pour visualiser les tokens générés par les Large Language Models dérivés du modèle PaLM https://glaforge.dev/posts/2024/02/05/visualize-palm-based-llm-tokens/

Outillage

Stackoverflow voit son traffic diminuer doucement depuis quelques années, mais depuis l’avènement de ChatGPT et consort, la chute s’accélère https://twitter.com/swyx/status/1753122780709871834

Amélie Benoit - Dependabot Visual way https://twitter.com/AmelieBenoit33/status/1754397434812203455

Méthodologies

Le pouvoir des “conventional commits” par Julien Ponge https://julien.ponge.org/blog/the-power-of-conventional-commits/

  • Convention poussée par l’équipe Angular, à la base.
  • Pour standardiser et clarifier les messages de commits.
  • Mais aussi pratique pour les outils comme JReleaser pour automatiser les release notes d’un projet.

Loi, société et organisation

Google vire encore des ingénieurs dans la division matérielle pixel, et dans les ingénieurs cœur https://www.nytimes.com/2024/01/11/technology/google-layoffs.html

Okta vire 400 personnes dont Matt Raible https://techcrunch.com/2024/02/01/okta-layoffs-400-employees/

  • Cela suit Microsoft (gaming), eBay, SAP, RIOT Games (League of Legends), Google, Amazon (Prime, Audible), Unity et plein d’autres.
  • Tout ça juste en janvier.

Facebook fête ses 20 ans https://www.francetvinfo.fr/internet/reseaux-sociaux/facebook/facebook-a-20-ans-de-sit[…]la-lente-mutation-du-doyen-des-reseaux-sociaux_6323610.html https://www.bbc.com/news/technology-68109208

  • Quoi dire de plus, le temps passe vite… #old

Rubrique débutant

Manuel de survie de la femme dans la tech https://www.duchess-france.fr/dossier/women%20in%20tech/alli%C3%A9s/2023/01/15/manuel-survie-femme-tech.html

Java Thread Dump - VisualVM, jstack, kill -3, jcmd https://www.digitalocean.com/community/tutorials/java-thread-dump-visualvm-jstack-kill-3-jcmd

  • Parfois vos programmes Java ont l’air bloqués.
  • Vous pouvez effectuer un thread dump dans un autre terminal en récupérant le PID du process Java et en faisant un kill -3 PID.

Conférences

Dans les coulisses du Call for Paper de Devoxx France 2024.

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/


LCC 305 - Dia critique

Posté le 15/01/2024

Cet épisode news discute de langages, de bibliothèques, d’intelligence artificielle bien sûr et même de Web. Et puis de challenge Java et même de Père Noël !

Enregistré le 12 janvier 2024

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

News

RIP Niklaus Wirth https://en.wikipedia.org/wiki/Niklaus_Wirth

  • Informaticien Suisse
  • Conception des langages ALGOL, Modula-2 et… Pascal
  • Plusieurs distinctions: Turing 1984, John Von Neumann 1994. Depuis 1987 un prix créé à son honneur
  • Plusieurs livres dont Algorithms + Data Structures = Programs 1976
  • La Loi de Wirth: La beauté d’un programme réside dans la clarté de sa structure. Niklaus Wirth a toujours prôné la simplicité, la lisibilité et la compréhensibilité. Approche pragmatique

https://recording.zencastr.com/lescastcodeurs/news-305

Langages

L’enfer sur terre: equals and hashCode pour les entitées JPA. Tout le monde a un avis, faire le sien est compliqué

Kotlin va t’il décliné en 2025, faute d’innovation et avec les nouvelles features de Java ? https://shiftmag.dev/kotlin-vs-java-2392/

  • Selon l’auteur, d’autres langages alternatifs pour la JVM ont décliné, comme Groovy et Scala
  • L’auteur pense qu’il y aura de moins en moins de différenciants par rapport à Java, et Kotlin n’a pas rajouté de fonctionnalités significatives depuis un an ou deux

Comment enlever des accents et autres marques diacritiques dans des chaines de caractères en Java https://glaforge.dev/posts/2024/01/url-slug-or-how-to-remove-accents-in-java/

  • Pour les URLs d’un blog post, par exemple, on souhaite avoir le titre dans l’URL, mais de manière URL-friendly, donc sans accents, en remplaçant les espaces par des tirets, etc
  • Guillaume propose une approche basée sur la normalisation de chaine unicode et les expressions régulières
  • Mais il évoque également la librairie Slugify qui est en plus capable de faire de la translitération (pour transformer aussi des idéogrammes et autre caractères non-ASCII)

Les “gatherers” de JDK 22 https://blog.soebes.io/posts/2024/01/2024-01-07-jdk-gatherer/

  • Nous avons mentionné récemment le JEP 461 pour Java 22 : Stream Gatherers, qui sera en preview
  • Permet de faire des choses qui étaient un peu compliquées à faire avec l’API stream avant, comme par exemple implémenter des fenêtres glissantes sur les données du stream
  • L’article parle des différentes capacités des gatherers, avec un Integrator, un Initializer et un Finisher, et enfin un Combiner, avec différents exemples de code pour les illustrer

Librairies

Le fonds tech souverain d’origine allemande sponsorise le développement de Log4J https://www.sovereigntechfund.de/news/log4j-investment

  • 3 contributeurs pourront bosser dessus à temps plein
  • permet de sécuriser le développement du projet
  • réaction à l’impact de la CVE Log4shell qui avait bien marqué les esprits et fait bosser plein de gens le weekend pour tout patcher !

Cloud

Le glossaire de la Cloud Native Foundation a été traduit en Français https://glossary.cncf.io/fr/

Web

Sortie de Vue.JS 3.4 https://blog.vuejs.org/posts/vue-3-4

  • le parseur de composants (SFC) est 2x plus rapide
  • amélioration du système de réactivité en particulier pour les propriétés “computed” (recalculées)
  • le namespace JSX deprecated a été supprimé
  • Cédric Exbrayat de NinjaSquad couvre également les nouveautés dans cet article https://blog.ninja-squad.com/2023/12/29/what-is-new-vue-3.4/

Astro JS 4.1 https://astro.build/blog/astro-410/

  • Découverte de ce FW grâce à Petipois https://medium.com/front-end-weekly/create-a-website-using-astro-in-2024-f5963003c19c
  • Astro est le framework web pour la construction de sites web axés sur le contenu tels que les blogs, le marketing et le commerce électronique. Astro est surtout connu pour être le pionnier d’une nouvelle architecture frontend afin de réduire la surcharge et la complexité de JavaScript par rapport aux autres frameworks
  • Architecture en “Astrot Islands” (interface en composants isolés)
  • SSG et SSR (Static Site Generator ey Server Side Rendering)
  • 0 Javascript si tu veux
  • Tu utilises React, Angular ou Vue pour tes composants
  • Lis plus ici : https://kinsta.com/fr/blog/astro-js/

React à 10 ans… et là ma découverte de React Server Components https://www.joshwcomeau.com/react/server-components/#introduction-to-react-server-components-3

  • “At a high level, React Server Components is the name for a brand-new paradigm. In this new world, we can create components that run exclusively on the server.”
  • L’idée est de n’est pas faire des composants entiers en react dans le backend, et de n’est pas déléguer aux rendering client pour ces composants

Prédictions 2024 https://thenewstack.io/2024-predictions-by-javascript-frontend-framework-maintainers/

  • Angular: Optional Zone.JS
  • Next.js (nouveau compilateur, + backend ?)
  • React: adoption de React Server Components, SPA ne suffit pas. React auto-memorizing (useCallback/useMemo deprecate)
  • Solid 2.0 viendra après SolidStart (framework web)

Data et Intelligence Artificielle

Retour d’experience sur faire du RAG avec des LLMs https://x.com/taranjeetio/status/1742587923189596531?s=20

Gunnar Morling a lancé le 1 billion row challenge : https://www.morling.dev/blog/one-billion-row-challenge/

  • L’idée est de calculer le min / max, la moyenne, de températures, indiquées ligne par ligne dans un énorme fichier
  • Il y a énormément de contributions. Les plus rapides ont utilisé des memory mapped files, ou bien des instructions SIMD
  • Le challenge était en pur Java, mais d’autres personnes ont tenté l’expérience avec diverses bases de données ou autres langages de programmation

Didier Girard parle de Shadow AI https://www.linkedin.com/posts/didiergirard_shadowai-genai-gouvernance-activity-7150031627006464000-IF1G/

  • Comme on a parlé de “shadow IT” à une époque, la nouvelle ombre du jour, c’est l’intelligence artificielle
  • Pour être plus productifs, les employés utilisent l’IA, sans forcément le dire à leur employeur
  • Le problème étant qu’avec certains système d’IA, les données que vous envoyées peuvent être sauvegardées et utilisées pour ré-entrainer l’IA… et potentiellement, l’IA pourrait recracher verbatim du texte provenant de ces données à d’autres utilisateurs. D’où une brèche dans la sécurité des données de l’entreprise

Appel de fonction avec le LLM Gemini de Google https://glaforge.dev/posts/2023/12/22/gemini-function-calling/

  • Les Large Language Model sont limités par les connaissances qu’ils ont acquises lors de leur entrainement
  • Une approche possible pour se baser sur une base documentaire est d’utiliser l’approche Retrieval Augmented Generation (RAG) où l’on utilise une base de données vectorielle pour récupérer des passages de texte qui correspondent à la requête demandée
  • Mais il existe aussi une approche intéressante qui permet d’appeler des systèmes externes (APIs, service local, etc) en permettant au LLM de savoir qu’il peut répondre à une demande donnée en se basant sur l’appel d’une fonction. Dans cette approche, le LLM répond qu’il faudrait appeler une fonction (par exemple pour connaitre la météo à Paris) et il indique quels paramètres passer (“Paris”). Le développeur ensuite appel cette fonction et retourne le résultat de l’invocation au LLM, qui va ensuite pouvoir générer du texte avec ces données.
  • C’est l’approche “function calling” qui permet d’étendre à un LLM pour lui donner accès à des données live, derrière une API, etc

Méthodologies

Une video sur le père Noël et la pensé critique de la Tronce en Biais https://youtu.be/tqlYKO_asFw?si=g1Fq5OfCvQONNb2i

  • Vidéo interessante pour comprendre comment nous, dans la tech, on peut tomber facilement sur des croyances qui sont doutantes si on développe pas l’esprit critique.
  • Le père Noël, véritable complot planétaire des adultes, magasins, médias … d’un mensonge
  • Un enfant qui essaie d’appliquer le procédé épistémologique, il n’a pas d’autre source pour vérifier que le père noël n’existe pas, tous ses sources fiables duquel il apprend le monde (parents, profs, medias, histoires, medias) valident que le père noël existe.
  • Expliquer les incoherences par la magie, c’est quelque chose de complément banal dans l’univers d’un enfant à qui on parle en permanence de magie
  • La découverte de la mensonge aux alentours de 7 ans, l’age de la raison, est une bonne opportunité pour aborder l’esprit critique avec les enfants

Loi, société et organisation

EU AI Act cheat sheet https://www.linkedin.com/posts/yann-lecun_eu-ai-act-cheat-sheet-understand-activity-7139980837013331971-TDqI?utm_source=share&utm_medium=member_ios

  • Les entreprises vont avoir 1 ou 2 ans pour s’y conformer
  • Basics: Definition de l’AI, extraterritorialité, exceptions (oss, r&D, mais aussi défense …), classification par niveaux de risks (Prohibited > High Risk > Limited Risk > Minimal Risk)
  • Prohibited: Biometrique, social credit scoring, detection d’emotions, renforcement des lois basées sur l’identification biometrique en public
  • High (des régles sont définies pour controler ces usages: transparence, qualité, risque …): Le matériel médical, les véhicules, l’éducation, les élections, …
  • General: Transparence et information

ChatGPT n’est pas un super médecin https://x.com/drhughharvey/status/1736308984288563550?s=46&t=C18cckWlfukmsB_Fx0FfxQ

  • ces d’utilisation ChatGPT en copilote
  • Trop de non déterminisme dans les réponses à la même question
  • 41% des réponses dans le consensus médical
  • 7% dangereuse
  • Faire du rag n’a monté que de quelques pourcents 5

Transcription de la conférence donnée PGConf EU par Laetitia Avrot et Karen Jex (expertes Postgresql): Trying to be Barbie in Ken’s Mojo Dojo Casa House https://karenjex.blogspot.com/2023/12/trying-to-be-barbie-in-kens-mojo-dojo.html

  • Il s’agit d’une conférence en sociologie. En sociologie, il suffit que quelque chose soit vrai pour la majorité des cas pour être considéré comme une vérité, car cela repose sur des statistiques.
  • Sujet donné pour susciter de l’attention sur un problème qui existe bien dans la tech. Elles ont réalisé que la grande majorité de la population n’en était pas consciente (barbie)! Le film Barbie les a fait comprendre qu’elles doivent expliquer ce à quoi les femmes sont confrontées au quotidien, afin que les autres puissent comprendre à quel point cela peut être épuisant.
  • Très bien documenté avec bcp de liens et références au delà de l’expérience personnelle
  • Transcription et slides dans l’article
  • Lien entre film Barbie et la place des femmes dans la tech. Idées non neuves mais cela a été un impact
  • Les biais en général ne sont pas particuliers à un genre, sont globales. Test sur les biais implicites
  • Il existe un déficit de talents technologiques (estimé atteindre de 1,4 million à 3,9 millions de personnes d’ici 2027 dans les pays de l’UE-27), qui pourrait potentiellement être comblé en doublant la proportion de femmes dans le secteur technologique. Cependant, la part des femmes dans les rôles technologiques connaît sa plus basse représentation dans les domaines en pleine croissance tels que DevOps et le cloud.
  • plus de la moitié des femmes quittent l’industrie technologique 10 à 20 ans après le début de leur carrière, soit le double du taux des hommes. (manque d’opportunités, difficultés face aux biais, se sentir comme une outsider etc…)
  • La part des femmes dans les rôles technologiques en Europe risque de diminuer pour atteindre 21% d’ici 2027.
  • Solutions: roles modèles, combattre nos biais (si on ne les reconnait pas, on ne peut pas le combattre), mentoring, faire attention à donner de la voix etc…

New York Times porte plainte à open ai https://www.bbc.com/news/technology-67826601

  • réclame des billions en copy right, suit aussi Microsoft et Bing qui utilise open ai
  • on peut trouver des extraits des articles avec suscription disponibles
  • Si on demande à chat gpt sur des news actuelles, reprend des explications tirés du NYT sans le mentionner
  • Sur bing on peut trouver aussi des extraits sans citer ni linker la source
  • Conséquences pour NYT: moins d’accès à leur site, moins de consultations, moins des clicks, chute des suscriptions, pertes monétaires importantes
  • Réponse de OpenAI au NYT https://openai.com/blog/openai-and-journalism
    • We collaborate with news organizations and are creating new opportunities
    • Training is fair use, but we provide an opt-out because it’s the right thing to do
    • “Regurgitation” is a rare bug that we are working to drive to zero
    • The New York Times is not telling the full story

Outils de l’épisode

Userscripts https://github.com/quoid/userscripts: extension pour changer le CSS et JS des sites dans votre navigateur

Rubrique débutant

Guillaume a publié 2 “codelabs” pour démarrer sur LangChain4J, en utilisant le LLM PaLM de Google https://glaforge.dev/posts/2023/12/18/get-hands-on-codelabs-to-dabble-with-llms/

  • Ces 2 tutoriels pratiques permettent de découvrir les deux modèles text et chat de PaLM
  • Différentes tâches sont illustrées pour faire de simples questions/réponses, de simples chat, mais aussi comment extraire des données structurées d’un texte, comment faire de la classification (avec un exemple d’analyse de sentiment)

Google Summer of Code - appel aux projets https://summerofcode.withgoogle.com/

Conférences

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/