Random Poetry and Other Losses                  printed April 17, 1979






















Random Poetry and Other Losses





The Great Quux




















(C) Copyright 1978 by Guy L. Steele Jr.  All rights reserved.

Any similarity of anything in this document to anything in the
real world, except for a satiric purpose, is purely coincidental.





The Great Quux                                                   page
Random Poetry and Other Losses                  printed April 17, 1979


                  BBN Superlisp

           [to be sung to the tune of
             Jesus Christ Superstar]


Every time I look at you I don't understand
Why you think "Do What I Mean" is so cool and grand;
You'd have managed better if you'd thought it through,
Why'd you pick such an awkward way your bugs to undo?
Your hairy feature will not be the last revolution,
It's clear "Mean What I Do" is the ultimate solution!

Don't you get me wrong,
Don't you get me wrong,
Don't you get me wrong, now,
Don't you get me wrong,
I only want to hack,
I only want to hack,
I only want to hack,
I only want to hack.

BBN! BBN! Some people think you're the living end!
BBN! BBN! Some people think you're the living end!
BBN! SuperLISP! Can "Do What I Mean" measure up to this?
BBN! SuperLISP! Can "Do What I Mean" measure up to this?

Tell us what you think about your friends at the top,
Who d'you think besides yourself's the pick of the crop?
Is LISP 1.5 where it's at? Is it where you are?
Does Stanford's LISP have features too or is that just PR?
Do you have the breakpoint scheme that MACLISP is known for,
Or is that just the kind of kludge the user's on his own for?

Don't you get me wrong,
Don't you get me wrong,
Don't you get me wrong, now,
Don't you get me wrong,
I only want to hack,
I only want to hack,
I only want to hack,
I only want to hack.

BBN! BBN! Some people think you're the living end!
BBN! BBN! Some people think you're the living end!
BBN! SuperLISP! Can "Do What I Mean" measure up to this?
BBN! SuperLISP! Can "Do What I Mean" measure up to this?


                        -- The Great Quux
                             (with apologies to
                                Rice and Webber)

(C) Copyright 1973 Guy L. Steele Jr.  All rights reserved.


The Great Quux                                                  page 1
Random Poetry and Other Losses                  printed April 17, 1979


                 Both Ways, Now

           [to be sung to the tune of
                Both Sides, Now]


Decimal digits in a row,
Just set the dials and let 'er go.
The ENIAC was grossly slow --
    I used to code that way,
But then this Fortran came along;
I danced and sang a happy song:
So natural -- what could go wrong?
    I little knew, that day!
I've looked at Fortran both ways, now,
At II and IV, and still somehow,
It's rows of numbers I recall;
I really don't know Fortran at all.

Fortran IV is real good stuff,
But business hackers have it tough;
For them this Fortran's not enough --
    Then Cobol saved the day!
