Survey of Software · the workshop

The Workshop

Free working pages that measure a survey's finding on your data, in your browser. The real Python libraries run in the tab — nothing is uploaded — and every figure is measured while you wait, or marked in orange when it came from research instead.

Each of these exists because building it verified the survey it demonstrates: every claim became code that had to run, and what the code contradicted, the survey corrected. The page is the instrument; the survey has the workings.

muster

Kill a running job with a button labeled Deploy and watch one lane pay for the same work twice. It runs a real photo-ingestion pipeline — read the EXIF, thumbnail, downscale, then tag and caption each shot — on photos from your own machine, and prices the vision call it never makes: shrinking the image first saves 43% on one model tier and nothing at all on the other.

Survey 1.200 — LLM Orchestration Frameworks · Pillow, pillow-heif, IndexedDB, Web Workers

cache me if you can

A cache is paid for by its misses. The standard library's lru_cache answers a hit in 0.03 µs; cachetools in 0.5; diskcache in 4 — and then charges 350 µs for the write after a miss, so a 100 µs function needs 82% hits to break even. Pick your traffic's shape: LRU scores 0% on a loop, at any size up to half.

Survey 1.047 — Caching Libraries · functools.lru_cache, cachetools, diskcache, redis-py → Valkey / Redis, pymemcache

you want this sorted how?

Keep 100,000 keys in order, one insert at a time: pure-Python sortedcontainers beats the standard library's C by ten times — and if you only needed the order at the end, or just the minimum, the standard library beats it back. A race you start, with bars arriving in finishing order.

Survey 1.040 — Advanced Collections · sortedcontainers, heapq, bisect, pyrsistent, cytoolz

JSONic rituals

The famous "orjson is 6× faster" is a writing number — reading is about 2×, and the fastest reader is the one that validates. Paste your own JSON: both rituals are timed on it, and the page infers a msgspec.Struct from your data and shows what validation catches.

Survey 1.056 — JSON Libraries · orjson, msgspec, ujson, simplejson, stdlib json

compresso

One answer for the whole speed-versus-size range except the two far ends — and the read-back speed does not move whichever level wrote the file. Drop your own file on the full curve: every codec, every setting, each library's default ringed.

Survey 1.050 — Compression Libraries · zstandard (stdlib since 3.14), brotli, lz4, zlib

qrkadelic

"You can cover 30% of a QR code" is off by roughly three times. Grow a logo through the middle of your own code until it breaks, then point your phone at the screen — the camera you own is the second instrument.

Survey 1.080.1 — QR Code Generation · qrcode, segno, qrcodegen, pyStrich

sortie

Sorting is solved. Choosing how to sort is not — the real sorting libraries raced on your machine, and which one wins depends on your data's shape and size.

Survey 1.001 — Sorting Libraries · the built-in sort, numpy, and when to stop sorting at all

How these pages work

Each page downloads CPython compiled to WebAssembly (Pyodide) the first time — a few seconds, then cached — and runs the actual libraries from PyPI in your tab. Your file, your JSON, your payload never leave your machine. A Plain / Engineering switch shows the same demonstrations in ordinary words or with versions, byte counts and the measurement behind each claim; every page ends by copying a brief — your settings, your measured numbers — that you can paste into whichever AI you use to build the real thing.

The shared runtime is /workshop/_lib/; each page's measurement is one core.py beside it, fetched by the page and imported by the survey's native bench — the same code both places. Timing is best-of under a budget, batch-calibrated past the browser's clock clamp.

The Workshop is part of Survey of Software — neutral, category-first research on software libraries. Each floor model links its survey; each survey's S2 has the measured tables and the record of what building the page corrected.

Made by Ivan Schneider · Model Citizen Developer