Memento and Persistence

Following a long conversation with a coworker, I wrote down some thoughts about persistent identification schemes (including ARK, DOI, Handle, PURL).  I had the post in the can, ready to go, when it was rudely interrupted by a really interesting presentation, which completely changed my thinking.  I should recap that ill-fated blog post in one sentence before moving on: adding a layer of identifiers doesn’t make an existing identifier more persistent, it makes it less so.


Now, that being said, there’s a real problem.  If I want to point at something as it exists on a certain date, it’s often quite unwieldy to do so.  Maybe I can cache it locally, maybe I can use one of the persistent identifiers mentioned in that first paragraph, or maybe I’m just out of luck.  I point to someone’s Geocities site, and it’s just fricken gone.  You see, the problem isn’t that information moves to a different location, it’s that the information at a given location changes.  Or that it disappears entirely.  That’s a use case I care about.


Enter Memento.  Herbert Van de Sompel and Michael Nelson gave a presentation about it at the Library of Congress yesterday, and I’m convinced it’s a better way to think about persistence.  Basic gist is that you specify a date with a URI, and a combination of clients, servers, proxies, and services try to give you back the thing you were pointing at, rather than the thing that’s there now.  I don’t love all their terminology or even their implementations, but those are details.  Memento is still a work in progress, and I like the approach.

A Brief History of Computing

