August 1999 Archives

We Want Your Trip Reports

Did you write a trip report describing what you learned at the O'Reilly OpenSource Convention?  Did you tell others about your experiences?  We're compiling a list of these reports and we'd like to hear from you.

Send me a link to your trip report and I'll add it to the list below.  

3rd State of the Onion

This talk was delivered by Larry Wall on August 23, 1999 at the Perl Conference 3.0 in Monterey, CA.

(Note: most of the pictures this year were images of molecules that I animated using a program called RasMol, along with a Perl script to drive it and make the molecules rotate. You probably don't have RasMol on your computer, and if you do, you probably don't have my script. So in the following I've substituted static images, but these link to the corresponding PDB files, which can be fed to RasMol (or my script, pmol) if you want to play with the images yourself. You can find many more PDB files on the net if you're interested.)

Two years ago, in my first State of the Onion speech, I used sounds.

[I play ``You will be absorbed.'']

Last year, in my second State of the Onion speech, I used pictures.

Happy face

Those of you who heard or read that speech will recall that I threatened to use smellovision this year. So guess what.

[I hold up an onion.]

Here's an onion. Allow me to cut it here in front of you.

[I cut the onion.]

They laughed, they cried...

And just this last week, they evacuated a federal building in Washington, D.C. because people were getting sick from some mysterious toxic fumes. Guess what sort of toxic fumes they turned out to be?

[I wave the onion.]

The active ingredient in onion, the one that makes you cry, is thought to be something called 1-propenyl sulfenic acid. In chemistry shorthand, that looks something like this:


You may be wondering what this has to do with programming. Other than the fact that reading other people's code sometimes makes you want to cry.

The point I would like to make today is that I think the Perl community has ``good chemistry''. We often talk about groups of people having ``good chemistry''. Especially when the group consists of two people who suddenly like each other very much.

Unfortunately, what the phrase ``good chemistry'' usually means is that we don't understand what's making the chemistry good. Chemistry is a mystery to most of us. It's like saying ``It's all Greek to me.''

There's one little problem with that saying. I can read Greek. I learned some classical Greek at Seattle Pacific University as part of my declared major, Natural and Artificial Languages. That was just an excuse to mix up linguistics and computer science. You probably know that already.

What you may not know is that I started off college with a double major in Chemistry and Music. If I can't say, ``It's all Greek to me,'' neither can I say, ``We have good chemistry.'' At least, I can't say it without wondering what it means. I have some ideas about what good chemistry is, and that's what I'm going to talk about today.

So to start, here's one of our favorite molecules.


This is caffeine. Good chemistry in this case means keeping you awake through my talk.

Actually, you should find this talk interesting if you've ever had anything to do with chemistry. And if you are lifeform that is not based on chemistry, I apologize in advance. Well hey, this'll talk will probably get slashdotted, and who knows how many AI projects are reading slashdot these days?

I'm also tempted to apologize for the fact that this talk is organized organically. But I won't. It's funny, but the way the English language is going, ``organized organically'' is becoming an oxymoron. You wouldn't think so, since the two words are based on the same root. But our world today has two opposing views on the goodness of hierarchy, and each of these words has fallen down on opposite sides of the fence. Modern life is organized, while postmodern life is merely organic.

But I'm not here to talk about postmodernism. I tried to do that last spring, and afterwards I was thoroughly deconstructed by the deconstructionists for attempting to deconstruct deconstructionism. At least, that's the construction I put on their construction of it. I was talking about postmodern culture, and they thought I was talking about postmodern literature. Not at all the same thing!

Anyway, I'm enough of a postmodern that if you tell me my talk is organized, I'll be insulted, but if you tell me my talk is organic, I'll be complimented.

If you tell me my talk is orgasmic, I won't believe you.

At least, not until I light this candle.

[I wave around an oversized votive candle.]

I ordered this candle a couple of days ago over the Web from a company called Realm Fragrances. They hold the patent on fragrances containing human pheromones. This candle purports to contain human pheromones.

[I light the candle.]

Come on baby, light my fire...

If you didn't think Perl was sexy before, you will now.

(Whether you want to or not.)

Better programming through chemistry...

Actually, I just read another news item a couple of weeks ago that said that some study had just shown that the recently discovered vomeronasal receptors in the human nose are, in fact, vestigial, and don't have neurons to them in adults. Ah, well. Studies are a dime a dozen. If you try hard enough, you can even find studies that prove cigarette smoking is bad for you.

Speaking of studies, a bright fellow by the name of Ted Shieh has been studying the demand for programmers of various kinds. He's been analyzing the web site, where corporate America advertises openings for high-tech jobs, about 132,000 as of today. This is what is known to pollsters as a large statistical sample.

Of course, to a chemist it would be a very small statistical sample. Chemists aren't impressed until you start using exponential notation. You know, Avocado's number, and all that.

Anyway, here's a chart that Ted came up with. It charts the number of job listings on that mention any of the top programming languages. The chart shows growth over the last six months.

job listings on

Perl is the yellow line.

Allow me to point out this spot in April when Perl passed up COBOL.

Of course, passing up COBOL is no big deal these days, since demand for COBOL seems to be trailing off, for some strange reason.

