Blog
Notes on engineering, AI-augmented workflows, and what survives contact with production. New posts land in the RSS feed first.
-
The PDF Tools Everyone Should Know
An engineer'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 engineer'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.