The Annihilation of Angkor Apeiron

In February of 1975, I read The Annihilation of Angkor Apeiron by Fred Saberhagen in Galaxy magazine. This not-so-recent news story reminded me of it.

Perhaps I need to explain. The resolution of AoAA hinges upon a point of intellectual property protection, i.e. how would a publisher of dictionaries or encyclopedias protect themselves against profiteers making unauthorized copies? In the future, imagines Saberhagen, it would be possible to take a reference work, fiddle with the verbiage with a computer, and produce a derivative work that wasn’t exactly a copy. How would the original authors unmask such villains?

The solution, of course, is to introduce “bugs” on purpose — imaginary words in dictionaries, or places in encyclopedias. As a reference work, it’s OK, since nobody would have a reason to look up such imaginary words or places. Nobody reads through such a work. But any derivative work that would happen to contain the identical “bugs” would clearly be derivative.

Back to the present. Affinity Engines sues Google over Orkut. It is a derivative work, they claim, because it has the same bugs.

In addition to nearly identical text found in similar features in and Affinity Engine’s social-networking products, the suit cited several identical software problems in each company’s service.

How long before all software products design in bugs for bizarre use cases, designed specifically to track plagiarism? Or does this help explain the so-called “bugginess” of so many software products?

It’s gaining in popularity….

Recently, I found myself in the San Francisco airport. As I always do, while waiting for the flight, I started juggling. A few minutes later, this guy walks into the waiting room. “Is this the juggling area?” he asks. “Yup”, sez I. And he proceeds to grab five balls out of his carry-on, and starts juggling.


“Where did you learn to juggle?” he asks.

“From friends and family” I explain. “My wife teaches the circus arts.”


“SUNY Purchase.” [Note: This year at Circus Arts Camp]

“Really!” he says. “I taught the circus arts last summer at SUNY Purchase.”

Small world.

Even smaller if you juggle in public places.

Would you like mustard on that?

There’s a lot of talk these days about software factories. And books about software development borrowing from practices and processes used in automotive manufacturing. This is based on the premise that developing and delivering an application or functional enhancement is as complex as building an automobile, or locomotive.

When one is working in an IT department, however, many of the work requests that arise are actually fairly simple. If one then takes these simple requests, and treats them as if they were complicated, they become complicated. And this complication leads to extended delivery times, and large expenses, and increased risks of failure.

Here’s the analogy. When one orders an automobile — and they can manufacture it to order and deliver it in only a few days — that’s impressive. But when one orders a pastrami and provolone on rye with roasted peppers and a pickle — that estimate of “only a few days” starts to seem a trifle excessive.

We don’t have methodologies — even “agile” methodologies — that model application delivery in an IT department (or even a part of it) like a delicatessen. Every sandwich order may not require baking the bread, smoking the beef, growing the peppers. Inventory management in a delicatessen is not quite as structured as in an automotive factory. So when somebody from “the business” requests an application from IT — and gets something within the day — it is cause for astonishment.

I’d like to think that with the proliferation of modern tools, libraries, frameworks, and environments, that we could be as responsive — sometimes — as the counterman at the deli.

History teaches us …

I was on a conference call with a group of IT application architects, and, with a few minutes left until the end of the scheduled hour, the summary of the meeting began with that phrase: “History teaches us …”. As an amateur historian, my interest was immediately piqued. The end of the sentence was “that a three-tier architecture is the best architecture.”

Had it not been for that three-word preamble, I would have let the assertion stand unchallenged. But Clio had been summoned — and I had to disagree.

Frederick Lanchester, was the first person to try to apply mathematical modeling techniques to warfare. In the early part of this century, he developed the Lanchester equations to model armed conflict. I came across an article of his as a child in a collection of books ( © 1956), still available today, The World of Mathematics.. Lanchester looks at the tactics of Napolean in the Italian campaign against Austria and Lord Nelson at Trafalgar to illustrate his point. The lesson that I learned from that history (although there are others to be learned) is that the most effective tactic is to split one’s opponent into two nearly equal halves. The reason for that is related to the effectiveness of the fighting forces being proportional to the square of the size.

Software complexity, also being proportional to the square of the size could very well learn this lesson of history; in which case the correct number of tiers might well be two.