Perhaps more to the point, notice this spot in July when Perl passed up Visual Basic.

Finally, notice this spot way down in the corner, where Python finally got off the baseline. A little.

In the race to the millennium, it looks like C++ will win, Java will place, and Perl will show. Some of you no doubt will wish we could erase those top two lines, but I don't think you should be unduly concerned. Note that both C++ and Java are systems programming languages. They're the two sports cars out in front of the race. Meanwhile, Perl is the fastest SUV, coming up in front of all the other SUVs. It's the best in its class.

Of course, we all know Perl is in a class of its own.

Our real competitor according to this chart is JavaScript. They're coming along strong in fourth place. That's not terribly surprising, considering that JavaScript has taken over a lot of the role in the browser that everyone originally thought Java was going to fill by itself.

This chart actually lies a little, since it's not scaled by the number of jobs listed on And that number has been doubling once every year or so. So all these lines are a little too optimistic.

Here's another chart from Ted that corrects for that.

correction on jobs listed on

In this chart, all the languages add up to 100%, so we can see what the relative demand has been over the last six months.

See the pinkish band at the top. Imminent death of COBOL predicted.

Look at these bottom two bands. Of course, we don't want to be fooled by the fact that they're next to each other, but I do think that Java is growing primarily at the expense of C++. And maybe COBOL.

Meanwhile, both Perl and JavaScript are chewing into Visual Basic, and maybe COBOL. Nobody else on the screen is doing any chewing. The thin blue band at the top is Smalltalk. If you look really closely at the black line above that, it gets a little thicker in spots. That's Python.

There's another way in which these charts might be lying. They don't tell us how many jobs there actually are out there.

Perhaps there's no demand for Python programmers simply because Python programmers are really easy to find without using

Some of you look dubious.

On the other hand, maybe the demand for Java programmers is driven entirely by hype, and there are in reality no Java programmers out there.

Well hey, maybe that's why they cancelled JavaOS last week.

I really do have a hard time believing that COBOL is dying. Maybe the demand is going down for COBOL programmers because there are billions of COBOL programmers beating down the doors of businesses looking for jobs. Maybe the demand was artificially high because of Y2K fixups. I dunno. Maybe someone did a study that proves COBOL is bad for your health.

Well, enough disclaimers. As long as the demand for Perl keeps going up, we're doing something right. You can call it buzz or you can call it brownian motion, but let's keep doing the good chemistry.

So, all right, what is good chemistry. First of all, good chemistry is a little bit messy. Good chemistry is not the same as perfect chemistry. If you want perfect chemistry, here's an example.


That's a bit of diamond crystal. Diamonds may be a girl's best friend (next to pheromone candles), but they're actually rather boring. Crystals are pretty, but they just kind of sit there, not doing much of anything.


Pearls are much more interesting. They're produced by living oysters, after all. They consist of alternating layers of calcium carbonate crystals and an organic binder known as conchiolin. (I suppose it must have something to do with conches.) These alternating layers are what make the pearl irridescent. Calcium carbonate is, of course, a compound of calcium, carbon, and oxygen. Conchiolin is a mixture of various proteins and polysaccharides, rather like your fingernails.

In other words, pearls are complicated, and a little bit messy.

I think good chemistry is complicated, and a little bit messy. I suppose one of the reasons I think that is because, when I was young, I had a chemistry set.

Back in those days, men were men, boys were boys, and chemistry sets were Chemistry Sets. Chemistry sets had real test tubes, and a real alcohol burner, and real chemicals. Dangerous chemicals. The bottles had warnings like, ``Eat thou not of this. If thou eatest of this, thou shalt surely die.'' Or something like that.

Sure, you could do all the fun experiments turning things red or blue or clear again, but you could also do the things that really matter to a junior high boy. You could make things that stink. You could make things that explode.

Of course, they didn't give you everything you needed for that in the chemistry set. You were expected to go down to the drug store and buy your own potassium nitrate, otherwise known as saltpeter. Saltpeter is cool stuff, for a junior high boy.

One day I mixed some saltpeter with sulfur and sugar. You're all familiar with sugar at the macroscopic level. Here's a picture of a sucrose molecule.


Nowadays it seems sort of a shame to use such a pretty, not to mention tasty, molecule merely for fuel, but that's what I did. I discovered a couple of things. First, I discovered that this mixture makes an excellent stink bomb. As you can see here, the sugar molecule has lots of hydrogens. When you burn the mixture, apparently the sugar donates hydrogen and the sulfur donates, well, sulfur, producing hydrogen sulfide in copious quantities.

I also discovered that I should not light off stink bombs in the basement. Besides smelling like rotten eggs, hydrogen sulfide is rather poisonous in large quantities. Guess who had just manufactured large quantities of it. In the basement. Fortunately, no one else was home at the time, and I had the house aired out by the time anyone came home. But I didn't know that, so all morning, the door to the basement had a sign that said, ``If thou goest down here, thou shalt surely die.'' Or something like that.

Maybe someday I'll talk about the rockets. Rocket science is messy too.

By the way, I'm showing you this molecule courtesy of a program called ``RasMol''. No, it's not written in Perl. It's written in C. Sorry.

