London.pl by William Blake (Graham Harwood) A Perl poem which transcribes William Blake's 19th century poem "London" into program code. Written in 2001, it is one of the very few artistically advanced Perl poems written since the invention of Perl poetry in the early 1990s.
[ go to project page ]
Jabberwocky and London.pl
The first known proposal for writing poetry in computer programming languages is from 1962 and appeared in the first manifesto of the Oulipo, a group of poets and mathematicians founded by Raymond Queneau and François le Lionnais. The manifesto suggested advancements in "des vocabulaires particuliers (corbeaux, renards, marsouins ; langage Algol des ordinateurs électroniques, etc.)", but it took another ten years
until the first Oulipo poetry in Algol was written. Independently, programming language poetry became popular in the early 1990s in the community around the Perl scripting language. Coined by Perl creator Larry Wall, Perl poetry took off in the Internet and became subject to systematic description in Sharon Hopkins' 1991 paper "Camels and Needles: Computer Poetry Meets the Perl Programming Language"
[http://www.wall.org/~sharon/plpaper.ps]. Two Perl Poetry contests in 2000 and 2001 helped to keep the genre alive, to date most Perl poetry is disappointing from literary and artistic points of view. An example, taken from the poem "love.pl":
our $life = \$love and $togetherness;
and: foreach my $sweet (@first) {
little: until ($we . $met) { last 'and' }
}
if ($now . $we) { goto marry; $we . $shall }
bless our $life, More;
The juvenile sentimentalism and subjective introspection of much if not most Perl poetry could perhaps be appreciated as subtle irony (whether intentional or not), but clearly gets tedious over time. The history of programming language poetry thus is a history of missed chances given that, in fact, there is no other digital poetry where the relationship of the text and the technology is as intrinsic, to the point, potentially reflexive and virulent (given that a program code poem could literally crash a computer, see --> jaromils forkbomb).
1. Jabberwocky
"Jabberwocky", a Perl poem in tune with the original Perl poetry community, differs from the usual through its choice of nonsense as its object (and objective) rather than lyrical sentimentalism, nature-worshipping pseudo-haiku and the like. The poem transforms Lewis Carroll's famous "Jabberwocky" poem to a Perl sourcecode which still is well readable in its relation to the original:
#!/usr/bin/perl
$brillig and $toves{slithy};
for $gyre ( @wabe ) {} for $gimble ( @wabe ) {}
map { s/^.*$/mimsy/g } @borogoves
and $mome{raths} = outgrabe;
if(my $son = fork) { warn "Beware the Jabberwock!";
jaws && bite, claws && catch;
warn "Beware the Jubjub bird" and $shun,
$Bandersnatch{frumious} == 1; }else{
$_{hand} = \$sword{vorpal};
seek FOE, $manxome, (4_294_967_296 * time);
sleep ($tree{Tumtum} = $_);
while (study) { stand }
while (study($uffish)) { $_{stand} == 1; }
unless ($Jabberwock = fork) { $Jabberwock{eyes} = flame,
$Jabberwock{movement} = wiffle, $Jabberwock{location} = $wood{tulgey}
+;
while ($coming=1) { burble }}
(1, 2), (1, 2) and through and through;
$sword{vorpal}{blade} = snicker-snack;
(kill 9, $Jabberwock), $head = (chop $Jabberwock);
sub{ return $_, $head }; }
tell $son, "And hast thou slain the Jabberwock?".
"Come to my arms, my beamish boy! ".
"O frabjous day! Callooh! Callay! ",
$_{joy} = chortle if $son;
$brillig and $toves{slithy};
for $gyre ( @wabe ) {} for $gimble ( @wabe ) {}
map { s/^.*$/mimsy/g } @borogoves
and $mome{raths} = outgrabe;
The author humorously calls his writing a "Perl Port of Jabberwocky", using the common programmer's terminology of "porting" a program from one computing platform (operating system or programming language) to another. In this case, the "port" is not mere transcoding from one formal instruction code to another, but from English to instruction code in the first place - thus reversing the poetics of Lewis Carroll a.k.a. the Oxford logician Charles Lutwidge Dodson of translating aporias of formal languages into literary fictions.
Beyond being a mere transliteration of Carroll's poem into the typography of a Perl program, Andreychek's "jabberwocky" is real machine-executable code. Running it creates the two following two lines of output:
Beware the Jabberwock! at jabberwocky.pl line 8.,
Beware the Jubjub bird at jabberwocky.pl line 10.
More interesting than that, however, is the invisible output of the program. Similar to the forkbombs, but not as catastrophic, the poem generates three (dysfunctional) system processes, each of them being - literally - triggered by one of the three characters of the poem.
This "port" of Carroll's nonsense poem is very well crafted. By adding new dimensions to the text via its algorithmic functions, it is comparable to poems transformed by composers into musical songs.
2. London.pl
Just like Jabberwocky, London.pl is a transcription of a classical English poem to Perl poetry. However, the similarities end here. The source of is William Blake's 1791 poem "London", with the "port" from English to Perl indicated through the filename suffix ".pl". The 1791 poem reads:
London
I wander thro' each chartcr'd street,
Near where the charter'd Thames does flow,
And mark in every fact I meet
Marks of weakness, marks of woe.
In every cry of every Man,
In every Infant's cry of fear,
In every voice, in every ban,
The mind-forg'd manacles I hear.
How the Chimney-sweeper's cry
Every black'ning Church appalls;
And the hapless Soldier's sigh
Runs in blood down Palace walls.
But most thro' midnight streets I hear
How the youthful Harlot's curse
Blasts the new born Infant's tear,
And blights with plagues the Marriage hearse.
While it is syntactically correct Perl code, it still does not
"properly" run because it relies upon an imaginary software components, namely the module "PublicAddressSystem.pm". 58 of the 189 lines contain program code, the rest are comments; to the reader, it looks as if the code were unfinished and parts were missing. Aside from the comments, it contains a definition of what in Perl is called an "anonymous array", i.e. a variable storing several values at once, called "@SocialClass", a database (or, in programmer's lingo: "nested hashtable") "%DeadChildrenIndex", and two sub-programs ("subroutines") "CryOfEveryMan" and "Get_VitalLungCapacity". Thus, London.pl translates what "London" describes into a symbolic machinery. It is an interpretation of the older poem in a double sense: as code executed by a programming language "interpreter", and as a social-political reading of Blake's poem, focusing the subject onto dead children:
"# SYNOPIS and DESCRIPTION
# This Library is for redressing the gross loss to Londons
# Imagination of children
# beaten enslaved fucked and exploited to death from 1792 to the
# present.
# We see this loss in every face marked with weakness or marked
# with woe.
By transcribing and juxtaposing William Blake's walk through the city into a program, the observations and woes turn into a macabre process described within the sourcecode as follows:
# Find and calculate the gross lung-capacity of the children
# screaming from 1792 to the present
# calculate the air displacement needed to represent the public
# scream
# set PublicAddressSystem intance and transmit the output.
# to do this we approximate that there are 7452520 or so faces
# that live in the charter'd streets of London.
# Found near where the charter'd Thames does flow.
The machine described and set into motion via is largely imaginary, given that the code provides only a fragment of the calculation. But exactly through is fragmentation, it gains its monstrosity: A conflation of writing and machinery using the concept of Perl poetry for something unprecedented in literature, at best to be compared to Duchamp's imaginary bridal machines. Written in 2001, London.pl is arguably the most artistically dense and serious Perl poems written since the invention of the genre; it is perhaps the first example of code poetry being more than a formalist and conceptualist in-joke.
by Florian Cramer, posted 06 Jun 2003
|
|
|