Notes

Blog

Notes sur le frontend, le SEO, l'IA, l'analytics et la création de vrais produits.

39 articles

28 août 202613 min de lecture

Deux mois avec Bunny Storage derrière Nginx : pourquoi j’ai déplacé images, vidéos et audio vers un serveur média dédié

Pendant deux mois, j’ai utilisé Bunny Storage comme origin privé derrière mon propre cache Nginx, sans passer par Bunny CDN. Les logs de production ont révélé des latences extrêmes et des timeouts sur les médias froids, ainsi qu’un problème MP4 distinct entre Nginx Slice et des ETag incohérents ; j’ai finalement opté pour un origin média privé beaucoup plus simple.

Bunny StorageNginxCache vidéoCache missServeur média
20 août 202610 min de lecture

SSIMULACRA2 pour le transcodage WebP vers AVIF : pourquoi j'utilise 60 pour les sources et 65 pour les dérivés avec perte

Lorsqu'un AVIF est créé à partir d'un WebP déjà compressé avec perte, SSIMULACRA2 ne mesure que la deuxième génération de dégradation. J'utilise donc 60/58 pour les sources propres et 65/63 pour les dérivés lossy identifiés.

AVIFWebPSSIMULACRA2Compression d'imagesPerformance web
17 août 202613 min de lecture

DeepSeek a augmenté ses prix — j’ai trouvé le même V4 Flash moins cher que l’ancien tarif

Le 17 août, mes dépenses sur l’API DeepSeek ont soudainement atteint environ cinq fois leur niveau habituel. J’ai ensuite trouvé et testé un autre fournisseur proposant le même checkpoint DeepSeek-V4-Flash-0731 à des prix environ 45% inférieurs aux anciens tarifs de DeepSeek.

DeepSeekRunwareAPI LLMInfrastructure IAModèles open-weight
13 août 202615 min de lecture

Comment je convertis des WebP animés, GIF et APNG en H.264 MP4 sans altérer les images ni la temporisation

Ma chaîne de production reconstruit les images complètes réellement affichées, préserve la temporisation de la source, choisit un seul CFR pour chaque MP4 final, calcule le plus petit canevas commun sans agrandissement, encode des segments H.264 compatibles, les concatène sans seconde compression avec pertes et valide à la fois le fichier et sa diffusion HTTP. Lors d’une exécution mesurée, 217 WebP animés totalisant 1,49 Go sont devenus un unique MP4 H.264 de 78,49 Mo.

H.264FFmpegMP4WebP animéGIFAPNGCompression vidéoTraitement multimédia
13 août 202617 min de lecture

J’alertais sur tout : comment j’ai transformé le bruit des erreurs navigateur en supervision de production utile

Mon système de remontée d’erreurs frontend traitait de la même manière le blocage des publicités, les échecs GTM, AbortError, les Script error opaques et les vrais échecs de chunks Next.js. J’ai reconstruit les alertes autour de la propriété de la ressource, de l’impact utilisateur, de la qualité des preuves, de la corrélation et du rétablissement.

Supervision des erreurs navigateurObservabilité frontendErreurs JavaScriptSupervision de productionNext.jsPerformance web
13 août 202622 min de lecture

Pourquoi les anciens onglets Next.js cassent après un déploiement : HTML périmé, chunks manquants et décalage de version

Après un déploiement, ma télémétrie de production a enregistré l’échec de chargement d’un chunk Next.js appartenant à l’application. Le journal prouvait l’échec, pas sa cause. L’article part de cet incident pour expliquer les anciens onglets, le HTML périmé, les ressources /_next/static manquantes, le décalage de version, la rétention, deploymentId, l’ordre de déploiement, la surveillance et la récupération contrôlée.

Next.jsDéploiementDécalage de versionCache webFiabilité du frontendRessources statiques
13 août 202610 min de lecture

Le tick qui a cassé mon CFR : pourquoi 5580 n’était pas 5625 et 3751 n’était pas 3750

Mon validateur refusait à répétition un MP4 à 16 images/s parce qu’un paquet durait 5580 ticks au lieu de 5625, puis il a détecté 3751 là où 24 images/s exigeaient exactement 3750. Ces deux erreurs m’ont obligé à séparer la chronologie source, la quantification CFR, la base de temps MP4, PTS/DTS, le multiplexage et la validation paquet par paquet.

