Index  Comments

The Eunuchs

Once during my nightly typing, I was hacking, also griping,
About interfaces poor and broken from library I'd to fight--
While I blinked, nearly drying, suddenly there came a crying,
From my program gently dying, dying of assertion plight.
``'Tis a tiny flaw,'' I muttered, ``causing this assertion plight--
I'll inspect and make it right.''

Oh, distinctly I needn't know, my mechanical records show
This happened not very long ago, in an artificial night.
Angrily I wanted binding; manuals I'd scoured, finding
No reasons for stack unwinding--unwinding as if in fright--
As if in recognizing tainted system underlying fright--
Made so hard to be made right.

And the gentle, black, sharply-kerned drawing of each Latin letter
Shone back--thrown back cursed writings causing so many hackers' plight;
So that, to stop from retreating again, I sat repeating,
``'Tis a tiny flaw of binding shown to me in black and white;
Shown to me in a vile terminal, written in black and white;
Easily found and made right.''

At that point it was inspected; by my wits was I directed.
``Flaw,'' I thought, ``of binding or prototype against which I fight;
Though the fact is this caused crying, from my program gently dying,
Exception raised from lying, lying to report such plight.''
And were it not there I would have suspected there be no plight.
But there were for it was right.

While from package body drinking, bored I sat there wondering, thinking,
Doubting my binding despite being a meagre and brief sight;
Later silence was broken, as that thinking showed one token,
Rather absence of one token, that three letter absence ``out''
This I noticed; changes were now written back by that ``out''--
I'd thought then it would be right.

Back into compiler turning, all my code within it churning,
Beforehand I would find a flaw somewhat greater than a slight.
``Surely,'' thought I, ``surely that is but a simple syntax mistake;
Let me find, then, whereat break is, and remove this flaw from sight--
Let me get this over with and remove this flaw from my sight!
'Tis minor; I'll make it right!''

Open here I made the files, when, with many a gurgle and wiles,
Stepped through screen some sickly eunuchs of the stupid years of blight;
Not one invariant said they; not a minute thought or proved they;
But, with faces sad or gay, sat behind my machine's light--
Sat upon ISO standards just behind my machine's light--
Sitting silent, with lips tight.

These sickly eunuchs were downing my red lips into frowning,
By the bones and blood they wore over their naked skin so white.
``Through twisted forms true, I do know you,'' I said, ``and now I'm blue.
Disfigured muscles aid me in knowing ye surely have no might--
And still yet I'm bound, by you I'm found, without anything like might!''
From the Eunuchs, ``Bind it right.''

Again about my profession these eunuchs made me to question,
For they desire correct binding--correct almost out of spite;
Since for the system's own existence is one of but subsistance
They've even crushed resistance, by using thousands of men's might--
But no amount of effort will then properly use that might.
They dare demand something right?

But the eunuchs sat uncaring with how my binding was faring,
For broken system bindings they could cope with every night.
My sanity would be founded--to editor I was bounded--
But again I would be hounded by demons hiding from sight--
By not spirit but demons of the machine hiding from sight.
The Eunuchs said, ``Bind it right.''

Soon I found the reason to be caused by address access treason,
``Doubtless,'' I knew, ``pass address, not small number, to make it right.
I know Ada does it better, wasting not a single letter,
Returning result to fetter compiler a sixteen write.
I've seen it and know it, to address, sixteen will always write.
And this then makes it ``right.''''

Yet these eunuchs still were downing my red lips into frowning,
I took a break and turned away, with my red lips still kept tight;
And, while I took to my thinking, my compiler took to linking,
Program unto storage sinking, wondering if I'll get assertion plight--
Will this dark, stupid, dense, binding again give assertion plight?
None of this nonsense is right.

I would no longer be guessing, with these semantics expressing
Just binding through which UDP packets may be put in flight;
I simply want that my program should send a simple datagram,
That I may not give a damn once it travels out of my sight,
That I may send packets and not fret once they go out of sight,
Oh, how decent, once made right!

I saw issue in places, from Ada's package, Interfaces,
With array type holding characters in ways I suppose are right.
Angry I cried, ``If binding be pure, then copying I inure,
Which array sliding can't cure, I must correct this flaw tonight;
I'll use equivalent type and correct this flaw tonight!''
From the Eunuchs, ``Bind it right.''

``Virus!'' I said, ``work of fools!--virus wasting my memory pools!--
One change from character to byte prevents your type system blight,
From programs further affecting and, from here on out ejecting,
From braindamage redirecting, further programs in my sight--
I'll place you in a box in a box and keep you out of my sight!''
Again, Eunuchs, ``Bind it right.''

``Virus!'' I said, ``work of fools!--virus wasting my memory pools!--
By the mathematics binding all machines, I'll tame you tonight!
What I want, with no more racket, is to simply send a packet,
And later still I want to ACK it, with no more of this fright--
I'll tame you here and once and for all and no longer feel this fright!''
From the Eunuchs, ``Bind it right.''

``Okay, I can agree, with you sickly eunuchs once, and with glee--
For now I've boxed you and from here and now ye never will see light!
Finally I see it working, no longer broken nor shirking
From its duty without quirks, sing I from this poem tonight!
Finally, finally, finally, I watch it work tonight!''
Not the Eunuchs, ``Bound it right.''

Now the eunuchs, expertly bound, in box are found, in box are found
In this library I today release from my lonely sight;
These Ada types represent by allowing for no dissent,
But this library's no present holding eunuchs oh so tight,
And I think I heard voices coming from that box shut so tight.
I think I heard ``Bound to fight!''

The explanation

This poem is a parody of Edgar Alan Poe's ``The Raven'' and partially inspired by ``The HACTRN'' and obviously describes loosely what I did as I was writing the library. I was almost done, when fixing the few remaining flaws: improperly sending an integer pointer as the integer itself; the lack of an out parameter mode having a record change not be written; and the Interfaces.C.Char_Array type being inappropriate, as the type difference prevented array sliding or conversion from covering over that.

The integer pointer is used for a size parameter, which is always sixteen in this case; Ada uses the out parameter mode to express the same idea better. I originally modelled some of the parameters on the C language side as in, not in out, and this led to results being improperly ignored. Finally, I wanted to write a pure C language binding, as it were ugly regardless, but it would require copying, as the character array type is incompatible with an octet array type; thus I used a compatible type.

Here is the package specification, the package body, and an echo server.