In Enrico Coen’s The Art of Genes (Oxford University Press, 1999), there is a really good metaphor for the “prototype” or abstract class in Java. It’s a complicated source domain to explain a rather simple (but deep and abstract) concept – but I think it’s a worthwhile one because the metaphor’s source may be illuminated as much for biologists as the target is or them and everyone else.

First the metaphor: As Coen explains, there are four key parts of a typical flower: besides the petals which everyone is familiar with, there are the stamens (which you may remember from biology class are small stem-shaped bits that produce the pollen), the carpels (which you may not remember – I didn’t – are long skinny protrusions that receive pollen), and the sepals (small, leaf-like green bits near the base of the flower). These four organs are typically arranged in four concentric circles called “whorls.” By studying mutant flowers – for example, some with an extra set of stamens in the petal whorl, some with extra petals in the stamen whorl – biologists were able to determine that there are merely three proteins whose presence or absence (at particular times) lead these various flower parts to distinguish themselves.* When just one protein, let’s say A, is present, the plant produces only sepals in all 4 whorls; if only C is present the plant produces only carpels in all 4 whorls. If all three of these proteins are missing (but others are present which define the location of a branching point), the plant produces a stem where a flower should be. Coen asserts that protein markers similarly account for distinctions between all plant parts, each marker causing a distinct set of characteristics on top of a basic pattern:

“It is perhaps not too difficult to imagine that sepals are [based on] leaves because they usually have a very leaf-like appearance. Petals are also not so different from leaves, give or take a bit of shape and colour. But what about sex organs? The male organs (stamens) do not bear any obvious resemblance to leaves. In the case of female organs (carpels) we sometimes get a faint leaf-like appearance when they have been fertilised and grow into fruits or pods containing seeds: a pea pod could be thought of as a leaf that has been folded lengthways and had the edges stuck together. But what about a tomato? Slice a tomato cross-wise and you will see two or more segments, each containing seeds. Is a tomato several leaf-like organs joined together?” (page 58)

Coen explains that the famous German poet Goethe was the first to recognize the parallels between the various parts of a plant  – Coen’s quote from Goethe:

“it came to me in a flash that in the organ of the plant which we are accustomed to call the leaf lies the true Proteus who can hide or reveal himself in all vegetal forms.” (page 57)

As highlighted by the word “prototype” (Coen notes that Proteus is a sea god of Greek and Roman mythology fabled to assume various shapes), what Goethe was referring to was not a leaf as manifested in a green flat thing we are all used to seeing on trees, but rather an abstraction that has some characteristics of leaves but not necessarily any or all of them.

In programming terms, a prototype is an abstract class which requires some parameters to be defined before it can be instantiated.  In programming, calling on a “concrete” class (for example a bicycle, which has attributes like its color and speed) is like turning out a copy from a factory, with definite defaults (in this case, black and zero). But using an abstract class is more tricky because it can’t be instantiated directly, but only in the context of other attributes. For example, if the abstract class is “ProteusLeaf”, you can use it to help make a peapod, a sepal, or a leaf, but you can’t add it directly to a stem with no further instructions on how to instantiate it.

I think the metaphor may be equally illuminating in the other direction because Coen suggests that the concept of a “leaf” in Goethe’s sense is still (as of 1999) not universally understood as the commonality between multiple forms, rather than any particular, expressed, or extant form:

“What exactly is a leaf, this common theme that is continually being depitcted by the plant? There seems to be no meaningful way to pursue the problem other than by saying it is that which is common to all plant organs. This seems to be evading the issue. It was for such reasons that Goethe’s ideas were often considered to be mystical idealism rather than serious science.” (page 289)

I’m deeply impressed that we – broadly speaking here – have come up with a clear and precise way to structure, communicate about, and use a concept which used to be so abstract and fuzzy as to be regarded as mystical.

I’m typing this before finishing the book, so I hope I’m not stepping on Coen’s toes, and of course I expect that he and/or many others who’ve read the book have had the same insight. But the big question for me is whether anybody else who is thinking about visual programming or end-user programming has come across the metaphor, and whether there’s any way to exploit it in that context to make a very difficult concept more accessible.


*Coen’s story is all about the details of how the flower parts are distinguished from each other by “hidden colors” – which is a brilliant and powerful metaphor he develops throughout the book to illuminate the self-referential role of proteins in the development of biological organisms. It’s pretty enlightening if you’re interested in emergence, self-organization, chaos/complexity theory, and that sort of thing.

Posted in context | Comments Off


Now that I’m working for BitTorrent, which makes a large percentage of its revenue from ads, I’m having to come to terms with the advertising economy. I appreciated hearing Cordell Ratzlaff, a design leader working on Google’s ad products, address the issue head on at last week’s IXDA event, saying (among other things) “Advertisers don’t want to show ads to people who don’t want to see them.” He didn’t quite make it explicit, but definitely framed the vision: advertising needs to evolve in a big way.
There have been ideas floating around for years (at least – I’ve barely been paying attention myself) about reversing the flow of ads to where the buyer is pulling them rather than pushing them to a potential buyer, targeting them so that they’re relevant, and making them more pleasant/palatable. And Google is the most radical or extreme example of this already: the user tells the advertising company exactly what they want to be sold.
Well despite the tangled multiplicity of problems with that statement’s assumptions and complications with delivering on it, since I’m now part of the machine I’m implicitly committed to the ad industry’s best practice and best guess at where the future lies. So I’m thrilled to see a good example of an in-context advertisement that delivers real value:

Ad from

An advertisement on The Onion that provides value to the viewer.

