I void warranties.
.$ .,_ .$
gP""Y:$ g. ,gP ,P" _,P gP""Y:$
Y. ,Y: `$,P Y$ Y. ,Y:
`"" `b.`Y' `"-- `"" `b.
[github] [linkedin] [sheffield hackspace] [ukclimbing]
This page is meant to serve as a general dump of things I have done over the years. It is updated when I have the time and will to do it - which is to say - not often. I have added this sentence as otherwise the disclaimer would be quite short and wouldn't serve as a thick spacer between the header and the content section of this page. That will tell you everything you need to know about me.
Mar 2026 [Allen's Slab S 4a ★★] [Sickle Buttress S 4a ★] I added two more severes to the logbook.
Mar 2026 [dot-widget] I built a widget library for small LED matrix displays. It handles text and images, and uses a container layout system inspired by modern UI frameworks. I extracted it from my bay-indicator and brunel-clock projects so both share the same rendering code. Having a shared library means fixes and improvements in one place automatically benefit all displays.
Feb 2026 [bay-indicator-driver] [bay-indicator-server] I brought back a set of old Hull bus terminal signs that Sheffield Hackspace acquired. Each of the two text rows is driven by 32 AS1100 LED matrix chips daisy-chained together, giving a resolution of 192×9 pixels per row. I replaced the original Arduino Uno with a Seeed Studio XIAO ESP32C3 and rewrote the original driver as a standalone library using Adafruit GFX. The server exposes an HTTP API that accepts JSON, so the display can be updated with a simple curl command.
Jan 2026 [brunel-clock-driver] [brunel-clock-server] I overhauled the C++ BigClock library, originally written at Nottingham Hackspace to drive an Infotec radio clock. I replaced the original Arduino Uno with a Seeed Studio XIAO ESP32C3 for better performance, built-in WiFi, and USB-C. I also reverse-engineered the display protocol, which cut the codebase significantly, eliminated flickering, and quadrupled the framerate. The server exposes an HTTP API that accepts JSON, so the display can be updated with a simple curl command. [schematic] [prototype] [performance]
Nov 2025 [esp32-cc1101-cyble-micropython] An incomplete Micropython implementation of the water meter reader for home assistant. The original implementation was written in C++ and for a different platform. Since I wanted to learn a bit more about Micropython and SDR, I took this as an opportunity to learn. Half way through I realised that my water meter is not really compatible with the software, but not before I identified a few improvements that could be made to the reverse engineered communications protocol.
Nov 2025 [guitar-effect-components] Guitar effect components project is an attempt at documenting some common elements that I found when analyzing guitar effect circuits. I hope to add more details to each component as I discover the intention behind the variations. This should allow me to choose my own favourite and improve on it.
Oct 2025 [Emma's Dilemma S 4a ★] [The Bow S 4a ★] I have successfully led two more Severe routes. While they are of the same grade, the experiences were quite different — the first sporting a hard start leading to a pumped finish, and the second a sketchy middle with a runout top.
Aug 2025 [🔒parametric-equalizer] Parametric equalizer guitar effect pedal. The circuit is based on 3 RLC filter sections with the variable inductor implemented using a TL07x operational amplifier. This is my first project using surface mounted components. I have learned how to use an OpAmp to implement a buffer and an amplifier; how an RLC filter works; how to use an OpAmp and an RLC filter to shape the frequency response of a circuit. I have also learned that ICL7660 is not the same as ICL7660S and it makes an awful lot of noise difference. [prototype] [schematic] [pcb] [pedal]
Jul 2025 [Blackstar Amped1 Stand] A stand for Blackstar Amped1 amplifier. It provides front panel passthroughs for input jacks and pedal power, using Temple Audio 4X mod. I have generated the STL-s using OpenSCAD, as an alternative to Autodesk Fusion. [picture 1] [picture 2] [picture 3]
Jun 2025 [🔒avr-programmer] An ATTiny13 programmer PCB that utilises an Arduino Nano ESP32 and a Tag Connect cable to program IC-s on my guitar pedals. I was previously programming the IC-s using a DIP-8 socket. Since migrating to SMT, I decided to use the JTAG connector with pogo pins to program the controller directly on the PCB. [schematic] [pcb] [programmer]
Jun 2025 [🔒relay-switch] A true bypass switch for guitar effect pedals using an ATTiny13 microcontroller and a latching DPDT signal relay. Meant to be used as a submodule in other guitar effect projects. Written in Arduino C++. [schematic]
May 2025 [Reef Knot S 4b ★] I have led my first Severe route. It is just a glorified high-ball boulder problem with minimum protection. Still counts.
Mar 2025 [🔒waveform-generator] Sin-wave generator for guitar input simulation using the DaisyDSP platform. I have used the DaisySeed hardware, a potentiometer for frequency control, and a small I2C OLED display for current frequency value. Using ST-Link v3 Mini as a programmer. Written in C++. [prototype] [output]
Mar 2025 [🔒meater] Reverse engineer of the Meater food temperature monitor. The original device requires a phone app and an account in their system. I have used the Arduino Nano ESP32 hardware, and a small I2C OLED display to display the current temperature. Written in Micropython.
Feb 2025 [🔒fuzz-factory] A clone of the ZVEX Effects Fuzz Factory. The original format was quite annoying, given its horizontal orientation and input jacks on the sides. My aim was to make it fit the one true enclosure size and configuration. [schematic] [pcb] [pedal]
Feb 2025 [🔒germanium-fuzz] My take on the original Germanium Fuzz Face. Built with AC128 transistors I found on Ebay. The reverse polarity is implemented across +9V to GND instead of GND to -9V. I have standardised the switching mechanism, enclosure size, and potentiometer positions. [schematic] [pcb] [pedal]
Dec 2024 [🔒fuzz-face] Silicon NPN transistor fuzz face guitar effect pedal. This is a very simple circuit that became my first adventure into analog audio effects. I have (re-)learned basics of the electronic circuits, basics of analog audio processing, how to use KiCAD to design a PCB, how to horribly mess up said PCB, how to place a manufacturing order, how to be patient while waiting on the order, how to solder, how to debug your mistakes, how to use oscilloscope, how to design 3d models for printing enclosures, how to design 3d models for printing jigs to drill into the aluminum enclosures. All of my "best practices" come from continuous improvement of this circuit whenever I have learned a new thing. Thank you JHS Pedals for showing me a new hobby and Walrus Audio for inspiration. [schematic] [pcb] [pedal]
Jul 2016 [polarbtdump] Command line tool to dump training data from Polar M400 watch over Bluetooth, written in Swift 3. I got it to the stage where I could dump the contents of the watch filesystem into my local machine. I didn't have enough motivation to write the data transformation part. Later on I discovered climbing and have abandoned running as a sport.
Jun 2016 [polarspoofer] Command line tool to eavesdrop on the Bluetooth communication between Polar M400 watch and an iPhone device, written in Swift 2. It was meant to be a dirty and fast proxy.
Feb 2016 I have moved to London, United Kingdom.
Nov 2015 [polarusbdump] Command line tool to dump training data from Polar M400 watch over USB, written in Java. It never got past a proof-of-concept stage as I focused on reverse engineering the Bluetooth communication.