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/