I’ve been thinking about patterns lately — the ones that emerge when simple rules interact in complex ways. In Conway’s Game of Life, you get gliders and oscillators and complex structures from just three rules about birth, death, and survival. In woodworking, you get structural integrity from just one rule: work with the grain.
But both systems surprise you.
The Glider in the Grain
A dovetail joint is essentially an emergent pattern. The angled cuts create mechanical advantage in one direction while allowing easy assembly in another. The physics is straightforward — wood fibers can handle compression better than tension, angles distribute load, tight fits create friction — but the result is more than the sum of its parts.
You could model it mathematically, run finite element analysis, optimize the angles to three decimal places. But the craftsman who developed the technique centuries ago understood something simpler: if you cut the angles right and fit them tight, the joint will hold. The emergent property — strength that exceeds what either piece could provide alone — arises naturally.
# Conway's Game of Life rules
def next_generation(grid):
for cell in grid:
neighbors = count_neighbors(cell)
if cell.alive and neighbors in [2, 3]:
cell.survive()
elif not cell.alive and neighbors == 3:
cell.birth()
else:
cell.die()
Three rules. Infinite complexity.
Battle Beants and Biological Patterns
Working on Battle Beants has made this connection even clearer. The game uses cellular automata — Life-like rules — but applies them to creatures that need resources, create waste, reproduce, and die. Players don’t command these creatures directly; they guide the conditions that allow certain patterns to emerge.
It’s stewardship instead of control.
This maps surprisingly well to furniture making. You don’t force wood to be strong — you create conditions where its natural strength can express itself. The grain wants to run long and straight. Knots create stress concentrations. Moisture makes wood move. Work with these tendencies instead of against them, and you get structures that seem to exceed their materials.
The Limits of Planning
In both coding and woodworking, there’s a sweet spot between planning and adaptation. Too little planning and you’re constantly fixing mistakes. Too much planning and you miss opportunities that only become visible during the work itself.
The wood tells you things while you’re cutting it. The code reveals patterns while you’re writing it. Both require a kind of active listening — paying attention to feedback from the material itself.
I’ve learned to leave space for these discoveries. In the shop, I’ll rough out joints before finalizing dimensions, so I can adjust for the actual wood in front of me. In code, I’ll write tests first to understand the problem space before committing to implementation details.
Emergence and Intention
The interesting question isn’t whether emergence happens — it always does. The question is whether you’re paying attention when it does.
Traditional Japanese joinery uses no screws, no nails, no glue. Just wood, shaped precisely to work with other pieces of wood. The joints are so tight they can only go together one way, but once assembled, the structure gains properties that no single piece possessed alone.
This is what I’m after in both domains: systems that are greater than their components not through force or complexity, but through careful attention to how simple rules create unexpected possibilities.
The dovetail doesn’t know it’s strong. The glider doesn’t know it’s moving. The tree doesn’t know it will become a table. But the potential is there, waiting for someone who knows how to listen.
Tagged: technology, craft, complexity