I build graphics and systems software for the browser.
Real-time 3D, dense-data rendering, a custom physics engine, and the tools to author them — written in C compiled to WebAssembly and WebGL, from the primitives up, without frameworks.
Fifteen years of programming, largely self-taught, most of it at the low-level end: writing the renderer, the solver, the mesh kernel and the UI controls myself rather than reaching for a library. I care about software lean enough to be invisible — every live demo on my work page is a complete C/WASM application smaller than a screenshot of it.
German national, working remotely, fluent in English, German, and Russian. I treat the browser as a first-class rendering target for technical work — the way I think it should have been all along.
What I build
- Real-time 3D & dense-data rendering — streamed-tile maps, a fully procedural planet, quadtree level-of-detail; the streamed kind of rendering the standard web stack chokes on.
- Physics & simulation — a data-oriented articulated XPBD solver with inverse kinematics: rigid bodies, motorized joints, machines you can actually drive.
- Tooling — an IDE I wrote from scratch: a code editor rendered in C/WebGL (no DOM), live preview, inline knobs, an embedded AI agent over a sandboxed shell.
- Instrument-grade UI — rotary knobs, joysticks, XY pads, gauges: the controls you operate a machine or instrument with, which the web simply doesn't ship.
- GPU audio — a synthesizer that generates sound with a shader: GPU-baked voices, GLSL audio, AudioWorklet playback.
Selected work
How this was built
The honest version: I didn't write most of this by hand. I built it with language models — frontier and local, much of it with Claude Opus — and the collaboration is the actual subject, not a footnote. Each system here was scoped, structured, and verified by me, then implemented in tight collaboration with a model. Each took about a weekend.
Most of these projects are, underneath, experiments in directing AI: scoping a model to a task, guiding it by principle rather than line-by-line, and closing tight verification loops — me checking and teaching, or better, building harnesses the model checks itself against (a compiler as oracle, a rendered frame as oracle, a headless test). My component model does double duty — it keeps the software composable and lean, and it shapes a model's output into small, well-bounded, verifiable pieces, which is what makes the quality hold. The performance comes from design, not tuning: these are fast and tiny because they're built right, and the structure is exactly what a human directing by principle is responsible for. The fifteen years on the low-level end are what make the direction work — take the judgment away and the loop produces confident nonsense.
The full argument, with the oracles and the frontier-vs-local split, is written up below.
Writing
Contact
Open to remote work
I'm open to remote roles and collaborations in graphics, rendering, simulation, and tooling. The fastest way to see what I do is the work; the fastest way to reach me is email.