Believe it or not, there really are a few good programs out there written in C. You know, rn... patch...

Maybe perl...

But in my defense, allow me to point out that I'm running the animation by piping commands to RasMol from a Perl script. And that's as it should be. We don't have to do everything with Perl. We just have to be in control.

Actually, I'm not a control freak. I think I'm more of a chaos freak.

Well, okay, I'm really a controlled chaos freak. Here's some Wallace and Gromit:

[I play ``Everything seems to be under control!'']

Seriously, Perl doesn't have to be in control. It just likes to be in the middle. Kind of like those carbon atoms there in sucrose. Or here.


This is a strand of polycyanoacrylate, more commonly known as superglue. In the middle of things is where a glue language belongs. The world will always have interstices, and we'll always be needing to put glue into them upon occasion. We're in the business of developing better glue molecules. So don't fret yourselves about whether Perl is doing better or worse than some other language in the job market. We're not in that kind of a race.

We do not define Perl as an improved version of some other language. Nor do we have to define Perl as the next universal language. We're not trying to make Perl a better language than C++, or Python, or Java, or JavaScript. We're trying to make Perl a better language than Perl. That's all.

So, what do you want in a glue language?

Well, you have to have the basics, of course. The BASIC programming language was called BASIC for a reason, after all. This superglue molecule shows us a nice bit of linear programming along the backbone. It's a bit obscured by all the cyanide groups. I find it a bit odd that surgeons use superglue because it's non-toxic. Hydrogen cyanide is what they use in the gas chamber in California. Go figure.

Here's a simpler example of linear programming, without all the cyanide on the side.


This is decane, a simple linear hydrocarbon. We don't use it for glue. I am undoubtedly burning some decane in my candle here, since parafin is largely made up of long linear alkanes. If we chop this molecule in half, we get a shorter script. Er, program. Er, molecule.


This is a simple molecule of pentane. We don't use it for glue, either. Mostly we burn it up, because pentane is a basic ingredient of gasoline. But certainly not the only ingredient. You'd never want to burn 100% pentane in your car. 100% pentane is the very definition of 0 octane gas. To get 100 octane gas, we have to add a branching capability to our language.


This molecule defines the standard for 100 octane gas. Not suprisingly, it's called octane, or at least one variety thereof. It's official name is 2,2,3,3-tetramethyl butane, which is a really stupid name, because the methyl groups added onto the side of the butane are exactly equivalent to the methyl groups at the ends of the butane. I think it should be called 1,1,1,2,2,2-hexamethyl ethane. But that's not how chemical names officially work. You have to pick the longest carbon chain you can, four in this case, even if thereby you deny the basic symmetry of the molecule. It's kind of like the standard definition of regular expressions, where you always have to match the longest string. Of course, lots of people call it hexamethyl ethane anyway, since real people really do believe there's more than one way to do it. People use minimal regular expressions now too, thanks to Perl. I'm not sure what the octane rating of Perl is. Perl doesn't make your engine knock, but it's not very expensive either.

Here's a cool molecule, if you're into explosions. Or branching structures.


It seems like whenever you run into a cool explosive, you tend to find nitrogen involved, whether you're talking about potassium nitrate, or nitrogen triiodide, or in this case glyceryl trinitrate. More commonly known as nitroglycerin. Also more commonly used as a heart medication than as an explosive. Still, to a junior high boy, it's dynamite.

Of course, not only do we need branching structures in our programming language, but we need various looping constructs.


That's TNT, trinitrotoluene, frequently confused with dynamite. But it takes a detonator to get TNT to explode. You can take pure TNT and hit it with a hammer, and nothing will happen. Don't try this with dynamite. It will ruin your day, if not your hammer.

TNT is based on toluene, which is a benzene ring with one methyl group. People used to think of benzene and other aromatic molecules as having double bonds that alternated rapidly with single bonds. But it turns out that all the extra electrons are usually out in a cloud on either side of the ring, which hangs a great big negative charge out there, which is why many potent biological molecules use them. Loops are a powerful part of Perl too. That's why there are so many different kinds of loops in Perl.

And there's more than one way to do it in chemistry as well. Interestingly, you can substitute nitrogens for carbons and get aromatic loops as well. You can always tell the aromatic loops from the non-aromatic loops because the aromatics don't seem to have enough hydrogens attached to the carbons or nitrogens. Perl has other ways of telling loops apart. Here's a molecule that will drive you loopy.


This is histamine. Many of you are intimately familiar with histamines, because as loops, they program you to sneeze repeatedly. Some of you may be producing histamines because of the fragrances in this candle. Some of you may have gone so far as to program your body with an antihistamine such as Benadryl.


Obviously, Benadryl is the more powerful program because it has two loops instead of one.

Alternately, you can view it as the reuse of modules. Though it looks more like cut and paste to me. For real reusability, of course, you need to study catalysts, and their proteinaceous cousins, enzymes. Most enzymes are just chock full of loops, branches, objects, interfaces, and what have you. Many reusable enzymes can be downloaded from the CDAN. That's the Comprehensive DNA Archive Network, replicated in the nucleus of each of your cells.

Just a few more loops. I like loops a lot.


