Les Cast Codeurs Podcast

Emmanuel Bernard, Guillaume Laforge, Vincent Massol, Antonio Goncalves, Aud

Restez informes sur les sujets brulants de l industrie Java.

  • 55 minutes 31 seconds
    LCC 320 - Diataxis, la méthode de documentation

    Emmanuel, Guillaume et Arnaud se rejoignent pour discuter de Diátaxis une approche pour structurer sa documentation. Ils offrent leur perspective sur leur usage et leur compréhension. Le sujet s’ouvre ensuite pour discuter des plateformes de documentation et comment l’IA impacte la documentation. Cet épisode est aussi sorti en vidéo, n’hésitez pas nous dire ce que vous en pensez des retours et souscrivez au channel YouTube 🤗.

    Enregistré le 19 décembre 2024

    Téléchargement de l’épisode LesCastCodeurs-Episode-320.mp3 ou en vidéo sur YouTube.

    Interview

    Diátaxis

    The Good Docs Project

    Le retour d’expérience d’Emmanuel sur Diataxis

    Nous contacter

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

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

    21 December 2024, 9:49 am
  • 1 hour 10 minutes
    LCC 319 - le ramasse-miettes-charognes

    Dans cet épisde en audio et en vidéo (youtube.com/lescastcodeurs), Guillaume et Emmanuel discutent des 15 ans de Go, d’une nouvelle approche de garbage collecting, de LLMs dans les applications Java, dobservabilité, d’une attaque de chaine d’approvisionnement via javac et d’autres choses.

    Enregistré le 13 décembre 2024

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

    News Langages

    Go fête son 15ème anniversaire ! https://go.dev/blog/15years

    • discute les 15 ans
    • la corrections de gotchas dans les for loops (notamment les variables étaient loop scoped)
    • le fait que la compile echoue si on attend une version de go superieure seulement depuis go 1.21 en parallele de la gestion de la chaine d’outil (c’est en 2023 seulement!)
    • opt-in telemetrie aussi recent

    Construire OpenJDK à partir des sources sur macOS https://www.morling.dev/blog/building-openjdk-from-source-on-macos/

    • de maniere surprenante ce n’est pas tres compliqué

    Papier sur l’aproche Mark-scavenge pour un ramasse miette https://inside.java/2024/11/22/mark-scavenge-gc/

    • papier de recherche
    • utiliser l’accessibilité pour preuve de vie n’est pas idéal: un objet peut etre atteignable mais ne sera jamais accedé par le programme
    • les regions les plus pauvres en objets vivant voient leurs objets bouger dans uen autre region et la regio libéré, c’est le comportement classique des GC
    • deux methodes: mark evaguate qui le fait en deux temps et la liveness peut evoluer ; et scavenge qui bouge l’objet vivant des sa decouverte
    • ont fait tourner via ZGC des experience pour voir les objects consideres vivants et bougés inutilement.
    • resultats montrent un gros taux d’objets bougés de maniere inutile
    • proposent un algo different
    • ils marquent les objets vivants mais ne les bougent pas avant le prochain GC pour leur donner une change de devenir unreachable
    • elimine beaucoup de deplacement inutiles vu que les objets deviennent non accessible en un cycle de GC
    • jusquà 91% de reduction ! Particulierement notable dans les machines chargées en CPU.

    Les tokens d’accès court ou longs https://grayduck.mn/2023/04/17/refresh-vs-long-lived-access-tokens/

    • pourquoi des long access tokens (gnre refresh token) sont utilises pour des short lived dans oauth 2.0
    • refresh token simplifient la revocation: vu que seul le auth serveur a a verifier la révocation et les clients vérifient l’expiration et la validité de la signature
    • refresh token ne sont envoyés que entre endpoints alors que les access tokens se baladent pas mal: les frontières de confiance ne sont pas traversées
    • refresh token comme utilise infréquement, et donc peut etre protegee dans une enclave
    • les changements de grants sont plus simple tout en restant distribuable
    • histoire des access refresh token et access token permet de mieux tracer les abus / attaques
    • les inconvenients: c’est plus compliqué en flow, the auth serveur est un SPOF amis mitigeable

    Java Advent est de retour https://www.javaadvent.com/calendar

    • backstage
    • Java integrite par defaut (et ses consequences sur l’ecosysteme)
    • timefold (sovler)
    • Les extensions JUNit 5
    • OpenTelemetry via Java Agent vs Micrometer
    • analyse statique de code
    • CQRS et les fonctionalités modernes de Java
    • java simple (sans compilatrion, sans objet
    • fullstack dev with quarkus as backend

    José Paumard introduit et explique les Gatherers dans Java 24 dans cette vidéo https://inside.java/2024/11/26/jepcafe23/

    Librairies

    Micronaut 4.7, avec l’intégration de LangChain4j https://micronaut.io/2024/11/14/micronaut-framework-4-7-0-released/

    Combiner le framework de test Spock et Cucumber https://www.sfeir.dev/back/spock-framework-revolutionnez-vos-tests-unitaires-avec-la-puissance-du-bdd-et-de-cucumber/

    • les experts peuvent écrire leurs tests au format Gherkin (de Cucumber) et les développeurs peuvent implémenter les assertions correspondantes avec l’intégration dans Spock, pour des tests très lisibles

    Spring 6.2 https://spring.io/blog/2024/11/14/spring-framework-6-2-0-available-now

    • beans @Fallback
    • améliorations sur SpELet sur le support de tests
    • support de l’echape des property placeholders
    • une initioalisation des beans en tache de fond nouvelle
    • et pleins d’autres choses encore

    Comment créer une application Java LLM tournant 100% en Java avec Jlama https://quarkus.io/blog/quarkus-jlama/

    • blog de Mario Fusco, Mr API et Java et Drools
    • utilise jlama + quarkus + langchain
    • Explique les avantage de l’approche pure Java comme le cycle de vie unique, tester les modeles rapidement, securite (tout est in process), monolithe ahahah, observabilité simplifiée, distribution simplifiée (genre appli embarquée) etc

    Vert.x 5 en seconde incubation https://vertx.io/blog/eclipse-vert-x-5-candidate-2-released/

    • Support des Java modules (mais beacoup des modules vert.x eux-même ne le supportent pas
    • support io_uring dans vert.x core
    • le load balancing côté client
    • le modele des callbacks n’est plus supporté, vive les Futur
    • beaucoup d’améliorations autour de gRPC
    • et d’autres choses

    Un article sur Spring AI et la multi modalite audio https://spring.io/blog/2024/12/05/spring-ai-audio-modality

    • permet de voir les evolutions des APIs de Spring AI
    • s’appluie sur les derniers modeles d’open ai
    • des examples comme par exemple un chatbot voix et donc comment enregistrer la voix et la passer a OpenAI

    Comment activer le support experimental HTTP/3 dans Spring Boot https://spring.io/blog/2024/11/26/http3-in-reactor-2024

    • c’ets Netty qui fait le boulot
    • puis Spring Netty
    • l’article décrit les etapes pour l’utiliser dans vos applis Spring Boot ou Spring Cloud Gateway
    • l’article explique aussi le cote client (app cliente) ce qui est sympa
    Infrastructure

    Un survol des offres d’observabilité http://blog.ippon.fr/2024/11/18/observabilite-informatique-comprendre-les-bases-2eme-partie/

    • un survol des principales offres d’observabilité
    • Open source ou SaaS
    • et certains outsiders
    • Pas mal pour commencer à défricher ce qui vous conviendrait
    • blog de ippon
    Web

    Sortie de Angular 19 https://blog.ninja-squad.com/2024/11/19/what-is-new-angular-19.0/

    Angluar 19 https://www.sfeir.dev/front/angular-19-tout-ce-quil-faut-savoir-sur-les-innovations-majeures-du-framework/

    • composant standalone par default (limiter les problemes de dependances), peut le mettre en strict pour le l’imposer (ou planter)
    • signalement des imports inutilisés
    • @let pour les variables locales dans les templates
    • linkedSignal (experimental) pour lier des signaux entre eux (cascade de changement suite a un evenement
    • hydratation incrementale (contenu progressivement interactif avec le chargement - sur les parties de la page visible ou necessaires
    • et event replay, routing et modes de rendu en rendy hybride, Hot module replacement etc

    The State of Frontend — dernière compilation des préférences des développeurs en terme de front https://tsh.io/state-of-frontend/

    • React en tête, suivi de Vue et Svelte. Angular seulement 4ème
    • Côté rendering framework, Next.js a la majorité absolue, ensuite viennent Nuxt et Astro
    • Zod est la solution de validation préférée
    • Pour la gestion de date, date-fns est en tête, suivi par moment.js
    • Côté state management, React Context API en première place, mais les suivants sont tous aussi pour React !
    • Grosse utilisation de lodash pour plein d’utilités
    • Pour fetcher des resources distantes, l’API native Fetch et Axios sont les 2 vaincoeurs
    • Pour le déploiement, Vercel est premier
    • Côté CI/CD, beaucoup de Github Actions, suivi par Gitlab CI
    • Package management, malgré de bonnes alternatives, NPM se taille toujours la part du lion
    • Ecrasante utilisation de Node.js comme runtime JavaScript pour faire du développement front
    • Pour ce qui est du typing, beaucoup utilisent TypeScript, et un peu de JSdoc, et la majorité des répondants pensent que TypeScript a dépassé JavaScript en usage
    • Dans les API natives du navigateur, Fetch, Storage et WebSockets sont les APIs les plus utilisées
    • La popularité des PWA devrait suivre son petit bonhomme de chemin
    • En terme de design system, shadcn.ui en tête, suivi par Material, puis Bootstram
    • Pour la gestion des styles, un bon mix de plain old CSS, de Tailwind, et de Sass/CSS
    • Jest est premier comme framework de tests
    • Les 3/4 des développeurs front utilisent Visual Studio Code, quant au quart suivant, c’est JetBrains qui raffle les miettes
    • Pour le build, Vite récolte les 4/5 des voix
    • ESLint et Prettier sont les 2 favoris pour vérifier le code
    •  

    Parfois, on aimerait pouvoir tester une librairie ou un framework JavaScript, sans pour autant devoir mettre en place tout un projet, avec outil de build et autre. Julia Evans explore les différents cas de figure, suivant la façon dont ces librairies sont bundlées https://jvns.ca/blog/2024/11/18/how-to-import-a-javascript-library/

    • Certaines librairies permette de ne faire qu’un simple import dans une balise script
    • Certaines frameworks sont distribués sous forme d’Universal Module Definition, sous CommonJS, d’ESmodule
    • franchemet en tant que noob c’est compliqué quand même
    Data et Intelligence Artificielle

    L’impact de l’IA en entreprise et des accès aux documents un peu laxistes https://archive.ph/uPyhX

    • l’indexing choppe tout ce qu’il peut
    • et l’IA est tres puissante pour diriger des requetes et extraires les données qui auraient du etre plus restreintes

    Différentes manières de faire de l’extraction de données et de forcer la main à un LLM pour qu’il génère du JSON https://glaforge.dev/posts/2024/11/18/data-extraction-the-many-ways-to-get-llms-to-spit-json-content/

    • l’approche “je demande gentiment” au LLM, en faisant du prompt engineering
    • en utilisant du function calling pour les modèles supportant la fonctionnalité, en particulier avant les approches de type “JSON mode” ou “JSON schema”
    • ou effectivement si le modèle le supporte aussi, toujours avec un peu de prompting, mais en utilisant le “JSON mode” qui force le LLM a générer du JSON valide
    • encore mieux avec la possibilité de spécifier un schema JSON (type OpenAPI) pour que le JSON en sortie soit “compliant” avec le schéma proposé

    Comment masquer les données confidentielles avec ses échanges avec les LLMs https://glaforge.dev/posts/2024/11/25/redacting-sensitive-information-when-using-generative-ai-models/

    • utilisation de l’API Data Loss Prevention de Google Cloud qui permet d’identifier puis de censurer / masquer (“redacted” en anglais) des informations personnelles identifiables (“PII”, comme un nom, un compte bancaire, un numéro de passeport, etc)
    • pour des raison de sécurité, de privacy, pour éviter les brèche de données comme on en entend trop souvent parler dans les nouvelles

    On peut utiliser certains modèles d’embedding pour faire de la recherche de code https://glaforge.dev/posts/2024/12/02/semantic-code-search-for-programming-idioms-with-langchain4j-and-vertex-ai-embedding-models/

    • Guillaume recherche des bouts de code, en entrant une requête en langue naturel
    • Certains embedding models supportent différents types de tâches, comme question/réponse, question en langue naturelle / retour sous forme de code, ou d’autres tâches comme le fact checking, etc
    • Dans cet article, utilisation du modèle de Google Cloud Vertex AI, en Java, avec LangChain4j

    Google sort la version 2 de Gemini Flash https://blog.google/technology/google-deepmind/google-gemini-ai-update-december-2024/

    • La nouvelle version Gemini 2.0 Flash dépasse même Gemini 1.5 Pro dans les benchmarks
    • Tout en étant 2 fois plus rapide que Gemini 1.5 Pro, et bien que le prix ne soit pas encore annoncé, on imagine également plus abordable
    • Google présente Gemini 2 comme le LLM idéal pour les “agents”
    • Gemini propose une vraie multimodalité en sortie (premier LLM sur le marché à le proposer) : Gemini 2 peut entrelacer du texte, des images, de l’audio
    • Gemini 2 supporte plus de 100 langues
    • 8 voix de haute qualité, assez naturelles, pour la partie audio
    • Un nouveau mode speech-to-speech en live, où on peut même interrompre le LLM, c’est d’ailleurs ce qui est utilisé dans Project Astra, l’application mobile montrée à Google I/O qui devient un vrai assistant vocale en live sur votre téléphone
    • Google annonce aussi une nouvelle expérimentation autour des assistants de programmation, avec Project Jules, avec lequel on peut discuter en live aussi, partager son code, comme un vrai pair programmeur
    • Google a présenté Project Mariner qui est un agent qui est sous forme d’extension Chrome, qui va permettre de commander votre navigateur comme votre assistant de recherche personnel, qui va être capable de faire des recherches sur le web, de naviguer dans les sites web, pour trouver les infos que vous recherchez
    • Cet autre article montre différentes vidéos de démos de ces fonctionnalités https://developers.googleblog.com/en/the-next-chapter-of-the-gemini-era-for-developers/
    • Un nouveau projet appelé Deep Research, qui permet de faire des rapports dans Gemini Advanced : on donne un sujet et l’agent va proposer un plan pour un rapport sur ce sujet (qu’on peut valider, retoucher) et ensuite, Deep Research va effectuer des recherches sur le web pour vous, et faire la synthèse de ses recherches dans un rapport final https://blog.google/products/gemini/google-gemini-deep-research/
    • Enfin, Google AI Studio, en plus de vous permettre d’expérimenter avec Gemini 2, vous pourrez aussi utiliser des “starter apps” qui montrent comment faire de la reconnaissance d’objet dans des images, comment faire des recherches avec un agent connecté à Google Maps, etc.
    • Google AI Studio permet également de partager votre écran avec lui, en mobile ou en desktop, de façon à l’utiliser comme un assistant qui peut voir ce que vous faites, ce que vous coder et peut répondre à vos questions
    Méthodologies

    Un article de GitHub sur l’impact de la surutilisation des CPU sur la perf de l’appli https://github.blog/engineering/architecture-optimization/breaking-down-cpu-speed-how-utilization-impacts-performance/

    • c’est surprenant qu’ils ont des effets des 30% de perf
    • c’est du a la non limit thermique, au boost de frequece qui en suit
    • ils ont donc cherché le golden ratio
    • pour eux autour de 60%
    • ils prennent des morceaux de cluster kube poru faire tourner les workloads
    • et ajoutent des wqorkload CPU artificiels (genre math)
    Sécurité

    Attaque de la chaîne d’approvisionnement via javac https://xdev.software/en/news/detail/discovering-the-perfect-java-supply-chain-attack-vector-and-how-it-got-fixed

    • s’appuie sur l’annotation processeur
    • l’annotation processors des dependances est chargé et executé au moment du build du projet
    • et cherche les annotations processor dans le user classpath (via le pattern serviceloader)
    • et donc si la dependance est attaquée et un annotation processor est ajouté ou modifié on a un vecteur d’attaque au moment de la compilation du projet ciblé
    • des qu’on deparre l’IDE en gros
    • workaround, activer -proc:none et activer les annotation processors explicitly dans votre outil de build
    • certaines améliorations dans le JDK: le compilateur note qu’il execute un annotation processor
    • dans java 23+ les annotation processors sont deactivés par defaut
    Conférences

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

    Nous contacter

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

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

    16 December 2024, 10:52 am
  • 1 hour 23 minutes
    LCC 318 - La faille sous la faille sous la faille

    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.

    Enregistré le 8 novembre 2024

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

    News Langages

    Le createur de Fernflower in decompilateur qui a relancé l’outillage autour de Java 8 est mort, un hommage d’IntelliJ IDEA https://blog.jetbrains.com/idea/2024/11/in-memory-of-stiver/

    • les decompilateurs s’appuyaient sur des patterns reconnus et étaient fragiles et incomplets
    • surtout quand Java 8 a changé le pattern try catch et ajouté des concepts comme les annotations
    • le champ était moribond quand Stiver s’est lancé
    • dommage l’article n’explique pas comment le control-flow graph est genere a partir du bytecode pour ameliorer la decompilation
    Librairies

    On peut maintenant utiliser Jakarta Data Repository dans Quarkus https://in.relation.to/2024/11/04/data-in-quarkus/

    • petit article avec un projet example
    • aussi un lien sur la presentation de Jakarta Data par Gavin à Devoxx Belgique

    Quarkus 3.16 https://quarkus.io/guides/opentelemetry-logging

    • logs distribués avec OpenTelemetry (preview)
    • deserialiseurs Jackson sans reflection
    • des améliorations dans la stack de sécurité
    • TLS registry a ratjouté graphql client et keycloak admin client
    • LEs logs des container devservice et des access http sont visible dans la DevUI
    • Les extensions peuvent maintenant ecrire leur doc en markdown (c’etait juste asciidoc avant)

    Un artcile sur comment débuter en Spring Batch https://www.sfeir.dev/back/planifier-des-taches-avec-spring-batch/

    Le support OAuth2 pour RestClient arrive dans Security 6.4 / Boot 3.4. Plus de hack de WebClient dans vos applications Spring-Web ! https://spring.io/blog/2024/10/28/restclient-support-for-oauth2-in-spring-security–6–4

    • RestClient a été ajouté dans Spring Framework 6.1
    • API Fluide
    • Spring Security 6.4 simplifie la configuration OAuth2 avec le nouveau client HTTP synchrone RestClient.
    • RestClient permet des requêtes de ressources sans dépendances réactives, alignant la configuration entre applications servlet et réactives.
    • La mise à jour facilite la migration depuis RestTemplate et ouvre la voie à des scénarios avancés.

    Marre des microservices ? Revenez au monoliths avec Spring Modulith 1.3RC1, 1.2.5 et 1.1.10 https://spring.io/blog/2024/10/28/spring-modulith–1–3-rc1–1–2–5-and–1–1–10-released

    • Spring Modulith 1.3 RC1, 1.2.5, and 1.1.10 sont disponibles.
    • La version 1.3 RC1 inclut des nouvelles fonctionnalités :
    • archiving event publication completion mode
    • compatibilité avec MariaDB et Oracle avec JDBC-based event publication registry
    • Possibilité d’externaliser des événements dans des MessageChannels de Spring.
    • Expressions SpEL dans @Externalized
    • validation d’architecture technique jMolecules.
    • Les versions 1.2.5 et 1.1.10 apportent des correctifs et mises à jour de dépendances.

    Spring gRPC 0.1 est sorti https://github.com/spring-projects-experimental/spring-grpc

    • c’est tout nouveau et explorationel
    • si c’est un probleme qui vous gratte, ca vaut le coup de jeter un coup d’oeil et participer.
    • Spring Boot 3.3

    Integrer Spring avec Open Telemetry (OTLP protocole) https://spring.io/blog/2024/10/28/lets-use-opentelemetry-with-spring

    • rappel de la valeur de ce standard Open Telemetry
    • comment l’utiliser dans vos projets Spring

    Comment utiliser ollama avec Spring AI https://spring.io/blog/2024/10/22/leverage-the-power-of–45k-free-hugging-face-models-with-spring-ai-and-ollama

    • permet d’acceter aux 45k modeles de Hugging faces qui supportent le deploiement sur ollama
    • il y a un spring boot starter
    • c’est vraiment pour debuter
    Cloud

    Google Cloud Frankfort a subit 12h d’interruption https://t.co/VueiQjhCA3

    • 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
    • et des clients ont perdu des données :sweat:
    Web

    La fin de la World Wild Web Foundation https://www.theregister.com/2024/09/30/world_wide_web_foundation_closes/

    • la Fondation World Wide Web ferme ses portes.
    • 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/).

    Release du https://www.patternfly.org/ 6

    • Fw opensource pour faire de UI, sponsor RH
    • Interessant à regarder
    Data et Intelligence Artificielle

    TSMC arrête des ventes à un client chinois qui aurait revenu un processeur à Huawei et utilise dans sa puce IA https://www.reuters.com/technology/tsmc-suspended-shipments-china-firm-after-chip-found-huawei-processor-sources–2024–10–26/

    • 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

    Open AI et Microsoft, de l’amour à la guerre https://www.computerworld.com/article/3593206/microsoft-and-openai-good-by-bromance-hel[…]m_source=Adestra&huid=4349eeff–5b8b–493d–9e61–9abf8be5293b

    • 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

    Debezium 3 est sorti https://debezium.io/blog/2024/10/02/debezium–3–0-final-released/

    • Java 17 minimum pour les connecteurs et 21 pour le serveur, l’extension quarkus outbox et pour l’operateur
    • nettoyage des depreciations
    • metriques par table maintenant
    • support for mysql 9 y compris vector data type
    • oracle, default mining strategie changée
    • ehcache off-heap ajouté
    • amelioarations diverses Oracle (offline RAC node flush, max string size for Extended
    • PostgreSQL PGVector
    • etc (Spanner, vitess, …)

    NotebookLlama: une version Open Source de NotebookLM https://github.com/meta-llama/llama-recipes/tree/main/recipes/quickstart/NotebookLlama

    • Si vous avez été impressionné par les démo de Gemini Notebook, en créant des podcasts à partir de différentes resources, testez la version llama
    • Tutoriel étape par étape pour transformer un PDF en podcast.
    Outillage

    Vous aimez Maven? Bien évidemment! Vous aimez asciidoctor? Absolument! Alors la version 3.1.0 du plugin asciidoctor pour maven est pour vous !! https://github.com/asciidoctor/asciidoctor-maven-plugin

    • Le plugin permet soit de convertir des documents asciidoc de manière autonome, soit de les gérer via le site maven

    GitHub Universe: de l’IA, de l’IA et encore de l’IA https://github.blog/news-insights/product-news/universe–2024-previews-releases/

    • 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
    Méthodologies

    Les blogs de developpeurs experts Java recommandés par IntelliJ https://blog.jetbrains.com/idea/2024/11/top-java-blogs-for-experienced-programmers/

    • pas forcement d’accord avec toute la liste
    • mais elle donne de bonnes options si vous voulez lire plus de blogs Java

    Keycloak revient au semantic versioning après avoir suivi le versionage à la Google Chrome https://www.keycloak.org/2024/10/release-updates

    • ne pas savoir si une mise a jour était retrocompatible était problématique pour les utilisateurs
    • aussi les librairies clientes seront délivrées séparément et supporteront toutes les versions serveur de keycloak supportés
    Sécurité

    Un exemple d’attaque de secure supply chain théorique identifiée dans le quarkiverse et les détails de la résolution https://quarkus.io/blog/quarkiverse-and-smallrye-new-release-process/

    • dans le quarkiverse, les choses sont automatisées pour simplifier la vie des contributeurs d’extension occasionels
    • mais il y avait un défaut, les secrets de signature et d’accès à maven central étaient des secrets d’organisation
    • ce qui veut dire qu’un editeur d’extension malicieux pouvait ecrire un pluging ou un test qiu lisait ses secrets et pouvait livrer de faux artifacts
    • la solution est de séparer la construction des artifacts de l’etape de signature et de release sur maven central
    • comme cela les cles ne sont plus accessible

    Avec Okta pus besoin de mot de passe quand tu as un identifiant long :face_with_hand_over_mouth: https://trust.okta.com/security-advisories/okta-ad-ldap-delegated-authentication-username/

    • LOL
    • 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
    • Fixé le 30 octobre, 2024

    La revanche des imprimantes !! Linux ne les aime pas, et elles lui rendent bien. https://www.theregister.com/2024/09/26/cups_linux_rce_disclosed/

    • 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.
    Loi, société et organisation

    La version 1.0 de la definition de l’IA l’Open Source est sortie https://siliconangle.com/2024/10/28/osi-clarifies-makes-ai-systems-open-source-open-models-fall-short/

    • 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

    En parlant de cela un article sur l’open source washing dans les modèles https://www.theregister.com/2024/10/25/opinion_open_washing/

    • 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.
    Rubrique débutant

    Un petit article fondamental sur REST https://www.sfeir.dev/rest-definition/

    • there de Roy Fielding
    • en reaction aux protocoles lourds comme SOAP
    • 5 verbes (GET PUT, POST. DELETE, PATCH)
    • JSON mais pas que (XML et autre
    • pas d’etat inter requete
    Ask Me Anything

    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 ?

    Comment gérer différents profiles git https://medium.com/@mrjink/using-includeif-to-manage-your-git-identities-bcc99447b04b

    Conférences

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

    Nous contacter

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

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

    8 November 2024, 4:08 pm
  • 1 hour 21 minutes
    LCC 317 - les nouvelles paramétriques

    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

    Enregistré le 18 octobre 2024

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

    News Langages

    Java 23 est sorti ! InfoQ liste toutes les JEPs intégrées à la nouvelle version https://www.infoq.com/news/2024/09/java23-released/ Et FooJay plonge dans le détail https://foojay.io/today/java–23-has-arrived-and-it-brings-a-truckload-of-changes/

    Un article sur l’API ClassFile qui sera un standard dans le JDK pour manipuler des classes (ala ASM) https://www.unlogged.io/post/class-file-api-not-your-everyday-java-api

    • article long mais qui revient sur les raisons
    • notamment parce que ASM est dans le JDK et qu’ils sont un problème de poule et d’oeuf
    • et sur la forme de l’API
    • a des exemples d’usage
    • tout cela reste en preview dans le JDK
    • des optimisation comme le lazy parsing et le constant pool sharing (en gros faire de la reference sur ce qui n’a pas changé

    Tip and Tail is back: cette fois une JEP https://openjdk.org/jeps/14

    • plus qu’une keynote provocative au language summit
    • maintenant une JEP dite informative
    • le language est un pu flou sur l’objectif
    • entre regarder tip and tail pour vos librairies c’est bien
    • et adoptons tous le meme tip du JDK jusqu’aux stack applicatives

    Apple annonce la sortie de son language Swift en version 6 https://www.swift.org/blog/announcing-swift–6/

    • 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.

    Apple annonce travailler sur l’interopérabilité Swift / Java https://github.com/swiftlang/swift-java

    • comme jextract mais dans l’autre sens

    The news Java https://www.infoq.com/news/2024/10/java-news-roundup-oct07–2024/

    • 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.

    Design patterns revisited: https://www.youtube.com/watch?v=kE5M6bwruhw

    • Design and design patterns.
    • Optional: patterns and anti-patterns.
    • Iterator pattern.
    • Lightweight Strategy.
    • Factory Method using default methods.
    • Laziness using Lambda Expressions.
    • Decorator using Lambda Expressions.
    • Creating Fluent interfaces.
    • Execute Around Method Pattern.
    • Creating a Closed Hierarchy with sealed classes.

    Popularité des langages de programmation https://www.techspot.com/news/105157-python-most-popular-coding-language-but-challengers-gaining.html

    • 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.
    Librairies

    Paramétrer ses tests JUnit 5 avec @CsvSource https://mikemybytes.com/2021/10/19/parameterize-like-a-pro-with-junit–5-csvsource/

    • 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
    Infrastructure

    Turbocharged Development: The Speed and Efficiency of WebAssembly par Danielle Lancashire https://devsummit.infoq.com/presentation/munich2024/turbocharged-development-speed-and-efficiency-webassembly

    • 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.
    Web

    C’est la guerre chez Wordpress https://techcrunch.com/2024/09/26/wordpress-vs-wp-engine-drama-explained/

    • 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
    • Bref c’est le drame
    • le CEO d’automatic propose à ses employés 6 mois de salaire si ils ne sont pas d’accord avec la stratégie https://www.cio.com/article/3550331/one-twelfth-of-automattic-staff-leave-over-wordpress-wp-engine-spat.html
    • 8% ont pris l’offre

    Les WebComposants ne sont pas le fuitur https://dev.to/ryansolid/web-components-are-not-the-future–48bh

    • un article d’un auteur proéminent de framework JavaScript
    • Discute les avantages et les inconvenients de la standardisation
    • qui permet d’élever le débat mais aussi bloque des avenues d’optimisations
    • beaucoup d’exemples d’inovations en frameworks JS qui auraient été bloqués
    • Les commentaires apres l’article sont interessants aussi (en contre perspective)
    • mais tout le monde n’est pas d’accord avec cet article https://www.abeautifulsite.net/posts/web-components-are-not-the-future-they-re-the-present/
    Data et Intelligence Artificielle

    Conseils et bonnes pratiques lors de l’intégration de LLM dans une application https://glaforge.dev/posts/2024/09/23/some-good-practices-when-integrating-an-llm-in-your-application/

    • management de prompt effectif
    • versionnage et externalisation des prompts
    • fixer la version des modèles
    • optimisation et caching
    • mettre en place des rails de sécurité
    • évaluer et monitorer le comportement et la performance
    • prioriser la sécurité des données privées

    Encore une nouvelle version de LangChain4j, avec la version 0.35 ! Guillaume couvre les nouveautés côté Gemini et Google Cloud https://glaforge.dev/posts/2024/09/29/lots-of-new-cool-gemini-stuff-in-langchain4j/

    • Support des toutes nouvelles versions de Gemini 1.5 (version 002)
    • Un “document loader” pour charger des documents à partir de Google Cloud Storage
    • Un “scoring model” qui permet de faire du “reranking” de résultat, pour trouver les résultats les plus pertinents pour une requête donnée
    • Support de nouveaux paramètres des embedding models (choix de la dimensionalité des vecteurs, du troncage des textes en entrée)
    • Ajout d’un “embedding model” pour le module Google AI Gemini
    • Un estimateur de token pour Google AI Gemini
    • Support des chat listeners
    • Support des enums pour la sortie structurée JSON
    • Et plein de mise à jour de la documentation pour refleter tous ces changements et aditions

    Self Correction Algo LLM https://www.infoq.com/news/2024/10/google-deepmind-score/

    • 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.

    MongoDB 8 est sorti https://www.mongodb.com/products/updates/version-release

    • 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é

    Guillaume explore les techniques avancées de Retrieval Augmented Generation pour améliorer la qualité des résultats de recherche dans ses propres documents, avec les LLMs https://glaforge.dev/talks/2024/10/14/advanced-rag-techniques/

    • Présentations et vidéos données lors de la conférence Devoxx Belgique
    • Code des exemples disponibles sur Github
    • Techniques de chunking : sliding window, hypothetical questions, semantic chunking, context retrieval chunking
    • Techniques de retrieval : hypothetical document embedding, query compression, metadata filtering
    Outillage

    Article sur les cache alias en Infinispan https://infinispan.org/blog/2024/10/07/cache-aliases-redis-databases

    • Explique comment on peut utiliser Infinispan pour remplacer Redis
    • Explique la différence entre les database de Redis et les caches d’Infinispan
    • Explique l’utilité des alias en général
    • Explique comment on peut avoir un mapping des databases de Redis vers des caches d’Infinispan
    Sécurité

    Keycloak 26 est sorti: https://www.keycloak.org/2024/10/keycloak–2600-released

    • 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.
    Loi, société et organisation

    Introduction des licences fair source https://techcrunch.com/2024/09/22/some-startups-are-going-fair-source-to-avoid-the-pitfalls-of-open-source-licensing/

    • 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
    • on ne l’a pas testé
    Conférences

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

    Nous contacter

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

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

    21 October 2024, 9:32 pm
  • 55 minutes 8 seconds
    LCC 316 - Devoxx Belgique 2024 - On rase gratis
    13 October 2024, 10:14 am
  • 1 hour 50 minutes
    LCC 315 - les températures ne sont pas déterministes

    JVM summit, virtual threads, stacks applicatives, licences, déterminisme et LLMs, quantification, deux outils de l’épisode et bien plus encore.

    Enregistré le 13 septembre 2024

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

    News Langages

    Netflix utilise énormément Java et a rencontré un problème avec les Virtual Thread dans Java 21. Les ingénieurs de Netflix analysent ce problème dans cet article : https://netflixtechblog.com/java–21-virtual-threads-dude-wheres-my-lock–3052540e231d

    • Les threads virtuels peuvent améliorer les performances mais posent des défis.
    • Un problème de locking a été identifié : les threads virtuels se bloquent mutuellement.
    • Cela entraîne des performances dégradées et des instabilités.
    • Netflix travaille à résoudre ces problèmes et à tirer pleinement parti des threads virtuels.

    Une syntax pour indiquer qu’un type est nullable ou null-restricted arriverait dans Java https://bugs.openjdk.org/browse/JDK–8303099

    • Foo! interdirait null
    • Foo? indiquerait que null est accepté
    • Foo?[]! serait un tableau non-null de valeur nullable
    • Il y a aussi des idées de syntaxe pour initialiser les tableaux null-restricted
    • JEP: https://openjdk.org/jeps/8303099

    Les vidéos du JVM Language Summit 2024 sont en ligne https://www.youtube.com/watch?v=OOPSU4LnKg0&list=PLX8CzqL3ArzUEYnTa6KYORRbP3nhsK0L1

    • Project Leyden Update
    • Project Babylon - Code Reflection
    • Valhalla - Where Are We?
    • An Opinionated Overview on Static Analysis for Java Rethinking Java String Concatenation
    • Code Reflection in Action - Translating Java to SPIR-V Java in 2024
    • Type Specialization of Java Generics - What If Casts Have Teeth ? (avec notre Rémi Forax national !)
    • aussi tip or tail pour tout l’ecosysteme
    • quelques liens sur Babylon: Code reflection pour exprimer des langages etranger (SQL) dans Java: https://openjdk.org/projects/babylon/ et sont example en emulation de LINQ https://openjdk.org/projects/babylon/articles/linq
    Librairies

    Micronaut sort sa version 4.6 https://micronaut.io/2024/08/26/micronaut-framework–4–6–0-released/

    • essentiellement une grosse mise à jour de tonnes de modules avec les dernières versions des dépendances

    Microprofile 7 faire quelques changements et evolution incompatibles https://microprofile.io/2024/08/22/microprofile–7–0-release/#general

    • enleve Metrics et remplace avec Telemetry (metrics, log et tracing)
    • Metrics reste une spec mais standalone
    • Microprofile 7 depende de Jakarta Core profile et ne le package plus
    • Microprofile OpenAPI 4 et Telemetry 2 amenent des changements incompatibles

    Quarkus 3.14 avec LetsEncrypt et des serialiseurs JAckson sans reflection https://quarkus.io/blog/quarkus–3–14–1-released/

    • Hibernate ORM 6.6
    • Serialisateurs JAckson sans reflection
    • installer des certificats letsencrypt simplement (notamment avec la ligne de commande qui aide
    • sympa notamment avec ngrok pour faire un tunnel vers son localhost
    • retropedalage sur @QuarkusTestResource vs @WithTestResource suite aux retour de OOME et lenteur des tests mieux isolés

    Les logs structurées dans Spring Boot 3.4 https://spring.io/blog/2024/08/23/structured-logging-in-spring-boot–3–4

    • 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.
    Infrastructure

    CockroachDB qui avait une approche Business Software License (source available puis ALS 3 ans apres), passe maintenant en license proprietaire avec source available https://www.cockroachlabs.com/blog/enterprise-license-announcement/

    Polyform project offre des licences standardisees selon les besoins de gratuit vs payant https://polyformproject.org/

    Cloud

    Azure fonctions, comment le demarrage a froid est optimisé https://www.infoq.com/articles/azure-functions-cold-starts/?utm_campaign=infoq_content&utm_source=twitter&utm_medium=feed&utm_term=Cloud

    • fonctions ont une latence naturelle forte
    • toutes les lantences longues ne sont aps impactantes pour le business
    • les demarrages a froid peuvent etre mesures avec les outils du cloud provider donc faites en usage
    • faites des decentilers de latences
    • experience 381 ms cold et 10ms apres
    • tracing pour end to end latence
    • les strategies
    • keep alive pings: reveiller la fonctione a intervalles reguliers pour rester “warm”
    • dans le code de la fonction: initialiser les connections et le chargement des assemblies dans l’initialization
    • configurer dans host.json le batching, desactiver file system logging etc
    • deployer les fonctions as zips
    • reduire al taille du code et des fichiers (qui sont copies sur le serveur froid)
    • sur .net activer ready to run qui aide le JIT compiler
    • instances azure avec plus de CPU et memoire sont plus cher amis baissent le cold start
    • dedicated azure instances pour vos fonctions (pas aprtage avec les autres tenants)
    • ensuite montre des exemples concrets
    Web

    Sortie de Vue.js 3.5 https://blog.vuejs.org/posts/vue–3–5

    • Vue.JS 3.5: Nouveautés clés
    • Optimisations de performance et de mémoire:
    • 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

    Guillaume continue de partager ses aventures avec le framework LangChain4j. Comment effectuer de la classification de texte : https://glaforge.dev/posts/2024/07/11/text-classification-with-gemini-and-langchain4j/

    Pour faire varier la prédictibilité ou la créativité des LLMs, certains hyperparamètres peuvent être ajustés, comme la température, le top-k et le top-p. Mais est-ce que vous savez vraiment comment fonctionnent ces paramètres ? Deux articles très clairs et intuitifs expliquent leur fonctionnement : https://medium.com/google-cloud/is-a-zero-temperature-deterministic-c4a7faef4d20 https://medium.com/google-cloud/beyond-temperature-tuning-llm-output-with-top-k-and-top-p–24c2de5c3b16

    • 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
    • temperature d’abord puis top-k puis top-p
    • explique quoi utiliser quand

    OSI propose une definition de l’IA open source https://www.technologyreview.com/2024/08/22/1097224/we-finally-have-a-definition-for-open-source-ai/

    • gros debats ces derniers mois
    • utilisable pour tous usages sans besoin de permission
    • chercheurs peuvent inspecter les components et etudier comment le system fonctionne
    • systeme modifiable pour tout objectif y compris chager son comportement
    • et paratger avec d’autres avec ou sans modification quelque soit l’usage
    • Definit des niveaux de transparence (donnees d’entranement, code source, poids)

    Une longue rétrospective de PostgreSQL a des volumes de malades et les problèmes de lock https://ardentperf.com/2024/03/03/postgres-indexes-partitioning-and-lwlocklockmanager-scalability/

    • un article pour vous rassurer que vous n’aurez probablement jamais le problème
    • histoire sous forme de post mortem
    • des conseils pour éviter ces falaises
    Outillage

    Un premier coup d’oeil à la future notation déclarative de Gradle https://blog.gradle.org/declarative-gradle-first-eap

    • 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
    • c’est moi on on a Maven là?

    Support de Firefox dans Puppeteer https://hacks.mozilla.org/2024/08/puppeteer-support-for-firefox/

    • 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.

    Guillaume a créé une annotation @Retry pour JUnit 5, pour retenter l’exécution d’un test qui est “flaky” https://glaforge.dev/posts/2024/09/01/a-retryable-junit–5-extension/

    Architecture

    Un ancien fan de GraphQL en a fini avec la technologie GraphQL et réfléchit aux alternatives https://bessey.dev/blog/2024/05/24/why-im-over-graphql/

    • Problèmes de GraphQL:
    • Sécurité:
    • Attaques d’autorisation
    • Difficulté de limitation de débit
    • Analyse de requêtes malveillantes
    • Performance:
    • 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.

    Prensentation de Grace Hoper en 1980 sur le future des ordinateurs. https://youtu.be/AW7ZHpKuqZg?si=w_o5_DtqllVTYZwt

    • c’est fou la modernité de ce qu’elle décrit
    • Des problèmes qu’on a encore aujourd’hui
    • positive leadership
    • Elle décrit l’avantage de systèmes fait de plusieurs ordinateurs
    • récemment declassifié

    Leader election avec les conditional writes sur les buckets S3/GCS/Azure https://www.morling.dev/blog/leader-election-with-s3-conditional-writes/

    • L’élection de leader est le processus de choisir un nœud parmi plusieurs pour effectuer une tâche.
    • Traditionnellement, l’élection de leader se fait avec un service de verrouillage distribué comme ZooKeeper.
    • Amazon S3 a récemment ajouté le support des écritures conditionnelles, ce qui permet l’élection de leader sans service séparé.
    • L’algorithme d’élection de leader fonctionne en faisant concourir les nœuds pour créer un fichier de verrouillage dans S3.
    • Le fichier de verrouillage inclut un numéro d’époque, qui est incrémenté à chaque fois qu’un nouveau leader est élu.
    • Les nœuds peuvent déterminer s’ils sont le leader en listant les fichiers de verrouillage et en vérifiant le numéro d’époque.
    • attention il peut y avoir plusieurs leaders élus (horloges qui ont dérivé) donc c’est à gérer aussi
    Méthodologies

    Guillaume Laforge interviewé par Sfeir, où il parle de l’importance de la curiosité, du partage, de l’importance de la qualité du code, et parsemé de quelques photos des Cast Codeurs ! https://www.sfeir.dev/success-story/guillaume-laforge-maestro-de-java-et-esthete-du-code-propre/

    Sécurité

    Comment crowdstrike met a genoux windows et de nombreuses entreprises https://next.ink/144464/crowdstrike-donne-des-details-techniques-sur-son-fiasco/

    Les benchmarks CIS, un pilier pour la sécurité de nos environnements cloud, et pas que ! (Katia HIMEUR TALHI) https://blog.cockpitio.com/security/cis-benchmarks/

    • Le CIS est un organisme à but non lucratif qui élabore des normes pour améliorer la cybersécurité.
    • Les référentiels CIS sont un ensemble de recommandations et de bonnes pratiques pour sécuriser les systèmes informatiques.
    • Ils peuvent être utilisés pour renforcer la sécurité, se conformer aux réglementations et normaliser les pratiques.
    Loi, société et organisation

    Microsoft signe un accord avec OVHCloud pour qu’il arretent leur plaine d’antitrust https://www.politico.eu/article/microsoft-signs-antitrust-truce-with-ovhcloud/

    • la plainte était en Europe
    • mermet a des clients de plus facilement deployer les solutions Microsoft dans le fournisseur de cloud de leur choix
    • la plainte avait ete posé à l’été 2021
    • ca rendait faire tourner les solutions MS plus cheres et non competitives vs MS

    ElasticSearch et Kibana sont de nouveau Open Source, en ajoutant la license AGPL à ses autres licences existantes https://www.elastic.co/fr/blog/elasticsearch-is-open-source-again

    Outils de l’épisode

    MailMate un client email Markdown et qui gere beaucoup d’emails https://medium.com/@nicfab/mailmate-a-powerful-client-email-for-macos-markdown-integrated-email-composition-e218fe2accf3

    • Emmanuel l’utilise sur les boites email secondaires
    • un peu lent a demarrer (synchro) et le reste est rapide
    • boites virtuelles (par requete)
    • SpamSieve
    • Que macOS je crois

    Trippy, un analyseur de réseau https://github.com/fujiapple852/trippy

    • Il regroupe dans une CLI traceroute et ping
    Conférences

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

    Nous contacter

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

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

    17 September 2024, 6:32 am
  • 1 hour 23 minutes
    LCC 314 - 1000 fois 1000 dépendances

    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 ?

    Enregistré le 12 juillet 2024

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

    News Langages

    Les fonctionnalités de JDK 23 ont été figées début Juin (release prévue en septembre) https://openjdk.org/projects/jdk/23/ https://www.youtube.com/watch?v=kzjGp7LmW0I

    • JEPs finales:
      • 467: Markdown Documentation Comments
      • 471: Deprecate the Memory-Access Methods in sun.misc.Unsafe for Removal
      • 474: ZGC: Generational Mode by Default
    • JEPs en incubation / preview
      • 455: Primitive Types in Patterns, instanceof, and switch (Preview)
      • 466: Class-File API (Second Preview)
      • 469: Vector API (Eighth Incubator)
      • 473: Stream Gatherers (Second Preview)
      • 476: Module Import Declarations (Preview)
      • 477: Implicitly Declared Classes and Instance Main Methods (Third Preview)
      • 480: Structured Concurrency (Third Preview)
      • 481: Scoped Values (Third Preview)
      • 482: Flexible Constructor Bodies (Second Preview)
    Librairies

    Le transactional outbox pattern avec Spring Boot https://www.wimdeblauwe.com/blog/2024/06/25/transactional-outbox-pattern-with-spring-boot/

    • 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)

    Comment tester des valeurs de propriétés différentes dans un test Quarkus https://quarkus.io/blog/overriding-configuration-from-test-code/

    • on a tendance a ne pas tester les propriétés de config
    • ce blog montre 5 (enfin 4 utiles) façons de le faire avec Quarkus.
    • les profils de test, mocker l’objet de config, les test components (experimental), l’injection dans les constructeurs

    Quarkus 3.12 https://quarkus.io/blog/quarkus-3-12-0-released/

    • centralisation des configs TLS
    • support pour le load shedding (reject requests on service overload)
    • événements JFR specific a Quarkus
    • native image agent
    • support Spring Boot 3 (compat layer)
    • Support Kotlin 2
    • etc
    Cloud

    On vous parlait dans un épisode précédent de ce problème de coûts S3 sur des requêtes non autorisées. C’est Graphana Loki qui a mis ce problème sous les projecteurs https://grafana.com/blog/2024/06/27/grafana-security-update-grafana-loki-and-unintended-data-write-attempts-to-amazon-s3-buckets/

    • 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.

    https://ai-sdk-chrome-ai.vercel.app/

    • Nécessite Chrome 127 (version stable à partir de mi-juillet)
    • Utilise le SDK Vercel AI

    Guillaume nous parle de toutes les nouveautés liées au modèle Gemini de Google dans la dernière release de LangChain4j https://glaforge.dev/posts/2024/07/05/latest-gemini-features-support-in-langchain4j/

    Outillage

    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)!!!

    https://www.sonatype.com/blog/maven-central-and-the-tragedy-of-the-commons

    • 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…

    https://piotrminkowski.com/2024/06/13/getting-started-with-backstage/

    • 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)
    Architecture

    Que se passe t’il quand vous faites un push sur GitHub? https://github.blog/2024-06-11-how-we-improved-push-processing-on-github/

    • 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
    • plus de taches peuvent faire un retry
    • un classique de decoupling via un EDA
    Sécurité

    Attaque du CDN polyfill.io https://sansec.io/research/polyfill-supply-chain-attack

    • 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://securityboulevard.com/2024/07/cocoapods-apple-vulns-richixbw/

    • 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

    https://hendrik-erz.de/post/understanding-totp-two-factor-authentication-eli5

    • Cet article revient sur le fonctionnement de TOTP et comment l’implementer avec des exemples en python
    • the QR code est une URL qui contient: le secret en base 32. le nom du totp, qui a fournit le TOTP, combien de chiffres et la durée de vie du TOTP
    • pour generer les chiffres, prends le secret, le temps et hash le tout, prendre 4 bytes et les convertir le chiffres
    • typiquement le serveur genere les deux d’avant, les deux d’apres et le courant pour comparer
    Loi, société et organisation

    L’équipe Apache Maven gagne le troisième prix BlueHats https://nlnet.nl/bluehatsprize/2024/3.html

    • 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.

    La clause de congés illimités en Europe

    https://www.osborneclarke.com/insights/why-your-unlimited-vacation-policy-may-be-of-limited-use-in-europe

    • 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

    https://support.opendns.com/hc/en-us/articles/27951404269204-OpenDNS-Service-Not-Available-To-Users-In-France-and-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 !

    Conférences

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

    Nous contacter

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

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

    16 July 2024, 9:17 am
  • 1 hour 19 minutes
    LCC 313 - 313 CCL

    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 ?

    Enregistré le 14 juin 2024

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

    News Langages

    Android avec Kotlin Multiplatform our Flutter avec Dart ? https://developers.googleblog.com/en/making-development-across-platforms-easier-for-developers/

    • 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.

    Recap de KotlinConf https://x.com/gz_k/status/1793887581433971083?s=46&t=C18cckWlfukmsB_Fx0FfxQ

    • RPC multiplatform
    • la pres Grow with the flow montrant la reecriture en kotlin plus simple que des solutions complexes ailleurs
    • power-assert pour ecrire des tests
    • Kotlin 2.0 et les evolutions majeures
    • Kotlin multiplatforme mainteant stable
    • Kotlin Compose Multiplatform continue a amturer
    • Retour d’experience de la migration d’android jetpack vers Kotlin Multiplatform
    • use cases de coroutines et scope
    Librairies

    Quarkus veut aller dans une fondation https://quarkus.io/blog/quarkus-in-a-foundation/

    • ameliorer l’adoption (encore plus), ameliorer la transparence, et la collaboration, encourager la participatiopn multi vendeur
    • Premiere etape : une gouvernance plus overte
    • Deuxieme etape: bouger dans uen foundation
    • Echange avec la communaute sur la proposition et les fondations cibles
    • Des criteres pour al foudnation (notamment la rapidite de delivery

    Quarkus 3.11 https://quarkus.io/blog/quarkus-3-11-0-released/

    • Websocket.next en cours
    • Dev services pour observabilite (grafana, jaegel, open telemetry
    • extension infinispan cache
    • #38448 - Observability extensions - Dev Services, Dev Resources, LGTM
    • #39836 - Infinispan Cache Extension
    • #40309 - WebSockets Next: client endpoints
    • #40534 - WebSockets Next: initial version of security integration
    • #40273 - Allow quarkus:run to launch Dev Services
    • #40539 - Support for OIDC session expired page
    • #40600 - Introduce OidcRedirectFilter

    LangChain4j 0.31 est sorti https://github.com/langchain4j/langchain4j/releases/tag/0.31.0

    • Recherche Web pour le RAG avec Google et Tavily
    • RAG avec les bases de données SQL (expérimental)
    • Récupération des resources remontées par le RAG lorsque AiServices retourne un Result
    • Observabilité LLM pour OpenAI pour être notifié des requêtes, réponses et erreurs
    • Intégration de Cohere (embedding), Jina (embedding et re-ranking scoring), Azuere CosmosDB comme embedding store
    • Mise à jour de Gemini avec le parallel function calling et les instructions système

    Spring Boot 3.3.0 est sorti https://spring.io/blog/2024/05/23/spring-boot-3-3-0-available-now

    • support Class Data Sharing
    • Micrometer sipport de spantag etc
    • Amelioration Spring Security comme JwtAuthenticationCovnerter
    • support docker compose pour les images container bitnami
    • Virtual thread pour les websockets
    • Support sBOM via an actuator
    • SNI for embedded web servers
    • une nouvelle doc via antora

    Micronaut 4.5 est sortie https://github.com/micronaut-projects/micronaut-platform/releases/tag/v4.5.0

    • 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
    Web

    Angular 18 est sorti https://blog.angular.dev/angular-v18-is-now-available-e79d5ac0affe

    • 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.
    Data et Intelligence Artificielle

    Une version pure Java du LLM Llama3 de Meta https://github.com/mukel/llama3.java/tree/main

    • utilise la future API Vector de Java

    JLama, un moteur d‘exécution de LLM en Java avec l’api vector https://www.infoq.com/news/2024/05/jlama-llm-inference-java/

    • basé sur llama.c qui est un moteur d’inference de LLM (l’execution des requetes)
    • jlama implementé avec vector APIs et PamanaTensorOperations
    • plusisures alternatives (native binding, iml0ementation pure en java, scala, kotlin)

    Target Speech Hearing https://www.infoq.com/news/2024/05/target-speech-hearing/

    • 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.
    Outillage

    Utiliser LLM pour migrer du framework de testing https://www.infoq.com/news/2024/06/slack-automatic-test-conversion/

    • 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.

    IDE de test de JetBrains https://blog.jetbrains.com/qa/2024/05/aqua-general-availability/

    • 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
    Méthodologies

    Les 10 principes à suivre, selon le créateur de cURL, pour être un bon BDFL (Benevolent Dictator For Life) https://daniel.haxx.se/blog/2024/05/27/my-bdfl-guiding-principles/

    • Être ouvert et amical
    • Livrer des produits solides comme le roc
    • Être un leader de l’Open Source
    • Privilégier la sécurité
    • Fournir une documentation de premier ordre
    • Rester indépendant
    • Répondre rapidement
    • Suivre l’actualité
    • Rester à la pointe de la technologie
    • Respecter les retours d’information
    • Dans un vieil article de Artima, Guido Van Rossum, le créateur de Python et premier BDFL d’un projet, se remémore un échange de 1995 qui est à l’origine de ce concept https://www.artima.com/weblogs/viewpost.jsp?thread=235725
    • Guido Van Rossum a été le premier à endosser ce “rôle”

    Un site compréhensif sur les build reproductibles https://reproducible-builds.org

    • longue doc
    • de la definition aux méthodes pour resoudre des problèmes spécifiques

    Masterclass de Fabien Olicard: Le Palais Mental https://www.youtube.com/watch?v=u6wu_iY4xd8

    • Technique pour retenir de l’information plus longtemps que dans sa mémoire courte

    Les APIs web ne devraient pas rediriger HTTP vers HTTPS https://jviide.iki.fi/http-redirects

    • grosso modo le risque majeur est d’envoyer des données confidentielles en clair sur le réseau
    • le mieux serait de ne pas rediriger vers HTTPS, mais par contre de retourner une vraie erreur explicite
    • notamment les clés d’API et c’est facile de ne pas le,voir vu les redirects.
    Sécurité

    Blog de GitHub sur la provenance et l’attestation https://github.blog/2024-04-30-where-does-your-software-really-come-from/

    • Discute les concepts de securisation de chainne d’approvisionnement de sogiciel et comment elles s’articulent entre elle. A haut niveau
    • discute les hash pour garantir le meme fichier
    • La signature asymetrique pour prouver que j’ai signé (e.g. le hash) et donc que je garantis.
    • L’attenstation qui declare des faits sur un artifact
    • attestation de provenance: source code et instructions de build (SLSA provenance)
    • mais il faut garantir les signature avec une autorite de certification et avec des certificats a courte vide idealement, c’est sigstore
    • MEtionne aussi The Update Framework pour s’appuyer sur cela et garantir des undates non compromis

    Keycloak 25 est sorti https://www.keycloak.org/2024/06/keycloak-2500-released.html

    • Argon2 pour le hashing de mots de passe
    • Depreciation des adaptateurs (Tomcat, servlet etc)
    • Java 21 et depreciation de Java 17
    • session utilisatur persistente meme pour les instances online (pour survivre a une rotation de keycloak
    • ameliorations autour des passkeys
    • management et health endpoint sur un port different
    • Et plus
    Demande aux cast codeurs

    A 40 ans, tu peux encore être codeur reconnu ?

    Conférences

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

    Nous contacter

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

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

    15 June 2024, 8:17 am
  • 1 hour 53 minutes
    LCC 312 - Dans la ferme de Mathurin IA IA IO !

    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.

    Enregistré le 17 mai 2024

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

    News Langages

    Un runtime WASM en Java https://github.com/dylibso/chicory

    • Projet tout nouveau, encore loin de la maturité
    • Mais intéressant à suivre pour exécuter du code WebAssembly dans une application Java
    • le projet n’a pas 15 jours non plus quand même :)
    • Faire tourner des plugins WASM dans la JVM (e.g. plugins)

    On peut faire des heap dump en cas de OutOfMemoryException en compilation native https://quarkus.io/blog/heapdump-oome-native/

    • depuis JDK 21
    • Un exemple avec Quarkus
    • Et le GC epsilon

    100 exercices pour se mettre à Rust https://rust-exercises.com/

    Librairies

    Hibernate 6.5 est sorti https://in.relation.to/2024/04/25/orm-650/

    • 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
    • Une tech preview de Jakarta Data

    En parlant de Jakarta Data, deux articles sur le sujet https://in.relation.to/2024/04/01/jakarta-data-1/ https://in.relation.to/2024/04/18/jakarta-data-1/

    • concept de repository pas lié à une entité mais à une relation logique entre les recherches
    • interagit via stateless session et est un bean CDI
    • Code généré bien sur
    • 4 opérateur crud et les requêtes save est up sert
    • Type sage au sens ou le nom des méthodes n’est pas la logique de recherche
    • Annotation et nom des paramètres et c’est type safe via un annotation processor
    • ou string dans @Query qui est type safe aussi via le processeur
    • discute plus de type safety et pagination

    Quarkus 3.10 avec quelques nouveautés https://quarkus.io/blog/quarkus-3-10-0-released/

    • flyway 10 arrive avec support natif
    • Hibernate search supporte le standalone POJO mapper notamment pour elastic search (pas que ORM)
    • Modification des propriétés Quarkus.package automatiquement remplacées par quarkus update
    • et Quarkus 3.9 a fait son grand renommage réactif https://quarkus.io/blog/quarkus-3-9-1-released/
    • 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
    • la encore quarkus update à la rescousse

    Un article sur l’api structured output pour Spring AI https://spring.io/blog/2024/05/09/spring-ai-structured-output

    • un article descriptif sur quand cette api est utilisée
    • Et les détails de son usage

    Comment passer une TimeZone dans spring boot et ce que cela impacte en terme de composants https://www.baeldung.com/spring-boot-set-default-timezone

    • du basique mais toujours utile
    • Task ou app
    • Programmatiquement
    • Sur certains lifecycles de Spring
    Infrastructure

    Un article et la vidéo de Devoxx France sur la haute disponibilité de Keycloak, comment c’est implémenté https://www.keycloak.org/2024/05/keycloak-at-devoxx-france-2024-recap

    • l’infra d’identité est une infra clé
    • Donc gérer la haute disponibilité est critique
    • C’est un article qui pointe sur une vidéo de Devoxx France et la doc de keycloak sur comment tout cela est implémenté
    Cloud

    Comment se ruiner avec des buckets S3 https://medium.com/@maciej.pocwierz/how-an-empty-s3-bucket-can-make-your-aws-bill-explode-934a383cb8b1

    • Amazon fait payer pour les requêtes non autorisées
    • Il suffit de connaître le nom d’un bucket pour faire payer son propriétaire
    • Amazon travaille pour fournir une solution / un fix.
    • il est tombé par hasard sur un nom de bucket utilisé « pour de faux » par un outil open source populaire
    • Bien rajouter un suffixe à ses buckets peut réduire le risque
    • Mais pas l’éliminer
    • un fix a été livré par amazon https://aws.amazon.com/about-aws/whats-new/2024/05/amazon-s3-no-charge-http-error-codes/
    Data et Intelligence Artificielle

    Guillaume résume GoogleIO https://x.com/techcrunch/status/1790504691945898300?s=61&t=WImtt07yTQMhhoNPN6lYEw

    • AI overview plus besoin d’aller sur les sites

    Google I/O 2024

    OpenAI lance son nouveau modèle: gpt-4o http://openai.com/index/hello-gpt-4o/

    https://claude.ai/ est disponible en europe

    • Claude, le modèle est créé par Anthropic:
    • 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?

    Grok le modèle de X/Twitter/Musk est aussi dispo en Europe https://x.com/x/status/1790917272355172401?s=46&t=GLj1NFxZoCFCjw2oYpiJpw

    • un truc unique c’est qu’il utilise les tweet comme reference sur ce qu’il dit. Par exemple demande les meilleurs Java Champions
    • et c’est sur les tweet recents , probablement une sorte de RAG ou une sorte de fine tuning sur les derniers tweets, je ne sais pas

    L’algorithm des modeles de diffusion expliqués https://x.com/emmanuelbernard/status/1787565568020619650

    • deux articles, un general et lisible
    • l’autre plus abscon mais avec certains details interessants sur le downsizing
    • étapes ajout de bruit à des images (learning) pour après appliquer le process opposé le reverse diffusion process
    • On prédit le bruit à enlever, on l’enlève et on repère le processus.
    • Et tout cela est influencé par le prompt.

    Reindexation sans downtime des données de documentation de Quarkus, en quarkus bien sûr https://quarkus.io/blog/search-indexing-rollover/

    • utilise hibernate search
    • Utilisé Elasticsearch / opensearch
    • Article qui explique une des approches pour reindexer sans downtime via index alias
    Outillage

    Un article qui parle de l’outil de build bld, peu connu, qui permet d’écrire ses builds simplement dans une classe Java https://sombriks.com/blog/0070-build-with-bld-and-why-it-matters/

    IntelliJ 2024.1 est sorti https://blog.jetbrains.com/idea/2024/05/what-s-new-in-intellij-idea-ultimate-2024-1/

    • complétion de ligne entière (deep learning)
    • Assistant AI amélioré
    • Spring Boot support amélioré sur bean completion et génération de diagramme
    • Support de dev containers simplifié
    • Amélioration support quarkus avec notamment icône dev ui et config des tests
    • Support OpenRewrite
    • Server wiremock
    • et plein d’autres choses

    En version beta public, Homebrew permet de vérifier la provenance des packages (bottles) https://blog.trailofbits.com/2024/05/14/a-peek-into-build-provenance-for-homebrew/

    Mettez à jour git en version 2.45.1 pour fixer des failles de sécurité https://github.blog/2024-05-14-securing-git-addressing-5-new-vulnerabilities/

    • 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/.
    Architecture

    Visualisation des algorithmes de rate limitation https://smudge.ai/blog/ratelimit-algorithms

    Méthodologies

    Le problème de l’implémentation alternative https://pointersgonewild.com/2024/04/20/the-alternative-implementation-problem/

    • 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

    Le mode vigilant dans GitHub https://x.com/emmanuelbernard/status/1790026210619068435

    Loi, société et organisation

    Une perspective sur Redis et les changements de license par un devrel AWS OpenSearch https://www.infoworld.com/article/3715247/the-end-of-vendor-backed-open-source.html

    • les sociétés regardent l’impact légal des licenses source available pour elles même en usage interne
    • Ça casse l’écosystème de spécialisations au dessus du produit (logz.io au dessus d’elastic démarré avant le changement de license)
    • Redis top 10 contribs à AWS et Alibaba er Huawei et 3 redis. Donc c’est pas redis qui contribue tout.
    • La plupart des ingénieurs de redislab ne bossent pas sur redis OSS, mais sur cloud et entreprise
    • Peut être la fin des single vendor oss
    • Il n’y a que les cloud providers qui peuvent fournir du OSS sans affecter leur structure du coût
    • C’est un ex AWS en fait. Maintenant indépendant

    Microsoft va investir 4 milliards en France (datacenters et IA) https://news.microsoft.com/fr-fr/2024/05/13/microsoft-announces-the-largest-investment-to-date-in-france-to-accelerate-the-adoption-of-ai-skilling-and-innovation/

    Outils de l’épisode

    ASDF un gestionnaire de version multi-runtime https://asdf-vm.com

    • Arnaud l’avait recommandé mais je restais sur rvm
    • apres des deboires, je suis passé a asdf, qui fonctionne
    • mais pour le jdk j’utilise sdkman
    • pour les javaistes ca parrait plus poussé
    Conférences

    Les videos de Devoxx France sont en ligne https://www.youtube.com/playlist?list=PLTbQvx84FrARars1vXos7mlPdvYJmsEoK

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

    Nous contacter

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

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

    21 May 2024, 1:08 pm
  • 1 hour 15 minutes
    LCC 311 - Tu changes ta licence et tu vends

    Cet épisode news revient sur le rachat de Hashicorp par IBM, sur le changement de license Redis, sur le bug macos 14.4 et Java, sur la faille de de chaine d’approvisionnement sur XZ. Et nous débutons notre subrique Ask Me Anything. N’hésitez pas à nous soumettre vos question sur https://lescastcodeurs.com/ama.

    Enregistré le 26 avril 2024

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

    News Langages

    Attendez peut-être avant d’upgrader macOS à la version 14.4, si vous faites du Java ! Attention le crash ! https://blogs.oracle.com/java/post/java-on-macos-14-4

    Article de Gunnar Morling sur la nouvelle API de “gatherer” de Java 22, pour améliorer les streams, ici en montrant une implémentation d’un “zipper” qui assemble les éléments de 2 streams 2 à 2 https://www.morling.dev/blog/zipping-gatherer/

    • on a parlé des gatherers déjà qui permet de faire de faire des opérateurs intermediaries custom par rapport à ce que je JDK offre
    • ici Gunnar montrer un zipper qui n’est pas présent par défaut

    Julien Ponge est Java champion, félicitations !

    JFR 9 est sorti https://hirt.se/blog/?p=1477

    • peut tourner dans Eclispe
    • Support de arm64 pour Linux et macOS
    • Dark mode !
    • Des améliorations de performance
    • Support graalvm native image
    • Nouveau afficheur de flame graph
    • G1 pause target compliance
    Librairies

    Nouvelle version de Jilt, l’annotation processor qui implémente les builders https://www.endoflineblog.com/jilt-1_5-released

    • Evite les hacks à la Lombok
    • Une nouvelle méthode toBuilder() pour obtenir un builder d’un bean déjà configuré
    • Support des méta-annotations, histoire de pas répéter sur chaque type comment on souhaite définir ses builders
    • Possibilité de mettre l’annotation @Builder sur les constructeurs privés
    • Support agnostique de @Nullable quel que soit l’origine de cette annotation
    Infrastructure

    IBM pourrait racheter Hashicorp https://www.reuters.com/markets/deals/ibm-nearing-buyout-deal-hashicorp-wsj-reports-2024-04-23/

    Web

    Google intègre son framework interne Wiz dans Angular https://blog.angular.io/angular-and-wiz-are-better-together-91e633d8cd5a

    • Wiz est un framework interne à Google utilisé dans des produits comme Google Search ou Photos, très axé sur la performance
    • Wiz va amener plus de performance à Angular, tout en gardant la super interactivité d’Angular
    • Wiz historiquement sur la perf et peu d’interactions utilisateur, angular sur interactions riches et super experience developer
    • Wiz server side rendering first et streamé, ce qui élimine le javascript dans le chemin de charge initial
    • des fonctions comme deferred views sont venu vers angular et signals sont venu a wiz
    • vont merger au fur et a mesure des prochaines années via Angular comme receptacle open
    Data et Intelligence Artificielle

    Redis aussi se met à changer sa licence pour une licence pas tout à fait open source. Un fork nommé Valkey, animé par des mainteneurs de Redis, rejoint la fondation Linux https://www.linuxfoundation.org/press/linux-foundation-launches-open-source-valkey-community

    • AWS, Google, Oracle, Ericsson et Snap sont nommés dans l’effort
    • Open Source fight back mais via des grands acteurs qui ont un interet dans la version “gratuite” pour le cloud
    • les infos de Redis https://redis.com/blog/redis-adopts-dual-source-available-licensing/
    • En gros releasé sous SSPL (comme MongoDB) ou une license spécifique Redis
    • RSAL est source available license (dont pas open source) et SSPL est pas reconnu comme open source par l’OSI car elle impose des restrictions à l’usage
    • du coup certaines fonctions closed sources deviennent source available
    • Met les cloud provider en cause du problème, ils font de l’argent et commodetize Redis sans redonner du revenu aux développeurs de Redis
    • est-ce que les gens seront ok de continuer a coder pour du code pas open, juste disponible
    • et évidemment ca casse l’écosystème redis ou open source qui voulait utiliser redis en tant qu’open
    • pas autorisé de faire du support sur un produit qui derive de redis sans payer une license si c’est “compétitif”

    Elon Musk tient sa promesse et ouvre son Large Language Model, Grok https://x.ai/blog/grok-os

    • Modèle de 314 milliards de paramètres (Pi !)
    • Architecture MoE (Mixture of Experts) qui fait qu’il n’y a que 25% des neurones actifs à l’inférence (efficace et rapide)
    • C’est un modèle “pre-trained”, de base, non-finetuné, donc pas très utilisable en l’état (il faut le finetuner en mode “instruct” et/ou “chat” pour qu’il soit vraiment utilisable)
    • Le code dans le repo Github, ainsi que les poids du réseau de neurones, sont OSS sous licence Apache 2
    • L’entrainement a été effectué avec JAX et Rust !
    • La cut-off date est Octobre 2023
    Outillage

    Oracle lance son extension VSCode pour Java https://devclass.com/2024/03/19/java-22-is-out-and-oracle-is-pushing-its-own-extension-for-vs-code-over-not-very-good-red-hat-alternative/

    • une extension en competition avec l’extension officielle et historique Java faite par MS et Red Hat
    • Oracle estime l’extension pas tres bonne cafr basée sur le compilateur Eclipse
    • 33M de telechargements quand même
    • La nouvelle s’appuie sur javac donc proche de la verite par definition et en avance par definition de la facon dont Oracle release quand il veut
    • aligné avec le timing de simplification de Java pour les débutants
    Sécurité

    Rémi Forax nous partage cet article sur les puces M1/M2/M3 d’Apple, qui utilisent un nouveau “prefetcher” un peu trop agressif qui permet de leaker les clés utilisées lors des opérations cryptographiques : https://arstechnica.com/security/2024/03/hackers-can-extract-secret-encryption-keys-from-apples-mac-chips/

    • comme d’hab pour les side channels attaques de de type c’est su un autre process peut tourner sur la machine et être adversaire
    • lié a un data dependent memory fetcher
    • dans ce cas, un champ est soit une valeur, soit un pointeur et Appel pre-fetch dans le cas où c’est un pointeur
    • et c’est attaquable en injectant des variables qui ressemblent a des pointeurs vers des données controlées et on peut en déduire la clés secrete si cette variable et la clé ont des opérations
    • mais le code peut désactiver cette optimisation si j’ai bien compris

    L’histoire d’une porte dérobée dans le projet open source XZ qui a failli mettre à mal toutes les connexions sous Open SSH, avec pour tâche de fond la fragilité de projets open source maintenu par des individuels bénévoles à bout de souffle https://uwyn.net/@[email protected]/112190942187106096

    Les impacts de laisser trainer son secret client dans les connections Keycloak https://medium.com/@benjaminbuffet/dis-keycloack-cest-grave-si-je-laisse-tra%C3%AEner-mon-client-secret-d371a0f657ee

    • un article qui explique les raison plutôt que de dire c’est mal car c’est secret
    • quand on utilise un mot de passe du client (et pas un JWT signé ou une clé privé)
    • si ca se perd, c’est l’usurpation de l’identité d’un utilisateur via son usage de client qui est en jeu (donc joué en tant que)
    • ou usurper l’identité client en tant que telle (plus facile)
    • et quelques conseils pour réduire ce risque
    Loi, société et organisation

    JavaOne serait de retour pour de vrai ? https://www.oracle.com/javaone/

    • En mars 2025, c’est dans un an, on a le temps !
    • Ça se déroulera sur le campus d’Oracle dans la Silicon Valley
    • peu d’infos et de détail, pas sur que cela soit le JavaOne de nos souvenirs.

    Des infos concretes sur l’IA souveraine Albert https://x.com/emile_marzolf/status/1783072739630121432

    AMA, Ask Me Anything

    Hamza:

    “Comment être un rockstar dans le domaine, s’il vous plaît une réponse détaillée sur le plan d’action veille, auto formation, side projets …… depuis vos expériences personnelles. Merci d’avance”

    Conférences

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

    Nous contacter

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

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

    29 April 2024, 6:43 am
  • 52 minutes 46 seconds
    LCC 310 - Les Cast Codeurs à Devoxx France 2024 : sous-titre édition

    La clôture de Devoxx France 2024 avec les cast codeurs. L’année où le sous-titrage était un personnage à part entière de Devoxx France. Vous aurez beaucoup plus de plaisir et de contexte en regardant la vidéo qu’en écoutant cet épisode. Les sous titres jouent un rôle important. Donc pour une fois ne nous écoutez pas, regardez nous :o)

    Enregistré le 19 avril 2024

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

    News

    L’enregistrement en direct de Devoxx France 2024.

    Nous contacter

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

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

    24 April 2024, 8:24 am
  • More Episodes? Get the App
© MoonFM 2025. All rights reserved.