Skip to main content

Blog

2024


Hot Tub Monitoring with Home Assistant and ESPHome

·2126 words·10 mins
A short blog post explaining how I replaced a proprietary wireless temperature monitor for my hot tub, with a simple ESP32 based micro-controller and a cheap bluetooth pool thermometer, all linked up with Home Assistant.

Writing a Home Assistant Core Integration: Part 2

·3053 words·15 mins

Part 2 of a micro-series of blog posts that outlines my journey toward authoring a Home Assistant Core integration for the Roth Touchline SL heating system.

This post covers the actual build and upstream contribution of the Home Assistant Core integration.

Writing a Home Assistant Core Integration: Part 1

·3468 words·17 mins

Part 1 of a micro-series of blog posts that outlines my journey toward authoring a Home Assistant Core integration for the Roth Touchline SL heating system.

This first post covers the design and build of a Python API client for Roth’s upstream API that controls the underfloor heating systems.

Libations: Tailscale on the Rocks

·2567 words·13 mins
A deep dive into my home grown cocktail recipe app which speaks Tailscale natively using tsnet, and serves up delicious drinks direct to your tailnet. Libations is built with Go, Nix and Vanilla Framework.

How I Computer in 2024

·2613 words·13 mins
An extended “uses” post that outlines the hardware I’m currently using, the software and tools that I use to get things done, and how I configure things.

Workstation VMs with LXD & Multipass

·2259 words·11 mins
An overview of Multipass and LXD, and how I use them for creating, managing and enjoying virtual machines on my workstations and servers. I use Multipass for creating ‘headless’ development machines, and I break out to LXD for more complex scenarios like booting and testing desktop distributions.

Secure Boot & TPM-backed Full Disk Encryption on NixOS

·2809 words·14 mins
An explanation of how to enable secure boot on NixOS, using a community project named ‘Lanzaboote’, and further how to automatically unlock a LUKS-encrypted disk using a TPM with systemd-cryptenroll.

Simplifying Test & Release of Snapped GUI Apps

·1449 words·7 mins
The community-led organisation Snapcrafters maintains hundreds of Snap packages, with hundreds of thousands of users. This post looks at an upgraded test/release process with automated screenshotting of GUI apps, and a new Github Actions based workflow.

A homelab dashboard for NixOS

·2101 words·10 mins
The homepage-dashboard NixOS service previously enabled the deployment of the wonderful homepage dashboard, but its configuration was not handled natively in Nix by the module. This post shows how I added support for native configuration, and how you can migrate.

Contributing Scrutiny to nixpkgs

·2216 words·11 mins
A follow on from my last post, outlining the process of upstreaming Scrutiny to nixpkgs to make it easier to consume, and have it included in future NixOS releases.

Packaging Scrutiny for NixOS

·3477 words·17 mins
A detailed walkthrough how I packaged Scrutiny, a S.M.A.R.T disk monitoring tool, for NixOS. Includes details of creating a NixOS module and using the NixOS testing framework to validate its functionality.

Building a blog with Go, Nix and Hugo

·1575 words·8 mins
Documenting how I render, serve, build and deploy my personal website and blog using a combination of Go, Hugo, Nix and Fly.io.

2022


Continuous Profiling for Juju with Parca

·2464 words·12 mins
(Repost) A write-up of my adventures with Parca, and building a Snap package, as well as a set of charms for driving Parca and profiling applications run with Juju on machines and Kubernetes.