This simple statement from Samsonite amuses me at least as much as the other content from the Onion, which is *exactly* the reason I came to the Onion in the first place, so it’s not annoying nor distracting nor wasting my time. It, in fact, provides a little bit of value for me. And for the advertiser: I guess it makes me think Samsonite is a brand that shares my/the onion’s wry viewpoint on the world? I don’t know that I want to buy wry luggage – I’m looking forward to seeing an example of this that actually does a good job at selling at the same time!

Posted in context | Comments Off

EULA evolution

It’s my contention that EULAs especially – and probably all contracts in general – need to be made more readable and less lengthy by the use of illustrations. Just heard about a company which is taking a step in that direction by using text summaries:

Posted in context | Comments Off

tangible programming

A great example of using tangible means to help students get some core principles of computing:

It doesn’t seem to be too deep, and I didn’t see any good tangible metaphors for class relationships, but doubtless this is a great way to get people over their math phobia when beginning to learn to code.

Posted in context | Comments Off

Cisco DX650

The product I’ve been working on at Cisco for the last year and a half has just launched!

See a brief overview, in the form of some tutorial videos that will run on the device:



Posted in context | Comments Off


After seeing Kenneth Snelson’s work when I was in high school, I’ve tried several times to reproduce the floating quality of his tensegrity sculptures. Whether I was using steel cable or fishing line, I was never able to create a rigid and secure enough bond between the tension and compression elements. A few weeks ago, I finally succeeded! The secret was to drill holes through the dowels and wrap the fishing line through them at least twice before tying it off with a square and/or double half-hitch.

three small sculptures

1/4″ dowel rods with 6lb monofilament.

The other technique I developed is to cut a notch into the end of each compression element in order to temporarily catch the monofilament after wrapping it through the hole. This allowed me to more easily adjust and perfect the spacing and length of each tension link before committing to tying it off.

small sculptures made from wood dowels and fishing line

1/4″ dowels with 6lb monofilament.

After all that excitement, I’m enervated to build spheres, bowls, and to find out what else I can do with the medium. I’ve bought 32 gague steel wire, but SXSW has distracted me – maybe I’ll get back to it next week.

Posted in context | Comments Off


A few years ago I committed myself to getting rid of all the pressboard furniture I owned. It’s been a struggle, but this year I finally did it, and along the way I’ve put to use some of those woodworking skills Dad taught me.

Back in August 2012, My friend Kelsey provided the inspiration for me to sign up for the Create program at the Crucible here in Oakland so I could have access to a table saw and a wood shop big enough to make her a dining table.

Large wood dining table

Kelsey’s dining table, with bench. 2″ thick ash and 1″ steel square tubing. 7″ x 32″ x 31″.

Having conquered that, I went on to make the coffee table I’ve been dreaming about for several years.

A long wooden coffee table, sitting in front of a leather couch.

My coffee table. 3/4″ red oak with 3/4″ square steel tubing. 6″ x 24″ x 13″.

Then I decided I was tired of living on the cheap, steel bedframe that came free with my mattress. It wasn’t quite as ugly and weak as particle-board, but the wheels were plastic – so I took it as inspiration to make a bed.

Wooden bed with blanket on top, window in background

My bed. Red oak, stained walnut to match the dark interior of my apartment.



At right, just below the headboard, you can see a small diagonal notch. I designed the headboard to slip into this notch and meet the bed at a 17 degree angle, providing a great resting place for extra pillows, but it was too long for my current bedroom. Since the whole thing is held together with brass threaded screw inserts anyway, I added modular guides to keep the headboard on upright, and left the notches in place so I can use the headboard in the diagonal configuration when I move to a larger space.

Posted in art | Comments Off

media theory

Jon Stewart’s extended cuts of conversations with politicians cut through a lot the problems with the television format. He’s managed to take advantage of the internet’s potential to transform the sort of conversation that can happen. His recent conversation with Jim DeMint is the clearest example of this I’ve seen (though I’ve probably missed better ones):

It’s inspiring to watch these two guys open up each other’s minds a little bit (though I do feel like jon is the one with the pry bar in this case).

Posted in context | Comments Off

trees in the future

Looking at the dieter rams exhibit at sfmoma I was struck by the luxuriousness of using real, solid hardwoods in a mass-produced product. It may have seemed like a leftover or a throwback then, but now it’s the realm of tiny specialist firms and makers. I can’t imagine a way to make wood part of the integral functionality of anything I’ll soon design professionally, but even as a superficial design element on a cellphone or tablet computer it could be quite compelling to feel and live with a beautifully crafted pice of hardwood. Ibm, apple, and their ilk should invest in forests of ebony and mahogony now to prepare for a line of products in 60 or 100 years. I refuse to be impressed by the environmentally sustainable attitude that would demonstrate – but it would be a noteworthy step towards socio-economic sustainability to have to harness and develop an army of skilled woodcrafters to marry the nonuniform results of gnarled old trees to a streamlined global production and distribution apparatus.

Posted in context | Tagged | Comments Off

a big view of interaction design

“Historically, machines have been viewed as tools to be applied directly by people to perform tasks. … the tool is an extension of the human and is under the human’s control. … an intelligent machine could aid a person by suggesting ways to perform a task, explicate features of a problem, generate approaches (options) to problem solution, and/or evaluate alternative solutions to a problem. *Aiding* of this type is clearly different from *using* a machine to directly manipulate something physically present in the environment. …”
- R. G. Eggleston, Changing the Nature of the Human-Machine Design Problem; System Design; 1986; Rouse, William B. and Boff, Kenneth R.

Posted in context | Comments Off