
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
I get it, sometimes life is hard.
But I like to keep some words in mind that a friend told me years ago.
This has stayed true years later, and no matter how tough things get, even if it feels like the world is out to get me, I just solider on.
Some days are harder than other days:

Some days, all I can do is just wake up in the morning, drive my daughter to school, hit the music, and get shit done, then pick up daughter from school, make dinner, hang out, and go to bed to repeat it all the next day.
Some days, All I can do is look in the mirror, remind myself of all I've accomplished so far, and that there's still so much to get done.

But when you look at your obstacles in life, how many are there really? As my friend Jason says, the only two obstacles in life are really willpower and understanding.
I only have two obstacles in life: willpower and understanding.
>
No one will try to stop me from learning enough to gain understanding. So really, understanding is just another test of willpower.
>
So will I dig in, trust myself, and push until I get what I want in life?
>
Or will I give up, settle in, and tell myself The World is out to get me?
And some days, some days, it's all wibbly wobbly anyhow.


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