Every project, rendered
Twenty-six interactive demonstrations covering the whole record — power equipment, robotics, machine vision, medical imaging, geospatial, automotive, GPU computing and platform engineering. Twelve are WebGL scenes with every vertex generated in the browser — no model files, no textures. The thirteenth is a live plant schematic. Drag to orbit, scroll to zoom. The second half is the independent and maker work: multiplayer worlds, a control plane, an autorouter, coverage analysis, Wi-Fi sensing and the robots on the bench.
3D Bowl View and the Virtual Wall
Four fisheye feeds project onto a bowl that stays flat under the car and lifts at the rim, so distant geometry does not smear across the ground plane. Detected obstacles rise as vertical panels, and the tire guidelines curve with the steering angle in real time.
OCT retinal layer segmentation
An OCT volume is a stack of curved boundaries. The foveal pit deepens through the inner layers and flattens at the RPE; the moving probe is the single A-scan depth column the instrument actually measures.
Terrain from LiDAR and SAR, hillshaded on the GPU
A digital elevation model with a colour-relief ramp and an analytic hillshade. The sun azimuth sweeps continuously — that parameter is exactly what a hillshade algorithm exposes, and why shading on the GPU makes large terrain interactive rather than pre-baked.
Distribution transformer — core, windings, cooling
A three-limb laminated core with concentric LV and HV windings, inside the tank and radiator bank the cooling calculation sizes. The flux pulse through the coils is phase-shifted per limb.
Machine-vision inspection line
Oil seals travelling under a camera and controlled lighting, with the pass/fail call taken at a fixed gate. The lighting is half the problem: without it the defect and the shadow look identical.
AGV — 600 kg material handling
An autonomous guided vehicle carrying a stack of clutch plates. The ultrasonic envelope ahead turns amber as the stopping distance closes — with that payload, detection range and braking distance are the same design parameter.
Bipedal radiation-survey robot
Six degrees of freedom — hip, knee and ankle per leg — walking a survey line past a source. The dose readout follows an inverse-square falloff, which is what makes the reading mean something as it moves. Published work; see the paper below.
PCB design and etching
The etch front sweeps across the board and the copper that survives it is the layout — artwork and finished board are one drawing. Routed traces, vias and through-hole parts, the way a board is taught from first principles.
Six-axis CNC motion control
The controller turns a toolpath into coordinated axis moves. Gantry, carriage, quill and spindle all follow the planner, and the cut is drawn as it is made.
Why memory access dominates GPU performance
The same arithmetic, twice: coalesced into full memory transactions, then scattered across many. The thread blocks light identically — the memory row underneath is where the difference lives, and where the optimisation work goes.
A language model inside an automotive SoC
Tokens crossing a fixed pipeline on the die — microphone, speech-to-text, embedding, attention, decode. Attention carries the visible weight, because on an embedded target the budget is memory and thermals before it is accuracy.
Multi-tenant platform isolation
Five hosts, many applications, and tenant data that must not move sideways between them. The rings are the isolation boundary — the property being engineered is not the data but the guarantee around it.
Chiller plant schematic, live
The plant designer's own symbol engine, running here exactly as it runs in the tool: a cooling tower rejecting heat, condenser water carrying it to the chiller, the compressor lifting it across the refrigerant circuit, and chilled water taking the cooling out to an air handler. Every symbol is authored in a 120 × 56 viewBox with presentation attributes for colour — so an exported drawing keeps them — and CSS classes for motion, which is why a plant of any size animates without a frame loop. Colours follow plant-room convention: chilled water blue, condenser water orange, refrigerant violet, air green.
Turn-by-turn navigation over terrain
A road route draped over terrain, with the vehicle placed the way the navigation engine places it. GPS fixes are projected onto the route and progress only moves forward, so a noisy fix cannot drag the car backwards; the heading is damped, so jitter cannot swing the map; speed eases into bends, and the next manoeuvre lights up as it comes into range. The route ahead stays bright while the travelled part falls away, and the gold line is the alternative the router offered. Overhead runs a live aircraft track — the same backend serves aircraft, ship and traffic layers to a web map, an Android client and a Windows client.
A multiplayer 3D city, held to a frame budget
Traffic, flight and a day/night clock, all running at once. The hard part is not the buildings, it is the frame time: every release of the real thing has to clear a measured gate against a concurrent-client target, and a release that misses it does not ship.
Voxel sandbox — a structure is an ordered list
The world is a height field of blocks, and a building is nothing but an ordered list of placements — which is also exactly what has to be replicated to every other player. The second cursor is a peer, a few placements behind.
An arena game on the surface of a globe
Steering happens on a sphere, not a plane: each body segment is the head's path, delayed and re-projected onto the surface. In production, four small workers share the players behind one origin.
A control plane with no inbound port
Workers dial out to the relay and hold the line; commands travel back down a connection the worker opened itself. The probes stopping at the red ring are inbound attempts — a blocked or banned SSH port changes nothing.
Three people, one spreadsheet
What is engineered is the ordering of their edits, so that every copy ends up the same. Each cursor's edits flow to the sync bar and come back to everyone in one agreed order.
PCB autorouter — rip up and retry
Nets are routed one at a time across two layers. When a late net is blocked, earlier copper is ripped up and laid again — the step that separates a router from a maze solver.
Radar and radio coverage over terrain
Every cell is either in line of sight of the mast or it is not. The mast height sweeps and the covered area changes with it — raising the antenna is the cheapest variable in the link budget, so it is the first one the tool exposes.
Sensing with Wi-Fi itself
A body between two radios changes the channel state on every subcarrier. The bars are that change, per subcarrier; the point set is what a pose head would regress from it. Research in progress — no trained pose weights are claimed.
Quadruped robot — a trot is two diagonals
Twelve servos, four legs. A trot is two diagonal pairs half a cycle apart; the body only stays level when stance and swing are timed together, which is why the gait is designed before the brackets are.
Tendon-driven robotic hand
Fifteen joints, five actuators. Each finger curls as one chain, so a grasp is a timing problem rather than a geometry one — the tendons at the wrist are the whole control surface.
A printed part is a toolpath first
The wall is laid segment by segment, in the order the slicer emits it. Four years of printed brackets, mechanisms and wearables came off a bench like this one.
A teaching model of the solar system
The orbital periods are in true ratio; the distances are not, because at true scale the inner planets vanish. Choosing what to keep honest is most of the design of a teaching model.
Drag to orbit · scroll to zoom. Rendered live in your browser — thirteen WebGL scenes with every vertex generated on the fly, and one plant schematic driven entirely by CSS. The same pipeline discipline as the embedded work, scaled down to a demonstration.