Emergence

Colophon

About this site

Emergence is a small, self-contained site: six classic models from complexity science, each with the whole rule printed beside it and enough dials to make the behaviour tip over. No server is involved. Everything you see is computed on the spot in your own browser, using the ordinary drawing functions of a canvas — no shaders, no WebGL, no libraries.

That is a choice, not a limitation. These models date from a time when a computer had less compute than the phone in your pocket, and that is exactly the point: the richness is not in the arithmetic but in the rule. What happens per frame fits into a few dozen lines of code.

The texts try to do two things at once: state the rule in full, and be honest about what cannot be derived from it afterwards. For nearly every piece, the shortest way to know what the rule does is to run it. This is not a gap in understanding that will later be closed — for some of these systems it has been proven that no shortcut exists.

Where it comes from

Flock
Craig W. Reynolds, Flocks, Herds and Schools: A Distributed Behavioral Model, SIGGRAPH 1987. The three rules have remained unchanged since.
Pattern
Alan M. Turing, The Chemical Basis of Morphogenesis, 1952. The variant used here is that of P. Gray and S. K. Scott (1984), popularised by Karl Sims.
Rule
Stephen Wolfram, Statistical Mechanics of Cellular Automata, 1983. The proof that rule 110 is universal is due to Matthew Cook (2004).
Flow
Ken Perlin, An Image Synthesizer, SIGGRAPH 1985. The noise used here is a simpler value noise; the idea of particles travelling through a field is common property in generative art.
Growth
Aristid Lindenmayer, Mathematical models for cellular interaction in development, 1968. The shapes come from The Algorithmic Beauty of Plants (Prusinkiewicz and Lindenmayer, 1990).
Sandpile
Per Bak, Chao Tang and Kurt Wiesenfeld, Self-organized criticality, 1987. The abelian property was established by Deepak Dhar (1990).

Technical notes

Build
Next.js with the App Router, TypeScript, served statically.
Drawing
Canvas 2D, written by hand. No drawing library, no WebGL.
Languages
Dutch and English, each with its own address: /nl/stuk/zwerm alongside /en/piece/flock.
Type
Fraunces for the headings, Inter for the text, JetBrains Mono for figures.
Data
None. There are no cookies, there is no analytics, and nothing leaves your machine.
Accessibility
Anyone who has asked their system for reduced motion gets the background standing still. Every simulation can be halted with the Pause button.