FFmpegH.264CFRHorodatage vidéoMP4Traitement multimédia
13 août 202614 min de lecture

Comment j’ai réduit une vidéo de production d’environ 280 Mo à environ 50 Mo en H.264

Une vidéo réelle du système en production est passée d’environ 280 Mo à environ 50 Mo après la refonte de la configuration H.264 autour de CRF 28, x264 veryslow, d’un plafond de résolution de classe 720p, de fréquences d’images utiles et d’exigences modérées pour le décodeur. Une étape antérieure avait déjà réduit le même exemple d’environ 350 à 238 Mo, et un audit de l’ancienne bibliothèque a montré que des H.264 à plusieurs mégabits par seconde étaient courants.

H.264FFmpegx264Compression vidéoPerformances des sitesOptimisation multimédia
16 avril 20267 min de lecture

J’ai créé Gitae pour diagnostiquer les pannes web au-delà de « en ligne / hors ligne »

J’ai créé Gitae pour répondre à une question pratique : le site est-il réellement indisponible ou le problème est-il local ? L’outil combine des vérifications depuis mes VDS à Moscou et Helsinki avec DNS, HTTPS/TLS, ports, routage, IP, hébergement et signaux CMS, en traitant chaque résultat comme un indice plutôt qu’une preuve définitive.

GitaeDiagnostic de siteMonitoring webDNSSSLPingTraceroutePortsHébergementSEO
14 avril 20266 min de lecture

Pourquoi TypeScript fonctionne si bien avec Codex pour du logiciel en production

En production, TypeScript apporte à Codex ce qu’un bon prompt ne peut pas remplacer : des contrats vérifiables par la machine, un retour rapide du compilateur et un chemin plus sûr pour les gros refactorings.

TypeScriptCodexDéveloppement assisté par IALivraison logicielleJavaScriptWorkflow développeur
6 avril 20265 min de lecture

J’ai créé Jurfi.com : un studio web pour des brouillons juridiques structurés

J’ai créé Jurfi.com pour transformer formulaires et modèles en brouillons juridiques structurés dans le navigateur, conserver les brouillons localement et faire de la relecture une étape explicite, sans prétendre qu’un logiciel remplace un avocat.

JurfiJurfi.comDocuments juridiquesLegalTechSaaSRédaction juridiqueOutil navigateur
5 avril 20264 min de lecture

Mon premier revenu SaaS : ce qu’un seul paiement a réellement prouvé

Le premier paiement reçu pour un produit SaaS que j’avais construit moi-même était modeste, mais il a changé la qualité des preuves dont je disposais. Voici ce qu’une transaction peut valider, ce qu’elle ne prouve pas et pourquoi la répétition compte davantage que le jalon lui-même.

SaaSPremier revenuIndie hackerValidation produitCréation de produitParcours startupExpérience développeur
3 avril 202610 min de lecture

Comment j’utilise Codex pour revoir 15 projets sans abandonner le contrôle manuel

Passer en revue 15 projets logiciels signifiait auparavant se noyer dans des vérifications répétitives. Codex m’aide à examiner beaucoup plus vite bugs, tests, SEO, traductions, localisation et cohérence, mais je traite chaque finding de l’IA comme une piste, jamais comme un verdict, et chaque modification comme quelque chose à vérifier.

CodexAI codingCode reviewTests logicielsWorkflow développeurLocalisationSEO techniqueProductivité développeur
2 avril 20268 min de lecture

Pourquoi j’utilise les derniers 3 à 5 % de ma limite Codex sur ChatGPT Plus pour de grosses tâches d’ingénierie — Mise à jour : cela ne fonctionnait plus à l’été 2026

Mise à jour : à l’été 2026, ce workflow n’était plus fiable dans mon cas. Le compteur de 5 heures avait disparu de mon compte, seule la limite hebdomadaire restait visible, et une tâche longue pouvait s’arrêter lorsqu’elle était épuisée.

CodexChatGPT PlusOutils de code IAWorkflow développeurIngénierie logicielleMigration TypeScriptNettoyage ESLintRefactoringlimites d’utilisation Codexmise à jour 2026
1 avril 202611 min de lecture

J’ai publié 10 000 articles SEO générés par IA, puis mon site est tombé à zéro page indexée dans Google

