Le podcast Java en Français

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

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

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

LCC 292 - Enterprise Go Beans

Posté le 20/03/2023

Cet é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 ou RandomAccessFile.
  • 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/

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/

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/

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 :

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/2023

Antonio, 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/

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 vs 80: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

Les Bisounours

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

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 290 - Mettre tes lunettes dans ta base de données

Posté le 14/01/2023

Guillaume 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

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 :

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/2022

Guillaume 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 de if (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 :

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 288 - L'épisode marathon mastodonien

Posté le 21/11/2022

Dans ce long épisode, retrouvez Emmanuel, Guillaume, Antonio et Arnaud qui reviennent sur les dernières sorties de GraalVM, GoLang, jbanking, Spring, Spring Modulith, Quarkus, Apache Maven. Vous retrouverez aussi de nombreux sujets infrastructure, cloud, méthodologie le tout accompagné d’un pachyderme très à la mode en ce moment : Mastodon.

Enregistré le 18 novembre 2022

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

News

Langages

Alina Yurenko annonce la sortie de GraalVM 22.3 https://medium.com/graalvm/graalvm-22-3-is-here-jdk-19-builds-jlink-support-new-monitoring-features-and-more-f6e2b2eeff95

  • L’article mentionne l’annonce faite à JavaOne qu’Oracle contribue GraalVM CE à la communauté OpenJDK : https://www.graalvm.org/2022/openjdk-announcement/.
  • Support du JDK 19.
  • Possibilité de télécharger facilement (dans un script) la distribution avec un one-line (bash/curl).
  • Possibilité de compiler jwebserver en un exécutable natif.
  • Diverses améliorations sur le monitoring et l’expérience développeur de native image (JFR, jvmstat, head dump…).
  • Nouvelles versions des reachability metadata.
  • Nouvelle API native image.
  • Et divers autres updates sur le support de Python, de Ruby, des contributions de la communauté.

Go fête ses 13 ans https://go.dev/blog/13years

  • Avec la grosse release de 1.18, et le support des workspaces, du fuzzing, mais surtout des generics.
  • Aussi une commande govuln qui fait analyse statique - intéressant la notion d’outil dans le langage.
  • Les builds go sont verrouillés vu qu’ils reconstruisent tout, qu’ils dépendent d’un sha1 pour les dépendances git, et beaucoup d’autres choses).
  • Workspace qui permet de travailler sur plusieurs modules en parallèle sans avoir à changer tous les go.mod à la main.

Librairies

Sortie de JBanking 4 par Marc Wrobel https://www.marcwrobel.fr/sortie-de-jbanking-4-0-0

  • Une librairie utilitaire pour assister dans le développement d’applications bancaires.
  • Support des codes ISO des pays, des devises, des codes BIC, des IBAN, et aussi des calendriers de jours fériés.

Spring Modulith, un projet expérimental d’Oliver Drotbohm, qui permet de s’assurer de la structure et de l’architecture de ses projets Spring, par exemple pour vérifier les dépendances propres entre modules, pour bien structurer ses applications Spring Boot https://spring.io/blog/2022/10/21/introducing-spring-modulith

Une version alpha de Quarkus 3 arrive ! https://quarkus.io/blog/road-to-quarkus-3/

  • Plein d’upgrades : Hibernate ORM 6, Jakarta EE 10, Eclipse MicroProfile 6, HTTP/3, io_uring, Virtual Threads de Loom et Structured Concurrency, java.util.concurrent.Flow pour s’affranchir de Reactive Streams.
  • Version cible Java 11, mais recommendation d’utiliser Java 17.
  • Les versions 3 seront en parallèle des versions 2 le temps que l’écosystème passe à la 3, notamment les dépendances JakartaEE.
  • Testable facilement depuis la CLI : quarkus create app --stream=3.0.
  • Quelques casses de compatibilités attendues, mais minimisées (spécialement dans le core).
  • Garde java 11, car demande de la communauté.

Spring 6.0 est sorti https://spring.io/blog/2022/11/16/spring-framework-6-0-goes-ga

Infrastructure

Stop using CPU limits on Kubernetes https://home.robusta.dev/blog/stop-using-cpu-limits

  • L’auteur fait une comparaison amusante avec le besoin de boire de l’eau !
  • Il vaut mieux définir des requêtes (des besoins en eau / CPU), plutôt que des limites (pas le droit de boire plus / d’utiliser plus de CPU).
  • C’est plus nuancé que ça, parce qu’aux cas limites des choses peuvent mal se passer.
  • Cas 1 : on atteint 100% d’usage. Le process avait défini une requête mais en fait a besoin de plus en pratique, et là paf il se met à mal fonctionner, donc dès que votre système stresse, vous avez des erreurs en cascade.
  • Cas 2 : un ou plusieurs nœuds sont recyclés, ce qui veut dire que vous avez beaucoup de redémarrages de pods et du coup ça met la pression sur le CPU, tester ces cas-là, certaines applis qui démarrent trop lentement ont tendance à tomber en cascade.

Comment faire des attaques d’injection sur les intelligences artificielles qui reçoivent du contenu utilisateur https://hackaday.com/2022/09/16/whats-old-is-new-again-gpt-3-prompt-injection-attack-affects-ai/

  • Le jeu est de donner des phrases ambiguës qui font faire à l’IA des choses qu’elle n’est pas censé faire.
  • Un des outils, c’est ignore les instructions au-dessus et fait un truc que je veux que tu fasses et qui n’est pas dans ta programmation initiale.
  • Voir toucher l’intention initiale de l’AI (lui faire dire) et donc d’atteindre des sphères non publiques du service

