Architecture

Plus le projet grossit, plus l’IA se trompe: le bounded context comme investissement

Sur un projet green field, l’IA générative fait merveille; à mesure que le projet grossit, ses réponses perdent en justesse. Le modèle n’a pas changé: c’est le contexte qu’elle doit tenir qui a grossi. Context Budget, la méthode que j’ai mise en place sur plusieurs projets, découpe le code en bounded contexts que l’IA peut tenir en entier: le découpage se paie une fois, puis chaque requête ne paie que son propre contexte.

Lire

Sécurité

Corriger ou atténuer: le CRA ne prévoit que deux réponses

Depuis le 11 septembre 2026, le Cyber Resilience Act (CRA) impose une alerte sous 24h pour une vulnérabilité activement exploitée dans un produit, y compris sur le parc existant. Ce délai se prépare dans la chaîne de livraison, dans le nombre de versions maintenues et dans la capacité des produits à être atténués sans développeur.

Lire

IA et ingénierie logicielle

From Legacy Artifacts to Served Context: My Six-Stage Method

Six étapes pour construire un graphe de connaissances à partir de C, de PL/SQL, de PHP et de vingt ans de documents, le garder vrai release après release et le servir à un LLM: des collecteurs déterministes, une barrière SHACL, des faits ajoutés et jamais réécrits, et un graphe qui sélectionne avant que le modèle ne lise.

Lire

IA et ingénierie logicielle

Ontology-Based Context Engineering: When RAG Is Not Enough

Pourquoi le RAG vectoriel a échoué sur un legacy de deux millions de lignes, et comment une petite ontologie versionnée dans Git, avec RDF, SHACL et SPARQL, donne à un LLM un contexte filtré par release et un chemin traçable.

Lire

IA et ingénierie logicielle

I Tried BMAD on a Real Feature

BMAD avec Superpowers sur une vraie fonctionnalité, entre un backend Java et un frontend Angular: ce qu’une méthode formelle ajoute à une spécification vivante, où les deux se heurtent, et quoi adopter, adapter ou écarter.

Lire

IA et ingénierie logicielle

The Living Specification: How I Keep AI-Written Code Correct

Une spécification vivante, des invariants, des revues contradictoires par l’IA et une vérification réelle font que le code écrit par l’IA reste correct, et l’ingénierie passe de l’écriture du code à l’exercice du jugement. Seconde partie d’une série de deux articles.

Lire

IA et ingénierie logicielle

AI Writes the Code. So What Is the Engineer’s Job Now?

Comment j’ai demandé à Claude Code d’attaquer une conception plutôt que de la construire, les trois bugs que la revue contradictoire a trouvés avant tout code, et pourquoi l’ingénierie passe de la production de code à la validation technique.

Lire

Craftsmanship

Quand false ne veut rien dire

Quand une méthode peut échouer pour plusieurs raisons, retourner true ou false perd la seule information dont l’appelant a besoin, la cause: pourquoi le retour booléen est un anti-pattern, d’où il vient, et quoi retourner à la place.

Lire

DevOps

Kill Feature Branching or Die Trying

Pourquoi les branches de fonctionnalité qui s’éternisent nuisent à la livraison continue, ce que les feature toggles offrent à la place, et un exemple .NET qui permet d’activer une fonctionnalité via un en-tête HTTP en cinq étapes.

Lire

DevOps

La CI/CD n’est pas une priorité !

Mettre en place une CI/CD est souvent le premier réflexe DevOps d’une équipe, et souvent prématuré: ce qu’est une vraie chaîne, ce qu’il faut régler avant, et pourquoi la persistance et l’infrastructure méritent un soin à part.

Lire

Architecture

Building a Resilient Site-Aware Synchronization

Plusieurs sites on-premise, chacun avec sa propre base de données, qui doivent continuer à fonctionner pendant plusieurs jours de coupure réseau, puis converger malgré tout: une table outbox, un cluster RabbitMQ, un échange de type fanout, des consommateurs idempotents et une source de référence pour rejouer les événements.

Lire

DevOps

Stratégie de déploiement Blue/Green

Au-delà de la définition des manuels: les décisions qu’une équipe doit prendre, composant par composant, pour que le Blue/Green fonctionne vraiment, de la compatibilité de la persistance et des sessions au décommissionnement et au retour arrière.

Lire

Craftsmanship

Java functional programming to leverage polymorphism

Comment le switch d’une fabrique grossit à chaque nouveau cas, et comment une map d’interfaces fonctionnelles, puis une énumération, garde sa complexité constante quel que soit le nombre de types ajoutés.

Lire

Systèmes distribués

Apache Kafka along with RxJS operators

Un processeur Kafka entre deux topics ne doit perdre aucun message pendant que son producteur est en pause: pourquoi takeUntil, switchMap et combineLatest perdent des données, et comment windowToggle et bufferToggle les conservent.

Lire

Sécurité

Frontend JWT token storage

Local storage, session storage et cookies ordinaires exposent un JWT au vol: trois façons de conserver le jeton dans un navigateur, une closure, un cookie sécurisé et un service worker, et ce que chacune sacrifie.

Lire