Flux
Couleur d'accent
Toutes les sources

JoliCode

41 articles Flux RSS
Programmation Web
Ce qu'il fallait voir au Forum PHP 2026

Ce qu'il fallait voir au Forum PHP 2026

Comme chaque année, nous nous sommes rendus à la conférence phare de l'écosystème PHP en France : le Forum PHP de l'AFUP. En plus d'être sur scène pour parler de lucidité, de headers HTTP ou encore d'embbeding et de régression, nous étions aussi dans le public pour assister à de nombreux talks de qualité ! À travers cet article, nous allons passer en revue les plus grands enseignements de ces deux journées à Disneyland Paris. Les nouveautés de Symfony 8.2 Impossible de passer à côté : le…

JoliCode
JSON Streaming et AutoMapper 10.3

JSON Streaming et AutoMapper 10.3

Symfony propose depuis peu le composant symfony/json-streamer, permettant d’encoder et décoder du JSON sous forme de flux. Le but : traiter de très gros volumes sans charger l’intégralité du document en mémoire. Dans AutoMapper, notre solution pour accélérer tous vos mappings de données dans vos projets (sérialisation, object mapping, etc.), nous supportons déjà 2 composants de Symfony en proposant une implémentation alternative : symfony/object-mapper : Faire un mapping entre 2 objets…

JoliCode
dotAI 2026 : De l’illusion d’autonomie à la réalité du terrain, reprendre le contrôle sur nos agents

dotAI 2026 : De l’illusion d’autonomie à la réalité du terrain, reprendre le contrôle sur nos agents

Nous étions à la dotAI 2026. Et comme il est de coutume, voici notre retour sur ce qu’on a aimé, ce qui s'y est dit et ce qu’on y a appris. Bonne lecture ! L’année écoulée a été marquée par l’essor des architectures multi-agents et des harnesses, ces surcouches qui entourent un LLM pour le transformer en travailleur autonome. Peu à peu, nous délaissons nos IDE au profit des ADE, et passons désormais l'essentiel de notre temps à planifier et à relire du code plutôt qu'à en écrire. Cette…

JoliCode
D'un ADE à un orchestrator : la construction de PABLO

D'un ADE à un orchestrator : la construction de PABLO

Mes agents sont devenus plus rapides. Mon cerveau, non. Où nous en étions Dans mon article précédent, je décrivais mon environnement de travail : un Agent Development Environment, non pas un IDE avec un panneau de conversation greffé, mais un outil construit autour de tâches, de worktrees et d'agents. Je prends une issue, l'ADE ouvre un worktree isolé avec un agent déjà en cours d'exécution, et je dirige cet agent au lieu de taper du code. Par-dessus se trouvent les agents que j'ai affinés…

JoliCode
Castor 1.8: Windows, self-update, et des binaires vérifiables

Castor 1.8: Windows, self-update, et des binaires vérifiables

La dernière fois que nous avons parlé de Castor sur ce blog, c'était pour annoncer la sortie de la 1.0, en octobre 2025. Depuis, notre rongeur préféré a pris un rythme mensuel : une version mineure toutes les quatre à cinq semaines, avec à chaque fois quelques helpers et quelques correctifs, parfois une dépréciation pour préparer la 2.0. La 1.8 casse un peu ce rythme : 81 commits et 33 pull requests depuis la 1.7.0 de début août, et presque aucun n'ajoute de helper. Le travail est parti dans…

JoliCode
Castor 1.8: Windows, self-update, and binaries you can verify

Castor 1.8: Windows, self-update, and binaries you can verify

The last time we talked about Castor on this blog was to announce the 1.0 release, in October 2025. Since then, our favorite rodent has settled into a monthly rhythm: a minor version every four to five weeks, with a few helpers and fixes each time, sometimes a deprecation to prepare 2.0. 1.8 breaks the rhythm a bit: 81 commits and 33 pull requests since 1.7.0 in early August, and almost none of them add a helper. The work went into the parts of Castor you never look at: how it lands on your…

JoliCode
From an ADE to an Orchestrator: Building PABLO

From an ADE to an Orchestrator: Building PABLO

My agents got faster. My brain did not. Where we left off In my previous article, I described my working environment: an Agent Development Environment, not an IDE with a chat panel bolted on, but a tool built around tasks, worktrees, and agents. I pick an issue, the ADE opens an isolated worktree with an agent already running, and I direct that agent instead of typing code. On top sit the agents I refined over months, all read-only by construction; build is the only one allowed to touch code.…

JoliCode
Introducing beberlei/metrics v3.0.0

Introducing beberlei/metrics v3.0.0

