Saturday, December 19, 2009


A recent post has been deleted from this space. It was a sincere, if boring, piece, by a guest writer, with an underlying message on the importance of logging out of all browsers on shared computers, even when at home on holidays.

In its stead, I offer this: my thanks to you, the CodeToJoy nation, for another fun year, and best wishes ahead in 2010. If you are travelling, may you be safe and on time. Keep laughing (often, that's all you can do.)

Sunday, December 6, 2009

On Analogies: Mozart, Mondrian, Kandel

After the Strange Loop conference, Michael Galpin wrote (as an aside) that he doesn't like analogies to software engineering.

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


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.

Consider this:

'Picture by Hay Kranen / CC-BY'.

This image is inspired by Piet Mondrian's work, a founder of the De Stijl style (also known as NeoPlasticism).

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:
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 several major 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.

All I'm saying is: a torus is like a mug.