Dominus is a talented and interesting speaker, and he’s giving nine 5
minute talks now.
The Coolest Perl project I ever did. He wrote a program to create
every possible quilt block of a certain type to impress his quilting
girlfriend. He then showed us a picture of his wedding to the former
girlfriend, and said the quilt is now on their bed. So this was also the
most successful Perl project he ever did.
Release New Versions Monthly?. He wrote Text::Template. People
wrote him saying that there has been no new versions in nine months, so had
he abandoned it? Well, it didn’t need new releases; it worked fine, and he
was paying attention to e-mails to see if he needed to make changes. So
maybe he should release a new (identical) version each month so people think
it’s being actively maintained. He blames Microsoft (applause).
Subclassing. People suggest new Text::Template features, like a
special LaTeX mode (which is a pain due to lots of backslashes). The easy
solution is for the user to subclass the module and override just the method
they want changed. But people reject this solution. Maybe that’s because
he didn’t document that approach (but hardly anybody’s modules document how
to subclass their modules, either). And few CPAN modules subclass other
CPAN modules. He calls on the Perl community to “fix this, please”. He
gives an example of how to add a preprocessor to Text::Template in 7 lines
of code, but users don’t know if they can trust future releases not to break
it, so he’ll start documenting what he promises to leave unchanged.
Getting Help From Strangers. The wrong way: send an e-mail from
no name with the subject “Your article” (he writes
lots of articles, which one is this?), and the body
“what does forkish mean? this is very important. thank you.” (did he use
the word “forkish” in an article; he’ll have to check Google to see). The
right way: include your name (or at least a name, how would he know if it
was really yours?); have a meaningful subject; reference the article you’re
asking about and why you’re asking.
How to Progress. How do you get better technically? Read books
other people aren’t reading (the community goes through fads where everyone
reads the same things). This way the community will learn more overall than
it otherwise would. He would tell us what he’s reading, but then we’d rush
out and all read the same things! He mentioned some books like this he’s
read in the past. Galileo’s discourse on mechanics. Read actively. Take
notes. People learn bad note taking habits in college, but you should write
down what interests or puzzles you.
NP-Complete Problems. Computer scientists have proved that if you
could solve any NP-complete problem, you could solve all of
them. But just because these are NP-complete doesn’t mean they are
intractible. Sometimes your problem is really a subset of an NP-complete
problem that isn’t itself NP-complete. Or use suboptimal solutions; bin
packing and traveling salesman require exhaustive search to solve, but you
can get close (say, guaranteed to be no more than x% worse than optimal) a
lot easier. Or optimal solutions may exist for most cases you encounter,
just not every possible case, and those bad cases don’t come up in practice.
Intermission. About 10 seconds long.
On Fish. Example: someone shows up in IRC asking how to remove
the first character in a string, and the typical response is “perldoc
perlre”. But have you ever read that? It’s really hard to follow.
Dominus will just give the answer. Other users call that “giving the person
a fish” instead of “teaching him to fish”. Why does he do that? Because
it’s easy, it’s helpful. Others say this will make the questioner dependent
on his help, and that it’s more helpful to tell them to RTFM. Dominus
thinks that’s ridiculous (but that’s not the word he uses). He thinks the
best way to get someone to read the manual is to answer the question first,
then suggest the manual.
Why LISP Will Never Win. We see a mailing list posting on how to
get more people to use LISP. Someone suggests providing a particular simple
LISP tool for a particular need. The community responds that it’s already
easy “with just a few new macros and functions”, or that no one really needs
to do that. The LISP community is the problem, and keeps looking at why the
other languages people use aren’t as good as LISP. Other language
communities are more interested in their own languages, rather than others.
A Message For the Aliens. We see a bitmap that some scientists
crafted as a message for aliens (and have actually transmitted). It’s a bit
sequence with length the product of two primes, so aliens would likely come
up with an image (perhaps reflected diagonally). He describes the message
and how to decode it without referencing cultural assumptions. You need the
images to follow it (they are supposed to be at
but that site is down right now). The message starts off by defining symbols for ten
digits, then showing how to use the symbols in positional notation to write
larger numbers. Then the message shows the largest prime number we’ve found
so far in decimal. The message then goes on with more numeric examples, and
builds up to images, physics, chemistry. Dominus found a typo: it asserts
the existence of Uranium 238. (He reported the bug, but it wasn’t
appreciated; now aliens will “think we’re schmucks” that think U-238 is