I awoke from this recurring dream last night where I am sitting in the presence of a bunch of older dorks complaining about the spoiled children who act as if they have infinite memory, efficient time-slicing, well-shielded circuits, etc. The phrase one of the older dorks says that “pulls my string” goes something like:
How do we include what we need without pulling the whole universe in with it? It’s commonly recognized, I think, that this is an ad infinitum argument against runaway systems (e.g. Java’s libraries).
In my dream, I try to challenge the dorks by pointing out there exists a similar ad infinitum argument the other way, narrowing the context so that only things precisely and critically relevant to a single particular use CASE ‡ are included. This evokes Gödel’s guess, at the request of Burks, at what von Neumann meant when he said:
It’s a theorem of Gödel that the next logical step, the description of an object, is one class type higher than the object and is therefore asymptotically infinitely longer to describe. A complete specification for a use case will be infinite. (Don’t look at me, blame von Neumann!) So the argument, here, is simply that hyper-specific applications carry an approaching 0 (→0) infinity in contrast to the dorks’ ad infinitum argument (→∞) against too much functionality.
Anyway, I always awake frustrated at this point because I can’t make them understand the point. But whatever. As alluded to above, there also exists a third ad infinitum argument (that my old business partner Chris called “The Spanish Inquisition”), wherein a customization environment, whose purpose is to arrive at a complete specification, will be infinitely long. This is why Apple users complain about “dinking around with Linux”, because most Linux distributions have so many more options for customizing one’s experience. If you coerce the user into answering those questions prior to anything working, you get the Inquisition. And nobody expects the Inquisition! Maybe as I’m dying, when my time comes, my dream will continue and, if Yog accepts me into the Void, I’ll manage to make this point to the dorks.
Of course, in reality, I don’t need to make this point to anyone. Luckily, we now have Opinionated Software to go along with the Unix Philosophy that makes my point better than I ever could. Those who know me will expect this to devolve into an unread screed about unitarity and closure(s). But I just posted something about that. So, I can bail this time.
I emphasize the word “case” in order to point out its particular nature. In software, we are sometimes sloppy and would call a collection of situations a “use case”. E.g. when the same “use case” is exercised, but with slightly different input. Such a collection is not a use case. It is a collection of separate use cases. For something to be a single case, it has to “be the case” that everything is identical, not merely indistinguishable.