Note: All comments in square brackets are X screensavers that I ran for
my slides. If you want to play along at home, start up xscreensaver-demo and
click on the screensaver named. By the way, for any screensaver that wants
random images (such as VidWhacker), I used a directory full of strange camel
pictures (some of which I processed to make even stranger, just for those of
you who think the phrase "strange camel" is redundant).
[VidWhacker (camels)]
Good evening. Welcome to my eighth State of the Onion speech. I only have
two more speeches to go after this, and I'll be up to 10. You see, 10 is
kind of a magical number for speeches. According to Sturgeon's Law, 9 out of
10 speeches are crap. After we get to number 10, we'll know which one of mine
wasn't ... Probably number 9 or number 10 ...
So I'm giving you fair warning that this is probably going to be a lousy
speech. Those of you who attended Damian Conway's Presentation Aikido seminar
yesterday will be sure of it. You'll probably get more out of this speech than
anyone else — mostly as a kind of negative example. You can just get out
Damian's notes and start ticking off all the rules I've violated.
Now the particular reason this speech is going to be lousy is that I made up
all my slides before I knew what I was going to talk about.
Well, OK, that's not quite right. I didn't make up my slides. I was
lazy. That's a virtue, right? And I was Impatient. Plus I had the hubris to
think that it didn't really matter what my slides say — I can probably
wrap a speech around them anyway. Especially since there's only a 10% chance
that it has to be a good speech.
So anyway, here's my first real slide. It's a picture of how Damian
thinks.
[Maze]
As most of you know, Damian is very clear-headed and determined. He gets where he's going. It doesn't matter what the problem is, he'll find a way to solve it eventually. He may have to backtrack occasionally, but he's very goal-oriented, and knows how to backtrack gracefully. It's very good that we have Damian on the Perl 6 design team, because we need someone who thinks like that.
Here, on the other hand, is a picture of how well I think on Damian's
level.
[AntSpotlight (camels)]
Yes, this is the famous Ant Spotlight screensaver. And yes, that is where I
got all my slides from. And no, I didn't have a goal in mind when I picked them. Do you see any goals in this picture? Do you see any efficient search strategies? Do you see anything resembling speed here?
That's how well I think on Damian's level. On a different level, I think
like this:
[Cloudlife, fast]
On this level, my mind is in a continual ferment. Things bubble up to the
surface unbidden, and evolve in unexpected directions. Everything gets
compared with everything else because the entire stew pot is bubbling like
crazy. Well, maybe it's not like crazy. Maybe it is
crazy.
One of the things that bubbled up recently was that the subject of this talk
had to be screensavers. I didn't know why. Maybe I still don't know why. But
be that as it may, that's what this talk is about. Screensavers, and why I
have to talk about them today, and why I have to talk about why I have to talk
about them today. It's a kind of recursive problem, you see.
Incidentally, this screensaver is a variant of Conway's Game of Life. No,
not our Conway, the other Conway. Unless our Conway is the other Conway.
Whatever, we'll keep our Conway. After all, he's TheDamian.
Anyway, the game of Life is sort of the prototypical example of a cellular automaton. A number of screensavers are based on cellular automata. I have
great empathy for all of them, because that's how I think... I think...
[Critical]
On the other hand, my mind is like a screensaver that no one can ever look
at, except maybe me, and God. People can't see the ferment in my mind. What
they see externally has to be filtered through my verbal apparatus, which is
actually quite limited. I often think that my verbal processor is a slow
interpreter. My wife's verbal processor is a fast compiler. Actually, those
of you who know Gloria will realize that she probably does her verbal
processing down in the microcode. Or maybe it's just hardwired. She can read
out loud faster than I can read silently. Or maybe it's just that she can talk
faster than I can think. Or more likely, it's just that I think slower than
she talks.
Anyway, where was I? Oh, yeah. This is how other people view my thinking.
I spend a certain amount of time bouncing all over the cognitive map, then I'll
perseverate in a particular area for a while, and then I'll take a flying
mental leap to something that seems to the observer to be totally unrelated.
They aren't unrelated, but they are long-range links. You know
— all that six degrees of separation stuff. You need the long links as
well as the short ones to make your graph work that way. There, my mentioning
that is another example of just that sort of mental leap. This screensaver
tends to look like a random walk generated by a person with attention deficit
disorder. I don't have ADHD. I tend to perseverate and not get distracted
when I should get distracted. If anything, I have Asperger's syndrome, or
some kind of mild autism. My good friend Tom Christiansen, who does have ADHD,
once said jokingly that I have "task-switching deficit" disorder. He's
probably right on that. Certainly I seem to be stuck on this Perl thing. I've
been stuck there for more than 15 years now. People think I make these
long mental leaps all the time, but they're all in the scope of this one
picture. In my mind, everything relates to Perl, one way or another. You'll
notice this screensaver never jumps off the screen.
Another way to view this screensaver is that the long jumps are indicative
of the ability to stay on task a long time. In that view, if you have attention deficit disorder, your thinking looks more like this, because you're
changing directions faster than you want to.
[Wander]
People with ADHD have many endearing qualities, spontaneity not the least
of them. But it is a disability, and the ADHD approach only gets you
so far. More to the point, it tends to get you back where you were. Here we
see a screensaver based on a random walk. It's actually rather stultifying if
you watch it long enough. It's been shown mathematically that a random walk
will eventually return to the place it started if you wait long enough.
Now, just because I say a random walk is stultifying to watch, please don't
take that to mean that ADHD people are stultifying to watch. Quite the
opposite, in fact. I'm just using these screensavers as talking points, as
metaphors of life, but some of my metaphors limp. As we get older we realize
that everyone has disabilities. That seems to be true of metaphors as well.
They all limp. Except for the ones that are dead. Anyway, please don't anyone
take offense at my free associations. Even if they're true.
You know how people are sometimes rude on Usenet or on a mailing list.
Sometimes they'll write something that can only be taken as a deadly insult,
and then they have the unmitigated gall to put a smiley face on it, as if that
makes it all right. It doesn't, you know. Nevertheless, if I insult you with
a deadly insult in this talk, please put one of those little smileys after it.
:-)
Anyway, where was I. Oh, yes, random walks. And the fact that they're kind
of stultifying to watch.
[Rorschach]
You could throw in a little symmetry for interest. In fact, there's already
a special screensaver for that, which you can use if you want to find out if
you've cracked...
Hmm...
Personally, Rorschach blots always look like butterflies to me. Or pelvis
bones, I admit it.
Or Mecha warriors. And such. You could almost swear the designers of
Japanese anime must use this program to come up with new ideas for various
kinds of monsters. But it's still a random-walk program when you look at it.
It's value to psychoanalysis comes from the bilateral symmetry, which
psychoanalysts think will remind us of sex, for some reason. Probably has
something to do with the fact that people are bilaterally symmetrical.
Pychoanalysts tend to have abstract hang-ups about sex (at least the Freudian
ones do), but since we're not psychoanalysts here, why stop at bilateral
symmetry? Why stop at random walks? Why not psychoanalyze ourselves with
other kinds of free associations?
Which is precisely what I'm doing here. Another way of looking at this talk
is that I'm psychoanalyzing myself in front of you, using all these
screensavers as Rorschach blots to free associate with. Another way to look at
it is that screensavers are sort of a poor man's LSD, without the bad
trips.
By the way, I don't think there are any Freudian psychologists in the
audience, but if you happen to be a Freudian psychologist, and were insulted by
my earlier remarks ... well ... just deal with it ... repress it, or something ....
In honor of Freudian psychology, I should in all fairness point out that I
am myself the subject a classical case of repressed memory. I don't remember
anything from my fifth grade. It wasn't anything sexual (I don't think!), but
I am told that it was one of these experimental open classrooms where you have
to decide yourself what you're going to learn. That works well for these kinds
of people:
[Maze]
One of the aspects of my Asperger personality is that I don't initiate
things like that. I have impaired executive function, in modern terminology.
I almost never initiate telephone calls. I almost never initiate anything, in
fact. Funny, considering Perl, but nevertheless true.
The most telling example of that is when Deja first put up all the old
Usenet news articles for browsing. My good friend Randal Schwartz went in and
discovered that of the hundreds of articles I'd posted over the years, only one
article was not a follow-up to some else's article. I don't initiate. I have
no initiative. I guess that makes me lazy. Oh, well.
Anyway, I don't remember fifth grade at all. I did terribly that year, and
completely blocked it out of my memory. I remember fourth grade and sixth
grade just fine though. But then, I did well those years. It all fits. Case
closed.
[DangerBall]
But now I have this other psychological mystery I'm trying to solve. Maybe
it's just some kind of compulsion, but I know deep down that I have to talk
about screensavers for this speech. But why? Why, why, why, why, why? It's irrational and illogical.
So that's what the rest of this talk is about. It all ties in with what
happened to me last year, and it also all ties in with Perl.
So about what happened to me last year: I had a mutation. That's nothing
new — people have mutations all the time. So do screensavers. Many
screensavers, such as this one, are based simply on showing you a mutating
object, moving around the screen. That's pretty natural for screensavers.
After all, the original purpose of screensavers was to save your screen, and
that meant not putting the same picture up in the same place for an extended
period of time. Of course, a blank screen would serve for that just as well.
But, ya know, a blank screen just isn't very interesting. So we get these
various mutator objects instead.
[Cubenetic]
This one does interweaving cubes.
[Engine]
Here's a cute mutator. The little engine that could, if you will...
[FlipFlop]
This one does flip flops. Being good at flip-flops is a prerequisite for
designing computer languages. At least, I find that I have to do frequent flip-flops in the design of Perl 6. I probably shouldn't over-generalize that to
other language designers, who by and large are smarter than I am.
[Gears]
Here's a picture of Perl 5. It's cool.
[Gears (planetary)]
Here's a picture of Perl 6. It's just the same as Perl 5, only cooler.
Planetary gears are very scalable — you can get a large increase or
decrease in revolutions out of them. For that reason, planetary gears are
often used in the engines of high-performance turboprop aircraft. Definitely industrial-strength stuff.
[Bouboule, 3d]
This one's kind of ugly, but then it's supposed to be viewed in 3D using
those red/blue glasses. For some reason it reminds me of my stomach when I'm not feeling so good.
Which reminds me to get back to the subject. Mutations. I had one, in my stomach. It's a pretty well understood mutation, as these things go. It's the
sort of mutation that produces a stomach tumor.
[Mirrorblob, color]
As I stood in this exact spot a year ago, I told you that I'd been in the
hospital for four days with a bleeding ulcer. What I did not know at that time
was that the ulcer was on a tumor the size of my fist toward the lower end of
my stomach. I did not know that I would have the lower half of my stomach
removed two weeks after OSCON. I did not know that I would have complications,
and complications on my complications, recursively. I did not know that I'd be
spending a total of two months in the hospital.
I was pretty ignorant back then.
You see, when you have bleeding ulcers on your vacation in Kauai, the doctor
there tells you that he saw the ulcers, but he doesn't tell you that he saw
them on a tumor. What he does tell you is to see a gastroenterologist the
moment you get home. After all, he doesn't want to ruin the rest of your
vacation. Never mind that you've spent it in the hospital.
[SpeedMine]
So after last year's OSCON I go in for another gastric endoscopy. That's
where they slide a tube down your throat to look at what's down there. This is
rather unpleasant, so they use what's called conscious sedation. They spray
numbing gunk in the back of your throat, and put you partway under. You can
kind of remember it afterwards, but not the bad bits.
[Spotlight (camels)]
Then the doctor looks around, much like our ant spotlight we had earlier.
He can't see too much at a time, but he spots the tumor, and takes pictures of
it. He can't tell how big it is, because endoscopes are monocular, and you
can't really tell how close you are to what you're looking at.
A lot of screensavers are based on the spotlight metaphor. Here's
another:
[Bumps (camels)]
And another.
[Zoom, lenses (camels)]
In this case, the size of the spotlight is the whole screen, like one of
those useless digital zooms on your digital cameras. But it's still just
viewing one portion of the picture, whether that's part of a camel, or part of
an elephant. Or part of your stomach. My stomach, in this case.
[Goop]
At this point my gastroenterologist refers me to a surgeon. Since we don't
know how big the tumor is, I have to drink a bunch of coconut-flavored white gludge and go in for a CT scan. I don't like coconut. I don't like white
gludge. But I do it anyway. It makes some of your body less transparent than
other parts. Some screensavers are about transparency. Others are about
opacity.
Like the distinction between fermions and bosons, objects in screensavers
have to decide whether to bounce off each other or allow overlap. And if they
overlap, whether one of them hides the other or not. In this case, we see
through the overlap. Many screensavers just pile things on top of each other,
like this:
[Cynosure]
I find these screensavers disturbing, because they remind me that with the
passage of time, everything old gets covered over by new things. It's a
metaphor of past, present, and future.
After my CT scan, the surgeon calls my wife even before I get home, and asks
if I could go into surgery the very next day to have the tumor removed. She
says yes. So I do. Sometimes the future is closer than you think.
General anesthesia is not like sleeping. My dreams usually kind of look
like this:
[Pipes]
But general anesthesia looks like this:
[Blank]
You have no present, just a past, and (hopefully) a future. You don't dream
— it's just a big blank until you come out from under.
Then they put you on morphine, so you won't hurt. Instead, you itch. Did
you know morphine makes you itch? Boy, does it ever. And you have really
weird dreams. Dreams kind of like this:
[Bubbles, fastest, no hide]
Or this:
[Lament]
I had really weird dreams on morphine. Didn't like those screensavers. But
a wonderful poem came to me — it started out "In Xanadu did Kubla Khan a
stately pleasure dome decree." But I can't remember the rest of it.
Just kidding. But the place I did visit in my dreams was Xanadu, and it
wasn't a very nice place to be. I prefer normal dreams.
When I was awake, I thought I was choking to death because of the tube down my
nose to my stomach. I wasn't, but I thought I was. It wasn't until I cajoled
a nurse into looking down my throat with a flashlight that I was mollified.
That nurse became my favorite nurse, in a Florence Nightingale sort of way. I
had several other favorite nurses too, for various reasons.
But then I had complications. As some of you know, twenty years ago I went
blind in my right eye due to a case of shingles in my cornea. Shingles is just
a recurrence of chicken pox virus.
So here's a screensaver called "NerveRot".
[NerveRot]
I love this screensaver, in a perverse sort of way. It's so...so...in your
face. It's unnatural in so many ways. It looks like a fractal, but its
fractal dimensionality isn't constant.
I don't love real nerverot. And shingles is a form of nerve rot, one of
those things that kicks you when you're down. And I was down. I got a
shingles infection on both sides of my head, which was unusual. It took me
several days to figure it out. Fortunately, they have drugs to suppress it.
But instead of getting out of the hospital in five days, it took ten. The good
news was that my pathology analysis results came back saying that the excised
tumor looked relatively benign in all respects except for its large size.
The bad news was that I was home for only twenty-four hours, and had to go
back to emergency. I had never been more nauseous in my life, and to compound
that, I found that even if I wanted to, I couldn't upchuck due to spasms in my
esophagus. If you've ever had a tube down your nose, you'll know that you
never want to have one again, but I was so miserable that I asked for one. It
was a great improvement.
[Compass]
This screensaver was written to be nauseating, and I think it succeeds
admirably in that. In fact, it really bugs me that I don't know why it has two
needles pointing in different directions. I had far too many needles going in
various directions when I was in the hospital. I hope that other needle there
isn't the altimeter.
Anyway, this reminds us that an open source project needs a leader who has a
good sense of direction, who doesn't change his mind continually about things
like, say, how double-quoted strings ought to process interpolations, or which
bits of the parser should work top down, and which bottom up. If you can find
such a leader for Perl 6, that would definitely be an improvement over me. At
least in some respects. Of course, I have the advantage of rules one and two.
Rule 1: Larry is always right. Rule 2: Larry will still be right even after he
changes his mind. Now I'm thinking there should also be a Rule 3, just in
case. Rule 3 would say that Larry does not need to continue to be right after
he's dead.
[BSOD "Blue Screen of Death"]
I was sure I was dying. I went back into the hospital, and stayed there for
weeks. The bad news was that my surgery site had scarred up, and I couldn't
eat or drink anything. I got all my nutrients and fluids through an IV
line.
The good news was that if I waited long enough, it might open up again of
its own accord.
That bad news was that after several weeks, it didn't.
The good news was that they had ways of putting tubes in to bypass the
obstruction. So I had more procedures.
The bad news was the procedures didn't work.
The good news was that they had a way to revise the first surgery.
The bad news was that fixing the first surgery meant going through surgery
all over again six weeks after my first surgery. Meanwhile, I spent a lot of
time idling.
I think I started developing an empathy for screensavers about that time.
The poor things just have to sit there and twiddle their thumbs. I was
simultaneously bored and unable to concentrate. My friends sent me books that
I couldn't read. The only thing I could concentrate on long enough was
crossword puzzles. With a crossword puzzle, you can quit after a clue or two,
and still make overall progress, even if your brain is crashing every few
minutes. As mine was at that point.
This particular screensaver fools me more often than I care to admit. The
problem is that the more computers you've used, the more different kinds of
crashes you've seen. And mentally, you classify them all in the "Oh, shit!"
category, which is a category the brain is very efficient at processing.
On the other hand, the part of your brain that says, "Hey, that's the crash
screen for a different operating system, dufus!" — that part operates at
a much slower pace. This is actually a profound psychological truth. Back in
the heyday of Prolog, everyone was bragging about how many LIPs they were able
to process. That's logical inferences per second. But your brain applies many
different LIPs ratings depending on how urgent the problem seems to be. The
brain is chock full of shortcuts, and orthogonality be screwed. Optimizers
cheat, and sometimes they get caught cheating. With this screensaver, you can
catch your own brain's optimizer cheating.
[Pedal]
I got to go home for a week before my second surgery. I could even walk
around my neighborhood with a portable IV pack on my back. I remember admiring
some of the flowers in the neighborhood. They were a welcome sight after the
hospital. But, you know, it's really scary getting all your food and water
through a tube. Especially the water. I got to be home for my birthday, but I
couldn't eat anything. Well, OK, I cheated. I ate one Popsicle, and watched
it drain back out of my stomach tube. At least it tasted good.
[Blank]
My second surgery was a success. Eventually. I had to go through the same
morphine rigmarole again. At least this time they put in a stomach drain
tube so I didn't have to put up with a nose tube. But I had complications
again, this time with some internal bleeding. I lost enough blood that they
were seriously considering giving me a transfusion. But I squeaked through,
and eventually came home. This time I had a feeding tube, which was in some
ways an improvement over an IV, and in other ways not. In particular, I was
now housebound, because the stomach feeding pump was not as portable as the IV
pump. I had to make do with fake foliage on my computer screen.
[Forest]
This screensaver makes use of an ancient technique. If you're working in an
opaque medium such as oil paint, draw the background first. Then paint the
foreground over that. This may seem like cheating, but we use rules of thumb
like this all the time. Every time you do lexical scoping, you're treating the
outer lexical scope like a background, and the inner lexical scope like a
foreground. That's why it's so natural to talk about an inner variable hiding
an outer variable of the same name.
Can you begin to see why I have a special mental relationship with these
screensavers? Maybe I'm a little bit crazy, but I can't decide if it's
psychotic or neurotic. You know the difference, don't you? A psychotic thinks
that 2 + 2 = 5. A neurotic knows that 2 + 2 = 4, but it makes him nervous.
Maybe it's just a simple, everyday obsession.
Eventually, I learned to eat again, and got off my feeding tube. I'll never
take eating for granted again. I'll never take tubes for granted again either.
Now that I'm out of the hospital, here's what my dreams look like:
[Pipes]
Only they mean something different now.
[Endgame]
I recovered pretty rapidly, physically speaking. But it took months to
really get back into gear mentally. Not until this spring did I feel like I
was competent to write Apocalypse 12, the one about object-oriented Perl. All
in all, I'd estimate that my little medical escapade set the Perl 6 design back
six months or so. But Apocalypse 12 was the last big hurdle. With that, the
design of Perl 6 can be said to be largely complete.
We are now in the endgame, which is the name of this screensaver. Now that
the Parrot engine is in such fine shape, it's time to concentrate on writing a
fine Perl 6 compiler to target it.
[Anemone]
Open source projects start out small and grow over time. They send out
tendrils in directions you don't expect. Perl started as a text-processing
language. Look, now it's a system-administration language. And look over there,
now it's a web-programming language, too. Oh, wait, now it's for genomics research.
You'll note sometimes the tendrils withdraw, like a squid's tentacles.
That's just the natural process of deciding which things belong in the core.
In squid terms, what to eat. Perl has eaten a number of things in the last
15 years. Some of them caused indigestion, but hey, that's life.
You'll notice it's cyclical. All successful open-source projects go through
periods of expansion followed by periods of redesign and reintegration. It's a
natural cycle. You just have to try and not starve while you're molting. Perl
has been molting for a few years now. Or maybe it's been more of a
metamorphosis in a cocoon. Anyway, Perl 6 is going to start emerging this
year. It's going to be exciting.
[Atlantis]
You might say we're going to have a whale of a time.
The latest National Geographic has an article about squid who change their
colors. Often they have reasons for changing, but sometimes I think they just
change for the heck of it. A couple of years ago I was snorkeling in the
Bahamas, and got to watch a school of cuttlefish swimming along. They weren't
hiding or courting or anything like that, but as they swam along they would all
change color to brown, then yellow, then red, then green. It's like, "Hey
guys, wouldn't it be cool if we all ran the same screensaver at the same time?" Sort of a cultural identity thing, I suppose.
The interesting thing was that while I was watching, they forked. You know,
like BSD. One group of cuttlefish went off one way, and the other group went
off another. Maybe they had a personality conflict. Maybe they had a fight
over licensing. I dunno. But the cool thing was that the moment they forked,
they desynchronized their screensavers. This group wanted to stay green, while
the other group wanted to go on and try out some purple. Who knows what goes
on in the mind of a cuttlefish — it's possible that they split
specifically over the color issue. Wouldn't be the first open-source project
to split over the color of the bike shed.
I predict that within 10 years, we'll have clothing that runs screensavers,
and what's more, we'll have gangs of people running around with synchronized
displays to show that they "belong." Schools will then outlaw gang
screensavers, and impose uniform screensavers on their students. Someone will
hack into your clothes processor just to get you into trouble with the
teachers. Norton and McAfee will sell software to make sure your clothes keep
saying what you want them to say, and not what someone else wants them to say.
Or show...
Or maybe by then your shirt will be able to authenticate all the IPv6
addresses it communicates with. The hard part is going the other way —
how are you going to authenticate your shirt to someone else? Are you going to
bother to set up an unspoofable identity for every shirt in your closet?
Of course, if your shirt is programmable, you really only need one of them.
Or maybe you need two, for when the other one is in the wash. I suppose geeks
can get away with owning a single programmable shirt. For some definition of
"get away with." Maybe it's more like "get away from," as in "get
away from me."
[Molecule (sucrose)]
Anyway, that's another talk. In fact, it's a talk I already gave five years
ago. Some of you will recognize this screensaver. It wasn't a screensaver yet
when I gave my third State of the Onion talk, but now it is. That's progress.
Cool. But watch out for those pheromones. And if you're on a low-carb diet,
don't even think about looking at this picture of sugar.
Well, enough about chemistry. I already talked about that once. If I start
repeating myself, you'll think I'm getting old. (I am getting old,
but I don't want you to think it.) Anyway, you want to hear something fresh.
Fresher than a geek's T-shirt, anyway.
In any event, the real geeks will probably just have the screen tattooed on
their chest. Or their stomachs. Teletubbies "R" us.
Anyway, back to freshness.
Now, there's two ways one can go about keeping a fresh outlook on life. One
way that works, or at least works for some people, is to suddenly change course
in midstream. Call it the worms approach.
[Shadebobs]
The problem with worms is that they don't learn much from history. The only
history they remember is where they just were, which is where they don't want
to be now. I've known some people like that.
The other approach to keeping fresh it to not be quite so, um, random. In
other words, learn a little more from history. You can do that either by depth
or by breadth. In any case you're keeping more history state around than just
a single position.
[Demon, slow]
Software projects have history, and state. Here you see various software projects feeding on the disorder around them. I'd like to think some of them
are open-source projects, but doubtless some of the more aggressive ones are
closed source.
[Demon, fast]
Over the long term, this is also a view of how dominant species tend to wipe
out their smaller competitors. This is also, unfortunately, a picture of where
the business world is heading these days. At the rate we're going, we'll end
up with just a few large corporate players because right now we have the best
government big business can buy. You can see just a few little holdouts that
survive in tiny ecological niches only because they're parasitic on the large
beasts.
Notice also that nearly all the original information has been destroyed in
the name of progress. Archeologists will have to study the leftover crumbs, as
they always have. Necessarily, they will over-generalize, just as historians
always over-generalize. That's all you can do when too much has been forgotten.
Of course, I'm over-generalizing about history here. But screensavers that
forget things make me sad.
Speaking of history, I recently got to see Tom Stoppard's play,
Arcadia. I should say, I got to see it again. Every time
around, I get something a little different from it. It's an iterated
algorithm.
For another example, take Perl. Paul Graham has opined (Hi, Paul) that
there are a lot of spectacularly original ideas in Perl, but I'd like to
correct that impression. There are indeed a few original ideas in Perl, but
most of the ideas were stolen. Perl has learned a spectacular number of things
from history. Paul was right about one thing, though — some of the things
Perl learned from history were spectacularly wrong. That's not to say
that some of my original ideas weren't also spectacularly wrong. But hey,
that's what iterated algorithms are for. "Release early, release often" is the
old phrase. The new catchphrase seems to be "Learning in Public." Same sort
of thing.
[At this point I skipped to the final section for lack of time, but you can
see the rest of my padding material here.]
[Triangle]
This makes some pretty good-looking mountains. It cheats, of course,
compared to how Mother Nature does it. This sort of algorithm doesn't simulate
plate tectonics or erosion, so you're not going to get good mountain ranges or
river valleys out of it. But our computers are still far too slow to do
adequate simulation of all of physics, so we live in an era where "as good as
we can do" has to be "good enough." The brute-force approach would often take
too long, so our algorithms tend to cheat all over the place. In the case of a
fractal landscape like this, that can actually be a psychological advantage,
insofar as the artificial landscape comes out with a slightly alien feel, which
people seem to like, in moderation.
The problem with exploring oversimplifications, however, is that they're not
actually as interesting as real life over the long haul. At least, not
individually. Maybe there are enough oversimplifications to explore that they
emulate the richness of reality merely by being sufficiently different from
each other. Certainly all the books ever written don't add up to the
complexity of the universe, since obviously they're a part of it. And yet
through the power of imagination, an individual book can give us the impression
of worlds beyond our own.
I'm not sure how this relates to Perl, except to say that Perl has always
been about being "good enough" rather than "perfect." Good enough is often a
lot more interesting than perfect. It's almost as if the imperfections that
keep "good enough" from being "perfect" are the very features that make things
interesting, because there are a lot more ways for things to go wrong than for
them to go right. Even if it's just a little wrong. A lot of these
screensavers are a little bit wrong. But they're interestingly wrong.
[Circuit]
I wasn't gonna show this one, but last Wednesday I was suddenly in the state
that it looked like I wasn't going to be able to show any of these
screensavers. Namely, my laptop completely crapped out. It was too late to
send it in for repair and have any hope of getting it back again in time. I
didn't have the money to buy a new laptop, nor the time to install Fedora Core
2 on one if I had bought one. I couldn't guarantee that I could find a
laptop to borrow that would have Fedora Core 2 on it, at least, not in time to
make sure I got these screensavers all lined up in a row. Fortunately, I was
pretty sure I knew what was wrong with my laptop, since the power light had
been flickering when I wiggled the cord.
So on Thursday I spent all day dismantling my laptop to get at the
motherboard. I don't know why they make it so you have to remove everything
else before you can remove the motherboard, but that's basically what you have
to do. Then I went down to Fry's and bought the teeny-tiniest little soldering
iron they sell. I went back home, and I got that motherboard out and I
soldered it with the complete expectation that I was probably ruining the
motherboard completely. I put it back together again, and only had two extra
screws when I was done. I still don't know what they belong to. But it
doesn't matter. 'Cause I booted that sucker up, and it worked. And that's the
laptop I'm showing you these screensavers on. How many of you have ever tried
to solder your motherboard? OK, keep your hands up if the motherboard still
worked afterwards. You guys know how I feel right now.
Of course, the joke's kind of on me. It broke again just before I left, and
I had to resolder it again last night... I have a great deal of empathy for my
computer, having to undergo two surgeries like that...
Many screensavers are based on bouncing balls.
[Pong]
Pong, a classic. The first version didn't even use a computer.
[BouncingCow]
I'm waiting for the version that does a bouncing camel.
[Boxed]
Multiple bouncing balls in a box are a metaphor for community. Notice how
the escaping balls explode. This is what happens to people who move from Perl
to Ruby.
[Attraction, balls]
Attraction and repulsion. Some people find Perl attractive at a distance
and repulsive up-close. Others have just the opposite reaction.
[Eruption]
With small enough balls, you start getting into particle simulations, which
are good for flame-like effects. But if you look closely here, you can
actually see the little balls bouncing when they hit the ground.
[Euler2d]
Communities are defined by their centers, and often have a fractal quality
about them. The people circulating further in are more involved than the
people farther out. The insiders say things like, "We need to make Perl 6 the
best language for most common tasks." The people further out do not feel
absolutely bound to one community or another. They say things like, "Use
whatever language is appropriate for the task at hand." The outer people are
more likely to drift from one community to another. That's OK. In fact, it's
healthy.
When it gets unhealthy is when you start drawing boundaries between
communities, and you start being exclusive. Or worse, mandatorily inclusive.
Then you start building things like the Berlin wall to keep people inside your
community. In anthropological terms, that's tribalism. A tribal Perl
programmer might say, "If you leave the Perl tribe to go and join the Python
tribe, we will hunt you down, cook you, and eat you." Or if you join the Ruby
tribe, you will explode. By and large, I am not in favor of tribalism.
Except for my tribe, of course.
[Here's the ending I skipped to.]
[VidWhacker (camels)]
I could go on and on. There are over 200 screensavers that come
with X windows these days. We haven't begun to talk about some of the fancier
ones that you can download that do useful work, like searching for
extraterrestrial intelligence, or finding new cancer drugs. But the ones I've
talked about today are the once I notice in my kitchen when I walk past my
Linux box. I notice them, and I think about them, and I think about what they
mean. So I hope you're starting to get an appreciation for them.
But I don't think I've really adequately conveyed yet why I wanted to show
you these screensavers. Last night, when I tried to explain all this to my
family, I suddenly found myself getting rather teary-eyed about it all. It's
not so much the fact that the individual screensavers are so interesting. It's
really about how they relate to each other, and to the world.
There's been a lot of talk lately about 100-year languages and the like, and
while it's fun to speculate on the nature of such long-term enterprises, the
history of futurology warns us that the only sure prediction is that all
predictions are sure to be inaccurate. The things that are relatively
predictable are not fashionable. They're small, but universal. Like
screensavers. I predict we'll have screensavers in a 100 years, even if we
don't have screens any more, and all our brains take their inputs via neural
implants. And those future screensavers will relate to each other just the
same way as our screensavers, even if they are different screensavers.
Think about this little program called xscreensaver-demo that
I've been using to show you these screensavers. Within this program, all
screensavers are considered equal. It's like in a hospital where all the
nurses on your floor are considered to be more or less interchangeable. And
indeed, they purposefully mix things around so you get different nurses each
day. But when they do that, you discover that, in fact, all the nurses are
different. All the doctors are different. And they're all wonderful in their
own way. Likewise, every screensaver is different, and you can relate to them
in different ways.
They are so equal, yet so unequal at the same time. And last night I
realized that this was what was important about Perl, and about the Perl
community. Not a fancy grammar, or fast engine, or clever optimizer. Those
things are all nice, but the heart of Perl the language is all those modules
that fit into Perl like interchangeable screensavers, and yet are all so
different from each other. And the people who write those modules, and
grammars, and engines — they're all equal in the eyes of the Perl
community, and yet all so different.
So it was really only last night that I figured out why I had to talk about
screensavers tonight. And that reason is you. You're my little flock of
screensavers. You're my nurses and my doctors and my patients. You've
performed multiple surgeries on my soul, and let me perform surgeries on your
souls. We're a hospital of people helping each other, performing random acts
of beauty for each other, even when no one is watching but God.
These days I may be missing the bottom of my stomach, but I still have the
bottom of my heart. So I would like to thank you from the bottom of my heart
for being precisely who you are.
Thank you. Thank you. Thank you.