The Jargon File, Version 4.0.0, 24 Jul 1996
Chapter 22
Note: This last item refers to a {Dissociated Press} implementation. See also {banana problem}.
HAKMEM also contains some rather more complicated mathematical and technical items, but these examples show some of its fun flavor.
An HTML transcription of the document is available at ftp://ftp.netcom.com/pub/hb/hbaker/hakmem/hakmem.html.
:hakspek: /hak'speek/ /n./ A shorthand method of spelling found on many British academic bulletin boards and {talker system}s. Syllables and whole words in a sentence are replaced by single ASCII characters the names of which are phonetically similar or equivalent, while multiple letters are usually dropped. Hence, `for' becomes `4'; `two', `too', and `to' become `2'; `ck' becomes `k'. "Before I see you tomorrow" becomes "b4 i c u 2moro". First appeared in London about 1986, and was probably caused by the slowness of available talker systems, which operated on archaic machines with outdated operating systems and no standard methods of communication. Has become rarer since. See also {talk mode}.
:hammer: /vt./ Commonwealth hackish syn. for {bang on}.
:hamster: /n./ 1. [Fairchild] A particularly slick little piece of code that does one thing well; a small, self-contained hack. The image is of a hamster {happily} spinning its exercise wheel. 2. A tailless mouse; that is, one with an infrared link to a receiver on the machine, as opposed to the conventional cable. 3. [UK] Any item of hardware made by Amstrad, a company famous for its cheap plastic PC-almost-compatibles.
:hand cruft: /vt./ [pun on `hand craft'] See {cruft}, sense 3.
:hand-hacking: /n./ 1. The practice of translating {hot spot}s from an {HLL} into hand-tuned assembler, as opposed to trying to coerce the compiler into generating better code. Both the term and the practice are becoming uncommon. See {tune}, {bum}, {by hand}; syn. with /v./ {cruft}. 2. More generally, manual construction or patching of data sets that would normally be generated by a translation utility and interpreted by another program, and aren't really designed to be read or modified by humans.
:hand-roll: /v./ [from obs. mainstream slang `hand-rolled' in opposition to `ready-made', referring to cigarettes] To perform a normally automated software installation or configuration process {by hand}; implies that the normal process failed due to bugs in the configurator or was defeated by something exceptional in the local environment. "The worst thing about being a gateway between four different nets is having to hand-roll a new sendmail configuration every time any of them upgrades."
:handle: /n./ 1. [from CB slang] An electronic pseudonym; a `nom de guerre' intended to conceal the user's true identity. Network and BBS handles function as the same sort of simultaneous concealment and display one finds on Citizen's Band radio, from which the term was adopted. Use of grandiose handles is characteristic of {warez d00dz}, {cracker}s, {weenie}s, {spod}s, and other lower forms of network life; true hackers travel on their own reputations rather than invented legendry. Compare {nick}. 2. [Mac] A pointer to a pointer to dynamically-allocated memory; the extra level of indirection allows on-the-fly memory compaction (to cut down on fragmentation) or aging out of unused resources, with minimal impact on the (possibly multiple) parts of the larger program containing references to the allocated memory. Compare {snap} (to snap a handle would defeat its purpose); see also {aliasing bug}, {dangling pointer}.
:handshaking: /n./ Hardware or software activity designed to start or keep two machines or programs in synchronization as they {do protocol}. Often applied to human activity; thus, a hacker might watch two people in conversation nodding their heads to indicate that they have heard each others' points and say "Oh, they're handshaking!". See also {protocol}.
:handwave: [poss. from gestures characteristic of stage magicians] 1. /v./ To gloss over a complex point; to distract a listener; to support a (possibly actually valid) point with blatantly faulty logic. 2. /n./ The act of handwaving. "Boy, what a handwave!"
If someone starts a sentence with "Clearly..." or "Obviously..." or "It is self-evident that...", it is a good bet he is about to handwave (alternatively, use of these constructions in a sarcastic tone before a paraphrase of someone else's argument suggests that it is a handwave). The theory behind this term is that if you wave your hands at the right moment, the listener may be sufficiently distracted to not notice that what you have said is {bogus}. Failing that, if a listener does object, you might try to dismiss the objection with a wave of your hand.
The use of this word is often accompanied by gestures: both hands up, palms forward, swinging the hands in a vertical plane pivoting at the elbows and/or shoulders (depending on the magnitude of the handwave); alternatively, holding the forearms in one position while rotating the hands at the wrist to make them flutter. In context, the gestures alone can suffice as a remark; if a speaker makes an outrageously unsupported assumption, you might simply wave your hands in this way, as an accusation, far more eloquent than words could express, that his logic is faulty.
:hang: /v./ 1. To wait for an event that will never occur. "The system is hanging because it can't read from the crashed drive". See {wedged}, {hung}. 2. To wait for some event to occur; to hang around until something happens. "The program displays a menu and then hangs until you type a character." Compare {block}. 3. To attach a peripheral device, esp. in the construction `hang off': "We're going to hang another tape drive off the file server." Implies a device attached with cables, rather than something that is strictly inside the machine's chassis.
:Hanlon's Razor: /prov./ A corollary of {Finagle's Law}, similar to Occam's Razor, that reads "Never attribute to malice that which can be adequately explained by stupidity." The derivation of the Hanlon eponym is not definitely known, but a very similar remark ("You have attributed conditions to villainy that simply result from stupidity.") appears in "Logic of Empire", a 1941 story by Robert A. Heinlein, who calls it the `devil theory' of sociology. Heinlein's popularity in the hacker culture makes plausible the supposition that `Hanlon' is derived from `Heinlein' by phonetic corruption. A similar epigram has been attributed to William James, but Heinlein more probably got the idea from Alfred Korzybski and other practitioners of General Semantics. Quoted here because it seems to be a particular favorite of hackers, often showing up in {sig block}s, {fortune cookie} files and the login banners of BBS systems and commercial networks. This probably reflects the hacker's daily experience of environments created by well-intentioned but short-sighted people. Compare {Sturgeon's Law}.
:happily: /adv./ Of software, used to emphasize that a program is unaware of some important fact about its environment, either because it has been fooled into believing a lie, or because it doesn't care. The sense of `happy' here is not that of elation, but rather that of blissful ignorance. "The program continues to run, happily unaware that its output is going to /dev/null." Also used to suggest that a program or device would really rather be doing something destructive, and is being given an opportunity to do so. "If you enter an O here instead of a zero, the program will happily erase all your data."
:haque: /hak/ /n./ [Usenet] Variant spelling of {hack}, used only for the noun form and connoting an {elegant} hack. that is a {hack} in sense 2.
:hard boot: /n./ See {boot}.
:hardcoded: /adj./ 1. Said of data inserted directly into a program, where it cannot be easily modified, as opposed to data in some {profile}, resource (see {de-rezz} sense 2), or environment variable that a {user} or hacker can easily modify. 2. In C, this is esp. applied to use of a literal instead of a `#define' macro (see {magic number}).
:hardwarily: /hard-weir'*-lee/ /adv./ In a way pertaining to hardware. "The system is hardwarily unreliable." The adjective `hardwary' is *not* traditionally used, though it has recently been reported from the U.K. See {softwarily}.
:hardwired: /adj./ 1. In software, syn. for {hardcoded}. 2. By extension, anything that is not modifiable, especially in the sense of customizable to one's particular needs or tastes.
:has the X nature: [seems to derive from Zen Buddhist koans of the form "Does an X have the Buddha-nature?"] /adj./ Common hacker construction for `is an X', used for humorous emphasis. "Anyone who can't even use a program with on-screen help embedded in it truly has the {loser} nature!" See also {the X that can be Y is not the true X}.
:hash bucket: /n./ A notional receptacle, a set of which might be used to apportion data items for sorting or lookup purposes. When you look up a name in the phone book (for example), you typically hash it by extracting its first letter; the hash buckets are the alphabetically ordered letter sections. This term is used as techspeak with respect to code that uses actual hash functions; in jargon, it is used for human associative memory as well. Thus, two things `in the same hash bucket' are more difficult to discriminate, and may be confused. "If you hash English words only by length, you get too many common grammar words in the first couple of hash buckets." Compare {hash collision}.
:hash collision: /n./ [from the techspeak] (var. `hash clash') When used of people, signifies a confusion in associative memory or imagination, especially a persistent one (see {thinko}). True story: One of us [ESR] was once on the phone with a friend about to move out to Berkeley. When asked what he expected Berkeley to be like, the friend replied: "Well, I have this mental picture of naked women throwing Molotov cocktails, but I think that's just a collision in my hash tables." Compare {hash bucket}.
:hat: /n./ Common (spoken) name for the circumflex (`^', ASCII 1011110) character. See {ASCII} for other synonyms.
:HCF: /H-C-F/ /n./ Mnemonic for `Halt and Catch Fire', any of several undocumented and semi-mythical machine instructions with destructive side-effects, supposedly included for test purposes on several well-known architectures going as far back as the IBM 360. The MC6800 microprocessor was the first for which an HCF opcode became widely known. This instruction caused the processor to {toggle} a subset of the bus lines as rapidly as it could; in some configurations this could actually cause lines to burn up.
:heads down: [Sun] /adj./ Concentrating, usually so heavily and for so long that everything outside the focus area is missed. See also {hack mode} and {larval stage}, although this mode is hardly confined to fledgling hackers.
:heartbeat: /n./ 1. The signal emitted by a Level 2 Ethernet transceiver at the end of every packet to show that the collision-detection circuit is still connected. 2. A periodic synchronization signal used by software or hardware, such as a bus clock or a periodic interrupt. 3. The `natural' oscillation frequency of a computer's clock crystal, before frequency division down to the machine's clock rate. 4. A signal emitted at regular intervals by software to demonstrate that it is still alive. Sometimes hardware is designed to reboot the machine if it stops hearing a heartbeat. See also {breath-of-life packet}.
:heatseeker: /n./ [IBM] A customer who can be relied upon to buy, without fail, the latest version of an existing product (not quite the same as a member of the {lunatic fringe}). A 1993 example of a heatseeker is someone who, owning a 286 PC and Windows 3.0, goes out and buys Windows 3.1 (which offers no worthwhile benefits unless you have a 386). If all customers were heatseekers, vast amounts of money could be made by just fixing the bugs in each release (n) and selling it to them as release (n+1).
:heavy metal: /n./ [Cambridge] Syn. {big iron}.
:heavy wizardry: /n./ Code or designs that trade on a particularly intimate knowledge or experience of a particular operating system or language or complex application interface. Distinguished from {deep magic}, which trades more on arcane *theoretical* knowledge. Writing device drivers is heavy wizardry; so is interfacing to {X} (sense 2) without a toolkit. Esp. found in source-code comments of the form "Heavy wizardry begins here". Compare {voodoo programming}.
:heavyweight: /adj./ High-overhead; {baroque}; code-intensive; featureful, but costly. Esp. used of communication protocols, language designs, and any sort of implementation in which maximum generality and/or ease of implementation has been pushed at the expense of mundane considerations such as speed, memory utilization, and startup time. {EMACS} is a heavyweight editor; {X} is an *extremely* heavyweight window system. This term isn't pejorative, but one hacker's heavyweight is another's {elephantine} and a third's {monstrosity}. Oppose `lightweight'. Usage: now borders on techspeak, especially in the compound `heavyweight process'.
:heisenbug: /hi:'zen-buhg/ /n./ [from Heisenberg's Uncertainty Principle in quantum physics] A bug that disappears or alters its behavior when one attempts to probe or isolate it. (This usage is not even particularly fanciful; the use of a debugger sometimes alters a program's operating environment significantly enough that buggy code, such as that which relies on the values of uninitialized memory, behaves quite differently.) Antonym of {Bohr bug}; see also {mandelbug}, {schroedinbug}. In C, nine out of ten heisenbugs result from uninitialized auto variables, {fandango on core} phenomena (esp. lossage related to corruption of the malloc {arena}) or errors that {smash the stack}.
:Helen Keller mode: /n./ 1. State of a hardware or software system that is deaf, dumb, and blind, i.e., accepting no input and generating no output, usually due to an infinite loop or some other excursion into {deep space}. (Unfair to the real Helen Keller, whose success at learning speech was triumphant.) See also {go flatline}, {catatonic}. 2. On IBM PCs under DOS, refers to a specific failure mode in which a screen saver has kicked in over an {ill-behaved} application which bypasses the very interrupts the screen saver watches for activity. Your choices are to try to get from the program's current state through a successful save-and-exit without being able to see what you're doing, or to re-boot the machine. This isn't (strictly speaking) a crash.
:hello, sailor!: /interj./ Occasional West Coast equivalent of {hello, world}; seems to have originated at SAIL, later associated with the game {Zork} (which also included "hello, aviator" and "hello, implementor"). Originally from the traditional hooker's greeting to a swabbie fresh off the boat, of course.
:hello, wall!: /excl./ See {wall}.
:hello, world: /interj./ 1. The canonical minimal test message in the C/Unix universe. 2. Any of the minimal programs that emit this message. Traditionally, the first program a C coder is supposed to write in a new environment is one that just prints "hello, world" to standard output (and indeed it is the first example program in {K&R}). Environments that generate an unreasonably large executable for this trivial test or which require a {hairy} compiler-linker invocation to generate it are considered to {lose} (see {X}). 3. Greeting uttered by a hacker making an entrance or requesting information from anyone present. "Hello, world! Is the {VAX} back up yet?"
:hex: /n./ 1. Short for {{hexadecimal}}, base 16. 2. A 6-pack of anything (compare {quad}, sense 2). Neither usage has anything to do with {magic} or {black art}, though the pun is appreciated and occasionally used by hackers. True story: As a joke, some hackers once offered some surplus ICs for sale to be worn as protective amulets against hostile magic. The chips were, of course, hex inverters.
:hexadecimal:: /n./ Base 16. Coined in the early 1960s to replace earlier `sexadecimal', which was too racy and amusing for stuffy IBM, and later adopted by the rest of the industry.
Actually, neither term is etymologically pure. If we take `binary' to be paradigmatic, the most etymologically correct term for base 10, for example, is `denary', which comes from `deni' (ten at a time, ten each), a Latin `distributive' number; the corresponding term for base-16 would be something like `sendenary'. `Decimal' is from an ordinal number; the corresponding prefix for 6 would imply something like `sextidecimal'. The `sexa-' prefix is Latin but incorrect in this context, and `hexa-' is Greek. The word `octal' is similarly incorrect; a correct form would be `octaval' (to go with decimal), or `octonary' (to go with binary). If anyone ever implements a base-3 computer, computer scientists will be faced with the unprecedented dilemma of a choice between two *correct* forms; both `ternary' and `trinary' have a claim to this throne.
:hexit: /hek'sit/ /n./ A hexadecimal digit (0--9, and A--F or a--f). Used by people who claim that there are only *ten* digits, dammit; sixteen-fingered human beings are rather rare, despite what some keyboard designs might seem to imply (see {space-cadet keyboard}).
:HHOK: See {ha ha only serious}.
:HHOS: See {ha ha only serious}.
:hidden flag: /n./ [scientific computation] An extra option added to a routine without changing the calling sequence. For example, instead of adding an explicit input variable to instruct a routine to give extra diagnostic output, the programmer might just add a test for some otherwise meaningless feature of the existing inputs, such as a negative mass. The use of hidden flags can make a program very hard to debug and understand, but is all too common wherever programs are hacked on in a hurry.
:high bit: /n./ [from `high-order bit'] 1. The most significant bit in a byte. 2. By extension, the most significant part of something other than a data byte: "Spare me the whole {saga}, just give me the high bit." See also {meta bit}, {hobbit}, {dread high-bit disease}, and compare the mainstream slang `bottom line'.
:high moby: /hi:' mohb'ee/ /n./ The high half of a 512K {PDP-10}'s physical address space; the other half was of course the low moby. This usage has been generalized in a way that has outlasted the {PDP-10}; for example, at the 1990 Washington D.C. Area Science Fiction Conclave (Disclave), when a miscommunication resulted in two separate wakes being held in commemoration of the shutdown of MIT's last {{ITS}} machines, the one on the upper floor was dubbed the `high moby' and the other the `low moby'. All parties involved {grok}ked this instantly. See {moby}.
:highly: /adv./ [scientific computation] The preferred modifier for overstating an understatement. As in: `highly nonoptimal', the worst possible way to do something; `highly nontrivial', either impossible or requiring a major research project; `highly nonlinear', completely erratic and unpredictable; `highly nontechnical', drivel written for {luser}s, oversimplified to the point of being misleading or incorrect (compare {drool-proof paper}). In other computing cultures, postfixing of {in the extreme} might be preferred.
:hing: // /n./ [IRC] Fortuitous typo for `hint', now in wide intentional use among players of {initgame}. Compare {newsfroup}, {filk}.
:hired gun: /n./ A contract programmer, as opposed to a full-time staff member. All the connotations of this term suggested by innumerable spaghetti Westerns are intentional.
:hirsute: /adj./ Occasionally used humorously as a synonym for {hairy}.
:HLL: /H-L-L/ /n./ [High-Level Language (as opposed to assembler)] Found primarily in email and news rather than speech. Rarely, the variants `VHLL' and `MLL' are found. VHLL stands for `Very-High-Level Language' and is used to describe a {bondage-and-discipline language} that the speaker happens to like; Prolog and Backus's FP are often called VHLLs. `MLL' stands for `Medium-Level Language' and is sometimes used half-jokingly to describe {C}, alluding to its `structured-assembler' image. See also {languages of choice}.
:hoarding: /n./ See {software hoarding}.
:hobbit: /n./ 1. The High Order BIT of a byte; same as the {meta bit} or {high bit}. 2. The non-ITS name of [email protected] (*Hobbit*), master of lasers.
:hog: /n.,vt./ 1. Favored term to describe programs or hardware that seem to eat far more than their share of a system's resources, esp. those which noticeably degrade interactive response. *Not* used of programs that are simply extremely large or complex or that are merely painfully slow themselves (see {pig, run like a}). More often than not encountered in qualified forms, e.g., `memory hog', `core hog', `hog the processor', `hog the disk'. "A controller that never gives up the I/O bus gets killed after the bus-hog timer expires." 2. Also said of *people* who use more than their fair share of resources (particularly disk, where it seems that 10% of the people use 90% of the disk, no matter how big the disk is or how many people use it). Of course, once disk hogs fill up one filesystem, they typically find some other new one to infect, claiming to the sysadmin that they have an important new project to complete.
:hole: /n./ A region in an otherwise {flat} entity which is not actually present. For example, some Unix filesystems can store large files with holes so that unused regions of the file are never actually stored on disk. (In techspeak, these are referred to as `sparse' files.) As another example, the region of memory in IBM PCs reserved for memory-mapped I/O devices which may not actually be present is called `the I/O hole', since memory-management systems must skip over this area when filling user requests for memory.
:hollised: /hol'ist/ /adj./ [Usenet: sci.space] To be hollised is to have been ordered by one's employer not to post any even remotely job-related material to USENET (or, by extension, to other Internet media). The original and most notorious case of this involved one Ken Hollis, a Lockheed employee and space-program enthusiast who posted publicly available material on access to Space Shuttle launches to sci.space. He was gagged under threat of being fired in 1994 at the behest of NASA public-relations officers. The result was, of course, a huge publicity black eye for NASA. Nevertheless several other NASA contractor employees were subsequently hollised for similar activities. Use of this term carries the strong connotation that the persons doing the gagging are bureaucratic idiots blinded to their own best interests by territorial reflexes.