Journal
Notes from real projects - AWS, DynamoDB, Rust, home servers, and whatever open source tool I'm currently building.
Automating my son's YouTube with Python and FFmpeg
My son wanted a YouTube channel. I wanted to make sure I wasn't the bottleneck. Here's how I automated the entire weekly workflow with Python, the FPL API, Whisper, FFmpeg, and the YouTube Data API.
Read article →
Recently Played: bringing back my Last.fm component
I had a Last.fm widget on my site in 2010. Fifteen years later, I brought it back as an Eleventy WebC component with SSR, live polling, and localStorage caching.
Read article →
WireGuard for safe browsing on kids' devices
Kids' devices leave the home network. WireGuard tunnels their DNS back through home filtering - everywhere, automatically.
Read article →
Running AdGuard Home and Unbound on a home server
AdGuard Home handles the filtering, Unbound handles the resolving. Together they give you private, ad-free DNS for your whole network.
Read article →
Building a tiny Intel N100 home server
I built a silent, tiny home server for £250 using an Intel N100. It runs 24/7 on about 8 watts.
Read article →
Remove trailing slashes with CloudFront and 11ty
Trailing slashes and 11ty's folder structure caused redirect loops. A simple CloudFront function fixed it.
Read article →
Enhance CSRF package - now supports multipart form data
My Enhance CSRF plugin now supports multipart form data - meaning file uploads work with the csrf-form component out of the box.
Read article →
DynamoDB Streams locally with arc.codes & Enhance
DynamoDB Streams don't work locally with Dynalite. I built an arc plugin that fixes that with DynamoDB Local and a polling middleware.
Read article →
A mistake the internet won't forget easily
A hungover deploy, a misconfigured cache header, and browsers that refused to forget. A cautionary tale about cache-control.
Read article →
Eleventy 2.0 & WebC
I rebuilt two production sites with Eleventy 2.0 and WebC. Here's what I learned about HTML-first components and the gotchas to watch for.
Read article →