Blog
Notes on engineering, AI-augmented workflows, and what survives contact with production. New posts land in theRSS feed first.
The PDF Tools Everyone Should Know
A developer's trade-off guide to PDF operations: lossless vs lossy compression, client-side vs server, and which library actually fits the job.
QR Codes 101: How They Actually Work
A developer's breakdown of how QR codes encode data, plus the error-correction, version, and static-vs-dynamic trade-offs that decide reliability.
Welcome to the blog
A short hello and a quick note on what this blog will cover.
Adding a Russian locale to an Astro blog, no CMS
How I added bilingual EN/RU posts to a static Astro blog without a headless CMS: route duplication, shared-slug file pairing, hreflang, and a switcher that finds the counterpart.
Three things MV3 taught me about the service-worker lifecycle
Chrome Manifest V3 replaced the persistent background page with an ephemeral service worker. These are the three lifecycle lessons that cost me real debugging time.
Typed content with Zod: schema as a build-time contract
An Astro content-collection Zod schema is not just validation - it is a build-time contract that turns a folder of MDX files into a fully typed CMS with no backend.
The 6 MCP servers I keep in every Claude Code project
After six months of running Claude Code across 30 active repos, only 6 MCP servers survived the cull. Here is the kept set, the 14 cuts, and the rule.
Why I rewrote my portfolio from Nuxt to Astro, in numbers
I rewrote my portfolio from Nuxt 3 to Astro 5 and tracked every metric that moved. Build time, bundle, Lighthouse, dev boot - the receipts for the swap.
The 30-second test: what a senior client actually checks on your portfolio
The 30-second checklist that a senior client actually runs on your freelance portfolio before they decide to message you, listed in real scan order here.
A senior developer's Lighthouse 100/100 checklist, after 30 sites
A checklist for hitting Lighthouse 100/100/100/100 - the architecture decisions, the boring 88-to-94 fixes, and the cargo-cult performance tactics to skip.