Mechanics, optics, electronics and software, usually for one machine at a time. The maskless lithograph is the main project; the rest grew around it — resist process, CAD and layout tooling, a scanning microscope.
Drag the divider. On the left is the GDSII file that went to the machine; on the right, a photograph of what came out, corrected for perspective so the two line up.
The silicon chip is 25 × 25 mm; the layout on it, a logo with captions and four dithered pictures, takes 20 × 20 mm. One exposure job.
The machine exposes one DMD frame at a time: this chip is 1 869 fields of 0.25 × 0.38 mm, placed side by side by the stage. Switch the grid on, then off, and look for the seams.
What ends up in resist depends on development as much as on exposure: developer, time and temperature all change the result. These are samples from process tuning. Works by Magritte and Escher are blurred on both sides: they are still under copyright.
Developed in resist · microscope
Process development
Micro-well arrays in resist
Bringing up the resist process for wafers of micro-well arrays: spin-coating curves at 3000–7000 rpm, exposure-time sweeps, development. Each array carries its own settings, exposed next to it — here pitch 75–78 and about 3.4–3.5 s per field. The work began on a pre-alpha of Prototype 1.0 with a different projector and continues on Prototype 1.0 itself.
Spin coating
Dose matrix
Development
Microscopy
Ongoing
Captured through the bridge itself
Open source · MIT
FusionMCP
A Fusion 360 add-in that lets an AI agent drive CAD: a local HTTP server that runs Fusion API calls on the main thread. 170 commands — sketches, features, assemblies and joints, CAM, sheet metal, export, screenshots.
Fusion 360-style modelling inside FreeCAD 1.1: a command ribbon and Fusion shortcuts, extrude and revolve by sketch region, Press Pull, Shell, Joints. References between bodies are kept automatically, and failed kernel operations are retried. Around 100 test files.
Microfluidic chips designed as code: a parametric cell library, a hydraulic solver for pressures and flows (modified nodal analysis) and GDS output that goes straight to the lithograph. Browser UI on FastAPI and Vite.
Python
GDSII
FastAPI
In development
Layout tooling · MIT
KLayout MCP
An AI agent draws GDS / OASIS layout in a live KLayout window, one step at a time, while you watch and edit alongside.
AI agent — MCP over local HTTP
Server inside KLayout — Qt main thread, token and origin checks
Visible layout view — about 16 tools plus scripting
Python
KLayout
JSON-RPC
Instrument
Goose — motorized microscope and slide scanner
A scanning microscope for histology slides: mechanics in FreeCAD, Arduino Mega firmware, a PySide6 control app. The same problems as in the lithograph — focus, flatness, stitching — on a different instrument.
Snake scan over the whole slide
Height map for slides that are not flat
Two-phase contrast autofocus
Stage calibration by FFT phase correlation: steps/mm, backlash
Multi-Z capture and focus stacking
Stitching: SIFT matches, global least-squares placement
PySide6
OpenCV
Arduino
FreeCAD
AI tooling · MIT
Swarm Suite
MCP servers that work as a review team for software that talks to hardware. 53 specialised experts start from the datasheet — registers, pins, protocols, timing — and review and fix code against those facts. When they disagree, the outcome is recorded as an architecture decision.
Python
MCP
Embedded
In development
Two bench runs, silent
Experiment
Tubular linear motor
An attempt at a direct-drive linear axis with no ball screw: a wound coil carriage travelling along a cylindrical rod, driven from an Arduino through a driver board on a lab supply. The second run shows smooth travel.
Coil winding
Arduino
Motor driver
Prototype
Partnership
Looking for a manufacturing partner and investor
On the table: a working Prototype 1.0, the Prototype 2.0 design, full documentation and in-house software. A partner brings production, supply chain and market access; deal structure and investment size are open. Demonstrations and sample exposures by arrangement.