But now I sing a sad refrain;
This Cobol loss is no one's gain,
And writing programs is a pain
    (I get writer's cramp that way!)
I've looked at Cobol both ways, now,
I code in it, and still somehow,
It's FORMAT statements I recall;
I really don't know Cobol at all.

Cobol will for business do;
Accounts and payroll make it through
(And bills for zero dollars too --
    I get them every day!)
But those who hack symbolic frobs
Cannot make do with Cobol jobs,
And now I sing through anguished sobs,
    But Lisp is here to stay.
I've looked at Lisp code both ways, now,
At lambda forms, and still somehow,
It's Cobol statements I recall;
I really don't know Lisp at all.


                -- The Great Quux
                     (with apologies to
                        Joni Mitchell)


(C) Copyright 1974 Guy L. Steele Jr.  All rights reserved.




The Great Quux                                                  page 3
Random Poetry and Other Losses                  printed April 17, 1979


                 A Time for DWIM

           [to be sung to the tune of
                  A Time for Us
       (theme song from Romeo and Juliet)]


A time for DWIM
There'll never be;
   No clever code
   This losing mode
Can UNDO for me.

This "golden hope"
(To be denied)
   Could never
Correctly fix the bugs my programs hide.

A way for bugs
There'll never be
To fix with generality.

So to this DWIM
Let's say farewell;
   The crocks therein
   Prove it can't win
And ring its knell:

Do What I Mean
Is just a ruse --
   It really
Means only: Fix How Teitelman doth Lose!


                -- The Great Quux
                     (with apologies to
                        Rota, Kusik, and Snyder)

(C) Copyright 1973 Guy L. Steele Jr. All rights reserved.

















The Great Quux                                                  page 4
Random Poetry and Other Losses                  printed April 17, 1979


              The Sound of FORTRAN

           [to be sung to the tune of
               The Sound of Music]


My programming day has come to an end, I know,
But one minor bug still restrains me, though,
So back to me desk I stumble,
More coffee I pour in my mug,
And I drink, and I think, and I program
Just one more hack, just one more hairy kludge
To remove that bug.

Machines are alive with the sound of FORTRAN,
With numbers they've crunched for a thousand hours;
They add and subtract to the sound of FORTRAN,
And raise fractions to unheard of powers.

My code's full of REAL statements, INTEGER and COMPLEX too,
        duplicated thrice oe'r,
And so intermixed with the WRITEs and READs
        to cause errors galore;
Arrays are declared of dimension six, but indexed minus two;
Computed GO TOs are last in the range of a DO!

I now recompile my corrected programs;
I know I will get what compiled before --
My code will be blessed with the sound of FORTRAN,
And I'll lose once more.


                -- The Great Quux
                     (with apologies to
                        Rodgers and Hammerstein)

(C) Copyright 1973 Guy L. Steele Jr.  All rights reserved.



















The Great Quux                                                  page 5
Random Poetry and Other Losses                  printed April 17, 1979


                   The HACTRN


Once before a console dreary, while I programmed, weak and weary,
Over many a curious program which did TECO's buffer fill, --
While I pondered, nearly sleeping, suddenly there came a feeping,
As of something gently beeping, beeping with my console's bell.
"'Tis my DDT," I muttered, "feeping on my console's bell:
        Once it feeped, and now is still."

Ah, distinctly I remember that dark night in bleak December,
And each separate glowing symbol danced before me, bright and chill.
Eagerly I wished the morrow; vainly I had sought to borrow
From my HACTRN aid for sorrow -- sorrow for the bugs which fill --
For the strange unknown and nameless bugs which ever all my programs f
        Bugs which now I searched for still.

And the coughing, whirring, gritty fan I heard inside my TTY
Made me with fantastic terrors never known before to thrill;
So that now, to still the beating of my heart I stood repeating,
"'Tis some interrupt entreating DDT to signal me --
Some strange interrupt entreating DDT to signal me --
        Its importance surely nil."

Presently my soul grew stronger: hesitating then no longer
I decided that I would respond to this strange program's call;
TECO, which I then attended, to my soul more strength extended;
With ^Z I ascended, going to my DDT --
V I typed, and answered soon my DDT --
	TECO there, and that was all!

Dumbly at my console peering, as I sat there, wondering, fearing,
Doubting now that any interrupt was ever there to call;
But the silence was unbroken, and my HACTRN gave no token,
And the only sound there spoken from my TTY's whirring fan --
The low and rough and distant sound came from my TTY's whirring fan --
        TECO there, and that was all.

Back into my TECO going, with my pounding heart now slowing,
Soon again I heard a feeping, somewhat louder than before.
"Surely," said I, "surely this is some strange bug of RMS's
Which an interrupt professes, though I have no other job;
Let me then ask DDT if it thinks there's another job --
        'Tis a bug, and nothing more!"

Again I went up to my HACTRN while cold shivers up my back ran
V I typed, my jobs now once more to display.
Only TECO was there listed; though my trembling heart resisted
Yet I willed my hand, insisted, J to quickly type --
To answer this bold query DDT did hesitantly type
	A ghostly "FOOBARJ".





The Great Quux                                                  page 6
Random Poetry and Other Losses                  printed April 17, 1979


From V protected, now, this phantom job, selected
Gave no clue to why it had invoked that former beeping shrill.
"Though," I said, "you're no inferior, I shall act as your superior
And examine your interior, this strange matter to explore."
Then I typed a 0/ this matter further to explore --
        Quoth the HACTRN, ":KILL".

Much I worried -- this outrageous bug might prove to be contagious,
Though thus far it had not seemed to do my TECO any ill:
For we cannot help concurring such a bug would cause a stirring,
Feeping on a console whirring, disappearing then from sight --
An evanescent mystery subjob disappearing then from sight
        With no clue but ":KILL"!

But my HACTRN, swapping, running, gave no further sign of cunning
By this unknown phantom, which was in a thirty second sleep;
None of this I comprehended; to my TECO I descended,
And in terror I pretended that the bug had gone away --
I pretended that for good the mystery bug had gone away --
        When my console gave a feep.

Now I quickly, hoping, praying, started up a PEEK displaying
All the the jobs and subjobs there which did the system fill:
What I found was quite unpleasant, for there was no FOOBAR present:
Only TECO was there present, underneath my DDT;
I quit the PEEK, and "FOOBARJ" typed out my DDT --
	Then quoth the HACTRN, ":KILL".

But -- this FOOBAR now beguiling all my sad soul into smiling --
I tightly grinned, determined that this glitch should cause nobody ill
Now, into my armchair sinking, I betook myself to linking
Fancy unto fancy, thinking why this unknown phantom job --
Why this grim, ungainly, ghastly, gaunt, and unknown phantom job
        Feeped and did a ":KILL".

This I sat engaged in guessing, but conceived no thought expressing
How a phantom job could sound those strange and ghostly beeps;
This and more I sat divining, with my head at ease reclining,
With the symbols coldly shining at me from the CRT,
With the bright, sharp symbols coldly shining on the CRT --
        Which suddenly gave seven feeps!

Then methought the air grew denser, filled with clouds which grew immenser,
As when under darkened daylight thick and stormy weather brews;
With some bit of hesitation stemming from my trepidation
Again I typed that incantation finding out how much I'd lose --
V I typed again to find how much I'd lose --
	TECO there, and seven FOOs!

"Job!" said I, "with ghostly manner! -- subjob still, if LISP or PLANNER!
Whether accident, or feeping as another hacker wills!
Tell me now why I am losing, why my HACTRN you're abusing,
Which no doubt is of your choosing: echo truly on my screen!"
Then DDT as if in answer echoed quickly on my screen,
        Typing seven ":KILLs".

The Great Quux                                                  page 7
Random Poetry and Other Losses                  printed April 17, 1979


"Job!" said I, "with ghostly manner! -- subjob still, if LISP or PLANNER!
By the ITS above us which the DSKDMP doth fulfill,
I shall be the system's saviour: I shall mend your crude behaviour,
I shall halt your strange behaviour, and thee from the system lock!"
Madly, wildly laughing I made DDT invoke a LOCK,
        And quickly typed thereat -- "5KILL"!

"Be this now our sign of parting, phantom job!" I shrieked, upstarting
As my HACTRN now informed me ITS was going down in 5:00.
"You have run your last instruction and performed your final function!
But, refuting this deduction HACTRN then my TTY grabbed --
To type out yet another message HACTRN now my TTY grabbed --
        Quoth the HACTRN, "ITS REVIVED!"

And the FOOBAR, never sleeping, still is beeping, still is beeping
On the glaring console out from which I cannot even log!
And other happenings yet stranger indicate inherent danger
When bugs too easily derange or mung the programs of machines;
When programs too "intelligent" start taking over the machines:
        Is this the end of AutoProg?


                                -- The Great Quux
                                     (with apologies to
                                        Edgar Allan Poe)






Notes for those not familar with the terms in this poem:

TTY ("titty")  = any  terminal, not  necessarily a  teletype (in  this
        case, a CRT); in particular, a terminal associated with and in
        control of a job tree  (see "DDT" below).  The terminal may be
        passed up and down the job tree; at any point in time only one
        job in the  tree may use the tree's TTY.   When ^Z is typed on
        the TTY, the system intervenes, stopping the job which has the
        TTY,  and interrupts that  job''s superior in  the tree, which
        may then grab the TTY from the inferior job.


DDT ("dee  dee tee") = HACTRN ("hack-tran") =  top level debugging and
        job controlling procedure,  capable of controlling up to eight
        simultaneous  jobs  (which   may  themselves  be  DDTs!)   and
        performing other miscellaneous functions.  HACTRN specifically
        denotes a DDT at the top  of a job tree, while DDT is the more
        general  term.  The  two terms  refer to  the same  job in the
        poem, and  are  thus treated  as  synonymous.  Note  that  DDT
        requires its subjobs to have unique names for obvious reasons;
        hence the concern over seven jobs all named FOO.




The Great Quux                                                  page 8
Random Poetry and Other Losses                  printed April 17, 1979


PEEK =  a program  similar to  the SYSTAT  of certain  PDP-10  monitor
        systems  of  dubious  quality.  PEEK  is  actually  much  more
        versatile, giving information in any of some dozen modes, such
        a  job  status,  DECtape  status,  Arpanet  sockets,  terminal
        status,  and scheduler variables and  statistics.  It also has
        provisions for maintaining a continuously updated display on a
        CRT, and for line printer usage.


TECO ("teeko") = text editor  and corrector (that is, the good version
        of several versions of TECO which are floating around).


:KILL  ("colon kill") = message  typed out by DDT  whenever it kills a
        subjob.   Note that  subjobs, if  running, may  request DDT to
        kill  themselves.  If the  job does  not have the  TTY when it
        makes such  a request, DDT merely rings  the TTY's bell (which
        on the  CRT in  the  poem above  is a  particularly  obnoxious
        flavor of "beep"), and prints nothing until you ascend to DDT,
        and perhaps type J (see below).


