switch (color)
[
case GREEN:
do_green();
break;
case PINK:
do_pink();
/* FALL THROUGH */
case RED:
do_red();
break;
default:
do_blue();
break;
}
The variant spelling `/* FALL THRU */' is also common.
The effect of the above code is to `do_green()' when color is
`GREEN', `do_red()' when color is `RED',
`do_blue()' on any other color other than `PINK', and
(and this is the important part) `do_pink()' *and then*
`do_red()' when color is `PINK'. Fall-through is
considered harmful by some, though there are contexts (such as
the coding of state machines) in which it is natural; it is
generally considered good practice to include a comment
highlighting the fall-through where one would normally expect a
break. See also [Duff's Device].
This lexicon itself serves as a good example of a collection of one
kind of lore, although it is far too big for a regular FAQ
posting. Examples: "What is the proper type of NULL?" and
"What's that funny name for the `#' character?" are both
Frequently Asked Questions. Several FAQs refer readers to
this file.
The relationship among bugs, features, misfeatures, warts, and
miswarts might be clarified by the following hypothetical exchange
between two hackers on an airliner:
A: "This seat doesn't recline."
B: "That's not a bug, that's a feature. There is an emergency
exit door built around the window behind you, and the route has to
be kept clear."
A: "Oh. Then it's a misfeature; they should have increased the
spacing between rows here."
B: "Yes. But if they'd increased spacing in only one section it
would have been a wart --- they would've had to make
nonstandard-length ceiling panels to fit over the displaced
seats."
A: "A miswart, actually. If they increased spacing throughout
they'd lose several rows and a chunk out of the profit margin. So
unequal spacing would actually be the Right Thing."
B: "Indeed."
`Undocumented feature' is a common, allegedly humorous euphemism
for a bug.
Many people have been mystified by the cloverleaf-like symbol that
appears on the feature key. Its oldest name is `cross of St.
Hannes', but it occurs in pre-Christian Viking art as a decorative
motif. Throughout Scandinavia today the road agencies use it to
mark sites of historical interest. Apple picked up the symbol from
an early Mac developer who happened to be Swedish. Apple
documentation gives the translation "interesting feature"!
There is some dispute as to the proper (Swedish) name of this
symbol. It technically stands for the word `sev"ardhet'
(interesting feature) many of these are old churches. Some Swedes
report as an idiom for it the word `kyrka', cognate to English
`church' and Scots-dialect `kirk' but pronounced /shir'k*/ in
modern Swedish. Others say this is nonsense.
Q: How can you recognize a DEC field circus engineer
with a flat tire?
A: He's changing one tire at a time to see which one is flat.
Q: How can you recognize a DEC field circus engineer
who is out of gas?
A: He's changing one tire at a time to see which one is flat.
[See Easter egging for additional insight on these jokes.]
There is also the `Field Circus Cheer' (from the plan file for
DEC on MIT-AI):
Maynard! Maynard!
Don't mess with us!
We're mean and we're tough!
If you get us confused
We'll screw up your stuff.
(DEC's service HQ is located in Maynard, Massachusetts.)
FIXME: note this is common in GNU code.
Compare XXX.
USENETter Marc Ramsey, who was at WPI from 1972 to 1976, adds: "I
am 99% certain that the use of `flame' originated at WPI. Those
who made a nuisance of themselves insisting that they needed to use
a TTY for `real work' came to be known as `flaming asshole lusers'.
Other particularly annoying people became `flaming asshole ravers',
which shortened to `flaming ravers', and ultimately `flamers'. I
remember someone picking up on the Human Torch pun, but I don't
think `flame on/off' was ever much used at WPI." See also
asbestos.
The term may have been independently invented at several different
places; it is also reported that `flaming' was in use to mean
something like `interminably drawn-out semi-serious discussions'
(late-night bull sessions) at Carleton College during 1968--1971.
It is possible that the hackish sense of `flame' is much older than
that. The poet Chaucer was also what passed for a wizard hacker in
his time; he wrote a treatise on the astrolabe, the most advanced
computing device of the day. In Chaucer's "Troilus and
Cressida", Cressida laments her inability to grasp the proof of a
particular mathematical theorem; her uncle Pandarus then observes
that it's called "the fleminge of wrecches." This phrase seems
to have been intended in context as "that which puts the wretches
to flight" but was probably just as ambiguous in Middle English as
"the flaming of wretches" would be today. One suspects that
Chaucer would feel right at home on USENET.
`Flush' was standard ITS terminology for aborting an output
operation; one spoke of the text that would have been printed, but
was not, as having been flushed. It is speculated that this term
arose from a vivid image of flushing unwanted characters by hosing
down the internal output buffer, washing the characters away before
they could be printed. The UNIX/C usage, on the other hand, was
propagated by the `fflush(3)' call in C's standard I/O library
(though it is reported to have been in use among BLISS programmers
at DEC and on Honeywell and IBM machines as far back as 1965).
UNIX/C hackers find the ITS usage confusing, and vice versa.
In aviation, FOD means Foreign Object Damage, e.g., what happens
when a jet engine sucks up a rock on the runway or a bird in
flight. Finger of Death is a distressingly apt description of
what this generally does to the engine.
[Unfortunately, this reference to the embryological dictum that
"Ontogeny recapitulates phylogeny" is not merely a joke. On the
Macintosh, for example, System 7 has to go through contortions to
compensate for an earlier design error that created a whole
different set of abstractions for fonts parallel to `files' and
`folders' --- ESR]
The etymology of hackish `foo' is obscure. When used in
connection with `bar' it is generally traced to the WWII-era Army
slang acronym FUBAR (`Fucked Up Beyond All Repair'), later
bowdlerized to foobar. (See also FUBAR).
However, the use of the word `foo' itself has more complicated
antecedents, including a long history in comic strips and cartoons.
The old "Smokey Stover" comic strips by Bill Holman often
included the word `FOO', in particular on license plates of cars;
allegedly, `FOO' and `BAR' also occurred in Walt Kelly's
"Pogo" strips. In the 1938 cartoon "The Daffy Doc", a very
early version of Daffy Duck holds up a sign saying "SILENCE IS
FOO!"; oddly, this seems to refer to some approving or positive
affirmative use of foo. It has been suggested that this might be
related to the Chinese word `fu' (sometimes transliterated
`foo'), which can mean "happiness" when spoken with the proper
tone (the lion-dog guardians flanking the steps of many Chinese
restaurants are properly called "fu dogs").
Earlier versions of this entry suggested the possibility that
hacker usage actually sprang from "FOO, Lampoons and Parody",
the title of a comic book first issued in September 1958, a joint
project of Charles and Robert Crumb. Though Robert Crumb (then in
his mid-teens) later became one of the most important and
influential artists in underground comics, this venture was hardly
a success; indeed, the brothers later burned most of the existing
copies in disgust. The title FOO was featured in large letters on
the front cover. However, very few copies of this comic actually
circulated, and students of Crumb's `oeuvre' have established
that this title was a reference to the earlier Smokey Stover
comics.
An old-time member reports that in the 1959 "Dictionary of the
TMRC Language", compiled at TMRC there was an entry that went
something like this:
FOO: The first syllable of the sacred chant phrase "FOO MANE PADME
HUM." Our first obligation is to keep the foo counters turning.
For more about the legendary foo counters, see TMRC. Almost
the entire staff of what became the MIT AI LAB was involved with
TMRC, and probably picked the word up there.
Very probably, hackish `foo' had no single origin and derives
through all these channels from Yiddish `feh' and/or English
`fooey'.
Historical note: this usage probably derives from the programming
language MAD (Michigan Algorithm Decoder), an Algol-like language
that was the most common choice among mainstream (non-hacker) users
at MIT in the mid-60s. It had a control structure FOR VALUES OF X
= 3, 7, 99 DO ... that would repeat the indicated instructions for
each value in the list (unlike the usual FOR that only works for
arithmetic sequences of values). MAD is long extinct, but similar
for-constructs still flourish (e.g., in UNIX's shell languages).
Technically, on a time-sharing system, a task executing in
foreground is one able to accept input from and return output to
the user; oppose background. Nowadays this term is primarily
associated with "UNIX", but it appears first to have been used
in this sense on OS/360. Normally, there is only one foreground
task per terminal (or terminal window); having multiple processes
simultaneously reading the keyboard is a good way to lose.
There are more specific constructions on this term. A `feature
freeze', for example, locks out modifications intended to introduce
new features but still allows bugfixes and completion of existing
features; a `code freeze' connotes no more changes at all. At
Sun Microsystems and elsewhere, one may also hear references to
`code slush' --- that is, an almost-but-not-quite frozen state.
Usage: frob, twiddle, and tweak sometimes connote points along a
continuum. `Frob' connotes aimless manipulation; `twiddle'
connotes gross manipulation, often a coarse search for a proper
setting; `tweak' connotes fine-tuning. If someone is turning a
knob on an oscilloscope, then if he's carefully adjusting it, he is
probably tweaking it; if he is just turning it but looking at the
screen, he is probably twiddling it; but if he's just doing it
because turning a knob is fun, he's frobbing it. The variant
`frobnosticate' has been recently reported.
Pete Samson, compiler of the original TMRC lexicon, adds,
"Under the TMRC [railroad] layout were many storage boxes, managed
(in 1958) by David R. Sawyer. Several had fanciful designations
written on them, such as `Frobnitz Coil Oil'. Perhaps DRS intended
Frobnitz to be a proper name, but the name was quickly taken for
the thing". This was almost certainly the origin of the
term.
[This entry is an extreme example of the hackish habit of coining
elaborate and evocative terms for lossage. Here we see a quite
self-conscious parody of mainstream expletives that has become a
running gag in part of the hacker culture; it illustrates the
hackish tendency to turn any situation, even one of extreme
frustration, into an intellectual game (the point being, in this
case, to creatively produce a long-winded description of the
most anatomically absurd mental image possible --- the short forms
implicitly allude to all the ridiculous long forms ever spoken).
Scatological language is actually relatively uncommon among
hackers, and there was some controversy over whether this entry
ought to be included at all. As it reflects a live usage
recognizably peculiar to the hacker culture, we feel it is
in the hackish spirit of truthfulness and opposition to all
forms of censorship to record it here. --- ESR & GLS]