This talk was delivered by Larry Wall on August 23, 1999 at the Perl Conference 3.0 in
(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
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.
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
[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
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
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
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
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
[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
www.dice.com, 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 dice.com that mention any of the top programming languages. The
chart shows growth over the last six months.
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
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.
along strong in fourth place. That's not terribly surprising, considering that
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 dice.com. 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.
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.
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 dice.com.
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
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
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
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
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...
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
[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
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.
Here's a simpler example of linear programming, without all the cyanide on
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
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
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
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.
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
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.
Now that's what you call mission critical programming. Here's 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
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,
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
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
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
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
Of course, this picture is also an oversimplification. The true picture is
much more organic. Whatever that means.
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.