LCC 313 - 313 CCL
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 unResult<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 :
- 12-14 juin 2024 : Rencontres R - Vannes (France)
- 13-14 juin 2024 : Agile Tour Toulouse - Toulouse (France)
- 14 juin 2024 : DevQuest - Niort (France)
- 18 juin 2024 : Mobilis In Mobile 2024 - Nantes (France)
- 18 juin 2024 : BSides Strasbourg 2024 - Strasbourg (France)
- 18 juin 2024 : Tech & Wine 2024 - Lyon (France)
- 19-20 juin 2024 : AI_dev: Open Source GenAI & ML Summit Europe - Paris (France)
- 19-21 juin 2024 : Devoxx Poland - Krakow (Poland)
- 26-28 juin 2024 : Breizhcamp 2024 - Rennes (France)
- 27 juin 2024 : DotJS - Paris (France)
- 27-28 juin 2024 : Agi Lille - Lille (France)
- 4-5 juillet 2024 : Sunny Tech - Montpellier (France)
- 8-10 juillet 2024 : Riviera DEV - Sophia Antipolis (France)
- 6 septembre 2024 : JUG Summer Camp - La Rochelle (France)
- 6-7 septembre 2024 : Agile Pays Basque - Bidart (France)
- 17 septembre 2024 : We Love Speed - Nantes (France)
- 17-18 septembre 2024 : Agile en Seine 2024 - Issy-les-Moulineaux (France)
- 19-20 septembre 2024 : API Platform Conference - Lille (France) & Online
- 25-26 septembre 2024 : PyData Paris - Paris (France)
- 26 septembre 2024 : Agile Tour Sophia-Antipolis 2024 - Biot (France)
- 2-4 octobre 2024 : Devoxx Morocco - Marrakech (Morocco)
- 7-11 octobre 2024 : Devoxx Belgium - Antwerp (Belgium)
- 8 octobre 2024 : Red Hat Summit: Connect 2024 - Paris (France)
- 10 octobre 2024 : Cloud Nord - Lille (France)
- 10-11 octobre 2024 : Volcamp - Clermont-Ferrand (France)
- 10-11 octobre 2024 : Forum PHP - Marne-la-Vallée (France)
- 11-12 octobre 2024 : SecSea2k24 - La Ciotat (France)
- 16 octobre 2024 : DotPy - Paris (France)
- 17-18 octobre 2024 : DevFest Nantes - Nantes (France)
- 17-18 octobre 2024 : DotAI - Paris (France)
- 30-31 octobre 2024 : Agile Tour Nantais 2024 - Nantes (France)
- 30-31 octobre 2024 : Agile Tour Bordeaux 2024 - Bordeaux (France)
- 31 octobre 2024-3 novembre 2024 : PyCon.FR - Strasbourg (France)
- 6 novembre 2024 : Master Dev De France - Paris (France)
- 7 novembre 2024 : DevFest Toulouse - Toulouse (France)
- 8 novembre 2024 : BDX I/O - Bordeaux (France)
- 13-14 novembre 2024 : Agile Tour Rennes 2024 - Rennes (France)
- 20-22 novembre 2024 : Agile Grenoble 2024 - Grenoble (France)
- 21 novembre 2024 : DevFest Strasbourg - Strasbourg (France)
- 27-28 novembre 2024 : Cloud Expo Europe - Paris (France)
- 28 novembre 2024 : Who Run The Tech ? - Rennes (France)
- 3-5 décembre 2024 : APIdays Paris - Paris (France)
- 4-5 décembre 2024 : DevOpsDays Paris - Paris (France)
- 4-5 décembre 2024 : Open Source Experience - Paris (France)
- 6 décembre 2024 : DevFest Dijon - Dijon (France)
- 22-25 janvier 2025 : SnowCamp 2025 - Grenoble (France)
- 16-18 avril 2025 : Devoxx France - Paris (France)
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/