Notities
Blog
Notities over frontend, SEO, AI, analytics en het bouwen van echte producten.
37 artikelen
DeepSeek verhoogde de prijzen — ik vond dezelfde V4 Flash goedkoper dan het oude tarief
Op 17 augustus zag ik dat mijn uitgaven aan de DeepSeek API plotseling ongeveer vijf keer zo hoog waren als normaal. Daarna vond en testte ik een andere provider met dezelfde DeepSeek-V4-Flash-0731-checkpoint, tegen prijzen die ongeveer 45% lager liggen dan de oude DeepSeek-tarieven.
Hoe ik geanimeerde WebP, GIF en APNG naar H.264 MP4 omzet zonder beelden of tijdsturing te beschadigen
Mijn productieproces reconstrueert de volledige beelden die de gebruiker werkelijk ziet, bewaart de brontijdsturing, kiest één CFR per uiteindelijke MP4, berekent het kleinste gemeenschappelijke beeldvlak zonder op te schalen, codeert compatibele H.264-segmenten, voegt die samen zonder tweede verliesgevende codering en controleert zowel het bestand als de HTTP-levering. In één gemeten run werden 217 geanimeerde WebP-bestanden van samen 1,49 GB één MP4-bestand met H.264 van 78,49 MB.
Ik alarmeerde op alles: zo maakte ik van browserfoutruis bruikbare productiemonitoring
Mijn frontend-reporter behandelde adblockers, GTM-storingen, AbortError, ondoorzichtige Script error-meldingen en echte Next.js-chunkfouten hetzelfde. Ik bouwde de signalering opnieuw rond eigenaarschap, gebruikersimpact, bewijs, correlatie en herstel.
Waarom oude Next.js-tabbladen na een uitrol stuklopen: verouderde HTML, ontbrekende chunks en versieverschillen
Na een uitrol registreerde mijn productiemonitoring dat een chunk van mijn eigen Next.js-toepassing niet kon worden geladen. Het logboek bewees dat de fout optrad, maar niet waarom. Vanuit dat incident bespreekt dit artikel lang openstaande tabbladen, verouderde HTML, ontbrekende /_next/static-bestanden, versieverschillen, bewaartermijnen, deploymentId, publicatievolgorde, monitoring en gecontroleerd herstel.
De ene tick die mijn CFR brak: waarom 5580 geen 5625 was en 3751 geen 3750
Mijn validator weigerde herhaaldelijk een MP4 van 16 fps omdat een pakket 5580 ticks duurde in plaats van 5625; later vond hij 3751 waar 24 fps exact 3750 vereiste. De twee fouten dwongen me de timing van de bron, CFR-kwantisering, de MP4-tijdbasis, PTS/DTS, multiplexing en validatie op pakketniveau uit elkaar te houden.
Hoe ik een productievideo met H.264 van ~280 MB naar ~50 MB bracht
Een concrete video uit de productieomgeving kromp na de vernieuwde H.264-configuratie van ongeveer 280 MB naar ongeveer 50 MB. De nieuwe aanpak combineert CRF 28, x264 veryslow, een resolutieplafond in de 720p-klasse, zinvolle beeldsnelheden en bescheiden eisen aan de decoder. In een eerdere fase was hetzelfde voorbeeld al van ongeveer 350 naar 238 MB teruggebracht; een controle van de oude bibliotheek liet bovendien zien dat H.264-bestanden van meerdere megabit per seconde heel normaal waren.
Ik bouwde Gitae om websiteproblemen verder te diagnosticeren dan alleen ‘up of down’
Ik bouwde Gitae voor een praktische vraag: is een site echt onbereikbaar of zit het probleem lokaal? De tool combineert externe VDS-checks vanuit Moskou en Helsinki met DNS, HTTPS/TLS, poorten, routing, IP-, hosting- en CMS-signalen en behandelt elk resultaat als aanwijzing, niet als definitief bewijs.
Waarom TypeScript zo goed werkt met Codex voor productiesoftware
Voor productiewerk geeft TypeScript Codex iets wat een goede prompt niet kan vervangen: machinecontroleerbare contracten, snelle compilerfeedback en een veiliger pad door grote refactors.
Ik bouwde Jurfi.com: een browserstudio voor gestructureerde juridische concepten
Ik bouwde Jurfi.com om formulieren en sjablonen om te zetten in gestructureerde juridische werkconcepten in de browser, concepten lokaal te bewaren en controle expliciet onderdeel van het proces te maken, zonder te beweren dat software een advocaat vervangt.
Mijn eerste SaaS-omzet: wat één betaling werkelijk bewees
Mijn eerste betaling voor een SaaS-product dat ik zelf had gebouwd was klein, maar veranderde de kwaliteit van het bewijs dat ik had. Dit is wat één transactie kan valideren, wat ze niet bewijst en waarom herhaling belangrijker is dan de mijlpaal zelf.
Hoe ik Codex gebruik om 15 projecten te reviewen zonder de handmatige controle op te geven
Vijftien softwareprojecten reviewen betekende vroeger verdrinken in herhaalde controles. Codex helpt me bugs, tests, SEO, vertalingen, lokalisatie en consistentie veel sneller te onderzoeken, maar ik behandel elke AI-bevinding als een aanwijzing, niet als een oordeel, en elke wijziging als iets dat ik zelf moet verifiëren.
Waarom ik de laatste 3–5% van mijn Codex-limiet in ChatGPT Plus aan grote engineeringtaken besteed — Update: in de zomer van 2026 werkte dit niet meer
Update: tegen de zomer van 2026 was deze workflow voor mij niet meer betrouwbaar. De 5-uursmeter verdween uit mijn account, alleen de weeklimiet bleef zichtbaar en langlopende taken konden stoppen zodra die weeklimiet op was.
Ik publiceerde 10.000 AI-SEO-artikelen en mijn site eindigde met nul geïndexeerde pagina’s in Google
Massaal publiceren met AI leek eerst een shortcut: Google crawlde alle 10.000 gegenereerde artikel-URL’s, maar slechts ongeveer 1.000 pagina’s werden echt geïndexeerd, verschenen in Search en leverden verkeer op. Daarna verdwenen ook die pagina’s, totdat de hele site op nul geïndexeerde pagina’s stond. Dit veranderde mijn kijk op AI, SEO, vertaling en redactionele controle.
Vijf jaar met een M1 MacBook met 8/256 GB: waarom ik hem nog niet heb vervangen
Ik kocht de basis-M1 MacBook met 8 GB geheugen en een SSD van 256 GB voor ongeveer 1.000 dollar en gebruikte hem ongeveer 15 uur per dag voor ontwikkeling, mediawerk, schrijven, leren en side projects. Vijf jaar later zie ik de beperkingen duidelijk, maar ik denk aan een upgrade omdat mijn workload is gegroeid, niet omdat de machine onbruikbaar is geworden.
Ik vertaalde mijn blog met ChatGPT naar 20 talen — en kreeg zoekverkeer van over de hele wereld
AI veranderde voor mij de economie van meertalig publiceren. Van één taal ging ik naar maximaal 20 taalversies per artikel, met nieuwe organische ingangen vanuit zoekmachines.
Ik lanceerde QRViz als gratis statische QR-codegenerator — en zette voor distributie in op SEO
QRViz is een browsergebaseerde generator voor statische QR-codes, geen campagneplatform. Ik lanceerde qrviz.com als gratis QR-codegenerator zonder advertentiebudget, betaalde acquisitie of monetisatiefunnel. Voor vindbaarheid vertrouw ik volledig op SEO, waardoor distributie de grootste onzekerheid blijft.
Waarom klanten vinden voor mij moeilijker was dan een SaaS bouwen
Een les uit mijn eigen SaaS-ervaring: engineering gaf me duidelijke, controleerbare feedback, terwijl distributie, positionering, messaging en retentie een heel andere en veel minder voorspelbare lus hadden.
Ik bouwde solo een SaaS-product. Betalingen veranderden het werk
Ik bouwde dit product alleen, ’s avonds, in weekenden en op vrije dagen. Toen betalingen live gingen, werden bugs, onboarding, moderatie, retentie en vertrouwen geen problemen voor later meer, maar onderdeel van het echte productbeheer.
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.
Ik zag bijna 6.000 sollicitaties op een frontendvacature in Moskou. Wat dat wel en niet zegt over de Russische IT-markt
Eind 2023 vertelden recruiters me dat 300–500 sollicitanten per vacature al veel was. Op 20 januari 2026 zag ik een medior frontendfunctie in Moskou binnen enkele uren richting 6.000 sollicitaties gaan. Dit is wat dat volgens mij signaleert, wat het niet bewijst en hoe ik zulke cijfers nu als kandidaat zou lezen.
Hoe DeepSeek mijn Node.js-workflow veranderde: 4.000+ commits in zes maanden
Mijn GitHub-grafiek ging in 2025 van bijna leeg naar meer dan 4.000 commits in de tweede helft van het jaar. Dit artikel gaat over hoe AI-coding mijn Node.js-side-projectworkflow veranderde, waar het tijd bespaarde, waar het misging en waarom verificatie belangrijker bleef dan snelle generatie.
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.
Ik kocht een 25 jaar oud domein: 1.000+ requests per dag gingen naar dode URL's
Na de lancering op een domein dat voor het eerst in 2000 was geregistreerd, zag ik dagelijks meer dan 1.000 requests naar oude URL's en in één nacht meer dan 900 fouten in Yandex Webmaster. Dit is wat ik echt kon bewijzen, waarom ik gerichte 410-responses gebruikte en hoe ik een oud domein nu zou auditen.
Yandex had 12.500 pagina’s geïndexeerd, maar ik kreeg bijna geen verkeer uit Rusland: het Cloudflare-probleem dat ik miste
Yandex had 12.500 pagina’s geïndexeerd, maar verkeer uit Rusland was vrijwel nul. Ik herleidde het probleem tot het netwerkpad, schakelde de Cloudflare-proxy uit, verplaatste caching, compressie en basisbeveiliging naar Nginx op mijn VDS en herstelde de bereikbaarheid.
Mijn statische Next.js-site krijgt dagelijks duizenden kwetsbaarheidsscans. Nginx merkt er nauwelijks iets van
Mijn logs staan vol probes naar WordPress, PHP-backdoors, .env en .git/config. Op mijn statische Next.js + Nginx-site eindigt het meeste als goedkope misses en 404’s, terwijl de CPU-belasting gelijk bleef. Dit is wat die ervaring werkelijk zegt over statische beveiliging — en wat niet.
Yandex stuurde verkeer naar mijn nieuwe site terwijl Google nauwelijks bewoog
Bij hetzelfde nieuwe project leverde Google over een lange periode slechts ongeveer 300 klikken op, terwijl Yandex Webmaster duidelijk groeide en zelfs +500% klikken meldde. Het belangrijkste is wat die cijfers wel bewijzen — en wat niet.
Yandex indexeerde 4.278 van mijn Next.js-pagina’s in één nacht — wat dat werkelijk bewees
Yandex nam ineens 4.278 van mijn statisch gegenereerde Next.js-pagina’s op in de index. Dat was een echte technische mijlpaal, maar geen bewijs voor rankings of verkeer. Dit is wat het resultaat wél en niet zei over SSG en programmatic SEO.
Mijn eerste maand SEO: 632 organische bezoekers en een realitycheck over botverkeer
Ik gebruikte een persoonlijk side project als voorbereiding op een groter SEO-initiatief op mijn werk. Na één maand had het 632 organische bezoekers, maar een dag met 83 bezoekers liet zien hoe makkelijk verdacht verkeer en analytics-artefacten het verhaal kunnen vertekenen.
Ik negeerde Yandex Webmaster bijna. Twee weken later kwam er meer verkeer vandaan dan uit Google
Ik bouwde een Next.js-sideproject om SEO te oefenen voor een werkproject waarin SEO cruciaal zou zijn. In de eerste twee weken zag ik 58 bezoekers uit Google en 200 uit Yandex, en leerde ik verkeer, indexering en diagnostiek apart te meten.
Yandex Metrica vs. Google Analytics: waarom ik na één week Metrica prefereerde
Ik draaide Google Analytics en Yandex Metrica een week lang naast elkaar op een nieuw project. Metrica won voor mij vooral door Webvisor en sessiereplays, maar dat zegt iets over mijn workflow en is geen bewijs dat één platform voor iedereen beter is.
Yandex crawlde mijn blog zonder /en. 308-redirects voorkwamen een reeks 404’s
Nadat ik ongeveer 3.000 /en/blog/...-pagina’s aan de sitemap had toegevoegd, zag ik Yandex de overeenkomstige /blog/...-paden proberen. Bestaande 308-redirects voorkwamen dat die requests in 404’s eindigden. De nuttige les was niet dat Yandex mijn sitemap “kapotmaakte”, maar hoeveel veerkracht een nette redirectlaag toevoegt.
Twee nieuwe sites piekten in Google, daarna daalde het verkeer ongeveer 10×
Bij twee lanceringen op rij schoten Google-impressies direct omhoog en zakte het verkeer enkele dagen later tot ongeveer een tiende. Het patroon was echt; een bewezen Google-‘honeymoon’ is het niet.
2.000 pagina’s verdwenen in één nacht uit Yandex Search. Dit kon ik er werkelijk uit concluderen
In Yandex Webmaster zag ik dat 2.000 van ongeveer 8.000 pagina’s niet meer aan de zoekresultaten deelnamen. De daling van 25% was fors, maar de belangrijkste les was om een waargenomen verandering in zoekstatus niet te verwarren met een bewezen oorzaak.
Ik stelde meer dan 10 vragen op MoscowJS 66 en won twee prijzen
Op MoscowJS 66 stelde ik meer dan 10 vragen tijdens talks over Telegram-bots, LangChain.js, de architectuur van een sitebuilder en TypeScript-typetests. Twee werden gekozen als beste vragen en ik ging naar huis met twee prijzen.
Wat ik meenam van PiterJS #79: legacy-monolieten, FrontOps, webperformance en betere vragen
PiterJS #79 in Sint-Petersburg draaide om het onderhouden van bestaande systemen: een legacy-monoliet, FrontOps en webperformancemetrics. Ik vertrok met praktische notities, twee Q&A-prijzen en opnieuw waardering voor actieve deelname aan offline meetups.
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.
MoscowJS 65 na zes jaar JavaScript: waarom ik nog steeds naar lokale meetups ga
Op 5 juni 2025 bezocht ik MoscowJS 65 bij T Bank. De vier talks bekeken AI vanuit verschillende hoeken, maar mijn belangrijkste conclusie was eenvoudiger: lokale meetups geven me nog steeds iets dat documentatie en opnames niet volledig kunnen vervangen.