Explore every episode of the podcast Les Cast Codeurs Podcast
Dive into the complete episode list for Les Cast Codeurs Podcast. Each episode is cataloged with detailed descriptions, making it easy to find and explore specific topics. Keep track of all episodes from your favorite podcast and never miss a moment of insightful content.
Rows per page:
50
1–50 of 340
Title
Pub. Date
Duration
LCC 314 - 1000 fois 1000 dépendances
16 Jul 2024
01:23:11
Emmanuel, Guillaume et Arnaud discutent des nouvelles de l'été. JEPs, transactional outbox pattern avec Spring, LLM dans Chrome, faille polyfill.io, TOTP, congés illimités et IDE payant ou pas payant ?
transactional outbox permet d'éviter des 2PC ou des désynchronisations de resources: typiquement un commit dans une base et un envoie de message dans un bus
on ecrit le message dans une table de la base de données, et un process séparé récupère les messages et les envoient dans le bus
implémentation utilise Spring Integration
dans l'article, la seconde resource est l'envoie d'email
montre une approche de tests
le flow descrit pas psring integration est pas super trivial a lire quand on est pas familier mais cela poll la table toutes les secondes et envoie email et si succes de l'appel de service, vide le message de la table
Deuxieme exemple avec Spring modulith qui a un event bus interne qui peut être persisté
décrit les differences avec spring integration et les limites de l'approche modulith (message order, retry etc)
le problème venait des valeurs par défaut des buckets déclarés dans le chart helm de Loki, en particulier celui nommé 'chunks'
Data et Intelligence Artificielle
Guillaume avait partagé l'information sur la disponibilité prochaine d'un mini modele LLM dans chrome. C'est maintenant une réalité et vous pouvez le tester.
1% des utilisateurs de Maven Central utilisent 83% de sa bande passante. Installez un repository manager qui fait proxy (et cela pour tous les types de dépendances)!!!
rien n'est réellement gratuit et l'abus d'une minorité peut nuire à l'ensemble. Cela fait maintenant plus de 20 ans que les communautés le répète: installer un gestionnaire de dépendances dans votre infrastructure (nexus, artifactory, CodeArtifact, …). En plus de protéger le bien commun cela vous permet de raffiner le filtrage des dépendances, d'assurer la reproductibilité de vos builds, d'optimiser les performances (et réduire les coûts) en ne téléchargeant que depuis votre propre infrastructure, etc …
Maven Central est un commun qui ne coute rien à l'utilisteur
mais qui est indispensable à tous
1000 milliards de téléchargements l'année dernière
83% de la bande passante consommé par 1% des IPs
Beaucoup des ces IP viennent des companies les plus larges
proxy pour réduire charge sur central, réduire couts ingress/egress
ils vont implementer un mécanisme de throttling
question est-ce que la concentration des IPs veut juste dire que c'est le dernier noeud mais que cacher n'est pas effectif pour eux et qu'il y a des milliers de clients derrière une IP?
le trotting ferait mal
et le proxy ne marche plus dans un monde ou le dev est dans le cloud et distribue géographiquement
Comment mettre en place backstage, ici avec un projet Spring Boot utilisant CircleCi, Renovate, SonarCloud…
Cet article explique comment utiliser backstage pour fournir à vos équipes un template d'une application spring-boot.
Elle est automatiquement crée sous forme d'un repository git(hub) avec les integrations classiques pour gérer la CI (via CircleCI), la qualité (via SonarCloud), la mise à jour de dépendances (via Renovate) et bien sur son référencement sur le portail backstage.
tutoriel tres complet
tres facilement remplacable pour un project avec votre technologie preferee (pas specifique a Spring Boot, ou Java)
GitHub explique comment ils ont amélioré leur architecture, notamment en mettant en place Kafka pour distribuer les actions qui découlent d'un push sur GitHub.
paralelisation des taches (avant sequentiel)
limitation des dependances entre etapes effectuées lors d'un push
polyfill c'est un support de nouvelles fonctionalites dans les ancien navigateurs
servi par cdn notamment
une societe chinoise a achete le domaine et le github
et injecte du malware qui pointe sur des serveurs qui servent le malware selectivement (device, admin ou pas, heure de la journée)
Fastly et Cloudflare on des deploiements alternatiuve
Une faille de sécurité, de type Remote Code Execution, vieille de 10ans, dans CocoaPods, un gestionnaire de dépendances très utilisé dans le monde Apple (macOS et iOS)
https://cocoapods.org/ / https://cocoapods.org/ est un gestionnaire de dépendances pour les projets Xcode. Les dependances (Pods) sont publiées sous forme de Specs qui sont référencées dans un Specs Repo (une sorte de Maven central mais seulement avec des metadonnées)
CVE-2024-38366 est une vulnérabilité de type remote code execution avec un score CVSS de 10
La faille existait depuis 10 ans et a été corrigée en Sept 2023. Elle permettait d'avoir un accès root sur trunk.cocoapods.org qui stock les Specs. Elles auraient donc pu être modifiées sans que les auteurs ne s'en apperçoivent.
Pas de preuve pour l'instant que la faille ait été exploitée
Mieux comprendre la double authentification avec TOTP
le projet remporte un gain de 10000€. Ce prix est organisé par le gouvernement français afin de récompenser les projets open sources les plus impactants.
Les politiques de congés illimités, populaires aux États-Unis, ne sont pas aussi avantageuses en Europe.
En Europe, les employeurs doivent suivre les congés pris pour respecter les minima légaux de quatre semaines par an donc ils ne peuvent pas economiser sur le faire de ne plus les gérer.
Les congés illimités permettent aux US de ne plus à devoir les payer au départ de l'employé. En Europe les employeurs doivent payer les congés non utilisés lors de la fin du contrat.
Les employés européens pourraient prendre davantage de congés, car ils sont mieux protégés contre le licenciement.
Les jours de maladie sont plus cadrés en europe. Un employé qui souffre d'une maladie longue pourrait utiliser les congés illimités mais ce ne sont pas les même règles qui s'appliquent
OpenDNS n'est plus disponible en France et au Portugal
A priori Cisco qui opère openDNS en a marre des demandes de restrictions spécifiques à nos pays et préfère donc retirer entièrement l'accès au service plutôt que de se conformer à la nième demande de restrictions qui faisait suite à la plainte du groupe Canal+ portant sur l'accès à des sites illicites de streaming pour du sport
Ask Me Anything
Salut ! Êtes-vous plutôt IDE payants (ex : IJ Ultimate, ou des plugins payants), ou ne jurez-vous que par des outils gratuits ? Un peu des deux ? Si adaptes du payant, ça ne vous déprime pas qu'un nombre considérable d'employeurs rechignent à nous payer nos outils ? Que "de toute façon VSCode c'est gratuit" (à prononcer avec une voix méprisante) ? Quid du confort, ou de la productivité et/ou qualité accrue quand on maîtrise de tels outils ? Merci !
Katia, Guillaume, Emmanuel et Antonio discutent Kotlin, Micronaut, Spring Boot, Quarkus, Langchain4j, LLMs en Java, builds reproductible et la question AMA du jour, comment fait-on carrière de dev à 40 ans ?
Des licenciements ont continué chez Google et l'équipe Flutter/Dart comme plein d'autres ont été touchées, mais sur les réseaux sociaux les gens ont pensé que Google désinvestissait dans Flutter et Dart.
Par ailleurs, côté Android, ils poussent plutôt du côté de Kotlin et KMP, mais naturellement aussi les gens se sont demandé si Google avait pris parti pour pousser plus Kotlin/KMP plutôt que Flutter/Dart.
Pour essayer de mieux faire comprendre aux développeurs l'intérêt des deux plateformes, et leurs avantages et inconvénients, les directeurs des deux plateformes ont rédigé un article commun.
Si l'on souhaite une expérience plus proche du hardware et des dernières nouveautés d'Android, et d'avoir aussi une UI/UX vraiment native Android, mieux vaut aller du côté de Kotlin/KMP.
Si l'on souhaite par contre une expérience multiplateforme Web, mobile, desktop avec une UX commune cross-plateforme, avec également le partage de business logic à partir d'une même base de code, Flutter et Dart sont plus adaptés.
Le serveur basé sur Netty inclus la détection d'opération bloquante et les modules l'utilisant indiqueront à l'utilisateur quand certaines opérations peuvent être redirigée plutôt sur un virtual thread ou dans le thread pool IO
Micronaut Data inclus le support de la multitenance avec partitionnement par discriminateur pour JDBC et R2DBC
Micronaut Data rajoute le pagination par curseur pour JDBC et R2DBC (important aussi pour Jakarta Data)
Support des annotations Jakarta Servlet pour configurer par exemple les servelet filters
Support virtual thread et HTTP/2
Un nouveau module JSON Schema pour générer des JSON Schemas pour les records Java
Un nouveau module Source Gen pour faire de la génération de source pour Java et Kotlin cross-language
Un nouveau module Guice pour importer des modules Guice existants
Support expérimental pour la détection de changement sans zone
Angular.dev est désormais le nouveau site pour les développeurs Angular
Material 3, les "deferrable views", le "built-in control flow" sont maintenant stables et intègrent une série d'améliorations
Améliorations du rendu côté serveur telles que le support de l'hydratation i18n, un meilleur débogage, le support de l'hydratation dans Angular Material, et la event replay qui utilise la même bibliothèque que Google Search.
Nouveau algo Deep Learning de l'Université de Washington permet d'écouter une seule personne de ton choix et effacer tout le bruit autour
le système nécessite que la personne portant les écouteurs appuie sur un bouton tout en regardant quelqu'un parler ou simplement en le fixant pendant trois à cinq secondes
Permet à un modèle d'apprendre les schémas vocaux du locuteur et de s'y attacher pour pouvoir les restituer à l'auditeur, même s'il se déplace et cesse de regarder cette personne.
Selon les chercheurs, cela constitue une avancée significative par rapport aux écouteurs à réduction de bruit existants, qui peuvent annuler efficacement tous les sons, mais ne peuvent pas sélectionner les locuteurs en fonction de leurs caractéristiques vocales.
Actuellement, le système ne peut enregistrer qu'un seul locuteur à la fois. Une autre limitation est que l'enregistrement ne réussira que si aucune autre voix forte ne provient de la même direction.
L'équipe a mis en open source leur code et leur jeu de données afin de faciliter les travaux de recherche futurs pour améliorer l'audition de la parole cible.
Slack a migré 15.000 tests de Enzyme à React Testing Library avec un succès de 80%
Migration nécessaire pour le manque de support de Enzyme pour React 18
L'équipe a essayé d'automatiser la conversion avec des transformations AST, mais n'a atteint que 45 % de succès à cause de la complexité des méthodes d'Enzyme et du manque d'accès aux informations contextuelles du DOM.
L'équipe a utilisé Claude 2.1 pour la conversion, avec des taux de réussite variant de 40 % à 60 %, les résultats dépendant largement de la complexité des tâches.
Suite aux résultats insatisfaisants, l'équipe a décidé d'observer comment les développeurs humains abordaient la conversion des tests unitaires.
Les développeurs humains utilisaient leurs connaissances sur React, Enzyme et RTL, ainsi que le contexte du rendu et les conversions AST de l'outil initial pour mieux convertir les tests unitaires.
Finalement les ingénieurs de Slack ont combiné transformations AST et LLM en intégrant des composants React rendus et des conversions AST dans les invites, atteignant un taux de réussite de 80 % démontrant ainsi la complémentarité de ces technologies.
Claude 2.1 est un modèle de langage de grande taille (LLM) annoncé en novembre 2023 par Anthropic. Il inclut une fenêtre contextuelle de 200 000 tokens, des réductions significatives des taux d'hallucination du modèle, des invites système et permet l'utilisation d'outils. Depuis, Anthropic a introduit la famille de modèles Claude 3, composée de trois modèles distincts, avec des capacités multimodales et une compréhension contextuelle améliorée.
Un arbre de syntaxe abstraite (AST) est une représentation arborescente de la structure syntaxique abstraite du code source écrit dans un langage de programmation. Chaque nœud de l'arbre représente une construction du code source. Un arbre de syntaxe se concentre sur la structure et le contenu nécessaires pour comprendre la fonctionnalité du code. Les AST sont couramment utilisés dans les compilateurs et les interpreters pour analyser et examiner le code, permettant diverses transformations, optimisations et traductions lors de la compilation.
Aqua, le premier IDE conçu pour l'automatisation des tests, supporte plusieurs langages (Java, Python, JavaScript, TypeScript, Kotlin, SQL) et frameworks de tests (Selenium, Playwright, Cypress).
Pourquoi ? Les tests d'applications nécessitent des compétences spécifiques. Aqua, un IDE adapté, est recommandé par les ingénieurs en automatisation des tests.
Aqua propose deux plans de licence : un gratuit pour les usages non commerciaux et un payant pour les usages commerciaux.
cam me parait un peu contre intuitif a l'heure du devops et du TDD de faire des outils dédiés et donc des equipes ou personnes dédiées
Dans cet épisode, Katia, Arnaud et Emmanuel discutent les nouvelles de cette fin 2023. Le gatherer dans les stream Java, les exceptions, JavaScript dans la JVM, recherche vectorielle, coût du cloud, Gemini, Llama et autres animaux fantastiques et pleins d'outils sympathiques pour fêter la fin de l'année.
dans cet article de Paul King, de l'équipe Groovy, il montre et contraste ce que l'on pouvait faire en Groovy depuis des années, comme des sliding windows, par exemple
explique l'approche des gatherers avec ses opérations intermédiaires
gatherer sont des operations intermediaires custom qui prennent un etat et le prochain element pour decided quoi faire, et meme changer le stream d'elements suivants (en publier) (via la fonction integrate
certains peuvent permettre de combiner les resultats intermediaires (pour paralleliser)
Examples : fenetres de taille fixe, fenettres glissantes
Joe Duffy, qui est CEO de Pulumi, mais qui avait travaillé chez Microsoft sur le project Midori (un futur OS repensé) parle du design des exceptions, des erreurs, des codes de retour https://joeduffyblog.com/2016/02/07/the-error-model/
Il compare les codes d'erreurs, les exceptions, checked et non-checked
il separe les bugs des erreurs attendues (bugs doivent arreter le process)
il raconte l'histoire des unchecked exception et leurs problemes et des checked exceptopns et poourquoi les developeurs java les detestent (selon lui)
modèle multimodal qui peut prendre du texte, en entrée, mais aussi des images, du son, des vidéos
d'après les benchmarks, il est largement aussi bon que GPT4
plusieurs tailles de modèles disponible : Nano pour être intégré aux mobiles, Pro qui va être utilisé dans la majeure partie des cas, et Ultra pour les besoins de réflexion les plus avancés
dans l'optique des modeles GenAI ouverts, Facebook fournit des outils pour faire des IA responsables (mais pas coupables :wink: )
notament des benchmarks pour evaluler la sureté et un classifier de sureté, par exemple pour ne pas generer du code malicieux (ou le rendre plus dur)
llama purple sera un projet parapluie
D'ailleurs Meta IBM, Red Hat et pleins d'autres ont annoncé l'AI Alliance pour une AI ouverte et collaborative entre académique et industriels. Sont notammenrt absent Google, OpenAI (pas ouvert) et Microsoft
Juste une annouce pour l'instant mais on va voir ce que ces acteurs de l'AI Alliance feront de concret
il y a aussi un guide d'utilisateur l'usage IA responsable (pas lu)
MLX est une librairie Python qui s'inspire fortement de NumPy, PyTorch, Jax et ArrayFire
Surtout, c'est développé spécifiquement pour les Macs, pour tirer au maximum parti des processeurs Apple Silicon
Dans un des repos Github, on trouve également des exemples qui font tourner nativement sur macOS les modèles de Llama, de Mistral et d'auters https://github.com/ml-explore/mlx-examples
non seulement les Apple Silicon amis aussi la memoire unifiee CPU/GPU qui est une des raisons clés de la rapidité des macs
Le calendrier HTML "hell" https://www.htmhell.dev/adventcalendar/ qui parle d'accessibilité, de web components, de balises meta, de toutes les choses qu'on peut très bien faire en HTML/CSS sans avoir besoin de JavaScript
Beaucoup d'outil librement accessibles sont mentionnés pour faire toutes sortes de visualisations (ex. treemap, dendros, sankey…) mais aussi pour la cartographie
Quelques ressources de site qui conseillent sur l'utilisation du bon type de visualisation en fonction du problème et des données que l'on a
notemment celui du financial time qui tiens dans une page de PDF
Avec toute une liste de questions à se poser dans l'utilisation d'un outil tel que Copilot
Il faut bien réaliser que malheureusement, une IA n'a pas raison à 100% dans ses réponses, et même plutôt que la moitié du temps, donc il faut bien mettre à jour ses attentes par rapport à cela, car ce n'est pas magique
La conclusion est intéressante aussi, en suggérant que grosso modo dans 40 à 60% des situations, tu peux arriver à 40 à 80% de la solution. Est-ce que c'est à partir de ce niveau là qu'on peut vraiment gagner du temps et faire confiance à l'IA ?
Ne perdez pas trop de temps non plus à essayer de convaincre l'IA de faire ce que vous voulez qu'elle fasse. Si vous n'y arrivez pas, c'est sans doute parce que l'IA n'y arrivera même pas elle même ! Donc au-delà de 10 minutes, allez lire la doc, chercher sur Google, etc.
notamment, faire genrer les tests par l'IA dans al foulée augmente les risques surtout si on n'est pas capable de bien relire le code
si on introduit un choix de pattern genre flexbox en CSS, si c'est sur une question de sécuriter, vérifier (ceinture et bretelle)
est-ce le framework de la semaine dernière? L'info ne sera pas dans le LLM (sans RAG)
C'est le MLOps et il y a quelques modèles end to end Google, IBM mais vu la diversité des organisations, c'est difficile a embrasser ces versions completes
ML Ops est une métier, data science est un metier, donc intégrer ces competences
sachez gérer votre catalogue de données
Construire un process pour tester vos modèles et continuellement
La notion de culture de la recherche et sa gestion (comme un portefeuille financier, accepter d'arrêter des experience etc)
la culture de la recherche est peu présente en engineering qui est de construire des choses qui foncitonnent
L'article conclut avec quelques pistes sur comment éviter ces dark patterns en regardant les bons patterns de la concurrence, en testant les interactions UX, et en applicant beaucoup de bon sens !
les dark patterns ne sont pas des accidents, ils s'appuient sur la psychologie et sont mis en place specifiquement
L'article parle de l'évolution de la perception de l'engineering management qui n'est plus désormais le choix de carrière par défaut pour les ingénieurs ambitieux.
Il met en évidence les défis auxquels les engineering managers sont confrontés, y compris les attentes croissantes en matière d'empathie, de soutien et de compétences techniques, ainsi que l'impact de la pandémie de COVID-19 sur l'attrait des postes de management.
L'importance des bons engineering mnanagers est soulignée, car ils sont considérés comme des multiplicateurs de force pour les équipes, contribuant de manière significative à la productivité, à la qualité et au succès global dans les environnements organisationnels complexes.
L'article fournit des raisons pour lesquelles quelqu'un pourrait envisager de devenir Engineering Manager, y compris acquérir une meilleure compréhension de la façon dont les entreprises fonctionnent, contribuer au mentorat et influencer les changements positifs dans la dynamique des équipes et les pratiques de l'industrie.
Une perspective est présentée, suggérant que devenir Engineering manager peut conduire à la croissance personnelle et à l'amélioration des compétences de vie, telles que l'autorégulation, la conscience de soi, la compréhension des autres, l'établissement de limites, la sensibilité à la dynamique du pouvoir et la maîtrise des conversations difficiles. L'article encourage à considérer la gestion comme une occasion de développer et de porter ces compétences pour la vie.
j'avais lu le tweet du createur de cette conf qui expliquait que c'etait des comptes de tests et que pris dans le rush ils avaient oublié de les enlever
mais en fait les comptes de tests ont des profils "Actifs" sur le reseaux sociaux apparemment donc c'était savamment orchestré
Au final beaucoup de speakers et des sponsors se desengagent
Les Cast Codeurs se réunissent pour leur déjeuner annuel de tous les 18 mois à deux ans pour enregistrer cet épisode news. On y discute contribution OpenJDK, JIT, sérialisation, Quarkus, CloudEvent, AWS lambda, React, daltonisme, event sourcing, uml, loi extra territoriale et bien d'autres choses encore. Le mot Barbecue vient de l'embrochement du gibier "de la barbe au cul" avant de le faire chauffer dans les cheminées de cuisine.
Guillaume, Vincent et Emmanuel discutent des nouvelles autour de Java 12, Jakarta EE, Spring, Quarkus, la mairie de Paris et son data center. Mais aussi de web, de Huawei, du design des fichiers Dockerfile et bien d'autres choses encore.
LCC 211 - Interview sur la virtualisation avec Quentin Adam
27 May 2019
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
Dans cet épisode, Guillaume, Arnaud et Audrey reviennent sur les derniers rebondissements des drama de la tech : le futur de Jakarta EE, Amazon vs l'Open Source … Et bien sûr on discute aussi technique avec les actualités de Elastic, JHipster, Micronaut, et plein d'autres.
LCC 208 - Si après 10 ans d'open source, t'as pas ta fondation, t'as raté ta vie
08 Apr 2019
01:37:53
Dans cet épisode en tête à tête Arnaud et Audrey discutent des nouveautés de Java 12, des dernières versions de Vert.x, Kubernetes ou Traefik mais aussi open source et fondations, et bien d'autres choses encore.
Un épisode avec des news on ne peut plus fraîches puisqu'Antonio, Audrey et Vincent y parlent de Quarkus, mais aussi d'Elastic, de web et de sécu, mais aussi quelques réflexions sur le métier de développeur.
support des thread virtuels qui permet d'écrire le code synchrone pour des cas complexes et utiliser les thread locaux dans ces cas la. Cela ne remplacement pas le code de process des événements
le code put faire des future await qui ne bloqueront pas le thread principal
connection SQL dynamique: quand le host change dynamiquement dans l'application
support des proxies de niveau 7 pour les clients SQL
Dans cet épisode, les voisins d'Arnaud ont essayé de le réduire au silence tandis qu'Antonio tentait de faire taire Audrey. Les voisins d'Arnaud ont gagné grâce à la perceuse, mais Antonio, lui, a perdu. Résultat : un épisode news où deux cast codeurs et demi discutent de l'actualité de vos languages et frameworks préférés, mais aussi de l'actualité des géants de la tech, et ça, c'est pas toujours joli.
Dans cet épisode Guillaume, Audrey et Emmanuel reviennent sur les actualités de la fin d’année 2018 mais aussi des prédictions pour 2019. On discute JDK, management, open source mais aussi marmotte, licornes et lutins.
LCC 201 - Interview Kotlin avec Cédric Beust et Sébastien Deleuze
22 Dec 2018
01:35:21
Dans cet épisode, Audrey et Emamnuel discutent de Kotlin avec Cédric Beust et Sébastien Deleuze. On y parle du langage de sa communauté et de son écosystème.
Quelles sont les fonctionnalités clés du langage Null safety, extensions, data class, sealed class Co-routines c'est quoi (zoom) DSL
Quelles sont les inspirations de ce langage ? Pourquoi JetBrains ont ils décidé de créer ce langage ? Avait on besoin d'un énième langage ?
Quel différenciateur vs reste Early adopteurs, par rapport à la "concurrence" qu'est-ce qui vous a fait l'utiliser ?
Par rapport aux autres langages candidats modernes, votre point de vue
Le mix Object Oriented et fonctionnel, c'est le nouveau OO ? Java 8, 9+ a atténué l'attrait?
Je peux mixer Kotlin et Java dans une même base de code ? En particulier, tu peux même avoir des dépendances circulaires, genre une interface Java, une classe implémentée en Kotlin, et tu ré-étends cette classe en Java ? (et vice versa) Est-ce que l'intégration Java / Kotlin est vraiment transparente, ou bien c'est plus compliqué que ça ?
Que quelles étapes parle-t-on pour rentre une API ou un framework "native" Kotlin ?
Sous le capot
Un langage de plus haut niveau: plus lent, plus gourmand en mémoire ? Quid du boxing et type primitifs ?
Les utilisateurs type
Android Gradle Quels sont les utilisateurs type
L'écosystème
Build Framework applicatif Accès aux données Tests : mock vs Mockito Arrow
Y a-t-il une tendance "Kotlin native" (i.e. écrit en Kotlin)
L'influence sur les frameworks et les plateformes
Ecrire des APIs et des frameworks pour Kotlin, quel retour d'experience.
Guillaume, Vincent, Emmanuel et Arnaud passent en revue les 100 premiers épisodes des cast codeurs pour parler les nouvelles et des interviews les plus marquantes.
LCC 198 - le mauvais open sourceur, il voit un code, et il opensource
09 Nov 2018
01:27:35
Vincent, Guillaume et Arnaud enfilent leur slip des cast codeurs par dessus leur pantalons pour vous parler d'AdoptOpenJDK, de Spring Boot, de Micronaut, de Kubernetes, de Google App Engine, des vieux pôts de l'écosystème java dans lesquels ont fait les meilleures soupes, de piscem vorat maior minorem et d'un long outil de l'épisode sur TestContainers.
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 195 - Interview panorama de l'écosystème Kubernetes avec David Gageot
15 Sep 2018
00:40:30
Guillaume s'assoie avec David Gageot pour discuter une partie de l'écosystème Kubernetes. C'est probablement le premier épisode d'une série sur Kubernetes.
Des blocs de construction de base, open source, pour créer des plateformes serverless sur Kubernetes, développé par Google, Pivotal, Red Hat, IBM, SAP et d'autres. Knative
Skaffold
Outil open source en ligne de commande pour faciliter le développement continu sur d'applications sur Kubernetes. Skaffold
Jib
Outil open source pour containeuriser des applications Java, avec plugins Maven et Gradle associés, pour builder rapidement, de manière reproductible, sans avoir recours au démon Docker. Jib
Distroless
Images Docker légères ne contenant que le système d'exploitation, les dépendances, et l'application elle-même, supportant Java, Go, .Net, Python ou Go. Distroless
Kaniko
Outil open source pour builder des images à partir d'un Dockerfile, dans un conteneur ou dans un cluster Kubernetes, sans avoir besoin du démon Docker. Kaniko
Gvisor
Un noyau en user-space écrit en Go, pour créer des conteneurs sandboxés. gvisor
Dans cet épisode, Emmanuel, Guillaume et Katia abordent les nouveautés Java, le lancement du langage Misty par Douglas Crockford, l'arrivée de WasmGC dans Chrome, la sortie de Spring Framework 6.1, des évolutions dans les bibliothèques comme Vert.x 4.5, et des conseils sur la création de langages de programmation. L'épisode couvre également des actualités dans les domaines de l'infrastructure avec le premier ordinateur cloud commercial par Oxide, des annonces sur les frameworks web comme Angular v17, des réflexions sur les architectures monolithiques versus microservices, et sans oublier le soap Opéra du moins de novembre avec OpenAI en vedette.
la JEP 454 sur l'appel a la memoire et les API dites natives passera en target pour JDK 22 avec une façon d'ajouter les appels de méthodes restreintes sans le flag --enable-native-access (via un manifeste dans le JAR)
historiquement il fallait compiler le port du langage lui meme (et donc son GC)
Maintenant on peut compiler le code (java) dans des primitives Wasm et WasmGC
Java python et co ont des VM qui sont compilées pour toutes les architecture cibles (ARM, x86 etc) y compris le JIT, AOT
donc on peut définir comme backend WASM lui meme, c'est l'approche classique
WasmGC définit des structs et des array avec des champs dans lesquels on peut créer des instances, lire/écrire les champs, caster dans d'autres types et ces objects sont managés par WasmGC lui meme. on a un système de type du coup et des relations entre ces types
Donc on représenterait les objets Java en objets Wasm
avantage et inconvenient des deux approches
tous les codes de management d'objets ne sont plus nécessaires (y compris malloc) -> gain memoire
en mode GC dans le langage les liens object langage <-> objets Wasm sont inefficaces car le lien langage -> wasm définissent l'instance entière Wasm, donc des gros cycles d'objets ne sont pas GCed
Wasm sandbox empêche d'inspecter la stack et d'éliminer des objets plus efficacement, et il n'y a pas d'API pour aider donc seul WasmGC peut utiliser cet avantage.
un seul GC a des avantages: meilleure gestion de la pression memoire
mais on réutilise le GC du web (genre V8) vs celui de Java. (c'est moins un problème pour les autres langages avec des gc moins sophistiqués)
fragmentation memoire, est plus proéminent quand on a des modules de type C qui peur garder des gros blocs memoire "quasi vide" (opaque). c'est managé plus finement en WasmGC
Sémantiques de langage est plus dur a achevé vu qu'on map en concepts WasmGC, il y a de la transformation.
sémantiques chaine de caractère, nombres, etc peuvent être un peu ajusté
un port utilisant WasmGC n'est pas une réécriture de tout mais un gros morceau de la VM du langage cible est a réécrire
WasmGC peut optimiser comme les patterns en JVM mais en WasmMVP c'est la toolchain avant qui fait le travail d'optimisation (e.g. LLVM)
donc avec WasmGC, la toolchain fera les optimisations de langage et WasmGC fera les optimisations low level (inlining, constant propagation, dead code elimination)
puis d'autres optimisation specific a WasmGC comme les escape analysis,
et ils parlent d'optimisations dans V8 pour approcher les appels dynamique a la Java (pas défini a la compilation)
support des thread virtuels qui permet d'écrire le code synchrone pour des cas complexes et utiliser les thread locaux dans ces cas la. Cela ne remplacement pas le code de process des événements
le code put faire des future await qui ne bloqueront pas le thread principal
connection SQL dynamique: quand le host change dynamiquement dans l'application
support des proxies de niveau 7 pour les clients SQL
Améliorations sur Visual Studio Code extension (compatible avec NodeJS)
Exec native sur Jupyter de javascript et typescript permet d'effectuer des analyses de données, construire des modèles d'apprentissage automatique et générer des rapports interactifs avec Deno
Copilot Chat sera GA en décembre, il utilise GPT4, il permet de guider le développeur, de générer du code, de détecter des erreurs et aide à les corriger, d'expliquer le code
Intégration à venir de Copilot Chat dans les IDEs de JetBrains
Copilot Chat va être intégrer sur github.com et dans l'appli mobile aussi
Introduction de GitHub Copilot Enterprise pour les sociétés, qui permettra de spécialisé le modèle sur le code de l'entreprise
Intégration de Copilot ans Workspace, donc quand on voudra adresser un bug, créer un pull request, Copilot pourra nous aider étape par étape, suggérer un plan d'action
Copilot Enterprise permettra de faire des recherches avec le contexte entier du code de l'entreprise, donc idéalement meilleur que le focus sur un repo de Copilot
Les microservices sont la solution à la complexité plutôt que la cause de celle-ci. Toutes les applications deviendront complexes ; au-delà d'un certain point, les microservices nous aideront à gérer cette complexité.
Les microservices comportent des coûts et des avantages. Si les avantages ne l'emportent pas sur les coûts, vous n'aurez pas une expérience positive avec les microservices.
Nous pouvons arrêter notre transition vers les microservices quelque part au milieu du spectre, ce que j'aime appeler le modèle hybride. À ce stade, nous pouvons avoir quelques gros services mélangés à quelques petits services. Nous pouvons avoir le meilleur des deux mondes : la simplicité et la commodité du monolithe combinées à la flexibilité et à la scalabilité des microservices.
Il n'y a pas de choix binaire entre monolithique et microservices. En réalité, il existe un spectre de possibilités entre les deux. Si vous vous êtes fixé à l'une des extrémités du spectre, vous passez à côté de la grande variété d'architectures intermédiaires.
Nous devrions cesser de parler de monolithe contre microservices et plutôt avoir un débat plus nuancé sur la taille appropriée des services.
les microservices mettent sur le devant de la scene la complexification du système, les monolithes le cachent sous le tapis
les microservices permette de manager cette complexité
automatisation est la clés dans l'adoption des microservices
bien aligner son architecture et son domain ou alors la douleur arrive
en fonction de l'implémentation, le risque est plus ou moins grand (de plus de CPU a un full DDOS)
au cœur du problème est la capacité d'envoyer pleins de requêtes en parallèle sur le meme pipeline HTTP/2
les serveurs ont en general une limite au streams en parallèle (genre 100)
la CVE est exploitée cote client en ouvrant et fermant rapidement une stream, c'est plus léger sur le client, le serveur a un delai dans sont processing
ce qui permet de bypasser la limit et affamer les resources du serveur
c'es catastrophique en cas de one thread per request (thread starvation)
en event loop, c'est une queue plus grande (donc le cas de quarkus)
pour mitiger, quarkus regarde le nombre de stream close requests par seconde pour détecter les abus (200 requêtes de fermeture sur une fetnetre de 30s)
Data / IA
Elon Musk annonce son LLM, appelé Grok https://x.ai/
Connectivité en temps réel avec Twitter !
Fenêtre de contexte de 25k characters
Le LLM garderait le contexte de la conversation (au lieu d'avoir à toujours renvoyer toute la discussion dans le contexte, à cause du côté sans état des LLMs habituellement)
Le style, la personnalité, du LLM, serait assez humoristique, voire carrément sarcastique, à la Musk… et déjà sur Twitter une personne commentait en disant que c'était le LLM "anti-woke"
Grok serait disponible pour les utilisateurs payants de Twitter
GPT-4 Turbo : leur dernier et plus puissant LLM. Il offre un contexte de 128k tokens, des prix plus bas et des quotas plus élevés. 128k c'est comme Claude
Assistants API : une solution permettant de créer des mini assistants personnalisés et de les exposer via une API. L'objectif est de faciliter l'intégration des solutions GenAI dans les applications, avec des fonctionnalités de gestion des conversations, d'interprétation de code et de RAG.
API pour DALL•E 3 : un modèle de 3e génération pour la génération d'images.
GPTs : des versions personnalisées de ChatGPT, faciles à développer même sans compétences en programmation. Une place de marché sera disponible pour monétiser ces "GPTs".
Les acteurs et les grands studios d'Hollywood ont conclu un accord le 8 novembre pour mettre fin à une grève qui a paralysé la production de films et de séries aux États-Unis pendant plusieurs mois.
L'accord prévoit une nouvelle convention collective de trois ans pour les acteurs (hormis les vedettes, les acteurs n'arrivent pas à gagner leur vie avec le streaming)
Revalorisation importante des salaires minimums ainsi que des des garde-fous contre le IA. Un système de primes pour les rediffusions en streaming.
Double mouvement social historique : acteurs sont entrés en grève mi-juillet, les scénaristes depuis début mai. La paralysie du secteur a coûté au moins 6 milliards de dollars.
Les acteurs craignaient que les studios utilisent l'IA pour cloner leur voix et leur image, les réutiliser à perpétuité, sans compensation ni consentement. Les conditions entourant les droits des studios sur l'image des acteurs stars après leur mort a été négocié.
La disparition annoncée du géant mondial du coworking marque un tournant pour le secteur, y compris en France.
Asphyxié par une dette de près de 3 milliards de dollars
Chute interminable entamée en 2019
WeWork était le leader mondial du secteur et, de par son statut de pionnier du coworking
WeWork propose 15 établissements en France, tous situés à Paris
Pourtant la demande pour le coworking ne cesse d'exploser
Startups domicilient leur siège (Qonto par exemple) dans un espace de co-working
Le modèle du coworking n'est pas remis en cause. WeWork, c'est un phénomène à part. Il y a eu une mauvaise gestion de départ d'une licorne qui croît à toute vitesse, en ne faisant absolument pas attention à son modèle économique de base (dit Clément Alteresco CEO de Morning)
Mauvaise publicité pour le marché et les concurrents, mais considèrent qu'ils vont s'en sortir
Les signalements de contenus, suppressions et suspensions pour propos violents et haineux au sein de X sont les plus nombreux en France, loin devant l'Allemagne et l'Espagne.
16.288 suppressions de messages contre 7.160 en Allemagne et 7.743 en Espagne
X explique avoir une « équipe internationale et inter-fonctionnelle » de « modérateurs humains », qui travaillent « 24 heures sur 24 avec la capacité de couvrir plusieurs langues ».
Dans cet épisode Audrey et Arnaud font le point sur les actualités de cet fin d'été 2018 avec pas mal de nouveautés pour préparer la rentrée comme la version 1.0 d'Istio, TLS 1.3, l'arrivée imminente de Java 11, et sans oublier la "minute" web d'Audrey. Il est aussi question d'outillage avec Gradle, Docker, GitHub et de sujets plus sérieux comme Redis et la Commons Clause. Emmanuel, quant à lui sort de son hamac pour vous présenter notre nouveau système de financement participatif du poscast.
Dans cet épisode, Emmanuel et Guillaume, les deux seuls casts codeurs encore présents discutent langages, architecture, nouveautés Kubernetes et font de l'archéologie du web et des gestionnaires de code source sous l'oeil attentif de Chouquette, le chat de Guillaume.
Les templates GO seront toujours utilisables mais on pourra également se servir de Lua pour faire des scripts qui eux auront accès aux templates avant et après le rendering
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.
LCC 190 - Interview revue de code Gerrit et l'outil Vet avec Julien Béti et Réda Housni-Alaoui
30 May 2018
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
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 :)
LCC 187 - FullStack Attack sur dépassement de pile.com
16 Apr 2018
00:57:43
Dans cet épisode Emmanuel, Audrey et Guillaume passent à la loupe les résultats du sondage 2018 de StackOverflow : on discute profils, technologies, valeurs et éthique dans le code.
Dans cet épisode Emmanuel est de retour et assure l'intérim de Guillaume sur les blagues tout en discutant Java 10, Kubernetes et son écosystème, départs, rachats et IPO mais aussi diversité et Facebook avec Arnaud, Audrey et Vincent. Merci à Morgan pour sa crowdquestion sur les logs !
The Oracle JDK (java.oracle.com) will not be freely available as of #JDK11. This is the one that has LTS. The #OpenJDK binary (GPLv2 with CPE license) will be free, but only have updates until the next release (6 months, 2 scheduled updates). Simon Ritter
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 ?
LCC 301 - Minoritaire ou majoritaire, là est la question!
23 Oct 2023
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
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 !
Dans cet épisode, Audrey se lance dans le mixage et discute avec Vincent et Arnaud Spectre, Meltdown, Neutralité du Net et bien sûr des dernières nouveautés techniques.
LCC 182 - Black Friday code - une ligne dupliquée pour une achetée
03 Dec 2017
01:11:57
Guillaume et Vincent commentent les nouvelles du mois dans le métaverse java-developicte. Un épisode avec beaucoup d'outils discutés. Félicitation à Guillaume, nouveau Java Champion !
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.
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 177 - Interview sur les devs à Singapour à Voxxed Days Eponyme
16 Sep 2017
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.
Antonio, Arnaud, Vincent et Emmanuel commentent les informations de l'été: diversité, java dans un container, Java EE dans une fondation, les licences Facebook vs la fondation Apache et plus.
LCC 175 - Interview sur la build avec Cédric Champeau et Arnaud Héritier - partie 2
11 Aug 2017
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 174 - Interview sur la build avec Cédric Champeau et Arnaud Héritier - partie 1
01 Aug 2017
01:52:38
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. A première partie pose les bases: introduction, java 9, performance, gestion de dépendances, cycle de vie
Pour s'échauffer, bon alors, c'est qui le plus fort Gradle ou Maven ? Est-ce que Gradle et Maven ont de la couleur dans la console ? Gradle / Maven: un pitch de 30 secs max pour chacun pour me faire faire mon choix
Support de Java 9
Gradle / Maven: Quand est-ce qu'ils vont supporter Java 9? Et la compilation multi-modules:
Gradle / Maven: Avez-vous eu de l'aide d'Oracle pour faire marcher Java 9? Gradle / Maven: Qu'est-ce que n'est pas prêt pour Java 9?
La performance
C'est quoi le build cache de Gradle ? C'est gratuit ou c'est que dans la version payante ? Parle nous un peu plus de Gradle Enterprise, il y a quoi dedans ? Gradle Entreprise
J'ai fumé la moquette
Quid de l'intégration avec jshell : je veux écrire mon script de build en Java pas en Groovy (désolé) ou en Kotlin (désolé), et surtout que cela soit un fucking REPL (Rémi Forax)
La totale depuis la ML Les projets
Maven, le projet Maven: Pour Maven, qui tient les rênes du projet ? Maven: La dernière version de Maven est récente, avec quelque bugfix (il semble…) La précédente version date de fin 2015 : Maven meurt il à petit feu ? Maven: Qu'est-ce qui fait que Maven n'évolue que très très très peu ? En particulier en terme de performance. Il est mort le projet ou quoi ? Maven: Qui paye le hosting de Maven Central ?
Gradle, le projet, Gradle.inc, l'entreprise Gradle: Gradle Inc propose des guides, des outils pour entreprise : Gradle veut devenir l'outil de build de référence en entreprise ? Gradle: Groovy va rester le langage principale des scripts Gradle (et Kotlin une alternative) ? Va cohabiter avec Kotlin ? va se voir remplacer par Kotlin ? Gradle: Les dernières versions de Gradle se focalisent beaucoup sur les performances de build. Vers quoi l'outil va s'orienter par la suite ? Gradle: Gradle peut builder des projets en C, des projets Java, Android…. Il y aura un focus sur un écosystème en particulier ou Gradle va continuer à essayer de tout builder, quitte à se disperser ? Gradle: Quelle est la proportion de projet utilisant Gradle pour construire des projets autres que des projets Java/Android ? Gradle: Gradle est indirectement poussé par Google car utilisé pour construire les applications Android. Gradle est également utilisé par Linkedin. Comment ces acteurs influent sur Gradle en terme de fonctionnalité ?
Et les autres (outils de builds)
Gradle / Maven: Ou en sont les autres, les javascripteurs ? sont-ils toujours à réinventer x fois la roue ? Ou ont-ils des outils dont Gradle et Maven pourrait s'inspirer ? Gradle / Maven: Qu'est-ce qui a bien pu pousser les javascripteurs à se dire qu'ils pourraient faire un outil intelligent quand ils semblent dépourvus du moindre bon sens ? Gradle / Maven: Il serait aussi sympa de comparer ces outils a ce qui se fait dans d'autres silos techniques (genre JS avec npm ou autre, C# avec dotnet et NuGet…), voir ce qui est mieux ou moins bien ailleurs. Gradle / Maven: Comment faire du build polyglotte, par exemple avec un mixe de Scala, Kotlin, Groovy, Java, et des sous projets Web (angular cli, webpack, gulp, …) ? Gradle / Maven: Pourquoi les outils de build apparaissent aussi facilement que les champignons en automne ? Gradle / Maven: Qu'est-ce qui a fait le succès de maven et gradle ? (aussi bien techniquement que d'un point de vue marketing)
La gestion des dépendances
Gradle / Maven: une question plus fondamentale sur gestion de deps vs build : à un moment, dans le monde JS, il y avait une séparation assez nette entre gestion de dépendance (avec Bower ou npm je crois) et un outil de build/packaging (genre Gulp il me semble) et des fichiers de conf distincts; maintenant il semble que la mode n'ait pas pris et que npm règne en maitre et mélange les 2 sujets dans une meme conf. Est-ce que les experts de build Java pourraient partager leur avis sur la question: pourquoi on mélange gestion de dépendances et gestion de build ? Est-ce que c'est vraiment un choix de design ou juste que c'est pragmatiquement suffisant et plus efficace? Gradle / Maven: comment les outils de build permettent de gérer les dépendances non-Java ? Tant qu'on reste dans du Java, c'est simple, mais dés que l'on sort un peu de là ça se complique (nous on a du natif Windows/Linux, j'imagine que pour les devs Android c'est encore plus compliqué). Peut t'il y avoir des interactions avec des repository non Maven-compliant ? On entend beaucoup parler de Conan pour les artefacts C/C++ ces temps-ci… Que permet Gradle sur le sujet ? Pouvez-vous nous briefer sur le monde Android qui doit avoir ces problématiques ?
Le cycle de vie de l'application
Gradle / Maven: Sujet qui pourrait être intéressant à débattre : comment est-ce que les deux outils abordent la livraison "en production" ? Où est-ce qu'ils s'arrêtent dans leur philosophie (on peut assez facilement imaginer un DSL gradle par exemple pour gérer les déploiements) ? En particulier, quid des environnements où les plateformes de production n'ont pas accès à internet (et donc pas accès aux dépôts officiels et pas de miroir disponible/accessible, j'ai vu ça chez les opérateurs télécom). La solution mise en place ici, c'est livraison sous forme d'iso/de cd sur lesquels il y a toutes les dépendances, et cette iso est montée comme un repo à partir duquel on installe la solution. Et à partir de là, viennent d'autres problèmes d'ordre juridiques : comment est pensée la gestion des licences, en particulier en ce qui concerne les dépendances transitives ? Gradle / Maven: Un peu lié : quelles différences dans les deux outils pour la construction d'applis orientées serveur vs. appli orientées client ?
LCC 172 - Interview sur Docker avec Jean-Laurent Morlhon et David Gageot
03 Jul 2017
00:57:04
Antonio, Vincent et Guillaume sont allé dans les bureaux de Docker France pour interviewer Jean-Laurent et David sur l'univers Docker et leur aventure Docker France.