Notes on performance, multilingual builds and automation — what actually worked, and what it cost to get there.
4 posts
seo
Building an SEO crawler that borrows my own Chrome
Bot protection does not break a crawl loudly. It returns a clean report with a third of the site missing. Krawlify fixes that by driving the browser I am already signed in to, over the standard DevTools Protocol, in tabs it opens for itself.
Promoting a staging database to production without corrupting serialised data, cutting DNS over through the Cloudflare API, and putting both back when the smoke test fails.
A morning n8n run that reads my last two weeks of lifting through a Garmin MCP server, plans the next strength session, and writes it back into Garmin Connect so it is on the watch before I get to the gym.
Fixing Garmin MCP auth: extracting OAuth tokens with Node
Garmin login cannot be scripted reliably, so I stopped trying. A Playwright window, one service ticket and two OAuth exchanges produce tokens that every garth-based tool already knows how to read, and no password ends up in a config file.