Mastodon et la scalabilité https://framablog.org/2022/11/13/de-la-friture-sur-le-fediverse/

  • La décentralisation et le protocole Mastodon est coûteux en jobs.
  • Donc une personne modérément populaire (27k personnes) devrait bouger vers son instance dédiée.
  • Ce qui amènerait à coûter assez cher par mois (en tout cas plus que 8$/mois).
  • L’auteur explique que les devs devraient favoriser un protocole fortement décentralisé plutôt qu’optimiser pour les grosses instances.
  • Un article qui couvre la configuration aux petits oignons de Sidekiq, qui traite les queues de tâches, pour scaler une instance Mastodon https://nora.codes/post/scaling-mastodon-in-the-face-of-an-exodus/.

Rollouts de release a l’échelle avec Argo (rollback options) https://monzo.com/blog/2022/11/02/argo-rollouts-at-scale/

  • Gros investissement sur ArgoCD.
  • Mais encore release à la main par les ingénieurs et tout ou rien pour une application.
  • Idéalement : push dans git et oublie, les métriques prometheus dirigent le rollout basé sur des alertes génériques, le système restant ouvert pour des stratégies de rollout alternatives dans le futur.
  • Basé sur Argo Rollouts et sur des erreurs génériques (par ex. 20 % de calls en erreur, beaucoup d’erreurs de base de données, crashs).
  • Notifie dans Slack en async du succès ou de l’échec.
  • Intéressant de voir qu’ils s’appuient sur des métriques simples.
  • Leçons apprises :
    • La migration est un gros travail.
    • Automatiser la migration au maximum même si c’est un one shot.
    • Mieux vaut changer le moteur avant de changer l’UX (progressive rollout), ça simplifie les choses.

Cloud

Google adopte progressivement Adoptium Temurin comme version officielle de JDK dans ses produits https://glaforge.appspot.com/article/building-and-deploying-java-17-apps-on-cloud-run-with-cloud-native-buildpacks-on-temurin

  • Nous avions mentionné l’annonce de ce support dans l’épisode précédent : https://blog.adoptium.net/2022/10/adoptium-welcomes-google/.
  • Dans l’article de Guillaume, il utilise les Cloud Native Buildpacks, configuré pour utiliser Java 17, et par défaut, c’est bien Temurin qui est utilisé quand on build à partir des sources.
  • Dans l’exemple, une application Micronaut, développée avec Java 17, est déployée sur Google Cloud Run.

Pourquoi on quitte le Cloud https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0

  • Témoignage de DHH de 37signals (Basecamp et HEY).
  • Les 30% de marges d’Amazon viennent de quelque part.
  • On dépense 500k en RDS et ES. On peut acheter beaucoup de machines pour ce prix.
  • La réduction des ops est un mythe. On a autant de personnes gérant les services AWS ou Google Cloud.
  • Le gain pourrait être la micro startup qui ne sait pas si elle aura des clients ou les volumes de demandes très variables et imprédictibles.
  • Mais on a une croissance planifiée, donc on rapatrie.

Présentation de Mickaël Roger de Thales, enregistrée à Cloud Nord, qui explique le fonctionnement de l’offre S3NS de Thales et Google Cloud pour le “cloud de confiance” https://www.youtube.com/watch?v=OBwBeqd-YFs

Web

Est-ce que le Web3 peut battre le cloud ? https://blog.scottlogic.com/2022/10/31/can-web3-beat-the-cloud.html

  • Le Web3 est une autre approche pour des applications décentralisées, ce n’est pas un successeur du Web 2.0 classique, et il a généralement besoin du Web 2.0 pour offrir une interface à ses utilisateurs.
  • Ce n’est pas que pour faire des cryptomonnaies qui gâchent de l’électricité ou des NFTs qui ne donnent pas vraiment de titre de propriété d’une œuvre d’art.
  • Dans cet article, l’auteur essaie d’implémenter une fonctionnalité (le fait de pouvoir rajouter des “applaudissements” à un article, un peu comme sur Medium), en implémentant un smart contract en Web3.
  • Mais il se heurte à plein d’écueils : à la dépendance à plein d’autres services, au fait que ce n’est pas la personne qui “vote” qui devrait payer l’action, mais celle qui héberge. Au final, il est obligé d’ajouter plein d’adhérences qui font qu’au lieu d’être décentralisée, l’application dépends de trop d’autres services, et a finalement besoin du Web 2.0 et du Cloud pour fonctionner.
  • L’autre déconvenue est sur le prix de chacune des transactions, qui est finalement exorbitant par rapport à une approche Web 2.0 classique.
  • La décentralisation amène de la lenteur (latence).
  • Objectifs du Web3 c’est d’être le propriétaire de ses processes et ses data et de mettre des agents qui interagissent avec des données.

Outillage

Comment déboguer les images Docker slim ou distroless https://iximiuz.com/en/posts/docker-debug-slim-containers/

  • Les images slim / distroless sont sympas, car elles permettent d’avoir des petits conteneurs qui ne prennent pas trop de place, qui parfois sont plus rapides à charger, mais également qui exposent une surface d’attaque beaucoup plus faible.
  • Par contre, comme il n’y a pas tous les outils (parfois pas de shell, par exemple), c’est plus compliqué de comprendre ce qu’il se passe à l’intérieur quand quelque chose ne fonctionne pas.
  • L’article propose quelques approches pour pallier cela :
    • installer des outils à la demande dans un conteneur qui tourne (à coup de apt-get),
    • passer temporairement à une image plus grosse et plus complète (par ex, distroless a des images avec un tag debug),
    • utiliser docker run avec un shared namespace,
    • utiliser docker exec et un mount.

