Craft-driven static Astro builds in S3, a baptism by fire


I am normally very toe-in-the-water on AWS, but a recent project forced me to go all-in on it and it was pretty fun, all things considered.

Let's implement dynamic DNS using Crystal and Cloudflare


My dyndns client was broken, and they keep getting me to choose pictures of buses to renew my free domain, so I've taken matters into my own hands.

Shortcuts is nearly good


Shortcuts is such a good way to dip your toe in the water if you're potentially interested in programming in any way but have zero experience. But I'm still not really sure who it's actually intended for.

Learning the fretboard


I made a thing. I have played guitar on-and-off for over 20 years and I still can't easily identify notes on the fretboard. I had just accepted that it was never going to happen. I've now changed my mind.

Name badge


No, I don't need this. No, that doesn't matter; I have tonnes of things I don't need. That sounds like a brag but it's not meant to.

Solve Wordle


It's completely pointless to cheat at this game, which is why I've done it.



This week I needed to make a really big form. It’s really big. Most people don’t like forms, but I’ve always been a bit of a contrarian, and my approach for saving user input on this form got me thinking about how much effort goes into things people take for granted. In code, I mean. Life is way out of scope for a blog post.

Game Boy Camera


That Game Boy Color image was bothering me. We can do better.

Shortcuts for GIFs


I love GIFs. I use them all the time. On my laptop, I have a LaunchBar custom bookmarks index that lists them all so that they're searchable and I can access them easily, but that's more difficult in iOS. I decided to see if I could use iOS' Shortcuts app to give me some sort of search UI for them, and it turns out I can!

Context-specific aliases with fish shell


We're using Docker for everything now, which is great but it's a big ask of some of our frontend devs who aren't as comfortable with a CLI as others. Fortunately, there is a way!

I hate XML


The above screenshot is the difference between an XML product feed that Facebook can't be parsed (top) and one that can (bottom). A default namespace declaration. Why does this matter?

I love GraphQL


I've been using GraphQL with Craft since I redeveloped this site, which is quite a while now. But running someone else's GraphQL API is like training wheels.

Get Computers To Solve Your Problems


The world is in a bit of a state at the moment. People are panicking and they're scared. Far be it for me to suggest that poor leadership might be at least partly to blame. I never learn lessons from other people's mistakes so how can I expect the people who run the country to do it?

It's good to have a development platform again


I'm enjoying coding again. And it's a little weird.

Hits from the Pong


I wrote a blog post over on our highly corporate company blog which has two whole posts on it. It's

Think before you buy Coda for iOS


Panic released Coda for iOS yesterday, and it looks pretty excellent (Panic are very skilled at making things look good). However, for a lot of people, it will be missing something huge - any kind of environment.



Next to the rpi for a size comparison Tessel finally arrived. I say "finally" but I believe it

An Automator Folder Action for Screenshots and Dropbox


Photos of dogs and cats and leaves and horizontal lines will be back soon.

yet more effort toward keeping config out of git


It seems that I spend most of my waking life concerned about keeping usernames and passwords out of