Projects
Having been in leadership and management roles for a long time now, I do still like to keep my hand in with the odd bit of hobby coding — mostly for fun, partly to scratch an itch, but mostly because I think engineering leaders who've totally lost touch with the craft make worse decisions.
Here are a few side projects that I have built — and sometimes maintain — outside of day-to-day work.
Home automation
I have a "home lab" server sat on top of the bookshelves in my home office running Proxmox and a handful of projects, including my ever-expanding Home Assistant setup.
I started out with modest intentions — a few LED light strips in the living room controlled over WiFi via Google Assistant and some Google Home Mini / Nest Mini speakers — and have evolved it and built it up over time into something rather more robust.
A bit of automation using off-the-shelf products and Raspberry Pi's has expanded into hardware and software hacking, solar arbitrage, improved household energy efficiency, and genuinely useful automation and security enhancement for our home.
It's been fun to mix physical electronics — although I hate having to solder tiny wires with my big hands and deteriorating middle-aged eyesight — with code hacking, going cross-eyed debugging YAML, and running a home lab server while keeping physical switches as backups for every "smart" implementation, and doing it all in a way that is accessible to my distinctly less geeky wife!
The current inventory looks something like this:
- A WiFi6 mesh network with router and 3 satellites to cope with the thick walls in our house
- 2 Nest thermostats - one for the central heating in the house, and one for the poolhouse
- A WiFi and MQTT-enabled in-home display for our gas and electricity consumption
- WiFi LED lights in the living room, kitchen, and office
- A self-made "chandellier" in our stairwell with wireless RF switches and WiFi integration
- Zigbee lights in the porch and side door
- Zigbee door sensors in the swimming pool
- Zigbee climate sensors in the poolhouse and porch
- Zigbee smart sockets scattered around the house to extend range
- Zigbee smoke alarm in the garage just in case our solar inverters or batteries (or either of my motorbikes) decide to spontaneously combust
- A WiFi camera built on a Raspberry Pi Zero W watching over the driveway
- A night-vision enabled WiFi camera and IR light to watch over our puppy in her crate (which has now been retired as she's somehow 2 years old already)
- 9 (I think) Google Home Mini / Nest Mini speakers around the house, including stereo pairs in the kitchen and living room, and a physically hacked one in the poolhouse with an externally wired AUX-out socket and switch, feeding into the poolhouse sound system
- A WiFi access point on the side of the garden shed, giving WiFi to the full property boundaries
- WiFi smart sockets controlling pond pumps and garden lights
- Shelly smart relays controlling the pool pump, dehumidifiers, and underwater light
- Smart sockets in the greenhouse to control a heater
- Hand-built ESP32 temperature sensors in the greenhouse monitoring outside air temperature, ground temperature, and inside air temperature in 2 zones
- Hand built ESP32 temperature sensors in the pump room to monitor pool outflow and inflow temperatures, as well as boiler outflow temperature
- Hand build data-logger for my Solis solar inverter
- Modbus connection to my FoxESS inverter and battery management system
- Home Assistant server with MQTT and lots of automations to:
- Manage battery charging / discharging in conjunction with Octopus Energy pricing and special events
- Turn lights on with smart timers linked to sunset times
- Heat the greenhouse if it drops below 5C (to keep my wife's fuchsia collection safe over winter)
- Run the pool dehumidifiers only when the humidity is too high (and the doors aren't open)
- Run the pool pump and filtration on timers that vary by season to make the most of either cheap night-time electricity in the winter or solar yield in the lighter months.
Chef-o-tron
Back in November 2021 I found myself laughing at a couple of tweets from Alex Rushmer and Dhruv Baker — a couple of chefs I followed on Twitter — bemoaning the ludicrous state of festive food items in UK supermarkets and on TV, and wondering if there was some kind of festive food generator machine that churned them out?
Seemingly there wasn't, so I created one - the Chef-o-tron
It started out simply enough as a randomised text string generator that smashed together a few festive foods in the name of comedy, but then I started adding to it.
What was originally xmas focussed turned into something more suited to all year round usage.
And then I added a tasting menu generator for extra pseudo-chefiness.
And a bingo card generator for people to use while watching their favourite cooking shows - first Masterchef and then Great British Bake Off.
The markup isn't pretty, but it works and it raises a smile whenever I decide to pick it up again — normally before a fancy meal out at Vanderlyle in Cambridge, which is run by Alex Rushmer, one of the original inspirations for Chef-o-tron in the first place!
Drink-o-tron
Not being one to waste the opportunity to stretch a joke, I decided to recycle the code underpinning Chef-o-tron to produce similarly over-the top beverage ideas, because... well, I could, and I like delicious (and sometimes ludicrous) beverages!
Thus Drink-o-tron was born and proceded to come up with stupid beverages galore!
Given the propensity for some craft beer afficionados to blather on about umpteen different grains, hops, adjuncts, and beer styles, I created a craft beer generator - and some of them even sound like they might be tasty!
I also wanted to have a stab at cocktails too, so I did.
I've thought about plugging the craft beer generator into some kind of AI image generation to produce beer labels for the ludicrous ideas it comes up with, but I haven't got round to it yet.
I did, however, make ChatGPT come up with a name for a beer as well as a review and some accompanying tasting notes.
Work clock
I wanted a clock for my office, and couldn't decide what I wanted, so I opted to make a slightly unusual one with a Raspberry Pi and an e-ink screen.
Inspired by Matt Webb's AI Poem clock as well as this very expensive wall clock (and this much less expensive one), I wanted a word-based clock for my office that would not show the exact time but would be deliberately more vague.
An e-paper display seemed ideal for this as it would only need to update relatively infrequently — I settled on every 5 minutes, and only during working hours.
Because this was going to be sat on my desk, I only want / need it to show the time during by working hours (and to act as a prompt to tell me to stop working at the appropriate hour), so to reduce the number of display refreshes the script will write a status value to a text file each time it runs, and will check the status next time it runs in order to see if it needs to update the display or not.

Check out the GitHub repo for more info and a parts list if you're interested in making your own.
I will make a nice frame for it at some point.
No, really, I will - it's on a "to do" list in my office, and everything!