The Jargon File, Version 4.2.2, 20 Aug 2000

Chapter 7

Chapter 73,851 wordsPublic domain

Technically, a task running in background is detached from the terminal where it was started (and often running at a lower priority); oppose foreground. Nowadays this term is primarily associated with Unix, but it appears to have been first used in this sense on OS/360.

Node:backreference, Next:backronym, Previous:background, Up:= B =

backreference n.

1. In a regular expression or pattern match, the text which was matched within grouping parentheses parentheses. 2. The part of the pattern which refers back to the matched text. 3. By extension, anything which refers back to something which has been seen or discussed before. "When you said `she' just now, who were you backreferencing?"

Node:backronym, Next:backspace and overstrike, Previous:backreference, Up:= B =

backronym n.

[portmanteau of back + acronym] A word interpreted as an acronym that was not originally so intended. This is a special case of what linguists call `back formation'. Examples are given under BASIC, recursive acronym (Cygnus), Acme, and mung. Discovering backronyms is a common form of wordplay among hackers. Compare retcon.

Node:backspace and overstrike, Next:backward combatability, Previous:backronym, Up:= B =

backspace and overstrike interj.

[rare] Whoa! Back up. Used to suggest that someone just said or did something wrong. Once common among APL programmers; may now be obsolete.

Node:backward combatability, Next:BAD, Previous:backspace and overstrike, Up:= B =

backward combatability /bak'w*rd k*m-bat'*-bil'*-tee/ n.

[CMU, Tektronix: from `backward compatibility'] A property of hardware or software revisions in which previous protocols, formats, layouts, etc. are irrevocably discarded in favor of `new and improved' protocols, formats, and layouts, leaving the previous ones not merely deprecated but actively defeated. (Too often, the old and new versions cannot definitively be distinguished, such that lingering instances of the previous ones yield crashes or other infelicitous effects, as opposed to a simple "version mismatch" message.) A backwards compatible change, on the other hand, allows old versions to coexist without crashes or error messages, but too many major changes incorporating elaborate backwards compatibility processing can lead to extreme software bloat. See also flag day.

Node:BAD, Next:Bad and Wrong, Previous:backward combatability, Up:= B =

BAD /B-A-D/ adj.