Here's another dual-use explosive, cyclonite. It doubles as a rat poison. Rat eats it, KABOOM! In this case you can see that the ring is not aromatic, so all the carbons connect to four things and the nitrogens to three things.

One thing we haven't figured out how to do in Perl is three-dimensional loops. Hey, Sarathy, let's put this on the Todo list:


This is cubane. Not aromatic. See all the hydrogens.


This is dodecahedrane. Also not aromatic.


And of course, buckminsterfullerene, which is aromatic, for some definition of the term. Note that there are no hydrogens at all. Buckyballs are a recently discovered form of pure carbon, like graphite and diamond. Making organic molecules without hydrogen is kind of like writing Perl without dollar signs. Which oddly enough you will be able to do easily, now that we're getting lvalue subroutines, another recent discovery.

I have a gazillion other molecules I could show you, but I'd like to go back and explain a little more personal history. After all, the theme of all these keynote speeches has been that you can't really understand Perl without understanding Larry. There is an unfortunate corollary, however. Since it's not possible to understand Larry, it's not possible to understand Perl either.

But that's okay, because Perl is a bit like those early chemistry sets. You didn't really have to understand what you were doing in order to do interesting things. You might blow yourself up, but more likely, you'd have a great deal of fun.

I remember a lot more about my chemistry set than I do of high school chemistry. In fact, about the only thing I learned in high school chemistry was Avocado's, er, Avogadros number, 6.02 times 10 to the something big. But between my chemistry set and Avogadro's number, I managed to persuade myself to major in Chemistry in college.

Among other things.

My first year at college, I took inorganic chemistry. Inorganic chemistry is mostly about weighing things. I spent an awful lot of time trying to get the scales to read what they were supposed to read. The error bars on my graphs were always rather too large.

I remember wandering into the lab next door, and being shocked to find a jar of potassium cyanide sitting in the cupboard. I suppose that's when it first occurred to me that we really do expect people not to be idiots. For example, we really do expect people not to call system("rm -rf *").

I also learned something about ambiguity that year. I was leafing through a chemistry book when I saw an entry that said, ``periodic acid''. ``Huh,'' I said. I should really have figured it out sooner, since I knew about perchloric acid. Periodic acid is not acid that's periodically acidic, but rather it's per-iodic acid, based on iodine, just as perchloric acid is based on chlorine.

Even if periodic acid isn't, the periodic table is. We studied the periodic table of the elements a lot in inorganic chemistry. There's a reason it's called periodic, and it also has to do with the fact that iodine is like chlorine, and fluorine, and bromine. Sort of.

periodic table

You know, if this were a computer language, people would say it has too many ways to do the same thing. It has too many features that work too similarly, and at the same time it's missing key features of higher abstraction that would really help an MIT grad student. Elements do multiple inheritance of properties, which is evil. Strong typing is not enforced. Nothing should be made of carbon, because organic programming gives you too many ways to get into trouble. There are too many metals, too many gasses, and not enough semiconductors like silicon. There ought to be more elements like carbon. Everything should be made of carbon atoms. Silicon is only good for sand, it should be removed. If this were really object-oriented, electrons and quarks would have the same interface as atoms and molecules. There's not enough encapsulation of electrons in the metals. There's too much encapsulation in the lanthanides and the noble gasses. And why the heck do we need so many different noble gasses anyway? They don't do anything! Throw 'em into that big hole at the top of the chart. And don't get me started on isotopes!

The periodic table is a mess. It should be redesigned.

That's what I learned in inorganic chemistry. My second year I took organic chemistry. That's the same year I started working as a computer programmer. Before that I was working as a projectionist.

[I look at the projection screen in the auditorium.]

You know, I'm still a projectionist. You can never entirely stop being what you once were. That's why it's important to be the right person today, and not put it off till tomorrow.

Organic chemistry is way cool, but there's a problem. You can always tell who is taking organic chemistry on campus. That whole second year, whenever I wandered into the computer center, I was told I smelled like a goat. (In retrospect, I would rather have smelled like a camel.) Anyway, the odor of everything from ether to isoamyl acetate was oozing out of my pores, and it took several weeks for it to wear off after the school year was out. At least, so I'm told. I couldn't smell much of anything for the rest of the summer.

But I enjoyed organic chemistry. We did both synthesis and analysis, but I think I enjoyed the synthesis more. Not too surprising, given who I am. I've never stopped being a synthesist.

Actually, I think chemistry strikes a good balance between synthesis and analysis, between holism and reductionism. As a synthesist, I tend to be scared of reductionism. You know, behavior can be reduced to biology, biology can be reduced to biochemistry, and biochemistry can be reduced to chemistry. Chemistry, in turn, can be reduced to physics. And physics, of course, can be reduced to theology.

Well, hey, that follows logically from the fact that physics can be reduced to math.

Ask most any mathemetician about God, and he'll say something like, ``We can't prove that God exists. However, we can prove that if God does exist, he's pretty good at math. In fact, we can prove that even if God doesn't exist, he's still pretty good at math.''

Personally, I think God is pretty good at both analysis and synthesis. I like the periodic table the way it is, thank you.

Here's an ester I synthesized, called isoamyl acetate.


You know this better as the smell of banana.