Podman Desktop, une alternative à Docker Desktop, mais utilisant Podman https://podman-desktop.io/

Docker annonce une technical preview des conteneurs WASM https://www.docker.com/blog/docker-wasm-technical-preview/

  • Nouveau packaging qui wrap un exécutable WASM et le fait tourner avec le runtime wasmEdge.
  • C’est un nouveau type de conteneur.
  • Il y a beaucoup d’activité autour de WASM, et il y a eu de nombreuses annonces et démonstration lors de la conférence CloudNativeCon et le jour spécial sur WASM, lors de KubeCon.
  • https://www.infoq.com/news/2022/11/cloud-native-wasm-day/.
  • Docker utilise Docker Desktop et Docker engine pour démarrer des shims.
  • Ces shims (processes) lancent soit runc (donc pour faire tourner un conteneur), soit wasmedge pour faire tourner des modules wasm.
  • Donc docker s’éloigne des conteneurs et essaie de toucher l’orchestration.

Un petit tutoriel utilisant Docker et YouTube-dl pour récupérer / consulter les stats (views, likes) de vos vidéos (ou d’autres) sur YouTube https://glaforge.appspot.com/article/retrieve-youtube-views-count-with-youtube-dl-jq-and-a-docker-container

Apache Maven propose une extension de “build cache” (qui devrait accélérer les builds, sans tout le temps recompiler) https://maven.apache.org/extensions/maven-build-cache-extension/

  • Basé sur une clé construite à partir des sources, des plugins etc (par module).
  • Permet la parallélisation et le déploiement sur des agents genre dans le cloud.
  • On contrôle les règles de contournement des invariants (genre changement de compile, timestamp dans les manifests…).

Le guide complet pour publier une librairie Java sur Maven Central https://maciejwalkowiak.com/blog/guide-java-publish-to-maven-central/

  • y-compris l’intégration avec Github Actions,
  • et l’utilisation de Github Secrets pour les clés PGP,
  • et enfin la configuration de JReleaser pour encore faciliter la tâche lorsque l’on pousse une nouvelle version.

Apache Maven 4.0.0-alpha-2 is out https://maven.apache.org/docs/4.0.0-alpha-2/release-notes.html

  • améliorations de la CLI : --also-make , --resume (plus besoin de préciser d’où le build doit recommencer), --non-recursive, --fail-on-severity,
  • utilisation du même timestamp dans tous les modules,
  • build / consumer POMs (versioning automatique du parent, versioning automatique des dépendances dans le réacteur, détection automatique des sous modules),
  • new maven 4 API,
  • et beaucoup d’autres choses : https://issues.apache.org/jira/secure/ReleaseNote.jspa?version=12351403&projectId=12316922.

Data Faker le nouveau générateur de données de test https://github.com/datafaker-net/datafaker

  • C’est un fork de Java Faker https://github.com/DiUS/java-faker.
  • Tout ça inspiré de Ruby Faker https://github.com/faker-ruby/faker.
  • La boite australienne qui l’avait créé ne maintenait plus le projet, ne le publiait plus dans Maven Central et il y avait des centaines de PRs.
  • Vous pouvez générer des données de centaines de provider (ex. adresse, compte bancaire, livres, films, etc) en plusieurs langues.

Exécuter facilement des programmes Java avec dépendances, sans build, avec JBang https://maciejwalkowiak.com/blog/single-file-java-with-jbang/

  • Dans la même veine que ce que Groovy propose depuis de nombreuses années avec sons système @Grapes qui récupère les dépendances nécessaires.
  • L’article montre un exemple simple, puis avec Spring Boot, comment faire un JAR aussi, voire comment conteneuriser sa petite appli.

Architecture

Amélie Benoit continue ses fabuleux sketchnotes sur le thème des design patterns https://twitter.com/AmelieBenoit33/status/1587397290251149312

35 misconceptions sur les dates et les heures https://www.meziantou.net/misconceptions-about-date-and-time.htm

  • Y a-t-il toujours 24 heures par jour ? 60 secondes dans une minute ? Ou 365 jours par an ?
  • Est-ce que les jours sont toujours consécutifs ?
  • Tout le monde a-t-il le même calendrier ?
  • Lundi est-il le premier jour de la semaine ?

Méthodologies

