The State of the Onion
by Larry Wall
|
Pages: 1, 2, 3, 4
[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.