LOCK  =  utility  program, which  interprets  the  particular  command
        "nKILL" to mean "please  bring the time-sharing system down in
        n minutes"  (where it is required that  n5).  The system will
        then go  down at  the prescribed  time unless  the request  is
        countermanded with a "REVIVE" request.


ITS = Incompatible Timesharing System, the good timesharing system for
        the PDP-10.


DSKDMP ("disk dump") =  program used to, among other things, bootstrap
        ITS into a running state.


 = "altmode"; read it as such to preserve the meter.


V = command to DDT,  requesting it to print out the names of all its
	subjobs.


J = command to DDT, asking that it select the job which has requested
	attention  so  that  it  may  be  dealt  with.   DDT  responds
	"jobnameJ" so that you will know which job it was.


^Z  ("control zee") = command  to ITS to stop  the job which currently
        has  the TTY,  and interrupt  the next  higher job  in the job
        tree.  Ordinarily this has the effect of returning to DDT.




The Great Quux                                                  page 9
Random Poetry and Other Losses                  printed April 17, 1979


0/ ("zero  slash")  = command  to  DDT, asking  it  to print  out  the
        contents  of  location  zero of  the  selected  subjob.   This
        operation is theoretically transparent to the subjob itself.

RMS = Richard M.  Stallman,  who does an admirable job of keeping DDT,
        as well as many other programs, relatively bug-free.

(C) Copyright 1973, 1974 Guy L. Steele Jr.  All rights reserved.
















































The Great Quux                                                 page 10
Random Poetry and Other Losses                  printed April 17, 1979


A Collection of Nursery Rhymes and Other Random Losses
        by The Great Quux, RMS, and Anonymous


A monitor system named DOS
Became superseded by OS.
   It's not hard to guess
   Why the consequent mess
Caused programmers all to scream "S.O.S."

                -- TGQ May 1973

IBM had a PL/I,
   Its syntax worse than JOSS;
And everywhere this language went,
   It was a total loss.

                -- TGQ June 1973

System/3!  System/3!
See how it runs! See how it runs!
   Its monitor loses so totally!
   It runs all its programs in RPG!
   It's made by our favorite monopoly!
System/3!

                -- TGQ October 1973

RRR of x
   always equals 1.
R is dimension, RR, rank.
   APL is fun!

                -- RMS December 1973

      RRRboat
      gentlystream
      4 7R"merrily"
      life
value error
      life
      )

                -- Anon January 1974

Hey, diddle, diddle the overflow pdl
   To get a little more stack;
If that's not enough then you lose it all
   And have to pop all the way back.

                -- TGQ January 1974

(C) Copyright 1974 Guy L. Steele Jr.  All rights reserved.



The Great Quux                                                 page 11
Random Poetry and Other Losses                  printed April 17, 1979


        It  may surprise  some people to  know that the
PDP-10 instruction set,  far from being innovative, was
developed strictly along  classical lines.  Many of the
operation codes, for example, come from the Latin.  Two
fifth-declension   nouns  (declinable   only   in   the
singular) are as follows:

Nominative:             moves          hrres
Genitive:               movei          hrrei
Dative:                 movei          hrrei
Accusative:             movem          hrrem
Ablative:               move           hrre


        There  are, of  course, also  hlres, hrles, and
hlles.   These all derive from  the corresponding verbs
hrro, hrlo,  etc.  (second conjugation, semi-deponent.)
Thus when  playing chess  with MacHack  one might  say,
"movem hrro," that is, "I am hurrying a move."

        Similarly, the code  jffo ("i am jffing") comes
from  a defective  Latin verb  dating from  an era when
ancient  computers marked time  by periodically pushing
counters onto a wire.   The number of empty spaces left
on the  wire could easily be  counted by an instruction
very like  jffo,  from which  could be  calculated  the
number of "jiffies" (clock ticks; 1 jiffy = 40 seconds)
which had passed; hence the name.

        Teutonic languages have also lent several words
to the  PDP-10: rot ("red") derives  from the pieces of
decayed redwood traditionally used as temporary markers
in  older German manual shift  registers; while ash was
commonly the result  when an older German got disgusted
and threw his shift register in the fire.


                      --- The Great Quux
                              (with apologies to no one)

(C) Copyright 1973 Guy L. Steele Jr.  All rights reserved.















The Great Quux                                                 page 12
Random Poetry and Other Losses                  printed April 17, 1979


                 PLIate's Dream

           [to be sung to the tune of
                 Pilate's Dream
          from Jesus Christ Superstar]


I dreamed I was a brand new language,
The ultimate in speed;
I handled strings as fast as RPG,
And twice as easily.

I crunched numbers like COBOL,
Trees like APL,
And FORTRAN loaned its FORMATs and GO TOs,
The cause of many screws.

And then a man said, "Now we'll write a monitor,
With Multics what it's for.
Our project is begun;
We'll code in PL/I."