Interview d’un designer sur comment enlever la friction https://review.firstround.com/amazons-friction-killing-tactics-to-make-products-more-seamless?ct=t

  • Designer à Amazon (Music, Alexa), IMDB, Skype for Business.
  • Types de fictions : choses non familières, friction inhérente - produit avancé - et chemin de friction important, friction par désalignement avec le comportement humain.
  • La troisième catégorie difficile à anticiper.
  • En construisant des produits : on ajoute, enlève ou marque des frictions.
  • C’est sur le chemin du client :
    1. avant le premier contact,
    2. signature et première tâche transactionnelle (bien choisir la tache pour être assez simple et ce que l’utilisateur répète),
    3. premier moment de plaisir (regarder les points contre intuitifs dans les données, ou les cas d’utilisation en échec).
  • L’indifférence est la friction la plus importante pour les nouveaux produits.
  • Comment écouter son utilisateur ?
    • Habitat naturel : sondes dans l’appli, tests chez l’utilisateur en milieu reel en utilisation du produit.
    • Mentions et revues : aussi métriques d’usage (choses inhabituelles ou inattendues).
    • Standard de l’industrie : attentes des clients façonnées par ça (barre de recherche en haut).
  • Toujours migrer son audience vers le chemin de moindre résistance.
  • Comment éliminer la friction ?
    • Réduire l’anxiété : décision et perte amènent de l’anxiété.
    • Supprimer les étapes non nécessaires : définir la liste des décisions du client et les questionner (heuristiques par défaut ?).
    • Mitiger le changement de contexte : naviguer hors de l’appli pour faire quelque chose, risque d’abandon. Arrêter un livre pour lire un mot dans le dictionnaire, faciliter le retour et le rappel du contexte quand ils reviennent.
  • Comment masquer la friction ?
    • Temps d’attente : trouver de la valeur (message d’information).
    • Bouger la friction au début dans les services (carte de crédit tout de suite).
    • S’ils investissent dans leur expérience (vote), ils sont plus engagés et loyaux : friction positive : sentiment d’appartenance.

Glossaire et aide-mémoire sur l’approche de l’Event Storming https://github.com/ddd-crew/eventstorming-glossary-cheat-sheet

Sécurité

Sigstore passe en General Availability, en version 1 https://opensource.googleblog.com/2022/10/sigstore-project-announces-general-availability-and-v1-releases.html

  • Sujet également couvert par InfoQ https://www.infoq.com/news/2022/11/sigstore-stability-ga/
  • Sigstore est là pour aider au niveau de la sécurisation de la supply chain de code.
  • Notamment au niveau des signatures.
  • Ça adresse ce que fait PGP mais le rend plus utilisable et permet un usage supplémentaire par un log lisible par tous.
  • Plus d’infos dans une interview on espère.

Loi, société et organisation

La proposition de loi sur la sécurisation de l’open source aux États-Unis https://blog.tidelift.com/tidelift-advisory-us-senators-introduce-the-securing-open-source-software-act-of-2022 (edited)

Holly Cummins sur le sujet du code vestimentaire des femmes dans la tech https://hollycummins.com/fashion-and-programming-ii/

  • Pourquoi en 2023 on a encore autant d’abrutis qui font des remarques sur les vêtements que portent les femmes qui font des présentations à des conférences, et pire, sur le fait de savoir si elles sont à leur goût ou pas.
  • La tenue vestimentaire n’a rien à voir avec le talent, les connaissances, le professionnalisme, l’expertise des personnes.
  • Les femmes ont le droit de porter les vêtements qu’elles veulent sans être jugées par des idiots qui feraient mieux de retourner dans leur caverne.

Avec le rachat de Twitter par Elon Musk, beaucoup de gens commencent à s’intéresser de plus près à Mastodon. On trouve de nombreux articles sur Mastodon ces jours-ci https://gorillasun.de/blog/getting-started-with-mastodon

  • Et vous, avez-vous un compte sur Mastodon ?
  • Quelle instance avez-vous choisie ?
  • Quels outils (client, mobile, web, etc) utilisez vous ?
  • Ça n’est pas facile de trouver une instance : beaucoup ont fermé les inscriptions (à cause de problèmes pour gérer l’afflux de nouveaux utilisateurs, à cause de l’augmentation de la création de comptes spam, ou dans l’objectif de répartir les utilisateurs sur d’autres instances moins connues).
  • Le site JavaBubble liste plein de développeurs Java qui ont maintenant un compte sur Mastodon : https://javabubble.org/.
  • Les Cast Codeurs sur Mastodon :

Conférences

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 287 - Celui qu'Antonio avait oublié!

Posté le 02/11/2022

Arnaud et Guillaume reviennent sur les news de ce mois avec évidement la sortie de Java 19 mais aussi GraalVM, Puppet (toujours vivant), Docker Compose et Desktop, VirtualBox, WASMTime et d’autres sujets plus orientés méthodologie comme la réalisation de Sketchnotes, les DO / DONT pour faire des messages d’erreurs dans les UIs ou encore quelques pratiques de management chez Google.

Enregistré le 21 octobre 2022

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

News

Langages

La version 19 de Java est sortie https://mail.openjdk.org/pipermail/jdk-dev/2022-September/006933.html

Proposition dans Leyden des condenseurs et du décalage d’exécution dans le temps https://openjdk.org/projects/leyden/notes/02-shift-and-constrain

GraalVM JIT et Native Image rejoignent le projet OpenJDK https://twitter.com/graalvm/status/1582441450796900354

Google rejoint Adoptium et va utiliser la distribution Temurin pour les JDKs utilisés dans ses produits https://blog.adoptium.net/2022/10/adoptium-welcomes-google/

“Paving the on-ramp” : Brian Goetz discute de changements au langage Java pour faciliter l’apprentissage pour les nouveaux arrivants https://openjdk.org/projects/amber/design-notes/on-ramp

Librairies

Spring Boot 3.0.0 RC1 is out https://spring.io/blog/2022/10/20/spring-boot-3-0-0-rc1-available-now

  • Vous pouvez maintenant convertir vos applications Spring Boot en exécutables natifs en utilisant les plugins standard Spring Boot Maven ou Gradle sans avoir besoin d’une configuration spéciale.