William of Ockham (who lived in the fourteenth century) is famous for Occam’s Razor (also known as the “law of parsimony”):

“Entia non sunt multiplicanda praeter necessitatem” (“Entities should not be
multiplied unnecessarily.”)

This is often simplified to “keep it simple, Simon”.

Although famous today for the Razor, in his own time, William was famous for being a nominalist. Nominalism holds that there is no underlying “truth” to be discovered — rather, things mean what we all agree that they mean — and we can choose to agree differently — which will change our perception of reality. In other words: That word does not mean what you think it means.

So, when someone asks the question: “Do you agree that a three-tier architecture is the best architecture?” some people might think that a “tier” has some divinely-inspired (if they are Medieval) or expert-defined (if they are contemporary) meaning, and that the question was meant to elicit a discussion around the variable “three”.

But a nominalist, who has read Lanchester’s article in The World of Mathematics might know that the number is a constant; that that constant is “two”; that the variable is “tier”; that the question is wrong; and that the correct question is “What is the meaning of “tier” for which a two-tier architecture is the best architecture?”

Aha!, the discerning reader exclaims. Why not assert a priori that “three” is the correct number — having attended Catholic school, this seems perfectly reasonable — and the correct question is “What is the meaning of “tier” for which a three-tier architecture is the best architecture?” Then, I would have agreed a priori with the initial premise, and we would have all move forward unanimously. But this line of reasoning springs the trap laid by William with his nominalist Razor.

For if it is true that there is a definition of “tier” for which a two-tier architecture is the best architecture, and there is a definition of “tier” for which a three-tier architecture is the best architecture, then by choosing “three” a priori, you have multiplied an entity (entia multiplicanda) needlessly.

Therefore, history teaches us that a two-tier architecture is the best architecture.

The lessons of history are not easy to identify, interpret, or internalize. I love the fact that I work at a place where we try to learn them.

PyCon followup

I promised at PyCon I’d post my slides. It took me longer than it should have. The deck is here.

Food for lawyers

Matt Asay suggests that a definition for an open source company would be:

An open source company is one that, as its core revenue-generating business, actively produces, distributes, and sells (or sells services around) software under an OSI-approved license.

So, supposing that a company produces a software product. It is released under the GPL (or other OSI-approved license). Its business model is to sell versions of the software under a commercial license (the famous “dual-licensing” business model). In such a case, the core revenue-gnerating business produces, distributes, and sells software which is explicitly not under an open source license — even though the exact same bits are available under an open source license.

Under the proposed definition would such a company be an open source company?

Weighing in

Nat asks a difficult question. One that I am frequently in the habit of posing, although not as straightforwardly. For example, the copyright notice for Windows XP (I haven’t seen the one for Vista yet) advises us that

Portions of this product are based in part on the work of the Regents of the University of California, Berkeley and its contributors. Because Microsoft has included the Regents of the University of California, Berkeley, software in this product, Microsoft is required to include the following text that accompanied such software:


Portions of this software are based in part on the work of Massachusetts Institute of Technology. Because Microsoft has included the Massachusetts Institute of Technology software in this product, Microsoft is required to include the following text that accompanied such software:

and many others.

Obviously, that makes Microsoft’s Windows XP an Open Source product, built as it is upon BSD licensed software, and Microsoft, an Open Source company. Or perhaps not. Or perhaps, in a homeopathic way.

If the definition of “open source” includes any software that incorporates BSD licensed code, then I think we’re approaching the point where all software is open source software. My personal recent favorite is the recently GPL’d Xara Xtreme. It’s a drawing program. The license is GPL. Check out the build instructions. Especially step 4. It seems that the rendering library is provided as binary only. A curious fusion: binary-only GPL software.

I think it’s fair to say that pretty much all software now incorporates some free software components, LGPL’d, BSD’d, or whatnot. Mathematica does. Apple’s Mac OSX does. Adobe Photoshop does.

I saw the same thing happen to “Object Orientation”. The Object Oriented Programming Systems, Languages and Applications (OOPSLA) conference used to be frequented by people working in brand new object-oriented languages like Smalltalk. Then, somewhere along the way, every programming language (including Perl and Fortran and Cobol) added object oriented extensions, and it was difficult to find any programming which wasn’t object oriented. Here we are with open source software.

