Regrettably, Perl's many and significant contributions to
the field of development methodologies have been largely
overlooked by mainstream commentators.
In particular, two brilliant and innovative methodologies
invented by the Perl community are rarely cited in the
methodology literature. Still more disturbingly, a recent
survey of the forty two leading American universities showed
that not a single one studies either of Perl's two
breakthrough methodologies as part of their undergraduate
The methodologies in question, well-known to most Perl
- TDD (Tolkien Driven Development). Anyone who has browsed the Perl C sources is well aware of the boost to programmer productivity and morale gained by beginning each source file with a carefully chosen and inspirational Tolkien quote.
- ADD (April-fools Driven Development). The simple and elegant notion behind ADD is to take an April Fools' hoax and turn it into reality. Both Parrot (April Fools Parrot) and Pugs (April Fools Haskerl) are fine examples of this groundbreaking methodology.
This, the sixth episode of the series you thought had finished,
analyses the many April Fools Jokes that have been played
on the Perl community over the years.
Black Perl (Larry Wall, 1990)
It has come to my attention that there is a crying need for a place for
people to express both their emotional and technical natures simultaneously.
Several people have sent me some items which don't fit into any newsgroup.
Perhaps it's because I recently posted to both comp.lang.perl and to
rec.arts.poems, but people seem to be writing poems in Perl, and they're
asking me where they should post them.
-- Larry Wall requests the formation of
a new comp.lang.perl.poems newsgroup
In March 1990, as evidenced by this historic rec.arts.poems
Larry Wall was being interrupted by poetry readings from
the next cubicle by his JPL workmate (and talented poet)
Sharon Hopkins. It seems this light-hearted exchange
provoked Larry into perpetrating what I believe is
the first April Fools joke in Perl history,
a request to form a new comp.lang.perl.poems newsgroup.
Haskerl (Will Partain, 1993)
For the disaffected Haskell programmer, we provide: regular
expressions, at-your-fingertips access to UNIX features, and
shorthand-laden figure-out-what-I-mean (FWIM) syntax.
For the disaffected Perl programmer, we provide: lazy evaluation,
referential transparency, Hindley-Milner type checking, polymorphism,
a rich set of builtin data types, and (recursive) user-defined data
We achieve this, essentially, by adding Perl-like features to Haskell.
-- Will Partain announces the new
programming language on comp.lang.functional, April 1 1993
... by the time you get done, everyone
will be using Perl 5, which interprets any string within square
brackets (apart from array subscripts, of course), in any of several
languages, depending on the setting of the new $} magical variable.
Embedded languages supported in the current prototype include Haskell,
TCL, Python, Dylan, Elisp, Teco and Rexx. Support for Visual Basic is
-- Larry Wall's
That this was a very clever and carefully prepared April Fools joke
is evidenced by David Goblirsch being fooled into responding:
Can anyone give me an example---or a reference to an
example---which shows that functional languages are
"bad at I/O"? And why is Haskell perceived to be
inadequate for "get-the-job-done" tasks?
Naturally, David Wakeling was delighted to clarify:
Yes, Certainly. Here at York we have a small electrical
hoist in one of the Departmental stairwells which is used
for lifting expensive and delicate equipment onto the
upper floor of the building. As part of an experiment
in real time functional programming, I wrote a Haskell
program to control this hoist. It proved to be a tricky
exercise: the hoist is controlled by a number of
registers, and reading and writing these registers
in the correct order with the correct values proved
to be a royal pain. Indeed, the experiment had to be
stopped after the accidental destruction of a 386-box,
16 wine glasses and a large rubber plant during a UFC
Audrey Tang turned this joke into reality by initiating
the Pugs project.
Parrot (Simon Cozens, 2001)
Today brought the official announcement that many of us in the Perl and Python
communities had been awaiting and expecting for some time now: the culmination
of the year-long collaboration between Larry Wall and Guido van Rossum, and
the establishment of a period of joint development between the developers of
Perl and Python.
-- Simon Cozens announces
Parrot, April 1, 2001
This is probably the most celebrated April Fools joke in Perl history,
brilliantly planned and executed by Simon Cozens. This joke became
reality soon after when Simon launched the Parrot project.
I was especially tickled by this Parrot code sample:
# copy stdin to stdout, except for lines starting with #
if dollar_underscore =eq= "#":
April Fools Patches to P5P
There is a long tradition of April fools patches to P5P
as indicated by MJD's 1999-2002 p5p April Fools page. If you know of other classic P5P April Fools patches, please let us know.
April Fools Day at Perl Monks
The primary one I remember is from 2004 when I logged in to Perl Monks to
be greeted by a bizarre photo on my home node and being told that, ack,
I'd lost 15 experience points. I've super-searched for April Fools nodes
as shown below. If you know of more, please let us know.
Perl April Fools Timeline
- 1990: Black Perl (Larry Wall).
- 1993: Haskerl (Will Partain).
- 1995: Pre cursor to merlyn's sh2perl (Michael Roby).
- 1997: Perl 6 released (John Macdonald).
- 1998: sh2perl (merlyn).
- 1999: sh2perl Y2K update (merlyn).
- 1999: Semi::Semicolons (schwern, ziggy, the lovely David Adler esq.).
- 1999: Java Mongers (brian_d_foy).
- 2001: use.perl.org Parrot April Fools 2001 (Simon Cozens). The Story behind the Parrot prank. Parrot on slashdot.
- 2001: Acme::Bleach (TheDamian), Acme::Buffy (Leon "acme" Brocard).
- 2001: clpm: where can I get a free perl interpreter? (Michael Farragher).
- 2002: CJAN (HFB). wiki.java.net CJAN, use.perl.org CJAN, CJAN blog, cjan to be replaced by JJAR?, CJAN on java newsgroup, CJAN Nigeria, CJAN blog, CJAN, CJAN for Java.
- 2003: Matt Wright buys out CPAN (Jasvir Nagra).
- 2006: "Larry" replaces $ with euro for Perl 6 (spoofed to appear to be from Larry Wall).
Other April Fools References
Earlier Articles in This Series
Updated References: added The ethics of humour, added Y2K sh2perl announcement, added 2006 "Larry" replaces $ with euro, added 2006 april fools PM nodes.
Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
Read Where should I post X? if you're not absolutely sure you're posting in the right place.
Please read these before you post! —
Posts may use any of the Perl Monks Approved HTML tags:
You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
- a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
Link using PerlMonks shortcuts! What shortcuts can I use for linking?
See Writeup Formatting Tips and other pages linked from there for more info.
| & || & |
| < || < |
| > || > |
| [ || [ |
| ] || ] ||