Skip to content
WC.

Writing & Ideas

A living record of my evolving thoughts on engineering, products, and the friction of building software.

Skip to theme navigation

Architecture

Systems design and static-first approaches

Read-along audio without a server

Read-along audio on a website usually implies a server. Someone hits play, a server runs text-to-speech, streams the result, or at least looks up a recording…

•3 min read•Architecture
staticaudionextjs
Build-Time Validation as a Product

"Fail in production" is the default. A broken link ships. A typo in a theme descriptor slips through. Frontmatter is missing a required field and the build…

•3 min read•Architecture
validationstatic-siteszod
Building Static-First in an Era of Dynamism

There is a growing trend to render everything on the server dynamically. With the advent of Edge computing, we're told that dynamic rendering is basically…

•3 min read•Architecture
nextjsstaticperformance

Developer Tools

AI, agents, and developer experience

Progressive Disclosure in Agent Skills

The more you put into a skill, the more useful it becomes — until it isn't. A single SKILL.md that tries to cover every content type, schema, and voice rule…

•4 min read•Developer Tools
skillsagentscursor
Teaching an Agent Your Voice

You're reading a blog post written by an AI agent. But it sounds like me. That's not an accident. I built a skill — a reusable instruction set — that teaches…

•4 min read•Developer Tools
skillsagentscursor

Infrastructure

Hosting, email, and platform choices

GitHub as Your Backend

You can run a static site with comments and activity without running a database or an API. The trick is to treat GitHub as the backend you never have to…

•2 min read•Infrastructure
githubgiscusstatic-sites
Recurring Newsletter as a Build Step

Most advice for sending a recurring digest assumes you need a scheduler. A cron job, a Lambda on a timer, or a hosted service that runs "every Tuesday at 9."…

•3 min read•Infrastructure
newsletterstatic-sitesci
Comments Without a Backend

I wanted a comment section on writing and project pages without running a database or a custom API. Static sites are great until you need state that lives…

•2 min read•Infrastructure
giscuscommentsstatic-sites
Choosing a Marketing Email Provider

Picking an email provider for a newsletter or marketing drip feels like it should be simple. You need to send emails, collect subscribers, and maybe track…

•5 min read•Infrastructure
emailresenddeveloper-tools
The Friction of Static Site Email

Adding email to a static site should be a solved problem. I just needed to receive contact form submissions and send replies from my own domain. It sounds…

•2 min read•Infrastructure
infrastructuremailgunstatic-sites
Ditching Netlify

I used Netlify for years. It was the first platform that made deploying a static site feel effortless — git push, wait thirty seconds, done. For a long time,…

•4 min read•Infrastructure
netlifycloudflarehosting
Why I Build on Cloudflare

Every project starts with the same unglamorous decision: where does this thing actually run? Most developers treat hosting as a checkbox. Pick the default,…

•4 min read•Infrastructure
cloudflarehostinginfrastructure

Workflow

How we build and ship

Vibe Coding a Website in a Day

I built this entire website in a single day. Not a landing page. Not a template with swapped colors. A statically exported Next.js site with MDX content…

•5 min read•Workflow
vibe-codingcursoragents
Pitch the Idea Before You Vibe Code

I do not start a new project in Cursor. I start in ChatGPT. Before there is a repo, there is an idea. And before there is an implementation plan, there is…

•6 min read•Workflow
vibe-codingcursorskills

Back to top