La publication massive par IA ressemblait d’abord à un raccourci : Google a crawlé les 10 000 URL d’articles générés, mais seulement environ 1 000 pages ont réellement été indexées, affichées dans Search et ont apporté du trafic. Elles ont ensuite disparu à leur tour, jusqu’à ce que le site entier tombe à zéro page indexée. Voici ce que cette expérience m’a appris sur l’IA, le SEO, la traduction et la responsabilité éditoriale.

SEO et IAIA générativeGoogle SearchContenu à grande échelleIndexationRédaction assistée par IASEO multilingue
31 mars 20266 min de lecture

Cinq ans avec un MacBook M1 8/256 Go : pourquoi je ne l’ai toujours pas remplacé

J’ai acheté le MacBook M1 de base avec 8 Go de mémoire et 256 Go de SSD pour environ 1 000 dollars, puis je l’ai utilisé autour de 15 heures par jour pour le développement, les médias, l’écriture, l’apprentissage et mes projets personnels. Cinq ans plus tard, ses limites sont visibles, mais je pense à changer parce que ma charge de travail a grandi, pas parce que la machine a cessé d’être utile.

MacBookAppleM1Apple SiliconDéveloppement logicielTest longue duréeLongévité du matériel
30 mars 20265 min de lecture

J’ai traduit mon blog en 20 langues avec ChatGPT — et le trafic de recherche est devenu mondial

L’IA a changé l’économie de la publication multilingue. Je suis passé d’un blog dans une seule langue à des articles publiés jusqu’en 20 langues, créant de nouveaux points d’entrée organiques depuis la recherche.

Localisation par IASEO multilingueChatGPTNext.jsSEO internationalBlog
27 mars 20265 min de lecture

J’ai lancé QRViz comme générateur gratuit de QR codes statiques — et j’ai misé la distribution sur le SEO

QRViz est un générateur de QR codes statiques dans le navigateur, et non une plateforme de campagnes. J’ai lancé qrviz.com comme générateur de QR codes gratuit, sans budget publicitaire, acquisition payante ni tunnel de monétisation. Je compte entièrement sur le SEO, ce qui fait de la découverte du produit la principale incertitude.

Générateur de QR codesQrvizLancement de produitSEOProjet annexeDéveloppement webDéveloppement produit
18 février 20265 min de lecture

Pourquoi trouver des clients m’a semblé plus difficile que construire un SaaS

Une leçon tirée directement de mon expérience SaaS : l’ingénierie me donnait un feedback clair et vérifiable, alors que distribution, positionnement, message et rétention suivaient une boucle différente et bien moins prévisible.

Croissance SaaSAcquisition clientMarketing produitBootstrappingBuild in publicDistribution
17 février 20265 min de lecture

J’ai construit seul un produit SaaS. Les paiements ont changé le travail

J’ai construit ce produit seul, le soir, le week-end et pendant des jours fériés. Dès que les paiements ont été activés, bugs, onboarding, modération, rétention et confiance sont devenus des sujets d’exploitation réels, plus des problèmes à traiter plus tard.

SaaSDéveloppement soloLancement produitPaymentsReliabilityExploitation produit
22 janvier 20264 min de lecture

I Got 550 Views from One Image, Voiceover, and Subtitles: What Three Shorts Tests Actually Taught Me

A simple YouTube Short built from one static image, a voiceover, and subtitles reached 550 views. After three early tests, the useful lesson was not a proven formula, but a repeatable way to experiment without confusing a promising signal with proof.

YouTube ShortsContent ExperimentsShort-form VideoVideo EditingCapCutCreator Workflow
20 janvier 20266 min de lecture

J'ai vu près de 6 000 candidatures sur une offre frontend à Moscou. Ce que cela dit — et ne dit pas — du marché IT russe

Fin 2023, des recruteurs me disaient que 300–500 candidatures par poste étaient déjà beaucoup. Le 20 janvier 2026, j'ai vu une offre frontend de niveau intermédiaire à Moscou approcher les 6 000 candidatures en quelques heures. Voici ce que ce chiffre me semble signaler, ce qu'il ne prouve pas et comment je le lirais aujourd'hui en tant que candidat.

CarrièreMarché de l'emploi ITFrontendRussieMoscouRecrutementRecherche d'emploi
1 janvier 20265 min de lecture

Comment DeepSeek a changé mon workflow Node.js : plus de 4 000 commits en six mois