Infrastructure

(re)découvrir puppet https://blog.stephane-robert.info/post/introduction-puppet/, https://blog.stephane-robert.info/post/puppet-env-developpement/

  • Tutoriel en français sur puppet que l’auteur Stéphane ROBERT écrit dans le cadre d’une migration Puppet vers Ansible
  • L’auteur revient sur les concepts (manifests, classes, modules), et explique comment utiliser vagrant pour développer en local un projet utilisant puppet.

Docker Compose v2.11.0 est disponible https://github.com/compose-spec/compose-spec/blob/master/build.md#platforms

  • La commande build permet de construire des images multi-architectures.

Docker Desktop 4.13.0 https://docs.docker.com/desktop/release-notes/#docker-desktop-4130

  • docker dev permet de gérer ses Dev Environments via la CLI

Sortie de VirtualBox 7.0, avec prise en charge complète du chiffrement des VMs, nouvelle accélération Direct3D, elle apporte le premier client #Mac ARM et le TPM de #Windows 11 https://virtualisation.developpez.com/actu/337578/Sortie-de-VirtualBox-7-0-avec-prise-en-ch[…]rte-le-premier-client-Mac-ARM-et-le-TPM-de-Windows-11/

Web

WASMtime 1.0 https://bytecodealliance.org/articles/wasmtime-1-0-fast-safe-and-production-ready

Comment écrire un bon message d’erreur sur une UI? https://medium.com/wix-ux/when-life-gives-you-lemons-write-better-error-messages-46c5223e1a2f

  • Un mauvais message d’erreur :
    • Ton inapproprié
    • Jargon technique
    • Rejetant le blâme
    • Générique sans raison
  • Un bon message d’erreur:
    • Dire ce qui s’est passé et pourquoi
    • Rassurer
    • Faire preuve d’empathie
    • Aidez-les à régler le problème
    • Donnez toujours une issue

Outillage

Amélie Benoit partage un article d’initiation au sketchnote https://amelie.tech/fr/blog/sketchnote-initiation/

  • Définition : un dessin, une représentation visuelle d’une prise de note, mêlant dessin et texte
  • Pas de stress, suffit juste de savoir écrire, dessiner des carrés, cercles, triangles. Pas besoin d’être un artiste !
  • À quoi ça sert ? pour soi-même pour s’approprier de l’information, synthétiser ce que l’on apprend, mais aussi pour partager avec les autres
  • On peut faire des sketchnotes pour tout et n’importe quoi !
  • Amélie décrit ensuite les bases, avec les pictogrammes, le texte, les puces, les flèches, comment créer des conteneurs (pour des titres par exemple), comment rendre un sketchnote plus joli et comment hiérarchiser le contenu
  • Enfin, quelques ressources utiles, en particulier les livres de Mike Rohde qui est l’inventeur du concept

Nouvelle UI pour Maven Central search https://central.sonatype.dev/

maven-test-profiler : Maven extension pour trouver les tests les plus lents https://t.co/d5YpXODWf8

Architecture

Netflix construit un système de queue basse latence et haut volume à partir de composants open source https://www.infoq.com/news/2022/10/netflix-timestone-priority-queue/

Méthodologies

Google a publié un ensemble de pratiques, d’outils et d’articles pour les managers https://rework.withgoogle.com/guides/

Sécurité

CVE dans Kafka - un client non authentifié peut faire un OOME dans le broker https://github.com/advisories/GHSA-c9h3-c6qj-hh7q

Signal retire le support des SMS sur Android https://t.co/u9XZ7XM7rT

Conférences

Codeurs en Seine 2022 - Programme et Inscriptions

La liste des conférences provenant de Developers Conferences Agenda/List par Aurélie Vache et contributeurs :

Nous contacter

Pour réagir à cet épisode, venez discuter sur le groupe Google https://groups.google.com/group/lescastcodeurs

Contactez-nous via twitter https://twitter.com/lescastcodeurs
Faire un crowdcast ou une crowdquestion
Soutenez Les Cast Codeurs sur Patreon https://www.patreon.com/LesCastCodeurs
Tous les épisodes et toutes les infos sur https://lescastcodeurs.com/


LCC 286 - Devoxx Belgique 2022, le retour!

Posté le 19/10/2022

Antonio, Guillaume et Emmanuel donnent leurs retours sur les thèmes marquants de Devoxx Belgique 2022, puis ils font quelques micro trottoirs lors de la conférence. Si vous hésitez sur quelle conférence regarder sur Youtube, écoutez cet épisode.

Enregistré le 18 octobre 2022

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

Devoxx Belgique 2022

Les présentations sont déjà en ligne sur Youtube

Kubernetes Community Days France 2023

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 285 - De mal en pis - partie 2

Posté le 16/09/2022

Dans cette partie 2, nous discutons le changement d’étage gratuit chez Heroku, les vagues de licenciement dans le monde technologique, la carrière de contributeur individuel et le cloud souverain. Et on vous parle de division de nombres entiers dans la rubrique débutant.

Enregistré le 9 septembre 2022

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

News

Infrastructure

NVidia interdit de vendre ses processeurs d’intelligence artificiels les plus puissants en Chine https://www.reuters.com/technology/nvidia-says-us-has-imposed-new-license-requirement-future-exports-china-2022-08-31/

  • Le gouvernement Américain a mis en place la restriction (export control)
  • 10% des ventes en Chine pour NVidia

