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 computer, the long way around
9 media itemsAn 8-bit computer designed in Logisim, ported to Verilog, and manufactured through Tiny Tapeout.
This began in high school after NAND2Tetris: first a Logisim machine and hand-designed control words, then an assembler and real programs, HDL and FPGA experiments, and finally a manufactured TinyTapeout CPU with its own language and browser toolchain.
Fabrication credit: Tiny Tapeout team and manufacturing platform ↗
Worked through NAND2Tetris and started treating a computer as something that could be understood gate by gate.
Built the CPU, instruction set, control ROM, ALU and jump behaviour; the exported tables map 256 eight-bit control rows and a later 998-row sixteen-bit instruction/control exploration.
Wrote an assembler and programs including Fibonacci, prime generation, memory tests and an eight-digit Fibonacci implementation.
Moved the design into hardware-description languages, tested components, and used FPGA boards to validate the computer before fabrication.
Ported JRB8 to silicon, added SPI program storage, a small JRP language, compiler, tests, and a WebSerial compile-flash-run tool.
A home-grown CPU, toolchain, and browser programmer running in silicon.
The manufactured JRB8 on its Tiny Tapeout carrier, with external QSPI program storage.
A Tang Nano 9K FPGA used to validate the Verilog design before fabrication.
The original Logisim computer runs an eight-digit Fibonacci program before the design moved to HDL and silicon.
An early bench test of the fabricated CPU driving its LED program display.
A stable bench test of the original 8-bit computer running its display program.
The fabricated JRB8 running a compiled spinning-cube demonstration.
A slower spinning-cube build with the JRB8 identity rendered on screen.