En 2025, mon graphique GitHub est passé de presque vide à plus de 4 000 commits sur la seconde moitié de l’année. Cet article explique comment le coding assisté par AI a changé mon workflow de side projects Node.js, où il m’a fait gagner du temps, où il a échoué et pourquoi la vérification restait plus importante que la vitesse de génération.

Node.jsDeepSeekAI CodingDeveloper ProductivitySide ProjectsSoftware Engineering
30 décembre 20256 min de lecture

My First TikTok at 28: What a Vertical Product Demo Taught Me About Traffic

At 28, I posted my first TikTok and cross-posted the same product demo to Reels and Shorts. The useful lesson was not the view count: it was how much a 9:16 frame changes a desktop interface, and how to measure short-form traffic without confusing reach with acquisition.

TikTokProduct MarketingProduct DemosAnalyticsIndie Dev
16 novembre 20256 min de lecture

J’ai acheté un domaine vieux de 25 ans : 1 000+ requêtes par jour visaient des URL mortes

Après le lancement sur un domaine enregistré pour la première fois en 2000, j’ai vu plus de 1 000 requêtes quotidiennes vers d’anciennes URL et plus de 900 erreurs dans Yandex Webmaster en une nuit. Voici ce que je pouvais réellement prouver, pourquoi j’ai utilisé des 410 ciblés et comment j’auditerais aujourd’hui un ancien domaine.

SEOHTTPDevOpsDomainesCrawl web
14 novembre 20256 min de lecture

12 500 pages étaient indexées dans Yandex, mais je recevais presque zéro trafic russe : le problème Cloudflare que je n’avais pas vu

Yandex avait indexé 12 500 pages, mais le trafic depuis la Russie restait presque nul. J’ai isolé le problème au niveau du chemin réseau, désactivé le proxy Cloudflare, déplacé cache, compression et protection de base vers Nginx sur mon VDS, puis rétabli l’accessibilité.

DevOpsSEONginxCloudflareRéseauInfrastructure
27 octobre 20256 min de lecture

Mon site Next.js statique reçoit des milliers de scans de vulnérabilités par jour. Nginx les remarque à peine

Mes logs sont remplis de sondes visant WordPress, des backdoors PHP, .env et .git/config. Sur mon site statique Next.js + Nginx, elles finissent surtout en miss et en 404 peu coûteuses, tandis que la charge CPU est restée stable. Voici ce que cela dit réellement de la sécurité statique — et ce que cela ne prouve pas.

SécuritéNext.jsNginxDevOpsHébergement statiqueSurface d’attaque
27 octobre 20254 min de lecture

Yandex a apporté du trafic à mon nouveau site pendant que Google bougeait à peine

Sur le même nouveau projet, Google n'a généré qu'environ 300 clics sur une longue période, tandis que Yandex Webmaster affichait une nette progression, jusqu'à +500 % de clics. Voici ce que ces chiffres prouvent réellement — et ce qu'ils ne prouvent pas.

SEOGoogle SearchYandexGoogle Search ConsoleYandex WebmasterSEO technique
17 octobre 20256 min de lecture

Yandex a indexé 4 278 de mes pages Next.js en une nuit : ce que cela a réellement prouvé

Yandex a soudainement indexé 4 278 de mes pages générées statiquement avec Next.js. C’était un vrai jalon technique, mais pas une preuve de classement ni de trafic. Voici ce que ce résultat disait réellement sur le SSG et le SEO programmatique, et ce qu’il ne permettait pas d’affirmer.

SEONext.jsSSGYandexSEO programmatiqueIndexation
16 octobre 20256 min de lecture

Mon premier mois de SEO : 632 visiteurs organiques et un rappel utile sur le trafic de bots

J’ai utilisé un side project personnel pour me préparer à une initiative SEO plus importante au travail. Après un mois, il avait attiré 632 visiteurs organiques, mais une journée à 83 visiteurs m’a montré à quel point du trafic suspect ou des artefacts d’analytics peuvent fausser l’histoire.

SEOWeb analyticsTrafic de botsYandex MetricaExpériences SEO
6 octobre 20254 min de lecture

J’ai failli ignorer Yandex Webmaster. Deux semaines plus tard, il m’envoyait plus de trafic que Google