Then I saw thousands of coders
Searching for their bugs,
And then I heard them mentioning my name
And leaving me the blame.


                -- The Great Quux
                     (with apologies to
                        Rice and Webber)

(C) Copyright 1973 Guy L. Steele Jr.  All rights reserved.























The Great Quux                                                 page 13
Random Poetry and Other Losses                  printed April 17, 1979


As I was passing Project MAC,
I met a Quux with seven hacks.
Every hack had seven bugs;
Every bug had seven manifestations;
Every manifestation had seven symptoms.
Symptoms, manifestations, bugs, and hacks,
How many losses at Project MAC?

                -- TGQ April 27, 1974



(c) Copyright 1974 Guy L. Steele Jr.  All rights reserved.











































The Great Quux                                                 page 14
Random Poetry and Other Losses                  printed April 17, 1979


Reclaimer, spare that tree!
Take not a single bit!
It used to point to me,
Now I'm protecting it.
It was the reader's CONS
That made it, paired by dot;
Now, GC, for the nonce,
Thou shalt reclaim it not.

That old familiar tree,
Whose CDRs and whose CARs
Are spread, o'er memory --
And wouldst thou it unparse?
GC, cease and desist!
In it no freelist store;
Oh spare that moby list
Now pointing throughout core!

It was my parent tree
When it was circular;
It pointed then to me:
I was its CADADR.
My CDR was a list,
My CAR a dotted pair --
That tree will sore be missed
If it remains not there.

And now I to thee point,
A saving root, old friend!
Thou shalt remain disjoint
From freelists to the end.
Old tree! The sweep still brave!
And, GC, mark this well:
While I exist to save,
Thou shan't reclaim one cell.


                -- The Great Quux
                     (with apologies to
                        George Pope Morris)

(C) Copyright 1973 Guy L. Steele Jr.  All rights reserved.














The Great Quux                                                 page 15
Random Poetry and Other Losses                  printed April 17, 1979


          I Could Have Tooled All Night

           [to be sung to the tune of
          I Could Have Danced All Night
               from My Fair Lady]


Tool! Tool! I feel like such a fool!
All term I goofed off; I can't catch up now!
Sleep! Sleep! I've got to get some sleep!
Tooling wouldn't help me anyhow!

I could have tooled all night,
   I could have tooled all night,
      and still have tooled some more;
I could have been absurd,
   Learned all my Latin verbs,
      It wouldn't raise my score.
I can't remember all those theorems,
      And all those facts from my mind flee --
I only know exams,
   Are why one usually crams,
     But tooling never could help me!

I could have tooled all night,
   I could have tooled all night,
      And memorized each book;
I only now regret,
   My sections never met,
      And lectures I forsook.
I cross my fingers now in terror,
      I only hope some luck's with me --
But had I tooled or not,
   I'd still be on the spot,
      My goofing off deserves the E!


                        -- The Great Quux
                             (with apologies to
                                Lerner and Loewe)

(C) Copyright 1974 Guy L. Steele Jr.  All rights reserved.














The Great Quux                                                 page 16
Random Poetry and Other Losses                  printed April 17, 1979


I think that I shall never see
A matrix lovely as a tree.
Trees are fifty times as fun
As structures a la PL/I
(Which Dijkstra claims are too baroque).
And SNOBOL's strings just can't compare
With all the leaves a tree may bear.
And COMIT strings are just a joke.
Vectors, tuples too, are nice,
But haven't the impressive flair
Of trees to which a LISP is heir.
A LISPer's life is paradise!

Many people think that JOSS
And others, too, are strictly boss;
And there are many BASIC fans
Who think their favorite language spans
All that would a user please.
Compared to LISP they're all a loss,
For none of them gives all the ease
With which a LISP builds moby trees.

RPG is just a nurd
(As you no doubt have often heard);
The record layouts are absurd,
And numbers packed in decimal form
Will never fit a base-two word
Without a veritable storm
Of gross conversions fro and to
With them arithmetic to do.
And one must allocate the field
Correct arithmetic to yield,
And decimal places represent
Truncation loss to circumvent:
Thus RPG is second-rate.
In LISP one needn't allocate
(That boon alone is heaven-sent!)
The scheme is sheer simplicity:
A number's just another tree.
When numbers threaten overflow
LISP makes the number tree to grow,
Extending its significance
With classic treelike elegance.
A LISP can generate reports,
Create a file, do chains and sorts;
But one thing you will never see
Is moby trees in RPG.

One thing the average language lacks
Is programmed use of push-down stacks.
But LISP provides this feature free:
A stack - you guessed it - is a tree.
An empty stack is simply NIL.
In order, then, the stack to fill


The Great Quux                                                 page 17
Random Poetry and Other Losses                  printed April 17, 1979


A CONS will push things on the top;
To empty it, a CDR will
Behave exactly like a pop.
A simple CAR will get you back
The last thing you pushed on the stack;
An empty stack's detectable
By testing with the function NULL.
Thus even should a LISPer lose
With PROGs and GOs, RETURNs and DOs,
He need his mind not overtax
To implement recursive hacks:
He'll utilize this clever ruse
Of using trees as moby stacks.
Some claim this method is too slow
Because it uses CONS so much
And thus requires the GC touch;
It has one big advantage, though:
You needn't fear for overflow.
Since LISP allows its trees to grow,
Stacks can to any limits go.

