Nullify
Rebuilt the frontend for Nullify's AI security platform (470 components, initial payload halved), and cut Go and Python service startup times.
Full-stack product engineeringSoftware engineer / hardware tinkerer
I’m a full-stack software engineer: five years at Canva, now the primary owner of Nullify’s rebuilt frontend. I also design and build hardware, from custom circuit boards and processors to robots and embedded systems.
In progress Four legs, many revisions Robot dog An articulated BLDC quadruped brought together through custom controller electronics, wiring, an aluminium frame, and mechanical adaptations—built on an open-source 3D-printed design. Open project →
Bench testing Custom motor controller A compact STM32-based BLDC servo controller with magnetic sensing, CAN-FD, and a custom bootloader path. Open project →
In progress E-paper smart watch A custom round smartwatch built around a 1.1-inch e-paper display, Bluetooth MCU, sensors, charging, and power management. Open project →
Built / continuously revised LED clock A large networked HUB75 clock that grew from a bleeding low-resolution prototype into a polished clock, visualiser, and animation surface. Open project →
Wireless light gun An OpenFIRE-based light gun with ESP-NOW, a dedicated wireless dongle, on-device display, and printed enclosure. Open project →
Single-key keyboard A complete keyboard with one key, built around a tiny custom round circuit board. Open project →
Brother cartridge emulator A hardware and software investigation into the proprietary cartridges used by older Brother embroidery machines. Open project →
Sand table A kinetic coffee table that moves a hidden magnet to draw slow, geometric patterns through sand. Open project →
Moon lamp A large illuminated lunar globe on a custom printed stand, because ordinary lamps were apparently solved already. Open project →
Ethereal ink frame A framed e-paper display for generated artwork: quiet, persistent, and a little uncanny. Open project → 
Flare-On Four years of reverse-engineering challenges, suspicious binaries, and physical medals.
Open project →02 / FreeCAD 8 pieces
Mechanical wallet A printed card wallet whose thumb slider fans five cards out in a staggered cascade, with a rear door for notes and coins.
Open project →03 / 2019—2024 *
/o\
/@*o\
/o**@*\
/_*_o_*_\
||
2019 — 2024 Advent of Code Several years of puzzle solving across Python, Kotlin, Go, and Nim.
Open project →04 / AI inferencePR #46 · src/sd.cpp - int dim = sdxl_params ? 128 : 64; + int dim = turbo ? 64 : 128; + if (turbo) return denoised_cond; - float delta = -999.f / (step - 1); + float delta = step > 1 ? -999.f / (step - 1) : 0.f;OnnxStream / SDXL
Contributed Stable Diffusion XL and SDXL Turbo support to a tiny inference engine that runs on a Raspberry Pi Zero 2.
Open project →05 / CUDA 1 piece
Split seed and tree computation into separate CUDA kernels, more than doubling performance and making the search practical.
Open project →06 / Blender 3 pieces
FTL ship models Printable Blender models of the Kestrel, Rebel Flagship, and Stealth Cruiser from FTL.
Open project →07 / Repair 4 pieces
Nintendo DS repair Hot-air connector replacement followed by a full screen, touch, and audio test.
Open project →08 / Assorted 19 pieces
Side quests Internet-controlled blinds, reactive TV lighting, infrared photography, clocks, kitchen assistants, and assorted bench experiments.
Open project →Rebuilt the frontend for Nullify's AI security platform (470 components, initial payload halved), and cut Go and Python service startup times.
Full-stack product engineeringRendered Magic Design previews by adapting the editor's canvas renderer, built the frontend for a RAG prototype, and redesigned Marketplace search filters.
Software engineering / AI productsBuilt an internal Google Maps feedback tool, then ported Neighbourly to KaiOS/JioPhone within a 512 MB memory ceiling and wrote the team's first porting specification.
Software engineering internships
Built ASP.NET MVC and Angular applications, then took ownership of Angular projects and their Protractor test infrastructure.
Full-stack software engineering
Led software for a 50 kg competition robot, built and tested under the traditional six-week deadline.
Lead software developerFollow the builds, browse the half-finished experiments, or open an issue when I have wired something backwards.
A clock that kept evolving
8 media itemsA large networked HUB75 clock that grew from a bleeding low-resolution prototype into a polished clock, visualiser, and animation surface.
The hardware, ESP driver, web interface, enclosure, brightness behaviour, animations, and content all changed across several physical versions.
The first commit was already a working NTP clock, followed immediately by a split between display code and animation code.
A second physical version added updated clock models and over-the-air firmware support.
The project moved to PlatformIO, adopted a newer matrix library, and restored time, colour, and remote debugging on the rebuilt display.
New enclosure models tightened the display fit while a 60 fps cap and ghosting fixes improved the panel itself.
Animations, web serving, fonts, transitions, time sync, and daylight-saving behaviour were separated and refined into the current clock.
The first low-resolution prototype exposed severe light bleed between pixels.
The ESP32 HUB75 driver schematic behind the display controller.
The next revision running the clock with a full-colour spectrum treatment.
The compact controller wiring tucked behind the HUB75 panel.
The latest iteration of the display running a full-colour animation.
An early clock revision testing a smoothly shifting rainbow palette.
A later build revisiting the animated rainbow clock face.
The current web interface controlling modes and animations in real time.