[IBM: acronym, `Broken As Designed'] Said of a program that is bogus because of bad design and misfeatures rather than because of bugginess. See working as designed.

Node:Bad and Wrong, Next:Bad Thing, Previous:BAD, Up:= B =

Bad and Wrong adj.

[Durham, UK] Said of something that is both badly designed and wrongly executed. This common term is the prototype of, and is used by contrast with, three less common terms - Bad and Right (a kludge, something ugly but functional); Good and Wrong (an overblown GUI or other attractive nuisance); and (rare praise) Good and Right. These terms entered common use at Durham c.1994 and may have been imported from elsewhere; they are also in use at Oxford, and the emphatic form "Evil, Bad and Wrong" (abbreviated EBW) is reported fromm there. There are standard abbreviations: they start with B&R, a typo for "Bad and Wrong". Consequently, B&W is actually "Bad and Right", G&R = "Good and Wrong", and G&W = "Good and Right". Compare evil and rude, Good Thing, Bad Thing.

Node:Bad Thing, Next:bag on the side, Previous:Bad and Wrong, Up:= B =

Bad Thing n.

[very common; from the 1930 Sellar & Yeatman parody "1066 And All That"] Something that can't possibly result in improvement of the subject. This term is always capitalized, as in "Replacing all of the 9600-baud modems with bicycle couriers would be a Bad Thing". Oppose Good Thing. British correspondents confirm that Bad Thing and Good Thing (and prob. therefore Right Thing and Wrong Thing) come from the book referenced in the etymology, which discusses rulers who were Good Kings but Bad Things. This has apparently created a mainstream idiom on the British side of the pond. It is very common among American hackers, but not in mainstream usage here. Compare Bad and Wrong.

Node:bag on the side, Next:bagbiter, Previous:Bad Thing, Up:= B =

bag on the side n.

[prob. originally related to a colostomy bag] An extension to an established hack that is supposed to add some functionality to the original. Usually derogatory, implying that the original was being overextended and should have been thrown away, and the new product is ugly, inelegant, or bloated. Also v. phrase, `to hang a bag on the side [of]'. "C++? That's just a bag on the side of C ...." "They want me to hang a bag on the side of the accounting system."

Node:bagbiter, Next:bagbiting, Previous:bag on the side, Up:= B =

bagbiter /bag'bi:t-*r/ n.

1. Something, such as a program or a computer, that fails to work, or works in a remarkably clumsy manner. "This text editor won't let me make a file with a line longer than 80 characters! What a bagbiter!" 2. A person who has caused you some trouble, inadvertently or otherwise, typically by failing to program the computer properly. Synonyms: loser, cretin, chomper. 3. `bite the bag' vi. To fail in some manner. "The computer keeps crashing every five minutes." "Yes, the disk controller is really biting the bag."

The original loading of these terms was almost undoubtedly obscene, possibly referring to a douche bag or the scrotum (we have reports of "Bite the douche bag!" being used as a taunt at MIT 1970-1976, and we have another report that "Bite the bag!" was in common use at least as early as 1965), but in their current usage they have become almost completely sanitized.

ITS's lexiphage program was the first and to date only known example of a program intended to be a bagbiter.

Node:bagbiting, Next:baggy pantsing, Previous:bagbiter, Up:= B =

bagbiting adj.

Having the quality of a bagbiter. "This bagbiting system won't let me compute the factorial of a negative number." Compare losing, cretinous, bletcherous, `barfucious' (under barfulous) and `chomping' (under chomp).

Node:baggy pantsing, Next:balloonian variable, Previous:bagbiting, Up:= B =

baggy pantsing v.

[Georgia Tech] A "baggy pantsing" is used to reprimand hackers who incautiously leave their terminals unlocked. The affected user will come back to find a post from them on internal newsgroups discussing exactly how baggy their pants are, an accepted stand-in for "unattentive user who left their work unprotected in the clusters". A properly-done baggy pantsing is highly mocking and humorous (see examples below). It is considered bad form to post a baggy pantsing to off-campus newsgroups or the more technical, serious groups. A particularly nice baggy pantsing may be "claimed" by immediately quoting the message in full, followed by your sig; this has the added benefit of keeping the embarassed victim from being able to delete the post. Interesting baggy-pantsings have been done involving adding commands to login scripts to repost the message every time the unlucky user logs in; Unix boxes on the residential network, when cracked, oftentimes have their homepages replaced (after being politely backedup to another file) with a baggy-pants message; .plan files are also occasionally targeted. Usage: "Prof. Greenlee fell asleep in the Solaris cluster again; we baggy-pantsed him to git.cc.class.2430.flame."

Node:balloonian variable, Next:bamf, Previous:baggy pantsing, Up:= B =

balloonian variable n.

[Commodore users; perh. a deliberate phonetic mangling of `boolean variable'?] Any variable that doesn't actually hold or control state, but must nevertheless be declared, checked, or set. A typical balloonian variable started out as a flag attached to some environment feature that either became obsolete or was planned but never implemented. Compatibility concerns (or politics attached to same) may require that such a flag be treated as though it were live.

Node:bamf, Next:banana label, Previous:balloonian variable, Up:= B =

bamf /bamf/

1. [from X-Men comics; originally "bampf"] interj. Notional sound made by a person or object teleporting in or out of the hearer's vicinity. Often used in virtual reality (esp. MUD) electronic fora when a character wishes to make a dramatic entrance or exit. 2. The sound of magical transformation, used in virtual reality fora like MUDs. 3. In MUD circles, "bamf" is also used to refer to the act by which a MUD server sends a special notification to the MUD client to switch its connection to another server ("I'll set up the old site to just bamf people over to our new location."). 4. Used by MUDders on occasion in a more general sense related to sense 3, to refer to directing someone to another location or resource ("A user was asking about some technobabble so I bamfed them to http://www.tuxedo.org/jargon/".)

Node:banana label, Next:banana problem, Previous:bamf, Up:= B =

banana label n.

The labels often used on the sides of macrotape reels, so called because they are shaped roughly like blunt-ended bananas. This term, like macrotapes themselves, is still current but visibly headed for obsolescence.

Node:banana problem, Next:binary four, Previous:banana label, Up:= B =

banana problem n.

[from the story of the little girl who said "I know how to spell `banana', but I don't know when to stop"]. Not knowing where or when to bring a production to a close (compare fencepost error). One may say `there is a banana problem' of an algorithm with poorly defined or incorrect termination conditions, or in discussing the evolution of a design that may be succumbing to featuritis (see also creeping elegance, creeping featuritis). See item 176 under HAKMEM, which describes a banana problem in a Dissociated Press implementation. Also, see one-banana problem for a superficially similar but unrelated usage.

Node:binary four, Next:bandwidth, Previous:banana problem, Up:= B =

binary four n.

[Usenet] The finger, in the sense of `digitus impudicus'. This comes from an analogy between binary and the hand, i.e. 1=00001=thumb, 2=00010=index finger, 3=00011=index and thumb, 4=00100. Considered silly. Prob. from humorous derivative of finger, sense 4.

Node:bandwidth, Next:bang, Previous:binary four, Up:= B =

bandwidth n.

1. [common] Used by hackers (in a generalization of its technical meaning) as the volume of information per unit time that a computer, person, or transmission medium can handle. "Those are amazing graphics, but I missed some of the detail -- not enough bandwidth, I guess." Compare low-bandwidth. This generalized usage began to go mainstream after the Internet population explosion of 1993-1994. 2. Attention span. 3. On Usenet, a measure of network capacity that is often wasted by people complaining about how items posted by others are a waste of bandwidth.

Node:bang, Next:bang on, Previous:bandwidth, Up:= B =

bang

1. n. Common spoken name for ! (ASCII 0100001), especially when used in pronouncing a bang path in spoken hackish. In elder days this was considered a CMUish usage, with MIT and Stanford hackers preferring excl or shriek; but the spread of Unix has carried `bang' with it (esp. via the term bang path) and it is now certainly the most common spoken name for !. Note that it is used exclusively for non-emphatic written !; one would not say "Congratulations bang" (except possibly for humorous purposes), but if one wanted to specify the exact characters `foo!' one would speak "Eff oh oh bang". See shriek, ASCII. 2. interj. An exclamation signifying roughly "I have achieved enlightenment!", or "The dynamite has cleared out my brain!" Often used to acknowledge that one has perpetrated a thinko immediately after one has been called on it.

Node:bang on, Next:bang path, Previous:bang, Up:= B =

bang on vt.

To stress-test a piece of hardware or software: "I banged on the new version of the simulator all day yesterday and it didn't crash once. I guess it is ready for release." The term pound on is synonymous.

Node:bang path, Next:banner, Previous:bang on, Up:= B =

bang path n.

[now historical] An old-style UUCP electronic-mail address specifying hops to get from some assumed-reachable location to the addressee, so called because each hop is signified by a bang sign. Thus, for example, the path _...!bigsite!foovax!barbox!me_ directs people to route their mail to machine _bigsite_ (presumably a well-known location accessible to everybody) and from there through the machine _foovax_ to the account of user _me_ on _barbox_.

In the bad old days of not so long ago, before autorouting mailers became commonplace, people often published compound bang addresses using the { } convention (see glob) to give paths from several big machines, in the hopes that one's correspondent might be able to get mail to one of them reliably (example: _...!{seismo, ut-sally, ihnp4}!rice!beta!gamma!me_). Bang paths of 8 to 10 hops were not uncommon in 1981. Late-night dial-up UUCP links would cause week-long transmission times. Bang paths were often selected by both transmission time and reliability, as messages would often get lost. See Internet address, the network, and sitename.

Node:banner, Next:banner ad, Previous:bang path, Up:= B =

banner n.

1. The title page added to printouts by most print spoolers (see spool). Typically includes user or account ID information in very large character-graphics capitals. Also called a `burst page', because it indicates where to burst (tear apart) fanfold paper to separate one user's printout from the next. 2. A similar printout generated (typically on multiple pages of fan-fold paper) from user-specified text, e.g., by a program such as Unix's banner({1,6}). 3. On interactive software, a first screen containing a logo and/or author credits and/or a copyright notice. This is probably now the commonest sense.

Node:banner ad, Next:banner site, Previous:banner, Up:= B =

banner ad n.

Any of the annoying graphical advertisements that span the tops of way too many Web pages.

Node:banner site, Next:bar, Previous:banner ad, Up:= B =

banner site n.

[warez d00dz] A FTP site storing pirated files where one must first click on several banners and/or subscribe to various `free' services, usually generating some form of revenues for the site owner, to be able to access the site. More often than not, the username/password painfully obtained by clicking on banners and subscribing to bogus services or mailing lists turns out to be non-working or gives access to a site that always responds busy. See ratio site, leech mode.

Node:bar, Next:bare metal, Previous:banner site, Up:= B =

bar /bar/ n.

1. [very common] The second metasyntactic variable, after foo and before baz. "Suppose we have two functions: FOO and BAR. FOO calls BAR...." 2. Often appended to foo to produce foobar.

Node:bare metal, Next:barf, Previous:bar, Up:= B =

bare metal n.

1. [common] New computer hardware, unadorned with such snares and delusions as an operating system, an HLL, or even assembler. Commonly used in the phrase `programming on the bare metal', which refers to the arduous work of bit bashing needed to create these basic tools for a new machine. Real bare-metal programming involves things like building boot proms and BIOS chips, implementing basic monitors used to test device drivers, and writing the assemblers that will be used to write the compiler back ends that will give the new machine a real development environment. 2. `Programming on the bare metal' is also used to describe a style of hand-hacking that relies on bit-level peculiarities of a particular hardware design, esp. tricks for speed and space optimization that rely on crocks such as overlapping instructions (or, as in the famous case described in The Story of Mel (in Appendix A), interleaving of opcodes on a magnetic drum to minimize fetch delays due to the device's rotational latency). This sort of thing has become less common as the relative costs of programming time and machine resources have changed, but is still found in heavily constrained environments such as industrial embedded systems, and in the code of hackers who just can't let go of that low-level control. See Real Programmer.

In the world of personal computing, bare metal programming (especially in sense 1 but sometimes also in sense 2) is often considered a Good Thing, or at least a necessary evil (because these machines have often been sufficiently slow and poorly designed to make it necessary; see ill-behaved). There, the term usually refers to bypassing the BIOS or OS interface and writing the application to directly access device registers and machine addresses. "To get 19.2 kilobaud on the serial port, you need to get down to the bare metal." People who can do this sort of thing well are held in high regard.

Node:barf, Next:barfmail, Previous:bare metal, Up:= B =

barf /barf/ n.,v.

[common; from mainstream slang meaning `vomit'] 1. interj. Term of disgust. This is the closest hackish equivalent of the Valspeak "gag me with a spoon". (Like, euwww!) See bletch. 2. vi. To say "Barf!" or emit some similar expression of disgust. "I showed him my latest hack and he barfed" means only that he complained about it, not that he literally vomited. 3. vi. To fail to work because of unacceptable input, perhaps with a suitable error message, perhaps not. Examples: "The division operation barfs if you try to divide by 0." (That is, the division operation checks for an attempt to divide by zero, and if one is encountered it causes the operation to fail in some unspecified, but generally obvious, manner.) "The text editor barfs if you try to read in a new file before writing out the old one." See choke, gag. In Commonwealth Hackish, `barf' is generally replaced by `puke' or `vom'. barf is sometimes also used as a metasyntactic variable, like foo or bar.

Node:barfmail, Next:barfulation, Previous:barf, Up:= B =

barfmail n.

Multiple bounce messages accumulating to the level of serious annoyance, or worse. The sort of thing that happens when an inter-network mail gateway goes down or wonky.

Node:barfulation, Next:barfulous, Previous:barfmail, Up:= B =

barfulation /bar`fyoo-lay'sh*n/ interj.

Variation of barf used around the Stanford area. An exclamation, expressing disgust. On seeing some particularly bad code one might exclaim, "Barfulation! Who wrote this, Quux?"

Node:barfulous, Next:barn, Previous:barfulation, Up:= B =

barfulous /bar'fyoo-l*s/ adj.

(alt. `barfucious', /bar-fyoo-sh*s/) Said of something that would make anyone barf, if only for esthetic reasons.

Node:barn, Next:barney, Previous:barfulous, Up:= B =

barn n.

[uncommon; prob. from the nuclear military] An unexpectedly large quantity of something: a unit of measurement. "Why is /var/adm taking up so much space?" "The logs have grown to several barns." The source of this is clear: when physicists were first studying nuclear interactions, the probability was thought to be proportional to the cross-sectional area of the nucleus (this probability is still called the cross-section). Upon experimenting, they discovered the interactions were far more probable than expected; the nuclei were `as big as a barn'. The units for cross-sections were christened Barns, (10^-24 cm^2) and the book containing cross-sections has a picture of a barn on the cover.

Node:barney, Next:baroque, Previous:barn, Up:= B =

barney n.

In Commonwealth hackish, `barney' is to fred (sense #1) as bar is to foo. That is, people who commonly use `fred' as their first metasyntactic variable will often use `barney' second. The reference is, of course, to Fred Flintstone and Barney Rubble in the Flintstones cartoons.

Node:baroque, Next:BASIC, Previous:barney, Up:= B =

baroque adj.

[common] Feature-encrusted; complex; gaudy; verging on excessive. Said of hardware or (esp.) software designs, this has many of the connotations of elephantine or monstrosity but is less extreme and not pejorative in itself. "Metafont even has features to introduce random variations to its letterform output. Now that is baroque!" See also rococo.

Node:BASIC, Next:batbelt, Previous:baroque, Up:= B =

BASIC /bay'-sic/ n.

A programming language, originally designed for Dartmouth's experimental timesharing system in the early 1960s, which for many years was the leading cause of brain damage in proto-hackers. Edsger W. Dijkstra observed in "Selected Writings on Computing: A Personal Perspective" that "It is practically impossible to teach good programming style to students that have had prior exposure to BASIC: as potential programmers they are mentally mutilated beyond hope of regeneration." This is another case (like Pascal) of the cascading lossage that happens when a language deliberately designed as an educational toy gets taken too seriously. A novice can write short BASIC programs (on the order of 10-20 lines) very easily; writing anything longer (a) is very painful, and (b) encourages bad habits that will make it harder to use more powerful languages well. This wouldn't be so bad if historical accidents hadn't made BASIC so common on low-end micros in the 1980s. As it is, it probably ruined tens of thousands of potential wizards.

[1995: Some languages called `BASIC' aren't quite this nasty any more, having acquired Pascal- and C-like procedures and control structures and shed their line numbers. --ESR]

Note: the name is commonly parsed as Beginner's All-purpose Symbolic Instruction Code, but this is a backronym. BASIC was originally named Basic, simply because it was a simple and basic programming language. Because most programming language names were in fact acronyms, BASIC was often capitalized just out of habit or to be silly. No acronym for BASIC originally existed or was intended (as one can verify by reading texts through the early 1970s). Later, around the mid-1970s, people began to make up backronyms for BASIC because they weren't sure. Beginner's All-purpose Symbolic Instruction Code is the one that caught on.

Node:batbelt, Next:batch, Previous:BASIC, Up:= B =

batbelt n.

Many hackers routinely hang numerous devices such as pagers, cell-phones, personal organizers, leatherman multitools, pocket knives, flashlights, walkie-talkies, even miniature computers from their belts. When many of these devices are worn at once, the hacker's belt somewhat resembles Batman's utility belt; hence it is referred to as a batbelt.

Node:batch, Next:bathtub curve, Previous:batbelt, Up:= B =

batch adj.

1. Non-interactive. Hackers use this somewhat more loosely than the traditional technical definitions justify; in particular, switches on a normally interactive program that prepare it to receive non-interactive command input are often referred to as `batch mode' switches. A `batch file' is a series of instructions written to be handed to an interactive program running in batch mode. 2. Performance of dreary tasks all at one sitting. "I finally sat down in batch mode and wrote out checks for all those bills; I guess they'll turn the electricity back on next week..." 3. `batching up': Accumulation of a number of small tasks that can be lumped together for greater efficiency. "I'm batching up those letters to send sometime" "I'm batching up bottles to take to the recycling center."

Node:bathtub curve, Next:baud, Previous:batch, Up:= B =

bathtub curve n.

Common term for the curve (resembling an end-to-end section of one of those claw-footed antique bathtubs) that describes the expected failure rate of electronics with time: initially high, dropping to near 0 for most of the system's lifetime, then rising again as it `tires out'. See also burn-in period, infant mortality.

Node:baud, Next:baud barf, Previous:bathtub curve, Up:= B =

baud /bawd/ n.