J’ai créé un side project Next.js pour pratiquer le SEO avant un projet professionnel où il serait critique. Sur les deux premières semaines, j’ai compté 58 visiteurs venant de Google et 200 de Yandex, et appris à séparer trafic, indexation et diagnostic.

SEONext.jsGoogle SearchYandexSearch ConsoleIndexation
5 octobre 20256 min de lecture

Yandex Metrica vs Google Analytics : pourquoi j’ai préféré Metrica après une semaine

J’ai fait fonctionner Google Analytics et Yandex Metrica en parallèle pendant une semaine sur un nouveau projet. Metrica a gagné ma préférence grâce à Webvisor et aux replays de session, mais cela décrit mon workflow et ne prouve pas qu’un outil est supérieur dans tous les cas.

Web analyticsUXReplay de sessionYandex MetricaGoogle AnalyticsGA4
3 octobre 20255 min de lecture

Yandex a crawlé mon blog sans /en. Mes redirections 308 ont évité les 404

Après avoir ajouté environ 3 000 pages /en/blog/... à mon sitemap, j’ai vu Yandex tenter les chemins correspondants en /blog/.... Les redirections 308 déjà en place ont empêché ces requêtes de finir en 404. La vraie leçon n’est pas que Yandex aurait « cassé » mon sitemap, mais qu’une couche de redirection propre rend une architecture d’URL beaucoup plus robuste.

SEOYandexSitemapRedirection 308SEO techniqueCrawl
2 octobre 20256 min de lecture

Deux nouveaux sites ont explosé sur Google, puis le trafic a chuté d’environ 10×

Sur deux lancements consécutifs, j’ai vu les impressions Google bondir immédiatement, puis le trafic tomber environ dix fois plus bas quelques jours après. Le phénomène est réel ; l’explication par une « lune de miel Google » ne l’est pas forcément.

SEOGoogle SearchSearch ConsoleTrafic organiqueSEO technique
1 octobre 20255 min de lecture

2 000 pages ont disparu de la recherche Yandex en une nuit. Voici ce que j’ai réellement pu en conclure

Dans Yandex Webmaster, j’ai vu que 2 000 pages sur environ 8 000 ne participaient plus à la recherche. La baisse de 25 % était spectaculaire, mais la vraie leçon était de ne pas confondre un changement observé de statut dans la recherche avec une cause prouvée.

SEOYandex WebmasterIndexationVisibilité dans la rechercheSEO technique
11 juillet 20253 min de lecture

J’ai posé plus de 10 questions à MoscowJS 66 et remporté deux prix

À MoscowJS 66, j’ai posé plus de 10 questions pendant des talks sur les bots Telegram, LangChain.js, l’architecture d’un constructeur de sites et les tests de types TypeScript. Deux ont été retenues comme les meilleures questions, et je suis reparti avec deux prix.

ÉvénementsJavaScriptTypeScriptIALangChain.jsCommunautéMoscowJS
23 juin 20256 min de lecture

Ce que j’ai retenu de PiterJS #79 : monolithes legacy, FrontOps, performance web et meilleures questions

PiterJS #79 à Saint-Pétersbourg portait sur la maintenance de systèmes existants : monolithe legacy, FrontOps et métriques de performance web. J’en suis reparti avec des notes pratiques, deux prix gagnés pendant les Q&A et un rappel de la valeur d’un meetup auquel on participe vraiment.

PiterJSJavaScriptFrontOpsDockerPerformance webCommunauté
17 juin 20256 min de lecture

I Launched a Next.js Blog in 21 Languages. Here’s What 439 Google Impressions Actually Told Me

In its first week, my 21-language Next.js blog recorded 439 Google impressions and 5 clicks. Later, 436 of 471 pages were indexed. The useful lesson was learning to separate visibility, indexing, and actual search performance.

Next.jsSEOI18nMultilingual SEOGoogle SearchWeb Development
7 juin 20253 min de lecture

MoscowJS 65 après six ans de JavaScript : pourquoi je continue à aller aux meetups locaux

Le 5 juin 2025, j’ai assisté à MoscowJS 65 chez T Bank. Les quatre talks abordaient l’IA sous des angles différents, mais mon principal constat était plus simple : les meetups locaux m’apportent encore quelque chose que la documentation et les enregistrements ne remplacent pas complètement.

JavaScriptMoscowJSMeetupsCommunauté de développeursIA