01 — In three dimensions

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.

Loading…

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.

OpenGL ESCUDAProjectionADAS
Loading…

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.

OpenGLcuDNNSegmentationMedical imaging
Loading…

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.

OpenGLLiDARSARDEMQGIS
Loading…

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.

MagneticsThermal designAutoCADIS / BS
Loading…

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.

LabVIEWMachine visionPLCQuality inspection
Loading…

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.

AGVUltrasonic sensingHigh-current driveGPSProximity
Loading…

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.

6-DOF bipedRadiation surveyGPSEmbedded C
Loading…

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.

PCB designEtchingMentor PADSEagleBring-up
Loading…

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.

STM32H743grblHALMotion planningModbus
Loading…

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.

CUDAMemory coalescingWarpsProfiling
Loading…

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.

Llama 2 (7B)Renesas R-CarEdge inferenceNLP
Loading…

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.

PostgreSQL RLSSchema-per-tenantFastAPILinux
Loading…

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.

SVGP&IDCoolPropPsychrometricsEquipment selection
Loading…

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.

Navigation engineOSRMLeafletMapLibreGeocodingTelemetry
Loading…

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.

WebGLNodeServer-authoritative stateInstancingFrame-time gate
Loading…

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.

Three.jsWebSocketsPostgreSQLState replication
Loading…

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.

WebGLWebSocketsSpherical geometryLoad-tested
Loading…

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.

Dial-out workersWebSocketsContent-addressed transferTOTP
Loading…

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.

WebSocketsSpreadsheet engineCo-editingOperation ordering
Loading…

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.

Routing engineFastAPIngspiceTwo-layer boards
Loading…

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.

DEMViewshedLine of sightC++QtOpenGL
Loading…

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.

Wi-Fi CSIAndroidPyTorchOn-device training
Loading…

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.

CADServo mechanicsGait timing3D printing
Loading…

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.

CADTendon drive3D printing
Loading…

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.

FDM printingCADSlicing
Loading…

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.

Three.jsOrbital mechanicsLearning portal

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.