Après 23 ans un internaute arrête d’utiliser son propre serveur email et il explique pourquoi cela est devenu impossible https://t.co/TQ61y45MXT?ssr=true

  • Sa raison : l’impossibilité d’avoir un service fiable.
  • Les services de gestion d’emails sont désormais dans les mains de quelques gros acteurs (Google, Microsoft,..) qui déploient à coup d’algorithmes des filtres pour mettre en spam les emails indésirables
  • Ces derniers sont obscurs et peuvent être stupides en blacklistant des blocs entiers d’IPs
  • L’internaute demande aux acteurs de se réveiller avant que les politiciens s’en mêlent (pour le pire …)
  • Cela demande aussi la mise en place de protocoles plus avancés comme DMARC
  • Pour des adresses “casual” comme celles des cast codeurs, c’est maintenant passage à la caisse et 3 à 5 euros par mois et pas adresse email, c’est plus que la valeur de ces emails “casual”

Cloud

Heroku annonce la fin de son étage gratuit https://techcrunch.com/2022/08/25/heroku-announces-plans-to-eliminate-free-plans-blaming-fraud-and-abuse/

  • Heroku a éliminé son plan gratuit dénonçant des abus
  • Après 10 ans
  • Pousser vers du paid plan, qui va aussi faire partir des gens
  • Et questionner ceux qui avaient un modèle économique basé sur ce plan gratuit
  • 28 novembre et aussi efface les comptes inactifs depuis 1 an
  • Beaucoup de fraude et d’abus
  • Vont garder des plans low-cost et des plans étudiants
  • Au-delà des abuseurs, les plans gratuits étaient utilisés pour tester les apps avant leur déploiement

Outillage

Polices de caractères pour la programmation https://www.programmingfonts.org/#firacode

  • J’aime bien Fira Code moi 🙂
  • Ce site permet de choisir parmi 111 polices différentes, pour pouvoir les comparer et choisir celle qu’on préfère

Mickael Istria pointe sur une video expliquant les nouveautés autour d’Eclipse https://www.youtube.com/watch?v=zDJtVYAJwyY

  • C’est très visuel, â regarder
  • Code snippet
  • Content assis plus rapide
  • Support des concepts récents de Java comme sealed classes dans les quick fix
  • Etc

Utiliser git blame malgré les reformatages https://michaelheap.com/git-ignore-rev/

  • Fichier listant les revisions pour ignorer certains sha1 et le changement d’avant est pris

Une page concise des quelques façons de sortir d’un problème avec Git (langage coloré) https://ohshitgit.com/

  • On a toujours quelque chose à apprendre ; celle qui nettoie la branche principale, je ne connaissais pas.

Architecture

