The Jargon File, Version 4.2.2, 20 Aug 2000

Chapter 13

Chapter 133,832 wordsPublic domain

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 ([email protected]) 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.

1. A huge volume of spurious error-message output produced by a compiler with poor error recovery. Too frequently, one trivial syntax error (such as a missing `)' or `}') throws the parser out of synch so that much of the remaining program text is interpreted as garbaged or ill-formed. 2. A chain of Usenet followups, each adding some trivial variation or riposte to the text of the previous one, all of which is reproduced in the new message; an include war in which the object is to create a sort of communal graffito.

Node:case and paste, Next:casters-up mode, Previous:cascade, Up:= C =

case and paste n.

[from `cut and paste'] 1. The addition of a new feature to an existing system by selecting the code from an existing feature and pasting it in with minor changes. Common in telephony circles because most operations in a telephone switch are selected using case statements. Leads to software bloat.

In some circles of EMACS users this is called `programming by Meta-W', because Meta-W is the EMACS command for copying a block of text to a kill buffer in preparation to pasting it in elsewhere. The term is condescending, implying that the programmer is acting mindlessly rather than thinking carefully about what is required to integrate the code for two similar cases.

At DEC (now Compaq), this is sometimes called `clone-and-hack' coding.

Node:casters-up mode, Next:casting the runes, Previous:case and paste, Up:= C =

casters-up mode n.

[IBM, prob. fr. slang _belly up_] Yet another synonym for `broken' or `down'. Usually connotes a major failure. A system (hardware or software) which is `down' may be already being restarted before the failure is noticed, whereas one which is `casters up' is usually a good excuse to take the rest of the day off (as long as you're not responsible for fixing it).

Node:casting the runes, Next:cat, Previous:casters-up mode, Up:= C =

casting the runes n.

What a guru does when you ask him or her to run a particular program and type at it because it never works for anyone else; esp. used when nobody can ever see what the guru is doing different from what J. Random Luser does. Compare incantation, runes, examining the entrails; also see the AI koan about Tom Knight in "Some AI Koans" (Appendix A).

A correspondent from England tells us that one of ICL's most talented systems designers used to be called out occasionally to service machines which the field circus had given up on. Since he knew the design inside out, he could often find faults simply by listening to a quick outline of the symptoms. He used to play on this by going to some site where the field circus had just spent the last two weeks solid trying to find a fault, and spreading a diagram of the system out on a table top. He'd then shake some chicken bones and cast them over the diagram, peer at the bones intently for a minute, and then tell them that a certain module needed replacing. The system would start working again immediately upon the replacement.

Node:cat, Next:catatonic, Previous:casting the runes, Up:= C =

cat [from `catenate' via Unix cat(1)] vt.

1. [techspeak] To spew an entire file to the screen or some other output sink without pause (syn. blast). 2. By extension, to dump large amounts of data at an unprepared target or with no intention of browsing it carefully. Usage: considered silly. Rare outside Unix sites. See also dd, BLT.

Among Unix fans, cat(1) is considered an excellent example of user-interface design, because it delivers the file contents without such verbosity as spacing or headers between the files, and because it does not require the files to consist of lines of text, but works with any sort of data.

Among Unix haters, cat(1) is considered the canonical example of bad user-interface design, because of its woefully unobvious name. It is far more often used to blast a file to standard output than to concatenate two files. The name cat for the former operation is just as unintuitive as, say, LISP's cdr.

Of such oppositions are holy wars made....

Node:catatonic, Next:cathedral, Previous:cat, Up:= C =

catatonic adj.