Monthly Archives: December 2009

working on metadata – stopped in your tracks and watched until you get it right

Michael Sippey writes about Ben Hammersley writing about metadata.

The quote he pulls is

So why do everything you can to keep metadata intact? Because it’s from this information that new products can be automatically created, at a scale and rapidity that would be impossible otherwise. With every piece of metadata that you don’t throw away, you gain a factor more potential ways of slicing through your content and delivering it as a separate product, simply as a result of a database lookup.

Let me give a worked-out example of this, for starters. uses Movable Type as a publishing platform; as a part of that, we have tags for each story.  A staff of journalists tagging their stories creates a lot of tags (because you are writing about a lot of things) and a few tags with a lot of stories (because you are writing a lot of stories about those things).

Keeping a collaboratively maintained set of tags sane is work (in the same way that moderating comments is work; but that's another post).  When you are writing on a deadline, you don't have the luxury to work out every last possible reuse of your work, and so you don't tag aggressively.  When you are copy editing, you might well have a reason to use or prefer a specific tag, in part because it lets you direct readers to previous coverage on the topic in a way that's much simpler than specifically deep linking to each page.

What helps me keep some part of some of the metadata I care about within the world sane is to build links to the stories that I want to refer to from an outside source – in this case Arborwiki - and as I'm doing updates to that site use it as a sanity spot-check for coverage.  Some wiki templates help speed the process of explicit linking, and an internal category helps me figure out what fragment of the tag space I've covered.  When I see a story that isn't easy to link to from a relevant page, I go back and add the tag – not because it's useful in the abstract, but because it's relevant to one specific external instance.

In this way I think that Ben is missing one of the elements of metadata, the element that says that you never really stop working on it, and that simple repurpose through a database lookup only works when you are still actively editing the database. There's nothing worse that going to a lot of work doing an attractively formatted page that's driven by a database query against a database that you can't control, and having to answer the question why a certain piece of unwanted data is there and having someone stop you in your chair and watch over your keyboard until it's gone.

Metadata only works when you un-meta it and deal with it again as data.  The list of metadata elements that I care enough to keep updating is not just meta; it's a first class real list, one that has to be treated as a first class citizen and not just some accidental system artifact.  Sometimes the metadata you expose just makes it clear how incomplete your first pass at storytelling was and what it takes to bring it back to the level of refinement that you expect.

(tags: stopped watched; so meta it hurts; arborwiki)


network buffering, a design for robustness

Networked buffering: a basic mechanism for distributed robustness in complex adaptive systems, James Whitacre and Axel Bender, 2009/12/10, arXiv:0912.1961

Excerpt: This paper proposes a generic design principle for generating robust traits in complex systems that requires two basic conditions to be satisfied: 1) agents are versatile enough to perform more than one single functional role within a system and 2) agents are degenerate, i.e. there exists a partial overlap in the functional capabilities of agents. Our principle claim is formulated within the so-called networked buffering hypothesis. It outlines how degenerate systems may readily produce a distributed response to local perturbations and reciprocally how excess resources related to a single function can indirectly support multiple unrelated functions within a degenerate system.

Translating a bit out of complex systems speak, here's my interpretation.  Note that the paper proposes a design principle (and not a rigorously tested set of experiments) so there's room to explore this principle in a variety of worlds and words.

The first note is that the pieces of the robust complex system in question are flexible and reconfigurable ("versatile").  Every part has multiple uses; every person has multiple sets of skills; for every functional role, there's more that one piece that can fit that functional role.  The expectation is that for any gap that you find from the temporary dislocation of a portion of the system there would be some other resource available to fill it, and also that if you have a temporary need for increased resources in some role that there would be a variety of resources available to pull into it.

The second note is the that the agents are diverse (oddly, in this language, "degenerate") in their skills.  This implies most critically that if two agents could fill the same functional role, that there might always be a swap between them so that one of them could take it one while the other applied their exceptional talent to the need that was pressing. 

Between the two principles you see how a system might get a considerable amount of redundancy and of reconfigurability to address exceptional needs.   For any individual task, there's more than one set of agents to address that task.  Any portion of the system that is redundant for any given task is also exceptionally qualified for some other task. 

I want to draw conclusions to modern management, to staffing and scheduling and vacation time, and to the risks to brittle organizations when budgets are cut.  I haven't even made sense yet of the "network buffering" piece.  Too short a post for that, please do have at the paper and see how that makes sense to you.

emptying out my inbox into my blog

