4 min read

Interface design by adverse possession

A few days ago I connected two experiences that happened 25 and 40 years ago, respectively--in a way that I think is still relevant today.

A few days ago I connected two experiences that happened 25 and 40 years ago, respectively--in a way that I think is still relevant today.

In 1968 I was about to graduate from high school, and taking a weekend computing course at Columbia University.  The instructor told me about the IBM 7090 and 7094 computers, neither of which I ever had the opportunity to use.  In particular, he talked about the 7090's "store" instruction.  That instruction had a few bits in it, one for each of the machine's general registers (I think there were three of them), along with the requirement that exactly one of those bits be turned on to indicate which register the machine was to store in memory.

If you turned on more than one bit, the result was garbage--so of course people didn't do that.  However, turning all of the bits off had a useful effect: Instead of storing a register's contents in memory, the instruction would store zero.

You will not be surprised to learn that programmers took advantage of this behavior.  Indeed, when IBM released the 7094, which was supposed to be compatible with the 7090, they found that they had to make the 7094 copy this undocumented behavior of the 7090.  Otherwise, programmers would have had to change too much code in order to upgrade.  So they blessed this formerly undocumented behavior and gave the instruction an official name: "Store zero."

Fast-forward to 1983.  Barbara and I were about to buy our first house (actually our only house so far, though the people who sold it to us in 1983 would have trouble recognizing it today).  We had just seen the survey, and were in our lawyer's office talking about it.  Our next-door neighbors' driveway overlapped the property line onto our property by about a foot, and we wanted to know whether we had to do anything about it.

The lawyer explained to us the notion of adverse possession: If someone uses your property without your permission, you do nothing to stop it, and that state of affairs persists for long enough, the property in question becomes their property.  So in this case, if we did nothing about the neighbors' overlapping driveway, the land under that part of the driveway would eventually become theirs.  In practice this fact would be trivial were it not that the town require a minimum distance between the house and the property line; this overlap might therefore become a problem if we wanted to add onto the house later.

What do these anecdotes have in common?  They both capture the notion that if people become used to a state of affairs, and enough time passes, that state of affairs will become official in practice even if there is no rigorous justification for it.  By shipping enough computers that happened to implement a "store zero" instruction, IBM committed itself to implementing that instruction in future computers.  If we did nothing for long enough about our neighbors' driveway, a little strip of our land would automatically become theirs.

With similar problems come similar solutions.  In the case of the 7090, IBM could have avoided the problem by having the processor check that its instructions followed the rules.  Indeed, such checking was one of the most important features in their next generation of computers, System/360.  In the case of our neighbors, we were able to talk them into agreeing that they did not own the strip of land that the survey showed to be on our side of the property line, in exchange for our promise that we would give them plenty of notice if we ever decided to tear up that part of their driveway.  What both solutions have in common is the idea of not allowing accidental behavior to continue unnoticed.

What I realized from connecting these two events is that the design of an interface is not just what the interface allows--it is also what the interface prohibits.