Welcome to the Dick Feynman Memorial Cabal of the Discordian Society!
I am Mark-Jason Dominus, Grand Vizopteryx of the Cabal.
On 24 April I was in the video rental place, and I gave the lady my last name, and she asked me `Mark?', and I said yes. She said ``It says `Yark' here. I'll fix it.''
I was delighted. ``Yark?'' I cried. ``Excellent! Leave it.''
Such dada wonderfulness cannot be ignored. Henceforward, the Grand Vizopteryx will be known as Yark Dominus.
We now return you the the essay already in progress.
I am Yark Dominus, Grand Vizopteryx of the Cabal.
I am, among other things, a computer programmer.
I think programming is a good discipline for Discordians.
Many people are surprised by this, since computer programs supposedly exhibit a high degree of organization and order, and people think of computer programming as an essentially aneristic task.
But if you have ever programmed professionally, you know an interesting truth of programming: In a well-designed computer program, No two components are alike, or even similar.
Fred Brooks says:
Software entities are more complex for their size than perhaps any other human construct because no two parts are alike. If they are, we make the two similar parts into a subroutine -- open or closed. In this respect, software systems differ profoundly from computers, buildings, or automobiles, where repeated elements abound.
Fred Brooks, Jr.
If there are two components that are alike, we distill the similarities into a single component. We do this at every level, from top to bottom. We take code like this:
a = x + y; b = x + y;
And we remove the repeated part so that it looks like this:
b = a = x + y;
We take code with a repeated element, like this:
val a = (foldr (op +) 0 lsa) / length lsa; val b = (foldr (op +) 0 lsb) / length lsb; val c = (foldr (op +) 0 lsb) / length lsc;
And we remove the repeated part so that it looks like this:
fun map f  =  | f (h::t) = (f h)::(map f t); fun mean ls = (foldr (op +) 0 ls) / length ls; val meanlist = map mean [lsa, lsb, lsc];
We factor expressions out of loops. We replace repeated parts with macros, subroutines, and modules. At every stage, at every step, at every level, we replace two or more similar parts with a slightly more complicated single part.
The end result is that computer programs have no repeated elements. Every part is different from every other part, not just superficially, but as much as we can make it!
Thus computer programs exhibit a chaotic sort of order unknown elsewhere, an order in which there is no order. A structure that fuses the Eristic and the Aneristic in a unique way.
I was a computer programmer long before I was a Discordian. But Discordianism appeals to me for many of the same reasons that programming does. As a programmer, my Discordian tendencies express themselves as computer programs.
badhash.pl is a deliberate and perverse (and successful!) attept to break the normally very well-behaved hashing algortithm used in the Perl programming language.
For many years I have tried to enter obfuscated code contests, in Perl and in C, but I find that I can't. My habits are too well fixed by now and I find that I can't stop myself from automatically trying to clean up my code and make it clear and legible.
Instead, however, I find more and more that I enjoy writing programs that are obfuscated on a slightly different level. They take a ridiculous premise, and then proceed to implement it in the clearest and most straightforward way. The result is usually a marvel of stupidity.
Addition.pm is such a marvel and I am very proud of it.
This program is almost a marvel of stupidity. I need to add some features to it; then it will be a real marvel. In the meantime, it is still pretty stupid.
This program achieves a somewhat useful effect through a trivial abuse of Perl's `tie' mechanism. The best thing about the abuse is that it's trivial.
The really best thing about this item is that it turned into Interpolation.pm, something so legitimately useful that it doesn't get a mention on this page.
Perl already has built-in powerful pattern-matching operations called regexes. This is a reimplementation of regexes, in Perl, without using the built-in regexes---a lot of work to accomplish the same thing, with less functionality and a lot less speed. It was the subject of my article for The Perl Journal in Spring 1998.
This program writes parser programs in Perl. There's nothing strange or stupid about that. Except that the way this program works is that you run bison to write a parser in C, and then run py on the debugging output of bison to make the parser in Perl.
Advocacy is a game that invites people to justify stupid design choices in technology products. People do this on Usenet all the time (``No, it's good that Windoes '95 crashes all the time, because...'') but we brave pioneers are the first to explicitly recognize this behavior and to construct an environment devoted to it.
This picture depicts a particularly vile and disgusting act of miscegenation. The Dick Feynman Cabal emphatically does not endorse such perversions.
I'm not going to say where I got it, because last time I did that, they came and found me and made me take it down. (`If you say the Name, He will appear.') That was a few years ago, so maybe they've forgotten about me by now.
Every year on March 1st I send out a usenet control message that instructs the news software to destroy the alt.slack newsgroup. I have been doing this since 1990.
I always try to make the rmgroup message interesting. Unfortunately, many of them are lost. (If you have copies of any of the missing ones, please send them to me!)
It is part of the artistic genius of God that he invented an artistic medium like the universe, a universe in which evolution could happen, a universe in which characters could run away with the plot. -- Larry Wall
previous fnord | fnord home | next fnord | see next 5 fnords | randomfnord
Universe of Discourse | Perl Paraphernaliamjdfirstname.lastname@example.org