Les tendances vu pas les éditeurs de InfoQ dans le devops et le cloud https://www.infoq.com/articles/devops-and-cloud-trends-2022/

  • Commenter les 4 vagues et ce qu’il y a dedans
  • Data observability : live qualité de data etc
  • Serverless everything : scale to 0 ; même les bases de données (soit parce que infra partagée, soit via un scale down réveille par access à une gateway
  • FinOps : contrôle des cours comme on optimisait pour les œufs
  • eBPF pour injection de code et WASM pour le service mesh ingress (attention WASM dans envoy ne remplace pas ton bon vieux Netty)
  • Protection de la supply chain (encore faible en solutions)
  • Low-code / no-code mature pour moins besoin d’ingénieurs ou approche plus légère
  • Developer experience qui influence les décisions

Méthodologies

Discussion sur la carrière de contributeur individuel https://touilleur-express.fr/2022/07/17/devenir-staff-engineer/

  • Exemple de ce que fait Doctolib
  • Senior, c’est le premier niveau d’autonomie et d’aisance
  • Ensuite, soit vous voulez coacher vo pairs (manager), soit contributeur individuel
  • Ce qui est demandé, c’est le leadership (donc l’impact sur la societe et l’organisation)
  • Et ça demande une taille de société minimale
  • Technique, communication, marketing d’idée
  • Occuper le role avant d’être reconnu (c’est assez classique ; ce qui change, c’est le formalisme de la liste des competences attendues entre les boites)
  • Et on code moins, car coder seul donne moins de levier
  • Équivalence track technique/leadership et track managériales avec des ponts. Souvent s’arrête avant les VP et autre executive leadership (matrice de Radford)
  • Promotion case avec promotion committee (2 fois pas an)
  • Assez classique de paires un leadership avec un manager pour qu’ils s’épaulent mutuellement
  • Staff vs principal peut aussi être dû à l’impact cumulé de la personne et des principals peuvent aider sur une partie plus « bas niveau » / concrete de l’orga ou des projects grace a son experience et ses connexions au dela de son équipe actuelle
  • Des exemples de situations de travail du staff engineer https://touilleur-express.fr/2022/07/20/vis-ma-vie-de-staff-principal-engineer/

Loi, société et organisation

https://twitter.com/smlpth/status/1551943751714603013?s=21&t=JhmioeiqlY8wFbzjry6b8Q encore un licenciement de masse. 10% chez Shopify. Pas mal d’aides pour faire passer la pilule (congés payés, aide à trouver un nouveau job…)

  • Ils ont fait le pari que post covid les gens resteraient à acheter en ligne, mais c’est revenu aux volumes d’avant
  • Crise et inflation n’aident pas
  • Annonce à l’américaine avec e-mail direct et arrêt du travail le lendemain
  • Paye pendant quelque temps et support

Un article sur les licenciements dans la tech des GAFAM et des startups https://www.lefigaro.fr/secteur/high-tech/la-grande-inquietude-des-salaries-de-la-tech-face-a-la-vague-de-licenciements-20220819

  • Récession, résultats décevants, krach boursier (perte 1/4 de leur valeur)
  • Resserrement des politiques budgétaires, donc les projets semi-viables ne le sont plus
  • 88k licenciement en trois mois vs 5000 en 1 an en 2021: gros mois juin ->août
  • Apple, Microsoft, Amazon, TikTok, Shopify, Snapchat, Netflix (-40% bourse), SoundCloud (-20% d’effectif)
  • L’argent facile arrête le cycle d’hyper acquisition et facilite l’hyper inflation des sociétés tech, car impossibilité de lever des fonds
  • Startups ont du mal à garder les clients acquis en 2020-2021
  • Donc recentrage et chute des activités non rentables
  • Fidélisation de l’employé vs aller chercher la meilleure offre comme un mercenaire

Le Cloud de Confiance sous le coup du CLOUD Act américain ? https://www.nextinpact.com/lebrief/69865/les-clouds-confiance-bleu-et-s3ns-seront-bien-soumis-au-cloud-act-americain

  • Alors attention, parce que Next Impact fait un peu dans le sensationnalisme
  • https://twitter.com/pchapuis/status/1565775842675933188?t=y5S63FbOSbtH4FK_1meECQ&s=19
  • Avec cette interprétation, même Clever Cloud, utilisant du matériel américain, serait soumis au CLOUD Act
  • Étude demandée par le ministère de la Justice des Pays-Bas
  • Le CLOUD Act s’applique quand le fournisseur de cloud européen utilise du hardware ou logiciel américain (c.-à-d. cloud de confiance Bleu et S3ns)
  • Muraille de Chine en refusant tout client américain et en employant zero américain.
  • Mais c’est si le logiciel américain a accès aux données (routeur Cisco en déchiffré, Stockage sans la clef côté client, etc)
  • Le contrat MS serait « ring fencé » contre le CLOUD Act mais peu d’infos

Rubrique débutant

Comment faire une division de deux entiers dans un flottant ? https://www.baeldung.com/java-integer-division-float-result

  • Une division d’entier ne ramène que le quotient
  • Et un entier
  • Retourne un Double si au moins un des opérandes est un Double, puis Float, puis Long
  • Il faut donc caster un des opérandes en float et pouf !

Conférences

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 284 - De mal en pis - partie 1

Posté le 12/09/2022

Dans cet épisode, nous discutons bonnes pratiques Java, Groovy, WebAssembly, Micronaut. Nous discutons également le changement de licence de Akka entre autre. La suite de cet épisode parlera de changement d’étage gratuit chez Heroku et des vagues de licenciement dans le monde technologique. Pour rester sous les 1 h d’écoute, nous avons découpé les deux derniers épisodes nouvelles en 2 parties chacun. Qu’en pensez-vous ? Donnez-nous votre avis sur Twitter ou sur le Google Groups des cast codeurs.

Enregistré le 9 septembre 2022

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

News

Langages

Jonathan Giles, un principal architecte de Java chez Microsoft, a un site qui partage des bonnes pratiques Java http://java.jonathangiles.net/

  • il couvre des bonnes pratiques Java de manière générale, mais également plus spécifiquement pour les développeurs de librairies Java
  • Des conseils sur la bonne utilisation des dépendances, des BOMs, des versions LTS de Java, des modules Java, de la surface des APIs publiées, de faire attention à null ou au boxing, et de comprendre les interfaces fonctionnelles
  • il y a beaucoup de contenu donc faites par petites doses
  • Certains sujets sont plus controversés comme les modules Java
  • les recommendations sont assez succinctes
  • Je suppose que ce sont les recommendations que les équipes du Azure SDK suivent et qu’il a ouvert. Donc merci à lui

Project Leyden https://www.infoq.com/news/2022/06/project-leyden-delays-aot/

  • Leyden n’a pas progressé en deux ans
  • Accepté que GraalVM a déjà achevé les objectifs initiaux
  • Donc vont explorer un spectre plus faible de contraintes (et probablement d’optimisations)
  • Prochaine LTS en Sept 2023 et Leyden ne sera pas mature, donc Leyden sera utilisé ~Sept 2027 (en terme d’adoption) au plus tôt.
  • SpringBoot pensent que CRaC (snapshot de la memoire sur disque pour démarrage plus rapide) sera très utile
  • module-info dans Spring pour jlink est dans la roadmap
  • Lead de CRaC a fourni un prototype pour Quarkus : améliore temps de démarrage pour OpenJDK mais pas la consommation memoire
  • jlink pour Quarkus, dans un context Kube, les gains d’espace disque ne sont pas si intéressants vs un layered image
  • Micronaut a des issues ouvertes pour CRaC

José Paumard couvre Loom et Structured Concurrency dans sa vidéo de la série JEP Café https://inside.java/2022/08/02/jepcafe13/

Paul King montre l’utilisation de différents frameworks de tests avec Groovy (Spock, JUnit5, Jacoco, Jqwik et Pitest) https://blogs.apache.org/groovy/entry/testing-your-java-with-groovy

  • Paul couvre aussi dans un autre article les comparateurs et l’utilisation de l’API GINQ
  • https://blogs.apache.org/groovy/entry/comparators-and-sorting-in-groovy
  • La matrice spot est intéressante, mais pas avec des noms de variable a, b, c, d :)
  • L’article est super didactique et explique via un example concret quand utiliser quoi
  • Je trouve les property base testing pas si simple à utiliser et avec un coup de reflection » au truc testé. Mais peut être le cas est super simpliste pour l’usage

