27 May, 2005 at 11:49 Leave a comment

The State of the Onion
By Larry Wall – August 19, 2004

Quite a good read!
Note: All comments in square brackets are X screensavers… with strange camel pictures (just for those of you who think the phrase “strange camel” is redundant).

Published on Perl.com http://www.perl.com/pub/a/2004/08/18/onion.html
See this if you’re having trouble printing code examples

[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 …”

“…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…”

“…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.
    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.
    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 :-)
    You could throw in a little symmetry for interest. 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?
    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…”

“…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
    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.
    Screensavers make 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…”

“…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. 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.”
    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. 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.
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. 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.
    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.
    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 and repulsion. Some people find Perl attractive at a distance and repulsive up-close. Others have just the opposite reaction. 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. 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…”

“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…”

Wow! great ending… I would imagine there were a lot of clapometer in that auditorium went off limits.


Entry filed under: Uncategorized.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )


Connecting to %s

Trackback this post  |  Subscribe to the comments via RSS Feed


May 2005
« Apr   Jun »


%d bloggers like this: