Latest Articles

Some of my recent thoughts on development and the tech industry.
Nuxt 4 WebSockets Are Elegant. Here's Why They Break on Vercel.

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

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

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

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)

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

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)

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

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.