Journal
Notes from real projects - AWS, DynamoDB, Rust, home servers, and whatever open source tool I'm currently building.
Articles
Dynoxide 0.10.0: it runs in the browser now
The same DynamoDB engine now runs in a browser tab on OPFS, there's an official ~5 MB Docker image, and a storage-backend trait sits underneath it all. The biggest dynoxide release since the engine itself, and the first that breaks things.
Read articleRunning 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 articleHow 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 articleFiling 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 articleDynoxide 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 articleA 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 articleBuilding 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 articleDynoxide 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 articleIntroducing 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 articleAutomating 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