Discover more from Simulated Annealing
Patterns, peach trees, and underground tunnels
Parallels between architecture and software design
Programmer’s log. Epoch time 1685383730. It seems like all my yard work these past weeks has been weeding, weeding, weeding. This month has had plenty of “May Gray” days, but the occasional sunshine combined with bountiful rain has really encouraged plants of all kinds to flourish. The good news is that my kitchen garden is thriving as well, so I can’t complain too much about the weeds since they are a sign of a happy microhabitat…
Happy Memorial Day! I’m enjoying the long weekend with a nice cup of coffee and catching up on newsletters and articles. Here are some good ones:
How ‘live, laugh, love’ and Rae Dunn took over American homes (Washington Post)
I’ve been thinking a lot about architecture and maintenance lately—both for homes and codebases.
We live in a very old house, a 100-year-old Californian craftsman that was originally built in 1923. It has a lot of creaky floorboards, odd spaces, and mismatched elements. It feels like we are uncovering more of its quirks as we go about the daily work of keeping a house operational. For example, we had a recent discovery that the back half of the house is on separate, suspiciously old wiring. The breaker has been tripping regularly with the increased number of storms and/or PG&E funny business, so we get to add a new exciting task to the list of house repairs.
Living in such an old house is a new experience for me. All the homes I lived in and visited growing up in Florida were brand-new construction or built within the last few decades. Maintenance problems were fewer and less unique to a particular house. And updates to those modern houses don’t need to consider things like historical consistency and authenticity (although thankfully, this old house isn’t subject to strict historical preservation rules like some old Victorians in San Francisco).
I started reading more books on architectural design and history. I didn’t really expect anything necessarily useful to come out of this reading, besides maybe a slightly improved understanding of why my current house is so weird. It was surprising and delightful to find crossovers with software engineering.
Once in a great while, a great idea makes it across the boundary of one discipline to take root in another.
— Jim Coplien, introduction to Christopher Alexander’s 1996 keynote
I first started off by reading Michael Pollan’s A Place of My Own: The Architecture of Daydreams, which quickly disabused me from any desire to build my own office shed by hand. Pollan’s book then led me directly to Christopher Alexander’s famous design manual on architectural patterns, A Pattern Language.
Then, completely by coincidence, I came across Claire Evans’ essay Towards Growing Peaches Online which details how Alexander gave a 1996 keynote address to an audience of programmers at an ACM conference on Object-Oriented Programs, Systems, Language, and Applications (OOPSLA). Alexander’s ideas on patterns and systems thinking directly influenced the hugely popular Design Patterns book about software engineering design patterns.
I’m still reading and thinking through the various parallels between architecture and software engineering. I highly recommend Evans’ essay to understand the foundational interplay between technology and architectural principles.
It’s funny to think that I’m just experiencing the same inspiration from Alexander’s work that other programmers felt over 25 years ago.
When software engineers started to use patterns to codify and share knowledge, it was revolutionary in the late 80s and early 90s, and widely picked-up for many purposes: a quick search for pattern languages on Amazon returns several hundred results, with patterns for software, games, even hypnotherapy. In Alexander’s book The Timeless Way of Building, programmers found a politics that changed how they could design, code, and manage software. For software engineer Kent Beck (one of the first people to apply patterns to software in the 1980s, and the creator of extreme programming, the foundation of Agile programming), A Pattern Language and Timeless Way represents, “a rearrangement of the political power in the design and building process.” Alexander’s work influenced Agile programming and scrum methods, software engineering, and project management frameworks first developed in the early 2000s that have recently made their way into architectural studios and construction firms.
— Molly Wright Steenson, The Problem with Christopher Alexander
Claire Evans also references this quote by Alexander on peach trees from the 1979 book The Timeless Way of Building:
The tree, carefully tied to grow flat against the wall; warming the bricks; the peaches growing in the sun; the wild grass growing around the roots of the tree, in the angle where the earth and roots and wall all meet. This quality is the most fundamental quality there is in anything.
This lovely quote reminds me of a place I’ve been wanting to visit. The Foresterie Underground Gardens is located in Fresno, CA, which is just 2.5 hours away from where I live in East Bay.
Baldassare Foresterie was an ingenious artist and builder who excavated underground tunnels across 10 acres using only hand tools. He planted fruit trees at multiple different underground levels.
That’s all for now. See you later, alligator 🐊