4. Fascination with puns and wordplay.

5. A fondness for apparently mindless humor with subversive

currents of intelligence in it -- for example, old Warner Brothers

and Rocky & Bullwinkle cartoons, the Marx brothers, the early

B-52s, and Monty Python's Flying Circus. Humor that combines this

trait with elements of high camp and slapstick is especially

favored.

6. References to the symbol-object antinomies and associated ideas

in Zen Buddhism and (less often) Taoism. See {has the X nature},

{Discordianism}, {zen}, {ha ha only serious}, {AI koans}.

See also {filk}, {retrocomputing}, and {A Portrait of J.

Random Hacker} in Appendix B. If you have an itchy feeling that

all 6 of these traits are really aspects of one thing that is

incredibly difficult to talk about exactly, you are (a) correct and

(b) responding like a hacker. These traits are also recognizable

(though in a less marked form) throughout {{science-fiction

fandom}}.

:hacking run: /n./ [analogy with `bombing run' or `speed

run'] A hack session extended long outside normal working times,

especially one longer than 12 hours. May cause you to `change

phase the hard way' (see {phase}).

:Hacking X for Y: /n./ [ITS] Ritual phrasing of part of the

information which ITS made publicly available about each user.

This information (the INQUIR record) was a sort of form in which

the user could fill out various fields. On display, two of these

fields were always combined into a project description of the form

"Hacking X for Y" (e.g., `"Hacking perceptrons for

Minsky"'). This form of description became traditional and has

since been carried over to other systems with more general

facilities for self-advertisement (such as Unix {plan file}s).

:Hackintosh: /n./ 1. An Apple Lisa that has been hacked into

emulating a Macintosh (also called a `Mac XL'). 2. A Macintosh

assembled from parts theoretically belonging to different models in

the line.

:hackish: /hak'ish/ /adj./ (also {hackishness} n.) 1. Said

of something that is or involves a hack. 2. Of or pertaining to

hackers or the hacker subculture. See also {true-hacker}.

:hackishness: /n./ The quality of being or involving a hack.

This term is considered mildly silly. Syn. {hackitude}.

:hackitude: /n./ Syn. {hackishness}; this word is considered

sillier.

:hair: /n./ [back-formation from {hairy}] The complications

that make something hairy. "Decoding {TECO} commands requires

a certain amount of hair." Often seen in the phrase `infinite

hair', which connotes extreme complexity. Also in `hairiferous'

(tending to promote hair growth): "GNUMACS elisp encourages lusers

to write complex editing modes." "Yeah, it's pretty hairiferous

all right." (or just: "Hair squared!")

:hairball: /n./ [Fidonet] A large batch of messages that a

store-and-forward network is failing to forward when it should.

Often used in the phrase "Fido coughed up a hairball today",

meaning that the stuck messages have just come unstuck, producing a

flood of mail where there had previously been drought.

:hairy: /adj./ 1. Annoyingly complicated. "{DWIM} is

incredibly hairy." 2. Incomprehensible. "{DWIM} is

incredibly hairy." 3. Of people, high-powered, authoritative,

rare, expert, and/or incomprehensible. Hard to explain except in

context: "He knows this hairy lawyer who says there's nothing to

worry about." See also {hirsute}.

A well-known result in topology called the Brouwer Fixed-Point

Theorem states that any continuous transformation of a surface into

itself has at least one fixed point. Mathematically literate

hackers tend to associate the term `hairy' with the informal

version of this theorem; "You can't comb a hairy ball smooth."

The adjective `long-haired' is well-attested to have been in

slang use among scientists and engineers during the early 1950s; it

was equivalent to modern `hairy' senses 1 and 2, and was very

likely ancestral to the hackish use. In fact the noun

`long-hair' was at the time used to describe a person satisfying

sense 3. Both senses probably passed out of use when long hair

was adopted as a signature trait by the 1960s counterculture,

leaving hackish `hairy' as a sort of stunted mutant relic.

:HAKMEM: /hak'mem/ /n./ MIT AI Memo 239 (February 1972). A

legendary collection of neat mathematical and programming hacks

contributed by many people at MIT and elsewhere. (The title of the

memo really is "HAKMEM", which is a 6-letterism for `hacks

memo'.) Some of them are very useful techniques, powerful

theorems, or interesting unsolved problems, but most fall into the

category of mathematical and computer trivia. Here is a sampling

of the entries (with authors), slightly paraphrased:

Item 41 (Gene Salamin): There are exactly 23,000 prime numbers less

than 2^(18).

Item 46 (Rich Schroeppel): The most *probable* suit

distribution in bridge hands is 4-4-3-2, as compared to 4-3-3-3,

which is the most *evenly* distributed. This is because the

world likes to have unequal numbers: a thermodynamic effect saying

things will not be in the state of lowest energy, but in the state

of lowest disordered energy.

Item 81 (Rich Schroeppel): Count the magic squares of order 5

(that is, all the 5-by-5 arrangements of the numbers from 1 to 25

such that all rows, columns, and diagonals add up to the same

number). There are about 320 million, not counting those that

differ only by rotation and reflection.

Item 154 (Bill Gosper): The myth that any given programming

language is machine independent is easily exploded by computing the

sum of powers of 2. If the result loops with period = 1

with sign +, you are on a sign-magnitude machine. If the

result loops with period = 1 at -1, you are on a

twos-complement machine. If the result loops with period greater

than 1, including the beginning, you are on a ones-complement

machine. If the result loops with period greater than 1, not

including the beginning, your machine isn't binary -- the pattern

should tell you the base. If you run out of memory, you are on a

string or bignum system. If arithmetic overflow is a fatal error,

some fascist pig with a read-only mind is trying to enforce machine

independence. But the very ability to trap overflow is machine

dependent. By this strategy, consider the universe, or, more

precisely, algebra: Let X = the sum of many powers of 2 =

...111111 (base 2). Now add X to itself:

X + X = ...111110. Thus, 2X = X - 1, so

X = -1. Therefore algebra is run on a machine (the

universe) that is two's-complement.

Item 174 (Bill Gosper and Stuart Nelson): 21963283741 is the only

number such that if you represent it on the {PDP-10} as both an

integer and a floating-point number, the bit patterns of the two

representations are identical.

Item 176 (Gosper): The "banana phenomenon" was encountered when

processing a character string by taking the last 3 letters typed

out, searching for a random occurrence of that sequence in the

text, taking the letter following that occurrence, typing it out,

and iterating. This ensures that every 4-letter string output

occurs in the original. The program typed BANANANANANANANA.... We

note an ambiguity in the phrase, "the Nth occurrence of." In one

sense, there are five 00's in 0000000000; in another, there are

nine. The editing program TECO finds five. Thus it finds only the

first ANA in BANANA, and is thus obligated to type N next. By

Murphy's Law, there is but one NAN, thus forcing A, and thus a

loop. An option to find overlapped instances would be useful,

although it would require backing up N - 1 characters before

seeking the next N-character string.

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

vad@ai.mit.edu (*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.

:holy wars: /n./ [from {Usenet}, but may predate it]

/n./ {flame war}s over {religious issues}. The paper by Danny

Cohen that popularized the terms {big-endian} and

{little-endian} in connection with the LSB-first/MSB-first

controversy was entitled "On Holy Wars and a Plea for Peace".

Other perennial Holy Wars have included {EMACS} vs. {vi},

my personal computer vs. everyone else's personal computer,

{{ITS}} vs. {{Unix}}, {{Unix}} vs. {VMS}, {BSD} Unix

vs. {USG Unix}, {C} vs. {{Pascal}}, {C} vs.

FORTRAN, etc., ad nauseam. The characteristic that distinguishes

holy wars from normal technical disputes is that in a holy war

most of the participants spend their time trying to pass off

personal value choices and cultural attachments as objective

technical evaluations. See also {theology}.

:home box: /n./ A hacker's personal machine, especially one he

or she owns. "Yeah? Well, *my* home box runs a full 4.2

BSD, so there!"

:home machine: /n./ 1. Syn. {home box}. 2. The machine that

receives your email. These senses might be distinct, for example,

for a hacker who owns one computer at home, but reads email at

work.

:home page: /n./ 1. One's personal billboard on the World Wide

Web. The term `home page' is perhaps a bit misleading because home

directories and physical homes in {RL} are private, but home

pages are designed to be very public. 2. By extension, a WWW

repository for information and links related to a project or

organization. Compare {home box}.

:hook: /n./ A software or hardware feature included in order to

simplify later additions or changes by a user. For example, a

simple program that prints numbers might always print them in base

10, but a more flexible version would let a variable determine what

base to use; setting the variable to 5 would make the program print

numbers in base 5. The variable is a simple hook. An even more

flexible program might examine the variable and treat a value of 16

or less as the base to use, but treat any other number as the

address of a user-supplied routine for printing a number. This is

a {hairy} but powerful hook; one can then write a routine to

print numbers as Roman numerals, say, or as Hebrew characters, and

plug it into the program through the hook. Often the difference

between a good program and a superb one is that the latter has

useful hooks in judiciously chosen places. Both may do the

original job about equally well, but the one with the hooks is much

more flexible for future expansion of capabilities ({EMACS}, for

example, is *all* hooks). The term `user exit' is

synonymous but much more formal and less hackish.

:hop: 1. /n./ One file transmission in a series required to get

a file from point A to point B on a store-and-forward network. On

such networks (including {UUCPNET} and {FidoNet}), an

important inter-machine metric is the number of hops in the

shortest path between them, which can be more significant than

their geographical separation. See {bang path}. 2. /v./ To log in

to a remote machine, esp. via rlogin or telnet. "I'll hop over to

foovax to FTP that."

:hose: 1. /vt./ To make non-functional or greatly degraded in

performance. "That big ray-tracing program really hoses the

system." See {hosed}. 2. /n./ A narrow channel through which

data flows under pressure. Generally denotes data paths that

represent performance bottlenecks. 3. /n./ Cabling, especially

thick

Ethernet cable. This is sometimes called `bit hose' or

`hosery' (play on `hosiery') or `etherhose'. See also

{washing machine}.

:hosed: /adj./ Same as {down}. Used primarily by Unix

hackers. Humorous: also implies a condition thought to be

relatively easy to reverse. Probably derived from the Canadian

slang `hoser' popularized by the Bob and Doug Mackenzie skits on

SCTV, but this usage predated SCTV by years in hackerdom (it was

certainly already live at CMU in the 1970s). See {hose}. It is

also widely used of people in the mainstream sense of `in an

extremely unfortunate situation'.

Once upon a time, a Cray that had been experiencing periodic

difficulties crashed, and it was announced to have been hosed.

It was discovered that the crash was due to the disconnection of

some coolant hoses. The problem was corrected, and users were then

assured that everything was OK because the system had been rehosed.

See also {dehose}.

:hot chat: /n./ Sexually explicit one-on-one chat. See

{teledildonics}.

:hot spot: /n./ 1. [primarily used by C/Unix programmers, but

spreading] It is received wisdom that in most programs, less than

10% of the code eats 90% of the execution time; if one were to

graph instruction visits versus code addresses, one would typically

see a few huge spikes amidst a lot of low-level noise. Such spikes

are called `hot spots' and are good candidates for heavy

optimization or {hand-hacking}. The term is especially used of

tight loops and recursions in the code's central algorithm, as

opposed to (say) initial set-up costs or large but infrequent I/O

operations. See {tune}, {bum}, {hand-hacking}. 2. The

active location of a cursor on a bit-map display. "Put the

mouse's hot spot on the `ON' widget and click the left button."

3. A screen region that is sensitive to mouse gestures, which

trigger some action. World Wide Web pages now provide the

{canonical} examples; WWW browsers present hypertext links as

hot spots which, when clicked on, point the browser at another

document (these are specifically called {hotlink}s). 4. In a

massively parallel computer with shared memory, the one location

that all 10,000 processors are trying to read or write at once

(perhaps because they are all doing a {busy-wait} on the same

lock). 5. More generally, any place in a hardware design that

turns into a performance bottleneck due to resource

contention.

:hotlink: /hot'link/ /n./ A {hot spot} on a World Wide Web

page; an area, which, when clicked or selected, chases a URL.

Also spelled `hot link'. Use of this term focuses on the link's

role as an immediate part of your display, as opposed to the

timeless sense of logical connection suggested by {web

pointer}. Your screen shows hotlinks but your document has web

pointers, not (in normal usage) the other way around.

:house wizard: /n./ [prob. from ad-agency tradetalk, `house

freak'] A hacker occupying a technical-specialist, R&D, or systems

position at a commercial shop. A really effective house wizard can

have influence out of all proportion to his/her ostensible rank and

still not have to wear a suit. Used esp. of Unix wizards. The

term `house guru' is equivalent.

:HP-SUX: /H-P suhks/ /n./ Unflattering hackerism for HP-UX,

Hewlett-Packard's Unix port, which features some truly unique

bogosities in the filesystem internals and elsewhere (these

occasionally create portability problems). HP-UX is often referred

to as `hockey-pux' inside HP, and one respondent claims that the

proper pronunciation is /H-P ukkkhhhh/ as though one were about

to spit. Another such alternate spelling and pronunciation is

"H-PUX" /H-puhks/. Hackers at HP/Apollo (the former Apollo

Computers which was swallowed by HP in 1989) have been heard to

complain that Mr. Packard should have pushed to have his name

first, if for no other reason than the greater eloquence of the

resulting acronym. Compare {AIDX}, {buglix}. See also

{Nominal Semidestructor}, {Telerat}, {Open DeathTrap},

{ScumOS}, {sun-stools}.

:huff: /v./ To compress data using a Huffman code. Various

programs that use such methods have been called `HUFF' or some

variant thereof. Oppose {puff}. Compare {crunch},

{compress}.

:humma: // /excl./ A filler word used on various `chat'

and `talk' programs when you had nothing to say but felt that it

was important to say something. The word apparently originated (at

least with this definition) on the MECC Timeshare System (MTS, a

now-defunct educational time-sharing system running in Minnesota

during the 1970s and the early 1980s) but was later sighted on

early Unix systems. Compare the U.K's {wibble}.

:hung: /adj./ [from `hung up'] Equivalent to {wedged}, but

more common at Unix/C sites. Not generally used of people.

Syn. with {locked up}, {wedged}; compare {hosed}. See

also {hang}. A hung state is distinguished from {crash}ed or

{down}, where the program or system is also unusable but because

it is not running rather than because it is waiting for something.

However, the recovery from both situations is often the same.

:hungry puppy: /n./ Syn. {slopsucker}.

:hungus: /huhng'g*s/ /adj./ [perhaps related to slang

`humongous'] Large, unwieldy, usually unmanageable. "TCP is a

hungus piece of code." "This is a hungus set of modifications."

:hyperspace: /hi:'per-spays/ /n./ A memory location that is

*far* away from where the program counter should be pointing,

especially a place that is inaccessible because it is not even

mapped in by the virtual-memory system. "Another core dump ---

looks like the program jumped off to hyperspace somehow."

(Compare {jump off into never-never land}.) This usage is from

the SF notion of a spaceship jumping `into hyperspace', that is,

taking a shortcut through higher-dimensional space -- in other

words, bypassing this universe. The variant `east hyperspace' is

recorded among CMU and Bliss hackers.

:hysterical reasons: /n./ (also `hysterical raisins') A

variant on the stock phrase "for historical reasons", indicating

specifically that something must be done in some stupid way for

backwards compatibility, and moreover that the feature it must be

compatible with was the result of a bad design in the first place.

"All IBM PC video adapters have to support MDA text mode for

hysterical reasons." Compare {bug-for-bug compatible}.

= I =

=====

:I didn't change anything!: /interj./ An aggrieved cry often

heard as bugs manifest during a regression test. The

{canonical} reply to this assertion is "Then it works just the

same as it did before, doesn't it?" See also {one-line fix}.

This is also heard from applications programmers trying to blame an

obvious applications problem on an unrelated systems software

change, for example a divide-by-0 fault after terminals were added

to a network. Usually, their statement is found to be false. Upon

close questioning, they will admit some major restructuring of the

program that shouldn't have broken anything, in their opinion, but

which actually {hosed} the code completely.

:I see no X here.: Hackers (and the interactive computer

games they write) traditionally favor this slightly marked usage

over other possible equivalents such as "There's no X here!" or

"X is missing." or "Where's the X?". This goes back to the

original PDP-10 {ADVENT}, which would respond in this wise if

you asked it to do something involving an object not present at

your location in the game.

:IBM: /I-B-M/ Inferior But Marketable; It's Better

Manually; Insidious Black Magic; It's Been Malfunctioning;

Incontinent Bowel Movement; and a near-{infinite} number of even

less complimentary expansions, including `International Business

Machines'. See {TLA}. These abbreviations illustrate the

considerable antipathy most hackers have long felt toward the

`industry leader' (see {fear and loathing}).

What galls hackers about most IBM machines above the PC level isn't

so much that they are underpowered and overpriced (though that does

count against them), but that the designs are incredibly archaic,

{crufty}, and {elephantine} ... and you can't *fix* them

-- source code is locked up tight, and programming tools are

expensive, hard to find, and bletcherous to use once you've found

them. With the release of the Unix-based RIOS family this may have

begun to change -- but then, we thought that when the PC-RT came

out, too.

In the spirit of universal peace and brotherhood, this lexicon now

includes a number of entries attributed to `IBM'; these derive from

some rampantly unofficial jargon lists circulated within IBM's own

beleaguered hacker underground.

:IBM discount: /n./ A price increase. Outside IBM, this

derives from the common perception that IBM products are generally

overpriced (see {clone}); inside, it is said to spring from a

belief that large numbers of IBM employees living in an area cause

prices to rise.

:ICBM address: /n./ (Also `missile address') The form used to

register a site with the Usenet mapping project includes a blank

for longitude and latitude, preferably to seconds-of-arc accuracy.

This is actually used for generating geographically-correct maps of

Usenet links on a plotter; however, it has become traditional to

refer to this as one's `ICBM address' or `missile address', and

many people include it in their {sig block} with that name. (A

real missile address would include target altitude.)

:ice: /n./ [coined by Usenetter Tom Maddox, popularized by

William Gibson's cyberpunk SF novels: a contrived acronym for

`Intrusion Countermeasure Electronics'] Security software (in

Gibson's novels, software that responds to intrusion by attempting

to immobilize or even literally kill the intruder). Hence,

`icebreaker': a program designed for cracking security on a

system.

Neither term is in serious use yet as of early 1996, but many

hackers find the metaphor attractive, and each may develop a

denotation in the future. In the meantime, the speculative usage

could be confused with `ICE', an acronym for "in-circuit

emulator".

In ironic reference to the speculative usage, however, some hackers

and computer scientists formed ICE (International Cryptographic

Experiment) in 1994. ICE is a consortium to promote uniform

international access to strong cryptography. ICE has a home page

at http://www.tis.com/crypto/ice.html.

:idempotent: /adj./ [from mathematical techspeak] Acting as if

used only once, even if used multiple times. This term is often

used with respect to {C} header files, which contain common

definitions and declarations to be included by several source

files. If a header file is ever included twice during the same

compilation (perhaps due to nested #include files), compilation

errors can result unless the header file has protected itself

against multiple inclusion; a header file so protected is said to

be idempotent. The term can also be used to describe an

initialization subroutine that is arranged to perform some critical

action exactly once, even if the routine is called several times.

:If you want X, you know where to find it.: There is a legend

that Dennis Ritchie, inventor of {C}, once responded to demands

for features resembling those of what at the time was a much more

popular language by observing "If you want PL/I, you know where to

find it." Ever since, this has been hackish standard form for

fending off requests to alter a new design to mimic some older

(and, by implication, inferior and {baroque}) one. The case X =

{Pascal} manifests semi-regularly on Usenet's comp.lang.c

newsgroup. Indeed, the case X = X has been reported in discussions

of graphics software (see {X}).

:ifdef out: /if'def owt/ /v./ Syn. for {condition out},

specific to {C}.

:ill-behaved: /adj./ 1. [numerical analysis] Said of an

algorithm or computational method that tends to blow up because of

accumulated roundoff error or poor convergence properties.

2. Software that bypasses the defined {OS} interfaces to do

things (like screen, keyboard, and disk I/O) itself, often in a way

that depends on the hardware of the machine it is running on or

which is nonportable or incompatible with other pieces of software.

In the IBM PC/MS-DOS world, there is a folk theorem (nearly true)

to the effect that (owing to gross inadequacies and performance

penalties in the OS interface) all interesting applications are

ill-behaved. See also {bare metal}. Oppose {well-behaved},

compare {PC-ism}. See {mess-dos}.

:IMHO: // /abbrev./ [from SF fandom via Usenet; abbreviation for

`In My Humble Opinion'] "IMHO, mixed-case C names should be

avoided, as mistyping something in the wrong case can cause

hard-to-detect errors -- and they look too Pascalish anyhow."

Also seen in variant forms such as IMNSHO (In My Not-So-Humble

Opinion) and IMAO (In My Arrogant Opinion).

:Imminent Death Of The Net Predicted!: /prov./ [Usenet] Since

{Usenet} first got off the ground in 1980--81, it has grown

exponentially, approximately doubling in size every year. On the

other hand, most people feel the {signal-to-noise ratio} of

Usenet has dropped steadily. These trends led, as far back as

mid-1983, to predictions of the imminent collapse (or death) of the

net. Ten years and numerous doublings later, enough of these

gloomy prognostications have been confounded that the phrase

"Imminent Death Of The Net Predicted!" has become a running joke,

hauled out any time someone grumbles about the {S/N ratio} or

the huge and steadily increasing volume, or the possible loss of a

key node or link, or the potential for lawsuits when ignoramuses

post copyrighted material, etc., etc., etc.

:in the extreme: /adj./ A preferred superlative suffix for many

hackish terms. See, for example, `obscure in the extreme' under

{obscure}, and compare {highly}.

:inc: /ink/ /v./ Verbal (and only rarely written) shorthand

for increment, i.e. `increase by one'. Especially used by

assembly programmers, as many assembly languages have an `inc'

mnemonic. Antonym: {dec}.

:incantation: /n./ Any particularly arbitrary or obscure

command that one must mutter at a system to attain a desired

result. Not used of passwords or other explicit security features.

Especially used of tricks that are so poorly documented that they

must be learned from a {wizard}. "This compiler normally

locates initialized data in the data segment, but if you

{mutter} the right incantation they will be forced into text

space."

:include: /vt./ [Usenet] 1. To duplicate a portion (or whole)

of another's message (typically with attribution to the source) in

a reply or followup, for clarifying the context of one's response.

See the discussion of inclusion styles under "Hacker Writing

Style". 2. [from {C}] `#include <disclaimer.h>' has

appeared in {sig block}s to refer to a notional `standard

{disclaimer} file'.

:include war: /n./ Excessive multi-leveled inclusion within a

discussion {thread}, a practice that tends to annoy readers. In

a forum with high-traffic newsgroups, such as Usenet, this can lead

to {flame}s and the urge to start a {kill file}.

:indent style: /n./ [C programmers] The rules one uses to

indent code in a readable fashion. There are four major C indent

styles, described below; all have the aim of making it easier for

the reader to visually track the scope of control constructs. The

significant variable is the placement of `{' and `}'

with respect to the statement(s) they enclose and to the guard or

controlling statement (`if', `else', `for',

`while', or `do') on the block, if any.

`K&R style' -- Named after Kernighan & Ritchie, because the

examples in {K&R} are formatted this way. Also called `kernel

style' because the Unix kernel is written in it, and the `One True

Brace Style' (abbrev. 1TBS) by its partisans. The basic indent

shown here is eight spaces (or one tab) per level; four spaces are

occasionally seen, but are much less common.

if (<cond>) {

<body>

}

`Allman style' -- Named for Eric Allman, a Berkeley hacker who

wrote a lot of the BSD utilities in it (it is sometimes called

`BSD style'). Resembles normal indent style in Pascal and

Algol. Basic indent per level shown here is eight spaces, but four

spaces are just as common (esp. in C++ code).

if (<cond>)

{

<body>

}

`Whitesmiths style' -- popularized by the examples that came

with Whitesmiths C, an early commercial C compiler. Basic indent

per level shown here is eight spaces, but four spaces are

occasionally seen.

if (<cond>)

{

<body>

}

`GNU style' -- Used throughout GNU EMACS and the Free Software

Foundation code, and just about nowhere else. Indents are always

four spaces per level, with `{' and `}' halfway between the

outer and inner indent levels.

if (<cond>)

{

<body>

}

Surveys have shown the Allman and Whitesmiths styles to be the most

common, with about equal mind shares. K&R/1TBS used to be nearly

universal, but is now much less common (the opening brace tends to

get lost against the right paren of the guard part in an `if'

or `while', which is a {Bad Thing}). Defenders of 1TBS

argue that any putative gain in readability is less important than

their style's relative economy with vertical space, which enables

one to see more code on one's screen at once. Doubtless these

issues will continue to be the subject of {holy wars}.

:index: /n./ See {coefficient of X}.

:infant mortality: /n./ It is common lore among hackers (and in

the electronics industry at large; this term is possibly techspeak

by now) that the chances of sudden hardware failure drop off

exponentially with a machine's time since first use (that is, until

the relatively distant time at which enough mechanical wear in I/O

devices and thermal-cycling stress in components has accumulated

for the machine to start going senile). Up to half of all chip and

wire failures happen within a new system's first few weeks; such

failures are often referred to as `infant mortality' problems

(or, occasionally, as `sudden infant death syndrome'). See

{bathtub curve}, {burn-in period}.

:infinite: /adj./ Consisting of a large number of objects;

extreme. Used very loosely as in: "This program produces infinite

garbage." "He is an infinite loser." The word most likely to

follow `infinite', though, is {hair}. (It has been pointed

out that fractals are an excellent example of infinite hair.)

These uses are abuses of the word's mathematical meaning. The term

`semi-infinite', denoting an immoderately large amount of some

resource, is also heard. "This compiler is taking a semi-infinite

amount of time to optimize my program." See also {semi}.

:infinite loop: /n./ One that never terminates (that is, the

machine {spin}s or {buzz}es forever and goes {catatonic}).

There is a standard joke that has been made about each generation's

exemplar of the ultra-fast machine: "The Cray-3 is so fast it can

execute an infinite loop in under 2 seconds!"

:Infinite-Monkey Theorem: /n./ "If you put an {infinite}

number of monkeys at typewriters, eventually one will bash out the

script for Hamlet." (One may also hypothesize a small number of

monkeys and a very long period of time.) This theorem asserts

nothing about the intelligence of the one {random} monkey that

eventually comes up with the script (and note that the mob will

also type out all the possible *incorrect* versions of

Hamlet). It may be referred to semi-seriously when justifying a

{brute force} method; the implication is that, with enough

resources thrown at it, any technical challenge becomes a

{one-banana problem}.

This theorem was first popularized by the astronomer Sir Arthur

Eddington. It became part of the idiom of techies via the classic

SF short story "Inflexible Logic" by Russell Maloney, and

many younger hackers know it through a reference in Douglas Adams's

"Hitchhiker's Guide to the Galaxy".

:infinity: /n./ 1. The largest value that can be represented in

a particular type of variable (register, memory location, data

type, whatever). 2. `minus infinity': The smallest such value,

not necessarily or even usually the simple negation of plus

infinity. In N-bit twos-complement arithmetic, infinity is

2^(N-1) - 1 but minus infinity is -

(2^(N-1)), not -(2^(N-1) - 1). Note also that this

is different from "time T equals minus infinity", which is

closer to a mathematician's usage of infinity.

:inflate: /vt./ To decompress or {puff} a file. Rare among

Internet hackers, used primarily by MS-DOS/Windows types.

:Infocom: /n./ A now-legendary games company, active from 1979 to

1989, that commercialized the MDL parser technology used for

{Zork} to produce a line of text adventure games that remain

favorites among hackers. Infocom's games were intelligent, funny,

witty, erudite, irreverent, challenging, satirical, and most

thoroughly hackish in spirit. The physical game packages from

Infocom are now prized collector's items. The software,

thankfully, is still extant; Infocom games were written in a kind

of P-code and distributed with a P-code interpreter core, and

freeware emulators for that interpreter have been written to permit

the P-code to be run on platforms the games never originally

graced.

:initgame: /in-it'gaym/ /n./ [IRC] An {IRC} version of the

venerable trivia game "20 questions", in which one user changes

his {nick} to the initials of a famous person or other named

entity, and the others on the channel ask yes or no questions, with

the one to guess the person getting to be "it" next. As a

courtesy, the one picking the initials starts by providing a

4-letter hint of the form sex, nationality, life-status,

reality-status. For example, MAAR means "Male, American, Alive,

Real" (as opposed to "fictional"). Initgame can be surprisingly

addictive. See also {hing}.

[1996 update: a recognizable version of the initgame has become a

staple of some radio talk shows in the U.S. We had it first! --

ESR]

:insanely great: /adj./ [Mac community, from Steve Jobs; also

BSD Unix people via Bill Joy] Something so incredibly {elegant}

that it is imaginable only to someone possessing the most puissant

of {hacker}-natures.

:INTERCAL: /in't*r-kal/ /n./ [said by the authors to stand

for `Compiler Language With No Pronounceable Acronym'] A computer

language designed by Don Woods and James Lyons in 1972. INTERCAL

is purposely different from all other computer languages in all

ways but one; it is purely a written language, being totally

unspeakable. An excerpt from the INTERCAL Reference Manual will

make the style of the language clear:

It is a well-known and oft-demonstrated fact that a person whose

work is incomprehensible is held in high esteem. For example, if

one were to state that the simplest way to store a value of 65536

in a 32-bit INTERCAL variable is:

The Jargon File, Version 4.0.0, 24 Jul 1996 · 第 6 / 18 题