2.1k words | Dan Hollick
QR and barcodes.
Machine-readable codes turn data into high-contrast geometry that cameras and scanners can locate, orient and decode quickly.

Machine-readable codes turn data into high-contrast geometry that cameras and scanners can locate, orient and decode quickly. The apparent simplicity comes from a set of carefully chosen representations, transformations and physical assumptions working together.
Finding patterns
Large corner markers reveal position, rotation and scale before the data is read.
This is one part of a longer chain: data becomes error codes becomes module grid becomes scanner. The useful abstraction hides the physical work, but the underlying constraints still shape the software built above it.
Encoding
Bits are arranged into modules with masking rules that avoid hard-to-scan patterns.
The implementation is full of compromises. Precision, speed, storage and energy rarely improve together, so practical systems choose the errors people are least likely to notice.
Error correction
Reed–Solomon codes reconstruct missing information when part of the symbol is dirty or covered.
Once this layer is visible, familiar design conventions stop looking arbitrary. They are accumulated responses to the capabilities and limits of the machinery below.
A visual study based on the original chapter. Text is condensed and rewritten.