Some of my recent thoughts on development and the tech industry.
Storyblok as a WordPress Alternative: One Client Build
A booking site for a family-course studio, built in about two months. What went into Storyblok, what stayed in Postgres, and why the client maintains her own content without calling me.
Vue vs React: What Vapor Mode Actually Changes
I've built every business project on Vue and Nuxt for seven years, and two recent ones in React and Next.js instead. Here's what genuinely felt different for headless CMS frontends, and why Vue just walked away from the virtual DOM entirely.
How Claude Skills + MCP Track My Capital Gains Tax
I run ETFs through two brokers that don't talk to each other. Here's how a Claude skill and an MCP-backed tracker keep them reconciled against one shared tax-free allowance.
One Maintenance Session on an Agent-Assisted Client Project
75 commits, 141 tests, and a schema tool that's banned from the project on purpose. What one maintenance pass on a Claude-Code-assisted booking site actually surfaced, once the seams started showing.
Building GoSpendl: A Bitcoin Product Search Engine, End to End
A product search platform for the Bitcoin community, built solo - the crawler that scales without burning LLM tokens, the realtime layer that broke on Vercel, the $5/month host that runs it all. Here's the whole build, and where it stands now.
Nuxt 4 WebSockets Are Elegant. Here's Why They Break on Vercel.
A first-hand debugging story — Nuxt 4's native WebSocket API is the cleanest I've seen in a full-stack framework, but the Nitro Vercel preset never implements the upgrade handshake. Vercel supports WebSockets fine; Nuxt's adapter for it just doesn't exist yet.
Migrating a Live B2B Platform to AWS Without Stopping the Business
A four-year migration moved a veterinary industry webshop off a legacy monolith onto an orchestrated AWS architecture, service by service, without ever pausing the live business.
Why Your Startup Should Go Headless CMS from Day One
Most startups pick WordPress or a monolithic CMS because it's fast. 18 months later, they're paying to undo that decision. Here's why headless is the smarter choice from the start.
Supabase vs Custom Auth: What I Recommend for Early-Stage SaaS
Every SaaS founder faces the auth question early. Build it yourself or use Supabase? Here's my honest take after building both — and the 3 questions that make the decision easy.
How to Migrate WordPress to Strapi Headless CMS (With 1,000+ Posts)
Step-by-step guide to migrating a WordPress site with 1,000+ posts and media to a Strapi headless CMS using WPEscape, a purpose-built WordPress to Strapi migration tool.
How I Built a Token-Efficient Crawler for 900+ Shops with Crawl4AI
I needed to crawl 900+ e-commerce shops dynamically for GoSpendl. Here's how I combined Crawl4AI's LLM Strategy for one-time schema discovery with CSS Extraction for production crawls — and why that matters for token costs.
Host Your Docker Container on Railway in 5 Minutes (8GB RAM for $5)
I needed 4GB+ RAM to self-host Crawl4AI for GoSpendl. Here's why Railway beat every alternative I looked at, and how I had it running in under 5 minutes with zero config.
ESLint Without Prettier: One Tool for Formatting and Linting in TypeScript
Skip the Prettier setup. This lightweight ESLint config handles both formatting and linting for TypeScript projects — ready to install in 5 minutes.