Posts
All the articles I've posted.

Blume
When MkDocs 2.0 Broke Material, I Took the Opportunity to Try Blume I've been using MkDocs with the Material theme for the documentation for my Novel Codex project for quite a while. It has been a good combination: Markdown files, a simple configuration file, a decent-looking documentation site, and very little to think about. Then…

Travel Router
Building a Travel Router That Doesn't Ruin Movie Night The problem This whole project exists because of one specific holiday. The accommodation's Wi-Fi died completely, for two full days. No terrestrial TV either. Two days of genuinely nothing, in the evenings, on holiday. I count it as a personal engineering achievement that I survived those…

Rotating the Console
I have a 22" monitor that it fixed next to my 32" screen in portrait mode. When using a Linux command line based system it makes reading it a challenge. On a recent build of OpenWRT I was working with I needed to stop cricking my neck to read it properly. For the HDMI console…

Hashed Known Hosts File
To set known hosts to unencrypted save in Ubuntu, you can modify your SSH configuration by editing the ~/.ssh/config file and adding the line HashKnownHosts no. This will ensure that hostnames are stored in plain text rather than hashed. Make sure to back up your existing configuration before making changes.

Nano’s Work Here is Done
You've crossed the final threshold: the moment when opening Nano feels more alien than opening Vim. And :set ff=unix removes one of those occasional reasons for reaching for something else. Add these to the mental toolkit: :set ff? " What line endings have I got? :set ff=unix " LF :set ff=dos " CRLF :set list…

11 Laws of the Universe
These aren't scientific laws, but widely-used mental models and heuristics that help explain behaviour, decision-making, management and problem solving. 1. Parkinson's Law Definition "Work expands to fill the time available for its completion." Coined by historian C. Northcote Parkinson in 1955. Meaning People naturally consume whatever time they are given. Give someone: 2 hours →…

Fish and Python autovenv
I used a plugin for a while to automatically activate and deactivate my Python environments when I change directory. It looks like that's been discontinued. (Fish and autovenv) I took it upon myself to roll my own: ~/.config/fish/conf.d/autovenv.fish function python_venv --on-variable PWD set -l tree (pwd) while test "$tree" != / for myvenv in "$tree/.venv"…

Why I Moved My Biggest Project from React to Svelte
Over the past week I finally took the plunge and migrated one of my most ambitious projects from React to Svelte. It wasn't a decision I made lightly. The project is substantial, and migrating a codebase of that size isn't something you do on a whim. But after spending time building a few smaller applications…

Zed (Editor)
Today I decided to change things up a little. I've been a huge fan of VSCodium for quite a while now and it's served me incredibly well. I've never really had any major issues with it, and it's been my editor of choice for years. That said, it still carries the Microsoft lineage. I know,…

AXIS P3224-V Multicast Setup Guide
Overview Receiving multicast video streams from AXIS cameras requires proper network configuration at multiple levels: kernel, firewall, multicast group membership, and RTP/H.264 decoding. This guide documents the steps required to successfully receive and record RTP multicast streams from an AXIS P3224-V Mk II camera using GStreamer. Network Setup in This Example ComponentValueCamera IP10.0.133.12Client IP10.0.133.83Network Interfaceenp86s0Multicast…