Sunday, December 6, 2009

I've been meaning to write for awhile; this post celebrates analogies and provides a few of my current favourites.

Background

I've been making analogies for a long time. My favourite teachers made them, and as an undergrad, when tutoring others in calculus, they came naturally to me. To this day, I'm always trying to frame problems in some other context, either to non-IT people or domain experts. I'm convinced that there is a biochemical reward for nailing one. E.g. when another techie says "that's exactly right". (The reward is probably a cousin to that of making an excellent pun.)

To be fair, Michael talks about romantic analogies to software engineering, whereas many of my analogies have the granularity of problems in software engineering. But no matter: be it an analogy, metaphor, or allegory, you can count me in. This is especially true for keynote presentations, which should be thoughtful and imaginative. If a tech talk is a pop song, a keynote speech is a symphony. (There I go again, but hey this blog was started on a musical analogy.)

Now, I happily grant that analogies have their place. If you're working at a start-up, frenetically trying to hit some deadline, then no one wants to hear how your design was inspired by a Chopin nocturne. There's a time for straight-talk. I'm with Michael there.

With that background, here are some ideas that have lit my fire lately. They may or may not be pure analogies, but they have sparked my imagination.

Mozart's K 522 - A Musical Joke

Wolfgang wrote a piece, A Musical Joke (K. 522), that satirizes clumsy composition. It intentionally uses common "mistakes" made by inept composers.

Ever since the vending machine shoot-out at the Lambda Lounge, I've wanted to write a spoof version in Java: my own modest K. 522. Its ostensible goal is a functional style of the vending machine spec: no side-effects or mutable state.

However, in my spoof, the poor author goes off the tracks, because all computation is done by throwing checked exceptions. The program will be absolutely gorgeous in its wretchedness!

I've started this project, but unfortunately it quickly became so painful that I couldn't bear it. However, I hope one day to have an entire theme of K. 522 projects over on github.

Mondrian and De Stijl

I'm no connaisseur of fine art, but I've taken a class or two and enjoyed learning about its history. My major discovery (blogged elsewhere) is that much of art occurs in reaction to a prior context. It dawned on me that at a gallery, a new exhibit can often be a major "screw you" to the establishment of the time. What appears to be a simple painting, when viewed in context, can be startlingly rebellious or profound.

As a quick primer on De Stijl: it's a Dutch art movement founded circa 1918, intended as an intellectual response to the chaos of war. As noted in their manifesto (!), the artists sought to find inner harmony within themselves and universal laws of simple geometry.

I have a few thoughts on this. The obvious one is apparently everyone needs a manifesto, from artists in 1918 to software artisans in the 21st-century (exhibits A, B, and C).

The second reaction, from a software standpoint, is REST. Agreed, it's clearly insane to compare WS-*, SOAP, etc with the horrors of World War I, but consider how simple this URL is:

http://esite.com/product/show/1

Call me crazy, but I genuinely sense a kind of abstract connection to the orthogonal lines in Mondrian's work, especially against the busy, noisy chaos of Web Services. Imagine standing outside a giant, enterprise-y WS conference with that URL on a large placard. Reaction to a prior context.

Finally, recall that the REST movement similarly came from an explicit intellectual genesis, famously being a PhD thesis.

Note that, above, I said abstract connection: this is not equating art to software engineering. They just rhyme for me, in some weird way.

Kandel and Aplysia

I'm currently reading an excellent book, In Search Of Memory, by Eric Kandel, a Nobel-Prize winner in neuroscience. Part biography, and part history of his scientific journey, it is wonderful.

In a key chapter of his career, Kandel sought to understand the biological mechanism behind short-term memory. In the early 1960s, the conventional wisdom favoured mammals over invertebrates for research. The thinking was to stay as close to the goal (the human brain) as possible.

Kandel went in the other direction. He wanted a reductionist approach that explained short-term memory in a minimalist setting. He ultimately chose a sea slug called Aplysia Californica. This species matched his instinctual desire to keep things simple: Aplysia has a small number of neural cells, which are quite large (i.e. easier to study). It also has a simple reflex (withdrawing its siphon, and inking) which ultimately proved to respond to forms of learning (e.g. habituation and sensitization).

It was a wise choice. By 1969-1970, Kandel and his colleagues had discovered severalmajor principles of the cell biology of learning and memory. In essence, they built a entire conceptual framework for learning and memory, and were able to verify it in the "laboratory" of the Aplysia. The humble sea slug was a gold mine for his career and for science.

Although completely glorious in its own right, my take on this for us, humble software developers, is this: Kandel not only discovered terrific scientific ideas, but provides an object lesson on how to do research. This is the absolute embodiment of KISS.

For example, imagine that you are struggling with a concurrency concept in a large project. Or the precise mechanism of transaction propogation in Spring. Or the dreaded gridbag layout in Swing. You may be resistant to starting a new tiny project -- your very own Aplysia -- for the sake of isolating the exact issue of concern.

"Who has that kind of time?", you may cry, as I often have. Well, if you want the real answer, make the time. Think of Kandel. Reduce, reduce, reduce: KISS.

The Upshot

Though I can enjoy art and music as pure pleasure, I love finding parallels between disparate subjects. Often, the best way to convey these psychic fingerprints are through analogy. So, sign me up.

As mentioned above, I realize these are abstract connections. I don't fancy myself as a composer, artist, or neuroscientist. I don't equate my career to such enterprises to make it more glamorous. Thankfully, I already find my career to be glamorous, as it grants me elements of both art and science.

1 comment:

First, while I dread a cheesy forced analogy as much as the next girl, I think there's power both collaborative and creative in the use of analogy. See work of Boix-Mansilla et al of the Interdisciplinary Studies Project at Harvard, and Kevin Dunbar at U of T, observing that use of analogy is a powerful way for specialists to collaborate across disciplines, not just to explain ideas but to generate them.

You've nailed an important thing about art, and all domains of creative production and expression. Work emerges in context. You don't get Picasso without Cezanne. Dizzy Gillespie reportedly said of Louis Armstrong, "No him, no me."

That's what can make people sound like idiots the first time they walk into a gallery, attend a concert, or, for that matter, watch a baseball game. They're showing up late at a party without knowing what everyone's been talking about all night. They're just not going to get the jokes. For the first little while, just listen until you get a sense of the backstory and the other guests.

Q & A on Stack Overflow

Contact

Greatest Hits

About The Name

As described in the first post, composing software has much in common with composing music: both require talent and skill, and both have a spectrum from apprentice to virtuoso. At times, when composing software, there is the palpable sense of beauty -- the comp sci equivalent of hearing the chorus of Beethoven's Ninth. That feeling is Code To Joy.

(Here is a user's guide that explains some of the recurring themes on this site.)

About The Author

I am a computer scientist, part-time philosopher, and part-time cyber-scriber. After many wonderful years in St Louis, Missouri, I have returned to Prince Edward Island, Canada. Java pays the bills; Groovy provides the thrills.
I am not a musical composer, but play guitar and am learning piano (on/off). I'm fairly literate with musical theory, structures, etc. That said, my main hobby these days is running with some (indoor) triathlon.
Alma Maters: UPEI and University of Waterloo