Selected work

Design & build · 2026

Rust Fractal Explorer.

A real-time Mandelbrot & Julia explorer — every pixel computed in Rust, compiled to WebAssembly.

RustWebAssembly (wasm32)Web WorkersCanvas 2DReactVite

Live demo

Loading the WebAssembly module…
250
0°

Drag to pan · Ctrl/⌘ + scroll to zoom · every pixel computed in Rust

01 / The problem

I wanted a piece that proves systems-level range, not just front-end — real compute, in a real systems language, shipped to the browser without hand-waving.

02 / The approach

The renderer is a small Rust crate compiled to a raw wasm32 cdylib — no wasm-bindgen, just the C ABI and exported linear memory. It runs in a Web Worker: JavaScript allocates an RGBA buffer inside the WASM heap, Rust fills it with a smooth-coloured escape-time fractal, and the pixels come back to the page as a transferred buffer. A full 700×420 frame at the default detail takes about 47 ms on an Apple M5 Pro and longer on a phone, so input never waits for it: while you drag or zoom, the last frame is shifted instantly and a half-resolution preview is rendered, then the full-resolution frame follows once you stop. The overlay shows the real size and render time of every frame.

03 / The outcome

A genuinely interactive demo embedded right in this site — the clearest possible evidence that I can write Rust, target WebAssembly, and wire the memory boundary by hand.