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.


Minimal illustration of an Apple M-series-style silicon chip on a dark background, with amber circuit traces around a central core-grid die 28th May 2026

Running iai-callgrind on Apple Silicon

iai-callgrind needs Valgrind. Valgrind has zero Apple Silicon support. Here's the native arm64 Docker workaround I use to run deterministic instruction-count benchmarks locally - seccomp trap, --locked gotcha and all.

Read article →
Social card for Parity Suite (paritysuite.org), the DynamoDB conformance suite that scores emulators against live AWS DynamoDB 26th May 2026

How close is your DynamoDB emulator to AWS?

My DynamoDB conformance suite has a site now. Eight emulators, 684 tests, all scored against live AWS DynamoDB, with fresh results every run - standings, per-target history and the full matrix included.

Read article →
The Dynoxide hexagonal logo alongside a security shield on a dark background 12th May 2026

Filing my first security advisory

Logged into GitHub yesterday, hit a Dependabot alert on dynoxide, ended up filing my first GHSA. Here's what I'd tell past-me about the form, the order of operations, and the bug itself.

Read article →
The Dynoxide hexagonal logo centred on a black background 5th May 2026

Dynoxide patch notes: 0.9.10 to 0.9.12

Notes from the latest stretch of dynoxide patch releases - what shipped, what got fixed, and the takeaways.

Read article →
Illustration of a small server with radiating network connections on a dark grid background 2nd May 2026

A year with my Intel N100 home server: what changed

A year on from the £250 N100 server build. The boring infrastructure won. Unbound got removed, Tailscale earned its place, and the disk debate I lost sleep over turned out not to matter.

Read article →
DynamoDB Conformance Suite social card showing 526 tests validated against real DynamoDB with pass rates for each emulator 13th April 2026

Building a DynamoDB conformance suite

AWS doesn't ship a conformance suite for DynamoDB emulators, so I built one. 526 tests, ground-truthed against real DynamoDB. Dynoxide passes all of them. DynamoDB Local fails 42.

Read article →
The Dynoxide hexagon logo alongside the npm logo on a dark background 6th April 2026

Dynoxide 0.9.8: fixing the orphan problem

If you backgrounded dynoxide in an npm script, killing the dev server left it running. 0.9.8 fixes three root causes so the process actually dies when it should.

Read article →
Illustration of the Dynoxide logo with DynamoDB table icons on a dark background 2nd April 2026

Introducing Dynoxide: a fast, embeddable DynamoDB engine

I built a DynamoDB engine in Rust that starts in 15ms, checked against real DynamoDB by its own conformance suite. Here's why, and what it's for.

Read article →
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 →