The garden variety programmer is a nefarious, devious, darkly humorous computer-phile.
Their insidious plan to divert productivity through a variety of strategically placed software errors has astounded all information-gathering departments of the government.
So much so that the government is forced to other means of monitoring software development, such as through the justice department.
If a typical computer programmer is encountered on the street, the usual response is to flee while banging clenched fists on your head and screaming at the top of your lungs.
Since most people are already familiar with computer programmers as a class of people, I'll limit my discourse to the most die-hard of this class, the abominable console programmer.
I want to make it clear to you that a console programmer, by my description, is not merely a programmer who happens to hack together a little application that only runs from a command prompt, nor are all console programmers abominable.
The abominable console programmer openly rejects any graphic user interface, such as Microsoft Windows, Apple's Macintosh OS, IBM's OS/2, and X-Windows.
Now, a few of these folks may have been writing software on console-based machines for most of their lives, so are excused.
The rest divide their time equally between writing console applications, profaning GUIs, and telling other programmers why they are wrong.
These people are generally considered extremely annoying and should be avoided at all costs.
It usually takes about thirty seconds to identify the abominable console programmer.
Say, for instance, you are learning how to code in a given language and you have a great many questions.
If you ask most programmers, they will probably shout at you to find out yourself, unless you have appeased them with great quantities of chocolate.
Once appeased, the sated programmer might happily answer your questions, even go so far as to offer you some suggestions and give you some pointers.
The console programmer on the other hand will immediately give you one or more of the following responses.
"It took me years to figure that out."
"Why are you using that language?"
"I can't tell you because you don't understand the complexities of that system."
"Why?"
"I hate that system."
You'll notice a general trend in their responses.
They are surreptitious at best about releasing any information that might help you figure out your problem, and downright outspoken about why you are wrong.
You may be inclined to compare such individuals with certain religious representatives, but I hesitate to do so on the grounds that they, these programmers, are most likely constructs of a greater evil.
However, they do share some traits with certain scientific fields.
For example, if you find yourself musing about some impossible scientific invention, such as wind shield wipers for your space ship that work while at double-light speed, you may be tempted to ask one of these scientific types their opinion.
Do so at your own risk!
It is not unlike asking a console programmer about writing script for a Web page.
Not only will you not get a useful answer, but you will be subject to a torrent of propaganda on why you are wrong.
If you amuse such an individual for an extended period of time, they will eventually produce color slides and flow charts that "prove" their theories.
For these particular people, the only impossible possibilities are those found on Star Trek.
If it isn't in a text book or on Star Trek, it's impossible.
But this particular strain of scientific-type still does not come close to the abominable console programmer.
After they are finished lecturing you on why you are wrong, they will at least appease you with chocolate and maybe an espresso.
The abominable console programmer knows no such appeasement.
One such programmer, Germ Foster, spent the better part of an afternoon explaining to me why HTML, the markup text used to build web pages, was too complex to explain.
Keep in mind that a web page is all text and isn't a programming language, but a markup language.
Germ's explanation included a vast array of wizardry such as setting file permissions and zipping around through directories via a console.
At first, you may think that you don't know how to perform those mystic enchantments either.
I believe that anyone who can follow directions to bake cookies, and has the desire to pay attention, can pick up such spellcasting in the better part of thirty seconds.
It just isn't that mystical.
On my quest to learn this new HTML language, I asked Germ how it was done.
I said, "Say, Germ, I'd really like to learn this cool HTML stuff, can you show me a bit of it?"
"Well, see,"Germ said, tugging one of his chins, "it's all quite complex.
You really need to know Unix, C, C++, and a good terminal editor.
Here, let me show you."
He even chanted while casting this amazing spell.
"So, this thing here, the less-than sign, the word HTML, the greater than sign, what does it mean?"
It seemed a bit foreign, but not overly complex.
"It would take too long to explain," he said.
I started to wonder if Germ really wanted me to know his precious secrets of HTML.
It was all very confusing to see this cool stuff, but have no explanation.
"Are there any books I could read?"
I asked, hoping to show some interest in learning this myself.
"You really need to know more Unix," he said.
So, my first attempt to learn HTML was met with little success.
The basic web page, in case you are wondering, looks something like this:
<HTML>
<HEAD>
<TITLE>Title that shows up at the top of the page</TITLE>
</HEAD>
<BODY>
This shows up in the Web browser.
</BODY>
</HTML>
The stuff between the <'s and >'s are referred to as elements and are instructions to the Web browser's parser.
I won't go into a great explanation of it, but I want to point out that it isn't as complex as rocket science.
It isn't even as complex as coloring between the lines with a single fat crayon.
Since I was not yet able to identify programmers as abominable console programmers, I simply dismissed Germ as a bitwise parasite.
It wasn't until I met Crumb Jones that the concept of an abominable console programmer congealed in my brain.
You see, Crumb was something of an enigma at first.
He would never write code in the same room I was in, which isn't anything new since most programmers never write code in my presence.
I think it goes back to protecting the incantations for their magic spells.
What made Crumb an enigma was that he literally spent days, or so he claimed, working on little hack applications that, in retrospect, would have taken most programmers, console or otherwise, about two minutes do put together.
Then, he would make wild claims about how much money the application was worth.
What qualified Crumb as an abominable console programmer, among many traits that were carefully gauged before acceptance, was his detailed explanation on why he couldn't show me how to do some basic text processing in Perl, because I wasn't familiar with Unix.
Let's consider the logic of this defense before accepting the sad truth, Crumb Jones was an abominable console programmer.
Say, for instance, I wanted to change the oil in my car.
If I, an uneducated and uninitiated automobile owner, asked a mechanic with whom I'd been working how to change the oil in my car, I would probably get an acceptable response.
Such a response might be "Not now, I'm busy", "It's the only bolt on the bottom of the oil pan," or rather than say anything, the mechanic might show me.
Even if the mechanic was less civil than I expected, I would conceivably get a response related to the question, such as "Why don't you take that dipstick and ..", and you get the idea.
What I wouldn't get is some cock-and-bull story about how I need to study up on the viscosity of my transmission fluid and then learn how to properly rotate my spark plugs.
Since I was beginning, I had very elementary questions, such as "How can I replace a word in a sentence."
Pretty rudimentary stuff.
The only thing I needed to know about Unix in order to answer this question was the location of the binaries (a program to run the code) and a place I could create a file.
Since I already knew about the latter, and since the former was in a system path, I really didn't need to know anything else.
Keep in mind I'm only referring to a piece of code that is not far removed from a "Hello, World" application.
If I didn't need to know that much about Unix, then what about Perl?
And in that question, I can only surmise the answer is that Crumb was being overly protective of his special magic for string manipulation.
The world according to the abominable console programmer is a dark, lonely place of glowing letters and spaghetti code.
A place that rests somewhere between learning your ABCs and not sharing your fat red crayon because the person sitting next to you forgot theirs.
A wonderland of meaningless drivel.
And I thank the gods that they never did answer my questions, lest I would have fallen into their universe.