Skip to content
All work
Research tooling2026Design & engineering

A simulation engine with an interface people will use

A numerical solver wrapped in a browser interface, so that changing a boundary condition takes a drag instead of a rewrite. Built to replace a pile of one-off scripts.

Flow

The problem

Every new configuration meant copying a script, editing constants by hand, and hoping nobody had touched the shared helper file. Results were correct but unreproducible — nobody could say with confidence which version of the code produced which figure.

The approach

I separated the solver from everything around it. The numerics became a pure function of an explicit configuration object; the configuration became something you could build in a browser and serialise to disk. That single split made runs reproducible almost as a side effect.

What I'd do differently

I optimised the solver before I had real usage data, and most of that work turned out to be irrelevant — the actual bottleneck was people waiting on each other, not the CPU. Next time the interface comes first and the profiler comes second.