
A fully custom 45% mechanical keyboard, built solo from bare components to a working daily tool. Every layer is mine: the PCB designed in KiCad, the case CNC-machined from aluminium, the SMD components hand-soldered, and the firmware written to tie it all together.
The 45% form factor squeezes a full typing experience into a board smaller than a compact 60% — which means the matrix, controller placement and case geometry all had to be worked out from scratch. CAM toolpaths for the case were programmed and machined as part of the project.


KiCadCNC machiningSMD solderingQMK firmwareCAD/CAM

Nothing Playground is Nothing's AI widget-builder: describe an app or widget in plain language and it gets built, previewed, and deployed to your phone's home screen — then shared with the community for others to install and remix. It shipped publicly with Nothing OS 4.0.

I worked across the whole platform — web, backend, the Android builder app, and the infrastructure underneath — from before the beta to well past launch: 112 merged PRs across the product's three repos.
Browse community-built apps at the live site — or build your own if you have a Nothing phone.
TypeScriptPython / FastAPIKotlin / ComposeTerraformAWSDatadogPostgres

A pocket voice recorder that is just one mechanical key. Press it and the onboard mic starts recording; press again and the audio lands on your phone as a WAV file. No screen, no pairing dance — the link stays connected and reconnects on its own.
Every layer is custom: the firmware on a Seeed XIAO nRF52840 Sense, the BLE audio protocol, the Android and iOS companion apps, and the 3D-printed enclosure around a single MX-style switch.
nRF52840Embedded CBLEADPCMAndroidiOSCAD / 3D printing

An isometric.nyc for London — built out of food. Every tile is the real building at that London spot (its actual massing, storeys, roofline, footprint) re-skinned in the signature food of the best restaurant there: a Soho townhouse rebuilt out of sushi, a Victorian terrace re-skinned as spaghetti, a railway arch made of tacos.
It is not a one-shot generator — an autonomous agent keeps the food-city true to the real world.

Open the live site, click the glowing blue orb and say "find me italian" — the camera flies to the matches, rings them, and JARVIS answers out loud. Drag to pan, scroll to zoom.
TypeScriptVercelPixel artVoice agent

My final-year masters project at Imperial College London (Oct 2024 – Jun 2025): stopping a flexible wing from shaking itself apart. Flutter is the aeroelastic instability where aerodynamic forces and a wing's own structural dynamics feed each other until the oscillation grows — and the fix was to sense it and actively fight it in real time.
I simulated and designed the wing in SHARPy, an open-source aeroelastic solver, then built and tested a fully functional 1.2 metre wind tunnel model around it.
The model wing carries an integrated accelerometer and load cell, read and acted on by an ESP-32 running the control loop. In the wind tunnel, the closed-loop controller reduced flutter oscillations by 40%.
SHARPyPythonESP-32Embedded systemsWind tunnel testing

A web application that helps anyone learn alternate keyboard layouts and shortcuts — guided, in the browser, with an on-screen keyboard that shows what your fingers should be doing.
Switching layouts (Colemak, Dvorak, or a custom split-board setup) has a brutal cold-start. Layout Learner shortens it with focused drills instead of raw typing tests.

TypeScriptReactVercel