...Wherein we explore what it means to be a computer,
or computation, or computrons, or a computer programmer, and
why Ken is even touching a computer when he's on vacation.
So here I am, sitting in a house overlooking the Carribean in
the Bahamas, and it occurs to me to wax philosophic as I wane
stressed. Primarily, I suppose, because if I don't write anything,
I won't have any excuse to make you jealous. But also because in
this environment, petty details of damn near anything don't matter
much. Except figuring out how to run a consulting business from
So here's what I've been thinking about between sips of coconut
rum: We're tool users, right? And programmers are tool users of
the most intense sort. All our working and hacking lives are tools.
Okay, this is not at all unique -- this is the human condition,
really. Any 16th century housewife lived all her life with tools.
So did any 19th century factory worker. Or any soldier of any
So let me take another crack at it. It isn't that we live all
our lives using tools. Nor is it the rarer fact that we can build
our own tools. It's that our tools are so freakin' fungible. Our
whole universe, from the bits on up, is a consensual hallucination.
Any order imposed on top of the electrical impulses is just and
only what we want it to be. The fact that some series of magnetic
pluses stored on some platter on some disk somewhere somehow turn
into these magical letters in your chosen font on your screen --
laptop, desktop, handheld, cell phone -- is a conspired hallucination
of mind-boggling proportions.
It's all become so widespread it's easy to forget. Just consider
the lowly bit itself. Electrical impulses within certain tolerances
are considered ones. The absence is considered zero. What's up
with that? Well, it's useful. But it's arbitrary. The
Java Ring, handed out with great fanfare at the second JavaOne,
was powered on by sending it a stream of "one" bits. That gave it
the power to get going, and it was powered by inevitable "one" bits
that came along anyway in further communication. (The idea of a
"second JavaOne" must have been powered more libationary activities.)
Sending some hardware a string of ones to give it energy -- how
sideways is that?
Why are bytes 8 bits? Why is 01010001 a 'Q'? Or is it? There
are many other 7 and 8 bit character codes. And in compressed
text... And in binary files... And...
I could go on, but my little island has no internet access, I
don't keep that much data on my laptop, and anyway it isn't (believe
it or not) my real subject.
So our tool world is made of this mad accretion of consenting
circuits and humans. It is what we agree it to be. Where
we don't agree, it's nothing, just line noise. Just think about
people who think that XML is the magic bullet of world communication.
Lo and behold, the semantics still matter: What does
mean to you? Is it the same as it means
to my schema?
And if you want to hallucinate a new meaning for some set of
electrical impulses, more power to ya.
Mathematics lives in such a virtual universe, but I can't think
of any other field with this much flexibility. And the more abstruse
and hallucinatory math becomes, the more esoteric and rarely useful
it becomes. Yet as we add more abstruse hallucinations we become
more useful, not less.
We hallucinate that ASCII is characters, and we get text
processing. We hallucinate that other bits, otherwise segregated,
mean RGB (and sometimes alpha), and we have colors. We hallucinate
that bundles of bits represent packets, and we have packet collisions
until we further hallucinate how to deal with them, and then we
have networks. We hallucinate that POST represents
some request and <P> starts a paragraph and we
have the web (and the world gets an investment bubble, which is a
different kind of hallucination entirely, for which you must consult
John Kenneth Galbraith).
Sometimes the hallucinations are bad trips, but we're stuck
with 'em anyway. Everyone has their list of nearly irrevocable
bad dreams it's too late to change, at least within one generation.
Windows, DOS, CRLF vs. LF, the keyboard placement of the control
key, yada, yada, yada. Name 'em and weep.
But even these provide a basis on which to do other things,
good things, new hallucinations we can all live with and build on.
If nothing else, the bad stuff provides the rope with which which
to hang itself. The pure flexibility of the clay we mold means
that we can potentially build new stuff that accepts the old stuff
as just stuff of a different sort. And thus the new subsumes the
old and, in the fullness of time, the old stuff can wither and die,
or at least decline into decrepit senility, tended by specialized
consultant who keeps the old Model T going for the customer who
can't be weaned.
When we sit at the computer and program it we are more truly
masters of our fate than most people ever can hope to be.
Although I believe the venerate Mr. Arnold has had a bit too much of that coconut rum, I rather like this construal...a lot. I'm a mathematician at heart and the uselessness of my interests is exactly what spurred me toward programming. Hallucinatory or not, and I concur with the former, I work with axioms, theorems, and hypotheses, mixed with traditions, superstitions, and predictions, to produce something more than the sum of its parts. So it may be "thought-stuff" but it is also poetry and little else carries as much value as aesthetics!
?The programmer, like the poet, works only slightly removed from pure thought-stuff. He builds his castles in the air, from air, creating by exertion of the imagination." - The Mythical Man Month by Frederick Brooks
But Ken, I have to ask. If we figure out a new hallucination, will we then know which container holds the matter of the universe, and why there is matter at all, let alone a place for the matter to be?
The question then arises - how can we know that it is a hallucination ? is the meta class a class ? (excuse my Smalltalk conditioning). Well it is if we want it to be actually, mathematics post Godel has captured this nicely; assume x; and through certain logical derivations within the frame of context; reach y. make no claim of universal truth as it cant .. slightly more on topic, wouldnt it be nice if one were had tools that one could extend/modify to ones hearts content ? and i am not talking about color and font and that kind of visual stuff. Smalltalk, Python and Perl come to mind Enjoy your writings Ken. thought i would chime in with my own ascii shapes. trivia question: how did humankind (the roman descendants at least) come up with shapes like 2 3 or 4 or 5 ? 1 one kind of sees - the other shapes ?