A black and white portrait photo of Martin Hicks.

Journal

Notes from real projects - AWS, DynamoDB, Rust, home servers, and whatever open source tool I'm currently building.


Terminal showing automated YouTube Shorts pipeline commands with fetch-fixtures, encode-short and upload-short output 21st March 2026

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 →
Browser mockup showing the Recently Played Last.fm widget with album artwork and track listings 8th March 2026

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 →
Illustration of a lock surrounded by device icons connected through a VPN tunnel 28th July 2025

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 →
Illustration of a shield with a checkmark surrounded by DNS query flow lines 20th July 2025

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 →
Illustration of a small server with radiating network connections on a dark grid background 3rd July 2025

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 →
NPM package manager logo - red text, on a white background, reads - NPM 16th May 2023

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 →
NPM package manager logo - red text, on a white background, reads - NPM 15th May 2023

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 →
Architect framework banner - everything you need to build Functional Web Apps 24th April 2023

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 →
The Neuralyzer in Men in Black 19th December 2022

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 and WebC text only logos on a black background 17th December 2022

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 →