The blog

Posts & projects

Write-ups from the desk and the workbench! Dev projects, physical builds, and notes in between!

HeadsUpJul 6, 2026

Introducing HeadsUp: invite pages that get everyone there

I'm starting a second project. HeadsUp turns any plan into a beautiful invite page, sent by text, with RSVPs that take care of themselves. Coming to Australia first.

2 min readRead →
ScaffyJun 26, 2026

One schema, two jobs: generating runtime validation from your types

The schema is the source of truth at runtime too: the field definitions that infer your TypeScript types also generate the Zod validator that guards every write.

8 min readRead →
ScaffyJun 21, 2026

The authorizer I didn’t have to write (yet): guarding Scaffy’s admin routes with Cognito

The router post left every route public. Here’s how Scaffy locks down the admin writes: a single Cognito authorizer that runs before the Lambda does, the custom Lambda authorizer I expected to write and didn’t, and the one case that will make me write it after all.

10 min readRead →
ScaffyJun 17, 2026

Why a catch-all API Gateway route made me write my own router

Scaffy sends every request through a single API Gateway proxy route into one Lambda, which means the Lambda has to route itself. Here’s the sixty-line router I wrote instead of reaching for a framework, and the precedence problem that made me do it.

10 min readRead →
ScaffyJun 15, 2026

One config, two lifecycles: making Scaffy’s AWS adapters swappable

Every Scaffy adapter is really two programs that never call each other and run hours apart. Here’s the deploy-time / request-time split that makes the whole CMS pluggable.

6 min readRead →
ScaffyJun 14, 2026

Introducing Scaffy: a headless CMS that costs cents to run

I'm building a serverless, developer-first CMS you self-host on your own AWS account. Define your content in TypeScript, deploy once, pay almost nothing.

2 min readRead →