When I first started writing code for generative art, I expected to feel more in control. I had spent years learning to paint with a brush — an imprecise, unpredictable instrument that responds to pressure and humidity and the specific mood of your wrist that morning. Surely a computer, running clean logical instructions, would give me exactness.
It did not. Or rather: it gave me exactness, and then it gave me surprise. And the surprise was the part I could not have predicted.
You write the rules. Then the algorithm surprises you. That gap between intention and output is where the interesting things live.
In generative art, you author a system rather than a surface. You define parameters: colour ranges, movement rules, density thresholds, the mathematics of how forms will grow or decay. Then you run it. And what emerges is yours — and also not entirely yours. The algorithm interpreted your instructions through its own logic, found paths through your rules that you had not anticipated.
My background in data analytics made me think I would find this process comfortable. I know how systems behave. I understand probability. But knowing that a system will produce variation does not prepare you for the specific beauty of the variation it actually produces. That is always a small shock.
The works I am most proud of came from parameters I nearly deleted. A colour range that seemed too harsh. A movement rule that appeared chaotic. I let them run anyway — curiosity overriding taste — and the output rewrote my understanding of what I was trying to make.
What generative practice has given me is a working relationship with uncertainty. Not tolerance for it — a relationship. The algorithm is a collaborator, and like any collaborator it will do things you did not ask for. Your job is to stay present enough to recognise when the unexpected thing is better than what you planned.




