LCC 298 - De l'IA à toutes les sauces
Posté le 24/07/2023Dans cet épisode estival Guillaume, Emmanuel et Arnaud parcourent les nouvelles du début d’été. Du Java, du Rust, du Go du côté des langages, du Micronaut, du Quarkus pour les frameworks, mais aussi du WebGPU, de l’agilité, du DDD, des sondages, de nombreux outils et surtout de l’intelligence artificielle à toutes les sauces (dans les bases de données, dans les voitures…).
Enregistré le 21 juillet 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-298.mp3
News
Langages
La release candidate de Go 1.21 supporte WASM et WASI nativement https://go.dev/blog/go1.21rc
StringBuilder
ou concatenation de String
https://reneschwietzke.de/java/the-stringbuilder-advise-is-dead-or-isnt-it.html
StringBuilder
était la recommendation car ça créait moins d’objets notamment.- Mais la JVM a évolué et le compilateur ou JIT remplace cela par du code efficace.
- Quelques petites exceptions.
- Le code froid (c.-à-d. startup time) qui est encore interprété peut bénéficier de
StringBuilder
. - Autre cas, la concatenation dans des boucles où le JIT ne pourrait peut-être pas optimiser.
- Le
StringBuilder
“fluid” est plus efficace (inliné ?). - Ces règles ne changent pas si des objets sont stringifié pour être concaténés.
GPT-4 n’est pas une révolution https://thealgorithmicbridge.substack.com/p/gpt-4s-secret-has-been-revealed
- Rumeurs, car beaucoup de secrets autour de GPT-4
- Pas un modèle à 1 trillion de paramètres, mais 8 à 220 milliards combinés intelligemment.
- Les chercheurs attendaient un breakthrough mais c’est une évolution et pas particulièrement nouveau.
- Méthode déjà implémentée par des chercheurs chez Google (maintenant chez OpenAI).
- Ils ont retardé la compétition avec ces rumeurs de breakthrough, mais 8 LLaMA peuvent peut-être rivaliser avec GPT-4.
Le blog Open Source de Google propose un article sur 5 mythes ou non sur l’apprentissage et l’utilisation de Rust https://opensource.googleblog.com/2023/06/rust-fact-vs-fiction-5-insights-from-googles-rust-journey-2022.html
- Il faut plus de 6 mois pour apprendre Rust : plutôt faux ; quelques semaines à 3-4 mois max.
- Le compilateur Rust n’est pas aussi rapide qu’on le souhaiterait — vrai !
- Le code unsafe et l’interop sont les plus gros challenges — faux, ce sont plutôt les macros, l’ownership/borrowing et la programmation asynchrone.
- Rust fournit des messages d’erreur de compilation géniaux — vrai.
- Le code Rust est de haute qualité — vrai.
InfoQ sort un nouveau guide sur le Pattern Matching pour le switch de Java https://www.infoq.com/articles/pattern-matching-for-switch/
- Le pattern matching supporte tous les types de référence.
- L’article parle du cas de la valeur
null
. - L’utilisation des patterns “guarded” avec le mot clé
when
. - L’importance de l’ordre des
case
s. - Le pattern matching peut être utilisé aussi avec le
default
desswitch
s - Le scope des variables du pattern.
- Un seul pattern par case label.
- Un seul case match-all dans un bloc
switch
. - L’exhaustivité de la couverture des types.
- L’utilisation des generics.
- La gestion d’erreur avec
MatchException
.
Librairies
Sortie de Micronaut 4 https://micronaut.io/2023/07/14/micronaut-framework-4-0-0-released/
- Langage minimal : Java 17, Groovy 4 et Kotlin 1.8.
- Support de la dernière version de GraalVM.
- Utilisation des GraalVM Reachability Metadata Repository pour faciliter l’utilisation de Native Image.
- Gradle 8.
- Nouvel Expression Language, à la compilation, pas possible au runtime (pour des raisons de sécurité et de support de pré-compilation).
- Support des Virtual Threads.
- Nouvelle couche HTTP, éliminant les stack frames réactives quand on n’utilise pas le mode réactif.
- Support expérimental de IO Uring et HTTP/3.
- Des filtres basés sur les annotations.
- Le HTTP Client utilise maintenant le Java HTTP Client.
- Génération de client et de serveur en Micronaut à partir de fichier OpenAPI.
- L’utilisation YAML n’utilise plus la dépendance SnakeYAML (qui avait des problèmes de sécurité).
- Transition vers Jakarta terminé
- Et plein d’autres mises à jour de modules
- Couverture par InfoQ https://www.infoq.com/news/2023/07/micronaut-brings-virtual-thread/
Quarkus 3.2 et LTS
- https://quarkus.io/blog/quarkus-3-2-0-final-released/
- https://quarkus.io/blog/quarkus-3-1-0-final-released/
- https://quarkus.io/blog/lts-releases/
Infrastructure
Red Hat partage les sources de sa distribution au travers de son Customer Portal, et impacte la communauté qui se base dessus https://almalinux.org/blog/impact-of-rhel-changes/
- RedHat a annoncé un autre changement massif qui affecte tous les rebuilds et forks de Red Hat Enterprise Linux.
- À l’avenir, Red Hat publiera uniquement le code source pour les RHEL RPMs derrière leur portail client.
- Comme tous les clones de RHEL dépendent des sources publiées, cela perturbe encore une fois l’ensemble de l’écosystème Red Hat.
Une analyse du choix de Red Hat sur la distribution du code source de RHEL https://dissociatedpress.net/2023/06/24/red-hat-and-the-clone-wars/
Une réponse de Red Hat aux feux démarrés par l’annonce de la non-distribution des sources de RHEL en public https://www.redhat.com/en/blog/red-hats-commitment-open-source-response-gitcentosorg-changes
Et un lien vers un de ces feux d’une personne proéminente dans la communauté Ansible https://www.jeffgeerling.com/blog/2023/im-done-red-hat-enterprise-linux
Oracle demande à garder un Linux ouvert et gratuit https://www.oracle.com/news/announcement/blog/keep-linux-open-and-free-2023-07-10/
- Suite à l’annonce d’IBM/RedHat, Oracle demande à garder Linux ouvert et gratuit.
- IBM ne veut pas publier le code de RHEL car elle doit payer ses ingénieurs.
- Alors que RedHat a pu maintenir son modèle économique durant des années.
- L’article revient sur CentOS qu’IBM “a tué” en 2020.
- Oracle continu ses efforts de rendre Linux ouvert et libre.
- Oracle Linux continuera à être compatible avec RHEL jusqu’à la version 9.2. Après, ça sera compliqué de maintenir une compatibilité.
- Oracle embauche des devs Linux.
- Oracle demande à IBM de récupérer le downstream d’Oracle et de le distribuer.
SUSE forke RHEL https://www.suse.com/news/SUSE-Preserves-Choice-in-Enterprise-Linux/
- SUSE est la société derrière Rancher, NeuVector, et SUSE Linux Enterprise (SLE).
- Annonce un fork de RHEL.
- $10M d’investissement dans le projet sur les prochaines années.
- Compatibilité assurée de RHEL et CentOS.
Web
Google revend son service de nom de domaine à Squarespace https://www.reddit.com/r/webdev/comments/14agag3/squarespace_acquires_google_domains/
- et ça n’était pas gratuit, donc on n’est pas censé être le produit 😉
- Squarespace est une entreprise américaine spécialisée dans la création de sites internet.
- Squarespace est un revendeur de Google Workspace depuis longtemps.
- La vente devrait se finaliser en Q3 2023.
Petite introduction à WebGPU en français https://blog.octo.com/connaissez-vous-webgpu/
Data
Avec la mode des Large Language Models, on parle de plus en plus de bases de données vectorielles, pour stocker des “embeddings” (des vecteurs de nombre flottant représentant sémantiquement du texte, ou même des images). Un article explique que les Vecteurs sont le nouveau JSON dans les bases relationnelles comme PostgreSQL https://jkatz05.com/post/postgres/vectors-json-postgresql/
- L’article parle en particulier de l’extension pgVector qui est une extension pour PostgreSQL pour rajouter le support des vectors comme type de colonne.
- Google Cloud annonce justement l’intégration de cette extension vectorielle à CloudSQL pour PostgreSQL et à AlloyDB pour PostgreSQL : https://cloud.google.com/blog/products/databases/announcing-vector-support-in-postgresql-services-to-power-ai-enabled-applications.
- Il y a également une vidéo, un notebook Colab, et un article plus détaillé techniquement utilisant LangChain : https://cloud.google.com/blog/products/databases/using-pgvector-llms-and-langchain-with-google-cloud-databases.
- Mais on voit aussi également Elastic améliorer Lucene pour utiliser le support des instructions SIMD pour accélérer les calculs vectoriels (produit scalaire, distance euclidienne, similarité cosinus) : https://www.elastic.co/fr/blog/accelerating-vector-search-simd-instructions.
Outillage
Le sondage de StackOverflow 2023 https://survey.stackoverflow.co/2023/
- L’enquête a été réalisée auprès de 90 000 développeurs dans 185 pays.
- Les développeurs sont plus nombreux (+2%) que l’an dernier à travailler sur site (16% sur site, 41% remote, 42% hybrid).
- Les développeurs sont également de plus en plus nombreux à utiliser des outils d’intelligence artificielle, avec 70 % d’entre eux déclarant les utiliser (44%) ou prévoyant de les utiliser (25) dans leur travail.
- Les langages de programmation les plus populaires sont toujours JavaScript, Python et HTML/CSS.
- Les frameworks web les plus populaires sont Node, React, JQuery.
- Les bases de données les plus populaires sont PostgreSQL, MySQL, et SQLite.
- Les systèmes d’exploitation les plus populaires sont Windows puis macOS et Linux.
- Les IDE les plus populaires sont Visual Studio Code, Visual Studio et IDEA IntelliJ.
Les différents types de déplacement dans Vim https://www.barbarianmeetscoding.com/boost-your-coding-fu-with-vscode-and-vim/moving-blazingly-fast-with-the-core-vim-motions/
JetBrains se met aussi à la mode des assistants IA dans l’IDE https://blog.jetbrains.com/idea/2023/06/ai-assistant-in-jetbrains-ides/
- Une intégration avec OpenAI, mais aussi de plus petits LLMs spécifiques à JetBrains.
- Un chat intégré pour discuter avec l’assistant, puis la possibilité d’intégrer les snippets de code là où se trouve le curseur.
- Possibilité de sélectionner du code et de demander à l’assistant d’expliquer ce que ce bout de code fait, mais aussi de suggérer un refactoring, ou de régler les problèmes potentiels.
- On peut demander à générer la JavaDoc d’une méthode, d’une classe, etc, ou à suggérer un nom de méthode (en fonction de son contenu).
- Génération de message de commit.
- Il faut avoir un compte JetBrains AI pour y avoir accès.
Des commandes macOS plus ou moins connues https://saurabhs.org/advanced-macos-commands
caffeinate
— pour garder le mac éveillé,pbcopy
/pbpaste
— pour interagir avec le clipboard,networkQuality
— pour mesurer la rapidité de l’accès à internet,sips
— pour manipuler / redimensionner des images,textutil
— pour convertir des fichiers Word, texte, HTML,screencapture
— pour faire un screenshot,say
— pour donner une voix à vos commandes.
Le sondage de la communauté ArgoCD https://blog.argoproj.io/cncf-argo-cd-rollouts-2023-user-survey-results-514aa21c21df
Un client d’API open-source et cross platform pour GraphQL, REST, WebSockets, Server-sent events et gRPC https://github.com/Kong/insomnia
Architecture
Moderniser l’architecture avec la découverte via le domain driven discovery https://www.infoq.com/articles/architecture-modernization-domain-driven-discovery/
- Un article très détaillé pour moderniser son architecture en utilisant une approche Domain-Driven Discovery qui se fait en 4 étapes : 1- Encadrer le problème – Clarifier le problème que vous résolvez, les personnes touchées, les résultats souhaités et les contraintes de solution. 2- Analyser l’état actuel – Explorer les processus opérationnels et l’architecture des systèmes existants afin d’établir une base de référence pour l’amélioration. 3- Explorer l’état futur – Concevoir une architecture modernisée fondée sur des contextes délimités, établir des priorités stratégiques, évaluer les options et créer des solutions pour l’état futur. 4- Créer une feuille de route – Créer un plan pour moderniser l’architecture au fil du temps en fonction des flux de travail ou des résultats souhaités.
Récemment, Sfeir a lancé son blog de développement sur https://www.sfeir.dev/
- Plein d’articles techniques sur de nombreux thèmes : front, back, cloud, data, AI/ML, mobile.
- Aussi des tendances, des success stories…
- Par exemple dans les derniers articles : on parle d’Alan Turing, du Local Storage en Javascript, de la préparation de certifications React, l’impact de la cybersécurité sur le cloud.
Demis Hassabis annonce travailler sur une IA nommée Gemini qui dépassera ChatGPT https://www.wired.com/story/google-deepmind-demis-hassabis-chatgpt/
- Demis Hassabis CEO de Google DeepMind créateur de AlphaGO et AlphaFold.
- Travaille sur une IA nommée Gemini qui dépasserait ChatGPT de OpenAI.
- Similaire à GPT-4, mais avec des techniques issues de AlphaGO.
- Encore en développement, va prendre encore plusieurs mois.
- Un remplaçant à Bard ?
Méthodologies
Approcher l’agilité par les traumatismes (de développement) passés des individus https://www.infoq.com/articles/trauma-informed-agile/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=culture-methods
- Nous subissons tous un traumatisme du développement qui rend difficile la collaboration avec d’autres - une partie cruciale du travail dans le développement de logiciels agiles.
- Diriger d’une manière tenant compte des traumatismes, ça n’est pas pratiquer la psychothérapie non sollicitée, et ça ne justifie pas les comportements destructeurs sans les aborder.
- Être plus sensible aux traumatismes dans votre leadership peut aider tout le monde à agir de façon plus mature et plus disponible sur le plan cognitif, surtout dans des situations émotionnellement difficiles.
- Dans les milieux de travail tenant compte des traumatismes, les gens accordent plus d’attention à leur état physique et émotionnel.
- Ils s’appuient aussi davantage sur le pouvoir de l’intention, fixent des objectifs d’une manière moins manipulatrice et sont capables d’être empathiques sans s’approprier les problèmes des autres.
Loi, société et organisation
Mercedes va rajouter de l’intelligence artificielle dans ses voitures https://azure.microsoft.com/en-us/blog/mercedes-benz-enhances-drivers-experience-with-azure-openai-service/
- Programme beta-test de 3 mois pour le moment.
- Assistance vocale “Hey Mercedes”.
- Permet de discuter avec la voiture pour trouver son chemin, concocter une recette, ou avoir tout simplement des discussions.
- Ils travaillent sur des plugins pour réserver un resto, acheter des tickets de cinéma.
Free software vs Open Source dans le contexte de l’intelligence artificielle par Sacha Labourey https://medium.com/@sachalabourey/ai-free-software-is-essential-to-save-humanity-86b08c3d4777
- On parle beaucoup d’IA et d’open source.
- Mais il manque la dimension de contrôle des utilisateurs finaux.
- Stallman a créé la FSF par peur de la notion d’humain augmenté par des logiciels qui sont contrôlés par d’autres (implants dans le cerveau etc).
- D’où la GPL et sa viralité qui propage la capacité à voir et modifier le code que l’on fait tourner.
- Dans le débat IA, ce n’est pas seulement Open Source (casser l’oligopolie) mais aussi le Free Software qui est en jeu.
La folie du Cyber Resilience Act (CRA) européen https://news.apache.org/foundation/entry/save-open-source-the-impending-tragedy-of-the-cyber-resilience-act
- Au sein de l’UE, la loi sur la cyber-résilience (CRA) fait maintenant son chemin à travers les processus législatifs (et doit faire l’objet d’un vote clé le 19 juillet 2023). Cette loi s’appliquera à un large éventail de logiciels (et de matériel avec logiciel intégré) dans l’UE. L’intention de ce règlement est bonne (et sans doute attendue depuis longtemps) : rendre le logiciel beaucoup plus sûr.
- Le CRA a une approche binaire : oui/non et considère tout le monde de la même manière.
- Le CRA réglementerait les projets à source ouverte à moins qu’ils n’aient « un modèle de développement entièrement décentralisé ». Mais les modèles OSS sont de complexes mélanges de pur OSS et éditeurs de logiciels.
- les entreprises commerciales et les projets open source devront être beaucoup plus prudents quant à ce que les participants peuvent travailler sur le code, quel financement ils prennent, et quels correctifs ils peuvent accepter.
- Certaines des obligations sont pratiquement impossibles à respecter, par exemple l’obligation de « livrer un produit sans vulnérabilités exploitables connues ».
- Le CRA exige la divulgation de vulnérabilités graves non corrigées et exploitées à l’ENISA (une institution de l’UE) dans un délai mesuré en heures, avant qu’elles ne soient corrigées (complètement opposé aux bonnes pratiques de sécu).
- Une fois de plus une bonne idée à l’origine, mais très mal implémentée qui risque de faire beaucoup de dommages.
Octave Klaba, avec Miro, son frère, et la Caisse des Dépôts, finalisent la création de Synfonium qui va maintenant racheter 100% de Qwant et 100% de Shadow. Synfonium est détenue à 75% par Jezby Venture et Deep Code et à 25% par la CDC. https://twitter.com/i/web/status/1673555414938427392
- L’un des rôles de Synfonium est de créer la masse critique des utilisateurs et des clients B2C et B2B qui vont pouvoir utiliser tous ces services gratuits et payants.
- Vous y retrouverez le moteur de recherche, les services gratuits, la suite collaborative, le social login, mais aussi les services de nos partenaires tech.
- Le but est de créer une plateforme dans le Cloud SaaS EU qui respecte nos valeurs et nos lois européennes.
Yann LeCun : « L’intelligence artificielle va amplifier l’intelligence humaine » https://www.europe1.fr/emissions/linterview-politique-dimitri-pavlenko/yann-lecun-lintelligence-artificielle-va-amplifier-lintelligence-humaine-4189120
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 2-3 septembre 2023 : SRE France SummerCamp - Chambéry (France)
- 6 septembre 2023 : Cloud Alpes - Lyon (France)
- 8 septembre 2023 : JUG Summer Camp - La Rochelle (France)
- 14 septembre 2023 : Cloud Sud - Remote / Toulouse (France)
- 18 septembre 2023 : Agile Tour Montpellier - Montpellier (France)
- 19-20 septembre 2023 : Agile en Seine - Paris (France)
- 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online
- 21-22 septembre 2023 : API Platform Conference - Lille (France) & Online
- 22 septembre 2023 : Agile Tour Sophia Antipolis - Valbonne (France)
- 25-26 septembre 2023 : BIG DATA & AI PARIS 2023 - Paris (France)
- 28-30 septembre 2023 : Paris Web - Paris (France)
- 2-6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium)
- 6 octobre 2023 : DevFest Perros-Guirec - Perros-Guirec (France)
- 10 octobre 2023 : ParisTestConf - Paris (France)
- 11-13 octobre 2023 : Devoxx Morocco - Agadir (Morocco)
- 12 octobre 2023 : Cloud Nord - Lille (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France)
- 12-13 octobre 2023 : Forum PHP 2023 - Marne-la-Vallée (France)
- 19-20 octobre 2023 : DevFest Nantes - Nantes (France)
- 19-20 octobre 2023 : Agile Tour Rennes - Rennes (France)
- 26 octobre 2023 : Codeurs en Seine - Rouen (France)
- 25-27 octobre 2023 : ScalaIO - Paris (France)
- 26-27 octobre 2023 : Agile Tour Bordeaux - Bordeaux (France)
- 26-29 octobre 2023 : SoCraTes-FR - Orange (France)
- 10 novembre 2023 : BDX I/O - Bordeaux (France)
- 15 novembre 2023 : DevFest Strasbourg - Strasbourg (France)
- 16 novembre 2023 : DevFest Toulouse - Toulouse (France)
- 23 novembre 2023 : DevOps D-Day #8 - Marseille (France)
- 30 novembre 2023 : PrestaShop Developer Conference - Paris (France)
- 30 novembre 2023 : WHO run the Tech - Rennes (France)
- 6-7 décembre 2023 : Open Source Experience - Paris (France)
- 7 décembre 2023 : Agile Tour Aix-Marseille - Gardanne (France)
- 8 décembre 2023 : DevFest Dijon - Dijon (France)
- 7-8 décembre 2023 : TechRocks Summit - 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/
LCC 297 - Lockless design
Posté le 12/06/2023Guillaume, Arnaud et Emmanuel discutent des nouvelles de mai et juin. La communauté Rust, WebAssembly. Guava, Debezium, Kafka, de flame graph, d’open source et bien sûr les large language models.
On répond aussi à la question fondamentale : mais pourquoi Maven n’a pas de fichier .lock
?
Enregistré le 9 juin 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-297.mp3
News
Langages
Lors de Microsoft BUILD 2023, un des fondateurs de OpenAI a fait une excellente présentation de Large Language Models, des GPT https://build.microsoft.com/en-US/sessions/db3f4859-cd30-4445-a0cd-553c3304f8e2
- Il parle du fonctionnement des LLM, comment/pourquoi ils arrivent à générer ce qu’ils génèrent.
- Le fine-tuning, l’apprentissage renforcé avec feedback humain, l’art du prompting.
- Des patterns comme Chain of Thought (CoT) ou ReAct (Reflect then Act).
Leaning Technologies annonce l’arrivée prochaine de CheerpJ 3 : le retour de Java dans le navigateur, grâce à WebAssembly https://leaningtech.com/announcing-cheerpj-3-0-a-jvm-replacement-in-html5-and-webassembly-to-run-java-applications-and-applets-on-modern-browsers/
- Avant la version 3.0, CheerpJ utilisait une approche AOT (Ahead Of Time compilation) qui nécessitait aussi une étape d’intégration continue pour transformer aussi toutes les dépendances JAR associées à un projet.
- Avec la version 3.0, qui devrait sortir cet été, CheerpJ adopte une approche JIT (Just-In-Time compilation) qui ressemble plus à l’approche de Java lui-même.
- Plus besoin non plus de version custom d’OpenJDK.
- Les Applets vous avaient manqué ? Elles sont de retour avec WebAssembly 😀.
Communauté RUST : Il y a de l’eau dans le gaz https://www.jntrnr.com/why-i-left-rust/
- Plus d’infos sur https://gist.github.com/fasterthanlime/42da9378768aebef662dd26dddf04849.
- Lié au backchannel et un petit groupe qui essaie de faire les choses bien, mais qui dérape de l’extérieur.
- En gros, ils ont un process interne pour prendre des décisions.
- Avec ce process, ils ont invité une personne pas super pro-Rust à faire la keynote à RustConf.
- D’autres membres du commité ont vu ça et ont discuté en backchannel pour annuler la décision (sans suivre le process).
- Il y a eu une semaine de pause avant action, mais pas d’annonce.
- Le speaker a été dékeynoté et a donc refusé de venir à la conférence.
- Et paf ! Ça énerve des gens décisionnaire et ils démissionnent.
- Bref des gens qui veulent faire bien, mais en cercle un peu trop fermé.
Les gens de Wasmer étendent WASI avec WASIX, en rajoutant le support POSIX, les threads… permettant de compiler vers WASM plein de projet C/C++ ou Rust, comme cURL https://wasmer.io/posts/announcing-wasix
- Ça frotte un peu entre innovation et standardisation dans la communauté WASM.
- WASMER sont un peu les cowboys startuper.
- Par exemple, ils ont essayé de déposer la marque WebAssembly au nez et à la barbe de la communauté.
- Donc la reaction du cœur de la communauté face à cette annonce est plutôt calme.
- WASI c’est standard, mais ça prend du temps à maturer.
- WASIX c’est cool et disponible maintenant, mais c’est un produit d’une société spécifique, donc pas de portabilité.
Librairies
Guava 32 est sorti et beaucoup de choses annotées en @Beta
ne le sont plus
https://www.reddit.com/r/java/comments/13w2l8w/guava_320_released_today_and_the_beta_annotation/
- Ils ont eu des API en
@Beta
pendant longtemps pour protéger des risques de changements. - En pratique quasi personne ne se limitait au non-beta, et ces API n’ont pas ou peu bougé.
- Ils ont donc enlevé
@Beta
de la plupart des API. - Beaucoup de parties de Guava sont dans le JDK, le cache est dans Caffeine.
- De bons échanges dans les commentaires entre les utilisateurs et Kevin, un des mainteneurs chez Google
Comment démarrer avec l’API PaLM de Google, mais en Java ! https://glaforge.dev/posts/2023/05/30/getting-started-with-the-palm-api-in-the-java-ecosystem/
- Guillaume a écrit une petite application qui génère des histoires pour enfants avec un Large Language Model (l’API PaLM) : https://bed-time-stories.web.app/.
- Le code est disponible sur Github : https://github.com/glaforge/bedtimestories.
- Il explique également le processus incrémental des prompts qui aident à générer aussi le contenu de l’application : https://glaforge.dev/posts/2023/06/08/creating-kids-stories-with-generative-ai/.
Infrastructure
Debezium 2.2 https://debezium.io/blog/2023/04/20/debezium-2-2-final-released/
- Experimental opt-in Parallel Snapshots,
- Incremental snapshots with surrogate keys,
- Quarkus 3 support,
- Ingestion of Oracle changes from logical standby instances,
- Google Spanner improvements,
- New Debezium Server sinks for Infinispan, RabbitMQ, and RocketMQ,
- New Storage APIs for Amazon S3 and RocketMQ,
- Many MongoDB improvements,
- Cassandra connector for Cassandra Enterprise.
Un article sur l’utilisation de Kafka par CloudFlare https://www.infoq.com/articles/kafka-clusters-cloudflare/
- C’est du “classique”, mais bon de se le faire rappeler.
- Beaucoup d’évènements CloudFlare ne passent pas Kafka pour processing.
- Kafka en tant que bus générique.
- Ils ont imposé un message unique par topic via Protobuf.
- Ils ont une Application Service team (internal developer platform) depuis peu de temps.
- GitOps pour création de topic…
- Ils ont développé un connector framework déclaratif pour étendre le panel de patrons d’architecture disponibles.
- Ils ont développé des SDKs d’accès à Kafka avec monitoring (Prometheus).
- Sympa à lire.
Post mortem du problème chez Datadog https://www.datadoghq.com/blog/2023-03-08-multiregion-infrastructure-connectivity-issue/
- Datadog a perdu tous ses services dans la plupart de ses regions pendant 3 heures avant la première récupération et 10 heures au total pour la récupération totale.
- Équipe : 10 senior engineering leaders, about 70 local incident commanders and a pool of 450 to 750 incident responders active throughout the incident, which required four shifts to bring the incident to full resolution.
- Cause : une mise à jour de systemd appliquée sur la plupart de leurs VM en quasi parallèle qui a effacé les routes des conteneurs et ne les a pas remis ; c’est un cas qui n’arrive pas au reboot d’un nœud (init sequence).
- Des dizaines de milliers de nœuds ont été impactés.
- En général, ils font du rollout par région en enlevant les nœuds etc, mais le base OS avait un legacy update channel activé (vs géré par les équipes de Datadog manuellement).
- Les nœuds de controllers qui sont censés recycler les nœuds n’ont pu le faire vu le nombre de nœuds et surtout parce qu’eux-mêmes étaient affectés.
- L’autre article.
Cloud
Le datacenter parisien europe-west9-a
est en panne depuis 3 semaines
https://www.lebigdata.fr/data-center-panne
- Un feu s’est déclenché et a touché une zone.
- Le datacenter reste opérationnel sur les zones non touchées, sauf BigTable qui a besoin de la zone touchée.
- Les autres services fonctionnent, sauf les applis utilisateurs qui ne tournaient que sur la zone affectée.
Outillage
Podman Desktop 1.0 est sorti https://podman-desktop.io/blog/podman-desktop-release-1.0
- Pas grand-chose d’autre à dire que c’est la 1.0.
- “Works on my machine”
Contract testing with Pact https://hollycummins.com/contract-testing-devoxx-greece/
- Conférence.
- Quand on change un microservice l’autre casse.
- Les tests d’integration sont lents, instables et demandent de grosses machines ou des environnements remote de dev.
- Mock / unit tests ne sont pas vraiment le code de l’autre équipe.
- D’où les contract tests qui vivent entre les tests end to end et les tests unitaires.
- Peut partir d’un test mock et remplacer avec pact côté consommateur.
- En faisant tourner un pact listener qui enregistre la déclaration et les retours attendus / générés par l’appel du test.
- Copier ce fichier vers le producteur.
- Copier à la main, dans le repo, via un broker.
- Ajoute un test pact côté producteur qui va exercer le JSON et vérifier que cela marche.
- Tests de pact sont plus profonds qu’un test OpenAPI.
- Consommateur utilise pact comme mock et vérifie le provider avec le contract du mock.
Pourquoi Maven n’a pas de fichier lock ? https://www.reddit.com/r/Maven/comments/vkcmys/why_maven_doesnt_have_a_lock_file_like/
- Conversation intéressante sur les fichiers
.lock
dans les builds. - Par exemple Ruby a le
Gemfile.lock
, npm pareil, mais pas Java ? - Fondamentalement, c’est dû aux valeurs par défaut initiales et à la culture de la communauté.
- Les versions range sont peu ou pas utilisés en Maven.
- Alors que c’est l’approche par défaut sur d’autres plateformes
- La poule et l’œuf.
Simplifier les flame graph avec JBang https://someth2say.wordpress.com/2023/06/04/jbang-and-flame-graphs/
- Discute des flame graph.
- Pour le temps consommé et pas un call graph.
- En hauteur, c’est la profondeur d’appel.
- Ne regarder que la largeur, pas l’ordre.
- Pas quand et où une action est faite, mais qui l’a faite.
- Le reste discute de la manière d’utiliser JBang pour lancer le programme et le javaagent.
Les modérateurs de Stack Overflow en grève contre le flux de réponses d’intelligence artificielle https://openletter.mousetail.nl/
- Le ban des contenus générés par l’IA a été levé discrètement par Stack Overflow.
- Peur du flux de données massif et des hallucinations difficiles à détecter sans passer du temps.
- Pas de consensus communautaire.
- Stack Overflow est une des sources trustées pour les LLM des intelligences artificielles génératives (serpent qui se mord la queue).
- Les modérateurs font tourner l’anti-spam, gèrent les flags levés, ferment ou effacent les entrées, genre les bots qui détectent le plagiat…
- 414 votants dès les premières heures.
Just, un petit outil en ligne de commande avec une syntaxe inspirée de make, pour exécuter des commandes fréquentes dans nos projets https://glaforge.dev/posts/2023/06/07/just-a-handy-command-line-tool/
- Syntaxe proche de celle de make.
- Possibilité de définir des dépendances entre tâches.
- Support de paramètres.
- Peut charger des fichier
.env
. - S’installe sur tous les systèmes d’exploitation qu’on aime bien (et qu’on n’aime pas aussi).
Méthodologies
AWS retire ses documentations en Open Source https://www.infoq.com/news/2023/06/aws-documentation-github/
- Ils ont open-sourcé en espérant des contributions il y a deux ans, mais sans changer les approches en interne.
- Résultat : copie de repos de l’intérieur vers l’extérieur.
- Tracker de travail interne != externe.
- C’était plus compliqué.
- Leçon, embrasser entièrement sinon les frictions sont compliquées.
Un guide pour communiquer avec l’IA https://learnprompting.org/
- Gratuit et open source.
- Prompt Engineering ou comment rédiger vos prompts.
- Plusieurs niveaux (Basic, Intermédiaire, Avancé..).
- Défini plein de concepts: Prompt, Few Shot Prompt, LLMs…
Loi, société et organisation
Migration de Twitter vers Mastodon (ou plutôt “dual run”) https://glaforge.dev/talks/2023/06/09/from-bird-to-elephant-starting-a-new-journey-on-mastodon/
- Présentation de Guillaume à Devoxx France et Grèce
- Avec code sur Github pour un bot Mastodon: https://github.com/glaforge/stootistics
- Et un service en ligne pour voir la popularité de ses derniers posts sur Mastodon https://stootistics.web.app/
Conférences
Aurelie Vache publie son agenda des conferences via le site: https://developers.events/
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 14-15 juin 2023 : OW2 openSource Conf - Paris (France)
- 14-17 juin 2023 : VivaTech (Viva Technology) - https://vivatechnology.com/) - Paris (France)
- 15-16 juin 2023 : Le Camping des Speakers - Baden (France)
- 15-17 juin 2023 : Pas Sage En Seine - Choisy-le-Roi (France)
- 20 juin 2023 : Mobilis in Mobile - Nantes (France)
- 20 juin 2023 : Cloud Est - Villeurbanne (France)
- 20-22 juin 2023 : Adeo DevSummit - Lille (France)
- 21-23 juin 2023 : Rencontres R - Avignon (France)
- 23 juin 2023 : Unconf HackYourJob - Région lyonnaise (France)
- 28-30 juin 2023 : Breizh Camp - Rennes (France)
- 29 juin 2023 : Google Cloud Summit France - Paris (France)
- 29-30 juin 2023 : Sunny Tech - Montpellier (France)
- 29-30 juin 2023 : Agi’Lille - Lille (France)
- 7-9 juillet 2023 : Nantes Maker Campus - Nantes (France)
- 2-3 septembre 2023 : SRE France SummerCamp - Chambéry (France)
- 6 septembre 2023 : Cloud Alpes - Lyon (France)
- 8 septembre 2023 : JUG Summer Camp - La Rochelle (France)
- 14 septembre 2023 : Cloud Sud - Remote / Toulouse (France)
- 18 septembre 2023 : Agile Tour Montpellier - Montpellier (France)
- 19-20 septembre 2023 : Agile en Seine - Paris (France)
- 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online
- 21-22 septembre 2023 : API Platform Conference - Lille (France) & Online
- 25-26 septembre 2023 : BIG DATA & AI PARIS 2023 - Paris (France)
- 28-30 septembre 2023 : Paris Web - Paris (France)
- 2-6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium)
- 6 octobre 2023 : DevFest Perros-Guirec - Perros-Guirec (France)
- 10 octobre 2023 : ParisTestConf - Paris (France)
- 11-13 octobre 2023 : Devoxx Morocco - Agadir (Morocco)
- 12 octobre 2023 : Cloud Nord - Lille (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France)
- 12-13 octobre 2023 : Forum PHP 2023 - Marne-la-Vallée (France)
- 19-20 octobre 2023 : DevFest Nantes - Nantes (France)
- 19-20 octobre 2023 : Agile Tour Rennes - Rennes (France)
- 26 octobre 2023 : Codeurs en Seine - Rouen (France)
- 25-27 octobre 2023 : ScalaIO - Paris (France)
- 26-27 octobre 2023 : Agile Tour Bordeaux - Bordeaux (France)
- 10 novembre 2023 : BDX I/O - Bordeaux (France)
- 15 novembre 2023 : DevFest Strasbourg - Strasbourg (France)
- 16 novembre 2023 : DevFest Toulouse - Toulouse (France)
- 6-7 décembre 2023 : Open Source Experience - Paris (France)
- 7-8 décembre 2023 : TechRocks Summit - Paris (France)
- 31 janvier 2024-3 février 2024 : SnowCamp - Grenoble (France)
- 19-22 mars 2024 : KubeCon + CloudNativeCon Europe 2024 - Paris (France)
- 28-29 mars 2024 : SymfonyLive Paris 2024 - Paris (France)
- 17-19 avril 2024 : Devoxx France - Paris (France)
- 25-26 avril 2024 : MiXiT - Lyon (France)
- 25-26 avril 2024 : Android Makers - 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/
LCC 296 - Interview Google IA IA I/O 2023
Posté le 25/05/2023Dans cet épisode, Antonio, Emmanuel et Guillaume reviennent sur les nouveautés et annonces faites à Google I/O 2023 : de nouveaux téléphones Pixel qui se plient ou pas, et surtout de l’intelligence artificielle du sol au plafond ! Que ce soit dans Android, dans Google Workspace, dans Google Cloud, une tonne de produits passe en mode survitaminé à l’IA. Guillaume, Antonio et Emmanuel discutent aussi de l’impact qu’ils voient sur l’AI, et de comment les Large Language Models sont raffinés et pourquoi on les fait halluciner, de subtilités du langage des signes.
Enregistré le 23 mai 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-296.mp3
Google I/O 2023
Site web : https://io.google/2023/
Keynote principale : https://io.google/2023/program/396cd2d5-9fe1-4725-a3dc-c01bb2e2f38a/
Keynote développeur : https://io.google/2023/program/9fe491dd-cadc-4e03-b084-f75e695993ea/
Vidéo résumée en 10 minutes de toutes les annonces : https://www.youtube.com/watch?v=QpBTM0GO6xI&list=TLGGCy91ScdjTPYxNjA1MjAyMw
Vidéo de toutes les sessions techniques : https://io.google/2023/program/?q=technical-session
Google I/O s’est tenu il y a 10 jours en Californie, dans l’amphithéâtre de Shoreline, près du campus de Google.
Seulement 2000 personnes sur place, un chat et un jeu en ligne pour assister à distance.
Jeu en ligne I/O Flip créé avec Flutter, Dart, Firebase, et Cloud Run, et tous les assets graphiques générés par Generative AI https://blog.google/technology/ai/google-card-game-io-flip-ai/
Des Pixels plein les yeux !
Des détails sur le design des nouveaux appareils : https://blog.google/products/pixel/google-pixel-fold-tablet-7a-design/
Pixel Fold
Article : https://blog.google/products/pixel/google-pixel-fold/
- Premier téléphone foldable de Google (après Samsung et Oppo)
- Un écran sur le dessus, et un grand écran pliable à l’intérieur
- Pratique pour la traduction où peut voir une discussion traduire en deux langues d’un côté sur un écran et dans l’autre langue sur l’autre
- Utilisation créative de la pliure : mode “laptop”, pour les selfies, pour poser l’appareil pour des photos de nuit
- Par contre… pas disponible en France, et tout de même presque 1900€ !
Pixel Tablet
Article : https://blog.google/products/pixel/google-pixel-tablet/
- Une belle tablette de 11 pouces, avec un dock de recharge avec enceinte intégrée
- Processeur Tensor G2, Chromecast intégré
- C’est un peu comme le Google Nest Hub Max, mais avec un écran détachable
- Une coque pratique avec un trépied intégré et qui n’empêche pas de recharger la tablette sur le dock
- En mode dock, c’est comme l’écran du Google Home App, et dès qu’on la décroche, on est en mode multi-utilisateur, chacun avec son profil
Pixel 7a
Article : https://blog.google/products/pixel/pixel-7a-io-2023/
- Écran de 6 pouces
- Triple appareil photo (grand angle, principal, et photo avant pour les selfies)
- 509 euros
- Magic Eraser pour effacer les trucs qu’on ne veut pas dans la photo, Magic Unblur pour rendre une photo floue plus nette, Real Tone pour rendre les peaux foncées plus naturelles
Android
Article quoi de neuf dans Android : https://blog.google/products/android/android-updates-io-2023/
- Dans Messages, Magic Compose dans les conversations, l’IA nous aide à concevoir nos messages, dans différents styles (plus pro, plus fun, dans le style de Shakespeare)
- Android 14 devrait arriver un peu plus tard dans l’année, avec plus de possibilités de customisation (fond d’écran généré par Gen AI, fond d’écran Emojis, couleurs associées, fond d’écran 3D issus de ses photos) https://blog.google/products/android/new-android-features-generative-ai/
- StudioBot : un chatbot intégré à Android Studio pour aider au développement d’applis Android https://io.google/2023/program/d94e89c5-1efa-4ab2-a13a-d61c5eb4e49c/
- 800 millions d’utilisateurs sont passés à RCS pour le messaging
- Adaptation de 50 applications Android pour s’adapter aux foldables https://blog.google/products/android/android-app-redesign-tablet-foldable/
- Wear OS 4 va rajouter le backup restore quand on change de montre et autres nouveautés https://blog.google/products/wear-os/wear-os-update-google-io-2023/
- 800 chaînes TV gratuites dans Google TV sur Android et dans la voiture
- Android Auto va être disponible de 200 millions de voitures
https://blog.google/products/android/android-auto-new-features-google-io-2023/ - Waze disponible globalement sur le playstore dans toutes les voitures avec Android Auto
Google Maps
Article : https://blog.google/products/maps/google-maps-updates-io-2023/
- Maps propose 20 milliards de km de direction tous les jours
- Immersive View for Routes
- 15 villes : Amsterdam, Berlin, Dublin, Florence, Las Vegas, London, Los Angeles, Miami, New York, Paris, San Francisco, San Jose, Seattle, Tokyo et Venice
- Possibilité pour les développeurs de s’intégrer et rajouter des augmentations 3D, des marqueurs
Google Photos
Article Magic Editor : https://blog.google/products/photos/google-photos-magic-editor-pixel-io-2023/
- Magic Editor survitaminé à l’IA pour améliorer les photos, en déplaçant des gens, en rajoutant des parties coupées, ou bien rendre le ciel plus beau
- Possible que ce soit limité aux téléphones Pixel au début
Projets expérimentaux
- Project Starline (écran avec caméra 3D qui donne un rendu 3D de son interlocuteur comme s’il était en face de soi) a été amélioré pour prendre moins de place https://blog.google/technology/research/project-starline-prototype/
- Universal Translator : une nouvelle expérimentation pour faire du doublage et traduction automatique avec synchronisation des mouvements des lèvres
- Project Tailwind, une sorte de notebook dans lequel on peut rajouter tous ses documents à partir de drive, et poser des questions sur leur contenu, proposer des résumés, de faire du brainstorming sur ces thèmes https://thoughtful.sandbox.google.com/about
- MusicLM : un large language model pour générer de la musique à partir d’un texte de prompt (liste d’attente pour s’inscrire) https://blog.google/technology/ai/musiclm-google-ai-test-kitchen/
- Project Gameface : utilisation des expressions du visage pour commander une souris et un ordinateur, pour les personnes qui ont perdu leur mobilité https://blog.google/technology/ai/google-project-gameface/
- VisualBlocks : pour expérimenter dans une interface drag’n drop avec le développement de modèles pour Tensorflow lite et js https://visualblocks.withgoogle.com/
- MakerStudio : pour les bidouilleurs et développeurs https://makersuite.google.com/
https://developers.googleblog.com/2023/05/palm-api-and-makersuite-moving-into-public-preview.html
Search Labs
Article : https://blog.google/products/search/generative-ai-search/
- Expérimentations pour rajouter l’IA générative dans Google Search
- Faire des recherches avec des requêtes avec des phrases plus complexes, en intégrant des réponses comme Bard, avec des liens, des suggestions d’autres recherches associées
- Mais aussi proposer des publicités mieux ciblées
- On peut s’inscrire à Search Labs pour tester cette nouvelle expérience, mais au début juste en anglais et juste pour les US
- Des intégrations avec Google Shopping pour proposer et filtrer des produits qui correspondent à la requête
- Recherche à l’aide d’image, avec Google Lens : 12 milliards de recherches visuelles par mois
Palm et Bard
- Annonce du modèle LLM Palm 2 utilisé dans Bard et dans Google Cloud https://blog.google/technology/ai/google-palm-2-ai-large-language-model/
- PaLM 2 est en cours d’intégration dans 25 produits de Google
- Supportera 100 langues différentes (pour l’instant seulement l’anglais, japonais et coréen), avec déjà les 40 langues les plus parlées d’ici à la fin de l’année
- Maintenant disponible dans 180 pays… sauf l’Europe !!!
- Capacité de raisonnement accrue
- Peut coder dans une vingtaine de langages de programmation différents dont Groovy
- Différentes tailles de modèles : Gecko, Otter, Bison et Unicorn, mais le nombre de paramètres n’est pas communiquée, comme pour GPT-4 d’OpenAI
- Utilisable pour des requêtes et pour du chat
- Des modèles dérivées fine-tunés Med-PaLM 2 sur du savoir médical, sur l’analyse visuelle des radios et Sec-PaLM, entrainé sur des cas d’utilisation sur le thème de la cybersécurité, pour aider à déceler des scripts malicieux, des vecteurs d’attaque
- Sundar Pichai a aussi annoncé que Google travaillait déjà sur la prochaine évolution de ses LLM avec un modèle appelé Gemini. Peu de détails à part qu’il sera multimodal (en particulier recherche combinée image et texte par ex.)
- Partenariat et intégration d’Adobe Firefly dans Bard pour générer des images https://blog.adobe.com/en/publish/2023/05/10/adobe-firefly-adobe-express-google-bard
Duet AI pour Google Workspace
Article : https://workspace.google.com/blog/product-announcements/duet-ai
- Dans Gmails et Docs, propose d’aider à la rédaction de vos emails et documents
- une extension de “smart compose” qui va permettre de générer des emails entiers, d’améliorer le style, de corriger la grammaire, éviter les répétitions de texte
- Dans Docs, des nouveaux “smart chips” pour rajouter des variables, des templates
- Dans Slides, rajouter des images générées par IA
- Des prompts dans Sheets pour générer un draft de table
- Dans Google Meet, possibilité de créer une image de fond customisée avec Generative AI
- Ces améliorations font parties de Workspace Labs auquel on peut s’inscrire dans la liste d’attente https://workspace.google.com/labs-sign-up/
Google Cloud
Intégration de Generative AI partout https://cloud.google.com/blog/products/ai-machine-learning/google-cloud-launches-new-ai-models-opens-generative-ai-studio
- Nouvelles VM A3 avec les GPUs H100 de Nvidia, idéal pour l’entrainement de modèles de machine learning, avec 26 exaFlops de performance https://cloud.google.com/blog/products/compute/introducing-a3-supercomputers-with-nvidia-h100-gpus
- Trois nouveaux modèles LLM dans Vertex AI : Imagen (private preview) pour générer des images, Codey pour la génération de code, et Chirp pour la génération de la parole supportant 100 langues différentes avec 2 milliards de paramètres vocaux
- Model Garden : avec les modèles de machine learning y compris externes et open sources
- Ajout des embeddings pour le texte et l’image
- RLHF, Reinforcement Learning from Human Feedback bientôt intégrer pour étendre Vertex AI tuning et prompt design avec une boucle de feedback humaine
- Generative AI Studio pour tester ses prompts zero-shot, one-shot, multi-shots
- Duet AI pour Google Cloud https://cloud.google.com/blog/products/application-modernization/introducing-duet-ai-for-google-cloud
- Assistance de code dans VSCode et bientôt les IDEs JetBrains grâce au plugin Cloud Code, et dans Cloud Workstations.
- Intégration dans les IDEs d’un chat pour comme un compagnon pour discuter d’architecture, trouver les commandes à lancer pour son projet
- Le modèle de code de Codey fonctionne sur une vingtaine de languages de programmation, mais un modèle fine-tuné a été entrainé sur toute la doc de Google Cloud, donc pourra aider en particulier sur l’utilisation des APIs de Google Cloud, ou l’utilisation de la ligne de commande gcloud
- Duet AI est aussi dans App Sheet, la plateforme low/no-code, et permettra de chatter avec un chatbot pour générer une application App Sheet
- Quoi de neuf dans Firebase https://firebase.blog/posts/2023/05/whats-new-at-google-io
Web
Article : https://developers.googleblog.com/2023/05/io23-developer-keynote-recap.html
- Flutter 3 et Dart 3.10 https://io.google/2023/program/7a253260-3941-470b-8a4d-4253af000119/
- WebAssembly
https://io.google/2023/program/1d176349-7cf8-4b51-b816-a90fc9d7d479/ - WebGPU
https://io.google/2023/program/0da196f5-5169-43ff-91db-8762e2c424a2/ - Baseline
https://io.google/2023/program/528a223c-a3d6-46c5-84e4-88af2cf62670/
https://web.dev/baseline/
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 295 - La librairie rentre dans le cadre
Posté le 15/05/2023Dans cet épisode, Arnaud, Antonio et Emmanuel décortiquent les nouvelles d’avril et mai. On y discute Java 20, écrire un profiler de zéro, Quarkus 3 (encore !), Micronaut 4, Podman, JReleaser, GitHub, CloudEvent, GraphQL, licenciements (encore !), et de la question a 1000 francs : librairie vs framework, quelle différence ? Mais pas que.
Enregistré le 12 mai 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-295.mp3
News
Langages
Un descriptif du changement de tarification d’Oracle JDK https://horstmann.com/unblog/2023-02-23/
- Article de Cay S. Horstmann.
- Explique OpenJDK avec plusieurs distributeurs.
- Préfère Adoptium, dont celle par défaut est Eclipse Temurin.
- Pour Oracle, beaucoup d’options de licenses (no-fee, binary code, OTM license).
- Oracle dépense beaucoup pour Java.
- La license en discussion est Java SE Universal Subscription Licensing.
- Passage de license par CPU (Java SE advanced) vers license par employé (et une assiette large).
- Bref si vous êtes concernés, passez sur OpenJDK : Adoptium, ou d’autres vendeurs.
Java 20 est sorti : qu’y a-t-il de nouveau dans Java 20 par rapport à Java 19 ? https://foojay.io/today/its-java-20-release-day-heres-whats-new/
- L’article fait le point sur ce qu’il y a de nouveau par rapport à la précédente release :
- 4ème preview du pattern matching pour switch,
- 2de preview des record patterns,
- 2de preview des virtual threads,
- incubation des scoped values (similaire au thread locals mais pour les virtual threads),
- 2de incubation de la structured concurrency,
- 2de preview de foreign function et memory API,
- 5ème incubation de la vector API (pour utiliser les instructions vectorielles des processeurs).
- La liste des JEPs : https://openjdk.org/projects/jdk/20/.
- Les release notes : https://jdk.java.net/20/release-notes.
- Dans le pattern matching switch: guard
when
. - Record pattern :
var
maintenant aussi utilisable dans lesfor
:for (Delay(var timeInMS) : delays)
- Quelques changements autour de l’API
Thread
en non preview (main API). - Les
ScopedValue
s sont comme lesThreadLocal
s par (virtual) thread, mais elles sont immuables une fois écrites. - Use cases : copie d’état pour des données non changeantes pour le virtual thread.
- Serait intéressant d’avoir des details dessus.
PDF 2.0 maintenant un vrai format ISO ouvert et gratuit https://www.pdfa.org/sponsored-standards/
- Standard disponible sans coût.
- Versions précédentes étaient payantes.
- Clarifications et corrections de beaucoup de cas aux limites.
Librairies
Écrire un Profiler en 240 lignes de Java https://mostlynerdless.de/blog/2023/03/27/writing-a-profiler-in-240-lines-of-pure-java/
- Ce n’est peut-être pas si compliqué d’écrire soi-même un Java Profiler ! Et justement cet article nous montre comment le faire, en créant un Java Agent, en analysant les stacks d’appel, et à la fin en créant même un flame graph en HTML.
- Très didactique !
- Fondamentalement : appeler
Threads:getAlStackStrace
régulièrement, faire une liste des méthodes visibles et créer un flamegraph à partir de ces données.
L’équipe de Flutter partage les grands thèmes de sa roadmap https://flutter.dev/go/strategy-2023
- Performance, interopérabilité, portabilité, écosystème, sécurité, fondamentaux (comme la documentation, la fidélité des UI natives, adresser les issues publiques).
Quarkus 3 est sorti https://quarkus.io/quarkus3/
- On a déjà couvert.
- Hibernate ORM 6.2.
- Nouvelle DevUI et admin sur un port different.
- Support for Pact.
quarkus deploy
et extensibilité de la CLI avec de nouveaux verbes.- Dev Services for Kubernetes simule un Kube pour tester les calls vers l’API Kube.
- Java 11 et 17 (recommandé).
- Jakarta EE.
- Eclipse MicroProfile 6.
Une librairie en Java spécialement pour l’astronomie par Cédric Champeau https://melix.github.io/blog//2023/04-22-introducing-astro4j.html
- Différentes librairies et applications pour traiter les images issues de Sol’Ex.
- Sol’Ex permet de prendre des photos du soleil.
Micronaut 4 milestone 2 est sorti. Les nouveautés de Micronaut 4 https://docs.micronaut.io/4.0.0-M2/guide/index.html#whatsNew
- Kotlin 1.8.0.
- Experimental Support for Kotlin Symbol Processing (KSP).
- Apache Groovy 4.0.
- Core Changes :
- Java 17 Baseline,
- Improved Modularity,
- GraalVM Metadata Repository and Runtime Initialization,
- Completed javax to jakarta Migration,
- Expression Language,
- Injection of Maps,
- Arbitrary Nesting of Configuration Properties,
- Improved Error Messages for Missing Configuration,
- Improved Error Messages for Missing Beans,
- Tracking of Disabled Beans.
- HTTP Changes :
- Initial Support for Virtual Threads (Loom),
- Rewritten HTTP layer,
- Annotation-Based HTTP Filters,
- JDK HTTP Client.
Infrastructure
5 choses à savoir sur Podman Desktop pour un utilisateur Docker https://podman-desktop.io/blog/5-things-to-know-for-a-docker-user
- Une UI unique pour travailler avec différents moteurs de conteneurs, et pas uniquement Docker.
- Compatible avec Docker avec un mode adapté pour fonctionner aussi avec la docker CLI ou docker.sock pour les sockets.
- Support de Compose.
- Support de Kubernetes.
- Sécurité : on peut utiliser rootless sans avoir les privilèges root.
- Socket est particulièrement utile pour TestContainer.
compose
n’est pas supporté en tant que tel, mais on peut faire utiliser podman parcompose
.- Podman peut émuler / exécuter des definitions de pods.
- Si besoin d’exposer des ports <1024, on peut activer le mode root.
Keycloak rejoins la CNCF [https://www.tfir.io/keycloak-cloud-native-iam-for-cloud-native-applications-joins-the-cncf/)
- IAM complete au sein de la CNCF.
- Keycloak sur base Quarkus : “cloud natif”.
Cloud
Un court article de chez Baeldung qui liste des distributions Kubernetes légères et partage leurs avantages et inconvénients respectifs https://www.baeldung.com/ops/kubernetes-lightweight-distributions
- Minikube (que des clusters à nœud unique),
- MicroK8S (à jour avec les releases Kubernetes, mais pas de support des CPUs ARM32),
- Kind (conteneurs considérés comme des nœuds, plus difficile à configurer avec autre chose que Docker),
- K3S (moins de consommation de resources).
Google I/O 2023 : la liste des 100 trucs annoncés https://blog.google/technology/developers/google-io-2023-100-announcements/
- Bard, le concurrent de ChatGPT, disponible dans 180 pays… sauf les pays européens.
- Pixel 7a, Pixel Tablet et Pixel Fold.
- Plein d’annonces autour de l’AI avec l’API PaLM (utilisée dans Bard), plein de Generative AI de partout dans les produits (search, workspace,..), y compris un modèle de code (qui comprend même le Groovy) qui va être intégré aux IDE, VSCode, etc.
Outillage
Connaissiez-vous le flag --json
de curl ?
https://glaforge.dev/posts/2023/03/22/curl-s-json-flag/
- Ça simplifie les interactions avec les APIs qui utilisent du JSON.
- Plus besoin de passer les headers de
Content-Type
et d’Accept
, c’est moins verbeux. - Rajouté il y a un an dans curl 7.82 (pour info, sur mon mac, par exemple, je suis en 7.86).
curl --json '{ "drink": "coffe" }' https://example.com
oucurl --json @prepared https://example.com
pour pointer vers un fichier.
Rétropédalage chez Docker https://www.docker.com/blog/no-longer-sunsetting-the-free-team-plan/
Github supprime le sponsoring par Paypal… et plein de développeurs Open Source perdent leurs sponsorships https://github.com/orgs/community/discussions/45183
- Juste un court blog post dans le changelog indiquant ce changement https://github.blog/changelog/2023-01-23-github-sponsors-will-stop-supporting-paypal/.
- Peut-être suite au piratage de Paypal et aux risques de paiements frauduleux et de réputation ?
Github a mis à jour sa clé RSA SSH Host https://github.blog/2023-03-23-we-updated-our-rsa-ssh-host-key/
- Apparemment, ils ont commité brièvement leur clé privée, oops !
- Potentielle disruption pour certains, avec impossibilité de committer son code.
- Il faut alors “oublier” l’ancienne clé publique et mémoriser la nouvelle.
- Personnellement, j’ai commité du code à partir de Visual Studio Code et je n’ai pas eu de soucis.
- Que sur RSA et pas sur les clés à courbe elliptique.
- Clé privée aurait pu faire du spoofing ou du déchiffrement de flux en SSH via RSA vers GitHub.
2ème anniversaire de JReleaser https://andresalmiray.com/jreleasers-second-birthday/
- JReleaser permet de publier sur plusieurs appstores (Homebrew, JBang, etc).
- Publie sur maven central automatiquement.
- Publie les annonces sur Twitter, Zulip…
- Publication de binaires (GitHub…) et de changelogs.
Architecture
Introduction à CloudEvents https://atamel.dev/posts/2023/04-03_cloudevents_basics/
- Décrire des évènements de données de manière commune.
- Métadonnées standardisées pour le routage
- En JSON ou en
cloudevents+json
. - Métadonnées incluent : id, source, type, sujet, time, type de contenu de donnée, schema de données et des extensions comme partitioning…
- Binary mode : données dans le corps du message, et métadonnées en header. Efficace pour parsing minimal.
- Structured-mode : données et métadonnées dans la même enveloppe.
- Batch-mode : plusieurs évènements en un seul envoi.
- Formats : JSON, protobuf, Avro et XML.
- Protocoles : HTTP, AMQP, Kafka, MQTT, NATS, WebSocket.
- Des évolutions futures planifiées.
GraphQL, tout n’est pas si rose https://betterprogramming.pub/graphql-from-excitement-to-deception-f81f7c95b7cf
- Pour Facebook qui pense en tant que graphe de données.
- Pour leur application mobile qui devait être à bande passante limitée.
- Choses positives : une requête pour plusieurs resources, sélection des données dont on a besoin uniquement, typé (entre client et serveur), meilleur outillage dev pour l’exploration, pas de soucis de version d’API ?
- Équipe qui embrace GraphQL en 2019.
- Les perfs optimisées par un choix de données ne se sont pas matérialisées pour eux (sauf mobile, donc pas machine-machine ou machine-desktop).
- La latence de REST reste mieux que GraphQL.
- En pratique desktop et mobile sont assez similaires en données fetchées.
- Schémas apportaient des problèmes en pratique ; synchro front et back, code first generation avait des problèmes de qualité du code généré.
- Schema → code est meilleur, mais synchro front back toujours un problème en pratique.
- Erreurs, plus simple en rest avec les codes HTTP a debugger et monitorer.
- Version free est un mensonge, les schemas ne peuvent être cassés.
- La pagination est compliquée et non standard. Caching primitif comparé à REST.
- N+1 problem comme dans les ORMs ou alors dataloaders qui amène de la complexité.
- La sécurité est plus compliquée à cause de la navigation libre de GraphQL.
- Écosystème pas encore super mature pour les besoins et paradoxalement très complexe.
Méthodologies
Trends technologie et culture par InfoQ https://www.infoq.com/articles/culture-trends-2023/
- Les licenciements ont cassé les effets de psychological safety dans l’industrie.
- Les IA génératives ont un impact fort sur la productivité du développeur, mais aussi avec des faiblesses significatives.
- Au-delà du légal, les responsabilités sociétales deviennent plus importantes pour retenir employés et clients.
- Le travail asynchrone devient plus accepté socialement, et adopter les pratiques apporte des bénéfices réels.
- Le travail hybride devient la norme, amener les gens ensemble devient un choix délibéré, plus un horaire fixe.
Loi, société et organisation
Red Hat fête ses 30 ans ! (limite, on n’était même pas nés, hein ?) https://www.redhat.com/en/blog/red-hat-30th-anniversary-celebrating-red-hat-day-north-carolina
Red Hat licencie 4% de ses employés https://wraltechwire.com/2023/04/24/red-hat-cutting-hundreds-of-jobs-ceo-says-in-letter-to-employees/
- IBM avait annoncé 3900 licenciements il y a peu et cela monte à 5000 avec les licenciements chez Redhat (les effectifs étaient de 2200 à Raleigh et 19000 à l’international).
- Licenciements suite au contexte économique post-Covid, les revenus trimestriels de Red Hat n’ont été que de 8% en Q1 alors que la croissance était de 15 depuis l’acquisition de Red Hat par IBM en 2019.
Crazy Bob est décédé 😭 https://www.sfgate.com/bayarea/article/mill-valley-man-killed-sf-stabbing-17878809.php
- Annonce sur TechCrunch https://techcrunch.com/2023/04/05/bob-lee-creator-of-cash-app-and-former-cto-of-square-stabbed-to-death/.
- Il avait créé le framework d’injection de dépendance Guice, mais aussi Dagger.
- Il a contribué aux librairies d’Android.
- Il avait proposé une syntaxe alternative aux lambda : CIC.
- Il a coécrit le livre Bitter EJB https://www.manning.com/books/bitter-ejb.
- Il avait des idées bien tranchées, anti-Spring, anti-Groovy (pro-BeanShell), anti-lambda (tels qu’on les connait aujourd’hui).
- Guillaume l’avait rencontré pour la première fois en 2007 https://blog.octo.com/javaone-2007-et-groovy-chez-google/.
- Les gens partagent leurs souvenirs sur ce thread sur HackerNews https://news.ycombinator.com/item?id=35457341.
10 millions de comptes sur Mastodon https://mastodon.social/@mastodonusercount/110051957865629817
- Peut-être pas 10 millions de comptes actifs, mais d’autres commentateurs estiment le nombre d’actifs serait plutôt de 6 à 7 millions actifs, pour effectivement 10 millions de comptes créés donc certains inutilisés ou disparus (serveur disparu).
Gordon Moore meurt à 94 ans https://www.lemonde.fr/economie/article/2023/03/26/mort-de-gordon-moore-entrepreneur-par-accident-et-cofondateur-d-intel_6167037_3234.html
- Chimiste de formation, il refuse de bosser autour de la bombe atomique et fini dans la silicon valley.
- Fonde un des premiers semi-conducteurs (plusieurs transistors ensembles).
- Intel sera un des premiers à parier sur le silicium (pour construire de la mémoire) et un des premiers à faire une puce intégrée regroupant plusieurs fonctions.
Twitter open source ses algorithmes de recommendation https://blog.twitter.com/engineering/en_us/topics/open-source/2023/twitter-recommendation-algorithm
- On retrouve le code source sur Github https://github.com/twitter/the-algorithm-ml.
- Et quelqu’un a déjà trouvé où il y a des clauses particulières pour le cas où un tweet vient d’Elon Musk, où un tweet vient d’un républicain ou d’un démocrate : https://uwyn.net/@danluu@mastodon.social/110119479811452246.
- L’algorithme de Twitter https://aakashgupta.substack.com/p/the-real-twitter-files-the-algorithm.
- Analyse sans sensation.
- Trois étapes : aggravation des données, construction des “features”, mixage.
- Followers, nos tweets et nous.
- Plus gros booster likes 30x, puis retweet 20x.
- Feature : SimCluster : groupe par categories/personnes le tweet.
- Feature : TwHIN : vecteur de prediction d’engagement pour un tweet donné.
- Feature : RealGraph : prend le tweet, le tweeter et le tweeté et construit un graphe pondéré de potentiel d’interaction.
- Règles de confiance et sécurité : élimine certains sujets (cela censure plus depuis Elon Musk)
- Mixer : prend tout et construit la “timeline”.
- Utilisateur répond aux réponses : x75.
- En fait que 80% du code ouvert.
The end of faking it in silicon valley https://www.nytimes.com/2023/04/15/business/silicon-valley-fraud.html
- Les startups qui brulaient du cash sans business model clair.
- Procès et prisons pour falsification de données clients.
- Les approches non éthiques ne sont plus ignorées.
- Avant les investisseurs avaient peur de se mettre les créateurs de boite à dos, maintenant, l’argent vaut cher.
- “finding out who is swimming naked when the tide goes out” Warren Buffett.
- “It feels like we were in a nightclub and the lights just turned on”.
- Ils vont évaluer plus exhaustivement les fondateurs.
- Le problème, c’est que VC c’est sur la confiance (one-way au moins) et que là, c’est cassé.
Rubrique débutant
On parle souvent de librairies et de frameworks, mais c’est quoi la différence ? https://www.red-gate.com/simple-talk/development/other-development/the-difference-between-libraries-and-frameworks/
- Une librairie est une collection de classes, de fonctions, de code, que l’on peut utiliser pour des tâches spécifiques, pour éviter au développeur de réinventer la roue (par exemple une librairie comme Joda Time qui permet de simplifier / codifier la représentation du temps).
- Il y a différents types de librairies : des librairies statiques ou dynamiques, suivant qu’elles sont chargées au runtime ou bien attachées au code que l’on compile. Il y a des librairies standards (comme celles venant du JDK et donc inclues avec lui) ou des librairies tierces (que l’on va par exemple trouver sur Maven Central).
- Un framework (un “cadriciel” en bon français) c’est aussi un ensemble de code, mais aussi de librairies, qui va offrir un cadre de développement pour ses applications.
- Par exemple un framework Web qui permet de créer des applications Web plus facilement, ou Tensorflow pour développer de nouveaux algorithmes d’intelligence artificielle, ou Unity pour développer des jeux vidéos.
- Mais un framework est effectivement plus “cadrant” dans le sens où on doit suivre ses recommendations sur comment structurer son code, comment étendre des classes ou interfaces du framework, etc.
- Ainsi que les bonnes pratiques et parfois une boite à outil “prêt à l’emploi” vs assemblage.
- Article qui décrit les pour et les contre.
Conférences
Une liste de conférences Java https://javaconferences.org/
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 10-12 mai 2023 : Devoxx UK - London (UK)
- 12 mai 2023 : AFUP Day - Lille & Lyon (France)
- 12 mai 2023 : SoCraTes Rennes - Rennes (France)
- 25-26 mai 2023 : Newcrafts Paris - Paris (France)
- 26 mai 2023 : Devfest Lille - Lille (France)
- 27 mai 2023 : Polycloud - Montpellier (France)
- 31 mai 2023-2 juin 2023 : Devoxx Poland - Krakow (Poland)
- 31 mai 2023-2 juin 2023 : Web2Day - Nantes (France)
- 1 juin 2023 : Javaday - Paris (France)
- 1 juin 2023 : WAX - Aix-en-Provence (France)
- 1-2 juin 2023 : Agile Tour Toulouse - Toulouse (France)
- 2 juin 2023 : Flutter Connection - Paris (France)
- 2-3 juin 2023 : Sud Web - Toulouse (France)
- 7 juin 2023 : Serverless Days Paris - Paris (France)
- 14-15 juin 2023 : OW2 openSource Conf - Paris (France)
- 14-17 juin 2023 : VivaTech (Viva Technology) - https://vivatechnology.com/) - Paris (France)
- 15-16 juin 2023 : Le Camping des Speakers - Baden (France)
- 15-17 juin 2023 : Pas Sage En Seine - Choisy-le-Roi (France)
- 20 juin 2023 : Mobilis in Mobile - Nantes (France)
- 20 juin 2023 : Cloud Est - Villeurbanne (France)
- 20-22 juin 2023 : Adeo DevSummit - Lille (France)
- 21-23 juin 2023 : Rencontres R - Avignon (France)
- 28-30 juin 2023 : Breizh Camp - Rennes (France)
- 29 juin 2023 : Google Cloud Summit France - Paris (France)
- 29-30 juin 2023 : Sunny Tech - Montpellier (France)
- 29-30 juin 2023 : Agi’Lille - Lille (France)
- 7-9 juillet 2023 : Nantes Maker Campus - Nantes (France)
- 8 septembre 2023 : JUG Summer Camp - La Rochelle (France)
- 18 septembre 2023 : Agile Tour Montpellier - Montpellier (France)
- 19-20 septembre 2023 : Agile en Seine - Paris (France)
- 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online
- 21-22 septembre 2023 : API Platform Conference - Lille (France) & Online
- 25-26 septembre 2023 : BIG DATA & AI PARIS 2023 - Paris (France)
- 28-30 septembre 2023 : Paris Web - Paris (France)
- 2-6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium)
- 6 octobre 2023 : DevFest Perros-Guirec - Perros-Guirec (France)
- 10 octobre 2023 : ParisTestConf - Paris (France)
- 11-13 octobre 2023 : Devoxx Morocco - Agadir (Morocco)
- 12 octobre 2023 : Cloud Nord - Lille (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France)
- 12-13 octobre 2023 : Forum PHP 2023 - Marne-la-Vallée (France)
- 19-20 octobre 2023 : DevFest Nantes - Nantes (France)
- 19-20 octobre 2023 : Agile Tour Rennes - Rennes (France)
- 26 octobre 2023 : Codeurs en Seine - Rouen (France)
- 25-27 octobre 2023 : ScalaIO - Paris (France)
- 26-27 octobre 2023 : Agile Tour Bordeaux - Bordeaux (France)
- 10 novembre 2023 : BDX I/O - Bordeaux (France)
- 15 novembre 2023 : DevFest Strasbourg - Strasbourg (France)
- 16 novembre 2023 : DevFest Toulouse - Toulouse (France)
- 6-7 décembre 2023 : Open Source Experience - Paris (France)
- 7-8 décembre 2023 : TechRocks Summit - Paris (France)
- 31 janvier 2024-3 février 2024 : SnowCamp - Grenoble (France)
- 19-22 mars 2024 : KubeCon + CloudNativeCon Europe 2024 - Paris (France)
- 28-29 mars 2024 : SymfonyLive Paris 2024 - Paris (France)
- 17-19 avril 2024 : Devoxx France - Paris (France)
- 25-26 avril 2024 : MiXiT - Lyon (France)
- 25-26 avril 2024 : Android Makers - 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/
LCC 294 - A Devoxx France 2023 en chair en os et en béret
Posté le 17/04/2023Les Cast Codeurs font la clôture de Devoxx France 2022 en chair, en os et en béret.
Enregistré le 14 avril 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-294.mp3
Interview
La vidéo du direct Devoxx France qui est plus facile à suivre se trouvera sur YouTube.
Nous contacter
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Faire un crowdcast ou une crowdquestion
Contactez-nous via twitter https://twitter.com/lescastcodeurs
sur le groupe Google https://groups.google.com/group/lescastcodeurs
ou sur le site web https://lescastcodeurs.com/
LCC 293 - Interview Maven et builds reproductibles avec Hervé Boutemy
Posté le 06/04/2023Dans le cocon de JChateau, Hervé Boutemy se fait interviewer par Charles Sabourdin sur Maven 3, 4, 5 et sur les builds reproductibles. Un grand merci à Charles pour son passage derrière le micro.
Enregistré le 18 mars 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-293.mp3
Interview
Les builds reproductibles
Les builds reproductibles sur la JVM
Les builds reproductibles avec Maven
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 292 - Enterprise Go Beans
Posté le 20/03/2023Cet épisode nouvelles discute d’améliorations dans le JDK, d’Hibernate 6, de Service Weaver, de la fin d’options dans DockerHub pour certains projets open source, de Gradle, de cURL et pleins d’autres choses encore.
Enregistré le 17 mars 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-292.mp3
News
Langages
Quelle version de JDK utiliser en fonction des fonctionnalités que l’on souhaite utiliser, mais aussi du long time support ? https://whichjdk.com/
JetBrains propose une formation Rust intégrée aux IDEs https://blog.jetbrains.com/rust/2023/02/21/learn-rust-with-jetbrains-ides/
- Un apprentissage directement intégré à l’IDE.
- Avec un plugin “Academy” dédié, qui rajoute un troisième panneau avec les instructions, les explications, et on fait des exercices dans la partie IDE.
- Une chouette manière d’apprendre intégrée directement à son IDE.
- Chacun doit pouvoir créer ses propres ressources d’apprentissage, et on pourrait appliquer ça à des frameworks, des outils, ou pourquoi pas son propre projet informatique !
Retravail de classes du JDK Bits
/ ByteArray
vers un usage via VarHandle
pour le swapping de bits dans Java 21
https://minborgsjavapot.blogspot.com/2023/01/java-21-performance-improvements.html
- Petit changement, mais utilisé par beaucoup de classes comme
ObjectInputStream
ouRandomAccessFile
. - Améliore la sérialisation en Java.
Rajout de la notion de sequenced collection dans la hiérarchie des collections, planifié pour le JDK 21 https://www.infoq.com/news/2023/03/collections-framework-makeover/
- Va permettre de codifier les collections qui ont un ordre donné (pas forcément trié).
- Rajoute aussi des méthodes pour traverser des collections séquentielles à l’envers, ou pour récupérer ou ajouter un élément au début ou à la fin d’une collection ordonnée.
- Aujourd’hui, ces méthodes sont éparpillées dans les implémentations et n’avaient pas de contrat commun.
Le guide ultime des virtual threads https://blog.rockthejvm.com/ultimate-guide-to-java-virtual-threads/
- Un très long article qui couvre le sujet des nouveaux virtual threads.
- Comment en créer ?
- Comment ils fonctionnent ?
- Le scheduler et le scheduling coopératif.
- Les “pinned” virtual threads (lorsqu’un thread virtuel est bloqué dans un vrai thread, par exemple dans un bloc
synchronized
ou lors d’appels de méthodes natives). - Les thread local et thread pools.
Librairies
Quarkus 3 alpha 5 avec Hibernate ORM 6 et une nouvelle DevUI https://quarkus.io/blog/quarkus-3-0-0-alpha5-released/
- Passage d’Hibernate 5 à 6 (donc testez !).
- Switch de compatibilité pour aider à la transition https://github.com/quarkusio/quarkus/wiki/Migration-Guide-3.0:-Hibernate-ORM-5-to-6-migration#database-orm-compatibility (API/behavior issues and most schema changes).
StatelessSession
injectable.- Gradle 8.
- Nouvelle DEvUI : nouveau look and feel, plus extensible pour les extensions et plus facile à utiliser, va au-delà des integrations d’extension (config etc).
quarkus deploy
dans la CLI, Gradle et Maven : déploie dans Kube, Knative, OpenShift.
La route vers Quarkus 3, article sur InfoQ https://www.infoq.com/news/2023/03/road-quarkus-3/
- Jakarta EE, ORM 6, Microprofile 6, virtual threads, io_uring, ReactiveStreams => Flow.
- io_uring réduit les copies de buffer entre user space et kernel space.
- Pas de support JPMS en vue, mais Red Hat contribue au projet Leyden.
- Camel extensions : attendez Camel 4 (passage Jakarta EE).
Interview de Geert Bevin, l’auteur du framework Java RIFE2 https://devm.io/java/rife2-java-framework
Google annonce Service Weaver https://opensource.googleblog.com/2023/03/introducing-service-weaver-framework-for-writing-distributed-applications.html
- EJB is back (Enterprise Go Beans :D) !
- Écrire en tant que modular monolith.
- Permet au déploiement de décider ce qui est distribué ou non.
- Basé sur leur expérience du surcoût de maintenance des microservices (contrats plus difficiles à casser, besoin de coordination de rollout…)
- Dans la communauté des enthousiastes.
- Et des gens concernés par les 10 fallacies of distributed computing et le fait de cacher les appels distants.
- Avant cela, EJB et CORBA ont été des échecs de ce point de vue-là.
- Ils n’expliquent pas comment le binding de nouveaux contrats et de déploiement se fait de manière transparente.
- Des déployeurs implémentables (go et GKE initialement).
Étude d’opinion de certains utilisateurs de Jakarta EE (OmniFaces community) https://omnifish.ee/2023/03/10/jakarta-ee-survey-2022-2023-results/
- Biaisée, donc attention.
- Java EE 8, suivi par Jakarta EE 8 et derrière Jakarta EE 10 etc.
- WildFly, puis Payara, puis GlassFish, ensuite Apache TomEE et JBoss EAP.
- Gens contents de leurs serveurs d’application sans WebLogic et Websphere.
- Les API utilisées le plus : JPA, CDI, REST, Faces, Servlet, Bean Validation, JTA, EJB, EL…
- Produit MicroProfile : Quarkus, puis WildFly, puis Open Liberty, puis Payara et Helidon.
- Les plus utilisés dans MicroProfile : Config, REST client, Open API, health et metric.
Comment utiliser des records et Hibernate https://thorben-janssen.com/java-records-embeddables-hibernate/
- Pas en tant qu’entité encore (car final et pas de constructeur vide).
- Mais en tant qu’
@Embeddable
. - Les records sont immuables.
- Dans Hibernate 6.2, c’est supporté par défaut (annoter le record avec
@Embeddable
). - Ça utilise le contrat
EmbeddableInstantiator
.
Cinq librairies Java super confortables https://tomaszs2.medium.com/5-amazingly-comfortable-java-libraries-887802e240de
- MapStruct : pour mapper des entités en DTO.
- jOOQ : pour des requêtes de bases de données typées.
- WireMock : pour mocker des API ou être entre le client et l’API pour ne mocker que certaines requêtes.
- Eclipse Collections : pour rendre le code plus simple et facile à comprendre. Attention à la surface d’attaque.
- HikariCP : connection pool rapide. Agroal est dans la même veine, mais supporte JTA (c’est ce qui est utilisé dans Quarkus).
Retour d’expérience sur Hibernate 6 https://www.jpa-buddy.com/blog/hibernate6-whats-new-and-why-its-important/
- Côté API et côté moteur.
- Jakarta Persistence 3 et java 11.
- Les annotations de types hibernate sont typesafe.
- Support des types JSON out of the box.
- Meilleur support des dates avec
@TimeZoneStorage
, soit natif de la base, soit avec une colonne séparée. - Changement dans la génération des ID (changement cassant), mais la stratégie de nommage historique peut être activée.
- Options autour de UUID (time-based et IP-based).
- Les composite IDs n’ont plus besoin d’être sérialisable.
- Type texte long supportés via
@JdbcTypeCode
. - Multi-tenancy (shared schema, resolver de tenant à plugger).
- Read by position (SQL plus court car sans alias, désérialisation plus rapide, moins de
JOIN
dans certains cas). - Modèle sous-jacent commun entre HQL et l’API criteria, et donc même moteur.
- Meilleure génération du SQL et plus de fonction SQL modernes réduisant le gap entre HQL et SQL.
- Fonctions analytiques et fenêtre quand la base les supportent.
- Graphe traversé en largeur plutôt qu’en profondeur (potentiellement plus de
JOIN
donc bien mettre lazy sur vos associations).
Cloud
Docker supprime les organisations open source sur DockerHub https://blog.alexellis.io/docker-is-deleting-open-source-images/
- Les projets open source risquent de devoir passer de 0 $ à 420 $ par an pour héberger leurs images.
- Rétropédalage de Docker : https://www.docker.com/blog/we-apologize-we-did-a-terrible-job-announcing-the-end-of-docker-free-teams/.
Web
Une base de connaissance sur le fonctionnement et les bonnes pratiques autour des WebHooks https://nordicapis.com/exploring-webooks-fyi-the-webhooks-knowledge-center/
Guillaume a refondu son blog https://glaforge.dev/
- Cette fois-ci, c’est un site web statique, généré avec Hugo, avec des articles en Markdown, hébergé sur Github Pages, construit / publié automatiquement par Github Actions.
Outillage
Gradle 8.0 est sorti https://docs.gradle.org/8.0/release-notes.html
Une CLI connectée à OpenAI’s Davinci model pour générer vos lignes de commandes https://github.com/TheR1D/shell_gpt
sgpt -se "start nginx using docker, forward 443 and 80 port, mount current folder with index.html"
- ->
docker run -d -p 443:443 -p 80:80 -v $(pwd):/usr/share/nginx/html nginx
- -> Execute shell command? [y/N]: y
Un petit outil en ligne basé sur le modèle GPT-3 qui permet d’expliquer un bout de code https://whatdoesthiscodedo.com/g/db97d13
- Copiez-collez un bout de code de moins de 1000 caractères et l’outil vous explique ce qu’il fait.
- Assez impressionnant, quand on pense que c’est un modèle de prédiction probabiliste des prochains caractères logiques.
- Certaines réponses donnent parfois vraiment l’impression que l’outil comprend réellement l’intention du développeur derrière ce bout de code.
Git: Comment rebaser des branches en cascade https://adamj.eu/tech/2022/10/15/how-to-rebase-stacked-git-branches/
native-image
va être inclus dans la prochaine version de GraalVM JDK. Plus besoin de gu install native-image
https://github.com/oracle/graal/pull/5995
Si vous utilisez l’outil Mermaid pour faire des graphes d’architecture, d’interactions, etc, il y a un petit cheatsheet sympa qui montre comment faire certains diagrammes https://jojozhuang.github.io/tutorial/mermaid-cheat-sheet/
Un site avec plein de trucs et astuces sur psql
, la CLI de PostgreSQL
https://psql-tips.org/
cURL a 25 ans ! https://daniel.haxx.se/blog/2023/03/10/curl-25-years-online-celebration/
- Son créateur, Daniel Stenberg, est toujours à la tête du projet.
- cURL est utilisé dans d’innombrables projets.
- Par défaut dans de nombreux systèmes d’exploitation.
Cédric Champeau explique le concept de version catalog de Gradle et comment il améliore la productivité https://melix.github.io/blog//2023/03-12-micronaut-catalogs.html
- Permet de réduire le temps et l’effort nécessaire à gérer la version de ses dépendances.
- Apporte aussi plus de sécurité et de flexibilité, pour s’assurer qu’on a les bonnes versions les plus récentes des dépendances et qu’elles fonctionnent bien entre elles.
Architecture
La pyramide des besoins du code de qualité https://www.fabianzeindl.com/posts/the-codequality-pyramid
- Le bas de la pyramide supporte le haut.
- Les blocs :
- performance de build,
- performance de test,
- testabilité,
- qualité des codes de composants,
- fonctionnalités,
- performance du code.
- Pour chaque bloc, il explique les raisons, ses definitions et des astuces pour l’améliorer.
- Par exemples, les fonctionnalités changent et donc build, testabilité et qualité de code permettent des changements légers en cas de changement dans les fonctionnalités.
- Les perfs viennent ensuite (premature optimization is the root of all evil), regarder les besoins globaux.
Méthodologies
Le DevSusOps est né https://www.infoq.com/news/2023/02/sustainability-develop-operation/
- Bon, sérieusement, comment on couvre avec un nom pareil sans déraper 🤦 !
- Ah dommage Microsoft rejoint la FinOps foundation https://www.infoq.com/news/2023/02/microsoft-joins-finops-org/. Imagine s’ils avaient rejoint la DevSusOps fondation.
Sécurité
Plein de choses qu’on peut faire avec des YubiKeys https://debugging.works/blog/yubikey-cheatsheet/
- pour générer des time-based one-time passwords,
- pour l’accès SSH,
- pour sécuriser une base Keepass,
- comme 2FA pour le chiffrement de disque,
- pour la vérification d’identifiants personnels,
- pour gérer les clés privées,
- …
Loi, société et organisation
Le fabricant de graveurs de CPU hollandais ASML se voit interdire d’exporter ses technologies vers la Chine https://www-lemagit-fr.cdn.ampproject.org/c/s/www.lemagit.fr/actualites/365532284/Processeurs[…]le-escalade-dans-les-sanctions-contre-la-Chine?amp=1
- En tout cas, les technologies de gravure des deux dernières générations.
- De la pression commerciale, on passe au registre d’exclusion par décision militaire.
- ASML s’était fait espionner récemment.
- Canon et Sony aussi dans la restriction.
Meta supprime de nouveau 10000 emplois soit 25% au total depuis la fin de l’année dernière https://www.lesechos.fr/tech-medias/hightech/meta-va-supprimer-10000-postes-de-plus-1915528
Rubrique débutant
Bouger les éléments d’une liste https://www.baeldung.com/java-arraylist-move-items
- Discute du concept d’
ArrayList
en-dessous, et donc le coût d’insérer au milieu. - Découverte de
Collections.swap
, pour intervertir deux éléments. - Découverte de
Collections.rotate
, pour “déplacer” l’index zero de la liste.
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 15-18 mars 2023 : JChateau - Cheverny in the Châteaux of the Loire Valley (France)
- 23-24 mars 2023 : SymfonyLive Paris - Paris (France)
- 23-24 mars 2023 : Agile Niort - Niort (France)
- 30 mars 2023 : Archilocus - Online (France)
- 31 mars 2023-1 avril 2023 : Agile Games France - Grenoble (France)
- 1-2 avril 2023 : JdLL - Lyon 3e (France)
- 4 avril 2023 : AWS Summit Paris - Paris (France)
- 4 avril 2023 : Lyon Craft - Lyon (France)
- 5-7 avril 2023 : FIC - Lille Grand Palais (France)
- 12-14 avril 2023 : Devoxx France - Paris (France)
- 20 avril 2023 : WordPress Contributor Day - Paris (France)
- 20-21 avril 2023 : Toulouse Hacking Convention 2023 - Toulouse (France)
- 21 avril 2023 : WordCamp Paris - Paris (France)
- 27-28 avril 2023 : AndroidMakers by droidcon - Montrouge (France)
- 4-6 mai 2023 : Devoxx Greece - Athens (Greece)
- 10-12 mai 2023 : Devoxx UK - London (UK)
- 11 mai 2023 : A11yParis - Paris (France)
- 12 mai 2023 : AFUP Day - lle & Lyon (France)
- 12 mai 2023 : SoCraTes Rennes - Rennes (France)
- 25-26 mai 2023 : Newcrafts Paris - Paris (France)
- 26 mai 2023 : Devfest Lille - Lille (France)
- 27 mai 2023 : Polycloud - Montpellier (France)
- 31 mai 2023-2 juin 2023 : Devoxx Poland - Krakow (Poland)
- 31 mai 2023-2 juin 2023 : Web2Day - Nantes (France)
- 1 juin 2023 : Javaday - Paris (France)
- 1 juin 2023 : WAX - Aix-en-Provence (France)
- 2-3 juin 2023 : Sud Web - Toulouse (France)
- 7 juin 2023 : Serverless Days Paris - Paris (France)
- 15-16 juin 2023 : Le Camping des Speakers - Baden (France)
- 20 juin 2023 : Mobilis in Mobile - Nantes (France)
- 20 juin 2023 : Cloud Est - Villeurbanne (France)
- 21-23 juin 2023 : Rencontres R - Avignon (France)
- 28-30 juin 2023 : Breizh Camp - Rennes (France)
- 29-30 juin 2023 : Sunny Tech - Montpellier (France)
- 29-30 juin 2023 : Agi’Lille - Lille (France)
- 8 septembre 2023 : JUG Summer Camp - La Rochelle (France)
- 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online
- 21-22 septembre 2023 : API Platform Conference - Lille (France) & Online
- 25-26 septembre 2023 : BIG DATA & AI PARIS 2023 - Paris (France)
- 28-30 septembre 2023 : Paris Web - Paris (France)
- 2-6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium)
- 10-12 octobre 2023 : Devoxx Morocco - Agadir (Morocco)
- 12 octobre 2023 : Cloud Nord - Lille (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France)
- 12-13 octobre 2023 : Forum PHP 2023 - Marne-la-Vallée (France)
- 19-20 octobre 2023 : DevFest Nantes - Nantes (France)
- 10 novembre 2023 : BDX I/O - Bordeaux (France)
- 6-7 décembre 2023 : Open Source Experience - Paris (France)
- 31 janvier 2024-3 février 2024 : SnowCamp - Grenoble (France)
- 1-3 février 2024 : SnowCamp - Grenoble (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/
LCC 291 - ChatGPT licencie 15% des Bisounours
Posté le 13/02/2023Antonio, Guillaume et Emmanuel discutent de licence Oracle pour Oracle JDK, de JEPs, de Flutter, d’Hibernate, de Mokito, de Kafka, de (not so) Big Data, du parsing de YAML, de ChatGPT, de licenciements, de platform engineering, et de nombres flottants.
Enregistré le 10 février 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-291.mp3
News
Langages
Oracle a changé une des licences d’Oracle Java https://redresscompliance.com/oracle-java-licensing-changes-explaned-free/
- Plus d’utilisateurs nommés.
- Mais basé sur tous les employés et même les employés de vos sous-traitants.
- Bref, ça va faire cher.
- Et si vous utilisez plus de 50k processeurs, vous payez en plus.
- Un autre article d’IDC : https://blogs.idc.com/2023/01/30/oracle-java-subscription-changes-what-is-the-impact-to-customers/.
- Message à caractère informatif : il y a d’autres distributions de OpenJDK supportées de différents vendeurs ; ou la version non supportée.
InfoQ fait un résumé des dernières nouvelles Java, les mises à jour sur les JEPs, les dernières releases https://www.infoq.com/news/2023/01/java-news-roundup-jan23-2023/
- Sur Java spécifiquement.
- Des mises à jour de drafts autour du projet amber (primitive types in patterns etc).
- Une JEP pour discuter du futur process des JEP (évolutions).
- JDK 20 en rampdown phase avec en nouvelles features : scoped values, record patterns, pattern matching for switches, virtual threads, structured concurrency - toutes en incubation ou en preview.
- https://www.infoq.com/news/2023/02/java-news-roundup-jan30-2023/.
- Le framework RIFE fait son grand retour !
Sortie de Go 1.20 https://go.dev/doc/go1.20
- Mais pas de gros changements, juste des améliorations de la toolchain, des librairies…
Récap de la conférence Flutter Forward 2023 https://medium.com/@flutterqueen/flutter-forward-2023-recap-8f6da4876e3
- Annonces de Flutter 3.7 et Dart 2.19.
- Amélioration de la performance graphique (utilisation de Impeller au lieu de Skia).
- Layout adaptatif.
- Barres et sous-barres de menu.
- Validation de release iOS.
- Support de Material 3.
- Nouveaux widgets.
- Support de ses propres shaders.
- Facilitation de l’intégration native avec FFIgen et JNIgen.
- Support de la 3D.
- Support de WebAssembly.
- Support de RISC-V.
- Possibilité d’intégrer une app Flutter comme un élément HTML dans une page HTML.
- Un toolkit spécifique pour les applis de News.
- Côté langage Dart, il devrait bientôt y avoir du pattern matching.
Librairies
Les bonnes pratiques d’accessibilité pour les applications en Flutter https://medium.com/flutter-community/creating-inclusive-apps-with-flutter-best-practices-for-accessibility-c7cebe0beb4d
- 4 grands thèmes dans l’article : l’accessibilité dans Flutter, les fonctionnalités intégrées à Flutter pour l’accessibilité, les meilleures pratiques pour rendre les apps Flutter accessibles et tester / déboguer l’accessibilité.
- Flutter supporte le text contrast, les screen readers, les labels sémantiques, l’utilisation au clavier.
Comment logger les requêtes Hibernate ORM https://www.adeliosys.fr/articles/hibernate-monitoring/
- Log brut.
- Via un logger.
- Les requêtes lentes (plus lentes que n millisecondes).
- Les métriques plus avancées (Statement, requêtes, temps d’acquisition de connexions, cache).
- Exposable via JMX.
- Le pool de connexions.
Sortie de Mockito 5, avec la possibilité de mocker des constructeurs, des méthodes statiques et des classes finales https://www.infoq.com/news/2023/01/mockito-5/
- Avant, c’était déjà possible avec
mockito-inline
mais maintenant, c’est “out of the box”. - La version Java minimale passe de Java 8 à Java 11.
Cloud
Kubernetes Java client ajoute le support de kubernetes 1.25 https://www.infoq.com/news/2023/01/kubernetes-java-client/
- Ajout d’APIs dynamique pour faire du monitoring générique.
- L’article montre l’API utilisée en alternative à certaines commandes
kubectl
- fabric8 est une alternative.
Data
Big data est mort https://motherduck.com/blog/big-data-is-dead/
- Fondateur de BigQuery.
- Puis, il a regardé comment les utilisateurs utilisaient BigQuery.
- Et pas un problème de big data.
- Retour des moteurs classiques MySQL / PostgreSQL vs MongoDB…
- La plupart des utilisateurs de BigQuery étaient sous les 1 TB et 50% at 100 GB ou moins.
- Donc le deluge de données n’est pas arrivé.
- Le shift moderne, c’est de détacher le stockage du compute.
- Les données grossissent plus vite que les besoins en compute sur ces données.
- La taille du workload est sur un petit sous ensemble de la taille des données entières (90% des requêtes BigQuery sont sur 100M de données).
- Bases de données modernes sont force à travailler sur un sous ensemble des données.
- Pression pour stocker moins de données sur les équipes.
- Les données sont requêtées dans la journée, dans la semaine et ensuite rarement touchées.
- Donc big data = whatever doesn’t fit on a single machine est de moins en moins vrai.
- Map reduce en 2004 et machines de maintenant entre 2 et 4 ordres de grandeur de RAM en plus.
- Avant on se foutait de supprimer des données, mais RGPD et responsabilité pénale change la donne.
- Data putrefaction comme le bit rot.
- Questionnaire pour savoir si les prochaines générations de data processing seront suffisantes pour vous.
- Distribution est une raison par contre.
Outillage
Tous les soucis avec YAML https://ruudvanasseldonk.com/2023/01/11/the-yaml-document-from-hell
- Article qui explique la complexité de YAML et ses incohérences.
- Comparaison à la simplicité de JSON.
- Les commentaires JSON ont été enlevés en 2005 parce que les gens mettaient des meta instructions pour les parseurs et l’implémentation des commentaires était très complexe.
22:22
est un nombre en base 60 vs80:80
qui ne l’est pas (enlevé en YAML 1.2).- **.png
est invalide,**
est une référence vers une ancre.- !.git
est parsé différemment par les parseurs :!
est une échappe pour exprimer un type natif du langage (p. ex. Java) - ça veut dire que charger un YAML inconnu est non sûr.- fr - de - no
retourne["fr", "de", no]
le problème Norvège a changé entre YAML 1.1 et 1.2, mais les parseurs gardent les anciens comportements. Boolean:on
,yes
,y
.on: "let's go"
est converti en{ "True": "let's go" }
parce qu’on
est un booléen accepté en clé non String dans YAML.version: [ 9.5.1, 12.13]
->{ "version": [ "9.5.1", 12,13 ] }
les chiffres non échappé par des guillemets.- Syntax highlighting est donc dépendant.
- Les templates dans YAML ça court à la cata.
- Alternatives : TOML, JSON, sous ensemble de YAML (toujours quoter les chaînes).
ChatGPT, on lui attribue plus de magie qu’il n’en a https://arxiv.org/pdf/2212.03551.pdf
- Un article scientifique, mais de 8 pages seulement.
- ChatGPT en tant que Large Language Model (LLM) avec un prompt Engineering au-dessus (le conversational agent).
- ChatGPT c’est une exécution du modèle Next Token Prediction.
- C’est de la statistique brute, mais extrêmement versatile dans ses usages.
- Tendance à anthropomorphismes parce qu’on a passé la sensation de uncanny valley.
- Considérant la distribution statistique des mots du corpus public, quels mots ont le plus de chance de venir après.
- Pas de relation au monde, aux objets et aux interactions d’êtres partageant le même langage.
- Pas des faits, ChatGPT ne sait pas, n’a pas d’intention.
- C’est donc un outil génial pour éliminer un paquet du bullshit work de tous les jours, pas les gens qui le font.
- Est-ce que les capacités sont émergentes ? LLM fondamentalement est hors du concept.
Le méta tutoriel sur le parsing avec Antlr https://tomassetti.me/antlr-mega-tutorial/
- Couvre différents langages dont Java, Python, JavaScript et C#.
- Explique les différentes phases de lexing, de parsing.
- Explique comment résoudre les ambiguïtés avec les prédicats sémantiques, transformer du code, tester son parseur.
- Et autres trucs et astuces.
Un tutoriel sur comment releaser un module Java avec Maven, JReleaser et Github Actions https://foojay.io/today/how-to-release-a-java-module-with-jreleaser-to-maven-central-with-github-actions/
- Montre le setup nécessaire (clé GPG, propriété du
groupId
, config maven…). - Montre comment faire la release à la main.
- Montre comment l’automatiser via GitHub actions.
Un tutoriel expliquant comment utiliser CRaC pour vos applis Java dans un conteneur https://foojay.io/today/how-to-run-a-java-application-with-crac-in-a-docker-container/
- Coordinated Restore at Checkpoint (développé par Azul).
- Permet de créer des snapshots d’une application Java.
- Pour qu’elle puisse être relancée rapidement après son démarrage, sans warmup.
Une intro à Kafka en français https://blog.octo.com/kafka-repond-il-a-mon-besoin/
Maven 3.9 est sorti https://lists.apache.org/thread/0tfr7t2j2ddbv4gjvxm47yohtk3dg6b3
- https://maven.apache.org/docs/3.9.0/release-notes.html
- Java 8 nécessaire pour lancer Maven.
- Pas mal de nettoyage de code et de dépendances pour préparer Maven 4. Certains plugins mal conçus (ex : qui ne déclare pas la dep
plexus-util
) peuvent être incompatibles. .mvn/maven.config
doit désormais avoir 1 argument par ligne.- Maven avertit maintenant sur l’utilisation de plugins obsolètes, objectifs, paramètres, etc.
- Ajout de la prise en charge de l’invocation
mvn pluginPrefix:version:goal
et mise à jour des logs (pour simplifier le copier/coller). - Ajout d’activation de profil par packaging.
- Maven 3.9.0 est désormais entièrement compatible avec la nouvelle ligne 3.x d’installation et de déploiement de plugins (les versions précédentes préviennent à ce sujet).
- Ajout du support du repo local partagé - https://maven.apache.org/resolver/local-repository.html#shared-access-to-local-repository.
- Ajout de la possibilité de splitter le repo local (releases, vs snapshots…) et possibilité de gérer des workspaces - https://maven.apache.org/resolver/local-repository.html#split-local-repository.
- Filtrage des dépendances par repository - https://maven.apache.org/resolver/remote-repository-filtering.html.
- Chained local repository (pour l’isolation entre “outer” and “inner” builds) - https://issues.apache.org/jira/browse/MNG-7612.
- Attention : il y aurait une regression (10%) sur les perfs de gros projets - https://issues.apache.org/jira/browse/MNG-7677.
Méthodologies
De operation engineering vers platform engineering https://www.infoq.com/news/2022/10/platform-devops-summary/
- Et quand le sysadmin devient de nouveau sexy.
- Grosse tendance et beaucoup de discussions autour de la platform engineering.
- Une plateforme imposée aux devs mais sexy donc c’est bon cette fois : plus sérieusement customer focus - la fameuse developer experience.
- Rééquilibrage entre dev vs ops puis devops plat et maintenant ceci. Sans enlever devops.
- Car devops amène une charge mentale lourde.
- Objectif : développer la core business value et donc supporter cela avec une Internal Developer Platform (IDP).
- Backstage est la GUI au-dessus, mais une IDP est plus profonde.
- Infra <-> Platform <-> dev teams.
- IDP : ne pas avoir à faire tourner l’infra (pour une équipe dev metier).
- Et cela permet d’ajouter des contrôles “entreprise” : coût, gouvernance etc.
- C’est un pendule qui se rééquilibre, mais n’oublions pas que les devs aime le jeu, comme les otaries. Pas pisser du code metier le plus vite possible.
- Est-ce que les IDP seront populaires, c’est la grande question.
- Un contre point dans l’article : IDP are expensive and hard to do, offer a mediocre service at best, destroy velocity, and create bad incentives.
- Lié à la notion de golden path.
Sécurité
Une liste de binaires Unix qui peuvent être utilisés pour bypasser des systèmes mal configurés https://gtfobins.github.io/
- Apparemment, même des images type distroless peuvent être affectées.
- Risques : accès à un shell, des privilèges élevés, transférer des fichiers, etc.
Loi, société et organisation
Twitter désactive l’API pour les clients qui n’affichent pas les pubs de Twitter (comme Tweetbot https://twitter.com/tweetbot/status/1613763746437947394)
- Et paf le support de Twitter sur ton ordi.
Dans la saga Twitter, après l’arrêt des clients Twitter tiers, maintenant l’accès même à l’API va devenir payant https://twitter.com/twitterdev/status/1621026986784337922
- Donc par exemple, on ne pourra même plus créer des bots gratuitement, comme faire des annonces automatiques de release, etc.
- Ah bah merde, c’est ce que je fais pour les cast codeurs :/.
Ola Bini déclaré innocent https://peoplesdispatch.org/2023/02/01/digital-rights-activist-ola-bini-declared-innocent-by-ecuadorian-court
- Arrêté en 2019 en Équateur.
- Accusé d’avoir eu accès à des ordinateurs et des systèmes de communication.
- En même temps que Julian Assange était renvoyé de l’ambassade Équatorienne de Londres.
- Il a fait 70 jours de prison.
Google a viré son équipe Open Source https://www.infoworld.com/article/3686511/google-blew-it-with-open-source-layoffs.html
- Gros efforts autour de l’open sourcing (Kubernetes, Tensor flow).
- Paie des dividendes.
- Viré par les têtes de gondoles, mais ceux qui avaient fait des différences.
- Open Source program, Google Summer of Code.
- Grosse influence interne qui se perd, risque pour le futur.
- Ça reste l’opinion de Matt Asay ( :stuck_out_tongue_winking_eye: ).
On peut rajouter son Mastodon sur son profil Github https://github.blog/changelog/2023-02-02-add-more-social-links-to-your-user-profile/
- Pratique pour la vérification Mastodon !
- On pouvait seulement mettre un lien vers Twitter, maintenant on peut avoir plusieurs profils de médias sociaux différents
Rubrique débutant
Julia Evans a écrit deux articles intéressants sur les problèmes avec les nombres flottants et avec les nombres entiers https://jvns.ca/blog/2023/01/13/examples-of-floating-point-problems/ https://jvns.ca/blog/2023/01/18/examples-of-problems-with-integers/
- Les problèmes classiques d’overflow.
- Le grand-écart entre les grands nombres flottants.
- Des cas concrets de valeurs approchées (proche à epsilon près), ou avec JavaScript qui interprète les entiers comme des flottants et du coup interprète mal des grands ID en JSON.
- Des clés primaires trop petites, les bizarreries de l’encodage des nombres signés ou non.
Quels sont les types de mémoires dans la JVM ? https://www.baeldung.com/java-jvm-memory-types
- Heap, Stack, Native, Direct.
- Je pense que l’article a des incohérences, en tout cas native vs direct est mal expliqué. Un truc pas super clair, mais plus clair est ici sur native vs direct : https://stackoverflow.com/questions/30622818/what-is-the-difference-between-off-heap-native-heap-direct-memory-and-native-m.
- C’est en gros direct vers du hardware (IO, network etc).
- Memory mapped file permet d’aller au dela de la limite de memoire vive du système.
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 9-11 février 2023 : World AI Cannes Festival - Cannes (France)
- 16-19 février 2023 : PyConFR - Bordeaux (France)
- 7 mars 2023 : Kubernetes Community Days France - Paris (France)
- 15-18 mars 2023 : JChateau - Cheverny in the Châteaux of the Loire Valley (France)
- 23-24 mars 2023 : SymfonyLive Paris - Paris (France)
- 23-24 mars 2023 : Agile Niort - Niort (France)
- 30 mars 2023 : Archilocus - Online (France)
- 31 mars 2023-1 avril 2023 : Agile Games France - Grenoble (France)
- 1-2 avril 2023 : JdLL - Lyon 3e (France)
- 4 avril 2023 : AWS Summit Paris - Paris (France)
- 5-7 avril 2023 : FIC - Lille Grand Palais (France)
- 12-14 avril 2023 : Devoxx France - Paris (France)
- 20-21 avril 2023 : Toulouse Hacking Convention 2023 - Toulouse (France)
- 27-28 avril 2023 : AndroidMakers by droidcon - Montrouge (France)
- 4-6 mai 2023 : Devoxx Greece - Athens (Greece)
- 10-12 mai 2023 : Devoxx UK - London (UK)
- 12 mai 2023 : AFUP Day - lle & Lyon (France)
- 25-26 mai 2023 : Newcrafts Paris - Paris (France)
- 26 mai 2023 : Devfest Lille - Lille (France)
- 27 mai 2023 : Polycloud - Montpellier (France)
- 31 mai 2023-2 juin 2023 : Devoxx Poland - Krakow (Poland)
- 31 mai 2023-2 juin 2023 : Web2Day - Nantes (France)
- 1 juin 2023 : Javaday - Paris (France)
- 1 juin 2023 : WAX - Aix-en-Provence (France)
- 7 juin 2023 : Serverless Days Paris - Paris (France)
- 15-16 juin 2023 : Le Camping des Speakers - Baden (France)
- 29-30 juin 2023 : Sunny Tech - Montpellier (France)
- 8 septembre 2023 : JUG Summer Camp - La Rochelle (France)
- 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online
- 21-22 septembre 2023 : API Platform Conference - Lille (France) & Online
- 2-6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium)
- 12 octobre 2023 : Cloud Nord - Lille (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France)
- 6-7 décembre 2023 : Open Source Experience - Paris (France)
- 31 janvier 2024-3 février 2024 : SnowCamp - Grenoble (France)
- 1-3 février 2024 : SnowCamp - Grenoble (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/
LCC 290 - Mettre tes lunettes dans ta base de données
Posté le 14/01/2023Guillaume et Arnaud discutent de tech en cette nouvelle année 2023. GraalVM dans OpenJDK, Rust, Webassembly, containers. postgres, ChatGPT, le rôle de l’architecte et la ribambelle de rétrospective 2022.
Enregistré le 13 janvier 2023
Téléchargement de l’épisode LesCastCodeurs-Episode-290.mp3
News
Langages
OpenJDK propose le projet Galahad pour fusionner dans OpenJDK certaines parties de GraalVM community edition https://www.infoq.com/news/2022/12/openjdk-galahad-Dec22/
Alex Snaps partage un article sur Rust pour le développeur Java https://wcgw.dev/posts/2023/rusty-java-intro/
- Basé sur son talk sur le même thème qu’il a déjà présenté à Devoxx Maroc et Belgique.
- Alex a également écrit une deuxième partie faisant suite à son article, dans lequel il parle un peu plus d’ownership, de borrowing, du trait Drop, etc. (c.-à-d. sur la gestion mémoire).
- https://wcgw.dev/posts/2023/rusty-java-2/
Google a sorti sa formation interne sur Rust en libre accès https://google.github.io/comprehensive-rust/
Paul King du projet Apache Groovy partage sa rétrospective de l’année 2022 https://blogs.apache.org/groovy/entry/apache-groovy-2022-year-in
Webassembly pour le développeur Java https://www.javaadvent.com/2022/12/webassembly-for-the-java-geek.html
Un article assez critique sur TypeScript https://dev.to/wiseai/17-compelling-reasons-to-start-ditching-typescript-now-249b
- On voit souvent des articles plutôt positifs sur TypeScript, mais est-ce que tout est tout rose tout le temps, pas forcément !
- L’article cite 17 problèmes avec TypeScript, dont la courbe d’apprentissage, la baisse de productivité, la verbosité des types, le manque de flexibilité, le fait que ce n’est pas vraiment un sur-ensemble de JavaScript, la lenteur du temps de compilation…
Librairies
Sortie du Micronaut 3.8 https://micronaut.io/2022/12/27/micronaut-framework-3-8-0-released/
- support de GraalVM 22.3.0,
- possibilité d’annoter les records avec
@RequestBean
(pour binder les paramètres de requête et autre, aux paramètres de la méthode du controller), - amélioration du CorsFilter pour éviter certaines attaques,
- également des améliorations sur le support de CRaC (Coordinated Restore at Checkpoint),
- et plein d’autres upgrades de versions, nouveaux plugins et améliorations mineures.
Swing n’est pas mort ! Un nouveau DSL Java open source pour Swing dénommé Sierra, pour faciliter la création d’interfaces graphiques Swing https://github.com/HTTP-RPC/Sierra
Infrastructure
Comprendre root
dans et en dehors des conteneurs https://www.redhat.com/en/blog/understanding-root-inside-and-outside-container
- Un article pas récent, mais utile.
- Qu’est-ce qu’un conteneur rootless ?
- On peut être
root
et lancer le moteur de conteneur. - On peut être
root
dans le conteneur lui-même. - Quand on exécute en
root
le moteur, l’utilisateur extérieur et intérieur sont mappés (même numéro d’UID) ; par contre en non-root
, l’UID de l’utilisateur du conteneur est mappé sur un nouvel UID - C’est top, car les utilisateurs dedans et dehors ne sont pas mappés, donc moins de risque en cas de sortie de bac à sable (sandbox escape).
- C’est le cas pour podman, mais pour docker il y a un ajout : docker a un démon (root ou pas) et une CLI qui appelle ce demon (root ou pas). Ce qui importe, c’est le demon pour les risques de sécu.
- L’idéal, c’est d’exécuter en non-root le moteur et d’être non-root dans le conteneur (même si encore beaucoup d’images s’attendent à être root les folles).
Cloud
Kubernetes 1.26 avec notamment une de corrélation de l’hébergement de la Registry par Google https://www.infoq.com/news/2022/12/kubernetes-1-26/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=Devops
Web
Evan You, le créateur de Vue.js revient sur l’année 2022 https://blog.vuejs.org/posts/2022-year-in-review.html
- C’est la grande migration de Vue 2 vers Vue 3.
- Migration de l’API Composition de Vue 3 vers l’API Options de Vue 2 (mais supportée encore en 3).
- La documentation de Vue propose Vue 3 par défaut depuis février.
- Pendant la phase de transition, gros focus sur l’outillage et l’expérience développeur.
- L’écosystème a bien adopté Vue 3 et continue de le faire au fur et à mesure.
- Pour 2023, espère faire plus de releases mineures régulières et travail sur le “vapor mode” qui propose une stratégie de compilation plus rapide.
Data
Un article de Stephan Schmidt qui suggère d’utiliser PostgreSQL… pour tout ! https://www.amazingcto.com/postgres-for-everything/
- pour du caching à la place de REDIS,
- comme une queue de messages,
- pour stocker des documents JSON au lieu de MongoDB,
- pour faire des requêtes géo-spatiales,
- pour le full-text search à la place d’ElasticSearch,
- pour générer du JSON directement en base,
- comme stockage / adaptateur pour GraphQL ou pour Timescale (base de données time-series).
Outillage
ChatGPT en action sur le design d’un nouveau langage de programmation https://judehunter.dev/blog/chatgpt-helped-me-design-a-brand-new-programming-language
ChatGPT, on lui attribue plus de magie qu’il n’en a https://arxiv.org/pdf/2212.03551.pdf
Github rajoute le scan des secrets dans vos repos publics aussi https://github.blog/2022-12-15-leaked-a-secret-check-your-github-alerts-for-free/
- ça n’est plus seulement pour les organisations des entreprises,
- aussi accessible pour les repos publics,
- permet d’éviter de leaker des clés d’API et autre.
Les nouveautés de Java sur Visual Studio Code https://foojay.io/today/java-on-visual-studio-code-update-december-2022/
- améliorations visuelles pour les extensions Spring Boot et aussi pour la visualisation de la mémoire utilisée,
- complétion “post-fix” comme dans IntelliJ,
- plus de raccourcis pour générer du code,
- support de Lombok intégré,
- support de l’annotation processing de Gradle,
- meilleure visualisation des erreurs de build,
- 2 millions de développeurs utilisent Visual Studio Code pour Java.
Encore un guide pour sortir de Vi https://thevaluable.dev/vim-advanced/
Le client HTTP de IntelliJ peut maintenant être utilisé en ligne de commande et dans un environnement d’intégration continue https://blog.jetbrains.com/idea/2022/12/http-client-cli-run-requests-and-tests-on-ci/
Architecture
L’évolution du rôle de l’architecte https://www.infoq.com/articles/architecture-architecting-role/
Le (très long) rapport des tendances 2023 par Didier Girard et Olivier Rafal https://www.linkedin.com/pulse/rapport-tendances-2023-didier-girard/?trackingId=wu9pJ4wNQAOKjh11R2UyjA%3D%3D
- un prisme tech/orga/culture pour préparer l’entreprise aux enjeux,
- un prisme produits/plateformes/data pour structurer notre approche d’un SI moderne,
- couvre des tonnes de sujets de l’intelligence artificielle, les données, le cloud, le web1/2/3, mais aussi l’organisation des équipes, les rôles, etc.
Loi, société et organisation
Twitter n’apprécie guère Mastodon, et bride les tweets avec des liens vers Mastodon. La liberté d’expression façon Elon Musk ! https://twitter.com/bluxte/status/1603656787097534464
- Statement de Mastodon sur le fait que Twitter bannit les liens vers Mastodon https://blog.joinmastodon.org/2022/12/twitter-suspends-mastodon-account-prevents-sharing-links/
- Et finalement Twitter est revenu en arrière sur son changement des conditions d’utilisation
Dans la famille “les informaticiens ont des super-passions”, je voudrais Cédric Champeau, qui nous fait une magnifique rétrospective de ces clichés d’astrophotographie https://melix.github.io/blog//2022/12/astrophoto-2022.html
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 19 janvier 2023 : Archilocus - Bordeaux (France)
- 19-20 janvier 2023 : Touraine Tech - Tours (France)
- 25-28 janvier 2023 : SnowCamp - Grenoble (France)
- 31 janvier 2023 : Duck Conf - Paris (France)
- 2 février 2023 : Very Tech Trip - Paris (France)
- 2 février 2023 : AgiLeMans - Le Mans (France)
- 9-11 février 2023 : World AI Cannes Festival - Cannes (France)
- 16-19 février 2023 : PyConFR - Bordeaux (France)
- 7 mars 2023 : Kubernetes Community Days France - Paris (France)
- 23-24 mars 2023 : SymfonyLive Paris - Paris (France)
- 23-24 mars 2023 : Agile Niort - Niort (France)
- 1-2 avril 2023 : JdLL - Lyon 3e (France)
- 5-7 avril 2023 : FIC - Lille Grand Palais (France)
- 12-14 avril 2023 : Devoxx France - Paris (France)
- 20-21 avril 2023 : Toulouse Hacking Convention 2023 - Toulouse (France)
- 4-6 mai 2023 : Devoxx Greece - Athens (Greece)
- 10-12 mai 2023 : Devoxx UK - London (UK)
- 12 mai 2023 : AFUP Day - lle & Lyon (France)
- 25-26 mai 2023 : Newcrafts Paris - Paris (France)
- 26 mai 2023 : Devfest Lille - Lille (France)
- 27 mai 2023 : Polycloud - Montpellier (France)
- 7 juin 2023 : Serverless Days Paris - Paris (France)
- 15-16 juin 2023 : Le Camping des Speakers - Baden (France)
- 29-30 juin 2023 : Sunny Tech - Montpellier (France)
- 19 septembre 2023 : Salon de la Data Nantes - Nantes (France) & Online
- 21-22 septembre 2023 : API Platform Conference - Lille (France) & Online
- 2-6 octobre 2023 : Devoxx Belgium - Antwerp (Belgium)
- 12 octobre 2023 : Cloud Nord - Lille (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont-Ferrand (France)
- 6-7 décembre 2023 : Open Source Experience - 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/
LCC 289 - La revanche des dinosaures
Posté le 10/12/2022Guillaume et Emmanuel discutent les nouvelles de novembre/décembre : spring boot 3, AWS SnapStart, GitHub Copilot en procès… Et aussi des articles de fond : performance, SRE et l’auto résilience, comment utiliser Git, le Devops pour les décideurs, l’âge et la tech et d’autres sujets encore.
Enregistré le 9 décembre 2022
Téléchargement de l’épisode LesCastCodeurs-Episode-289.mp3
News
Langages
Comment choisir ses collections ? Entre les différentes listes, maps, queues, etc. https://www.baeldung.com/java-choose-list-set-queue-map
- Un bon rappel des fonctionnalités des différentes collections (discuter le diagramme de choix).
- Et un bon rappel des ordres de grandeur d’insertion, de lecture, etc.
- Attention O(n) ne veut pas dire plus lent que O(1), ça signifie que ça scale linéairement.
- Il reste toujours bon de tester avec le volume attendu de données.
- Un bon vieux
Object[]
qu’on traverse à chaque fois peut être bien plus efficace (moins gourmand en structure memoire, moins de jump memoire, etc.).
Librairies
Spring Boot 3 est sorti https://spring.io/blog/2022/11/24/spring-boot-3-0-goes-ga
- Java 17 de base,
- support de GraalVM Native Image (au lieu de l’ancienne expérimentation de Spring Native),
- amélioration de la traçabilité avec Micrometer et Micrometer Tracing,
- JakartaEE 9 minimum et support de JakartaEE 10.
Quarkus est 600 fois plus lent qu’un compétiteur, ou pas https://t.co/1c2sFSY9sE
- discute le lien entre les résultats et l’environnement
- une erreur de code initiale
- puis une erreur de limite de système ou deux
- pour arriver au résultat
- bon retour sur l’approche méthodologique.
Spring vault 3 https://spring.io/blog/2022/11/28/spring-vault-3-0-goes-ga
- Java 17,
- plus de clients supportés, comme le client réactif du JDK,
- support du versionnage des mots de passe pour les vaults clé-valeur.
Cloud
Mais pourquoi Twitter tourne-t-il toujours malgré toutes les personnes renvoyées ? https://matthewtejo.substack.com/p/why-twitter-didnt-go-down-from-a
- Grâce au long travail de SRE, de mise en place d’auto-réparation, de cache, de monitoring, de sur-provisioning. Donc beaucoup d’automatisation pour faire en sorte que le tout fonctionne “presque” tout seul sans trop d’intervention humaine.
- C’est un article écrit par un des SRE qui travaillait en particulier sur le cache de Twitter.
GitHub passe à un versioning par date de son API REST https://github.blog/2022-11-28-to-infinity-and-beyond-enabling-the-future-of-githubs-rest-api-with-api-versioning/
- au lieu de continuer avec une v4, v5, etc, utilisation de date comme 2022-12-25,
- chacune de ces versions serait supportée a minima 2 ans,
- on peut spécifier la version avec un header HTTP spécial,
- pas de changement pour l’API GraphQL par contre,
- Stripes va encore plus loin en se rappelant la version utilisée au premier appel et le fixe par défaut,
- les appels sans version explicite utilisent celle-là, et on peut la faire évoluer globalement.
Amazon SnapStart pour Lambda https://aws.amazon.com/blogs/aws/new-accelerate-your-lambda-functions-with-lambda-snapstart/
- démarrer plus rapidement les lambdas,
- a une phase
Init
exécutée pour préparer la lambda, - snapshot Firecracker VM pas juste CRaC,
- remplace les seeds et le réseau et le disque,
- réduit les temps de démarrage,
- testé avec Quarkus
- testé avec Micronaut
- et avec Spring Boot.
Outillage
Petit tip Git de Minko Gechev (monsieur Angular) https://twitter.com/mgechev/status/1594758205237706752
- On peut faire un
git clone [repo] —depth 1
pour dire qu’on ne veut que la dernière révision, et non pas tout l’historique du repo. - C’est pratique en particulier dans une CI pour gagner du temps lorsqu’on a un gros repo avec beaucoup de révisions.
Si vous luttez toujours avec git, ce guide très détaillé peut vous aider. https://github.com/k88hudson/git-flight-rules
- Il s’agit d’un énorme “Comment faire ?” qui est même traduit en plusieurs langues, dont le français.
Faire tourner ses Github Actions en local avec le projet open source act
https://github.com/nektos/act
- Pratique de vérifier en local le fonctionnement de son pipeline avant de le pousser sur Github en prod.
- Utilise Docker sous le capot pour faire tourner chaque étape.
- Peut marcher sur podman, mais pas garanti pour l’instant.
Comment transformer n’importe quel site web ou webapp en application autonome https://glaforge.appspot.com/article/turning-a-website-into-a-desktop-application
- utilisation d’une fonctionnalité de Chrome : la création de raccourci avec ouverture dans une fenêtre “sans chrome”,
- fonctionne sur tous les OS,
- utilise le favicon comme icône pour l’application,
- le site web se retrouve dans votre barre des tâches comme une application normale, et on peut faire un
ALT/CMD-Tab
pour aller vers son application, etc.
Architecture
Six patterns pour les architectures event-driven https://medium.com/wix-engineering/6-event-driven-architecture-patterns-part-1-93758b253f47
- De Wix.
- Il y a trois patterns dans cet article.
- Consume and project : vue dématérialisée copie des données chaudes consommées par beaucoup. Et ces vues sont focalisées sur un consommateur. Kafka et CDC au milieu pour découpler.
- Event-driven de bout en bout : WebSocket utilisé pour envoyer les demandes. Le web socket serveur copie dans Kafka. Ces consommateurs font le job et un message est envoyé via le web socket serveur. Résilience, découplage.
- K/V store : et en particulier avec kafka qui permet d’être consommé en key/value basse latence et en consommation d’évènement.
- Peut être intéressant, mais pas si simple de comprendre les usages dans cet article.
Méthodologies
Un article sur quoi et pourquoi le DevOps (englobant les bonnes pratiques du moment) https://enix.io/fr/blog/devops-benefices-difficultes/
- Les techs ne vont pas apprendre grand-chose.
- Mais c’est un article pour les managers ou plutôt les execs pour les aider à voir la valeur de DevOps.
- Souvent plus facile de montrer la valeur par du contenu extérieur à l’entreprise, car perçu comme neutre.
- Autres articles sur Kubernetes pour les execs : https://enix.io/fr/blog/kubernetes-benefices-difficultes/.
Amazon et la methode “working backwards” pour un produit https://www.productplan.com/glossary/working-backward-amazon-method/
- imaginer le produit prêt à être mis en production,
- écrire la press release,
- évaluer l’opportunité (doit-on le construire),
- découvrir les solutions pour le faire et avoir l’approbation des décideurs,
- construire la roadmap,
- construire le backlog.
Sécurité
1.5 million de lignes de code dans Android sont maintenant en Rust https://security.googleblog.com/2022/12/memory-safe-languages-in-android-13.html?m=1
- de plus en plus de code memory safe (Java, Kotlin, Rust),
- mais la majorité de nouveau code reste quand meme Java et C++,
- et une correlation de baisse de vulnérabilités liées à la sureté de mémoire (moins de code de programme memory unsafe),
- ou maturation du code avec moins de vulns ?,
- autres efforts : outils de sécurisation de la memoire en C/C++, fuzzing,
- zéro vuln memoire dans le code Rust en 2 ans et en moyenne une par kLOC dans le code historique,
- Java -> JNI, Rust - unsafe pour les accès resource.
Loi, société et organisation
Les dinosaures de la tech commencent à 40 ans ? https://www.linkedin.com/pulse/non-nous-ne-sommes-pas-des-dinosaures-de-la-tech-pass%C3%A9-ramade/
- Commentaire intéressant de Benjamin Marron qui explique “s’être restreint aux technos de son cœur d’activité, car trop de veille technologique hétérogène l’avait épuisé et avait renforcé son sentiment d’être complètement obsolète et dépassé” https://twitter.com/bmarron/status/1596136098828148736
- Âge median des devs entre 28 et 31 ans chez Google, Microsoft et Facebook.
- Mais 50 ans, c’est 30% de la force de travail.
- Avantages des seniors:
- expérience,
- mentorat, comm, interaction interpersonnelle (Atlassian a une personne de 40+ ans dans chaque équipe),
- rétention : moins de changement de travail tous les 3 ans,
- flexibilité : les vieux ont leurs enfants partis,
- aide à faire des produits pour les personnes de même âge,
- Pas souvent dans les politiques de DSI.
GitHub copilot menacé par un procès https://www.infoq.com/news/2022/11/lawsuit-github-copilot/?utm_source=twitter&utm_medium=link&utm_campaign=calendar
- aux États-Unis,
- class action contre GitHub copilot, Microsoft et OpenAI
- violation de copyright et notamment des licenses open source,
- hypothèse est qu’humain ou AI on la même responsabilité face à la license,
- discussion autour de fair use VS rupture de contrat, DMCA, etc.,
- piratage de logiciel à une échelle sans précédant,
- peut avoir des conséquences fortes sur l’IA et son utilisation des sources ouvertes pour construire du contenu,
- et Antonio va devoir recoder à la main.
Rubrique débutant
Différentes méthodes d’interpolation des chaines en Java https://www.baeldung.com/java-string-interpolation
- la concatenation avec
+
, - la methode
format()
souvent intimidante mais plus optimisée et sûre, StringBuilder
le plus flexible notamment dans les cas deif
(et autres variations), plus rapide mais moins sûr que format,MessageFormat
pour les chaines de caractère utilisateur (multi-langage),- Apache Commons (pas sûr qu’il y ait encore beaucoup d’usage avec les JDK modernes).
Outils de l’épisode
Calendrier de l’Avent du code 2022 https://adventofcode.com/
- tous les ans (premier en 2015),
- des petits puzzles à résoudre tous les jours,
- on peut utiliser n’importe quel langage, seul le résultat de l’algorithme compte,
- beaucoup de gens publient leur solution sur Redit.
Conférences
La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :
- 1 décembre 2022 : Devops DDay #7 - Marseille (France)
- 2 décembre 2022 : BDX I/O - Bordeaux (France)
- 2 décembre 2022 : DevFest Dijon 2022 - Dijon (France)
- 14-16 décembre 2022 : API Days Paris - Paris (France) & Online
- 15-16 décembre 2022 : Agile Tour Rennes - Rennes (France)
- 19 janvier 2023 : Archilocus - Bordeaux (France)
- 19-20 janvier 2023 : Touraine Tech - Tours (France)
- 25-28 janvier 2023 : SnowCamp - Grenoble (France)
- 2 février 2023 : Very Tech Trip - Paris (France)
- 2 février 2023 : AgiLeMans - Le Mans (France)
- 9-11 février 2023 : World AI Cannes - Cannes (France)
- 16-19 février 2023 : PyConFR - Bordeaux (France)
- 7 mars 2023 : Kubernetes Community Days France - Paris (France)
- 23-24 mars 2023 : SymfonyLive Paris - Paris (France)
- 23-24 mars 2023 : Agile Niort - Niort (France)
- 1-2 avril 2023 : JdLL - Lyon 3e (France)
- 5-7 avril 2023 : FIC - Lille Grand Palais (France)
- 12-14 avril 2023 : Devoxx France - Paris (France)
- 10-12 mai 2023 : Devoxx UK - London (UK)
- 12 mai 2023 : AFUP Day Lille & Lyon (France)
- 25-26 mai 2023 : Newcrafts Paris - Paris (France)
- 29-30 juin 2023 : Sunny Tech - Montpellier (France)
- 12-13 octobre 2023 : Volcamp 2023 - Clermont Ferrand (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/