Since 2012, beberlei/metrics has been doing one small job well: giving PHP applications a single, consistent API to send metrics (counters, timings, gauges...) without tying the calling code to a specific backend. Swap StatsD for Prometheus, or send to both at once, and the instrumented code never changes. Version 3.0 is the biggest release in the project's history. It drops everything older than PHP 8.4, rewrites the core API around strict types, and - the part I'm most excited about - ships…

JoliCode
Migrating from Webpack Encore to Vite with Reprise

Migrating from Webpack Encore to Vite with Reprise

We maintain a high-traffic project for one of our clients: 5 websites served by a single Symfony application, 800 Twig templates, and a React + Tailwind front end that has been built by Webpack Encore for years. A front-end build that was starting to weigh on us: over a minute of Webpack, a NODE_OPTIONS=--max_old_space_size=4096 to keep the heap from blowing up, a 200-line webpack.config.js driving two separate builds, and no hot reload for developers. Webpack Encore is reaching the end of its…

JoliCode
Migrer de Webpack Encore vers Vite avec Reprise

Migrer de Webpack Encore vers Vite avec Reprise

Nous maintenons, pour un de nos clients, un projet à fort trafic : 5 sites servis par une même application Symfony, 800 templates Twig, et un front React + Tailwind buildé depuis des années par Webpack Encore. Un build front qui commençait sérieusement à peser : plus d'une minute de Webpack, un NODE_OPTIONS=--max_old_space_size=4096 pour ne pas exploser la heap, un webpack.config.js de 200 lignes pilotant deux builds distincts, et aucun hot reload pour les développeurs. Webpack Encore arrive en…

JoliCode
SimHash : trouver les pages qui se ressemblent

SimHash : trouver les pages qui se ressemblent

Il y a quelques semaines, j'ai eu besoin de détecter du contenu dupliqué dans le crawler de redirection.io. Pas du dupliqué à la virgule près, ça c'est facile, mais du dupliqué « en gros, c'est la même page ». J'aurais pu utiliser des embeddings avec un LLM, mais il me fallait quelque chose de rapide et de gratuit. J'ai finalement utilisé SimHash, un algorithme qui date de 2002 et qui tient en trente lignes de PHP. Dans cet article, nous allons voir pourquoi md5() ne peut pas nous aider,…

JoliCode
Quand le cache de Symfony ralentit votre application...

Quand le cache de Symfony ralentit votre application...

Mettre une valeur en cache, c'est toujours plus rapide, non ? Et bien, pas forcément ! Cet article partage l'analyse d'un problème de performance causé par la protection "anti-stampede" du composant Cache de Symfony, et sur la manière dont nous l'avons diagnostiqué puis corrigé. Nous avons récemment corrigé un problème de lenteur sur une application Symfony en production. Le diagnostic nous a pris un certain temps, car la cause était contre-intuitive : le responsable était le composant Cache de…

JoliCode
L'Agent Development Environment : une nouvelle unité de travail

L'Agent Development Environment : une nouvelle unité de travail

Régulièrement, quelque chose arrive et change ce que « écrire du code » veut dire. Cette fois, il se pourrait que ça ne veuille plus dire écrire du tout. D'où je viens Ce qui suit est mon parcours, pas une histoire de PHP. D'autres ont vécu ces mêmes années très différemment. Mon histoire commence en 2013, quand PHP n'était pas le choix évident qu'il allait devenir, donc j'ai appris le C : pointeurs, gestion mémoire manuelle, segfaults. Ensuite je suis passé à l'Objective-C pour du…

JoliCode
The Agent Development Environment: A New Unit of Work

The Agent Development Environment: A New Unit of Work

The Agent Development Environment: A New Unit of Work Every few years, something comes along that changes what "writing code" means. This time, it might stop meaning writing at all. Where we come from What follows is my own path, not a history of PHP. Other people lived those same years very differently. My story starts in 2013, when PHP was not the obvious choice it would later become, so I learned C: pointers, manual memory management, segfaults. Then I moved to Objective-C for iPad…

JoliCode
Writing the PHP Virtual Machine in Rust (with a lot of help from AI)

Writing the PHP Virtual Machine in Rust (with a lot of help from AI)

A few years ago, if someone had told me to rewrite the PHP engine in Rust, I would probably have laughed 😆. Not because it is technically impossible, but because such a project traditionally requires years of reading C code, reverse engineering decades of optimizations, and an intimidating amount of perseverance. Today, Large Language Models have changed how we approach ambitious engineering projects. They do not magically produce production-ready software, but they dramatically reduce the…

JoliCode
Esc