Field notes · plate № 0417
AGAR is a working petri dish. Two colonies spread by the Eden growth model; you place antibiotic discs and clear inhibition zones bloom where the lawn stops. This page is the recipe — palette, type, technique, and the three passes that took it from working to premium.
01 · The concept
A single interactive plate for the curious — students, lab folk, anyone who liked a microscope once. Its one job: make the Kirby–Bauer disk-diffusion test tangible. Grow two competing colonies in real time, then let the visitor drop drug discs and watch clear zones open where growth halts. The register is bright and playful, not clinical — microbiology as a garden you tend, not a slide you dread.
02 · Palette
Nothing decorative. Amber is the medium; two saturated colony hues that read instantly apart; one near-black for the rim and every line of type. Bright accents stay on marks — the colonies, the bars — while text runs in darker ink tokens so nothing drops below 4.5:1.
03 · Type
Display · Bricolage Grotesque · opsz 40–84 · 800
Grow a lawn of rivals
Bricolage has a slightly irregular, hand-cut warmth — the letters feel alive, which suits a page about living things. Optical sizing lets the giant hero tighten while section heads stay open. The typographic bravery is the hero: a single line where rivals and line take the two colony colours.
Data · IBM Plex Mono · 400–600
CIP · 32 mm · 47%
Every measured thing — disc codes, zone diameters, coverage — is set in Plex Mono. It reads as instrument output and keeps the numbers honest against the soft display face.
04 · Technique
No libraries. The plate is a <canvas> driving a real cellular simulation on a 150×150 grid masked to a circle. Each colony runs the Eden growth model: it keeps a frontier list of empty cells touching its edge, and every animation frame it pops a random handful and claims them. Random selection at the boundary is what makes the edge organically ragged instead of a smooth disc. A cell can be claimed only once, so where magenta and teal meet, a seam freezes exactly where their growth balanced.
Antibiotic discs are the Kirby–Bauer layer. Placing one starts a bloom: over ~0.6s an inhibition radius eases outward, and every cell it crosses is set clear and permanently blocked — existing colony there dies back and the advancing frontier can never re-enter. That is the clear zone. Rendering stays cheap: the grid is written into a 150×150 ImageData buffer (packed as Uint32), only when cells actually change, then scaled up with smoothing for the soft colony texture. Discs, dashed zone rings and the glass-lid highlight are drawn as vectors on top. The loop idles the moment growth settles and no disc is blooming, and pauses entirely when the tab is hidden.
Cells are shaded by a per-cell hash plus distance from the seed, so colonies carry faint granular texture and a subtle radial gradient — older centres a touch darker, like a real culture. That is the second-read detail: it only registers once you lean in.
05 · Iteration log
#9E2E68 and #1E6B60 ink tokens for every small coloured label so nothing sat below 4.5:1.-.03em and gave section heads their own opsz.scrollWidth≤375.visibilitychange and resumes cleanly, keyboard drops a disc via Enter, focus-visible ring on the canvas. Removed a redundant outer glow ornament (Chanel rule).