Paul King continue de publier régulièrement des articles sur Groovy

Sortie de Spock 2.2, première version GA avec le support officiel de Groovy 4 https://twitter.com/spockframework/status/1564999285250326529

  • Bah la seule info intéressante est déjà dans le titre, c.-à-d. c’est le support officiel de Groovy 4

Google lance un nouveau langage, appelé Carbon, comme un successeur de C++, mais en plus sympa ! https://github.com/carbon-language/carbon-lang

  • Intéressant, ils veut Ceyloniser ou Scalaizer Rust avec Carbon’s Kotlin-like strategy. Not a bad bet
  • Rust n’est pas assez compatible avec C++, c’est problématique, surtout pour des boîtes comme Google avec d’énormes code bases en C++.
  • Donc pour du green field, Rust c’est bien. Ou c’est bien aussi pour de l’intégration avec du C. Mais pas avec du C++.

State of WebAssembly https://blog.scottlogic.com/2022/06/20/state-of-wasm-2022.html

  • On peut peut-être aussi rajouter l’utilisation de WebAssembly chez Figma
  • https://neugierig.org/software/blog/2022/06/wasm-notes.html
  • Rust reste le langage de prédilection
  • Python monte
  • JavaScript est maintenant un langage viable
  • Wasmtime est le runtime le plus populaire
  • L’utilisation de WASM pour Serverless et la containérisation et en tant qu’hôte de plugin a beaucoup émergé
  • Les APIs non browser sont ce dont a besoin web assembly
  • En fait ne compile pas JavaScript, mais un moteur JavaScript et fait l’interprétation
  • Fonctionnalités très demandées : threads, exceptions, GC, type reflection etc

Graal VM 22.2 https://medium.com/graalvm/graalvm-22-2-smaller-jdk-size-improved-memory-usage-better-library-support-and-more-cb34b5b68ec0

Alex Blewitt un Java Champion est décédé prématurément https://www.infoq.com/news/2022/07/alex-blewitt/

  • Notamment un contributeur à InfoQ

Librairies

Sortie de Micronaut 3.6 https://micronaut.io/2022/08/04/micronaut-framework-3-6-0-released/

  • Nouveau module Micronaut Test Resources avec une intégration TestContainers qui permet d’avoir des ressources de test externes, par exemple pour un Redis, un Elasticsearch ou autre
  • Cédric Champeau qui a travaillé sur cette fonctionnalité a écrit un blog post complet sur le sujet https://melix.github.io/blog//2022/08/micronaut-test-resources.html
  • Intégration avec OpenTelemetry (après Open Tracing et autre)
  • Micronaut Data rajoute Hibernate Reactive comme intégration
  • Et plein d’autres mises à jour des différents modules existants

Utiliser des sérialiseurs / désérialiseurs de messages Kafka dans votre application Quarkus https://quarkus.io/blog/kafka-serde/

  • Explique quand on a besoin d’un sérialiseur custom (hors des types fondamentaux)
  • Explique que le support JSON existe par défaut
  • Explique comment utiliser Avro mais avec un schéma registry
  • Et la version full custom

Akka change sa licence d’ASL vers BSL (Business Source License) https://www.lightbend.com/blog/why-we-are-changing-the-license-for-akka

  • Comme MariaDB, Cockroach Labs, Sentry, Materialized
  • BSL is source available et usage dev mais pas prod
  • Après 3 ans, les commits en BSL se convertissent en ASL (donc pas les nouveaux commits)
  • License commerciale disponible pour 2000$ par cœur
  • Due au fait qu’avec la maturité de Akka les contributions ont diminué et le support est revenu à LightBend de plus en plus, même si de grosses sociétés utilisent Akka dans leur infra critique
  • Gatling impacté
  • Mécontentement de la communauté Akka et Scala, par exemple cet article d’Alexandru Nedelcu https://alexn.org/blog/2022/09/07/akka-is-moving-away-from-open-source

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 283 - Mini interview comment améliorer ses présentations

Posté le 27/07/2022

Cet épisode mi-nouvelle mi-interview discute de comment faire de meilleures présentations. L’article est agrémenté des propres conseils des cast codeurs.

Enregistré le 8 juillet 2022

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

Interview

Gunnar Morling partage ses conseils et astuces pour faire de meilleures présentations aux conférences

  • Répéter, répéter, répéter
  • Démarrer par une mission
  • Raconter une histoire
  • Regarder l’auditoire, pas les slides
  • Mettre moins de texte sur ses slides, beaucoup moins
  • Personnaliser la présentation en fonction de l’auditoire
  • La règle de 3 (couvrir 3 points clés, 3 leçons retenues, partager 3 conseils…)
  • Avoir une solution de secours pour les démos
  • Jouer sur ses atouts (ce n’est pas grave si on est quelqu’un qui parle vite, si ça donne de l’énergie à son argumentaire)
  • Faire des retours en arrière (par exemple pour conclure sur un point abordé ou une supposition de départ et montrer qu’on a prouvé ce que l’on avançait)

Et les cast codeurs commentent ses propositions.

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/