It’s not meaningless. It’s a synonym for digital software. Or, maybe, object-oriented software.

On the plus side, that means that Nat can invite anybody to OSCON.

On the plus side, that means that Open Source has achieved world domination.

On the minus side, it doesn’t feel a whole lot different than when most software was proprietary.

Open Source is a sourcing strategy for software users and manufacturers. It’s like software-written-by-consultants-instead-of-employees, which we don’t have a nice word for, but we could make one up. How about consultative software? How is consultative software different from regular software? Is the software consultative if some employees and some consultants work on it? Of course it is. What if the consultants are marketing consultants, but all the software is written by employees? Well, that should probably count, too.

As long as the definition (of anything) is based on the production process instead of the finished product, it becomes difficult to distinguish, given the finished product, which process was used — unless the process affects the finished product in some definable way — in which case you should define the difference based on that “finished product” difference. And for anything with a complex production process, it can always be true that some part of the production process can incorporate any methodology you like.

It’s useful to make distinctions. There ought to be some kind of software which isn’t Open Source, which we can distinguish from Open Source Software. I agree with Nat’s definition. I should be able to download it, compile it, and use it. Burn it onto a CD and give it to all my friends. Sell copies at a community fund-raiser.

If I can’t, then it is Open-Source-compatible software, or Open-Source-friendly software, or Open-Source-oriented software, but it isn’t Open Source software. It’s probably Object-Oriented, though, so perhaps they could present at OOPSLA.

Another five things…

While I was away on vacation, I got tagged by Nick and Stephe, so I guess I have to cough up the Five Things. Ever mindful that one’s identity is established by “the set of things you don’t know about me” (you know, mother’s maiden name, name of first pet, etc.), I am compelled by the Law of Chain Letters to reveal Five Things You Don’t Know About Me.

  1. I grew up in São Paulo, in Villa Buarque — between Avenida Santo Amaro and Parque Ibirapuera. That means I used to be bilingual in English and Brazilian Portuguese — although the Portuguese is a bit rusty now.
  2. The library at the small school I attended did not have a card catalog for the paperback book section. In sixth or seventh grade I undertook a project to type up a card catalog (on my Olivetti manual typewriter) for the paperbacks — two index cards for each book, so they could be located by author or by title. (I had to buy Delicious Library when it came out because the idea of automating the building of a card catalog had a certain nostalgic appeal.) For some reason, I remember wrestling with the question of whether Daphne du Maurier should be filed under “D” or “M”. There is a right answer.
  3. My family and I came to America on a cargo ship, the Burg Sparrenberg, which was carrying raw cocoa and a few passengers. One of the passengers was a firm believer that eye exercises would eliminate the need for spectacles. Alas, I still wear glasses. Perhaps I didn’t do the exercises correctly.
  4. When I was in high school, we used to take the subway down to the McAlpin Hotel on 34th Street for USCF chess tournaments. As black, I would always play the Petroff’s Defense for King’s pawn openings. I favored the Indian defenses for Queen’s pawn openings.
  5. In college, I stopped playing chess and took up Go. I used to hang out at the student center coffee house trolling for games. Eventually, this obsession led me to drop out of school. I did, however, go back the following year and graduate.

Now we get to the hard part. Most of the people I can think of to pass this along to are non-bloggers. Calling them out “bloggishly” as it were, wouldn’t work. So, I’m going to widen the circle by using a generational shift. I have five children over the age of 16. Matthew, Kimberly, Kayla, Sara, and Corey. Tag. You’re it. Five things that your father (and the rest of the world) doesn’t (don’t) know about you. You could even post them to your MySpace account.

And encourage five other people to do the same.

Web Page

Summer is the season for circus camp. Yesterday was the end-of-session show. In preparation for which, Chris mocked up a schedule and roster for the various events. It turned out that as the show took shape, changes needed to be made (as they always do). The biggest change came with some of the aerialist routines; specifically the Spanish Web act. The schedule and roster needed to be updated.

“I need a new Web page”, said Chris.

By which, of course, she meant the piece of paper upon which were written down the details of the Spanish Web act.

Yes, chez nous, the meaning of “Web page” is seasonal.