Explorez tous les épisodes de Les Cast Codeurs Podcast
Plongez dans la liste complète des épisodes de Les Cast Codeurs Podcast. Chaque épisode est catalogué accompagné de descriptions détaillées, ce qui facilite la recherche et l'exploration de sujets spécifiques. Suivez tous les épisodes de votre podcast préféré et ne manquez aucun contenu pertinent.
Rows per page:
50
1–50 of 322
Date
Titre
Durée
14 Jan 2023
LCC 290 - Mettre tes lunettes dans ta base de données
01:15:48
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.
On voit souvent des articles plutôt positif 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…
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)
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 controleur)
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
on peut etre root et lancer le moteur de container
on peut etre root dans le container lui meme
quand on run en root le moteur, l’utilisateur exterieur et interieur sont mappés (meme # d’UID) ; par contre en non root, le UID de l’utilisateur du container 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 a 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 de tourner non root le moteur et dans le container (meme si encore beaucoup d’images s’attendent a être root les folles)
Cet épisode une fois n’est pas coutume parle beaucoup de nouvelles dans la rubrique langage et beaucoup de Java, wouhou ! On parle aussi de sigstore, http/3, Micronaut et de VMWare.
Mark Reinhold lance le projet Leyden, pour adresser les problèmes de temps de démarrage lent de Java, de lenteur du temps jusqu’à la performance max, et d’empreinte un peu lourde
à l’aide d’une image statique de votre application
une image statique ne fait tourner qu’une seule et unique application sur son JDK, et est un “monde fermé” (ne peut pas charger de classe externes)
mais les ingés de la JVM vont travailler sur une approche assez souple, et voire quelles contraintes peuvent être allégées, par rapport à un monde complètement fermé d’une image statique
en espérant avoir des améliorations à différents niveaux, pour un max d’appli et de use case différents
Le close world c’est ce qui amène la valeur de GraalVM native image et les avantages pour Micronaut, Quarkus et le autres
donc pas de closed world: c’est encore un projet de recherche pour l’équipe de la JVM
L’arrivée de Dart coïncide surtout avec l’émergence de Flutter comme framework d’interface graphique, que ce soit pour Android/iOS, que pour le desktop et le web
Sur les applis mobiles, il y a toujours eu beaucoup de développement natif, mais est aussi arrivé React Native, mais aussi Flutter
Des applis de Google comme Google Pay et Google Ads sont développées en Flutter, mais aussi le récent SNCF Connect ou des entreprises telles que BMW ou Alibaba (modifié)
(cf le talk sur le REX par les développeurs de SNCF Connect à Devoxx France)
les investissements initiaux de Dart vs Kotlin ou Ceylon qui ont démarrés en meme temps étaient colossaux
Dart en natif pour faire des applis iOS… qui tournent aussi sous Android
Compilation incrémentale lors des builds, en particulier intéressant pour les métadonnées pour GraalVM, ce qui permet d’éviter de faire tourner les processeurs d’annotation inutilement
Inclusion de Micronaut Data 3.4, avec support des enums Postgres pour JDBC, la pagination pour les Reactive Repositories
Intégration avec Turbo pour la vue (Turbo Frame et Turbo Views)
Nouveau module pour MicroStream (un moteur de graphe d’objet natif Java, intégré à Helidon)
Mise à jour de nombreux plugins et extensions (y compris plugins de build)
Kubernetes 1.24 (sorti en mai) est la première version utilisant officiellement Sigstore, permettant une vérification transparente des signatures pour protéger contre les attaques de la chaîne d’approvisionnement
Sigstore est une nouvelle norme pour la signature, la vérification et la protection des logiciels. Elle se veut être un remplaçant pour GPG par exemple.
Sigstore offre une variété d’avantages à la communauté Kubernetes comme:
Sigstore’s keyless signing donne une grande expérience de développeur et supprime le besoin de la gestion de clé douloureuse.
Le journal public et transparent de Sigstore (Rekor) avec ses API permettent aux consommateurs Kubernetes de vérifier les signatures.
Basé sur le protocole de transport QUIC qui possède plusieurs fonctionnalités intéressantes telles que le multiplexage de flux, le contrôle de flux par flux et l’établissement de connexion à faible latence.
QPACK : un format de compression pour représenter efficacement les champs HTTP à utiliser en HTTP/3. Il s’agit d’une variation de la compression HPACK qui vise à réduire la taille des headers.
Extensible Prioritization Scheme for HTTP: schéma qui permet à un client HTTP de communiquer ses préférences quant à la façon dont le serveur en amont priorise les réponses à ses demandes, et permet également à un serveur d’indiquer à un intermédiaire en aval comment ses réponses devraient être priorisées lorsqu’elles sont transmises.
Avec un objectif de passer de 3,5 à 8,5 milliard d’EBITA par an
Bouger dans la division cloud avec Symantec
VMWare était content de sa liberté retrouvée après la spin off de Dell
Apparemment pas d’alignement de tech
une expansion de portefeuiille dans le software pour broadcom
VMWare a beaucoup changé de mains ces dernières années
La strategie d’investissement de broadcom: acheter des franchises avec une bonne position de marcher et un potentiel de profitabilité augmenté sans gros investissements
Guillaume n’était pas présent dans cet épisode, mais rassurez vous Emmanuel assure la permanence des blagues et accompagné d’Antonio et d’Audrey il commente les actus du mois de novembre : ça discute de Quarkus, Spring Boot, Gradle, Reactive Programming, Docker, sécurité et bien sûr, loi, société et organisation.
Cet épisode clôture Devoxx France 2018 dans un mode expérimental : un mode Ignite (avancer les slides à temps réguler sans contrôle) avec l’outil Kahoot. C’est mieux de le regarder (voir lien ci dessous). Mais si vous n’écoutez ou ne regardez pas, on ne vous en voudra pas :)
Arnaud et Emmanuel discutent des nouvelles de ce mois. On y parle intégrité de JVM, fetch size de JDBC, MCP, de prompt engineering, de DeepSeek bien sûr mais aussi de Maven 4 et des proxy de répository Maven. Et d’autres choses encore, bonne lecture.
JavaScript Temporal est un nouvel objet conçu pour remplacer l’objet Date, qui présente des défauts.
Il résout des problèmes tels que le manque de prise en charge des fuseaux horaires et la mutabilité.
Temporal introduit des concepts tels que les instants, les heures civiles et les durées.
Il fournit des classes pour gérer diverses représentations de date/heure, y compris celles qui tiennent compte du fuseau horaire et celles qui n’en tiennent pas compte.
Temporal simplifie l’utilisation de différents calendriers (par exemple, chinois, hébreu).
Il comprend des méthodes pour les comparaisons, les conversions et le formatage des dates et des heures.
La prise en charge par les navigateurs est expérimentale, Firefox Nightly ayant l’implémentation la plus aboutie.
Un polyfill est disponible pour essayer Temporal dans n’importe quel navigateur.
On demande directement à l’IA de répondre à une question sans lui fournir d’exemple préalable. C’est comme si on posait une question à une personne sans lui donner de contexte.
Few-Shot Prompting:
On donne à l’IA un ou plusieurs exemples de la tâche qu’on souhaite qu’elle accomplisse. C’est comme montrer à quelqu’un comment faire quelque chose avant de lui demander de le faire.
System Prompting:
On définit le contexte général et le but de la tâche pour l’IA. C’est comme donner à l’IA des instructions générales sur ce qu’elle doit faire.
Role Prompting:
On attribue un rôle spécifique à l’IA (enseignant, journaliste, etc.). C’est comme demander à quelqu’un de jouer un rôle spécifique.
Contextual Prompting:
On fournit des informations supplémentaires ou un contexte pour la tâche. C’est comme donner à quelqu’un toutes les informations nécessaires pour répondre à une question.
Step-Back Prompting:
On pose d’abord une question générale, puis on utilise la réponse pour poser une question plus spécifique. C’est comme poser une question ouverte avant de poser une question plus fermée.
Chain-of-Thought Prompting:
On demande à l’IA de montrer étape par étape comment elle arrive à sa conclusion. C’est comme demander à quelqu’un d’expliquer son raisonnement.
Self-Consistency Prompting:
On pose plusieurs fois la même question à l’IA et on compare les réponses pour trouver la plus cohérente. C’est comme vérifier une réponse en la posant sous différentes formes.
Tree-of-Thoughts Prompting:
On permet à l’IA d’explorer plusieurs chemins de raisonnement en même temps. C’est comme considérer toutes les options possibles avant de prendre une décision.
ReAct Prompting:
On permet à l’IA d’interagir avec des outils externes pour résoudre des problèmes complexes. C’est comme donner à quelqu’un les outils nécessaires pour résoudre un problème.
le direct prompt qui est un appel direct au LLM: limitations de connaissance et de controle de l’experience
eval: evaluer la sortie d’un LLM avec plusieurs techniques mais fondamentalement une fonction qui prend la demande, la reponse et donc un score numerique
evaluation via un LLM (le meme ou un autre), ou evaluation humaine
tourner les evaluations a partir de la chaine de build amis aussi en live vu que les LLMs puvent evoluer.
Decrit les embedding notament d’image amis aussi de texte avec la notion de contexte
Création d’un générateur automatisé de nouvelles de science-fiction à l’aide de Gemini et Imagen en Java, LangChain4j, sur Google Cloud.
Le système génère chaque nuit des histoires, complétées par des illustrations créées par le modèle Imagen 3, et les publie sur un site Web.
Une étape d’auto-réflexion utilise Gemini pour sélectionner la meilleure image pour chaque chapitre.
L’agent utilise un workflow explicite, drivé par le code Java, où les étapes sont prédéfinies dans le code, plutôt que de s’appuyer sur une planification basée sur LLM.
Le code est disponible sur GitHub et l’application est déployée sur Google Cloud.
L’article oppose les agents de workflow explicites aux agents autonomes, en soulignant les compromis de chaque approche. Car parfois, les Agent IA autonomes qui gèrent leur propre planning hallucinent un peu trop et n’établissent pas un plan correctement, ou ne le suive pas comme il faut, voire hallucine des “function call”.
Le projet utilise Cloud Build, le Cloud Run jobs, Cloud Scheduler, Firestore comme base de données, et Firebase pour le déploiement et l’automatisation du frontend.
Dans le deuxième article, L’approche est différente, Guillaume utilise un outil de Workflow, plutôt que de diriger le planning avec du code Java.
L’approche impérative utilise du code Java explicite pour orchestrer le workflow, offrant ainsi un contrôle et une parallélisation précis.
L’approche déclarative utilise un fichier YAML pour définir le workflow, en spécifiant les étapes, les entrées, les sorties et l’ordre d’exécution.
Le workflow comprend les étapes permettant de générer une histoire avec Gemini 2, de créer une invite d’image, de générer des images avec Imagen 3 et d’enregistrer le résultat dans Cloud Firestore (base de donnée NoSQL).
Les principaux avantages de l’approche impérative sont un contrôle précis, une parallélisation explicite et des outils de programmation familiers.
Les principaux avantages de l’approche déclarative sont des définitions de workflow peut-être plus faciles à comprendre (même si c’est un YAML, berk !) la visualisation, l’évolutivité et une maintenance simplifiée (on peut juste changer le YAML dans la console, comme au bon vieux temps du PHP en prod).
Les inconvénients de l’approche impérative incluent le besoin de connaissances en programmation, les défis potentiels en matière de maintenance et la gestion des conteneurs.
Les inconvénients de l’approche déclarative incluent une création YAML pénible, un contrôle de parallélisation limité, l’absence d’émulateur local et un débogage moins intuitif.
Le choix entre les approches dépend des exigences du projet, la déclarative étant adaptée aux workflows plus simples.
L’article conclut que la planification déclarative peut aider les agents IA à rester concentrés et prévisibles.
Quelque soit le langage, la techno, il est hautement conseillé de mettre en place des gestionnaires de repositories en tant que proxy pour mieux contrôler les dépendances qui contribuent à la création de vos produits
Michael Stepankin de l’équipe GitHub Security Lab a cherché a savoir si ces derniers ne sont pas aussi sources de vulnérabilité en étudiant quelques CVEs sur des produits comme JFrog Artifactory, Sonatype Nexus, et Reposilite
Certaines failles viennent de la UI des produits qui permettent d’afficher les artifacts (ex: mettez un JS dans un fichier POM) et même de naviguer dedans (ex: voir le contenu d’un jar / zip et on exploite l’API pour lire, voir modifier des fichiers du serveur en dehors des archives)
Les artifacts peuvent aussi être compromis en jouant sur les paramètres propriétaires des URLs ou en jouant sur le nomage avec les encodings.
Bref, rien n’est simple ni niveau. Tout système rajoute de la compléxité et il est important de les tenir à mettre à jour. Il faut surveiller activement sa chaine de distribution via différents moyens et ne pas tout miser sur le repository manager.
Julien de Provin: J’aime beaucoup le mode “continuous testing” de Quarkus, et je me demandais s’il existait une alternative en dehors de Quarkus, ou à défaut, des ressources sur son fonctionnement ? J’aimerais beaucoup avoir un outil agnostique utilisable sur les projets non-Quarkus sur lesquels j’intervient, quitte à y metttre un peu d’huile de coude (ou de phalange pour le coup).
Les Cast Codeurs se réunissent pour un épisode en direct de Web2day / Tech2day. On y discute de l’évènement en première partie et des news Java et plus en deuxième partie. Merci à Clever Cloud, JFrog et Netapsys pour avoir amené tireuses et futs de bières !
LCC 142 - Interview AngularJS 2 avec Cédric Exbrayat
01:22:09
Dans cet épisode, Cédric et Emmanuel discutent AngularJS et en particulier sa version 2. On discute aussi en passant comment écrire un livre avec Asciidoctor.
Dans cet épisode estival Guillaume, Emmanuel et Arnaud parcourent les nouvelles du début d’été. Du Java, du Rust, du Go du coté des langages, du Micronaut, du Quarkus pour les frameworks, mais aussi du WebGPU, de l’agilité, du DDD, des sondages, de nombreux outils et surtout de l’intelligence artificielle à toutes les sauces (dans les bases de données, dans les voitures…).
RedHat a annoncé un autre changement massif qui affecte tous les rebuilds et forks de Red Hat Enterprise Linux. À l’avenir, Red Hat publiera uniquement le code source pour les RHEL RPMs derrière leur portail client. Comme tous les clones de RHEL dépendent des sources publiées, cela perturbe encore une fois l’ensemble de l’écosystème Red Hat.
Avec la mode des Large Language Models, on parle de plus en plus de bases de données vectorielles, pour stocker des “embeddings” (des vecteurs de nombre flottant représentant sémantiquement du texte, ou même des images). Un article explique que les Vecteurs sont le nouveau JSON dans les bases relationnelles comme PostgreSQL https://jkatz05.com/post/postgres/vectors-json-postgresql/
L’article parle en particulier de l’extension pgVector qui est une extension pour PostgreSQL pour rajouter le support des vectors comme type de colonne https://github.com/pgvector/pgvector
L’enquête a été réalisée auprès de 90 000 développeurs dans 185 pays.
Les développeurs sont plus nombreux (+2%) que l’an dernier à travailler sur site (16% sur site, 41% remote, 42% hybrid)
Les développeurs sont également de plus en plus nombreux à utiliser des outils d’intelligence artificielle, avec 70 % d’entre eux déclarant les utiliser (44%) ou prévoyant de les utiliser (25) dans leur travail.
Les langages de programmation les plus populaires sont toujours JavaScript, Python et HTML/CSS.
Les frameworks web les plus populaires sont Node, React, JQuery.
Les bases de données les plus populaires sont PostgreSQL, MySQL, et SQLite.
Les systèmes d’exploitation les plus populaires sont Windows puis macOS et Linux.
Les IDE les plus populaires sont Visual Studio Code, Visual Studio et IDEA IntelliJ.
une intégration avec OpenAI mais aussi de plus petits LLMs spécifiques à JetBrains
un chat intégré pour discuter avec l’assistant, puis la possibilité d’intégrer les snippets de code là où se trouve le curseur
possibilité de sélectionner du code et de demander à l’assistant d’expliquer ce que ce bout de code fait, mais aussi de suggérer un refactoring, ou de régler les problèmes potentiels
on peut demander à générer la JavaDoc d’une méthode, d’une classe, etc, ou à suggérer un nom de méthode (en fonction de son contenu)
génération de message de commit
il faut avoir un compte JetBrains AI pour y avoir accès
Un article très détaillé pour moderniser son architecture en utilisant une approche Domain-Driven Discovery qui se fait en 5 étapes:
Encadrer le problème – Clarifier le problème que vous résolvez, les personnes touchées, les résultats souhaités et les contraintes de solution.
Analyser l’état actuel – Explorer les processus opérationnels et l’architecture des systèmes existants afin d’établir une base de référence pour l’amélioration.
Explorer l’état futur – Concevoir une architecture modernisée fondée sur des contextes délimités, établir des priorités stratégiques, évaluer les options et créer des solutions pour l’état futur.
Créer une feuille de route – Créer un plan pour moderniser l’architecture au fil du temps en fonction des flux de travail ou des résultats souhaités.
sur de nombreux thèmes : front, back, cloud, data, AI/ML, mobile
aussi des tendances, des success stories
par exemple dans les derniers articles : on parle d’Alan Turing, du Local Storage en Javascript, des la préparation de certifications React, l’impact de la cybersécurité sur le cloud
Nous subissons tous un traumatisme du développement qui rend difficile la collaboration avec d’autres - une partie cruciale du travail dans le développement de logiciels agiles.
Diriger d’une manière tenant compte des traumatismes n’est pas pratiquer la psychothérapie non sollicitée, et ne justifie pas les comportements destructeurs sans les aborder.
Être plus sensible aux traumatismes dans votre leadership peut aider tout le monde à agir de façon plus mature et plus disponible sur le plan cognitif, surtout dans des situations émotionnellement difficiles.
Dans les milieux de travail tenant compte des traumatismes, les gens accordent plus d’attention à leur état physique et émotionnel.
Ils s’appuient aussi davantage sur le pouvoir de l’intention, fixent des objectifs d’une manière moins manipulatrice et sont capables d’être empathiques sans s’approprier les problèmes des autres.
Au sein de l’UE, la loi sur la cyber-résilience (CRA) fait maintenant son chemin à travers les processus législatifs (et doit faire l’objet d’un vote clé le 19 juillet 2023). Cette loi s’appliquera à un large éventail de logiciels (et de matériel avec logiciel intégré) dans l’UE. L’intention de ce règlement est bonne (et sans doute attendue depuis longtemps) : rendre le logiciel beaucoup plus sûr.
Le CRA a une approche binaire: oui/non et considère tout le monde de la même manière
Le CRA réglementerait les projets à source ouverte à moins qu’ils n’aient « un modèle de développement entièrement décentralisé ». Mais les modèles OSS sont de complexes mélanges de pur OSS et éditeurs de logiciels
les entreprises commerciales et les projets open source devront être beaucoup plus prudents quant à ce que les participants peuvent travailler sur le code, quel financement ils prennent, et quels correctifs ils peuvent accepter.
Certaines des obligations sont pratiquement impossibles à respecter, par exemple l’obligation de « livrer un produit sans vulnérabilités exploitables connues ».
Le CRA exige la divulgation de vulnérabilités graves non corrigées et exploitées à l’ENISA (une institution de l’UE) dans un délai mesuré en heures, avant qu’elles ne soient corrigées. (complètement opposé aux bonnes pratiques de sécu)
Une fois de plus une bonne idée à l’origine mais très mal implémentée qui risque de faire beaucoup de dommages
Octave Klaba, avec Miro, son frère, et la Caisse des Dépôts, finalisent la création de Synfonium qui va maintenant racheter 100% de Qwant et 100% fe Shadow. Synfonium est détenue à 75% par Jezby Venture & Deep Code et à 25% par la CDC. https://twitter.com/i/web/status/1673555414938427392
L’un de rôles de Synfonium est de créer la masse critique des utilisateurs et des clients B2C & B2B qui vont pouvoir utiliser tous ces services gratuits et payants
Vous y retrouverez le moteur de recherche, les services gratuits, la suite collaborative, le social login, mais aussi les services de nos partenaires tech.
Le but est de créer une plateforme dans le Cloud SaaS EU qui respectent nos valeurs et nos lois européennes
Devoxx France : call for paper se termine le 15/02. Speakers (Neal Ford, Romain Guy, James Ward, Matt Raible, Heinz Kabutz). RdV du 18 au 20 avril http://devoxx.fr
Antonio et Emmanuel discutent entre autre de JavaDoc, Quarkus, Crypto dans le CI, bootstrap 5, Grafana, cloud de confiance sans oublier les crowdcasts sur Cypress et sur hack.commit.push du 29 mai.
On va pouvoir référencer par exemple des morceaux de code dans un autre fichier, dans un test, et l’intégrer dans la JavaDoc d’une méthode, d’une classe. Ca permettra d’avoir de la doc vraiment à jour au niveau des bouts de code, vu que ce sera toujours le vrai code qui tourne qui sera inséré dans la JavaDoc.
Il pourra y avoir également de la coloration syntaxique
de définir des régions qui doivent être surlignées pour être bien visibles
Il sera possible de modifier certaines parties d’un snippet de code, par exemple pour cacher une chaine de caractère de test dont on se moque de la valeur quand on explique ce bout de code
Possibilité de rajouter des liens hypertextes sur certains bouts de code, pour pointer par exemple vers la JavaDoc d’une méthode utilisée dans ce bout de code
Pourvu qu’ils reprennent le plus possible la syntaxe asciidoctor qui a déjà résolu ce problème
Quarkus 2 parce que vert.x 4 et MicroProfile 4, pas de “gros” breaking changes mais quelques uns surtout pour les extensions
Continuous Testing: dans la console, on voit les tests qui plantent. Et quand on fait un code change, uniquement les tests qui sont impactés sont joués (flow analysis).
Lance aussi dans un container dédié les dépendances (e.g. une base de donnée pour les tests utilisant Hibernate). LE container pour les tests en continu est différent de celui pour le quarkus:dev qui tourner (pas de pollution).
Les mineurs de crypto monnaies abusent des services de CI qui offre des capacités de build gratuites
Une des nouvelles astuces c’est d’utiliser les outils comme Pupetteer pour automatiser l’utilisation d’un navigateur web, pour miner de la crypto monnaie dans le navigateur qui tourne en headless sur la machine de CI
A la grande époque de OpenShift online et OpenShift.io, on a beaucoup appris sur le detection des Bitcoin miners :)
on a eu le soucis sur Codeship (la CI SaaS de CloudBees). Ils ont passé un max de temps à virer et proteger les builds. J’ai vu que GitHub avait eu aussi le soucis
En vérifiant l’ordre de ses commandes, en limitant le scope de Copy, d’aligner les RUN d’installation de package, d’utiliser des images officielles, voire de se créer ses images de base, d’utiliser des tags spécifiques pour des images plus reproductibles, effacer le cache du package manager, de builder dans une image offrant un environnement cohérent, de récupérer ses dépendance dans une étape à part, de faire du multi-stage build… Ou d’utiliser les Cloud Native Buildpacks! (sur lesquels Joe bosse)
Article qui nous explique la complexité et les trade off impossibles. Et donc que buildpack c’est indispensable
pulsar a des brokers sans etat et deriere il y a des bookkeepers (qui stockent les data).
Cela permet plus de flexiblités pour augmenter ou descendre le nbombre de brokers. mais avec plus de “moving parts” et avec un hop de reseau supplémentaire.
Mais l’architecture est plus flexible notamment pour Kubernetes
Le stockage étagé et la geo replication est plus facile dans Pulsar (par default). Stockage etageé c’est de stocker l’info dans un S3 quand ellee st vielle par example.
Pulsar est multitenant par design.
Pulsar accepte des gros messages et sit les fragmenter au besoin
plus grosse communaute sur Kafka mais il y a des composants non open source (Confluent).
Ca sent le truc planifie pour faire migrer et descendre le traffic et arriver en bon samaritain après. Cela dit ils étaient bon samaritains avec la version gratuite
a partir de Docker 3.3 on peut éviter l’installation d’une nouvelle version avec la souscription pro ou team. Si j’ai bien compris.
Tu peux faire un rappel pour plus tard mais tu ne peux effectivement pas refuser définitivement une version donnée sans payer sinon ils te harcèlent (je ne connais pas la fréquence) pour upgrader.
En gros si tu ne paies pas tu dois être sur latest. Ils ne vont pas faire du support sur d’anciennes version pour les clients gratuits
cloud flare est attaqué par un troll de brevet et contre attaque pour la seconde fois en payant la recherche d’antériorité sur l’ensemble du porte feuille de brevets de cette entité.
Pour lui faire perdre une bonne partie de la valeur. « You do not negotiate with terrorists or children »
La liste des noms d’employés « funny » est ressorti avec des relents racistes
Les employés ont visiblement eu un débat dessus
DHH et Fry on fait un mémo bannissant les conversations politiques et sociétale parce que elle n’amenaient pas de bien pour la société (resentment etc)
Mais les employés le voient comme une façon de ne pas voir les sujets importants en face et les impactes des produits tech sur la société
Ils on offert un golden parachute à qui voulait partir
LCC 223 - On peut anonymiser mille fois une personne mais on ne peut pas anonymiser une fois mille personne
01:54:11
Premier épisode de l’année 2020 pour les cast codeurs avec Guillaume, Arnaud et Audrey autour du micro pour parler du JDK 14 bien sûr mais aussi de Quarkus, de WebAssembly, de Kubernetes mais aussi de l’actualité sociétale liée à la tech.
Antonio, Guillaume et Emmanuel discutent de registries et de registries et de registries. Et sinon TypeScript 4, Kotlin 1.4, Spring One, comment gérer des équipes, lire du code, des APIs. Bref pleins de choses intéressantes :)
The second policy update is regarding limits on the number of image pulls. A pull is defined as up to two GET requests to the registry URL path ‘/v2//manifests/’. Again, starting November 1, 2020:
Anonymous users will have an upper limit of 100 image pulls in a six hour period
Accounts authenticated with a DockerID will have an upper limit of 200 image pulls in a six hour period
Pro and Team subscriptions do not have limits
la question c’est image == layer donc 100 peut arriver vite pendant un lab
“Automatically wire your apps with the Spring service runtime. Once deployed you can easily monitor application performance, fix errors, and rapidly improve applications”
equipe fonctionne quand elle a une mission comprise et auquel elle croit, quand elle gagne (alignée avec les besoins de l’entreprise, mesure le succes, reconnu pour ce succès), quand les individus progressent
entre 5 et 10 est la limite a la quelle une equipe part en chaos sans organisation
centralisation: probleme planning, stand up etc
decentralisation sans plan: conflits, ralenti, desaligne => chaos
embaucher les type A (NDLR risque mono culture) ; embauche que si surcahrgé et montre resultats top (donc une equipe qui montre qu’elle fonctionne deja). sinon risque equipe disfonctionelle qui grossi (modifié)
La delegation vient avec la gouvernance pour appliquer les règles globales de l’équipe (code qualite, dette technique etc)
il encourage d’investir dans la core ip de l’appli vs rajouter des fonctionalités. Toujours sur quelle est la valeur
The person doing the work owns the execution, even though they may not own the direction. Rather than top down execution driven by meetings, we rely on bottom up execution based on top down direction and review.
Engineering Manager vs TEch Lead - As the team scales through, it’s important that someone is responsible for organizing the team, process, and ensuring people are happy, productive, and growing, and someone else is responsible for the technical direction and systems of responsibility like code reviews, deploys, and so on.
Scrum, agile poker etc est trop centralisé dans une approche avec un ratio senoir / junior coherant what I consider to be a more modern and decentralized approach, Engineering Managers work with engineers, who take ownership of chunks of work, decompose them into tasks, estimate, and get the team and manager to review async or in a planning meeting. Everything is tied to the team KPIs, which are tied to the company KPIs, but we don’t need any fancy formats like user stories, etc. Engineers are even more empowered to think about customers, product, and business value in this model — they are looking at how they can impact team KPIs, and empowered to push managers for the work they think is most impactful on the KPIs. The tech lead owns the technical queue — tech debt, testing issues, infrastructure, etc.
The Approval Matrix with Round Robin Pattern - utile sur les choses trop concentrées ou sur les sujets que personne ne veut training process pour onboarder
round robin pour forcer le changment et eviter les code review overloards et autres bug fixers
Pour taches de plus de 1 semaine, design document d’une page revue (sign off component lead) sanity checking, important issues and standards. Not micro management
Super pour aider “les personnes en situation de dépendance, qu’elles soient âgées ou handicapées”
Mais pose des questions “du point de vue de la protection des données”
“fortement ancrée dans notre intimité” "de nombreuses informations sur l’émetteur d’un message oral. Âge, genre, condition physique, accent, origine géographique et socio-culturelle, éducation, état de santé
ou émotionnel, mais également identité"
“captent nos habitudes de vie pour enrichir un profil”
“Ce livre blanc propose quelques pistes de réflexion sur l’usage des données par les assistants vocaux”
Quels usages: DEMANDE DE LA MÉTÉO / RECHERCHER UNE INFORMATION / ÉCOUTER DE LA MUSIQUE
Mythes et réalités des assistants vocaux (vrai/faux) : écoutent en permanence / utilisent nos données pour mieux nous profiler / interface très prisée des enfants
LCC 234 - EmmanuelBernard-As-A-Service, bientôt chez vous !
01:47:29
L’épisode news du mois de juin avec Arnaud, Guillaume et Audrey derrière le micro pour fêter les 25 ans de Java, parler de son futur, mais aussi de son écosystème avec Quarkus et GraalVM entre autre. Et avec bien sûr, une rubrique loi société et organisation toujours aussi dense !
Dans ce long…. épisode, Emmanuel, Guillaume et Arnaud discutent de l’actualité avec Chicori (un runtime WASM en Java), Jakarta Data, Quarkus 3.10, Spring AI, Hibernate 6.5, mais aussi quelques retours aux basiques (timezones, rate limiting, …). Gros focus sur les nouveautés annoncées à Google I/O 2024 et dans l’écosystème IA en général avec les annonces d’OpenAI, Claude, Grok et d’autres. Différents outils sont aussi couverts comme Git, IntelliJ, ASDF, BLD, S3. Et enfin des sujets sur la haute disponibilité de Keycloak, la ré-indexation sans downtime, les challenges des implémentations alternatives, le mode vigilant dans GitHub, Redis et les changements de license, et les investissements de Microsoft et AWS en France dans le cadre du programme #ChooseFrance. N’hésitez pas à nous soumettre vos questions sur https://lescastcodeurs.com/ama nous y répondrons dans les prochains épisodes.
cache full pour les entités et leur collections (le défaut est shallow)
Java record pour les @IdClass
Les filtres peuvent être auto activés par défaut (vs à faire sur chaque session). Les filtres sont pas mal pour gérer par exemple des soft delete
Keybased pagination pour éviter les trous de résultant en cas de modification d’entités en parallèle de.une recherche paginée. S.appuie sur une clé unique et ordonnée genre ISBN
Clarifier que les extensions réactive n’imposent pas des apis réactives et seulement leur cœur implémenté en réactif ou offre optionellement des apis reacrive
Les gens pensaient à tors que les réactives imposaient le modèle de programmation
Le projet NotebookLM rajoute une fonctionnalité de Audio Overview qui permet de discuter avec son corpus de documents avec une conversation vocale https://notebooklm.google.com/
DeepMind annonce Veo, un nouveau modèle de génération de vidéo très convaincant qui peut faire des vidéos en 1080p de 60s, mais en combinant plusieurs prompts successifs, il peut générer des vidéos plus longues qui s’enchainent https://deepmind.google/technologies/veo/
Les utilisateurs de Gemini Advanced (l’application web) utilisent Gemini 1.5 Pro avec la fenêtre de contexte de 1 million de tokens, la possibilité de charger des documents de Google Drive, et bientôt la possibilité de générer des graphiques.
Gemini Advanced rajoute aussi la capacité de générer des itinéraires de voyage (avec intégration de Google Flights, etc)
Ask Photos, on peut poser à Google Photos des questions plus complexes comme “quelle est ma plaque d’immatriculation” et Photos devine que parmi toutes les photos de voitures lequelle est certainement la nôtre et extrait le numéro de plaque https://blog.google/products/photos/ask-photos-google-io-2024/
Même dans Google Messages vous pourrez échanger avec Gemini
Rajout d’un modèle Gemini spécial search intégré qui permet à Google Search de répondre aux questions de la barre de recherche avec une raisonnement multi-étapes, en étant capable de faire de la planification, en mode multimodal (texte, image, vidéo, audio)
Planning de repas et de voyage, supporté dans Gemini, va arriver aussi dans Search
Travail sur l’économie d’énergie pour faire durer les montres plus longtemps avant la prochaine recharge. Par exemple, 20% de consommation en moins lorsqu’on court un marathon !
Plus de type de données pour les activités physiques
Claude est un assistant IA basé sur un grand modèle de langage entraîné selon des principes éthiques stricts. Il accorde une grande importance à l’honnêteté, l’impartialité et le respect de l’être humain.
Son raisonnement repose sur une compréhension profonde des concepts plutôt que sur de simples associations statistiques. Il cherche activement à corriger les éventuels biais ou erreurs.
Claude est polyvalent et peut s’adapter à différents styles de communication et niveaux de complexité selon le contexte. Il maîtrise de nombreux domaines académiques et scientifiques.
Il est capable d’introspection sur ses propres processus de pensée et ses limitations. La vie privée et la confidentialité sont des priorités pour lui.
Claude continue d’apprendre et de s’améliorer grâce aux interactions avec les humains. Son but est d’être un assistant fiable, éthique et bienveillant.
quelqu’un sait comment ils font pour raisonner et pas juste LLM statistiquer? Comment ils prouvent cela ? C’est du code à part?
CVE-2024-32002 (Critique, Windows & macOS) : Les repos Git avec des sous-modules peuvent tromper Git pour lui faire exécuter un hook (élément de script) à partir du répertoire .git/ pendant une opération de clonage, permettant l’exécution de code à distance (Remote Code Execution).
CVE-2024-32004 (Important, machines multi-utilisateurs) : Un attaquant peut concevoir un repo local qui exécute du code arbitraire lors du clonage.
CVE-2024-32465 (Important, toutes les configurations) : Le clonage à partir de fichiers .zip contenant des repos Git peut contourner les protections, et potentiellement exécuter des hooks malveillants.
CVE-2024-32020 (Faible, machines multi-utilisateurs) : Les clones locaux sur le même disque peuvent permettre à des utilisateurs non approuvés de modifier des fichiers liés physiquement (hard link) dans la base de données des objets du repo cloné.
CVE-2024-32021 (Faible, machines multi-utilisateurs) : Le clonage d’un repo local avec des liens symboliques (symlinks) peut entraîner la création de liens physiques vers des fichiers arbitraires dans le répertoire objects/.
Article par un développeur qui a développé des Just-in-Time compiler pour différents langages
Remarqué que développer une implémentation alternative d’un langage (par exemple) n’a jamais vraiment rencontré le succès
Les gens préfèrent l’original à une alternative qui est dépendante de / a peine à suivre l’implémentation d’origine
Pour son cas, sur le JIT, il a travaillé sur un JIT intégré directement dans CRuby (plutôt que faire son implémentation alternative comme TruffleRuby), et sont JIT est intégré maintenant dedans directement
Plus facile de rejoindre / s’intégrer au projet plutôt que d’être une alternative pour laquelle il faut convaincre les gens de l’adopter
Aujourd’hui Youen (merci de prononcer correctement), Vincent, Arnaud et Emmanuel discutent des remous autour d’Oracle et de Java, de performances de serveurs d’app, de grosses données, vous font un retour sur ApacheCon, vous expliquent quoi faire en cas d’incendie et de plein d’autres choses encore. Merci à Creative Data pour son support des cast codeurs :)
Creative Data est une startup créée en 2013 accompagnant les entreprises de tous secteurs d’activité souhaitant placer la donnée au cœur de leur culture. Nous vous proposons une plateforme prête à l’emploi de bout en bout orientée métier qui vous apporte le meilleur des technologies Big Data.
Hébergée au sein de Seine Innopolis, l’écosystème normand du numérique, Creative Data se compose d’une équipe pluridisciplinaire de data scientists, de développeurs, d’architectes Data ou encore d’experts métier capables de vous libérer des barrières technologiques liées au Big Data. Vous pouvez ainsi créer de nouveaux leviers de croissance en exploitant pleinement la richesse des données à votre disposition.
Dans cet épisode Guillaume interview Jérôme sur l’usage de REST, les nouvelles approches, comment faire évoluer ses APIs web et bien d’autres choses encore.
Dans ce nouvel épisode news, Arnaud, Emmanuel et Audrey reviennent sur les annonces d’Oracle concernant le JDK, sur Spring One, mais aussi sur les petites fuites de données et autre panne généralisée qui ont fait l’actu récemment.
Donc une LTS tous les 2 au lieu de 3 ans, ce qui fait que la prochaine sera la 21 et pas la 23.
Une enquête récente auprès de développeurs montre qu’entre un quart et la moitié utilisent les release de six mois en dev, mais moins de la moitié d’entre eux en prod
Mais pas de détail sur le temps de security patch support gratuit. Oracle en payant c’est 8 ans
Autant ce n’était plus vraiment un problème pour les systèmes sour mac OS ou Linux, qui utilisent depuis assez longtemps UTF–8 par défaut, mais c’est surtout pour les systèmes Windows où c’est plus problématique
Dans JDK 17, la propriété système System.getProperty("native.encoding") avait été introduite si on veut lire par exemple un fichier avec
Deux approches de mitigation pour les problèmes de compatibilité,
en recompilant et en utilisant cette propriété quand on ouvre un fichier
en utilisant -Dfile.encoding=COMPAT sans recompilation, qui gardera le même comportement qu’en JDK 17 et avant
L’équipe d’Oracle suggère de tester ses applications avec -Dfile.encoding=UTF–8 pour voir s’il n’y a pas de soucis
les classes de test peuvent être ordonnées avec la Class Order API (par nom de classe, nom d’affichage, avec @order ou random)
les classes de test imbriquées peuvent l’être avec @TestClassOrder
@ExtendWith peut maintenant être utilisé pour enregistrer des extensions via des champs ou des paramètres de méthode (constructeur, méthodes de test ou lifecycle)
@RegisterExtension peut maintenant être utilisé sur des champs privés.
assertThrowsExactly version plus stricte de assertThrows()
assertDoesNotThrow() supporte les suspending functions Kotlin
assertInstanceOf produit de meilleurs messages d’erreurs (remplacement pour assertTrue(obj instanceof X))
assertNull comporte maintenant le type de l’object si sa méthode toString retourne null pour éviter les messages de type expected but was
@TempDir
peut maintenant être utilisé pour créer plusieurs répertoires temporaires (le retour au mode par context peut être fait par configuration)
fait un reset des permissions read and write du répetertoire root et de tout les répertoires contenus plutôt que d’échouer à les supprimer
peut maintenant être utilisé sur des champs private
Nouvel UniqueIdTrackingListener qui va générer un fichier contenant les identifiants des test executés et qui peut être utilisé pour re-executer ces tests dans une image GraalVM par exemple.
Les personnes qui sont responsables de cette base de données veulent fusionner certaines zones ensemble, par exemple, Oslo et Berlin. Alors que ces deux villes (et d’autres) n’ont pas forcément toujours eu la même heure
La base est censée référencer tous les changements depuis 1970
mais en fusionnant plusieurs zones, le risque est de perdre l’historique pré–1970
Lié à OMI (open management infrastructure, l’équivalent de Windows Management Infrastructure (WMI) pour les systèmes UNIX qui s’exécute en root avec tous les privilèges
Dès qu’on utilise des services comme azure log, ils l’installent dans les VMs
L’article dit que c’est la faute à l’open source et que seulement 20 contributeurs. C’est un peu BS.
En fait si c’est installé via un service le service le mettra à jour
Mais MS recommande de mettre à jour manuellement aussi
Julia explique comment se comporte le navigateur qui voit qu’on essaie d’accéder à une URL différente de celle du domaine de la page web chargée, et le navigateur se demande s’il a le droit de charger cette page
Il va faire un “preflight” request (avec une méthode HTTP OPTIONS) pour savoir s’il a le droit ou non, puis si c’est le cas, pourra accéder à la resource
Julia explique la same-origin policy (càd qu’on ne doit accéder que des resources du domaine qu’on est en train de visiter dans son navigateur)
Facebook prévoit de faire une maintenance sur son backbone (classique)
Un ingénieur lance par erreur une commande qui declare l’ensemble du backbone inaccessible
Oups, le système d’audit qui devrait empêcher de lancer une telle commande est buggé, la commande passe …
Toute l’infra de Facebook est désormais déconnectée du net. Les avertissements BGP sont stoppées puisque l’infra FaceBook n’est plus dispo et les DNS déprovisionnent les entrées FaceBook, le monde ne peut plus accéder à FaceBook
Les ingé comprennent vite le problème sauf que ils ont perdus les accès remotes aux services et la plupart de leurs systèmes internes sont KO à cause du retrait des DNS
Ils envoient donc du personnel sur site dans les datacenters pour physiquement remettre en service l’infra mais l’accès physique aux machines est super protégé
Ils finissent par y arriver SAUF que le fait de tout redémarrer pause un vrai challenge du fait de l’affluence du traffic qui reprend. Ils risquent de refaire tomber les datacenters du fait de la surcharge électrique. (sans parler de sproblèmes plus haut niveau comme le rechargement des caches etc)
Heureusement ils ont un plan de reprise qu’ils testent régulièrement qui est plutôt prévu dans le cadre d’une tempête qui mettrait HS tout ou partie du réseau. Ce système marche bien et tout rentre dans l’ordre petit à petit, Facebook est sauvé, la planète a reperdu 5 points de QI
Les revenus (sur 3 ans) de plus de 10 000 streamers Twitch ont été publiés sur le net.
certains codes d’accès AWS
attention c’est la partie 1, il pourrait y avoir d’autres données prochainement
Comment ?
Officiellement suite à une erreur dans un changement de config
Officieusement c’est plus probablement un employé ou un ex employé
Pourquoi ?
le message sur 4chan dénonce un « un cloaque toxique dégoûtant », ce qui pourrait faire référence aux problèmes de harcèlements et de raids hostiles visant des streameurs et des streameuses en raison de leur origine ethnique, de leur orientation sexuelle ou genre.
il est aussi question d’une revendication à une concurrence plus saine dans le secteur du streaming de jeu vidéo
LCC 168 - Interview sur HTTP 2 et son contexte avec Dridi Boukelmoune (partie 1)
01:25:42
Dans cette épisode on discute d’HTTP/2 avec Dridi Boukelmoune. Pour bien tout comprendre, on discute des couches en dessous et associées: TLS, UDP, TCP, QUIC. Et on parle d’HTTP/0.9 et après pour comprendre pourquoi on est à HTTP/2. Cette première partie aborde OSI, HTTP jusqu’à 1.1, la couche de transport (TCP, UDP, QUIC) et TLS.
Pour info la RFC 2616 a été écrite en comité, du coup ce n’est pas toujours cohérent, et parfois contradictoire. En parallèle du développement de HTTP/2 une nouvelle version de la spec est parue pour clarifier et rectifier certains points. Aussi pour rendre la lecture plus digeste en ayant une rédaction un peu plus “algorithmique” (une tendance générale dans les RFC récentes).
Parce qu’avec UDP il faut se charger de tout, c’est plus difficile. Une vulnérabilité face à une attaque de rejeu a été identifiée lors de la première présentation du protocole à l’IETF.
J’aurais dû vérifier au lieu de dire des bêtises, QUIC n’utilise pas TLS à proprement parler. Je pense que le seul point commun est d’utiliser la même chaîne de certificats. Pour ma défense c’est hors scope dans mon boulot :)
Du coup QUIC serait plutôt aux niveaux 5 et 6 du modèle OSI.
LCC 266 - Interview sur GraalVM avec Gilles Duboscq - partie 1
01:00:01
Gilles Duboscq de OracleLabs discute des multiples facettes du projet GraalVM avec Emmanuel. Dans cette première partie, nous discutons de l’histoire de GraalVM, de ses concepts fondamentaux et nous zoomons sur Truffle, Polyglot et Espresso, le support de JavaScript, Ruby, R, Python, LLVM, WASM… et Java dans GraalVM. La partie 2 nous emmènera vers GraalVM Native image, comment utiliser GraalVM en pratique en fonction des différents usages discutés, les versions, la communauté, comment c’est fait sous le capot et plein d’autres choses encore.
LCC 274 - Interview le darwinisme numérique avec Didier Girard - partie 2
00:50:40
Cet épisode est un échange entre Guillaume, Antonio, Emmanuel et Didier Girard sur les réflexions de Didier autour du darwinisme numérique. Cette deuxième partie se concentre sur ce que veut dire le darwinisme numérique pour les entreprises et analyse les entreprises qui ont embrassé ses nouvelles contraintes ces vingt dernières années. En particulier, nous discutons de leur capacité d’adaptation comme principe fondamental et en filigrane de l’impact sur l’individu. On y invente aussi la notion d’équipe raclette.
Comme souvent l’actualité nous a rattrapé. Cette interview a été enregistré quelques jours avant l’invasion de l’Ukraine par la Russie ce qui donne une couleur plus intense à la partie 1 de cette interview.
Dans cet épisode Antonio, Audrey et Guillaume commentent l’actualité du mois de février : beaucoup de nouveautés dans les librairies et côté front mais également des nouvelles de Java 10 et 11 et de Kotlin bien sûr !
Deux mots sur sa genèse et des idées sur les raisons du succès actuel ?
C’est quoi son business model ?
SonarSource est une holacratie, fakenews ou pas ?
A propos des sujets qui fâchent
Mesurer la couverture par les tests unitaire a-t-il encore un quelconque intérêt avec la montée en puissance des outils de mutation testing ?
Détecter des problèmes dans le code a-t-il un quelconque intérêt si la qualité générale du design est très faible ?
L’utilité des outils d’analyse de code est inversement proportionnel à la robustesse des langages et par exemple avec des langages comme Rust, Typescript, GO, … y-a-t’il encore un intérêt ?
Qualité du code et deep learning, quid du futur ?
Les produits SonarSource
SonarSource, tu nous présentes les produits en 2 mots ?
D’abord on a perdu Guillaume corps et âme, ou plutôt piste et blagues. Ensuite on a perdu les shownotes. Puis le live. Puis le casque d’Audrey, et son micro dans la foulée. On a bien failli perdre le mix aussi. Mais bravant tous les obstacles, nous sommes quand même parvenus à faire l’épisode news de décembre.
LCC 104 - Interview diversité avec Agnes Crepet et Maxime Tiran
01:09:15
Agnes, Maxime et Emmanuel discutent de la diversité et de la domination dans l’IT de l’homme, blanc, < 30 ans, qui boit de la bière. Après un état des lieux, ils décrivent la pression que peuvent subir les minorités puis comment améliorer les choses.
LCC 144 - Interview Asciidoctor avec Maxime Gréau et Guillaume Scheibel
01:30:37
Dans cet épisode, Maxime et Guillaume discutent des langages de markup - en particulier Asciidoctor - pour l’écriture de documentation. Quels sont leurs bénéfices, quels outils et flux de travail adopter ? On y aborde ces questions.
Comment gérer les modifications concurrentes et les commentaires (à la Microsoft Word et LibreOffice)
Écrire de la documentation
Quels sont les avantages Comment convaincre les non développeurs d’utiliser Asciidoctor ? La composition et la réutilisation de morceaux de documentation
Emmanuel Antonio et Guillaume discutent de Java 16, de GraalVM, de micronaut, de Quarkus, de licence Elastic, de BinTray qui s’en va et d’attaque de chaine de fournisseurs. Et merci à José Paumard et Benoit Sautel pour leur crowdcast.
le GC reste sur la JVM hote qui peut etre hotspot ou SubstrateVM
Dans le cas de SubstrateVM, ça veut dire que Java peut etre interprété dans ce mode ahead of time compiled (donc in JIT est embarqué). Pour faire tourner certains morceaux de Java “dynamique” ça peut valoir le coup
Sinon c’est la vision de GraalVM de la VM universelle donc supporter Java “comme les autres langages” fait partie du puzzle
Proposition de creation d’élément de code JavaScript qui peut tourner hors du thread principal by design.
JS peux rendre la main mais c’est non preemptif (yield, promesses etc) et uniquement à un endroit précis
Donc création de Element Worklet (un comme un runnable en Java) qui tourne dans un thread séparé, avec un message channel pour communiquer avec le reste
Travaille sur un shadow dom
par contre rien n’est détaillé sur le scheduler et la priorisation
“si vous vendez Elasticsearch directement en tant que service, vous serez impacté”
entre les annonces et la licence, il y a une difference
est-ce que tout competiteur sérieux à Elastic amènera un changement de licence?
est-ce que Lucene est le prochain sur la liste?
reflechissent à une license qui ouvre le code apres 3 à 5 ans BSL (Business Solftware License qui se transforme en ASL apres quelques années, et qui a une clause restrictive avant)
La distribution Elastic d’Elasticsearch avait déjà un mix de ASL et de logiciels sous license proprietaire mais “source ouverte”
contre point de la position des gens du Message a caractere informatif
4 valeurs de l’OSS:
The freedom to run the program as you wish, for any purpose
The freedom to study how the program works, and change it so it does your computing as you wish
The freedom to redistribute copies so you can help others
The freedom to distribute copies of your modified versions to others
at its heart, Open Source and Free Software are about the freedom to make the system work the way you wish
au dessus est la communaute et le benefce de distribution qui fait un plus group morceau de clients potentiels
Shay B - By putting the core of Elasticsearch into the open, we can presume he wanted the business value benefits of Open Source — collaboration in the commons, low friction acquisition for users, and hopefully the growth of an ecosystem around it. He got it
tight open core - direct, and often critical, features are only available under a proprietary license
co-mingle the source code for these features in the primary Elasticsearch repository
Elastic NV creates a world where it is very, very difficult to collaborate only on the open source pieces.
to whom does Elasticsearch belong? The community, or Elastic NV?
Elasticsearch […] exists primarily to fuel the commercial ambitions of Elastic NV
I, as a contributor, want to change the course of Elasticsearch in ways that benefit me (and perhaps others), but does so at the expense of Elastic NV, will I get that opportunity? The answer is most likely no — you will not.
That truth is ultimately corrosive to sustainable communities.
This is the deepest, most fundamental truth about Open Source and Free Software in action. That you, as a user, have rights. That those rights are not contingent on the ability of someone else to capture value.
Companies who decide to build their business on Open Source cores need to get much more aggressive about their trademark policies. It should be clear and unambiguous that your trademark cannot be used for another product without your permission. If I may go further, I would make it clear that nobody but your company can create a distribution with your trademark on it at all, without your permission.
JHipster Quarkus est un “blueprint” JHipster qui permet de surcharger la mécanique de génération pour obtenir un backend qui s’appuye sur Quarkus plutôt que Spring. Cela permet de généré rapidement une application fullstack (front + back).
LCC 247 - Cette fois-ci nous n'avons pas perdu Guillaume!
01:18:32
Dans ce premier épisode news de l’année Guillaume est de retour et sans accrocs (enfin presque). Accompagné d’Arnaud ils parcourent les nouvelles techniques de fin 2020, début 2021. Ils nous parlent de Java (Hashcode, Loom, records), des news Spring (SpringBoot, SpringCloud, JHipster), du changement de license chez Elastic, de CSS (Bootstrap, Tailwind.CSS), de Gradle et d’autres sujets Sécurité, Architecture et Méthodologie.
Comment les hashcodes sont générés en Java. Et non ce ne sont pas les adresses mémoires. Le code utilises un modèle sans contention et très rapide. Quasi comme celui qui ramène une valeur constante.
Spring Cloud Contract 3.0: Incremental Test Generation for Maven, Resolves Credentials from settings.xml, Rewrite Groovy to Java, Allow to Extend Contract & Stubs, New [Custom] Mode of Test Generation, Experimental GRPC Support, GraphQL Support, Stub Runner Boot Thin JAR, Messaging Polyglot Support, Messaging with Existing Middleware, Gradle Plugin rewrite.
Gradle 6.8 est la dernière release avant la version 7. La version 6.8 apporte d’importantes améliorations des performances dans la version Kotlin, des améliorations sur les caches (notamment les plugins checkstyle, pmd, codenarc, jacoco ). Améliorations sur la feature toolchain, les composites builds et la gestion des dépendances …
Le problème avec Gradle article de Cédric Champeau, dev Gradle en réponse à Le problème avec Gradle de Bruce Eckel. On y parle des principes de bases (taches et dépendances), configuration vs programmation du build, Groovy, DSL, de faire la même chose de 36 manières, de magie et de cycle de vie
It’s pull from production, not push to production avec CDN sur le front et serverless sur le back, la prod est juste un changement de DNS. Toutes les branches peuvent être en prod. main n’est pas la prod mais l’accord des fonctionnalités partagées.
Comment prendre des notes … pour ne pas faire un cimetière de notes mais réellement un référentiel personnel de connaissances.
Reportée chez Apache le 24 Novembre, Enregistrée en CVE le 26 Nov Probablement connue depuis au moins Mars 2021: https://github.com/nice0e3/log4j_POC
fix 2.15.0 le 10 décembre
Apache Log4j2 JNDI features do not protect against attacker controlled LDAP and other JNDI related endpoints.
Severity CVSS de 10 sur 10
jamais vu
Back to basics: C’est quoi JNDI?
the JNDI features used in configurations, log messages, and parameters do not protect against attacker-controlled LDAP and other JNDI related endpoints
l’attaquant trouve une donnée utilisateur qui est loggée
Pas que HTTP
et injecte {JNDI:ldap pointant vers un ldap malicieux qui retour du code java sérialisé
marathon pas un sprint, on fatigue après 5 ou 6 jours a fond, donc faites des rotations
comm sur le réseau, que regarder : Adding encryption, Auth/Auth, I sanitize data that goes over the wire, I sanitize input that could execute, DOS protection – backoff strategies and more.
supply chain sécurisation and component governance
Emmanuel, Guillaume et Antonio se réunissent pour discuter des nouvelles de ce début de printemps. On y parle retour de JavaOne, revue de pull request, de developpement cloud natif, de SLO, et de log.
Sondage créé par Slash Data et soutenu par la CNCF
Interrogent 19.000 développeurs sur : l’utilisation de Kubernetes, le Edge Computing, le Cloud Native, Containers et Orchestrateur
Le nombre mondial de développeurs cloud native a augmenté au cours des 12 derniers mois de 0,3 million, pour atteindre 6,8 millions.
Dans le même temps, la proportion de développeurs backend impliqués dans les technologies cloud native a diminué de 3 points de pourcentage, passant de 44 % à 41 %.
Dans toutes les régions, l’Amérique du Nord (47 %) et l’Europe occidentale (46 %) affichent les taux d’adoption les plus élevés.
Kubernetes est utilisé par 31% de tous les développeurs backend, ce qui représente une augmentation de 4 points de pourcentage au cours des 12 derniers mois. Actuellement, 5,6 millions de développeurs utilisent Kubernetes.
Dans tous les secteurs, le Edge Computing a connu une croissance rapide de l’adoption de Kubernetes et présente désormais les taux d’utilisation les plus élevés des conteneurs et de Kubernetes.
Parmi les développeurs spécialisés dans le Edge Computing, l’utilisation de Kubernetes a augmenté de 11 points au cours des 12 derniers mois, pour atteindre 63 %.
L’architecture Serverless est également attrayante pour les développeurs Edge Computing : 48 % de tous les développeurs edge utilisent serverless, contre seulement 33 % de tous les développeurs backend.
Parmi les outils serverless, AWS Lambda continue de jouer un rôle prépondérant. Cependant, Google Cloud Run a considérablement gagné du terrain au cours des 12 derniers mois.
99,99 en cible interne, au dessus, il y a tant de variables entre l’utilisateur et le service que c’est perdu dans le bruit (wifi, ISP etc)
99,999 pour les infra globales
disponibilité est fonction du MTTF et MTBR = MTTF/(MTTF+MTTR)
si on veut offrir 99,99, toutes les dependances critiques doivent offrir beaucoup plus, regle du 9 supplementaire
sinon il faut des mitigation, cache, fail open etc
dispo depend du temps de detection et du temps de recuperation
donc forcer les clients (services dependants) à baisser leur niuveau ou engineerer pour compenser le bas niveau du service dont on est dependant
faire des scenarios (e.g. 1 outage majeur, 3 faibles - e.g. un shard, 5 de dependances)
considerer que la perte d’un shard du service veut dire SLO is 1/nieme indisponible (n étant le numbre de shards)
donc il reste peut de temps pour reagir quand on compte temps de detection, temps de paging, etc.
error budget: 1-SLO, sur un mois et peut etre une fenetre glissante pour remonter graduellement. si budget depensé, on ne fait plus de mise en prod sauf critical security issues ou si c’est pour corriger les causes du probleme qui a consommé le budget
rendre le plus de dependances non critiques (par exemple en éliminant les SPOF)
faire revue d’architecture pour identifier ces dependances et leurs impacts
appels a trois pools de serveurs indpendants et prendre le premier resultat
dependences asynchrones peut reduire le nombre de dependancs critiques
retours arriere rapide et automatisés: en enlevant un humaind e la boucle, on racourcit les temps de réponse
le vecteur d’initialisation pouvait être configuré et reutilisé à valeur unique
n’importe quelle application pouvait essayer d’acceder aux secrets de l’enclave en essayant les conbos parce que l’application avait accès à ces paramêtres
quand on reutilise les vacteurs d’initialisation, on peut faire un 1–1 entre le message clair et chiffré, ce qui permet de revenir a message clair si on produit le meme message cripté.
Guillaume, Arnaud et Vincent se retrouvent et discutent de JavaOne 2014, des propositions autour de Java 9, de RxJava et autres collections alternatives. Côté entreprise, ils discutent du cloud et notamment du retrait de CloudBees du PaaS et des expériences du cloud à la Française. Le lot de failles de sécurité et d’outils pour développeurs est aussi discuté.
Emmanuel, Antonio, Guillaume et Arnaud discutent les nouvelles récentes (JDK 8 et 9, Forge 2, ElasticSearch etc). Ils discutent aussi la récente valse des CTOs.
Rule of thumb. Lightweight = users happy Users happy = more users More users = need more features More features = heavyweight. Reboot. @CedricChampeau
Conférences
Les principaux coworking en France Le CfP de Devoxx France se termine dimanche 457 speakers 537 proposals Il y aura un Devoxx4Kids à Devoxx France FOSDEM 2014, ce WE, avec une wiki dev room BreizhCamp
LCC 175 - Interview sur la build avec Cédric Champeau et Arnaud Héritier - partie 2
01:28:01
Guillaume, Cédric et Arnaud se retrouvent autour du micro pour parler pendant une session marathon de 3h30 du build, de Maven et de Gradle. Dans cette deuxième partie, on y discute tests puis on aborde des questions spécifiques à chaque outil. On aborde enfin le dilemme: migrer ou ne pas migrer, telle est la question. Le tout basé sur les questions posées sur la mailing list des cast codeurs : merci à vous !
Gradle / Maven: Quelle est la philosophie officielle des deux outils pour la gestion des tests au delà des tests unitaires (une fois les différents modules assemblés et déployés) ? Dans des projets maven par exemple, je vois des fois des modules dédiés, en scope test ou scope runtime et lancés à la main, d’autres fois des projets indépendants. Chaque équipe a plus ou moins sa propre façon de gérer la chose mais rien n’a l’air vraiment normalisé (ou du moins partagé par la communauté).
Gradle / Maven: Quels sont les ‘best practices’ pour faire du ‘test and watch’ (genre infinitest) avec maven et gradle ?
Les intégrations
Gradle: Pourquoi je ne peux pas faire de Run Tests sur un projet en Gradle dans IntelliJ alors qu’avec Maven je peux ? Gradle / Maven: Pour les deux, qu’en est il de l’intégration dans les différents IDE ? J’ai été agréablement surpris par l’intégration de Gradle dans Netbeans, mais je n’ai pas beaucoup joué avec. Gradle / Maven: “Quid de l’intégration dans mon IDE préféré ?” Gradle / Maven: “Quid de l’intégration dans mon continuous build préfére ?”
Gradle en profondeur
Gradle: Y’a moyen de voir en Gradle à quel test je suis rendu ?
Gradlew/mvnw
Gradle: Pourquoi mvnw et gradlew ne downloadent par leurs jars au lieu de nous forcer à les mettre dans .mvn et gradle ?
Gradle: Pour Gradle, vous ne trouvez pas affreux ces fichiers “gradlew” et “gradlew.bat” à la racine de chaque projet dans github ?
Scripting vs XML
Gradle: Est-il prevu de pouvoir avoir un fichier build.gradle a chaque niveau de la hierarchie de tes modules au lieu d’avoir besoin de decrire manuellement tous les paths dans un fichier settings.gradle ? C’est un point que j’ai trouvé penible (par ex https://github.com/xwiki/xwiki-commons/blob/master/settings.gradle et là je ne liste que qq modules - en pratique il y en a des centaines ds le build xwiki).
Gradle: Est-ce que Gradle travaille a essayer d’homogénéiser encore plus les builds Gradle ? Qd j’ai essayé de convertir le build Maven de XWiki en Gradle, j’ai lu la doc puis j’ai regarde 4–5 builds differents en gradle pour voir les bonnes practices. Et la j’ai ete embete car chacun avait des pratiques un peu differentes. Au debut j’etais meme paumé et puis apres qq heures de recherches j’ai commencé à identifier des patterns communs mais qd meme avec pas mal de variations. Du coup je n’ai pas su trouver facilement les best practices et j’ai du me les faire et en consequence le build Gradle XWiki est lui aussi encore un peu different des autres probablement. Qu’est-il prevu sur le sujet ? En gros comme simplifier encore plus l’onboarding Gradle ?
BOM
Gradle: Le BOM de maven est-il une invention du malin ? Et quel est son équivalent pour Gradle ?
Android
Gradle: Pourquoi l’intégration de ces outils dans Android Studio est-elle aussi pathétiquement mauvaise ? (je suis obligé d’utiliser ce sous-outil, et j’ai mal à mon gradle : je ne peux pas voir mes dépendances facilement, et l’intégration se résume à une lecture de la liste des tâches et à leur lancement).
Maven en profondeur
Maven: Quand est-ce que le bogue Maven du shade plugin qui ne remplace pas le jar d’origine pas le jar shadé sera corrigé? (et que donc l’équipe Maven reviendra à la raison) ? Maven: Pour revenir au cycle de vie de Maven, serait-il possible de configurer des cycles de vies (notion de descripteurs de cycles de vie). En gros, pouvoir dire que mon projet suit un cycle de vie à 3 phases qui sont “resource, compile, install” et qu’un autre avec X phases comme compile, “prepare, …, install, deploy-maven-repository, deploy-env”) Maven: Pour Maven encore, il y avait il me semble un projet polyglot pour les descripteurs, qu’en est-il ? Pourrait on imaginer des descripteurs en yaml et/ou json ? Maven: y’a t’il beaucoup de boites qui dev leurs petits plugins Maven perso pour adapter à leurs problématiques ?
Granularité / découpage de modules avec Maven
Maven: comment gérer les builds où l’appli finale est la résultante de nombreux multi-module Maven project, chacun dans un repo git perso avec leur version. Nous avons des problèmes pour gérer les évolutions de versions de chacun de ces multi-modules et faire en sorte que les modules qui en dépendent se MAJ vers la nouvelle version. Les BOM Maven sont une piste mais c’est pas clair… Maven: est-ce une bonne pratique de considérer comme absolue la règle selon laquelle tous les modules d’un multi-module Maven project doivent avoir le même numéro de version ? Maven: est-ce bien une mauvaise pratique que de mettre dans le même repo Git 2 multi-module Maven projects qui ne partagent pas le même parent ? Maven: les devs familiers avec Maven n’ont ils pas trop tendance à découper leurs appli en modules Maven alors qu’ils pourraient se contenter des package Java ? Je me rend compte que c’est mon cas perso… Maven: Pour des grosses applis, faites-vous plusieurs petits builds et un meta-build d’assemblage final agrégeant les petits morceaux ? Ou alors faites-vous un bon gros build qui dure longtemps mais recompile/repackage tout ? Ou alors vous laissez-vous le choix en faisant en sorte de pouvoir faire les 2 (sur Jenkins)
Maven: “classpath too long”: c’est la résultante du point précédant. Nous commençons à nous heurter à des problèmes de “classpath too long” sous Windows pour des Proof of Concepts mixant de nombreux projets. Le point de non-retour est-il proche ? (Pour info, nous contournons temporairement le problème en ayant utilisé la commande mklink pour simlinker le repo Maven sur c:\repo et gagner quelques caractères sur chaque dépendance… oui, c’est tres moche) Maven: quid du paramétrage du build ? Par exemple actuellement nous avons une phase de packaging assez générique qui prend en entrée un numéro de version de l’application à packager. Merci Jenkins.
Migration
Migrer vers Gradle, mais pourquoi (pas) ? Et la valeur du build dans tout ça … Gradle: Pourquoi est-ce que depuis 3 ans, je vais voir une prez de Cédric sur Gradle, et j’en ressors en me disant “Gradle, ça a l’air quand même vachement bien”, et que l’année qui suit, je retourne voir une prez de Cédric l’année suivante sans avoir rien changé sur mes projets Java ? Gradle: Suis-je tellement fainéant dans mon petit confort de build Maven pour reposer sur mes acquis et ne pas switcher ? Je veux dire … à chaque fois j’ai de bons arguments apportés par Cédric pour migrer, et pourtant, le switch ne se fait finalement pas. Gradle / Maven: Considère-t-on aujourd’hui le build comme accessoire sur un projet Java pour ne pas vouloir engager un investissement de migration ? (je parle beaucoup de mon cas perso ici, mais j’ai l’impression qu’il n’est pas si isolé que ça) Ou au contraire, est-ce tellement critique et relativement assez peu agile qu’on a trop peur d’en changer? Si on reprend le cas de Ant vs Maven, pas mal de gens ont traine a migrer, c’etait trop risque, les bonnes pratiques etaient encore peu connues, tout le monde avait peur de crasher son projet a cause de ca… Personne ne veut essuyer les platres d’une “nouvelle” techno de build avec son projet. Gradle: Peut-etre Gradle en est-il encore la et a du mal a passer le cap des Early-Adopters (ceci dit, avec Android et son armee de developpeurs d’apps ca devrait changer vite si c’est le cas; tant qu’Android l’infidele decide de rester sur Gradle :P Gradle: Et enfin, LE point-cle: est-ce que la migration de Maven a Gradle amene une valeur ajoutee suffisante pour justifier l’effort et le risque? J’ai pas l’impression de lire beaucoup de retour d’experience de projets qui disent avoir gagne drastiquement en productivite en en qualite grace a une migration Maven->Gradle. Gradle / Maven: “je démarre un projet, Gradle ou Maven ?”
Conclusion
Gradle / Maven: les devs et le build: généralement, la grande majorité des devs ne s’y intéressent pas. A titre perso, je trouve ça fondamental, si le build est mal fait, ça handicap tout le projet sans que les gens ne s’en aperçoivent malgré les effets négatifs, ils ne voient pas comment faire autrement => est-ce un ressenti que vous avez ?
LCC 190 - Interview revue de code Gerrit et l'outil Vet avec Julien Béti et Réda Housni-Alaoui
00:34:57
Julien et Reda viennet nous parler de Gerrit et de son système de revue de code ; puis de l’outil Vet qu’ils ont open sourcé. Et José Paumard nous fait
try ( José josé = new José(2018) ) { Audio crowdcast = Stream.of( josé.interview(), josé.interview(), josé.interview(), josé.interview() ) .map( Audio::normalize ) .filter( a -> ! a.tooNoisy() ) .collect( AudioCollectors.joining( " fade out <-> fade in " ) ); return crowdcast; }
Dans l’interview, nous n’avons pas eu le temps de parler: De Vet et des workflows associés (via les commandes documentées sur la page GitHub) qui permettent de verrouiller les push sur le git remote. De l’aspect extensible de Gerrit qui permet, par exemple, d’appliquer automatiquement une PR lorsque l’ensemble des conditions sont réunies (+2 d’un reviewer, pas de –1 d’un reviewer, +1 de Jenkins) et ce quelque soit l’ordre d’arrivée.
Concernant la problématique que tu as évoqué de “commit annexe”, il est en fait possible dans Gerrit de créer une dépendance entre PR. Nous n’utilisons pas cette fonction, il est donc possible que quelques modifications sur Vet soient nécessaire pour en tirer profit. Plus d’infos ici: https://gerrit-review.googlesource.com/Documentation/concept-changes.html#related-changes
Nous croyons que l’informatique transforme nos sociétés. Nous voyons en chaque développeur un ouvrier aux mains d’or et un artisan travaillant dans les règles de l’art. Toi aussi viens rejoindre la tribu OCTO pour partager ton savoir et apporter ta pierre à l’édifice. Au delà du développement, tu découvriras que la création de valeur se fait à tous les niveaux du SI : dans l’architecture, les projets et les produits innovants. Tu verras la transformation à l’oeuvre chez nos clients et tu en deviendras l’acteur et le promoteur. Pour en savoir plus…
Scala IO - 24–25 Octobre 2013 : the Scala and functionnal programming conference in Paris via @ScalaIO_FR => ScalaDays, ScalaIO, on ne les arrête plus :-)
Les Playoffs sont une succession d’entretiens techniques qui permet aux candidats de rencontrer 4 à 5 développeurs SFEIR. Le candidat a une meilleure perception de SFEIR, SFEIR a une compréhension plus approfondie des compétences, du potentiel et de la personnalité du candidat. Les PlayOffs sont un investissement pour le candidat qui prend une ½ journée de congés et pour SFEIR qui délèguent des consultants pour que ces entretiens se passent dans de bonnes conditions. Toutes les personnes qui sont passées aux PlayOffs ont apprécié leur ½ journée.
Venez tester l’ambiance Devoxx4Kids. Pourquoi les parents y amènent leurs enfants. Pourquoi les enfants aiment ce qui s’y passe.
Un grand merci à l’équipe de Devoxx4Kids et à Daniel qui a du non seulement apprendre à interviewer, mais aussi à interviewer des enfants qui franchement ne sont pas encore prêts à monter sur les scènes de Devoxx France ;)
LCC 301 - Minoritaire ou majoritaire, là est la question!
01:45:39
Dans cet épisode, Emmanuel et Guillaume reviennent sur les nouveautés de l’écosystème Java (Java 21, SDKman, Temurin, JBang, Quarkus, LangChain4J, …) mais aussi sur des sujets plus généraux comme Unicode, WebAssembly, les bases de données vectorielles, et bien d’autres sujets orientés IA (LLM, ChatGPT, Anthropic, …).
Nous avons déjà partagé ce lien par le passé, mais l’article est mis à jour à chaque release majeure de Java pour couvrir les dernières nouveautés. Et en particulier, Java 21 qui vient de sortir.
Apparemment, une nouvelle licence pour le TCK (qui valide la compliance) doit être approuvée
Oracle semble avoir sorti de nouveaux termes, à quelques jours de la sortie officielle de Java 21
la mise a jour du TCK est arrivée le 9 octobre.
comment Microsoft a pu sortir le sien avant?
Le Financial Times propose un bel article avec des animations graphiques expliquant le fonctionnement de l’architecture de réseau de neurones de type transformers, utilisé dans les large language model https://ig.ft.com/generative-ai/
LLM via relation entre les mots
notion de transformer qui parse les “phrases” entières ce qui capture le contexte
discute le beam search vs greedy search pour avoir pas le prochain mot mais l’ensemble de prochains mots
parle d’hallucination
l’article parle de texte/vector embeddings pour représenter les tokens et leurs relations aux autres
il décrit le processus d’attention qui permet aux LLM de comprendre les associations fréquentes entre tokens
le sujet des hallucinations est couvert
et pour éviter des hallucinations, utilisation du “grounding”
Un bel article qui explique Unicode, les encodings comme UTF-8 ou UTF-16, les code points, les graphèmes, les problèmes pour mesurer une chaîne de caractères, les normalisation de graphèmes pour la comparaison de chaîne
Si vous voulez mieux comprendre Unicode, c’est l’article à lire !
unicode c’est un mapping chiffre - caractère en gros
1,1 millions disponibles dont 15% définis et 11% pour usage privé, il reste de la place. Et non les meojis ne prennent pas beaucoup de place.
usage prive est par exemple utilise par apple pour délivrer le logo apple dans les fonts du mac (mais pas ailleurs)
UTF est l’encoding du chiffre de l’unicode
UTF-32: 4 bytes tout le temps, UTF-8, encodage variable de 1 a 4 bytes (compatible avec ASCII) ; il a aussi un peu de détection d’erreurs (prefix des bytes différents),
optimise pour le latin et les textes techniques genre HTML
problème principal, on peut pas déterminer la taille en contant les bytes ni aller au milieu d’une chaine directement (variable)
UTF-16 utilise 2 ou plus de bytes et est plus sympa pour les caractères asiatiques
un caractère c’est en fait un graphème qui peut être fait de plusieurs codepoints : é = e U+0065 + ´ U+0301 ; ☹️ (smiley qui pleure) is U+2639 + U+FE0F
D’ailleurs selon le langage “:man-facepalming::skin-tone-3:”.length = 5, 7 (java) ou 17 (rust) ou 1 (swift). Ça dépend de l’encodage de la chaine (UTF-?).
““I know, I’ll use a library to do strlen()!” — nobody, ever.”
Attention java.text.BreakIterator supporte une vieille version d’unicode donc c’est pas bon.
Les règles de graphème change a chaque version majeure d’unicode (tous les ans)
certains caractères comme Å ont plusieurs représentations d’encodage, donc il ya de la normalisation: NFD qui éclate en pleins de codepoints ou NDC qui regroupe au max
normaliser avant de chercher dans les chaines
certains unicode sont représentés différemment selon le LOCALE (c’est la life)
Guillaume nous parle du jeune projet LangChain4J, inspiré du projet Python LangChain, qui permet d’orchestrer différents composants d’une chaine d’IA générative
Grâce à ce projet, les développeurs Java ne sont pas en reste, et n’ont pas besoin de se mettre à coder en Python
LangChain4J s’intègre avec différentes bases vectorielles comme Chroma ou WeAviate, ainsi qu’une petite base en mémoire fort pratique
LangChain4J supporte l’API PaLM de Google, mais aussi OpenAI
Il y a différents composants pour charger / découper des documents et pour calculer les vector embeddings des extraits de ces documents
pas de partie de confiance en dehors du OIDC provider.
OIDC lie une identité a une clé de chiffrement via une extension du id token.
OIDC devient une preuve de possession
purement client side via la signature du id token
ils utilisent le nonce pour stocker la clé publique et la signer cryptographiquement
vs Sigstore: plus d’élément central comme le transparency log et l’autorité de certification
pour le projet sigstore, ils n’ont pas utilisé cette architecture parce que la privacy des identités notamment en cas de renommage et sur le long terme n’est pas respecté
la rotation de clés et la partie client side devient beaucoup plus complexe (OIDC quoi) et ouvre des risques de sécurité (bugs d’implémentation)
la clé des OIDC providers est rotaté et ce n’est pas expliqué dans le flow OpenPubkey
la complexité passe de server side a client side (vu que le nonce est la clé du système)
le client notamment va devoir tracker les clés de signature des providers OIDC tout le temps (ou un system devra le faire)
le id token typiquement a plus d’infos qui vont leaké en tant que certificat du truc signé (privacy)
Rust et JavaScript voient leur popularité lorsqu’ils ciblent wasm
Wasm est toujours beaucoup utilisé pour le développement web, mais aussi pour le serverless ou comme host pour système de plugins
L’étude montre que les développeurs sont intéressés par les threads, le garbage collection et le nouveau modèle de composants
Côté WASI, toutes les propositions sur le thème I/O retiennent l’attention, comme : le support de HTTP, du filesystem, ou les sockets… pourtant, c’est ce que l’approche WASIX proposait, même si elle n’a pas été très bien reçue par la communauté
Depuis quelque temps, beaucoup de personnes se demandaient où en était AWS dans le domaine GenAI. La réponse vient de tomber.
Plutôt que de développer sa propre technologie comme le fait Google, Amazon adopte la stratégie de Microsoft avec OpenAI en investissant dans un pure player en lui fournissant de la puissance de calcul.
AWS deviendra le principal fournisseur cloud d’Anthropic, en fournissant son infrastructure à base de puces AWS Trainium et Inferentia
La technologie d’Anthropic sera ajoutée au catalogue d’Amazon Bedrock. Les entreprises pourront personnaliser et affiner les modèles sur AWS
Claude 2 propose une fenêtre contextuelle de 100 000 tokens, que les entreprises pourront utiliser.
Dans le cadre de cet investissement, Amazon acquiert une participation minoritaire dans @AnthropicAI. La structure de gouvernance d’Anthropic reste inchangée
On a vu l’émergence de nouvelles bases de données de type vectoriel ces deux dernières années : Pinecone, Milvus, Weaviate, Qdrant, etc
Mais les DB existantes sont toutes en train de rajouter le support des vecteurs dans leur moteur
Pour la “data gravity” : c’est plus facile d’avoir ses données au même endroit que d’en avoir dans différentes bases malgré leur corrélation
Pour capturer le use case de “Retrieval Augmented Generation”, en utilisant les Large Language Model pour récupérer de l’info dans ces bases de données vectorielles
Je pense qu’on verra aussi les DB vectorielles ajouter également plus de fonctionnalités de requêtage qui leur manquent
OpenAI a annoncé de nouvelles fonctionnalités vocales et d’image pour ChatGPT
OpenAI a publié un article décrivant leurs efforts de test avec GPT-4V. Ils ont utilisé le modèle dans un outil appelé Be My AI, qui aide les personnes malvoyantes en décrivant le contenu des images: https://cdn.openai.com/papers/GPTV_System_Card.pdf
L’article résume l’évaluation du modèle GPT-4V par OpenAI, qui inclut des tests de comportement, de sécurité, et de capacité médicale, mais conclut que le modèle n’est pas approprié pour des fonctions médicales.
outil de CI/CD qui evite de repeter les taches etc
comme startup tu ne release aps un produit mature et complet en fonctionalité
mais peut etre 10x sur une chose specifique qui peut faire oublier les manques a certains
quand tu captures ces premiers, tu investis et etend, et tu repetes
si au debut ce differentiateur n’attire personne, ajouter des features ne va pas aider, c’est une recette pour construire quelque chose que personne ne veut
ils ont construit leur plan de domination en etapes independantes, des pproduits plus focalisés
et le premier produit “gratuit” ne canibalisait pas les seconds produits car ils addressaient des problemes differents (donc pas de risque sur le business model)
le premier produit construit par une personne a ete beaucoup adopté
le deuxieme (remote workers) a aaussi été adopté avec des gens qui faisaient en DIY, et quand ils ont fait une offre managée, les gens sont venus
les CI traditionels lancaient le job et le reste était délégué a Earthly et Earthly Sattelite (le coeur du build)
il ne restait plus qu’a allumer le troisieme etage Earthly CI mais c’est parti en cacahuete
la population interessée n’était pas des fans qui avaient deja fait le job du produit, ils demandaient en quoi la CI etait differente et le cout de migration et ils n’ont jamais pu gagner
au lieu d’une grass root install, il y avait un long mur de migration a passer
la clé c’est que vendre aux devs avec un GTM direct ne marche aps, ils doivent essayer et adopter par eux meme
developpeurs vont acheter un outil de dev mais tu ne peux pas leur vendre
horcrux : chiffrer un fichier en plusieurs morceaux, et il faut avoir un certain nombre de fragments pour rassembler le fichier entier, mais ne nécessite aucun mot de passe https://github.com/jesseduffield/horcrux
ils demandent une clarification sur les contraintes réglementaires
notamment d’exclure les fondation / associations et laisser le poids sur les sociétés qui fourniraient les projet open sources des fondations dans le cadre d’un accord commercial, pas juste de le fournir en téléchargement
réutiliser la validation de compliance des sociétés commerciales par les fondations
Emmanuel, Arnaud, Vincent et Antonio discutent inbox zero, les profiles Java SE, l’étude de ZeroTurnaround sur la population Java, le côté obscure des microservices. Ils se penchent aussi sur l’impact du procès Oracle / Google et la nouvelle licence open source proposée par Oracle. Un grand merci à CloudBees pour le double sponsoring épisode / web.
CloudBees est le leader des solutions d’intégration continue et de delivery continu autour de Jenkins, accélérant le cycle de développement et permettant aux organisations de concrétiser les attentes d’agilité d’aujourd’hui. Basé sur la force du projet open source Jenkins, la plateforme de delivery continu de CloudBees fournit un large choix de solutions, en interne ou hébergée dans le Cloud, qui assurent les besoins de sécurité, élasticité et de maintenabilité requis dans un contexte d’entreprise.
LCC 222 - Interview sur Android avec Pierre-Yves Ricau et Romain Guy - l'intégrale
02:21:28
Dans cet épisode, Emamnuel s’assoie autour de la table avec Romain Guy et Pierre-Yves Ricau pour discuter Android. Cela fait longtemps que la partie 1 est sortie. Désolé de ce retard. Du coup cet épisode reprend l’entièreté de l’interview. Pour ceux qui se rappellent bien de la partie 1, vous pouvez sauter à la minute 62 environ.
LCC 220 - Interview sur le métier de CTO avec Dimitri Baeli
01:26:38
Dans cet épisode, Dimitri Baeli est venu discuter avec Audrey et Emmanuel du métier de CTO et de Tech Rocks, la conf qui leur est dédiée (prochaine édition le 4 décembre 2019 à Paris).
Tech.Rocks c’est avant tout la volonté de construire un réseau de leaders tech qui échangent sur leur problématiques. Activités :
Une conférence annuelle: 4 Dec
Des Meetups mensuels à Paris (et j’espère en province en 2020)
Un Slack avec 500 CTOs
Un groupe dit « Core » à vocation de Think Tank pour explorer les questions difficiles des grosses équipes. Un groupe restreint pour vraiment bien se connaître en croissance maîtrisée.
Un podcast et quelques publications (salaires des CTOs)
Les 6 aspects du metier
Vision et decision Tech
Quels sont les “nice to have” dans une expérience professionnelle pour devenir CTO ?
Est ce qu’un CTO doit maîtriser toute la stack ?
Orga equipes (agilite, usine logicielle)
Responsabilité dans le choix de l’organisation des équipes
Posture du CTO (Orga perso, négociateur, exemplaire, CoDir, …)
C’est quoi la journée type d’un CTO ?
Est ce que l’on peut être CTO et avoir une vie perso ?
Quelles sont les différentes facettes du rôle de CTO ?
Management & Leadership
Quel est le rôle du CTO en terme de management ?
Et si tu dois te faire accepter par une équipe déjà constituée ?
Board : Quand tu rentres dans une boite, comment tu vérifies que tu as carte blanche.
Le recrutement
Comment monter ton équipe au tout départ ? Tu prends plutot quelques personnes chacunes spécialisées dans son truc ou tu prends des profils plus généralistes ?
Comment identifier les profils dont tu as besoin quand l’équipe grossit ?
Product Management (implication)
La feature pour le client X vs travail plus générique et réutilisable par tous les clients
LCC 121 - Interview sur la recherche avec Pierre Sutra
01:02:35
On est quasi tous “opérationnels”. On code une appli au quotidien pressé par les délais et le métier. On fait tomber en marche et on passe à autre chose.
Comment ça se passe du côté de la recherche ? Théories fumantes sur tableau noir et en blouse blanche ? Plongeons dans le quotidien de Pierre, chercheur à l’université de Neuchâtel.
Ouvrons un peu les ponts entre différentes communautés.
Les logs structurées (souvent en JSON) vous permettent de les envoyer facilement vers des backends comme Elastic, AWS CloudWatch…
Vous pouvez les lier à du reporting et de l’alerting.
Spring Boot 3.4 prend en charge la journalisation structurée par défaut. Il prend en charge les formats Elastic Common Schema (ECS) et Logstash, mais il est également possible de l’étendre avec vos propres formats.
Vous pouvez également activer la journalisation structurée dans un fichier. Cela peut être utilisé, par exemple, pour imprimer des journaux lisibles par l’homme sur la console et écrire des journaux structurés dans un fichier pour l’ingestion par machine.
Réduction significative de la consommation de mémoire (–56%).
Amélioration des performances pour les tableaux réactifs de grande taille.
Résolution des problèmes de valeurs calculées obsolètes et de fuites de mémoire.
Nouvelles fonctionnalités:
Reactive Props Destructure: Simplification de la déclaration des props avec des valeurs par défaut.
Lazy Hydration: Contrôle de l’hydratation des composants asynchrones.
useId(): Génération d’ID uniques stables pour les applications SSR.
data-allow-mismatch: Suppression des avertissements de désynchronisation d’hydratation.
Améliorations des éléments personnalisés: Prise en charge de configurations d’application, d’API pour accéder à l’hôte et au shadow root, de montage sans Shadow DOM, et de nonce pour les balises.
useTemplateRef(): Obtention de références de modèle via l’API useTemplateRef().
Teleport différé: Téléportation de contenu vers des éléments rendus après le montage du composant.
onWatcherCleanup(): Enregistrement de callbacks de nettoyage dans les watchers.
Data et Intelligence Artificielle
On entend souvent parler de Large Language Model quantisés, c’est à dire qu’on utilise par exemple des entiers sur 8 bits plutôt que des floatants sur 32 bits, pour réduire les besoins mémoire des GPU tout en gardant une précision proche de l’original. Cet article explique très visuellement et intuitivement ce processus de quantisation : https://newsletter.maartengrootendorst.com/p/a-visual-guide-to-quantization
la tempoerature va ecraser la probabilite du prochain token mais il reste des variables: approximnation des calculs flottants, stacks differentes effectuants ces choix differemment, que faire en cas d’egalité de probabilité entre deux tokens
mais il y a d’atures apporoches de configuiration des reaction du LLM: top-k (qui evite les tokens peu frequents), top-p pour avoir les n des tokens qui totalient p% des probabilités
un article qui explique à quoi ressemble cette nouvelle syntaxe déclarative de Gradle (en plus de Groovy et Kotlin)
Quelques vidéos montrent le support dans Android Studio, pour le moment, ainsi que dans un outil expérimental, en attendant le support dans tous les IDEs
L’idée est d’éviter le scripting et d’avoir vraiment qu’une description de son build
Cela devrait améliorer la prise en charge de Gradle dans les IDEs et permettre d’avoir de la complétion rapide, etc
Puppeteer, la bibliothèque d’automatisation de navigateur, supporte désormais officiellement Firefox dès la version 23.
Cette avancée permet aux développeurs d’écrire des scripts d’automatisation et d’effectuer des tests de bout en bout sur Chrome et Firefox de manière interchangeable.
L’intégration de Firefox dans Puppeteer repose sur WebDriver BiDi, un protocole inter-navigateurs en cours de standardisation au W3C.
WebDriver BiDi facilite la prise en charge de plusieurs navigateurs et ouvre la voie à une automatisation plus simple et plus efficace.
Les principales fonctionnalités de Puppeteer, telles que la capture de journaux, l’émulation de périphériques, l’interception réseau et le préchargement de scripts, sont désormais disponibles pour Firefox.
Mozilla considère WebDriver BiDi comme une étape importante vers une meilleure expérience de test inter-navigateurs.
La prise en charge expérimentale de CDP (Chrome DevTools Protocol) dans Firefox sera supprimée fin 2024 au profit de WebDriver BiDi.
Bien que Firefox soit officiellement pris en charge, certaines API restent non prises en charge et feront l’objet de travaux futurs.
Problème N+1 (récupération de données et autorisation)
Impact sur la mémoire lors de l’analyse de requêtes invalides
Complexité accrue:
Couplage entre logique métier et couche de transport
Difficulté de maintenance et de tests
Solutions envisagées:
Adoption d’API REST conformes à OpenAPI 3.0+
Meilleure documentation et sécurité des types
Outils pour générer du code client/serveur typé
Deux approches de mise en œuvre d’OpenAPI:
“Implementation first” (génération de la spécification à partir du code)
“Specification first” (génération du code à partir de la spécification)
retour interessant de quelqu’un qui n’utilise pas GraphQL au quotidien. C’était des problemes qui devaient etre corrigés avec la maturité de l’ecosysteme et des outils mais ca a montré ces limites pour cette personne.
qu’est ce qu’un EDR? Un système Endpoint Detection and Response a pour but de surveiller votre machine ( access réseaux, logs, …) pour detecter des usages non habituels. Cet espion doit interagir avec les couches basses du système (réseau, sockets, logs systems) et se greffe donc au niveau du noyau du système d’exploitation. Il remonte les informations en live à une plateforme qui peut ensuite adapter les réponse en live
LCC 218 - Le cloud souverain est mort, vive le cloud souverain !
01:52:02
Dans cet épisode, Arnaud déclare forfait et laisse Guillaume et Audrey discuter en tête à tête des nouveautés de Spring, Quarkus, JHipster, Kubernetes ou encore v8 mais aussi Cloud Souverain, reconnaissance faciale, élections présidentielles américaines et GAFAM.
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.
avec la grosse release de 1.18, avec 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 build go sont vérouillés vu qu’ils reconstruisent tout et qu’ils dépendent d’un sha1 pour les dependences git et beaucoup plus de choses ici https://go.dev/blog/supply-chain
workspace qui permet de travailler sur plusieurs modules en parallèle sans avoir a changer tous les go.mod à la main
Une librairie utilitaire pour assister dans le développement d’applications bancaires
Support des codes ISO des pays, des monnaies, des codes BIC, des IBAN, et aussi du calendrier des jours fériés des banques internationales
Spring Modulith, un projet expérimental d’Oliver Drotbohm, qui permet de s’assurer de la structure et 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
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 dependences jakartaee
peut essayer facilement depuis la CLI quarkus create app --stream=3.0
quelques casse de compatibilités attendues mais minimisées, spécialement dans le core
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 ca, parce que aux cas limites des choses peuvent mal se passer
cas 1: on atteind 100% d’usage. Le process avait définit un request mais en fait a besoin de plus en pratique, et là paf il se met à mal fonctionner, donc dès que votre systeme stresse, vous avez des erreurs en cascade
cas 2: un ou plusieurs noeuds sont recyclés, ce qui veut dire que vous avez beaucoup de redémarrages de pods et du coup ca met la pression sur le CPU, tester ces cas là, certaines applis qui démarrent trop lentement ont tendance à tomber en cascade
Mais encore release à la main par les ingenieurs et tout ou rien pour une application
idealement: push dans git et oublie, prometheus metriques dirigent le rollout basé sur des alertes génériques, garder le sisteme ouvert pour des stratégies de rollout alternatives dans le futur
basé sur Argo Rollouts et sur des erreurs generiques (20% de calls en erreur, beaucoup d’erreurs de base de donnees, crashs
notifie dans slack en async du success ou de l’echec
interessant de voir qu’ils s’appuient sur des metriques simples
Lessons apprises
migration est un gros job
automatiser la migration au maximum meme si c’est un one shot
change le moteurt avant de changer l’UX (progressive rollout) ca simplifie les chosez
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
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
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 oeuvre 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 le long de sa route, à la dépendance à plein d’autres services, au fait que ce n’est pas la personne qui “vote” qui devrait payer l’action mais celui 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 pour fonctionner, et du Cloud
L’autre déconvenue est sur le prix de chacune des transactions, qui est finalement exorbitant par rapport à une approche Web 2.0 classique
Décentralisation amène de la lenteur (latence)
Objectifs du Web3 c’est d’etre le propriétaire de ses processes et ses data et de mettre des agents qui interagissent avec des données
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)
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
améliorations cli: --also-make , --resume (plus besoin de pré ciser d’où le build doit recommencer), --non-recursive, --fail-on-severity
Utilisation du même timestamps 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)
designer a 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 desalignement 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
Avant le premier contact
Signature et premiere tâche transactionnelle (bien choisir la tache pour etre assez simple et ce que l’utilisateur répète)
Premier moment de plaisir (regarder les points contre intuitifs dans les données, ou les cas d’utilisation en echec)
l’indifférence genre 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é par ça (barre de recherche en haut)
Toujours migrer son audience vers le chemin de moindre resistance
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 decisions du client et les questionner. (Heuristiques par defaut?)
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 credit tout de suite)
s’ils investissent dans leur experience (vote), ils sont plus engagés et loyaux: friction positive : sense d’appartenance
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
Pour ma part je n’ai pas de compte Mastodon (je n’utilise pas twitter non plus). J’ai rapidement regardé ce matin ça n’est pas facile de trouver une instance : celles que j’ai regardé ont fermé les inscriptions (d’après ce que j’ai pu lire à 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). Du coup j’ai pour le moment abandonné l’idée de me créer un compte.
Le site JavaBubble liste plein de développeurs Java qui ont maintenant un compte sur Mastodon https://javabubble.org/
LCC 231 - Interview sur Vim avec Romain Lafourcade
01:45:55
Romain Lafourcade échange avec Guillaume et Emmanuel sur Vim: comment il y est venu, ce qu’il a d’unique, comment l’appréhender, et bien d’autres choses encore.
GitHub de Romain Je m’appelle Romain Lafourcade. Je suis Graphiste de formation et j’ai chopé le virus du développement en montant mon premier site en 1999. Je suis Développeur pour de vrai depuis 2007. J’ai beaucoup fait de JS, bien sûr, ainsi que du Flash et du Silverlight. Ça fait quelques années que je me concentre sur React et Vue.js.
Aujourd’hui je suis chez Publicis Sapient France, une “agence digitale” de premier plan où je m’amusais déjà très bien jusqu’à l’arrivée des ex-Xebians. Et maintenant c’est encore mieux. Je participe actuellement à la préparation d’une conférence “front” pointue pour la fin de l’année : FrontSide.
Mes intérêts personnels gravitent autour de la programmation fonctionnelle : Haskell, Elixir.
Vim est un éditeur de texte orienté programmation, puissant et non-conformiste.
Que peut on dire de la différence entre un IDE et un éditeur ?
Dans son expression la plus simple, un éditeur de texte est un outil permettant l’édition de fichiers de texte brut. Certains sont “standalone”, comme Vim, Nano ou Gedit, se concentrant pour la majeure partie sur des questions liées à l’édition de texte et déléguant les autres tâches liée au développement logiciel à d’autres outils “standalone”. C’est la vision UNIX traditionnelle :
“Écrivez des programmes qui effectuent une seule chose et qui le font bien.”
D’autres sont “intégrés” avec d’autres outils pour offrir une expérience plus “clé en main”, les IDEs.
L’histoire de Vim
Vim est né au début des années 90 sur Amiga, pour la même raison que tous les autres clones de vi : l’impossibilité légale d’utiliser vi sur tel ou tel système. De tous les clones, c’est celui qui s’est le plus démarqué de l’original et c’est le seul qui est encore développé activement en 2020.
Les archéologues en herbe trouveront quelques liens sur le sujet en bas de page.
Disponibilité de Vim sur les distros de base
Un des arguments les plus souvent mis en avant pour convaincre les mécréants de l’utilité d’apprendre Vim est “Vim est partout”.
Mais l’ubiquité légendaire de Vim est un mythe. Ce qui est disponible dans tous les dérivés d’UNIX, c’est la commande vi. Le programme qui assure le boulot peut être Vim comme il peut être Elvis, Nvi, Busybox vi ou même le vi original. Et même quand c’est Vim, c’est souvent un build limité. Du coup, connaître Vim n’est peut-être pas aussi utile que connaître vi.
Et c’est sans compter sur le fait que le système d’exploitation le plus largement utilisé, n’a pas de commande vi ou vimdu tout.
Vim vs emacs: la guerre ancestrale
et aussi débile que toutes les guerres ancestrales.
Les variantes de Vim
Neovim est un fork récent promettant une modernisation des processus de développement et du code.
Vim au quotidien
Pas de curseur?????
On a bien un curseur, mais les dispositifs de pointage sont rarement activés par défaut. Même si c’est tout à fait possible d’utiliser la souris ou le trackpad (:help 'mouse'), on est clairement dans un monde centré autour du clavier.
Les modes (normal, insert, visual, etc.)
L’édition modale, un concept initié par vi, ne fait pas l’unanimité. L’idée, c’est qu’on est toujours dans un mode réservé à une certaine catégorie d’activités. Un des effets positifs, et aussi un des repoussoirs de ce mécanisme est que ça permet d’avoir un vocabulaire plus varié et expressif que dans un éditeur classique. Le déplacement du curseur, par exemple, se fait traditionnellement avec une combinaison de 4 touches de directions et 1 modificateurs, donc 8 déplacements possibles : 1 caractère vers la droite ou la gauche, 1 mot vers la droite ou la gauche, 1 ligne vers le haut ou le bas, 1 paragraphe vers le haut ou le bas. C’est très pauvre, même en ajoutant Home, End, Page Up et Page Down. Dans vim, on a tout ça, bien sûr, plus “début du mot”, “fin du mot”, “prochaine/précédente occurrence de ”, “prochaine/précédente occurrence de ”, “ligne numéro X”, “n lignes vers le haut ou le bas”, “haut/bas/milieu de la fenêtre”, “marqueur X”, etc. Rien jjque ça c’est dingue. Et comme on est dans un éditeur modal, tous ces mouvement peuvent être utilisés avec des opérateurs et là c’est la folie.
Les modes les plus couramment utilisés sont :
le mode normal, le mode par défaut quand on fait $ vim foo.txt, qui est utilisé pour naviguer, chercher, copier, coller, etc.
le mode d’insertion, qui permet… d’insérer du texte dans le document,
les modes visuels, qui permettent de sélectionner une portion de texte,
le mode ligne de commande, qui permet d’utiliser les commandes héritées d’Ex : :write, :s, :g, etc.
Le concept de verbe / opérateur + movement + destination
C’est pour moi LA killer feature de Vim, surtout visible dans les modes normal et visuels. En gros, le modèle d’interaction est basé sur la notion de langage. Il y a :
des “opérateurs”, des verbes conjugués à l’impératif comme “efface”, “copie”, “remplace”,
des compléments d’objet directs comme “la ligne 78”, “ce texte entre parenthèses”, “d’ici à la fin du paragraphe”,
des compléments d’objet indirects comme “en dessous de la ligne 27” ou “au début du buffer”,
et des compléments circonstanciels comme “10 fois”.
Avec tout ça, on donne des commandes à la machine selon une syntaxe proche de celle d’un langage parlé et elle obéit : “colle le texte contenu dans le presse papier 50 fois”, “copie (d’ici) jusqu’à la prochaine parenthèse ouvrante”, etc. Dans un éditeur de texte classique, la première se dit “ctrl+v ctrl+v … ctrl+v”, ce qui n’a presque rien à voir avec la tâche telle qu’imaginée : “colle truc 50 fois” est devenu “colle colle … colle”, ce qui est très peu expressif. Notre pensée abstraite de haut niveau doit être transformée en une série d’action concrètes de bas niveau qui n’ont que très peu de sens et souvent rien à voir avec la pensée haut niveau. Dans Vim, la première commande se dit “50p”, ce qui est très proche de la tâche telle qu’imaginée.
La syntaxe est peut-être un peu sèche et les éléments sont peut-être ordonnés différemment qu’en français, mais ça reste tout à fait abordable et très proche de ce qu’on a dans la tête. L’étape suivante est exactement la même que lorsqu’on apprend une langue étrangère : penser dans la langue.
Apprendre Vim, c’est apprendre une grammaire simple et un vocabulaire expressif qui s’enrichit au fur et à mesure où on avance.
La notion de range
Vim hérite plein de trucs de vi, qui hérite lui-même plein de trucs de ex. Dans vim, toutes les commandes qui commencent par un “deux points” sont des “commandes Ex”, qui agissent sur des lignes car ex était un éditeur de ligne. Comme dans ex, ces commandes prennent des adresses (une seule ligne) et des ranges (de telle ligne à telle autre). Une ligne peut être indiquée par son numéro, par un offset, par une recherche, par un marqueur, etc. C’est un outil extrêmement puissant.
Par exemple, la commande suivante copie les lignes 10 à 24 en fin de document :
:10,24t$
Celle-ci rassemble toutes les lignes contenant const dans la fonction courante vers le haut du corps de la fonction :
:?func?,/^}/g/const/m?func?
C’est d’une élégance insoutenable.
D’autres concepts de base (window, tab, buffer, split, etc.)
On a toujours au moins un “buffer”, une “fenêtre” et une “tab page”. Un buffer peut être affiché dans une ou plusieurs “fenêtres”, une “tab page” est un rassemblement de “fenêtres”. Contrairement à la plupart des éditeurs de texte il ne peut pas y avoir de relation 1-à–1 entre un buffer et une fenêtre ou entre un buffer et une tab page. C’est un piège dans lequel tous les nouveaux tombent.
Tu l’utilises pour quels genre d’édition
J’utilise Vim de deux façons différentes : de longues sessions de programmation et des éditions rapides (config, git commit, etc.), pratiquement tout le temps dans un terminal.
Les colorschemes
La dernière fois que j’ai checké il y en avait littéralement des milliers, du simple qui marche partout, utilisé par quelques barbus ronchons, à l’usine à gaz buggée à mort, utilisée par la dernière génération de boutonneux. J’en ai réalisé quelques uns, même, comme Apprentice, ainsi qu’un modèle simple à utiliser. Maintenant qu’on peut utiliser toutes les valeurs hexadécimales, même dans le terminal, c’est la fête.
Pour trouver des colorschemes, je recommande VimColors.
Les binding Vim dans les IDEs
Peut-être utile pour accompagner l’apprentissage de Vim mais passé un certain niveau c’est l’uncanny valley. C’est un des problèmes causés par des années de Vim, d’ailleurs : ça rend exigeant.
Le terminal
Le nerf de la guerre d’un Vim qui fonctionne tmux?
Vim écosystème
La gestion des plugins
Si on a beaucoup de plugins ça peut devenir compliqué sans plugin manager. Le plus populaire est vim-plug.
YouCompleteMe, beaucoup plus que de l’autocompletion.
Vim et les plugins VSCode (via LSP)
Les spécifications de pas mal de fonctionnalités de Visual Studio Code sont actuellement publiées, ce qui permet à d’autres outils de développement de bénéficier de l’étendue de son ecosystème. Il y a LSP, par exemple, qui permet d’implémenter des serveurs pour n’importe quel langage et des clients pour n’importe quel éditeur. Les clients à suivre pour Vim son lsc et CoC. Peut-être aurons-nous une intégration native un jour ? Il y a aussi DAP qui est utilisé par Vimspector pour fournir une interface de débogage avancée.
La navigation entre fichiers
Un faux problème, souvent résolu en mode “brute force” par manque de volonté d’apprendre à se servir des fonctionnalités de base. Du coup on a des dizaines de plugins fantaisistes et des générations de vimmers superficiels. C’est triste. En vrai, :edit, :find et :buffer sont rapides et versatiles. Il suffit de prendre le temps d’apprendre à s’en servir.
Il existe un nombre hallucinant de plugins pour naviguer les fichiers alors que c’est si simple et rapide avec les outils natifs.
La vérification orthographique
La fonctionnalité est incluse de base. Il faut néanmoins l’activer avec :help ’spell’ et, si on veut de l’aide pour autre chose que de l’anglais, installer des dictionnaires. Ça sonne plus compliqué que ça ne l’est vraiment.
gg=G pour réparer l’indentation d’un buffer en entier
:help ’equalprg’ pour indiquer à Vim quel programme externe utiliser
Paramètres custom par fichier via modeline
Voir :help modeline pour des exemples. Je ne suis pas hyper fan en général que je trouve ça un peu sale de mélanger data et metada mais ça peut être bien en bas d’un fichier Markdown dont on sait qu’il va être édité dans Vim :
[//]: # ( Vim: set spell spelllang=en: )
En pratique, je suggère plutôt editorconfig pour les réglages d’indentation et compagnie.
Vim et git
Fugitive, mentionné plus haut, est très populaire. Pour ma part, je préfère garder mon éditeur de texte pour éditer du texte et utiliser d’autres outils spécialisés pour d’autres tâches spécialisées. J’aime beaucoup tig, que j’utilise au jour le jour depuis des années, et j’ai découvert git-jump récemment, qui a fait une entrée fracassante dans mon workflow.
Sinon, pour les commandes basiques, un simple :!git fait largement le taf.
Les macros
Une macro est une séquence de commande. On peut enregistrer une macro dans le registre q :
qq 02wciwfoo q
et la rejouer sur plusieurs lignes, par exemple :
:23,45normal! @q
Mais avec un peu de pratique on peut complètement zapper la phase « enregistrement » :
:23,45normal! 02wciwfoo
Les macros sont un outil d’automatisation extraordinaire qui épate facilement le spectateur. Voir :help complex-repeat.
Copier dans le buffer de l’OS (ctrl+c ctrl+v)
Pour ça, l’idéal est d’avoir un Vim compilé avec la fonctionnalité “clipboard”. Si c’est pas possible on peut bricoler des trucs avec xclip/pbcopy/etc. ou utiliser les fonctionnalités de copier/coller du terminal.
Le clipboard système est représenté par le registre + dans vim. Donc copier dans le clipboard: "+y, et ensuite coller, "+p. Note que " est la sélection de registre.
Remplacer via des expressions régulières
La substitution, basée sur les expressions régulières ou pas, est une pratique courante dans Vim. Par exemple, pour remplacer toutes les occurrences de java par kotlin dans le buffer courant :
Readline, la bibliothèque utilisée par bash pour gérer l’invite de commande, utilise des raccourcis inspirés par Emacs par défaut. On peut changer ça en ajoutant la ligne suivante dans ~/.inputrc:
set editing-mode vi
Personnellement, je préfère garder les raccourcis par défaut et éditer mes commandes directement dans Vim, avec Ctrl-x Ctrl-e. Si vous ave mis le mode vi, alors pour éditer la commande dans vim, tapez ESCv.
Vimdiff
On peut utiliser Vim pour afficher des diffs côte à côte et même pour gérer les merge conflicts dans Git.
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.
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.
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 developper en local un projet utilisant puppet.
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 !
A quoi ça sert ? pour soi même pour s’approprier de l’information, synthétiser ce que l’on apprends, 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
Guillaume et Antonio interviewent David Gageot à propos de Doctolib, l’entreprise, mais surtout ses différents produits, l’architecture et comment elle a géré la prise des rendez-vous pour les vaccins anti-covid.
Docker, Google, son arrivée chez Doctolib en octobre 2020.
Doctolib, l’entreprise
Les produits, les équipes, la distribution de l’entreprise, son organisation, le modèle business (licence vendue aux professionnels de la santé).
La sécurisation des données
End–2-End-Encryption pour les documents entre patients et médecins : ça veut dire que Doctolib techniquement ne peut pas lire les documents hébergés sur ses serveurs? Mais comment ça marche, qui génère les clés de chiffrement, et où sont-elles stockées?
Pourquoi AWS vs un OVH ou autre acteur français? Ou un Google …
La stack technique
Le machine learning. Pourquoi? Comment?
Ruby on rails, React, Postgres, S3, …
Le sizing de l’infrastructure, 800 pods K8s qui font tourner le front Rails au dessus d’une grosse base postgresql
La méthode agile et l’organisation des développements pour cibler 3 déploiements par jour en moyenne.
CI sur 700 nœuds sur K8s avec de nombreux tests end-to-end. Feature-Flags sur les fonctionnalités.
La vaccination
Seulement 2% de prises de rendez-vous pour les vaccins mais un public super exigeant.
Comment améliorer l’UX pour ce use case spécifique?
Quels ont été les défis de montée en charge pour les inscriptions? Des flux anticipés, attendus, inattendus?
L’impact de vite ma dose et tout l’ecosystème qui s’est mis en place
Quelle est la relation avec vite ma dose? Humaine, systèmes etc. Impact des médias? Impact de CovidTracker?
Comment gérer la cohérence des données, la gestion des caches, …?
L’implantation de Doctolib
Quels secteurs (médecins généraux, kiné, hôpitaux) utilisent le plus Doctolib?
Doctolib et l’administration française, la presse, …
Comment s’est passé la relation avec l’administration?
Comment gérer la tension sur des sujets importants comme la vie privée, la sécurité, la souveraineté …
Les questions des auditeurs
Que se passerait-il en cas de rachat? Que deviendrait les données?
Doctolib, la concurrence et le futur
En France, leader sur la prise de rendez-vous, mais en compétition sur de très nombreux autres produits (gestion de la patientèle …).
Les Cast Codeurs sont rejoints par la moitié de Ninja Squad pour discuter poids de la JVM, Java gratuit ou payant, Angular 34, ransomware, TDD = t’es plus lent, Skynet est mort vive Google Brain et Facebook.
Cédric Exbrayat vous avait parlé de notre ebook sur Angular dans l’épisode 142 : 3500 lecteurs, français/anglais, sans DRM, à prix libre, et avec dons à l’EFF.
Depuis, il existe une édition professionnelle, le Pack Pro :
~30 exercices, une application complète
énoncé, squelette du projet, et tests unitaires fournis à chaque étape
les détails des soirées et la liste de ce qu’il faudra installer sur son portable pour la partie Hands-on / Hackergarten seront publiés sur le site du Paris JUG.
Emmanuel, Guillaume et Antonio discutent avec Stéphanie des nouvelles du front(y compris -end). On y parle garbage collector, microprofile, javascript et même d’antivirus Windows.
LCC 250 - Spécial Loi Société et Organisations avec Agnès Crepet et Tariq Krim, 2ème partie
00:53:10
L’actualité du mois de janvier était trop tentante pour passer à côté, voici donc un nouvel épisode spécial loi, société et organisation ! Cette fois Agnès, Audrey et Emmanuel ont demandé à Tariq Krim de les rejoindre pour commenter les conséquences des nouvelles CGU de WhatsApp et le départ en masse de ses utilisateurs et la déplateformisation de Donald Trump. Et comme il y avait beaucoup à dire sur le sujet, on vous en a fait deux épisodes.
Suite aux évènements au Capitole, Trump ainsi que 70000 comptes affiliés à QAnon ont vu leur compte supprimés de Twitter
A noter que Twitter a seulement agi à la fin du vote du congrès pour activer leur procedure.
Trump a bien essayé de se servir du compte officiel de la présidence américaine pour dénoncer la suppression de son compte mais ses tweets ont été dépubliés au motif qu’utiliser un autre compte pour éviter la suspension enfreint les règles de Twitter
S’en est suivi un effet domino qui a entrainé la suppression des comptes de Donald Trump et d’adhérents à QAnon sur Facebook, Instagram, Youtube, Snapchat, Twitch, Spotify, Shopify (site qui permettait la vente de merchandising) et d’autres.
on parle de déplateformisation à cause de cet effet domino mais aussi parce qu’on a assisté à une deuxième étape : Trump s’est ensuite rapidement replié sur Parler, une application utilisée par l’alt right mais l’application a été retirée des stores par Google et Apple. Son infra supprimée : c’est en effet Amazon Web Service qui a décidé de ne plus héberger le service sur sa plateforme. Ce serait peut-être lié d’ailleurs à une pétition d’employés d’Amazon, qui aurait pu influencer une telle décision. Pour Amazon les outils de modérations mis en place par Parler ne sont pas suffisamment efficaces. Cela pose la question de savoir si les services de clouds ont un droit de regard sur la façon dont une application est gérée?
Parler est hébergé par des russes. L’application a été financé par Rebekah Mercer qui est connue pour ses contributions aux organisations conservatrices et dont la famille a par ailleurs financé Cambridge Analytica.
clin d’oeil : Le fondateur de Piratebay ironisait sur le sort de Parler “ ”Pirate Bay, le site Web le plus censuré au monde, créé par des kids, géré par des personnes ayant des problèmes d’alcool, de drogue et d’argent, est toujours en activité après presque 2 décennies. Parler et Gab, etc. ont tout l’argent mais aucune compétence ni état d’esprit. Gênant."
Les expresssions et tags utilisés par les supporters de Trump ont baissés de 95% après le bannissement. (#FightforTrump, #HoldTheLine, March from Trump…)
D’après les chercheurs en désinformation il y a très peu de compte à la source (une vingtaine de comptes conservateurs dont celui de Trump) mais ceux ci sont qualifiés de “superspreader” car ils sont massivement repartagés, quelque soit le sujet.
Dans cet épisode Audrey et Arnaud sont ensemble en même temps! Et nous parlent de… tout. Plus particulièrement, de Java 9, de ce que veut dire une version, de Spring 5, de la domination de Kubernetes, de la réécriture de React sans tout casser et surtout de comment reprendre la main sur un terminal donc la connexion ssh s’est cassée et qui semble ne servir plus à rien. Et bien d’autres choses encore.
En cette période de confinement et de Coronavirus, les cast codeurs partagent et échangent leurs points de vue et conseil pour faire du télétravail. En espérant que cela vous aide un petit peu.
Dans cet épisode, nous avons comme invités Amelie Benoît et Manuel Cartier. Les deux explorent l’évolution de React au cours de la dernière décennie, mettant en lumière ses principaux principes et son impact sur le développement web. Amélie et Manuel discutent des caractéristiques fondamentales de React, comme la composition des composants et l’utilisation de la virtual DOM, ainsi que des tendances émergentes telles que l’adoption de React Hooks, et les React Server Components. Enfin, nous avons ses conclusions sur l’avenir de React et son rôle continu dans le paysage du développement web.
Amélie Benoît
Amélie Benoit est une développeuse web avec une expérience d’environ 10 ans dans le domaine. Son expertise se concentre principalement sur React et React Native, qu’elle maîtrise tant en JavaScript qu’en TypeScript.
En plus de son travail de développement, Amélie est une entrepreneuse communautaire active. Elle a fondé deux Meetups, dont l’un est dédié à React & React Native, démontrant ainsi son engagement envers la diffusion des connaissances et le développement de la communauté. Elle a également organisé des conférences, notamment lors de l’événement BDX I/O. Elle a aussi été oratrice a Devoxx France parmi d’autres conférences.
Actuellement, Amélie occupe le poste de tech lead manager chez Busbud, une scale-up canadienne spécialisée dans la comparaison et la vente de billets de bus inter-cités en ligne. Son rôle en tant que leader technique et manager la place au cœur des opérations de développement et de gestion de projet au sein de l’entreprise.
Grâce à son expertise technique, son engagement communautaire et son leadership, Amélie Benoit apporte une contribution significative au monde du développement web et de la technologie.
Manuel Cartier
Manuel est un développeur passionné, initié à l’art du code dès l’âge de 13 ans. Animé par cette passion précoce, il entreprend des études en développement de logiciels et gestion de projets, couronnées par l’obtention d’un BTS. Son parcours exceptionnel le conduit à se distinguer dès 2015 à l’école “42” de Paris, où il se classe premier parmi tous les candidats.
Avec une solide expertise en C++, Manuel s’investit dans l’encodage vidéo et audio chez Ateme, contribuant ainsi à un transcodeur utilisant des bibliothèques faites maison, équivalentes à x264. Passionné par la diffusion en direct, il partage régulièrement ses connaissances en informatique et donne des cours de développement web sur Twitch et YouTube.
Toujours avide d’apprendre et de repousser ses limites, Manuel se lance actuellement dans l’exploration de Rust, encouragé par la migration des projets C++ vers Rust chez Facebook. Parallèlement, il explore le développement d’applications mobiles avec Ionic Framework et AngularJS, expérience acquise lors de la création d’une start-up en 2015.
Son dernier rôle en tant que développeur Fullstack chez SigFox lui permet d’approfondir sa compréhension des mécanismes de l’IoT. Aujourd’hui, son attention se porte sur l’écosystème JavaScript et l’amélioration de l’expérience utilisateur, ainsi que sur le rendu 3D sur le web avec des technologies innovantes telles que Three.js et React-Three-Fiber.
LCC 101 - Devoxx France 2014 - ils reviennent et ils ne sont pas contents !
00:57:37
Les Cast Codeurs clôturent Devoxx France 2014 en direct. Ils y fêtent leur 100éme épisode et vous offrent une rétrospective biaisée mais sympathique de la conférence.
Arnaud, Antonio et Emmanuel discutent des actu du développeur en cette période pré estivale. Du Spring Boot, du Hibernate, du Vert.x, du web qui tombe, du Gradle 7, des mineurs et des méthodologies autour des pull requests.
Et le défaut était très bien caché. Les experts AWS n’avaient pas fait gaffe
C’était légal mais en tout petit dans les conventions
Différence entre télémétrie et les données en propre en général. Pas pour les iA ;)
Les services impacté AWS Terms 50.3 mention CodeGuru Profiler, Lex, Polly, Rekognition, Textract, Transcribe, and Translate. 60.4 also mentions this for SageMaker. 75.3 mentions this for Fraud Detector. 76.2 mentions this for Mechanical Turk and Augment AI.
En avril, nous avons vu le nombre d’heures de construction augmenter de 2 fois notre charge habituelle et à la fin du mois, nous avions déjà désactivé ~ 10 000 comptes en raison d’abus de minage. La semaine suivante, nous avons eu environ 2 200 mineurs supplémentaires.
Il faut contacter Docker pour les projets OSS de bonne volonté qui ont besoin de ce service
Copie privée basse sur les cassettes et VHS. Ensuite le stockage numérique explose
270 millions d’euros en France en 2017
Une commission administrative fixe les règles. Composée. de 6 usagers, 6 vendeurs de stockage, 12 ayant droits et un président au droit de vote et pro ayant droit. Rapport de force clair
Ils essaye de construire la vache à lait: prix basé sur la copie licite ou pas (cassé en 2008) ensuite argument de compression pour garder le barème haut
En théorie que pour les particuliers et procédure de remboursement pour les pros. Mais difficile à appliquer donc quasi jamais fait.
25% des gains financent des festivals et manifestations culturelles : instrument d’influence des élus locaux et pas si locaux
Efforts pour taper sur tous les disques durs nus, faire entrer dans le champ le stream ripping
Dans cet épisode, Emmanuel et Guillaume vous parlent de JDK 11, 12, 9, de GraalVM, de Kotlin, de Java et Jakarta EE, de serverless, de multi cloud, de consistance de données, de Linux, de l’Europe, de Bercy. Mais pas que !
LCC 127 - Interview sur HTTPS avec Tom Delmas - partie 2
01:02:48
Emmanuel et Arnaud continuent la discussion avec Tom Delmas sur HTTPS. Comment ça marche, quelles sont les faiblesses et les diverses protections. Mais aussi comment mettre en place concrètement un certificat sur un site web.
Cette partie rentre dans le concret et explique quelques astuces pour serrer les boulons.
L’obligation d’avoir HTTPS pour l’utilisation des services workers / le SSL dans les réseaux locaux perso (cas perso) - Davin kevin Des spécificités ou gotcha pour les websockets (wss://) ? (Pas a ma connaissance) - Maxence Warzecha
Audrey, Antonio et Emmanuel discutent du vote sur les modules Java (Jigsaw), font un retour de DockerCon, Red Hat Summit et Mix-IT et d’autres choses encore.
Cet épisode est relativement pauvre en IA, ouaissssssss ! Mais il nous reste plein de Spring, plein de failles, plein d’OpenTelemetry, un peu de versionnage sémantique, une astuce Git et bien d’autres choses encore.
Google Cloud a subi une panne de 12 heures dans la région europe-west3 (Francfort) le 24 octobre 2024.
La panne, causée par une défaillance d’alimentation et de refroidissement, a affecté plusieurs services, y compris Compute Engine et Kubernetes Engine.
Les utilisateurs ont rencontré des problèmes de création de VM, des échecs d’opérations et des retards de traitement.
Google a conseillé de migrer les charges de travail vers d’autres zones.
il y a eu une autre zone Europeenne pas mal affectée l’année dernière
Les cofondateurs estiment que les problèmes auxquels est confronté le Web ont changé et que d’autres groupes de défense peuvent désormais prendre le relais.
Ils estiment également que la priorité absolue doit être donnée à la passion de Tim Berners-Lee pour redonner aux individus le pouvoir et le contrôle de leurs données et pour construire activement des systèmes de collaboration puissants (Solid Protocol - https://solidproject.org/).
Taiwan Semiconductor Manufacturing Company (TSMC) a suspendu ses livraisons à Sophgo, un concepteur de puces chinois, après la découverte d’une puce fabriquée par TSMC dans un processeur AI de Huawei (Ascend 910B). Cette découverte soulève des préoccupations concernant des violations potentielles des contrôles d’exportation des États-Unis, qui restreignent Huawei depuis 2020.
Sophgo, lié à Bitmain, a nié toute connexion avec Huawei et affirme se conformer aux lois applicables. Toutefois, l’incident a conduit à une enquête approfondie de TSMC et des autorités américaines et taïwanaises
on a bien suivi les chants d’amour entre Sam Altman et Satia Nadella
ca c’est tendu ces derniers temps
deja avec le coup chez openAI où MS avait sifflé la fin de la récré
“on a le code, les données, l’IP et la capacité, on peut tout recrée”
OpenAi a un competiteur de Copilot et essaie de courtises ses clients
les apétits d’investissements d’OpenAI et une dispute sur la valeur de la aprt de MS qui a donné des crédits cloud semble etre aui coeur de la dispute du moment
GitHub Universe 2024 présente les nouveautés de l’année, notamment la possibilité de choisir parmi plusieurs modèles d’IA pour GitHub Copilot (Claude 3.5, Gemini 1.5 Pro, OpenAI o1).
Nouvelles fonctionnalités : GitHub Spark pour créer des micro-applications, révisions de code assistées par Copilot, sécurité renforcée avec Copilot Autofix.
Simplification des workflows avec les extensions GitHub Copilot
Facilitation de la création d’applications IA génératives avec GitHub Models
Une vulnérabilité a été découverte dans la génération de la clé de cache pour l’authentification déléguée AD/LDAP.
Les conditions:
MFA non utilisé
Nom d’utilisateur de 52 caractères ou plus
Utilisateur authentifié précédemment, créant un cache d’authentification
Le cache a été utilisé en premier, ce qui peut se produire si l’agent AD/LDAP était hors service ou inaccessible, par exemple en raison d’un trafic réseau élevé
L’authentification s’est produite entre le 23 juillet 2024 et le 30 octobre 2024
Après quelques heures / jours de rumeurs sur une faille 9.9/10 CVSS il s’avère que cela concerne que les système avec le système d’impression CUPS et cups-browsed
Désactivez et/ou supprimez le service cups-browsed.
Mettez à jour votre installation CUPS pour appliquer les mises à jour de sécurité lorsqu’elles sont disponibles.
Envisagez de bloquer l’accès au port UDP 631 et également de désactiver le DNS-SD.
Cela concerne la plupart des distributions Linux, certaines BSD, possiblement Google ChromeOS, Solaris d’Oracle et potentiellement d’autres systèmes, car CUPS est intégré à diverses distributions pour fournir la fonctionnalité d’impression.
Pour exploiter cette vulnérabilité via internet ou le réseau local (LAN), un attaquant doit pouvoir accéder à votre service CUPS sur le port UDP 631. Idéalement, aucun de vous ne devrait exposer ce port sur l’internet public. L’attaquant doit également attendre que vous lanciez une tâche d’impression.
Si le port 631 n’est pas directement accessible, un attaquant pourrait être en mesure de falsifier des annonces zeroconf, mDNS ou DNS-SD pour exploiter cette vulnérabilité sur un LAN.
L’Open Source Initiative (OSI) a clarifié les critères pour qu’un modèle d’IA soit considéré comme open-source : accès complet aux données de formation, au code source et aux paramètres d’entraînement.
La plupart des modèles dits “open” comme ceux de Meta (Llama) et Stability AI (Stable Diffusion) ne respectent pas ces critères, car ils imposent des restrictions sur l’utilisation commerciale et ne rendent pas publiques les données de formation
c’est au details de données de formation (donc pas forcement les données elle meme. “In particular, this must include: (1) the complete description of all data used for training, including (if used) of unshareable data, disclosing the provenance of the data, its scope and characteristics, how the data was obtained and selected, the labeling procedures, and data processing and filtering methodologies; (2) a listing of all publicly available training data and where to obtain it; and (3) a listing of all training data obtainable from third parties and where to obtain it, including for fee.”
C’est en echo a la version d’open source AI de la linux fondation
L’open washing désigne la pratique où des entreprises prétendent que leurs produits ou modèles sont open-source, bien qu’ils ne respectent pas les critères réels d’ouverture (transparence, accessibilité, partage des connaissances).
De grandes entreprises comme Meta, Google et Microsoft sont souvent accusées d’utiliser cette stratégie, ce qui soulève des préoccupations concernant la clarté des définitions légales et commerciales de l’open source, surtout avec l’essor de l’IA.
Morgan de Montréal Comment faire cohabiter plusieurs dépôts Git ?
Je m’explique : dans mon entreprise, nous utilisons notre dépôt Git (Bitbucket) configuré pour notre dépôt d’entreprise. Lorsque je souhaite contribuer à un projet open source, je suis obligé de modifier ma configuration globale Git (nom d’utilisateur, email) pour correspondre à mon compte GitHub. Il arrive souvent que, lorsque je reviens pour effectuer un commit sur le dépôt d’entreprise, j’oublie que je suis en mode “open source”, ce qui entraîne l’enregistrement de mes configurations “open source” dans l’historique de Bitbucket… Comment gérez-vous ce genre de situation ?
LCC 224 - Interview sur le burn out avec Géraldine Karila
01:20:52
Une personne sur 5 fera un burn out au travail pendant sa carrière. Géraldine nous raconte son burn out, comment cela s’est passé, son chemin pour s’en sortir et les recherches qu’elle a fait sur le sujet.
LCC 211 - Interview sur la virtualisation avec Quentin Adam
01:31:22
Quentin Adam (CEO de Clever Cloud) et Emmanuel discutent la stack de bas en haut, du physique au software sous l’angle de la virtualisation. Et bien sûr, une petite dérive de la conversation de temps en temps, parce qu’on le vaut bien.
Et par rapport à Kata Containers par exemple ? ou KVM ? Quels sont les avantages / inconvénients ? (mémoire, sécurité/sandboxing, rapidité de démarrage…)
Modèle économique, recompilation pour le matériel physique et conclusion
LCC 248 - Spécial Loi Société et Organisations avec Agnès Crepet et Tariq Krim - partie 1
01:03:06
L’actualité du mois de janvier était trop tentante pour passer à côté, voici donc un nouvel épisode spécial loi, société et organisations ! Cette fois Agnès, Audrey et Emmanuel ont demandé à Tariq Krim de les rejoindre pour commenter les conséquences des nouvelles CGU de WhatsApp et le départ en masse de ses utilisateurs et la déplateformisation de Donald Trump. Et comme il y avait beaucoup à dire sur le sujet, on vous en a fait deux épisodes.
les nouvelles données partagées sont celles ci : « nous partagerons certaines de vos informations de compte avec Facebook et la famille de sociétés Facebook, telles que le numéro de téléphone que vous avez vérifié lorsque vous vous êtes inscrit sur WhatsApp, ainsi que la dernière fois que vous avez utilisé notre service "
faisant le constat que les citoyens de l’UE sont traités différement en vertu du RGPD, le ministère indien des technologies de l’information a demandé à whatsapp de retirer ces propositions de changement au motif qu’« Un tel traitement différencié est préjudiciable aux intérêts des utilisateurs indiens et perçu comme un grave problème par le gouvernement ».
pas lié à la polémique actuelle mais au modification des conditions d’utilisation de WhatsApp en 2016 par lesquelles Facebook s’est s’autorisée le partage de certaines données que des internautes avaient pu préserve jusqu’à lors.
c’est la CNIL irlandaise qui s’est saisie du sujet et la sanction financière pourrait aller jusqu’à 30 voire 50 millions d’euros pour avoir enfreint les exigences de transparence imposées par le RGPD. (Plus exactement, c’est l’opacité sur la manière dont il partage des informations avec Facebook, sa maison-mère, qui est en cause.)
LCC 177 - Interview sur les devs à Singapour à Voxxed Days Eponyme
00:50:35
A l’occasion de Voxxed Days Singapore, Guillaume et Emmanuel discutent avec des expatriés de Singapour (Alan, Germain, Mathieu, Nida) sur leur vie de développeur là bas.
Article de performance SpringBoot classique vs réactif
L’article “SpringBoot 2 performance — servlet stack vs WebFlux reactive stack” est à prendre avec de grosses pincettes. Le client HTTP utilisé pour la version servlet est celui par défaut Java à base d’URLConnection. Pas de reused de la connection…. A 2500 users sur un benchmark IO bound avec un tel ratio wait/processing, il ne devrait pas avoir une telle différence de throughput.
Moi développeur d’application web Spring Boot, quelles sont les étapes concrètes pour rajouter la sécurité ? Quel est l’identifiant partagé entre l’application et Keycloak pour définir l’utilisateur Et mon application voit quoi de l’utilisateur (nom, email, mot de passe ?) Et mon application Angular 2 avec un backend node.js ? Et mon application iOS ? AeroGear TLS, agnostique ou pas ? Comment je définis le TTL de mon authentification
Avec quoi vous vous intégrez ? Security proxy ?
Sous le capot
C’est fait comment en pratique ? Je change de domaine ? Comment le clustering est fait TLS, reverse proxy, etc Tout est en mémoire ? Et la partie client, qu’est-ce qui est fait en intégration particulière Les extensions sont pour faire quoi ?
Vous garder comment les mots de passe (hash, salt, evolution, etc )
Écosystème et communauté
C’est quoi la concurrence ? Spring Security, cryptomator, Google Keyczar, Bouncy Castle, Apache Shiro ? Active Directory ?
LCC 277 - L'interview des 10 ans de cast codeurs à Devoxx par la chaîne Devoxx France TV
01:20:19
Les Cast Codeurs passent au grill de Nicolas sur la chaîne TV Devoxx France. Nicolas nous rappelle des moments des 10 ans de Devoxx + Les Cast Codeurs.
Arnaud, Emmanuel et Guillaume sont rejoints par plein de primo crowdcasteurs pour cet épisode. On y parle de beaucoup de sujets, notamment les lambda, performance, audit, OSGi, Eclipse et WebIDE sans oublier le débat du web de la semaine AngularJS 2.0.
Dans cet épisode (qui est bien le 216 et pas le 217 !) Antonio, Audrey et Emmanuel reviennent sur les nouveautés du JDK 13 et discutent sécurisation d’API, authentification OAuth 2, Kubernetes, Android 10 mais aussi télétravail et vie privée.
Cet épisode marathon sera découpé en deux morceaux pour éviter à vos oreilles une écoute marathon. Cette deuxième partie couvre des sujets d’architecture et de loi société et organisation ainsi que les conférences à venir. Logging, Migration Java 8 vers 11, Xerox Park, (manque de) sécurité, courbes elliptiques, sondage développeurs.
tous les langages et plateformes utilisent les logs
debugging, tracing, journaling, monitoring, and printing errors
impact sur les performances (allocation supérieure sur un log que sur le code métier
log = mémoire, CPU (GC), I/O
risque de securité (dépendances et fonctionnalités sans besoin)
format des log: pour lecture humaine main volume impose traitement automatique
log level la bonne abstraction (souvent trop et pas ce que l’on veut à la fois
debugging -> utiliser un debugger ; journaling -> event sourcing ou solution dédiée ; tracing > open tracing ; monitoring -> monitoring solution via metrics et health check
bons usages de logging: en dev (println), fin de jobs automatiques, erreurs non récupérables ou innatendues, pas les erreurs utilisateur (logger les erreurs qui cachent un bug),
dans les container, Sébastien utilise System.out et System.err vu que les logs sont gérés par la plateforme
la réponse pour maintenant
les logs peuvent etre structurés
performance, on peut éviter les concatenations de String (parameterized logging), memory allocation est bien meilleure depuis 2012 (e.g. Shenandoah), vu des problèmes dans des cas plus rare de genre MDC.getCopyOfContextMap
disk I/O: ok mais disque cape a 200 MiB/s donc bon…: si c;est le cas, sépare I/O log du reste (disque vs network par exemple)
gros fan de logs structures via JSON ; log line sur console et JSON en fichier
log plus de manière conditionelle
tracing théoriquement bon mais limite dans son contexte métier et peu d’infos passables
system.out problème de scalabilité d’usage, etc et appel blocant println (async usage n’est pas bon)
Mettre a jour le système de build, 2. Faire des tests de performance 3. Automatiser la migration
mise. a jour vers gradle 5
G1 80% des applis CMS 20%
pris 20 apps representatives
focalisé sur les applications avec les tailles de piles les plus grosses
de équipera jusquà 200% plus de latence et throughput: zones G1, Shenandoah et ZGC
automatisé la migration du reste et tourné les builds de tests qui ont identifié les problèmes de migration
quelques problèmes: suppression de certaines classes Java EE, changement du type de classloader par défaut, casting de classe plus stricte
ils ont utilisé -release 8 et ont limité les usages des features Java 11
les options de CLI de la JVM ont beaucoup changé
LinkedIn fait du microsercices ce qui veut dire que beaucoup de repositories sont liés à d’autre par un graphe de dépendance: euh c’est pas le principe des microservices d’éviter ça???
mise a jour de 500 librairies 3/4 de l’année
Quelques challenges vus
La JVM respecte groups et donc moins de thread GC sont crées
aussi ils pouvaient piquer des cycles CPUs avant et plus maintenant
Java 11 a un usage de mémoire hors pile plus important
reduction de latence p99 par 10% et le throughput par 20% sans changer le type de GC
C’est un bon retour qui sent le type de développement de la vrai vie
Xerox achète un constructeur de mainframe, et ils ont crée un lab de recherche pour aider les usages
Macintosh et la souris et les fenêtres, les cartes météos colorées, imprimante laser, réseaux d’ordinateurs, lasers semi-conducteurs qui lisent les disques optiques, langages de programmation structurés
developer l’architecture de l’information
project proposes et faite en bottom up
PARC construisait ses propres hardware ce qui a créer des inventions et qui devaient etre construits pour 100 utilisateurs (scale)
recherche en construisant concrètement, pas en papier théorique académique
Un hack d’un adaptateur HDMI peut potentiellement infecter un video-projecteur, et qui à son tour pourra réinfecter les prochains ordinateurs qui s’y connecteront
Cet article propose de construire une sorte de connecteur qui sert de firewall HDMI pour éviter ce genre d’infection
il y a des préservatifs USB aussi qui ne laissent passer que la puissance et pas les données
Une suite de conseils comme de faire une installation toute fraiche, de mettre les mises à jour logicielle automatiques, n’autoriser que les applications signées, appliquer le chiffrement du disque…
Mais aussi utiliser par exemple un gestionnaire de mot de passe, éviter les extensions de navigateur, faire tourner un firewall
Et des liens vers des guides de sécurités plus avancés
un truc que je n’ai pas fait mais qui me tente c’est un outbound firewall comme little snitch ou lulu
toujours la licence Ecma international license, assez restrictive qui interdit le fork, mais avec certaines provisions pour l’intégration et la reproduction
mais aussi une nouvelle licence dérivée de la W3C Document & Software License, un peu plus ouverte, qui permet d’intégrer et s’intégrer plus facilement avec les autres standards du Web
Conférences
de la part de Youen
Cette année Codeurs en Seine, c’est le 17 novembre et le cfp est ouvert N’hésitez pas à amener un peu de JVM dans l’appel à orateur. (ca commence à se faire rare). Pour rappel : codeurs en seine c’est 1000 personnes autour des métiers du développement dans une des plus grande salle de Rouen, le kindarena.
De Java 23 à WebAssembly, en passant par l’IA et les design patterns, on a tout passé au crible #java #swift #webassembly #wordpress #webcomponents #llm #mongodb #keycloak #fairsource
Nouvelles plateformes : Swift 6 s’étend à de nouvelles plateformes (tous les grands OS déjà supportés), y compris les systèmes embarqués (sous ARM et Risc V).
Swift Testing : Swift 6 introduit Swift Testing, une nouvelle bibliothèque de tests conçue pour Swift.
Concurrence : Détection de data race en tant qu’erreur de compilation.
JDK 24 : Un calendrier pour la sortie de JDK 24 a été proposé. La première phase de réduction des fonctionnalités commencera le 5 décembre 2024. La version finale sera disponible le 18 mars 2025.
JDK 24 introduira des mises à jour avec deux nouvelles API. La Vector API (JEP 489) facilitera les opérations sur des vecteurs, tandis que la Class-File API (JEP 484) permettra une manipulation plus efficace des fichiers de classes Java.
Un changement de sécurité important est proposé avec JEP 486. Il prévoit de désactiver définitivement le Security Manager, qui a été déprécié. Cette décision signifie que cette fonctionnalité ne sera plus disponible dans les futures versions, car elle est considérée comme obsolète.
Apache Tomcat et Cassandra : Les nouvelles versions de Tomcat (11.0.0) et de Cassandra (5.0.0) sont sorties. Elles incluent des améliorations et des corrections de bogues.
Spring Framework : Des mises à jour pour Spring Framework (versions 3.4.0-M2, 3.3.3 et 3.2.8) ont été publiées. Elles intègrent le support d’une nouvelle API qui aide à la gestion de la mémoire.
Quarkus : Red Hat a sorti la version 3.15 de Quarkus, qui apporte des corrections et des améliorations. Une nouvelle version, la 3.16, est prévue pour la fin octobre.
Commonhaus Foundation : Une nouvelle organisation, la Commonhaus Foundation, a été créée pour aider les projets open source à être durables. Quarkus a rejoint cette fondation.
Cassandra, Camel, Lamgchain, Micronaut, OpenLibery, JHipster, Ktor etc.
Python reste le langage de programmation le plus populaire, surtout dans des domaines comme la science des données et le développement web.
Il est apprécié pour sa simplicité et le grand nombre de bibliothèques disponibles, ce qui le rend facile à apprendre et à utiliser.
De nombreuses entreprises, y compris des startups, utilisent Python pour diverses applications.
Malgré sa dominance, d’autres langages comme JavaScript, Java et Go gagnent en popularité et pourraient défier la position de leader de Python. (Java est monté du poste 4 au 3, en 1 an)
Les développeurs qui codent occasionnellement préfèrent Python, montrant ainsi son attrait au-delà des programmeurs professionnels.
L’émergence d’outils comme ChatGPT facilite l’accès à la programmation, ce qui pourrait influencer les tendances futures en matière de langages de programmation.
l’annotation permet d’avoir ses données de test au plus près de la méthode
on écrit les données de test sous forme de CSV (éventuellement avec des délimiteurs de son choix pour plus de lisibilité, pour bien séparer les valeurs)
par exemple -> ou maps to
les valeurs peut être les paramètres de la method mai aussi les valeur de description du test
L’utilisation de WebAssembly avec Serverless. Faire tourner des applications plus facilement dans le cloud.WebAssembly est rapide et sûr pour exécuter du code. Cela aide à déployer les applications plus rapidement et à utiliser moins de ressources.
De nombreuses entreprises utilisent WebAssembly pour des tâches comme le traitement d’images et de données. Des plateformes comme Cloudflare Workers et AWS Lambda.
La communauté autour de WebAssembly granèit. De nouveaux outils et bibliothèques sont créés.
Cependant, il y a encore des défis à relever, comme la compatibilité et les performances. Malgré cela, l’avenir de WebAssembly est prometteur.
une boite nommée WP Engine fait du hosting de WordPress mais ne contribue pas
Automatic, les gens derrière WordPress leur onbt demandé de résoudre ce probleme, soit en payant des droits de trademark soit en contribuant de l’engineering upstream à auteur de 8% de leurs revenus
WP Engine dit non
Automatic coupe l’accès aux mises a jours de thèmes et de plugins à WP Engine mettant des sites à risque (securité)
WP Engine dit que c’est un abus de position du CEO d’Automatic sur les accès WordPress.org
Google DeepMind a récemment publié SCoRe, une nouvelle méthode d’auto-correction pour les modèles de langage (LLM). Elle améliore la capacité des LLM à corriger leurs erreurs lorsqu’ils résolvent des problèmes de mathématiques ou de programmation.
Contrairement aux méthodes antérieures, SCoRe utilise des données générées par le modèle lui-même pour créer des dialogues d’auto-correction. Cela permet au modèle de s’améliorer via un processus d’apprentissage par renforcement (RL) en deux étapes.
Les modèles ajustés avec cette technique ont montré des améliorations significatives, surpassant les performances des modèles de base.
Cette méthode pourrait ouvrir de nouvelles pistes pour rendre les LLM plus précis et robustes dans leurs réponses.
La version 8.0 est plus rapide, avec des lectures plus rapides, une meilleure gestion des mises à jour et des agrégations de séries temporelles jusqu’à 60 % plus rapides.
De nouvelles fonctionnalités incluent le support des Query pour les données chiffrées, rendant le traitement des données sensibles plus facile.
Beaucoup d’ameliorations pour la performance et scalabilité
Organizations feature: permet aux administrateurs de créer et gérer des structures organisationnelles, facilitant la gestion des rôles et des permissions.
Persistent user sessions: Les sessions des utilisateurs sont maintenant stockées par default dans la base de donnée ce qui améliore la cohérence, surtout avec plusieurs instances.
Login Theme: Offre un design plus propre et une option de mode sombre qui s’adapte aux préférences des utilisateurs.
L’amélioration du déploiement multi-sites renforce la fiabilité et réduit le temps d’arrêt lors des demandes des utilisateurs.
Admin recovery: une méthode simple pour récupérer l’accès administrateur si tous les comptes sont bloqués, en créant un compte temporaire via des variables d’environnement.
Pour les utilisateurs qui migrent vers cette version, il est important de prêter attention aux changements liés à la gestion des caches et aux sessions persistantes.
Certaines startups utilisent des licences “fair source” pour partager leur code tout en protégeant leurs intérêts commerciaux.
Les licences FSL (Functional Source License) et BUSL (Business Source License) permettent d’ouvrir le code après 2 ou 4 ans.
Ces licences empêchent les concurrents de vendre des produits similaires tout de suite, offrant une protection temporaire.
Certains critiques pensent que ces licences sont compliquées et pourraient limiter l’innovation, car elles ne sont pas totalement ouvertes.
Le “fair source” est encore un concept nouveau, mais il pourrait devenir un bon compromis entre open source et logiciel privé.
definition de fair source: code lisible publique, peut etre utilise et modifié avec des “restrictions minimales” pour proteger le business modele du producteur ; et devient open source de maniere deferée
“any purpose other than a Competing Use. A Competing Use means use of the Software in or for a commercial product or service that competes with the Software or any other product or service we offer using the Software as of the date we make the Software available”
Outils de l’épisode
Un petit outil sympa pour les utilisateurs de Macs avec un écran “wide”, pour partager un écran virtuel : https://github.com/Stengo/DeskPad
les écrans larges sont partagés entierement et ceui fait un rendu 16:9 pour les gens qui le voient
cet écran acte comme un écran mais il est virtuel et on peut mettre les applications que l’on veut dedans
Améliorez votre compréhension de Les Cast Codeurs Podcast avec My Podcast Data
Chez My Podcast Data, nous nous efforçons de fournir des analyses approfondies et basées sur des données tangibles. Que vous soyez auditeur passionné, créateur de podcast ou un annonceur, les statistiques et analyses détaillées que nous proposons peuvent vous aider à mieux comprendre les performances et les tendances de Les Cast Codeurs Podcast. De la fréquence des épisodes aux liens partagés en passant par la santé des flux RSS, notre objectif est de vous fournir les connaissances dont vous avez besoin pour vous tenir à jour. Explorez plus d'émissions et découvrez les données qui font avancer l'industrie du podcast.