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.
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
© 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 1)