COBOL input is a shame:
The implementors play a game
That no two versions are the same.
And rocky is the FORTRAN road
One's alpha input to decode:
The FORMAT statement is to blame,
But on the user falls the load.
And FOCAL input's just a farce;
But all LISP input comes pre-parsed!
(The input reader gets its fame
By getting storage for each node
From lists of free words scattered sparse.
It parses all the input strings
With aid of mystic mutterings;
From dots and strange parentheses,
From zeros, sevens, A's and Z's,
Constructs, with magic reckonings,
The pointers needed for its trees.
It builds the trees with complex code
With rubout processing bestowed;
When typing errors do forebode
The rubout makes recovery tame,
And losers then will oft exclaim
Their sanity to LISP is owed -
To help these losers is LISP's aim.)

The flow-control of APL
And OS data sets as well
Are best described as tortured hell.
For LISPers everything's a breeze;
They neatly output all their trees
With format-free parentheses
And see their program logic best


The Great Quux                                                 page 18
Random Poetry and Other Losses                  printed April 17, 1979


By how their lovely parens nest.
While others are by GOs possessed,
And WHILE-DO, CASE, and all the rest,
The LISPing hackers will prefer
With COND their programs to invest
And let their functions all recur
When searching trees in maddened quest.

Expanding records of fixed size
Will quickly programs paralyze.
Though ISAM claims to be so wise
In allocating overflow,
Its data handling is too slow
And finding it takes many tries.
But any fool can plainly see
Inherent flexibility
In data structured as a tree.
When all their efforts have gone sour
To swell fixed records, losers glower.
But list reclaimers hour by hour
By setting all the garbage free
Yield CONSequent capacity:
Thus trees indefinitely flower.
(And trees run on atomic power!)

To men of sensibility
The lesson here is plain to see:
Arrays are used by clods like me,
But only LISP can make a tree.


            - The Great Quux
                (with apologies to
                   Joyce Kilmer)


(C) Copyright 1973 Guy L. Steele Jr.
    All rights reserved.


















The Great Quux                                                 page 19
Random Poetry and Other Losses                  printed April 17, 1979


               Alphabetical Order


MACLISP Ben PDP-6 (may its core increase!)
Awoke one jiffy from a deep dream of trees
And saw, by parsing out a TTY: .FILE. (DIR)
Scanning all the jobs, within the system here,
A PEEK, displaying on a CRT of gold;
A low USRTIM made the MACLISP bold:
And to the PEEK by CLI: a message sent,
"What displayest thou?" The message to it quickly went,
And the PEEK through CLA: a message did transduce,
And answer'd "The names of programs of practical use."
"And is mine one?" sent MACLISP. "Nay, not so,"
Replied the PEEK. MACLISP ran more slow
But swapping still. "I pray thee then," it sent,
"Display me as one that helps to systems implement."
The PEEK :KILLed and vanished. The next time
It ran again, in a display mode sublime,
It showed the names the Grim File Reaper had blessed,
And lo! MACLISP's name was thirty-seventh.


                -- The Great Quux
                     (with apologies to
                        Leigh Hunt)

(C) Copyright 1973 Guy L. Steele Jr.  All rights reserved.




























The Great Quux                                                 page 20
Random Poetry and Other Losses                  printed April 17, 1979


                  Lambda Bound

           [to be sung to the tune of
                 Homeward Bound]


I'm just a little value cell,
And I play my special role so well --
        Hmmm --
Serving as a global switch
To predicate some system glitch;
But some strange value -- who knows which? --
Could cause me functions to bewitch!
        Lambda bound!
I wish I was
        Lambda bound!
Bound, so no SETQ's get me;
Bound, so quits will reset me;
Bound, where I can forget my
        Top-level value.

It's hard to catch those system screws:
'Most any value causes me to lose --
        Hmmm --
Each atom looks the same to me,
Whose interned name I cannot see,
And every NIL and every T
Reminds me that I long to be
        Lambda bound!
I wish I was
        Lambda bound!
Bound, so no SETQ's get me;
Bound, so quits will reset me;
Bound, where I can forget my
        Top-level value.





















The Great Quux                                                 page 21
Random Poetry and Other Losses                  printed April 17, 1979


Next time I'll have a MAR break set
And try to catch each clobber threat --
        Hmmm, mmmm --
The next covert attempt to mung
Will cause the MAR break to be sprung,
But then the poor LISP will be hung
Because I'm not as I have sung:
        Lambda bound!
I wish I was
        Lambda bound!
Bound, so no SETQ's get me;
Bound, so quits will reset me;
Bound, where I can forget my
        Top-level value.


              -- The Great Quux
                   (with apologies to
                      Paul Simon)

(C) Copyright 1974 Guy L. Steele Jr.  All rights reserved.



































The Great Quux                                                 page 22
Random Poetry and Other Losses                  printed April 17, 1979


      Song of the Certified Data Processor

           [to be sung to the tune of
                When I Was a Lad
              from H.M.S. Pinafore]


When I was a lad I served a term
As office boy to a computing firm.
I polished the handle of the big front door
And swept up all the card chips from the keypunch floor.
        He swept up all the card chips from the keypunch floor.
I swept that chad so carefullee
That now I am officially a CDP.
        He swept that chad so carefullee
        That now he is officially a CDP.

My office job was a heavy load,
So I went to night school and learned to code.
I was soon coding payroll in RPG
And compiled all my programs on a System/3.
        He compiled all his programs on a System/3.
I compiled my code so gay and free
That now I am officially a CDP.
        He compiled his code so gay and free
        That now he is officially a CDP.

I wrote efficient code each day,
But I missed the benefits of higher pay.
I asked for a raise, but my boss said, "See,
Youse ain't good enuf because youse ain't a CDP."
        "He ain't good enuf because he ain't a CDP."
So I vowed that someday I would see
Myself become officially a CDP.
        So he vowed that someday he would see
        Himself become officially a CDP.

For nineteen weeks I worked to cram
All the textbooks for the CDP exam.
Then I took the exam and was shocked to see
That the questions didn't seem to mean a thing to me.
        All the questions didn't seem to mean a thing to him.
So I wrote down some answers randomly,
But I gave up all my hopes to be a CDP.
        So he wrote down some answers randomly,
        But he gave up all his hopes to be a CDP.










The Great Quux                                                 page 23
Random Poetry and Other Losses                  printed April 17, 1979


Well, those random answers worked out fine;
They scored my results at the top of the line.
Now I am a consultant here,
And I make at least a hundred thousand bucks each year.
        And he makes at least a hundred thousand bucks each year.
But I only command such a salary
Because I am officially a CDP.
        But he only commands such a salary
        Because he is officially a CDP.

Now, office boys, whoever you may be,
If you want to rise to the top of the tree,
Just go and take the CDP exam,
And no matter what you answer they won't give a D--n!
        And no matter what you answer they won't give a D--n!
Just answer it all as random as you please
And you will all officially be CDPs.
        Just answer it all as random as you please
        And you will all officially be CDPs.


                      -- The Great Quux
                           (with apologies to
                              Gilbert and Sullivan)

(C) Copyright 1974 by Guy L. Steele Jr.  All rights reserved.






























The Great Quux                                                 page 24
Random Poetry and Other Losses                  printed April 17, 1979


A pile of stuff written in April, 1976


April 1, 1976


[1] Notes taken in 6.015 (Signals and Systems)

On Matched Filters:

The ancients used potions, their love schemes to hatch;
They knew the right philtre encouraged a match.
When a lad made a wink at a comely young lass,
The philtre she used was designed for a pass.
The signals to use were determined by philtre;
The two peaked as one, for the lad could not jilt her.
The two thus entwined, so that noise did not bother
(Excepting that made by the groom's in-law mother...)

On Time Division Multiplexing:

To get the most use from your broadcasting medium:
Activity is, strangely, relieved by the TDM.


[2] Notes taken in 6.893 (Machine Perception and Manipulation)


"...   and so  the line  connecting the points  Ga and  Gb in gradient
space, which correspond  to the planes A and B  in image space, is the
set of points representing  positions of a plane see-sawing around the
line of intersection between A and B..."

Now I see; then I saw;
The planes of a cube have a linear law.
The endpoints of lines in the gradient space
Show where the see-sawing planes fall into place.

Macrakis, sitting beside me, half-asleep: "COFFEE!"

Caffeine doesn't help me composing this verse.
It only awakes me; my thoughts all disperse.
One thinks better dozing, collapsed in a heap;
Why else are most students in classes asleep?

"...   the lines in gradient  space are perpendicular to  the lines in
image  space.   This  doesn't  provide  enough  constraints,  however.
Additional  equations may  be derived from  the intensity information.
One  can get  one or  more solutions for  a trihedral  vertex.  If the
vertex  has more  than three planes,  then there  are more constraints
than necessary, and one may have to resort to least squares..."





The Great Quux                                                 page 25
Random Poetry and Other Losses                  printed April 17, 1979


Alone, the geometry isn't enough:
You also require intensity stuff.
We get enough data if points are tri-planed,
While four leave the gradients over-constrained.


[3] Some Higgledy-Piggledies


For those  not familiar with this verse  form: A Higgledy-Piggledy has
eight lines.  All but the  fourth and eighth lines are double dactyls,
while  the fourth and eighth  are a dactyl plus  an upbeat.  The first
line is nonsense; the second, a  name; the sixth must be a single six-
syllable  word;  and  the   fourth  and  eighth  must  rhyme.   It  is
permissible  for the first line  to make sense, or  for the fifth line
instead of the sixth to be  all one word.  If too many rules are bent,
the  verse  is  just  called a  double-dactyl  verse,  rather  than  a
Higgledy-Piggledy.
[a] If you write (DO ((X NIL X) ...) ...) instead of the
    usual (DO ((X NIL) ...) ...), i.e. you explicitly step
    a variable by its own value, NCOMPLR (the MacLISP compiler)
    may get confused, and in any case generates inessential code.

Higgledy piggledy,
Project MAC NCOMPLR
Still is committing its
DO-stepping sins:
Though it may seem somewhat
Counterintuitive,
FOO stepped by FOO screws; de-
Faulting it wins.

[b] You can't do EQ on numbers and hope to win.  Recall also
    the famous test in which NCOMPLR produced better numerical
    code than the DEC FORTRAN compiler (Fateman 1973).

Quaxity quuxity,
MacLISP and NCOMPLR
Have a convention that
Makes losers freak:
Integers allocate
Hyperefficiently,
Bettering FORTRAN, but
Screwing up EQ.












The Great Quux                                                 page 26
Random Poetry and Other Losses                  printed April 17, 1979


[c] As usual, taking a DWIM view of InterLISP.

Quaxity quuxity,
Teitelman's InterLISP
Has a DWIM feature that's
Really a screw;
MacLISP has evident
Superiority,
Letting its customer
Mean what he do.


April 2, 1976

    Though NEWIO has been around for many months,
    few people use it.  I wonder why?

Quaxity quuxity,
TGQ's NEWIO
Has many functions that
No one can grok:
Documentation is
Incomprehensible;
GLS will explain it, but
Still it's a crock.


April 3, 1976

[a] NIL leads a double life in LISP.

Quaxity quuxity,
NIL the atomic one
Acts like a wavicle,
Seemingly twin:
Not just the inverse of
Verisimilitude;
Also the inverse of
Where lists begin.

[b] I am getting weary of bicentennial parading by industry.
    "Bicentennial Minutes" now appear not only on television,
    but on milk cartons and beer cans.

Quaxity quuxy, A-
Merican businessmen
Use bicentennial,
Profit to gain.
Hope by the time we reach
Quadricentennial
They'll not so plague me -- ad-
Vertisements pain!




The Great Quux                                                 page 27
Random Poetry and Other Losses                  printed April 17, 1979


[c] For SF fans: see Asimov's article on the "peace bomb"
    (contained in his collection "Opus 100").

Quaxity quuxity,
Young Isaac Asimov
Strange thiotimoline's
Secret unfurled.
Cascaded series of
Endochronometers
Brought paradoxical
Floods on the world.

[d] More SF, this time in memory of James Blish:

Quaxity quuxity,
Blish used philosophy
When he was writing "The
Quincunx of Time."
Beeps of Dirac used to
Chronocommunicate
Fostered determinate
Free will sublime.

[e] DJL, computer science type undergraduate, has decided to
    go to MIT grad school in Materials Science.

Quaxity quuxity,
David J. Littleboy
(MIT graduate)
Makes his plans plain.
Leaving the study of
Data-technology,
He prefers seeking ma-
Terial gain.

[f] I once read that space has three dimensions because orbits
    aren't stable in 4-space.

I often have wondered in
What kind of orbit a
Planet proceeds in a
Tesseract space?
Multidimensional,
Hyperelliptical,
Dizzying spacemen in
Trans-solar chase.










The Great Quux                                                 page 28
Random Poetry and Other Losses                  printed April 17, 1979


[g] Finally, let's hear it for quantum mechanics, who service
    small automobiles for today's nuclear family.

Pauli and Heisenberg
Offer two rules for con-
Fused aristocracies,
Quantum domains:
"Egalitarian
Nonexclusivity
Must be forbidden"; "Un-
Certainty reigns."


April 4, 1976

[a] When in Canada, do as the Canadans do...

Quaxiti quuxiti,      Quaxity quuxity,
Remus et Romulus        Remus and Romulus,
Gemini fratres a        Wolf-nourished brothers, were
Lupa aluntur.           Twins, so they say.
Romulus inquit: non     Romulus patiently
Aedificabitur           Founded a city; as
Paucis diebus, sed      He said, "Rome will not be
Roma nascetur.          Built in a day."

[b] Apples grow on trees, but no trees in APLs.

Quaxity quuxity,
Kenneth E. Iverson
Made APL, matrix
Hackers to please,
Not only famous for
Arithmeticity;
Also for characters.
(Wish it had trees!)

[c] Sussman built a hacker for a Ph.D. thesis.  When will someone
    for a thesis build a hacker that builds a hacker?

Quaxity quuxity,
Gerald J. Sussman made
HACKER so famous for
Loopholes it plugs.
Armed with its knowledge of
Entomological
Manifestations, it
Ferrets out bugs.








The Great Quux                                                 page 29
Random Poetry and Other Losses                  printed April 17, 1979


[d] It doesn't take truth to destroy a reputation, but only
    a rumor.  Yet sometimes the nastiest rumor is the truth.
    Consider the one which says EQUIV causes true values (1-bits)
    to complement bits of the other argument...

Quaxity quuxity,
XOR's more famous than
Brother EQUIV, though they've
Similar use.
Uncomplementary
Verisimilitude,
Rumor undoubtedly
Cooked EQUIV's goose.

[e] And why did Napoleon clutch his stomach?  (Mail $1000 and a
    self-addressed, stamped envelope, and we'll send you a jingle
    in 25 words or less.)

Quaxity quuxy, Na-
Poleon Bonaparte
Conquered all Europe, but
What was the use?
Some say the problem was
Megalomania;
Others, he lacked modern
High-platform shoes.

[f] People got excited about BNF, and used it to drive parser
    generators.  But you still can't really tell how to write
    programs in the language.

Quaxity quuxity,
Backus's BNF
Drives a preprocessor,
Generates code.
Parsing is specified
Metasyntactically;
Writing it's easy, but
reading, I'm snowed.

(c) Copyright 1976 by Guy L. Steele Jr.  All rights reserved.















The Great Quux                                                 page 30
Random Poetry and Other Losses                  printed April 17, 1979


                My Favorite Hacks
           [to be sung to the tune of
                          My Favorite Things
            from The Sound of Music]


Circular MAPCAR and ANDCA'd negation,
Indirect JMP auto-incrementation,
Tangled spaghetti embroidered in stacks:
These are a few of my favorite hacks.

Mismatched DEFINE-TERMIN pairs with .QUOTEing,
Misbalanced brackets for macroed remoting,
PDP-6's with chess tourney plaques:
These are a few of my favorite hacks.

LAMBDAs as GO TOs and spooling on TPLs,
Flip-flops and bit drops and TRCE's in triples,
Crufty heuristics that prune minimax:
These are a few of my favorite hacks.

When the bugs strike,
When the disks crash,
When I read this verse,
I simply remember my favorite hacks
And then I feel even worse!

                -- The Great Quux
                     (with apologies to
                        Rodgers and Hammerstein)

(c) Copyright 1976 by Guy L. Steele Jr.  All rights reserved.
























The Great Quux                                                 page 31
Random Poetry and Other Losses                  printed April 17, 1979


NOTES



Circular MAPCAR


        A constant  or periodic series of arguments can  be given to a
mapped function  in LISP by supplying a circular  list to MAPCAR.  For
example:

        ((LAMBDA (C3)
                 (RPLACD C3 C3)
                 (MAPCAR 'CONS C3 THE-LIST))
         (LIST 3))

conses a 3 onto every element of THE-LIST.   Another  way  to use this
hack is to use MAP,  which allows the mapped function  to  splice  new
things into the circular list on the fly.



ANDCA'd negation


        The sequence of PDP-10 instructions

                MOVN A,NUMBER
                ANDCA A,NUMBER
                JUMPE A,FOO


jumps to FOO iff NUMBER is an exact power of two.



Indirect JMP auto-incrementation:


        On  the PDP-11, the  instruction JMP  @(R4)+ can be  used as a
combined subroutine call and subroutine return, using the technique of
threaded code.



Tangled spaghetti


        Spaghetti stacks, as described by Bobrow and Wegbreit.







The Great Quux                                                 page 32
Random Poetry and Other Losses                  printed April 17, 1979



Mismatched DEFINE-TERMIN


        Bizarre effects can be obtained in the MIDAS assembly language
for the PDP-10 by using  .QUOTE  to get  in  mismatched  DEFINE-TERMIN
pairs.  For example:

        DEFINE DEFSYM X/
        IRPS Z,,[X]
        IFNDEF Z,X
        .ELSE [
           $$TEM1==Z
           X
           IFN Z-$$TEM1,.ERR Z MULTIPLY .QUOTE`.QUOTE/DEFINED/`
        ]
        .ISTOP
        TERMIN TERMIN


The multiple .QUOTEs allow used of the  word  DEFINED  in  the  error
message.



Misbalanced brackets


        A standard  MIDAS hack for accumulating text in  a macro to be
assembled at a remote location is:

;initialization:
        DEFINE BNKBLK OP
        OP
        TERMIN                  ;BNKBLK accumulates text.

        DEFINE BLCODE NEWCFT
        BNKBLK [DEFINE BNKBLK OP
        OP]NEWCFT
        TERMIN
        TERMIN                  ;BLCODE adds its arg to the end of BNK

;add some text:
        BLCODE [FOO]            ;add FOO.
        BLCODE [BAR]            ;add BAR (note BLCODE inserts CRLF's,

;assemble what has been accumulated:
        BNKBLK                  ;which expands into ...
;       FOO
;       BAR


This hack depends on the misbalancing of the brackets in BLCODE with
respect to the DEFINE-TERMIN pairs.


The Great Quux                                                 page 33
Random Poetry and Other Losses                  printed April 17, 1979


PDP-6's

        The MIT AI Lab PDP-6 has won  chess  trophies  and  plaques
running Greenblatt's MacHac program.


LAMBDAs as GO TOs

        LAMBDA expressions of no arguments can be used to  simulate
GO TO statements in a  straightforward  manner.   (See LAMBDA:  The
Ultimate Imperative,  Gerald Jay Sussman and Guy L. Steele., M.I.T.
A.I. Lab Memo.)


Flip-flops and bit drops

        If you don't know about these, forget it.


TRCE's in triples

        The sequence of PDP-10 instructions:

                TRCE A,42
                TRCE A,42
                TRCE A,42

exchanges the 40 bit and the 2 bit in accumulator A.


Crufty heuristics

        The alpha-beta technique,  the gamma heuristic (described by
Newborn in his book "Computer Chess"), and others, are used to prune
minimax game trees.


Notes (c) Copyright 1976 by Guy L. Steele Jr.  All rights reserved.


















The Great Quux                                                 page 34
Random Poetry and Other Losses                  printed April 17, 1979


:PDUMP


99 blocks of crud on the disk,
99 blocks of crud!
You patch a bug, and dump it again:
100 blocks of crud on the disk!

100 blocks of crud on the disk,
100 blocks of crud!
You patch a bug, and dump it again:
101 blocks of crud on the disk!

(Repeat ad nauseam...)


-- The Great Quux    2 December 1976


(c) Copyright 1976 by Guy L. Steele Jr.  All rights reserved.




































The Great Quux                                                 page 35
Random Poetry and Other Losses                  printed April 17, 1979


                   ZOOM Poems



            This sequence of verses was written at a time when a party
game  called "Zoom,  Schwartz, Profigliano" had  become popular around
the AI Lab  (as a result of a trip to  Talbot House in January, 1977).
For  some reason Marilyn Matz  didn't like the game,  and her standard
response  to "Zoom!"  was  "Bitch!".  Most of these  verses were jokes
sent  to Marilyn  and  other  interested parties.   They  all  contain
acrostics.


Zebras slinking in the night
On twinkling hooves betray their flight.
Oh, would that tigers, burning bright
Might eat them, get them out of sight!
                        -- 13 May 1977 14:55

Zealous though a hacker be,
Obnoxious bugs cavort with glee.
One poor, defeated hacker shrugs:
May be no way to kill dem bugs!
                        -- 13 May 1977 16:47
Stupid the furor which AI detractors
Collectively raise over Weizenbaum's book.
Hackers will always, I think, remain hackers, and
Weizenbaum's slander has REAL hackers shook.
All the real hackers know hacking's a hobby;
Randoms are those whom computing consumes.
Terribly artful the well-hacked-up frobbie, but
Zany the work of thee fools Joe assumes!
                        -- 13 May 1977 17:00

[A lighthearted  reference to  the chapter  on compulsive  hacking  in
Prof.  Joseph Weizenbaum's  interesting book "Computer Power and Human
reason".]



















The Great Quux                                                 page 36
Random Poetry and Other Losses                  printed April 17, 1979


Perhaps the best way to explain my position
Relies on the beauty of LISP.
Orthogonal issues, obscured by the syntax,
Frightfully kludgy (I say with derision),
Ignore, but usee parens, so crisp.
Green giants (I'm rooting for bagels, you see --
Lox, perhaps also, particularly)
I think, are the greatest of users.
A tiny compiler has no chance of winning;
No smarts, it's a bag-biter from the beginning,
One of the greatest of losers!
                        -- 13 May 1977 17:11

[There  are some  involved puns in  this last  one.  Note particularly
that  "green giant"  is  an  inside  term means  an  NCOMPLR  (MacLISP
compiler)  running interpretively,  and also  the pun  on "green giant
rutabagas", a favorite phrase around the lab.]

[Sent to Marilyn:]
Before you complain,
I Humbly maintain
That poetry's loss is yet hackerdom's gain.
Clearly these verses are versus your pleasure; I
Hope you'll feel free to respond in full measure!
                        -- 13 May 1977 17:20

Tightly zipped her garish pantsuit,
Hurried on, electric, royal,
Eating of a rancid orangefruit,
Grasping Mars' own rapier foil
Runs Sabrina, young, inchoate,
Eager child, to stop Giganto.
Anger hers, now under loquat
Trees waits, silent, incognito.
Quiet, armed she now springs ambush;
Ugly runs the monstrous nebbish.
Ugly trash this awful onrush --
Xebecs, Zebras read no rubbish!
                        -- 13 May 1977 20:16

[Allow me to draw your  attention to the initial letters of the first,
second, penultimate,  and last  words  on each  line; they  form  four
acrostics.   The last  two  lines  are  a meta-comment  on  the  verse
itself.]

(C) Copyright 1977 by Guy L. Steele Jr.  All rights reserved.










The Great Quux                                                 page 37
Random Poetry and Other Losses                  printed April 17, 1979


Some Random Verses




There was in ITS an escape code (whose name was DQOT) used internally
in  the character streams  for terminal output  which was undocumented
for some reason.  A call went out for jingles in 25 words or less.

DQOT'S myster-
ious and very weir-
d; it quotes another char-
acter, as noted where?
                -- 1 September 1977


Es schneit, es schneit
With all its might!
I say, der Schnee
has come today!
                -- 5 December 1977

(C) Copyright 1977 by Guy L. Steele Jr.  All rights reserved.

































The Great Quux                                                 page 38
Random Poetry and Other Losses                  printed April 17, 1979


Written in a Recitation (8.321 Quantum Mechanics I)
        at MIT, 11:30 AM 30 September 1977


October Eve's
 September morn
Is warm and dry
 And I, forlorn:
Alone I sit
 Amidst my friends
In heat of day
 That never ends.
The heat I do not mind
 So much;
It's countered by
 The wind's soft touch --
The dryness, though,
 Is more severe;
It parches throat,
 And eye, and ear.
The heat is Nature's way
 Of keeping
Man to frequent
 Fall-asleeping;
But never desert wind
 So dry
As chalkboard dust
 (Square root of pi
Times sigma [i from
 One to N]
Of alpha-eigenket,
 And then...)
For when the sun
 Beats down its worst
A little water
 Quenches thirst.
But Man's devised
 The dryest yet:
A dryness
 Nothing real can wet,
For heat with weather
 Correlates,
But dryness --
 When we recitates!

        -- The Great Quux

(c) 1977 Guy L. Steele Jr.  All rights reserved.








The Great Quux                                                 page 39