Every so often the inbox is full and the blog is empty; this is an attempt to remedy that.

How to do an introduction online.  X, meet Y; Y, meet X.  X is notable for a1, a2, a3; Y is notable for b1, b2, b3.  You have a mutual interest in c1, c2, c3; you should connect.  There are several of those pending.

How to make the best of not responding to mail promptly.  Answer long, hoping that your thoughtfulness makes up for your tardiness.  Follow up with a new question, assuming that anything that went more than some period of time – two weeks, a month, or more – was overtaken by events and you want to be seen as having good follow up skills.

How much inbox is too much inbox.  Inbox zero, for sure, in someone's dreams.  I'm generally happier when the bottomless queue reaches 100 or less, since it seems more likely that each one might represent a chance to connect with someone in particular.  There's also a time duration beyond which it makes more sense to start afresh than it does to reply.

Cauliflower Curry

Cauliflower Curry

1 Tbs canola oil
1 large onion, chopped
2 8 oz packages savory baked tofu
curry powder
1 head cauliflower, cut into florets, steamed
coconut milk, about half a can
diced tomatoes, one small can

Heat the canola oil over medium heat (6/10).  Add chopped onion.
Cook until fragrant.  Add curry powder – I generally sprinkle it
lightly over the top – and stir until even more fragrant and colorful.
Add diced tofu, stir so that the curry powder is equally mixed in.

Don't cook so hot that the onions brown, but get everything hot
enough that if you stopped you could eat the mixture right there.

Add steamed cauliflower, stir until everything is coated with the curried
onion.  Adjust the seasonings so that the color is right.

Add the coconut milk and diced tomatoes.  If you are using canned
tomatoes, consider reserving some of the liquid so that the curry
is not too soupy.  Stir, bring to heat at 6/10, then reduce the heat
to 3/10 and cook until the color is right.  (At the start, you will
have a pinkish tone because the tomatoes are raw; you are aiming for
a more curry color, which will happen when the tomatoes are cooked

With the right amount of liquid, this can be served over rice or with
rice on the side to sop it up.

Serves as many people as you make it for; I allow 4 oz of tofu per
family member.


It could probably have peas added to it.

Freeze the other half a can of coconut milk for the next time you
do this recipe.

Even better the next day if there's any left.

We like the Panda brand savory baked tofu from Michigan Soy Products in Royal Oak, MI, available in Ann Arbor at the People's Food Coop.

Popcorn recipe, oil ripples, and Bénard-Marangoni convection


canola oil
popping corn

Heat a sturdy deep pot with a lid to the same temperature you'd use for low temperature sauteing; on our stove it's 6 of 10.  When the pot is properly warmed up, pour a bit of oil on the bottom (about a tablespoon or a little more) and bring that up to heat.  I know it's at the right temperature when the thin layer of oil starts to form standing waves, ridges, or ripples.  If it starts to smoke, it's too hot; if it's a completely flat layer of oil, it's too cold.

What is that ripple effect?  From Harold McGee, The Curious Cook in the New York Times:

As the temperature of the pan surface rose above 350 degrees, the
oil began to move and form thick ridges and thin troughs, a stage that
some recipes refer to as the oil “rippling.” As the temperature kept
climbing, the thin areas spread out and the ridges became fewer and
higher. The pattern reminded me of the long drops that run down the
inside of a glass of wine or spirits. Eventually the thin areas seemed
to run completely dry, and most of the oil had collected in a ring
around the pan edge.

With some research, I soon learned that I
had been observing Bénard-Marangoni convection, which is related to
Marangoni convection in a wineglass. Uneven temperatures at the pan
surface cause regional differences in the oil’s surface tension, and
this causes the oil to get pulled toward the cooler areas.

When the oil is at the right heat, pour in enough popping corn in the pan to make a layer of kernels a single kernel deep.   Shake the pot around so that all of the kernels get a very thin coating of hot oil.  If there's any excess oil pooling around, you've put
too much in.

Put the pot back on the heat – again, it's 6/10 on our stove – and keep the lid in while it pops.  Shake the pan back and forth every so often.  When the popping stops, take the pan off the heat.

Cinnamon Popcorn Cereal

a recipe from Jonathan

Fresh popped popcorn

Pour fresh popped popcorn in a bowl.  Sprinkle cinnamon on top. Pour milk in the bowl.  Eat.

Note: do not salt the popcorn if you want to enjoy this cereal.
Note: This should work with crumbled rice cakes as well.