Type: Code

All posts

ESPHome HW211 Component

3/6/2026

I published an ESPHome external component for HW211-family heat pump controllers, generating local Modbus sensors and optional controls for Home Assistant.


Heat Pump Hot Water Wi-Fi Adapter

26/5/2026

I replaced the proprietary Wi-Fi module in my heat pump hot water system with a local ESPHome adapter built using a Waveshare ESP32-S3-RS485-CAN module.


Cloud-Free PETKIT Feeder

24/5/2026

I converted a PETKIT Fresh Element Mini dry food dispenser to run locally with ESPHome, removing the need for a cloud connection.


Disk Shelf Fan Controller

24/5/2026

I added an ESPHome fan controller to my disk shelf, using a DS18B20 temperature probe, PWM fan control, and a small script to log HDD temperatures.


Room Controllers

14/5/2026

I turned my ESPHome LVGL light touchpads into reusable room controllers for lamps, weather, screen sleep, and per-room aircon control.


ESPHome Weekly Roundup: 4th May

4/5/2026

ESPHome weekly roundup for 4 May: Maxi1134's highly suspicious bed presence project using 16 load cells, HX711 sensors, and Home Assistant.


ESPHome Weekly Roundup: 27th April

27/4/2026

ESPHome weekly-ish roundup from Discord: BLE MIDI Remote for ESPHome, SnapSpot, and RealDeco's Sendspin Headphones.


ESPHome Weekly Roundup: 18th April

18/4/2026

ESPHome weekly roundup for 18 April: a tiny Sendspin speaker amplifier, ESPControl for smart home touch pads, and esphome-zerocode.


Evening Lights with Ambient Lux

18/3/2026

I updated my Home Assistant evening lights automation to use the ambient light sensor from my Ecowitt weather station, so the lamps turn on when it is actually dark.


Ecowitt Weather Station

3/3/2026

I set up an Ecowitt weather station locally with WSView Plus and Home Assistant, then mounted the WS69 sensor array above the greenhouse.


Rocket Lamp

15/2/2026

I converted a strange looking mains powered lamp to be USB-C powered and programmable using ESPHome.


Smart Soy Light

28/12/2025

I converted a Heliograf soy sauce lamp into a Home Assistant controlled smart light using ESPHome.


wyoming-whisper-intel

31/08/2025

I assembled a docker container or wyoming and whisper on intel GPUs. It is built on the intel/oneapi-basekit container.


Rathole Maintainer

18/06/2025

I became a maintainer of the rathole project, which is a secure, stable and high-performance reverse proxy for NAT traversal, written in Rust.


caddy-hostnames

18/04/2025

I released caddy-hostnames, which automatically publishes .local hostnames from Docker containers via mDNS using Caddy-Docker-Proxy.


freelens

24/12/2024

This project provides a reference implementation of NaviLens and ddTag for educational or personal use.


Update: Visualisations and Generalisations for Two Candles, One Cake

28/10/2024

I've updated a previous post on the Two Candles, One Cake problem by providing new visualisations and generalisation ability.


Update: Too Many Guns

1/10/2024

I've updated the Too Many Guns site to use MapLibre and partial property updates. The later change removes the need for client side callbacks.


Frame Game Solver

21/7/2022

I wrote a proof of concept solver for John Siracusa's Frame Game. I created an interactive dashboard and wrote an overview of how it works.


Two Candles, One Cake

16/7/2022

I solved the 'Two Candles, One Cake' problem using Python. Symbolic, numeric and simulation solutions are provided.


Wordle Solver

23/1/2022

I wrote a fast solver for wordle written in Python. This package offers multiple solving strategies and empirical comparison of each.


LTR390 Support in ESPHome

20/10/2021

I added support for the LTR390 UV and ambient light sensor to ESPHome. Pull request on Github.


SCD4X Support in ESPHome

20/10/2021

I added support for the SCD4X CO2 sensor to ESPHome. Pull request on Github.


PMSA003I Support in ESPHome

18/08/2021

I added support for the PMSA003I particulate matter sensor to ESPHome. Pull request on Github.


SHT4X Support in ESPHome

19/5/2021

I added support for the SHT4X temperature and humidity sensor to ESPHome. Pull request on Github.


binsmooth

13/7/2020

I wrote a Python implementation of 'Better Estimates from Binned Income Data'. This technique allows distributions to be estimated from binned data.


Teacher Pay Comparison

16/6/2020

I made a supplemental dashboard to accompany submission to 'Valuing the teaching profession' inquiry. The dashboard uses plot.ly Dash and the code is available on Github.


Too Many Guns

3/10/2019

I recreated this Greens NSW website using Dash. Code on Github.


dash-multi

21/4/2019

I wrote a wrapper for Dash to support multi page apps.


jitcache

7/2/2019

I wrote a Python package for function caching that prevents re-entrant calls.