Skip to main content

05 — Écrits

Blog

Sur le développement web, la performance, les outils — et, de temps à autre, quelque chose de plus grand.

06 oct. 2026Déployer sur Vercel depuis un hook git pre-push : dépôt d'organisation, plan Hobby, aucun secret de CIL'intégration Git de Vercel refuse un dépôt privé appartenant à une organisation GitHub sur le plan Hobby, et la voie CI demande des secrets de dépôt que tu n'as peut-être pas le droit d'ajouter. Voici l'option plus légère : un hook pre-push local qui déploie exactement le commit poussé avec la CLI Vercel, pendant que chacun continue de pousser sous son propre nom.Vercel · Git Hooks · CI/CD
7 min de lecture
06 oct. 2026Mis à jourDéployer sur Vercel depuis la CI quand l'auteur du commit n'est pas membre de l'équipeDéplace un dépôt dans une organisation GitHub et Vercel se met discrètement à bloquer tes déploiements : le commit « n'a pas pu être associé à un membre de l'équipe ». Voici comment je déploie plutôt depuis GitHub Actions avec la CLI Vercel — mes commits comptent toujours dans mon propre graphe GitHub, le tableau de bord montre toujours qui a poussé, et je ne paie pas un siège par contributeur.Vercel · GitHub Actions · CI/CD
8 min de lecture
05 sept. 2026Quatre bugs tuaient la sélection de texte sur iOS — et chacun cachait le suivantUn éditeur Lexical dans un drawer vaul fonctionnait partout sauf sur un vrai iPhone : les poignées de sélection refusaient de glisser, le défilement se verrouillait aux bords, la barre d'outils plongeait sous le clavier. Deviner ne réparait rien, car il n'y avait pas de coupable unique — ils étaient quatre, indépendants, et chacun masquait le suivant. Ce qui a marché : un banc de bissection — le même squelette avec un interrupteur par suspect, testé sur un appareil physique. Voici la chasse complète — le href qui empoisonne la sélection, les gestionnaires de drag de vaul, notre propre tap-focus, un conteneur qui bouge sous le doigt — plus l'autopsie du verrou de défilement et les trois écritures uniques de scrollTop qui ont rendu le rubber-band naturel, y compris la capture d'un swipe en plein rebond.iOS · Safari · WebKit
15 min de lecture
29 août 2026Une cascade d'agents : le terminal choisit celui qui fonctionneQuand Claude est tombé en partie et que certains modèles ont cessé de répondre, j'ai voulu passer à Gemini — et j'ai découvert que mon repli était cassé depuis des mois. Voici comment en bâtir un qui tienne vraiment.Claude Code · AI · CLI
9 min de lecture
17 août 2026system-droid : un gardien qui vérifie et répare mes systèmes tout seulMes services locaux mouraient en silence : le brief du matin n'arrivait pas, les jetons expiraient, la sauvegarde se figeait. Alors j'ai construit un droïde sur launchd qui vérifie tout toutes les deux heures, répare via un agent Claude ce qui peut l'être sans risque, et ne m'écrit que lorsqu'il faut vraiment un humain.Claude Code · AI · Automation
10 min de lecture
14 août 2026Une page statique qui est secrètement un test A/BUn test A/B est en général monté de sorte que la page tombe du CDN vers un rendu à chaque requête. Ce n'est pas une fatalité. Garde chaque variante entièrement statique et laisse un proxy (le middleware renommé de Next.js) résoudre l'affectation via une plateforme d'expérimentation, à partir d'un device id stable — puis réécris seulement quand le visiteur n'est pas dans le contrôle. L'URL ne change jamais, le CDN met toujours en cache, et le chemin courant ne coûte rien.Next.js · A/B Testing · Proxy
8 min de lecture
10 août 2026Mis à jourNext.js Memory Leak : Fetch + Mode Standalone — 2 ans sans correctifNext.js patche le fetch global et ajoute une couche de cache qui fuit à chaque requête. Sous Docker/K8s, cela provoque des crashes OOM toutes les quelques heures. Le bug existe depuis Next.js 14 et n'est toujours pas résolu dans 16.2.x.Next.js · Memory Leak · Docker
10 min de lecture
09 août 2026Mis à jourPlusieurs comptes Claude Code sur un seul appareilComment utiliser deux (ou plus) comptes Claude Code en parallèle — personnel et entreprise — avec isolation complète grâce à une seule variable d'environnement.claude-code · productivity · cli
4 min de lecture
05 août 2026Charger le contenu du blog à la demande dans SolidStart sans perdre le SSGTon blog livre sans doute le corps de chaque article dans un seul bundle — le mien avait grossi jusqu'à 2,88 Mo, téléchargé même sur la page d'index où tu n'as besoin que des titres. Voici comment j'ai découpé la prose de chaque article dans un chunk chargé à la demande, tout en gardant chaque page entièrement rendue côté serveur pour le SEO.SolidJS · SolidStart · Performance
8 min de lecture
05 août 2026Mis à jourCRAFT : une méthode pour utiliser l'AI sans perdre son expertiseNommer un problème sans proposer de solution ne fait que semer l'anxiété. Après l'article sur la déqualification par l'AI, voici l'ordonnance : CRAFT — cinq principes (Challenge First, Review Adversarially, Ask Why Not What, Friction on Purpose, Test Your Understanding) réunis sous un axiome unique : l'AI fait ce que vous maîtrisez déjà, vous faites ce que vous êtes encore en train d'apprendre. Une méthode pratique et mémorisable pour utiliser l'AI au quotidien sans éroder silencieusement vos compétences.ai · learning · career
6 min de lecture
28 juil. 2026Un seul écouteur au lieu d'un composant client par boutonDès l'instant où vous ajoutez le suivi analytique d'un clic à un composant, celui-ci devient un composant client qui embarque du JavaScript. Multipliez ce geste à l'échelle d'un site et le suivi à lui seul fait gonfler votre bundle. Voici l'alternative, présente dans la plateforme depuis toujours : un unique écouteur délégué, des attributs de données déclaratifs, et des composants qui restent du pur HTML rendu côté serveur.JavaScript · Analytics · Event Delegation
10 min de lecture
28 juil. 2026Un accordéon fluide avec zéro JavaScriptTout le monde se rue sur un état React et un hook de mesure de hauteur pour construire un accordéon. Le navigateur en propose un nativement depuis des années — et depuis 2024, il s'anime à l'ouverture comme à la fermeture en CSS pur. Voici la technique complète : details[name], ::details-content, interpolate-size, et la propriété qui rend aussi la fermeture animée.CSS · HTML · Accordion
9 min de lecture
27 juil. 2026Interceptez une valeur tierce dès l'instant où elle arrive sur windowUn script que vous ne contrôlez pas écrit son résultat dans un global de window à un moment que vous ne pouvez pas prévoir. La plupart du code se lance dans une course avec un timeout ou gaspille le main thread en polling. Voici le trick de l'accessor property qui transforme l'écriture en événement — plus le getter que vous ne devez pas oublier, et comment substituer entièrement la valeur.JavaScript · Web · Third-Party Scripts
9 min de lecture
24 juil. 2026Ajuster le texte à son conteneur en CSS pur — sans JavaScriptTout le monde écrit un hook JavaScript pour réduire le font-size jusqu'à ce que le texte tienne dans un conteneur. Voici une alternative pleinement fonctionnelle et sans JS, à base d'unités de container query, de clamp() et de césure selon la langue — y compris le piège de la cascade qui fait abandonner tant de gens.CSS · Container Queries · Typography
11 min de lecture
18 juil. 2026next/dynamic ne vous sauvera pas : pourquoi les pages Next.js pilotées par un CMS embarquent chaque chunkNos pages Next.js pilotées par un CMS embarquaient les ~100 composants de section sur chaque route — malgré un usage exemplaire de next/dynamic. Nous avons épuisé tous les correctifs au niveau du bundler (import() direct, découpage des fichiers, config Turbopack, splitChunks de webpack) avant de trouver la vraie cause : la atteignabilité, pas le chunking. Un codegen au build + des rewrites ont réduit le first-load JS de 53%.Next.js · Performance · Code Splitting
14 min de lecture
30 juin 2026Je sors mes boards de Miro pour les ramener dans ObsidianLe bouton Export de Miro te donne un PNG ou un PDF — une photo des données, pas les données. Si tes boards sont des load-bearing maps of thinking accumulées sur des années, leur place est dans Obsidian : editable, searchable, dans un vault local. Comment j'ai sorti les boards de Miro via la REST API et converti vers Excalidraw / Obsidian Canvas — en gardant positions, couleurs, fontes, curved connectors, mindmap nodes — et la leçon dépasse Miro : tout SaaS mérite un exit plan AVANT la première utilisation.obsidian · miro · automation
6 min de lecture
23 juin 2026Mis à jourClaude Code Multi-Profile, v2 : une architecture XDG propreAprès un mois sur l'ancienne approche par alias, j'ai refait mon setup multi-profile Claude Code dans une structure compatible XDG sous ~/.config/claude-profiles/. La vraie raison n'était pas la propreté — c'était la découverte que ~/.claude.json est un fichier séparé à la racine du home dans lequel vivaient discrètement les serveurs MCP ajoutés via --scope user.claude-code · productivity · cli
9 min de lecture
22 juin 2026Le silence que l'AI a éteintVaut-il encore la peine d'apprendre à programmer si l'AI existe ? La réponse bruyante se trompe des deux côtés. Avec la base de preuves 2025–2026 (Nature, Anthropic, AI & Society), la question n'est pas "AI ou pas", mais quelles compétences céder à l'AI et lesquelles garder pour toi — et il y a une chose qui a vraiment changé : avant, la réalité te forçait à apprendre par friction, l'AI a éteint cette pression en silence.ai · learning · career
8 min de lecture
29 mai 2026Comment écrire des agents Claude Code qui ne te mentent pasDeux règles pour construire des pipelines d'agents Claude Code fiables : un agent par spécialisation, et des commandes shell plutôt que des prompts partout où une réponse quantitative est en jeu.claude-code · agents · ai
6 min de lecture
03 mai 2026Comment connecter Claude Desktop à Obsidian — Un parcours à travers 4 serveurs MCPUne histoire réelle de recherche d'un moyen stable d'automatiser le refactoring du vault Obsidian via Claude. Ce qui a cassé, ce qui a fonctionné, et pourquoi VaultForge s'est avéré être la seule option fonctionnelle.Obsidian · Claude · MCP
9 min de lecture
17 avr. 2026Les trous noirs comme univers récursifs : de la physique au sens de l'existenceEt si chaque trou noir était un Big Bang d'un nouvel univers ? Une exploration de la cosmologie récursive et de la clôture cognitive.physics · philosophy · consciousness
10 min de lecture
17 avr. 2026L'IA a tué le CMS — du moins pour les sites simplesPourquoi les systèmes de gestion de contenu traditionnels deviennent inutiles pour les portfolios, blogs et pages d'atterrissage.ai · cms · web-development
8 min de lecture
12 avr. 2026Comment connecter Perplexity AI à Obsidian via MCP — Prise de notes directe depuis le chatConfigurez Perplexity Desktop pour lire et écrire dans votre Obsidian vault en utilisant le serveur MCP filesystem. Recherchez sur le web et sauvegardez dans vos notes en une conversation.Obsidian · Perplexity · MCP
5 min de lecture
12 avr. 2026Digest Quotidien AI avec Claude Code CLI et Obsidian — Zéro DépendanceComment j'ai construit un agent de recherche d'actualités quotidien avec un script bash de 6 lignes, le mode headless de Claude Code et macOS launchd.Claude Code · AI · Obsidian
7 min de lecture
11 avr. 2026Mode sombre Next.js sans flash ni avertissements React 19Comment remplacer next-themes par Zustand + useServerInsertedHTML pour un mode sombre sans clignotement dans Next.js 15+.next.js · react-19 · dark-mode
8 min de lecture
08 avr. 2026Comment j'ai éliminé 94 fichiers CSS bloquant le rendu dans Next.js 16 avec une fonctionnalité Turbopack peu documentéeAprès des jours à essayer chaque approche — de experimental.inlineCss aux hacks MutationObserver — j'ai découvert les Turbopack Import Attributes qui résolvent le problème de CSS bloquant le rendu dans Next.js App Router.Next.js · CSS · Performance
12 min de lecture

27 entrées