[I eat a banana.]

You might think bananas are relatively harmless, but after the quarter was over, I took my precious isoamyl acetate to my dorm room. During an all-dorm water fight, I had the bright idea of turning another floor of the dorm into banana heaven, so I got out my stash of banana perfume. One of my floormates grabbed it from me, went down to the other floor and threw it in someone's face, who proceeded to almost asphyxiate. Fortunately, he didn't, so no one ever asked where the banana perfume came from, and I had a close escape from the law of unintended consequences. But one of the consequences was that chemistry lost a bit of its glamour for me that day. Eventually I realized I didn't want to be a chemist. By my third year in college, I had changed my major to Premed, but I didn't really want to be a doctor either. It was just an excuse to take all the science courses I wanted.

But another consequence was that I realized that, whenever you synthesize something, people will find a way misuse it. People misuse Perl too--if you can call spammers people. Perl is the language of choice for network abuse. That doesn't mean Perl isn't a net win for the world. In the long run, I suspect more lives will be saved by nitroglycerin than will be destroyed by it. But Alfred Nobel's brother was one of the people destroyed by it. I'd rather not be destroyed by Perl.

Chemistry is a serious subject. Sometimes it's a matter of life and death. Here's vitamin C.

Vitamin C

Now that's what you call mission critical programming. Here's vitamin B-12.

Vitamin B-12

Vitamin B-12 is the proof that cobalt is necessary in your diet. Cobalt is the pinkish atom in the middle attached to five nitrogens and a cyanide group. In this context, cyanide gives life rather than taking it away. Context is everything in chemistry, just as it is in Perl.

Even when chemistry is not life and death to people, it's life and death to bacteria and insects. Here's malathion.


One year when my wife was pregnant with one of our kids, we were camped here near Monterey, and we got sprayed with malathion.

That kid turned out strange. But then, all my kids turned out strange.

Strange and wonderful. Kind of like Perl.


Here's a naturally occuring insecticide. An organic pesticide, if you will. It occurs naturally in the leaves of the species Nicotiana Tabacum. Obviously, since nicotine is a natural insecticide, it can't be bad for you, can it?


This molecule with the Mr. Yuk chlorines is DDT, still used in many parts of the world, but not here. We thought it was death for insects, but it was also death for birds. The law of unintended consequences again. But where DDT is still used, millions of people are alive who would have been dead of malaria.

To an organic chemist, pesticides are organic.

To an organic farmer, pesticides are not organic.

That's okay, you can make Perl mean opposite things too. I expect people to make Perl mean opposite things, both good and bad. That doesn't take anything away from the central meaning of Perl. To explain the central meaning of Perl, let's look at the central meaning of the word ``organic''.

If you go back to ancient Greek, the noun organon already meant what we often mean by ``organ'' today; that is, a functional subsystem of your body. But organon could also mean an implement, or a tool, such as a surgical instrument. The related adjective organikos meant ``serving as a tool, or engine.'' There you have it. If Perl is a tool or engine, then you're doing organic programming by definition.

Interestingly, not only could the Greek word mean a surgical instrument, it could also mean a musical instrument. So music is also organic. Perl and music have a lot in common. Maybe next year I should talk about music. After all, I majored in Music too.

If you're really lucky, I'll forget to bring my violin.

Somewhere between music and chemistry there's got to be a joke about organ grinders, but I'll be a monkey's uncle if I can see it.

Anyway, now you know that the ancient Greeks thought their tools were organs, or their organs were tools.

Hmm, maybe I'd better not expand on that.

Actually, as a linguist, I don't believe in etymological meanings. The meanings of words depend on many contexts, but all of the real contexts are in the present language, and true etymology is only in the past. On the other hand, part of the current context is what you think the etymology of a word is. That's why people like me keep trotting out etymological arguments, even though they're relatively meaningless, not to mention wrong half the time.

So, what do I mean when I say I program organically? The central meaning of ``organic'' these days derives from the organs of the body. It means doing business naturally, the way that your body does business, complicated and messy, with lots of interconnections and ramifications and stuff we don't entirely understand yet. But that's the way nature does business.

On the basis of that, the organic farmers can tell you that it's unnatural to use pesticides, because we don't want it to be part of us, while organic chemists can tell you that it's natural to use carbon-based chemistry, because what we're made of. They're both right, in their way.

Likewise, Perl is designed to let you program naturally. Whatever you think natural means.

Perl culture must also be organic. That means that each bond in the molecule of Perl culture must work the way it's supposed to. There is no central atom to the Perl molecule. Maybe I'm a heavy cobalt atom hidden off somewhere in the middle, but the whole molecule is what works. The molecule has what is called tensegrity: the proper balance of pushes and pulls to maintain its integrity. In terms of our culture, it means that sometimes we attract each other, and sometimes we repel each other, but more importantly, it means that we're there for each other there to attract or repel as necessary. Look for balance in your attractions and repulsions. Look for equilibrium.

What's good for the Perl molecule is good for the Open Source molecule. Last year I gave you a picture of the Open Source world taken from physics.


