
Migrating this site to EmDash
This site has changed CMS more times than I can count since 2003. This time I moved to EmDash on Cloudflare, and the reason is that most of my building now happens alongside an AI agent.
Read more<iframe width="560" height="315" src="https://www.youtube.com/embed/kssIEqSJeMI?si=o5Z2NNTOdtyWE824" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
Astro has become my JavaScript framework of choice for web projects going into 2024. I always found myself struggling with feeling like I had a whole bunch of complexity I didn't need with frameworks like Next.js, but not enough power or flexibility with pure static site generators like Hugo. Astro's "just in time" approach to handling dynamic web apps — from a singly dynamic component to full-blown server-side rendering — has me convinced that it's the right default choice for most new web projects today.
Interesting watch from Jason Lengstorf and I have to agree with what he says, I've been using Astro daily at work for the past few months and it's pretty much always going to be my goto, usually in SSR rather than statically generated but the flexibility of Astro is that I can choose SSG or SSR depending on the project.
This site is currently running on Astro in SSR mode and hosted on Vercel, for example. With Directus acting as the content engine.

This site has changed CMS more times than I can count since 2003. This time I moved to EmDash on Cloudflare, and the reason is that most of my building now happens alongside an AI agent.
Read more
I wanted a simple dashboard that showed me events as they happened, so I wrote a quick little Astro app. It grew into Get Butters: a real-time event feed with a REST API, a CLI, insight cards and push alerts.
Read more
Once four agents can edit the same repo, architecture stops being the hard problem and coordination starts. The five roles I run and what each one is forbidden to touch, why every handoff goes through a file, a worktree script so agents stop racing, and the failure modes worth naming.
Read more