“The world is watching: one cannot walk through a meadow or forest without a ripple of report spreading out from one’s passage. The thrush darts back, the jay squalls, a beetle scuttles under the grasses, and the signal is passed along. Every creature knows when a hawk is cruising or a human strolling. The information passed through the system is intelligence.” – Gary Snyder, The Practice of the Wild
A while ago on Stack Overflow, I asked a potentially off-topic question about metaphors for memory allocation (it was less-horrible a crime to post opinion questions at the time). Some entertained my question, but I thought the most thought provoking comment was that it was a horrible idea to tie any real-world analogies because of the possible confusion.
Years later, I remember this question often. In the time that has passed, I have made the answer my own strawman argument that I can go to battle with to give various interests in my life metaphorical continuity. On the one side, we already have decided it’s useful to call data structures by names of similar pre-computer concepts, like trees, memory, lists, containers, (not to mention both ‘structures’ and ‘data’) – we don’t need to come up with brand new words for each of these things, because the power of abstraction in its ability to be repurposed and recycled. I have not met programmers that are confused about where the chlorophyll exists in the leaves of the binary tree, nor people that think they need to sprinkle water on their computer to insert a new node in a tree.
That’s fun to think about, because it’s a nerdy and quick evidence-based answer to why analogy is useful for programmers. But lately, I find myself thinking about how other systems in my life are alike.
Besides computers, I am currently interested in these systems below. In fact, the word ‘systems’ and ‘network’ pop up in most of my hobbies:
- Engine/Car repair – appreciating what does what in my car (quite literally, appreciating ‘engineering’) helps me to feel more comfortable with what is probably the most expensive thing besides a house that I’ll ever own. Running into various space and tool constraint problems in replacing my head gasket/valve seals/timing belt feels very similar to debugging software when you need to come up with clever ways to get the info you want to solve the bug.
- Ecological Systems – the interaction between plant/mushroom/animal/climate/terrain is so amazing that it goes far beyond the basic darwinistic view of a single organism’s fitness (did you know trees use mychorrizal networks (like a mushroom root) to transfer nutrients from the more abundant trees to the lesser ones?). Darwin said some pretty cool stuff in the origin of species about how every few feet comes a different distribution of plants and animals that are best suited to the environment. As I see more and more connections between the species, it seems more and more like the ecological system itself behaves as an organism itself.
- Fitness – understanding the interaction/balance of muscles has been useful for my improving posture and well-being. At first, I thought that weightlifting and talking about muscles was just for serious strong bros, but after swimming and jogging didn’t really help me out, looking into muscular anatomy showed me some clear muscular imbalances that would be obviously helped out with weightlifting. This is a study of the body and the interaction between its parts – a very complex constraint solving problem – and the connections were more counterintuitive than I imagined. I had no idea for a long time that my hip angle is what would cause me to hunch over, and I didn’t even have the physical self awareness to note that I was walking around with my hips fully extended in pelvic-thrust mode. And of course, the exercise and progression of the body is an interesting system of its own that ties in others, including nutrition.
Becoming more familiar with all of these systems has brought me happiness, and has counterintuitively made the world more simple as I invest more time into understanding their internal structures and meaning. All of them seemed like impenetrable opaque black boxes when I first started looking at them, and I may have even had the impression that it wasn’t worth digging in because it was more efficient to leave the specialist knowledge to the specialist. It’s worth mentioning that my feelings about this are similar to the argument against ‘leave cooking to the chef’ in Zen and the Art of Motorcycle Maintenance.
My master’s thesis and a large amount of my music was about finding similar structures in music and software. At the time I remember thinking that this was a very special connection, and that I just-so-happened to be lucky enough to be working with both music and software. But the real lesson was that seeming unrelated systems have deep connections, and that the noticing of these connections is a very powerful thing that can add depth and perspective to a subject one is interested in.
Although it’s always tempting to be a purist when coming up with bizarre theories, some systems are more compatible than other systems. This happens often in music – for example, a shepherd’s scale (a scale that seems to get higher and higher) is a great analog to Penrose steps (that Escher made famous), but my idea to make an audio-only version of space invaders never panned out because some things just won’t translate very well even if you really want them to. I’ve heard anecdotally that composer Gyorgy Ligeti, who was himself interested in visual phenomena, made it a point to tell his students that one shouldn’t force a sonic representation of a visual phenomenon just because the metaphor sounds good – and I would agree that there’s a fair deal of art in these connections.