Georg Nees's Schotter (1968) is a 12×22 grid of squares that begins in perfect alignment at the top and descends, row by row, into rotation and displacement. Click to regenerate with a new random seed.
In 1968, Georg Nees fed punched tape into a Zuse Graphomat Z64 flatbed plotter at Siemens in Munich and produced a grid of 264 squares. The top row was immaculate: twelve squares in a precise horizontal band, each one a perfect match for its neighbors. By the twelfth row the squares had begun to drift, tilted a few degrees, nudged slightly off-center. By the twenty-second row they were tumbling, displaced and rotated enough to read as scattered gravel instead of a grid. Nees called the piece Schotter, the German word for gravel or crushed stone, and it became one of the most reproduced and analyzed images in the history of computer art.
For each square at row index i (ranging from 0 at the top to 21 at the bottom), the position offset and rotation angle are each drawn from a uniform random range whose bounds scale linearly with i. At the top, the bounds are zero, so there is no displacement or rotation. At the bottom, the displacement bound reaches roughly half a square width and the rotation bound approaches ±45 degrees. The randomness is always present; only its latitude changes. The original ALGOL code used two separate linear congruential generators (one for translation, one for angle) seeded with specific integer constants that Nees chose to produce the composition he exhibited. Reverse-engineering efforts have pinpointed those seeds precisely: 1922110153 for position jitter and 1769133315 for rotation. Those seeds reproduce the exact historical image deterministically from the algorithm alone.
The browser artifact implements the same rule directly on a canvas. Each square is drawn with a save/restore transform pair so its rotation stays local to that square:
for (let row = 0; row < ROWS; row++) {
for (let col = 0; col < COLS; col++) {
const d = row / (ROWS - 1); // disorder: 0 at top, 1 at bottom
const angle = (Math.random() - 0.5) * d * Math.PI;
const dx = (Math.random() - 0.5) * d * size;
const dy = (Math.random() - 0.5) * d * size;
const cx = ox + col * size + size / 2 + dx;
const cy = oy + row * size + size / 2 + dy;
ctx.save();
ctx.translate(cx, cy);
ctx.rotate(angle);
ctx.strokeRect(-size / 2, -size / 2, size, size);
ctx.restore();
}
}
The normalized row index d controls how much randomness enters the composition. At d = 0, both Math.random() calls are multiplied to zero and every square sits exactly on the grid. At d = 1, the full range of random perturbation is available. Each square is drawn independently from the row index, without feedback, memory of previous squares, or interaction between neighbors. The row index alone produces the impression of a structure dissolving into chaos.
Nees made the piece during the same years he was writing his doctoral dissertation under the philosopher Max Bense at the University of Stuttgart, which he defended in 1969, earning the first doctorate awarded in generative computer graphics. Bense had developed a theory of information aesthetics that tried to measure beauty as a ratio of order to complexity, and Schotter can be read as a literal plot of that idea: a diagram of the transition from maximum order (zero entropy, full redundancy) to something approaching randomness. The plotter drew the argument alongside the image. Three years earlier, in February 1965, Nees had exhibited at the Technische Hochschule Stuttgart in what is widely cited as the first public exhibition of computer-generated art, the same month A. Michael Noll showed similar work at Bell Labs in New York.
Schotter made the difference between algorithmic and manual art legible. A human draftsman introducing progressive disorder across 264 squares would vary the rate according to taste, with some rows drifting faster than others. Nees's plotter held the randomness budget to a mathematical function and executed the same gradient across every row without softening the rule. Nees and his contemporaries saw that indifference to taste as computation's contribution to visual art.
Schotter
Interactive recreation after Georg Nees, 1968. A 12×22 grid of squares with disorder scaling linearly by row. Click to regenerate with a new random seed.
View artifact →