Yegor Gaidar
Available · Q4 2026
Lab

Four instruments,
no videos.

Every demo here runs on your hardware and prints numbers it measured itself: a benchmark over your own CPU, an election between five real Web Workers, a model downloaded into your GPU, a scene generated from code. Reload and the figures change, because they were measured rather than drawn.

01 WebLLM chatOn-device inference A language model running inside the tab, on your GPU, through WebGPU. No API key and no metered token — the price of hosting was the reason to ship the model to the reader instead.
  • Qwen2.5 0.5B and 1.5B, SmolLM2 360M
  • Streaming tokens, measured tok/s
  • Prompts never leave the tab
WebGPU
02 WASM vs JSThree implementations One 7-rule scoring pass, written three times: objects with branches, flat typed arrays, and a 218-byte WebAssembly module emitted byte by byte without a Rust toolchain. The page refuses to print a ratio unless all three agree on the flag count.
  • Median of 9/25/99 repetitions
  • Hand-emitted wasm, no toolchain
  • Carries a dated correction of its own earlier claim
218 B
03 Kill the leaderReal Raft, real workers Five Web Workers running the Raft protocol — election timeouts, RequestVote, AppendEntries, term rules. The button calls worker.terminate() on the leader; the survivors notice and elect again, and the recovery is decomposed into detection, campaign and replication.
  • Measured with performance.mark(), not animated
  • Below quorum it refuses to elect
  • 500 fault schedules gated in CI
5 workers
04 Low-poly cicadaProcedural geometry A cicada built from Three.js primitives at runtime: no model file, no loader, no asset request. Wings pivot at the shoulder and feather through the stroke, so the beat reads as flight rather than as a windscreen wiper.
  • Hundreds of flat-shaded triangles, generated in code
  • Wingbeat slider, orbit, wireframe
  • Nothing to download but the library
Three.js
All four run client-side · nothing you type is sent anywhere Source on GitHub, one repository for the site and the demos
218 B
Hand-emitted WASM module
5
Web Workers in one cluster
0
API calls in the chat
3
Implementations of one scorer

These are the demos' own constants, not benchmark results — the numbers that matter are printed on each page, by your machine.

How to read a lab page

Every page states its own limits.

The WASM page opens with a dated correction of what that URL used to claim. The Raft page refuses to elect below quorum and says so in the banner. The chat tells you when WebGPU is missing instead of falling back to something slower and calling it the same thing. A demo that cannot fail is not a demo.

Stack
WebGPU · WASM · Web Workers · Three.js
Server cost
static files only
Telemetry
self-hosted Umami, no cookies

The old fraud-benchmark URL was replaced in August 2026: /lab/rust-wasm-fraud/ → 301 → /lab/wasm-vs-js/. The write-up at /blog/rust-wasm-browser-fraud/ carries its own correction.