Part 12
[common] Said of a design or revision that has been badly compromised by a requirement to be compatible with fossils or misfeatures in other programs or (esp.) previous releases of itself. "MS-DOS 2.0 used \ as a path separator to be bug-compatible with some cretin's choice of / as an option character in 1.0."
Node:bug-for-bug compatible, Next:bug-of-the-month club, Previous:bug-compatible, Up:= B =
bug-for-bug compatible n.
Same as bug-compatible, with the additional implication that much tedious effort went into ensuring that each (known) bug was replicated.
Node:bug-of-the-month club, Next:buglix, Previous:bug-for-bug compatible, Up:= B =
bug-of-the-month club n.
[from "book-of-the-month club", a time-honored mail-order-marketing technique in the U.S.] A mythical club which users of `sendmail(8)' (the UNIX mail daemon) belong to; this was coined on the Usenet newsgroup comp.security.unix at a time when sendmail security holes, which allowed outside crackers access to the system, were being uncovered at an alarming rate, forcing sysadmins to update very often. Also, more completely, `fatal security bug-of-the-month club'. See also kernel-of-the-week club.
Node:buglix, Next:bulletproof, Previous:bug-of-the-month club, Up:= B =
buglix /buhg'liks/ n.
[uncommon] Pejorative term referring to DEC's ULTRIX operating system in its earlier severely buggy versions. Still used to describe ULTRIX, but without nearly so much venom. Compare AIDX, HP-SUX, Nominal Semidestructor, Telerat, sun-stools.
Node:bulletproof, Next:bullschildt, Previous:buglix, Up:= B =
bulletproof adj.
Used of an algorithm or implementation considered extremely robust; lossage-resistant; capable of correctly recovering from any imaginable exception condition -- a rare and valued quality. Implies that the programmer has thought of all possible errors, and added code to protect against each one. Thus, in some cases, this can imply code that is too heavyweight, due to excessive paranoia on the part of the programmer. Syn. armor-plated.
Node:bullschildt, Next:bum, Previous:bulletproof, Up:= B =
bullschildt /bul'shilt/ n.
[comp.lang.c on USENET] A confident, but incorrect, statement about a programming language. This immortalizes a very bad book about C, Herbert Schildt's "C - The Complete Reference". One reviewer commented "The naive errors in this book would be embarassing even in a programming assignment turned in by a computer science college sophomore."
Node:bum, Next:bump, Previous:bullschildt, Up:= B =
bum
1. vt. To make highly efficient, either in time or space, often at the expense of clarity. "I managed to bum three more instructions out of that code." "I spent half the night bumming the interrupt code." In 1996, this term and the practice it describes are semi-obsolete. In elder days, John McCarthy (inventor of LISP) used to compare some efficiency-obsessed hackers among his students to "ski bums"; thus, optimization became "program bumming", and eventually just "bumming". 2. To squeeze out excess; to remove something in order to improve whatever it was removed from (without changing function; this distinguishes the process from a featurectomy). 3. n. A small change to an algorithm, program, or hardware device to make it more efficient. "This hardware bum makes the jump instruction faster." Usage: now uncommon, largely superseded by v. tune (and n. tweak, hack), though none of these exactly capture sense 2. All these uses are rare in Commonwealth hackish, because in the parent dialects of English the noun `bum' is a rude synonym for `buttocks' and the verb `bum' for buggery.
Node:bump, Next:burble, Previous:bum, Up:= B =
bump vt.
Synonym for increment. Has the same meaning as C's ++ operator. Used esp. of counter variables, pointers, and index dummies in for, while, and do-while loops.
Node:burble, Next:buried treasure, Previous:bump, Up:= B =
burble v.
[from Lewis Carroll's "Jabberwocky"] Like flame, but connotes that the source is truly clueless and ineffectual (mere flamers can be competent). A term of deep contempt. "There's some guy on the phone burbling about how he got a DISK FULL error and it's all our comm software's fault." This is mainstream slang in some parts of England.
Node:buried treasure, Next:burn-in period, Previous:burble, Up:= B =
buried treasure n.
A surprising piece of code found in some program. While usually not wrong, it tends to vary from crufty to bletcherous, and has lain undiscovered only because it was functionally correct, however horrible it is. Used sarcastically, because what is found is anything but treasure. Buried treasure almost always needs to be dug up and removed. "I just found that the scheduler sorts its queue using bubble sort! Buried treasure!"
Node:burn-in period, Next:burst page, Previous:buried treasure, Up:= B =
burn-in period n.
1. A factory test designed to catch systems with marginal components before they get out the door; the theory is that burn-in will protect customers by outwaiting the steepest part of the bathtub curve (see infant mortality). 2. A period of indeterminate length in which a person using a computer is so intensely involved in his project that he forgets basic needs such as food, drink, sleep, etc. Warning: Excessive burn-in can lead to burn-out. See hack mode, larval stage.
Historical note: the origin of "burn-in" (sense 1) is apparently the practice of setting a new-model airplane's brakes on fire, then extinguishing the fire, in order to make them hold better. This was done on the first version of the U.S. spy-plane, the U-2.
Node:burst page, Next:busy-wait, Previous:burn-in period, Up:= B =
burst page n.
Syn. banner, sense 1.
Node:busy-wait, Next:buzz, Previous:burst page, Up:= B =
busy-wait vi.
Used of human behavior, conveys that the subject is busy waiting for someone or something, intends to move instantly as soon as it shows up, and thus cannot do anything else at the moment. "Can't talk now, I'm busy-waiting till Bill gets off the phone."
Technically, `busy-wait' means to wait on an event by spinning through a tight or timed-delay loop that polls for the event on each pass, as opposed to setting up an interrupt handler and continuing execution on another part of the task. In applications this is a wasteful technique, and best avoided on time-sharing systems where a busy-waiting program may hog the processor. However, it is often unavoidable in kernel programming. In the Linux world, kernel busy-waits are usually referred to as `spinlocks'.
Node:buzz, Next:BWQ, Previous:busy-wait, Up:= B =
buzz vi.
1. Of a program, to run with no indication of progress and perhaps without guarantee of ever finishing; esp. said of programs thought to be executing tight loops of code. A program that is buzzing appears to be catatonic, but never gets out of catatonia, while a buzzing loop may eventually end of its own accord. "The program buzzes for about 10 seconds trying to sort all the names into order." See spin; see also grovel. 2. [ETA Systems] To test a wire or printed circuit trace for continuity, esp. by applying an AC rather than DC signal. Some wire faults will pass DC tests but fail an AC buzz test. 3. To process an array or list in sequence, doing the same thing to each element. "This loop buzzes through the tz array looking for a terminator type."
Node:BWQ, Next:by hand, Previous:buzz, Up:= B =
BWQ /B-W-Q/ n.
[IBM: abbreviation, `Buzz Word Quotient'] The percentage of buzzwords in a speech or documents. Usually roughly proportional to bogosity. See TLA.
Node:by hand, Next:byte, Previous:BWQ, Up:= B =
by hand adv.
[common] 1. Said of an operation (especially a repetitive, trivial, and/or tedious one) that ought to be performed automatically by the computer, but which a hacker instead has to step tediously through. "My mailer doesn't have a command to include the text of the message I'm replying to, so I have to do it by hand." This does not necessarily mean the speaker has to retype a copy of the message; it might refer to, say, dropping into a subshell from the mailer, making a copy of one's mailbox file, reading that into an editor, locating the top and bottom of the message in question, deleting the rest of the file, inserting `>' characters on each line, writing the file, leaving the editor, returning to the mailer, reading the file in, and later remembering to delete the file. Compare eyeball search. 2. By extension, writing code which does something in an explicit or low-level way for which a presupplied library routine ought to have been available. "This cretinous B-tree library doesn't supply a decent iterator, so I'm having to walk the trees by hand."
Node:byte, Next:byte sex, Previous:by hand, Up:= B =
byte /bi:t/ n.
[techspeak] A unit of memory or data equal to the amount used to represent one character; on modern architectures this is usually 8 bits, but may be 9 on 36-bit machines. Some older architectures used `byte' for quantities of 6 or 7 bits, and the PDP-10 supported `bytes' that were actually bitfields of 1 to 36 bits! These usages are now obsolete, and even 9-bit bytes have become rare in the general trend toward power-of-2 word sizes.
Historical note: The term was coined by Werner Buchholz in 1956 during the early design phase for the IBM Stretch computer; originally it was described as 1 to 6 bits (typical I/O equipment of the period used 6-bit chunks of information). The move to an 8-bit byte happened in late 1956, and this size was later adopted and promulgated as a standard by the System/360. The word was coined by mutating the word `bite' so it would not be accidentally misspelled as bit. See also nybble.
Node:byte sex, Next:bytesexual, Previous:byte, Up:= B =
byte sex n.
[common] The byte sex of hardware is big-endian or little-endian; see those entries.
Node:bytesexual, Next:Bzzzt! Wrong., Previous:byte sex, Up:= B =
bytesexual /bi:t`sek'shu-*l/ adj.
[rare] Said of hardware, denotes willingness to compute or pass data in either big-endian or little-endian format (depending, presumably, on a mode bit somewhere). See also NUXI problem.
Node:Bzzzt! Wrong., Next:C, Previous:bytesexual, Up:= B =
Bzzzt! Wrong. /bzt rong/ excl.
[common; Usenet/Internet; punctuation varies] From a Robin Williams routine in the movie "Dead Poets Society" spoofing radio or TV quiz programs, such as Truth or Consequences, where an incorrect answer earns one a blast from the buzzer and condolences from the interlocutor. A way of expressing mock-rude disagreement, usually immediately following an included quote from another poster. The less abbreviated "*Bzzzzt*, wrong, but thank you for playing" is also common; capitalization and emphasis of the buzzer sound varies.
Node:= C =, Next:= D =, Previous:= B =, Up:The Jargon Lexicon
= C =
C:
C Programmer's Disease:
C&C:
C++:
calculator:
Camel Book:
can:
can't happen:
cancelbot:
Cancelmoose[tm]:
candygrammar:
canonical:
card walloper:
careware:
cargo cult programming:
cascade:
case and paste:
casters-up mode:
casting the runes:
cat:
catatonic:
cathedral:
cd tilde:
CDA:
cdr:
chad:
chad box:
chain:
channel:
channel hopping:
channel op:
chanop:
char:
charityware:
chase pointers:
chawmp:
check:
cheerfully:
chemist:
Chernobyl chicken:
Chernobyl packet:
chicken head:
chiclet keyboard:
Chinese Army technique:
choad:
choke:
chomp:
chomper:
CHOP:
Christmas tree:
Christmas tree packet:
chrome:
chug:
Church of the SubGenius:
Cinderella Book:
CI$:
Classic C:
clean:
CLM:
clobber:
clock:
clocks:
clone:
clone-and-hack coding:
clover key:
clue-by-four:
clustergeeking:
co-lo:
code:
coaster:
COBOL:
COBOL fingers:
cobweb site:
code grinder:
code monkey:
Code of the Geeks:
code police:
codes:
codewalker:
coefficient of X:
cokebottle:
cold boot:
COME FROM:
comm mode:
command key:
comment out:
Commonwealth Hackish:
compact:
compiler jock:
compo:
compress:
Compu$erve:
computer confetti:
computer geek:
computron:
con:
condition out:
condom:
confuser:
connector conspiracy:
cons:
considered harmful:
console:
console jockey:
content-free:
control-C:
control-O:
control-Q:
control-S:
Conway's Law:
cookbook:
cooked mode:
cookie:
cookie bear:
cookie file:
cookie jar:
cookie monster:
copious free time:
copper:
copy protection:
copybroke:
copycenter:
copyleft:
copyparty:
copywronged:
core:
core cancer:
core dump:
core leak:
Core Wars:
corge:
cosmic rays:
cough and die:
courier:
cow orker:
cowboy:
CP/M:
CPU Wars:
crack:
crack root:
cracker:
cracking:
crank:
crapplet:
CrApTeX:
crash:
crash and burn:
crawling horror:
cray:
cray instability:
crayola:
crayola books:
crayon:
creationism:
creep:
creeping elegance:
creeping featurism:
creeping featuritis:
cretin:
cretinous:
crippleware:
critical mass:
crlf:
crock:
cross-post:
crossload:
crudware:
cruft:
cruft together:
cruftsmanship:
crufty:
crumb:
crunch:
cryppie:
CTSS:
cube:
cubing:
cup holder:
cursor dipped in X:
cuspy:
cut a tape:
cybercrud:
cyberpunk:
cyberspace:
cycle:
cycle crunch:
cycle drought:
cycle of reincarnation:
cycle server:
cypherpunk:
C|N>K:
Node:C, Next:C Programmer's Disease, Previous:Bzzzt! Wrong., Up:= C =
C n.
1. The third letter of the English alphabet. 2. ASCII 1000011. 3. The name of a programming language designed by Dennis Ritchie during the early 1970s and immediately used to reimplement Unix; so called because many features derived from an earlier compiler named `B' in commemoration of its parent, BCPL. (BCPL was in turn descended from an earlier Algol-derived language, CPL.) Before Bjarne Stroustrup settled the question by designing C++, there was a humorous debate over whether C's successor should be named `D' or `P'. C became immensely popular outside Bell Labs after about 1980 and is now the dominant language in systems and microcomputer applications programming. See also languages of choice, indent style.
C is often described, with a mixture of fondness and disdain varying according to the speaker, as "a language that combines all the elegance and power of assembly language with all the readability and maintainability of assembly language".
Node:C Programmer's Disease, Next:C&C, Previous:C, Up:= C =
C Programmer's Disease n.
The tendency of the undisciplined C programmer to set arbitrary but supposedly generous static limits on table sizes (defined, if you're lucky, by constants in header files) rather than taking the trouble to do proper dynamic storage allocation. If an application user later needs to put 68 elements into a table of size 50, the afflicted programmer reasons that he or she can easily reset the table size to 68 (or even as much as 70, to allow for future expansion) and recompile. This gives the programmer the comfortable feeling of having made the effort to satisfy the user's (unreasonable) demands, and often affords the user multiple opportunities to explore the marvelous consequences of fandango on core. In severe cases of the disease, the programmer cannot comprehend why each fix of this kind seems only to further disgruntle the user.
Node:C&C, Next:C++, Previous:C Programmer's Disease, Up:= C =
C&C //
[common, esp. on _news.admin.net-abuse.email_] Contraction of "Coffee & Cats". This frequently occurs as a warning label on USENET posts that are likely to cause you to snarf coffee onto your keyboard and startle the cat off your lap.
Node:C++, Next:calculator, Previous:C&C, Up:= C =
C++ /C'-pluhs-pluhs/ n.
Designed by Bjarne Stroustrup of AT&T Bell Labs as a successor to C. Now one of the languages of choice, although many hackers still grumble that it is the successor to either Algol 68 or Ada (depending on generation), and a prime example of second-system effect. Almost anything that can be done in any language can be done in C++, but it requires a language lawyer to know what is and what is not legal-- the design is almost too large to hold in even hackers' heads. Much of the cruft results from C++'s attempt to be backward compatible with C. Stroustrup himself has said in his retrospective book "The Design and Evolution of C++" (p. 207), "Within C++, there is a much smaller and cleaner language struggling to get out." [Many hackers would now add "Yes, and it's called Java" --ESR]
Node:calculator, Next:Camel Book, Previous:C++, Up:= C =
calculator [Cambridge] n.
Syn. for bitty box.
Node:Camel Book, Next:can, Previous:calculator, Up:= C =
Camel Book n.
Universally recognized nickname for the book "Programming Perl", by Larry Wall and Randal L. Schwartz, O'Reilly and Associates 1991, ISBN 0-937175-64-1 (second edition 1996, ISBN 1-56592-149-6). The definitive reference on Perl.
Node:can, Next:can't happen, Previous:Camel Book, Up:= C =
can vt.
To abort a job on a time-sharing system. Used esp. when the person doing the deed is an operator, as in "canned from the console". Frequently used in an imperative sense, as in "Can that print job, the LPT just popped a sprocket!" Synonymous with gun. It is said that the ASCII character with mnemonic CAN (0011000) was used as a kill-job character on some early OSes. Alternatively, this term may derive from mainstream slang `canned' for being laid off or fired.
Node:can't happen, Next:cancelbot, Previous:can, Up:= C =
can't happen
The traditional program comment for code executed under a condition that should never be true, for example a file size computed as negative. Often, such a condition being true indicates data corruption or a faulty algorithm; it is almost always handled by emitting a fatal error message and terminating or crashing, since there is little else that can be done. Some case variant of "can't happen" is also often the text emitted if the `impossible' error actually happens! Although "can't happen" events are genuinely infrequent in production code, programmers wise enough to check for them habitually are often surprised at how frequently they are triggered during development and how many headaches checking for them turns out to head off. See also firewall code (sense 2).
Node:cancelbot, Next:Cancelmoose[tm], Previous:can't happen, Up:= C =
cancelbot /kan'sel-bot/
[Usenet: compound, cancel + robot] 1. Mythically, a robocanceller 2. In reality, most cancelbots are manually operated by being fed lists of spam message IDs.
Node:Cancelmoose[tm], Next:candygrammar, Previous:cancelbot, Up:= C =
Cancelmoose[tm] /kan'sel-moos/
[Usenet] The archetype and model of all good spam-fighters. Once upon a time, the 'Moose would send out spam-cancels and then post notice anonymously to _news.admin.policy_, _news.admin.misc_, and _alt.current-events.net-abuse_. The 'Moose stepped to the fore on its own initiative, at a time (mid-1994) when spam-cancels were irregular and disorganized, and behaved altogether admirably - fair, even-handed, and quick to respond to comments and criticism, all without self-aggrandizement or martyrdom. Cancelmoose[tm] quickly gained near-unanimous support from the readership of all three above-mentioned groups.
Nobody knows who Cancelmoose[tm] really is, and there aren't even any good rumors. However, the 'Moose now has an e-mail address (moose@cm.org) and a web site (http://www.cm.org.)
By early 1995, others had stepped into the spam-cancel business, and appeared to be comporting themselves well, after the 'Moose's manner. The 'Moose has now gotten out of the business, and is more interested in ending spam (and cancels) entirely.
Node:candygrammar, Next:canonical, Previous:Cancelmoose[tm], Up:= C =
candygrammar n.
A programming-language grammar that is mostly syntactic sugar; the term is also a play on `candygram'. COBOL, Apple's Hypertalk language, and a lot of the so-called `4GL' database languages share this property. The usual intent of such designs is that they be as English-like as possible, on the theory that they will then be easier for unskilled people to program. This intention comes to grief on the reality that syntax isn't what makes programming hard; it's the mental effort and organization required to specify an algorithm precisely that costs. Thus the invariable result is that `candygrammar' languages are just as difficult to program in as terser ones, and far more painful for the experienced hacker.
[The overtones from the old Chevy Chase skit on Saturday Night Live should not be overlooked. This was a "Jaws" parody. Someone lurking outside an apartment door tries all kinds of bogus ways to get the occupant to open up, while ominous music plays in the background. The last attempt is a half-hearted "Candygram!" When the door is opened, a shark bursts in and chomps the poor occupant. [There is a similar gag in "Blazing Saddles" --ESR] There is a moral here for those attracted to candygrammars. Note that, in many circles, pretty much the same ones who remember Monty Python sketches, all it takes is the word "Candygram!", suitably timed, to get people rolling on the floor. -- GLS]
Node:canonical, Next:card walloper, Previous:candygrammar, Up:= C =
canonical adj.
[very common; historically, `according to religious law'] The usual or standard state or manner of something. This word has a somewhat more technical meaning in mathematics. Two formulas such as 9 + x and x + 9 are said to be equivalent because they mean the same thing, but the second one is in `canonical form' because it is written in the usual way, with the highest power of x first. Usually there are fixed rules you can use to decide whether something is in canonical form. The jargon meaning, a relaxation of the technical meaning, acquired its present loading in computer-science culture largely through its prominence in Alonzo Church's work in computation theory and mathematical logic (see Knights of the Lambda Calculus). Compare vanilla.
Non-technical academics do not use the adjective `canonical' in any of the senses defined above with any regularity; they do however use the nouns `canon' and `canonicity' (not **canonicalness or **canonicality). The `canon' of a given author is the complete body of authentic works by that author (this usage is familiar to Sherlock Holmes fans as well as to literary scholars). `The canon' is the body of works in a given field (e.g., works of literature, or of art, or of music) deemed worthwhile for students to study and for scholars to investigate.
The word `canon' has an interesting history. It derives ultimately from the Greek `kanon' (akin to the English `cane') referring to a reed. Reeds were used for measurement, and in Latin and later Greek the word `canon' meant a rule or a standard. The establishment of a canon of scriptures within Christianity was meant to define a standard or a rule for the religion. The above non-techspeak academic usages stem from this instance of a defined and accepted body of work. Alongside this usage was the promulgation of `canons' (`rules') for the government of the Catholic Church. The techspeak usages ("according to religious law") derive from this use of the Latin `canon'.
Hackers invest this term with a playfulness that makes an ironic contrast with its historical meaning. A true story: One Bob Sjoberg, new at the MIT AI Lab, expressed some annoyance at the incessant use of jargon. Over his loud objections, GLS and RMS made a point of using as much of it as possible in his presence, and eventually it began to sink in. Finally, in one conversation, he used the word `canonical' in jargon-like fashion without thinking. Steele: "Aha! We've finally got you talking jargon too!" Stallman: "What did he say?" Steele: "Bob just used `canonical' in the canonical way."
Of course, canonicality depends on context, but it is implicitly defined as the way hackers normally expect things to be. Thus, a hacker may claim with a straight face that `according to religious law' is not the canonical meaning of `canonical'.
Node:card walloper, Next:careware, Previous:canonical, Up:= C =
card walloper n.
An EDP programmer who grinds out batch programs that do stupid things like print people's paychecks. Compare code grinder. See also punched card, eighty-column mind.
Node:careware, Next:cargo cult programming, Previous:card walloper, Up:= C =
careware /keir'weir/ n.
A variety of shareware for which either the author suggests that some payment be made to a nominated charity or a levy directed to charity is included on top of the distribution charge. Syn. charityware; compare crippleware, sense 2.
Node:cargo cult programming, Next:cascade, Previous:careware, Up:= C =
cargo cult programming n.
A style of (incompetent) programming dominated by ritual inclusion of code or program structures that serve no real purpose. A cargo cult programmer will usually explain the extra code as a way of working around some bug encountered in the past, but usually neither the bug nor the reason the code apparently avoided the bug was ever fully understood (compare shotgun debugging, voodoo programming).
The term `cargo cult' is a reference to aboriginal religions that grew up in the South Pacific after World War II. The practices of these cults center on building elaborate mockups of airplanes and military style landing strips in the hope of bringing the return of the god-like airplanes that brought such marvelous cargo during the war. Hackish usage probably derives from Richard Feynman's characterization of certain practices as "cargo cult science" in his book "Surely You're Joking, Mr. Feynman!" (W. W. Norton & Co, New York 1985, ISBN 0-393-01921-7).
Node:cascade, Next:case and paste, Previous:cargo cult programming, Up:= C =
cascade n.