This is Rocheworld, where two gravitationally bound bodies approach each other. It's a curious coincidence that the word rapp-roche-ment has a ``roche'' in the middle. The picture was intended to indicate the approach of the open source world to the commercial world. I wondered at the time whether things would become unstable if the two worlds got even closer together. That's what would happen in a real Rocheworld. But gravitation turns out to be an incomplete model for what's really going to happen. Gravity is never repulsive, and can only be balanced by centrifugal force, but the combination of electromagnetism and the strong force make atomic bonds that can push as well as pull. So I think that the open source folks and the commercial folks will find the right balance. Here's a sample molecule.


This is the molecule known to most of you as acetylene.

If we're to make this correspond to last year's picture, then this hydrogen atom on the left is named Richard, and the one on the right is named Bill. (Hmm, they seem to be circling each other. How appropriate.) [Well, they were circling in my talk, anyway.] This carbon atom on the left is all the open source folks that are trying to cooperate constructively with commercial folks, and this other carbon atom is all the commercial folks trying to cooperate with open source folks. The bond in the middle is simultaneously the strongest bond and the weakest bond. It's the strongest bond, because it's a triple bond. It's also the weakest bond, because it's a very energetic bond, and could be broken by outside forces.

But not by inside forces.

Let me be specific. Some folks in this room are extremely leary of Bill. Others are extremely leary of Richard. These people tend to be leary not only of the opposite hydrogen, but also the opposite carbon. They are supplying the repulsive forces, because they fear the opposite extreme.

At the same time, there are lots of good people who are actively supplying the attractive forces. Nobody has enough power to crush the two carbons together. Nobody has enough power to tear them apart. They're in a metastable state. They have tensegrity. It's my hope that the open source movement achieves this kind of tensegrity.

That being said, acetylene is flammable. If it is abused too much, it can explode. I only ever had one unanticipated explosion when I was doing chemistry in my basement, and that was when I was generating acetylene. I was an idiot, and was generating it in a small glass jar. Don't try this at home. Fortunately, it was a very small glass jar, and I was already wearing glasses at the time. I was shaken but unhurt. I don't play with acetylene much any more, because it is rather touchy stuff. So maybe, if you're thinking about starting a war between the open source folks and the commercial folks, you should think again. First of all, you'll be fighting against a lot of good folks, and you'll probably lose. Second of all, you might win, and the world will be split up into separate atoms. Maybe that's what the hydrogens on the end want, but the carbons in the middle would really like to stick together and make something useful.

If we try hard enough, maybe we can make open source into something stable in the middle. Here's the funniest molecule I saw in my research.


It's called bromochlorofluoroiodomethane. I have no idea what it's good for (or more likely, bad for), just as I have no idea where open source culture is going. But I think of open source as the single carbon in the middle, holding steady the separate interests of these four different atoms, bromine, chlorine, fluorine, and iodine, which to my mind represent the domains .gov, .edu, .org, and .com. If we work things right, maybe we can balance things tetrahedrally so that, for instance, the .govs and .edus keep the .coms and .orgs from destroying each other, and vice versa every whichaway.

I guess I really am an optimist. A paranoid optimist, true, but an optimist nonetheless.

Of course, this picture is also an oversimplification. The true picture is much more organic. Whatever that means.

Vitamin" e"E"

I leave you with some vitamin E. Like many of the most useful molecules in biology, it is self contradictory. It has a strongly polar end, and a strongly nonpolar end. It has a funny shape. It smells a little odd. It looks like it was designed by a committee. It's sort of a molecular camel, if you will.

Nevertheless, it's a useful beast. Just as each of those atoms is necessary to the proper functioning of the molecule as a whole, the molecule as a whole is necessary to the functioning of each of you sitting here today. Each of you in turn can be a vitamin that helps keeps the Perl community healthy.

And our collective hope is that the Perl community is one of the vitamins that will keep the world healthy.

The key to equilibrium is to balance out all your reactions.

Don't overreact. Don't underreact.

Don't overact. Don't underact.

But do act. And act passionately, with balance.

I wasn't going to talk about rockets. But I want the Perl community to behave like a rocket engine. What's the point of rocket science? It's to see how big of an explosion you can have without blowing your rocket chamber apart. I want to have the maximum amount of passion in the Perl community without blowing the community apart. So have a little tolerance for other people's passions, even if they don't match your own. Let's balance our passions.

``Churn, baby, churn,'' as Guy Kawasaki told us earlier today. It's the only way we'll jump to the next curve. It's how we'll let a thousand flowers bloom.

I feel like I'm still playing with my chemistry set here, and I still don't know what I'm doing entirely. Doubtless there will be more cool stinks and explosions this year, just as we've had our fair share of stinks and explosions in the last year. But face it, we've made many more good smells than bad ones. And the explosions haven't done much besides ruffle a few feathers.

So let's keep doing organic chemistry this year. It's good chemistry, even if we do smell like a camel occasionally.

Thanks for letting me douse you with weird chemicals today.

The Perl Conference 3.0 Curve

This year, the Perl Conference 3.0 joined the Linux, Apache, Python, sendmail, and Tcl/Tk conferences as part of the O'Reilly Open Source Convention. Since I am a Perl fanatic, my coverage will focus on Perl but there were many events in common, such as the keynotes. The conference consisted of two days of tutorials, followed by a two-day conference program.

