perlmeditation
eyepopslikeamosquito
<P>
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 <I>not a single one</I> studies either of Perl's two
breakthrough methodologies as part of their undergraduate
curricula.
</P>
<P>
The methodologies in question, well-known to most Perl
developers, are:
</P>
<readmore>
<P>
<ul>
<li> <B>TDD (Tolkien Driven Development).</B> 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.
<li> <B>ADD (April-fools Driven Development).</B> The simple and elegant notion behind ADD is to take an April Fools' hoax and turn it into reality. Both <a href="http://www.parrotcode.org/">Parrot</a> (April Fools <a href="http://www.perl.com/pub/a/2001/04/01/parrot.htm">Parrot</a>) and <a href="http://www.pugscode.org/">Pugs</a> (April Fools <a href="http://www.dcs.gla.ac.uk/~partain/haskerl.html">Haskerl</a>) are fine examples of this groundbreaking methodology.
</ul>
</P>
<P>
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.
</P>
<P><B>Black Perl (Larry Wall, 1990)</B></P>
<P>
<blockquote>
<P>
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.
</P>
<P align="right">
<small>-- Larry Wall requests the formation of
<a href="http://groups.google.com/group/news.groups/msg/c3acca124e67b446?dmode=source&hl=en">a new comp.lang.perl.poems newsgroup</a>
</small>
</P>
</blockquote>
</P>
<P>
In March 1990, as evidenced by this historic rec.arts.poems
<a href="http://groups.google.com/group/rec.arts.poems/msg/8e0d83e41a7d7b1a?dmode=source&hl=en">sharon-esque poem</a>
and
<a href="http://groups.google.com/group/rec.arts.poems/msg/485df9399463f7d0?dmode=source&hl=en">larry-esque response</a>,
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
<a href="http://groups.google.com/group/news.groups/msg/c3acca124e67b446?dmode=source&hl=en">the first April Fools joke in Perl history</a>,
a request to form a new comp.lang.perl.poems newsgroup.
</P>
<P><B>Haskerl (Will Partain, 1993)</B></P>
<P>
<blockquote>
<P>
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
types.
We achieve this, essentially, by adding Perl-like features to Haskell.
</P>
<P align="right">
<small>-- Will Partain announces the new
<a href="http://www.dcs.gla.ac.uk/~partain/haskerl.html">Haskerl</a>
programming language on comp.lang.functional, April 1 1993</small>
</P>
<P>
... 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
not anticipated.
</P>
<P align="right">
<small>-- Larry Wall's
<a href="http://www.dcs.gla.ac.uk/~partain/haskerl/wall-1.html">response</a>
</small>
</P>
</blockquote>
</P>
<P>
That this was a very clever and carefully prepared April Fools joke
is evidenced by David Goblirsch being fooled into responding:
<blockquote>
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?
</blockquote>
</P>
<P>
Naturally, David Wakeling was delighted to clarify:
<blockquote>
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
visit.
</blockquote>
</P>
<P>
Audrey Tang turned this joke into reality by initiating
the <a href="http://www.pugscode.org/">Pugs</a> project.
</P>
<P><B>Parrot (Simon Cozens, 2001)</B></P>
<P>
<blockquote>
<P>
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.
</P>
<P align="right">
<small>-- Simon Cozens announces
<a href="http://www.perl.com/pub/a/2001/04/01/parrot.htm">Parrot</a>, April 1, 2001
</small>
</P>
</blockquote>
</P>
<P>
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.
</P>
<P>
I was especially tickled by this Parrot code sample:
<blockquote>
<CODE>
# copy stdin to stdout, except for lines starting with #
while left_angle_right_angle:
if dollar_underscore[0] =eq= "#":
continue_next;
}
print dollar_underscore;
}
</CODE>
</blockquote>
</P>
<P><B>April Fools Patches to P5P</B></P>
<P>
There is a long tradition of April fools patches to P5P
as indicated by <a href="http://perl.plover.com/idiocy/April1/">MJD's 1999-2002 p5p April Fools page</a>. If you know of other classic P5P April Fools patches, please let us know.
</P>
<P><B>April Fools Day at Perl Monks</B></P>
<P>
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.
</P>
<P>
<ul>
<li> [id://341624]
<li> [id://341495]
<li> [id://341511]
<li> [id://341705]
<li> [id://341559] (update: this is a classic cited [id://11140699|here] when [kcott] got pranked by [jdporter])
<li> [id://444117]
<li> [id://68566]
<li> [id://341611]
<li> [id://247102]
<li> [id://247247]
<li> [id://155922]
<li> [id://156112]
<li> [id://155779] (update: I love this [id://155920|apology] :-)
<li> [id://155753]
<li> [id://71933]
<li> [id://68566]
<li> [id://69063]
<li> [id://68842]
<li> [id://540638]
<li> [id://540655]
<li> [id://896829]
</ul>
</P>
<P><B>Perl April Fools Timeline</B></P>
<P>
<ul>
<li> 1990: <a href="http://groups.google.com/group/news.groups/msg/c3acca124e67b446?dmode=source&hl=en">Black Perl</a> (Larry Wall).
<li> 1993: <a href="http://www.dcs.gla.ac.uk/~partain/haskerl.html">Haskerl</a> (Will Partain).
<li> 1995: <a href="http://groups.google.com/group/comp.lang.perl/browse_thread/thread/2e3f00b5fd76f643">Pre cursor to merlyn's sh2perl</a> (Michael Roby).
<li> 1997: <a href="http://groups.google.com/group/comp.lang.perl.modules/msg/21d65ae85db69dee?dmode=source&hl=en">Perl 6 released</a> (John Macdonald).
<li> 1998: <a href="http://groups.google.com/group/comp.lang.perl.announce/msg/58d30d5705fcbe90?dmode=source&hl=en">sh2perl</a> ([merlyn]).
<li> 1999: <a href="http://groups.google.com/group/comp.lang.perl.modules/msg/b6fe64a3808ed796?dmode=source&hl=en">sh2perl Y2K update</a> ([merlyn]).
<li> 1999: <a href="http://search.cpan.org/dist/Semi-Semicolons/">Semi::Semicolons</a> (schwern, ziggy, the lovely David Adler esq.).
<li> 1999: <a href="http://groups.google.com/group/comp.lang.perl.misc/msg/9e32407c56972319?dmode=source&hl=en">Java Mongers</a> ([brian_d_foy]).
<li> 2001: <a href="http://use.perl.org/article.pl?sid=01/03/31/206248">use.perl.org Parrot April Fools 2001</a> (Simon Cozens). <a href="http://www.oreillynet.com/pub/a/oreilly/news/parrotstory_0401.html">The Story behind the Parrot prank</a>. <a href="http://developers.slashdot.org/article.pl?sid=01/03/28/1742237&tid=156">Parrot on slashdot</a>.
<li> 2001: <a href="http://search.cpan.org/dist/Acme-Bleach/">Acme::Bleach</a> ([TheDamian]), <a href="http://search.cpan.org/dist/Acme-Buffy/">Acme::Buffy</a> (Leon "acme" Brocard).
<li> 2001: <a href="http://groups.google.com/group/comp.lang.perl.misc/msg/899020eeefe682f2?dmode=source&hl=en">clpm: where can I get a free perl interpreter?</a> (Michael Farragher).
<li> 2002: <a href="http://groups.google.com/group/comp.lang.perl.misc/msg/5015bb183e15ef8d?dmode=source&hl=en">CJAN</a> (HFB). <a href="http://wiki.java.net/bin/view/Projects/CJAN">wiki.java.net CJAN</a>, <a href="http://use.perl.org/articles/02/04/01/175220.shtml">use.perl.org CJAN</a>, <a href="http://cephas.net/blog/2003/05/23/cjan_cpan_for_java.html">CJAN blog</a>, <a href="http://www.mail-archive.com/jakarta-commons@jakarta.apache.org/msg04217.html">cjan to be replaced by JJAR?</a>, <a href="http://groups.google.com/group/comp.lang.java.programmer/msg/22661ceeebef664b?dmode=source&hl=en">CJAN on java newsgroup</a>, <a href="http://citizenjournalistsassociationofng.blogspot.com/">CJAN Nigeria</a>, <a href="http://www.javablogs.com/views/ViewBlog.action?id=12271">CJAN blog</a>, <a href="http://mail.pm.org/pipermail/pdx-pm-list/2002-April/001825.html">CJAN</a>, <a href="http://alpha-geek.com/2004/06/01/cjan_is_still_making_progress">CJAN for Java</a>.
<li> 2003: <a href="http://use.perl.org/article.pl?sid=03/04/01/1224229&mode=thread&tid=32">Matt Wright buys out CPAN</a> (Jasvir Nagra).
<li> 2006: <a href="http://www.nntp.perl.org/group/perl.perl6.language/24898">"Larry" replaces $ with euro for Perl 6</a> (spoofed to appear to be from Larry Wall).
</ul>
</P>
<P><B>Other April Fools References</B></P>
<P>
<ul>
<li> <a href="https://en.wikipedia.org/wiki/April_1st_RFC">April Fools RFCs</a>
<li> <a href="https://en.wikipedia.org/wiki/April_1">wikipedia April 1</a>
<li> <a href="https://en.wikipedia.org/wiki/April_Fool's_Day">wikipedia April Fool's Day</a>
<li> <a href="https://www.museumofhoaxes.com/hoax/aprilfool/">Top 100 April Fools Jokes</a>
<li> <a href="https://compsoc.dur.ac.uk/whitespace/">Whitespace programming language</a>
<li> [wp://Whitespace (programming language)]
<li> <a href="https://wiki.c2.com/?SyntacticallySignificantWhitespaceConsideredHarmful">Syntactically Significant Whitespace Considered Harmful</a>
<li> <a href="https://perl.plover.com/">MJD Perl page</a> (search for April on this page)
</ul>
</P>
<P><B>Earlier Articles in This Series</B></P>
<P>
<ul>
<li> [id://410774]
<li> [id://412464]
<li> [id://424355]
<li> [id://437032]
<li> [id://451207]
</ul>
</P>
<P>
</P>
<P>
<small>
Updated References: added [id://341624], added Y2K sh2perl announcement, added 2006 "Larry" replaces $ with euro, added 2006 april fools PM nodes.
</small>
</P>
</readmore>