Blog
# AI-first engineering, technical leadership, and building things that ship
Clean URLs on the LAN, HTTPS from Anywhere, No Open Ports
Giving every service a proper name with Pi-hole and Caddy, remote access over Tailscale with real certificates, and the reverse proxy bug my own tests kept telling me was fine.
Home Assistant on the Pi: Alerts, Not Automations
Installing Home Assistant properly, connecting Hive, and the design decision that shapes everything: the house tells me things, it does not do things.
One Kettle, Three Clients: Home Assistant, Open Source, and a Beta
The dead AppKettle is now a Home Assistant device, a public repo with a Docker image, and a phone app in closed beta. The interesting part was teaching three clients to share one TCP connection.
An MCP Server for Every Hill in Britain and Ireland
My third MCP server ships its entire dataset inside the npm package. 21,576 hills, no API key, no network calls at runtime.
Setting Up a Raspberry Pi 5: OS, NVMe Boot, Docker, and Pi-hole
How I got the Pi 5 running headless from an NVMe SSD, locked it down properly, and hit the Docker firewall problem that nobody warns you about.
I am Building a Raspberry Pi Smart Home Hub
A single box that tracks my training, watches my finances, automates my home, and finally gives my kettle a permanent home. Here is what I am building and why.
I Built a Mobile App For My Kettle
After decoding the AppKettle protocol and building an MCP server, the obvious next step was a proper mobile app. Here is how I built it in React Native and what I learned along the way.
The Missing File in Your AI Coding Setup
Your AI can read your code but it cannot read your design system. DESIGN.md is a plain-text spec that gives AI agents the exact visual rules your project follows.
Reverse-Engineering a Dead Smart Kettle into an MCP Server
My AppKettle smart kettle stopped being smart when the company shut down. So I reverse-engineered their Android app, decoded the protocol, and wrote an MCP server for it.
A parkrun MCP Server That Needs Zero Configuration
I built an MCP server for finding parkrun events from Claude. No API keys, no OAuth, no setup. Just install and ask.
18 posts