I am lucky enough to be rooming with Kevin Lenzo. For those who don't know who Kevin is, he is THE MAN who organized and put on the "Yet Another Perl Conference" (YAPC), back in June in Pittsburg. The YAPC conference was a "grass roots" conference that attracted many of the Perl "die hards". It was an outstanding success and they have already begun planning next year's conference (YAPC 19100). Kevin is here at The Perl Conference as just a "regular guy" attending the tutorials and schmoozing with the Perl community.

Perl Labs

I was excited to learn about Perl labs, a web site ( where anyone can go and get information on the different Perl ports for different platforms. The information available will allow others to find all sorts of portability and performance issues that a particular platform may have.

Perl Labs was the idea of Kurt Starsinic. Current platforms that are available for testing and information gathering include FreeBSD, NetBSD, OpenBSD, Solaris (both Intel and Sparc), SCO, Unixware, minix, Mac OS10, OSF/1, IRIX, HP/UX, AIX and Linux.

Some of the things that The Perl Labs will provide users with is the ability to track changes between the different kernel releases as well as the different Perl releases. With this information, it will help others in the Perl community to identify areas that may need improvement and allow them to automatically test any changes across all of the platforms that are supported. It will also allow them to ensure that any changes that they make do not have any adverse side effects on the different platforms.

Your platform was not listed? That is no problem said Kurt, all you need to do is download a few programs and dedicate some CPU cycles and your machine(s) can be part of the Perl Labs as well.

Perl Labs will enable the Perl community to test for portability, reliability and performance across the widest possible range of systems. No doubt, this will prove to be an extremely valuable tool for all who use and maintain Perl.


The evenings at The Perl Conference are filled with a lot of fun. Some "geek" movies were shown, many beers were downed (some scotch too) but the most important part of these get-togethers happens as well, face-to-face business and discussions take place. This is an integral part of maintaining the cohesion of the Perl community.

Many of us joke that the Perl community is like a soap-opera. (As The Perl Turns). When you get very smart, independent people together,  there is bound to be people with differing ideas. These get-togethers allow for the "Perl core" to conduct the real business of keeping Perl going. This would not be possible if it were simply through e-mail and conference calls. The different ideas are what make Perl great, after all - "there is more than one way to do it!"

After all of the excitement of the "normal" day at The Perl Conference, there were a couple parties to attend. 

  • The Perl Mongers threw a party and fed several hundred of us. 
  • Active State Tool Corporation's party was not nearly as big, but it was a great time.
  • At the "Open Source Cajun Soiree," the Perl Mongers presented the "White Camel" awards. 

White Camel Awards

The White Camel award is for those who went above and beyond to promote Perl and help the Perl community. Each winner got a very nice trophy and a check for $3,000!

The winners were:

  • Kevin Lenzo won the Perl Community Award for creating and organizing the "Yet Another Perl Conference"
  • Adam Turoff won the Perl User Group Award for his efforts with the Perl Mongers
  • Tom Christiansen won the Perl Advocacy Award for his work on the Perl documentation

A nice plaque was also presented to Kevin Lenzo for his mother. Kevin's Mom baked cookies for 300 people at the Yet Another Perl Conference!

The Next Curve

The opening keynote speaker was Guy Kawasaki, CEO and chairman of Garage.Com. His talk was titled "Rules for Revolutionaries". He presented us with a "top 10" list of things to do for the Open Source community. Guy's presentation was a hilarious, yet very practical look on ways to really make a difference in the world. Here is his list:

  1. Set your perspectives right.  Jump to the "next curve", don't duke it out on this curve.
  2. Eat like a bird, poop like an elephant.  Learn all you can.  Ask your customers what they want, not a group of "professionals".  Get your information first-hand.  Pooping is what this conference is about, spread it all around (the source code)
  3. Don't worry, be crappy.  In the first version of a product, don't worry about being sorry. Take the first MacIntosh computers for example.  You can't wait! If it is a great, revloutionary product - ship, then test.  If your product is 10 times greater than currently available products, ship it!
  4. Churn baby, churn.  It is ok to ship crap, just don't STAY crappy.  Plan for churning, assume you will have to fix it.  Make the product so that it can be improved by others.
  5. Enable people to test-drive your products.
  6. Make evangelists, not sales right now.  Evangelists create a cause out of your product.  Turn the facts into emotions.
  7. Let 1000 flowers bloom.  Let people use your product in any way they choose, even if it is not how you intended for it to be used. 
  8. Think digital, act analog.  In the end, the customer is always analog.  Relationships are analog.
  9. Never ask people to do things that you yourself would not do.
  10. Do not let the bozo's grind you down.  The more they grind you down, the more likely you are to be "on to" something.

Larry Wall's State of the Onion

Larry Wall said last year that he was going to use "smells" during his talk at this conference. And, of course, Larry held true to his word. He started off his Third "State of the Onion" speech by cutting a large onion. He also used a pheromone candle and a banana during his talk to fill the room with smells.

Larry used molecular models during his speech to explain Perl as a glue language that holds everything together, sort of like a molecular bond.  Perl will always belong in the middle of things. 

Larry talked about how the Perl community can help act as a molecular bond between the open source and the commercial sector. There is an attraction/repulsion as necessary. He showed a simple molecule to describe this. On one side was Richard Stallman, on the other was Bill Gates. Even though they might not agree on much, there is a common bond there. There is a state of equilibrium that holds the software community together.

Not- So Risky Business 

Next, it was off to the "Reducing Business Risk With Perl" talk by Randal Schwartz and Tom Phoenix. This talk was designed to help others describe the benefits of using Perl in a business environment. Many businesses are very apprehensive to use Perl because it is "free". What many of these businesses fail to realize is that they are probably already using Perl somewhere on their system.

There are many reasons why Perl is a good choice, some of them are: 

  • Source code readily available
  • no cost
  • ported to just about every platform
  • Perl has a wealth of documentation available
  • commercial support *is* available
  • Perl is great for getting jobs done quickly
  • Perl is an excellent "glue" language that can be used to bring together many other programs, even if they are not written in Perl.

The bottom line here though is that Perl is a full-featured, commercially supported programming language that can reduce development time while providing excellent end-results.

The Perl Pro-bowl

This  "Perl Deathmatch" was a contest where the people interested in participating had to take a pre-test. The winners were then called from the audience in pairs and they had to write a program that the judges had explained. While this sounds fairly simple, it wasn't. The programs themselves were not too difficult, but the contestants only had 20 minutes to do this in, and then they were judged on style and technical merit by a panel of judges.  There were two "commentators" Chip Salzenberg and Chris Nandor, who were "critiquing" the code on the big screen as the contestants were programming. And to top it all off, there were about 500 other Perl geeks in the room heckling them as they worked.

I felt really sorry for the contestants - but the winner of the competition was Jason Krueger and the VA Linux people gave him a computer for his efforts! I think that makes up for all of the pressure he was under!

Convincing Others to Adopt Perl

Many of us at this session were already convinced of Perl's power, we learned new ideas to help promote Perl in places where resistance is being met. Since this was more of a brainstorming session, and not a formal presentation, I will present some of the key points discussed:
  • Many clients use Perl and don't even know it.
    • IBM writes a lot of system administration tools in Perl.

  • If you can demonstrate the usefulness of Perl, it can often be a big factor in gaining acceptance in a corporation.
    • A prime example of Perl's power, the human genome project. This is a HUGE project and is utilizing Perl's power and ease of use to accomplish this task.

  • Perl is a "quiet movement" especially in comparison to the Java language, but it is nonetheless doing very well.
  • Visible source-code can be a problem with some companies.
    • You can never truly hide any language from reverse engineering.

  • If there are others out there with Perl success stories, please write them down and send them to the Perl Advocacy people at

The Perl Quiz Show

The Perl quiz show was another hit at this years Perl Conference. Jon Orwant did an excellent job writing the questions and getting things together for the competition.

The winning team was the London Perl Mongers consisting of Richard Clamp, Peter Haworth, Nick Ing-Simmons, and Andy Wardley.

The questions ranged from easy to absurd. In the end, it was all about having fun.

Perl Town Meeting

The conference was once again wrapped up with the Perl town meeting. The town meeting gives everyone a chance to ask questions about Perl, its development, future plans, etc. The panel on hand consisted of Larry Wall, Chip Salzenberg, Gurusamy Sarathy, and Tim O'Reilly.

Topics discussed were:

  • How do we "legitimize" Perl, and get it more widely taught in schools?
    • One suggestion was for those who know Perl, to go to a local community college and offer to teach a course on Perl.
    • It was also suggested that a list of schools offering Perl should be put together so that people could search on it in their area and find the nearest courses.
  • Perl "certification" was also mentioned.
    • The certification issue is really a touchy subject with some in the Perl community. We, as programmers, know that just because someone has a certificate does not mean they really know how to program. Yet, many managers look to certification to judge the quality of applicants. The room was still divided on the certification issue when we moved on.
  • It was asked if the future versions of Perl would optimize subroutines and reduce their overhead.
    • Chip wrote this down and was going to look into it further.

  • Embedding Perl in network devices was suggested by someone.
    • This interested the panel members. By embedding Perl into network devices, you could both legitimize Perl in corporations and make the devices easier to manage with Perl.

This was about all that the Town Meeting got to talk about before the time was up. There are so many issues that can be addressed with any project as large as Perl that it makes it difficult to hear them all.

The best way for people to get their issues heard/resolved, is to become active in the Perl community and either work directly on Perl development, or bring the issues up with those directly involved.

Wrapping it up

If you missed the conference this year, and are use Perl, seriously consider coming to the next Perl Conference in July. If the regular conference is too expensive, think about attending the next YAPC!

Don't forget, the Perl community is made up of programmers just like you! Become active in your local Perl Mongers groups. If you don't have a local group, start one! The Perl Mongers will help you get it all organized.

If you need to unwind from all of the partying that went on at The Perl Conference (or just feel like hanging out), consider coming to Camp Camel. No, there won't be any computers or phonelines there, just Perl programmers getting together for a weekend of "goofing off".

See you at the next Perl Conference!

Visit the home of the Perl programming language:

Sponsored by

Monthly Archives

Powered by Movable Type 5.13-en