[note: edited to fix Blogger.com's stupid formatting]

Ze Frank has this episode of The Show where he talks about “brain crack.” It’s the stuff your brain gets addicted to because it could be good. Watch the episode:

http://www.zefrank.com/theshow/archives/2006/07/071106.html

This, Internet, is my brain crack. Been thinking about this for a long time, hoping to write something long. Well, here’s something short, instead.

Claude Shannon Invented Computers
Claude Shannon invented computers. Not all at once, and not all by himself, but when you think about the guy who had the “Aha!” moment, it’s him. In 1937 (there were, it seems, a whole lot of “Aha!” moments in the thirties), he published his Masters thesis, which showed how Boolean logic and electrical circuitry are the same. One can (and Shannon did) translate back and forth between electrical circuitry and Boolean logic.

To me, that’s the “Aha!” moment. He’s the guy who made it all possible. In his paper, he designed several electronic circuits, wrote them up in Boolean operations, and became the first guy who “programmed” electronics by manipulating logic. And before the comments start flowing, yeah, I can think of quite a few precursors. Heck, Euclid did the same for manipulating physical space, right? But Shannon’s most immediate precursor was George Boole, whose logic system he wrote about.

George Boole Invented Binary Logic
George Boole reduced logic down to True and False. Every statement in his system could always be reduced down to True (a statement that follows from the accepted axioms) and False (one that doesn’t). If you took a philosophy class in college and had to make truth tables, it’s really Boole’s fault.

Boole wasn’t the first to take an interest in binary systems: that’s an old, old idea. Pingala used a kind of binary notation for describing poetry. Eye of Horus is a binomial system, base two just like binary. Knuth even points out in The Art of Computer Programming that English wine merchants have used a binary system for buying and selling wine for hundreds of years. But George Boole was the one who invented binary logic, and that was one of the necessary pieces for Shannon’s thesis.

Leibniz Invented Binary Arithmetic
A century or so before Boole, Leibniz got fascinated with how the I Ching seemed to be organized by a binary mathematical notion: if you make a broken line a zero and a solid line a one, they can be placed in sequential binary order. Gottfried Wilhem von Leibniz went further than that, though. In his Explication de l’Arithmetique Binaire, Leibniz showed how decimal numbers have a one-to-one correspondence with binary. He went on to advocate use of binary, not for the ability to do anything particularly new, but for what it shows about numbers.

Anyone who’s reading this should know, I’ve read Glaser’s History of Binary and Other Nondecimal Numeration, so I know he’s got a whole chapter called “Before Leibniz.” Well, none of it convinced me that I’ve gotten the wrong guy. Leibniz had probably read Lobkowitz, and probably some of the others who had published, but Leibniz “got” that binary is important, and foundational, and not just another kind of enumeration- it’s the one using the least number of digits.

Francis Bacon Invented Binary Encoding
I’m going out on a limb here. Francis Bacon was probably not the first guy, but he did devise an encoding system for English text that only used two characters. He used it as a cipher, but it’s not all that different from ASCII that we use now, and for that reason alone he deserves mention here.

Bibbity Bobbity Boo
Put it together, and what have you got? A way to use electricity to do math, encode text, and perform logic operations. Church, Turing, Kleene, and even Gödel all came with complicated logical models for manipulating symbols, but Shannon came up with a simple one, and showed us how to use it with electrical circuits we already had.

Sure, Zuse, Von Neumann, Mauchly, Eckert, they all built machines. But people had been building machines for a long time. Heck, Leibniz had one that could add, subtract, multiply, divide. Ada Lovelace and Charles Babbage had one. Jacquard programmed his fricken looms. But Claude Shannon showed us, hey, just use electricity.

So, if you’re here, and you’re trying to answer the question, “who invented computers?” my answer is, we’re all still doing it. But Claude Shannon, the guy who had that “Aha!” moment in 1937, gets my vote for Parent-of-Digital-Computing.

Hope for America: Justice Breyer Understands Software

The Supreme Court of the US just heard oral arguments in an interesting case about business process.  Bilski v. Kappos (warning, it’s a PDF) was argued in such a way as to exclude patentability of software, though it has been described as relevant to that conversation.  I read the oral arguments this morning.  I’m not a follower of the court, in general, but I care about this topic, and I had a spare half hour. 

The thing that struck me most profoundly about the proceedings was that the justices are smart.  Really smart.  The most impressive sound bite was from Justice Breyer, who offered the following hypothetical argument (top of page 45 in the transcript):

“…this is not a machine. The machine there is a computer. This is a program that changes switches, and that is a different process for the use of the machine.”

That is, perhaps, the best description of software, and the best argument against software patents I have ever encountered.  I’ll be interested to see where the court lands on this in the future.

As for the Bilski case, it’s too bad both sides can’t lose.  Either way, though, the court gets a big thumbs up from me.

Design Patterns From Evolution

Possibly the most useful lesson to be taken from evolution is natural selection itself: inheritance, variation, competition for scarce resources.

In terms of software development, this is a design pattern not used often enough.  After all, software already has plenty of variation.  There are scarce physical resources (e.g. cpu, memory, bandwidth), and strong selection pressures (e.g. human beings only have so much time, attention, and patience).  Putting inheritance of some kind to work ought not be that heavy of a lift.

At some level, these forces are already at play.  Software does inherit memes, and companies come and go.  But I haven’t seen a compelling implementation of natural selection within a system or tool I’ve used.  Leaving aside the obvious design pattern of evolution itself, however, I think programmers would do well to use other design patterns more frequently.  Some examples I can think of:

Spandrels

In biology, a spandrel is a trait that is a by-product of some other adaptation, and has not necessarily been selected for.  Spandrels are inherited, but don’t provide an evolutionary advantage.  The hitch is, they don’t provide a disadvantage either.  So they get passed along, and some time down the road, they might prove useful after all.

Software developers should pay attention.  When features can be added in such a way that they don’t cost much attention from the user or cpu, bandwidth, and memory from the machine, they should be considered.  I think the Semantic Web could easily develop as a spandrel- RDFa gets added into web pages and ignored until there is an ecology in which they can flourish.  There are probably a thousand other possibilities for this.

The difficulty of course is that attention from programmers is one of the scarcest resources of all, so this kind of spandrel can only work if it arrives as a kind of Trojan on some other adaptation that is selected for (e.g. if Blogger.com starts sticking RDFa in blogs, and people keep using Blogger.com, RDFa becomes a spandrel).

Ontogeny

Organisms don’t stay the same.  Sometimes, as in the case of a tadpole/frog or a caterpillar/butterfly, they’re really very different at different developmental stages.  In software development, I feel like we get hung up in thinking software should work the same all the time.  And there are advantages to that behavior (for example, then people can learn how to use it).  But, it’s profoundly limiting.

Games are one place where ontogenetic design patterns get used.  Players can “unlock” new features and play the game in a profoundly different way as it progresses.  Other kinds of software should learn from games.  I think if people felt like they had to “earn” the advanced features they’d appreciate them more.  Plus, by the time they’d gotten to using them, they’d have a use for them (hopefully).

Speciation

Speciation is one of the most widely understood evolutionary design patterns- in fact, Chuck Darwin wrote a great book about it a hundred and fifty or so years back.  For the sake of biology, two organisms are from a distinct species if they are biologically incapable of producing a reproductive offspring.  For example, a donkey and a horse might get it on, but the result will be a mule, and the mule can’t make more baby mules.

But that’s really a side issue.  Software developers need to be ready to take advantage of speciation: when a system becomes useful for two distinct purposes, speciation should be strongly considered: allowing the software to become two different pieces of software, each developed for a different purpose.

Convergence

The flipside of speciation is convergence.  Bats and birds.  They can’t breed, but from the standpoint of an ecology, they occupy a very similar space- compete for the same resources.  Evolution would totally be awesomer if convergence resulted in bat/bird hybrids.  But it doesn’t.

It doesn’t really work in software either.  But going back to the bat and bird example, bats sort of took over the night by being able to get around in the dark, and birds sort of took over during the day by being able to get around when it’s light.  But they’re functionally very similar.  As such, when it’s clear that an ecological software niche is emerging, programmers need to accept they can still be bats to the birds (Omniweb, for example, was kind of a crappy browser, but it was the only one that ran on NeXT- no innovation there, except they could see at night).  It’s not a bad way to go.

Any other thoughts from the biologists and programmers among us?

Is There a Flickr for Audio?

I have a new phone.  It runs that new Google juice called Android, and for the most part I think it’s pretty neat.  It is, among other things, the first time I have owned a computer that I talk to, instead of just through:

I press that little microphone on the right, I say “DC like a local” and it gives me a link to Tim’s blog.  More often than not, this is quite a bit faster than typing a search query, and I’m starting to take a shine to it.  The whole experience isn’t optimized for speech in the same way it is on Star Trek, but I can see that coming eventually.

This, among other things, got me thinking about the manifold uses for small snippets of audio.  I decided I’d like to use a website that allows me to easily (preferably via an Android app) record, upload, tag, share, string-together, rate, geotag, edit, arrange, taxonomize, ontologize, and generally use small snippets of audio.

The way Flickr lets me do with pictures.

I started asking people who are smarter than me where I could find such a service, and while there were plenty of you-might-be-able-to-make-Google-Wave-do-that kind of answers, this conversation didn’t result in you’re any oh-you-must-mean-xxxxx type of answers.

So, Internet, I put it to you: what is Flickr for audio?

Answering “iTunes” results in lost karma, and anyone teasing me about still not having a Google Wave account will be summarily invited to suck on a lemon.  Possibly in all caps.  With exclamation points.

Seven answers to help physicists sleep at night

New Scientist had a fun article last week, Seven questions that keep physicists up at night. I’m not sure why they didn’t send them to me first, but better late than never. Here are my seven answers. Now the physicists can all go back to sleep (yes, Maggie, that means you). Without further ado…

Why this universe?

A good first question. You think about the universe the way you do because your distant ancestors needed to eat and breed. It’s important to remember that the universe in our heads is not the same as the universe out there. Case in point: Euclidean geometry. For thousands of years, we assumed that the system of rules called Euclidean geometry had a very close correspondence to the way things work in the universe. A hundred years back, someone called that into question, and quite profitably came up with relativity.

Perhaps a more fair wording of the question would be, “Why am I thinking about this universe?” To that question, I propose a different answer: because you are. Now stop, and think about a different one, and see if you wake up there (since you’re going to be able to sleep tonight, after all).

What is everything made of?

Softball. Everything is made of everything else. Strange, but true.

How does complexity happen?

Harder than the previous question, but I’m still not breaking a sweat. Interestingly, the answer to this question is tied up in the previous one, which, in turn, is tied up in La Monadologie. Leibniz nailed it: “there must be simple substances, since there are compounds; for a compound is nothing but a collection or aggregatum of simple things.”

Complexity happens because simple things (he calls these simple things “monads”, but there have been a number of names for them, I like Stephen Wolfram’s “rules” for instance) combine. The combination of simple things yields something which can be perceived, and once perception happens at any scale, we assign a label to it: complexity. When we say something is complex, all we mean is that it consists of parts. It is divisible. If something consists of parts which are in turn complex themselves, we might say “very complex.”

Since this answer begs a followup question, I’ll throw in one for free. Parts combine when, and only when, they are perceived as a whole. Complexity arises from observation. QED.

Will string theory ever be proved correct?

STUPID FUCKING QUESTION.

Theories are not proved correct, theories are proved incorrect.

Come on, people, this is keeping you up?

What is the singularity?

Better question, still not great. A singularity is something singular. As opposed to, for instance, a plurality. As such, “the singularity” doesn’t really have a frame of reference other than itself. In fact, in complex analysis (e.g. calculus), a singularity is just the point at which the function is undefined, or degenerate.

But leaving aside the technobabble and the sidestepping, I think I understand why this is keeping you up, and I can help.

A singularity is one of those things that is most easily explained by pointing at it and saying, “that’s a singularity.” In the case of The Singularity, there was presumably a point at which there was a Not A Universe, and it became A Universe. This one, presumably. However long that transition lasted, however it happened, you physicists would like to understand the mechanics of it.

Here’s how I’m going to help. I’m going to answer a different question: 42.

What is reality really?

Now we’re getting somewhere. Reality, as you may have already heard, is really a simulation, running on a computer, run by mice. And the dolphins are leaving. Seriously, this is one of those questions that probably ought to keep you up at night, but only one night per week. If my kids asked this question, I would say, “what do you think it is, pookie?”

How far can physics take us?

The bad news is, we’re there. The good news is, we can happily invent something new, and call it physics, and everyone will still think physicists are smart. Unless what’s keeping you up is actual space travel, at which point I want to tell you that you’re thinking about EXACTLY THE RIGHT THINGS. How far can we go? How fast can we get there?

Get to work!

Google Wave is the new Emacs

This morning, I had the bad fortune to be sitting next to someone who got a Google Wave invite before I did. I was really jealous, watching all those bits fly across his screen. Keeping up with these kinds of technologies is an important part of the work we do, as is integrating new technologies with our content, and vice versa.

I went back over to my desk to update our RSS feed to reflect some new content we’d sent to Flickr (see what I mean about integrating technologies), and then I started on a weekly report I write. I called another coworker over to show her part of the work, and she asked, “are you really writing this in Emacs?”

I was. And then it hit me: Google Wave is the new Emacs.

Discuss.

Job II

Okay, here’s a go at fiction. This one sprung fully-formed, not exactly sure what made me think of it. Maybe Yom Kippur?

Stan shook his head at the sign behind Lin Wei’s desk: “Quality is Job I.” He’d gotten a kick out of reading the “I” as a first-person pronoun instead of the number one. Now Lin Wei had neatly printed underneath it, “…and the Siegels are Job II.”

Strictly speaking, Lin Wei was not supposed to have any customer contact. Most of the customers didn’t even know they were customers, and even those that were aware were completely ignorant of the technology she brought to bear on their behalf from the station in the planet’s Lagrange point. But that did not keep her from occasional use (abuse?) of her weather control satellites to send them signals of one kind or another.

Formally, Stan’s only job was to make sure that customers who paid in a percentage of their crops to a regional network of collection points were the ones to derive the greatest benefit from weather control. “Assessor” was all it said on his CV. Informally, he was also allowed customer contact, which meant he was occasionally planetside, while Lin Wei was not.

“Have you checked out Siegel lately?”

It was a familiar refrain. Siegel, of course, was not actually named Siegel, but Lin Wei thought that some great-grandparent of the clan looked like her old music teacher on Prime, whose name was Siegel. She had called the tribe “Siegel” ever since.

Due to a long-ago slip by Lin Wei, the clan kept a carefully guarded secret among the planet-dwellers, that they could generate responses by creating atmospheric disturbances. In point of fact, such disturbances triggered a waking cycle for Lin Wei and Stan. They would be brought out of cold sleep to determine a best course of action by a computer that assumed localized traces of burning flesh picked up by satellites were a bad sign. That’s how they did it- just piled up carcasses on top of a hill, and let them on fire. The machinery in the Lagrange point station took care of the rest of the waking cycle.

“No, I haven’t checked out your beloved Siegels lately.” It wasn’t true, of course. The way the cycles worked, I always woke up a few days in advance to go planetside and check everything out. As far as I could tell, the head of the clan, an older woman named Viryania or soemthing, had sent up that evil-smelling smoke in the wake of a good harvest as a kind of thank you.

Some thank you. I made sure to turn up the atmospheric pollution thresholds before I left to go to and fro planetside.

“Such great people,” she gloated. “Such great people.”

“Lin Wei, you’ve given them good weather for what, a thousand years? You even broke protocol to load them into boats when you fucked up and flooded the place. Of course they’re good.” She never thought much about it, but it was true. It’s easy to be good when you’re fat and happy. Especially when all “good” means is that you truck your extra produce to a collection center once a year. Of course, as she pointed out, the Siegels always did it at the start of the harvest, rather than at the end, or not at all, which was becoming more and more common.

“They really are good, Stan. You’re too cynical.”

“Yeah? Let me run the weather satellites for a year, see how good they are then.”

Long story short, Lin Wei was right. I wreaked planetary havoc on the Siegels for a year, resulting in lost crops, lost stock, even a grandkid lost. It was awful to watch, and watch it I did. In between adjustments, I was planetside, trying to see how it affected them. Especially her, the clan matriarch.

The worse things got, the worse her friends got. Neighbors would come by with the ostensible object of commiserating. In reality they were there just to gloat that a thousand or whatever years of good fortune had so abruptly ended. To top it all off, she got sick in the middle of it with some kind of rash that a good dose of antibiotics would have cured, but that would be breaking protocol.

I understand schadenfreude. The gloating friends, I get. My people. Frau Siegel and company, they’re Lin Wei’s people. I don’t get them at all. First harvest, like every good year before the bad one, was brought to the collection center. Lin Wei fixed the weather, and then some, to make up for my year of havoc. Then the old matriarch wrote down her story for grandkids and great-grandkids to remember.

Knowing them, they probably will.

Ghost Runner on Second

Edit: I opened this post up for comments, by request. After five or so years with five or so comments, I turned them off site-wide, but perhaps it’s time to revisit. Without further ado…

Baseball can be played with three people. Dan and Doug and I did it when we were kids, on Spring Creek Farm. One person pitches for everyone, also fields. The other two take turns hitting and fielding. The batter has to retrieve missed pitches, usually from a big tree that is a backstop. Once the hitter gets on base, he shouts “ghost runner on second” and goes back to hit again. Hitting a double sends the ghost runner home, and leaves another ghost runner on second.

That’s what I was thinking about the first time I saw the baseball diamond that will eventually become our farm: ghost runner on second. How a baseball diamond came to be there is still fuzzy to me, but there was a semi-professional league that played on Sundays at 3PM, and this was one of their fields. Home plate can still be made out through the grass, and perhaps we’ll leave it that way. Other relics include ten or so thousand brown glass bottles, formerly containing beer.

The back of the visiting team’s dugout, has names of all the teams tacked up, with one coming off- teams from all over Southern Maryland and DC.

This one was our “home team” until recently, but now I’m not sure who to root for. Ghosts of teams past will eventually be supplanted by, well, plants. A process that has already begun, but not yet in earnest.

The Google map view was our first indication that the place had a baseball field on it, but it’s hard to get a feel for just how big it is without stepping out into it. I guess a center field home run would need to be hit nearly five hundred feet, putting us into big-league territory. With that much space, I think fielding a team would take at least four people.

A brief digression: I was terrible at baseball. My brothers were mostly pretty nice about it, but I was the kid who would get stuck in right field, and hope desperately no ball would be hit out there. Amusingly, I now live in a house in right field.

If I listen carefully, I can hear the crack of a wooden bat on an often-hit ball, no throwing it out after a home run, baseballs are expensive. I don’t have to listen so carefully to imagine the rest of the festivities, which left more of a mark than the home runs, the triples, the doubles, and the singles.

I guess there were snacks, too. And beer, by the looks of the dump. I imagine the hard liquor bottles that find little ferns growing into or out of them were strictly BYOB. Or maybe they were sold in the concession stand, too.

I hiked down in the canyon at the end of the morning, where I found the ghost of a Volkswagen Beetle, carrying home the ghosts of fans from watching the ghost runners and ghost hitters. I dreamed of fields.

Meanwhile, Back at the Farm…

Last night brought a profound sense of deja vu. Our newest addition was not-sleeping in an outfit our oldest wore to not-sleep four years ago. My, how things have(n’t) changed. Meanwhile, there’s a new farm, a sleepy mama, and two rambunctious kiddos. Took them to the new place to see what fun we could have yesterday.


Started out on the new lawn tractor, mowing a path. Couldn’t get a picture on the mower, not even with my newly granted superpowers given to all fathers-of-three, but here’s the path’s maiden voyage, looking back at the house. The path goes east from the house, into the woods.

Upon inspection, that picture looks a little Hansel-and-Gretel. I’m not trying to lose them in the woods, I swear.

Our oldest got a bit of poison ivy on her foot at this point. I saw it, mentioned it, but should have been supervising a more closely than I was. When we came home, we washed the foot in Tecnu (good stuff, that), and put a baking soda poultice on it for a while after. She was a little freaked out by it, so I put some on my foot, too. That seemed to make things better.

The path, incidentally, does lead somewhere.

When I first walked the property, this was a feature I missed. The second time through, I saw it, and then the third time, I couldn’t find it again. I know where it is now, though, and our path shows the way. If all goes according to plan, it’s going to be one of my projects this winter. I’m not sure what it was before I found it- a root cellar or an ice house, perhaps, but I’ve been calling it The Cider House (TM). I imagine planting apple trees on the east end of that meadow, and keeping them through the winter below grade.

The structure appears to have been made of stone originally, with brick and mortar added in over time. As the kids put it,

“The roof went crash, crash, crash!”

In keeping with the whole experiment, I imagine getting another hundred years out of it once I coerce enough family and friends in with spades and buckets, and eventually timber from nearby trees.

For now, though, I’ve got a couple other projects that will take higher precedence. Getting moved in, for instance.