The Hacker's Dictionary

Versió HTML de Lluís de Yzaguirre i Maura

Institut de Lingüística Aplicada - Universitat "Pompeu Fabra"
e-mail: de_yza @ upf.es


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
=== [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 literally kill
the intruder). Also, `icebreaker': a program designed for
cracking security on a system.

Neither term is in serious use yet as of mid-1993, 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".

idempotent
========== [from mathematical techspeak] adj. 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
==== // [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!
==================================== [USENET] prov. 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 '
has appeared in sig blocks to refer to a notional `standard
disclaimer file'.
include war
=========== n. Excessive multi-leveled including 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 flames and the urge to start a kill file.
indent style
============ [C programmers] n. 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) [

}

`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)
[

}

`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)
[

}

`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)
[

}

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
spins or buzzes 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 through the classic 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.
initgame
======== /in-it'gaym/ [IRC] n. 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.
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/ [said by the authors to stand for
`Compiler Language With No Pronounceable Acronym'] n. 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:

DO :1 <- #0$#256

any sensible programmer would say that that was absurd. Since this
is indeed the simplest method, the programmer would be made to look
foolish in front of his boss, who would of course have happened to
turn up, as bosses are wont to do. The effect would be no less
devastating for the programmer having been correct.

INTERCAL has many other peculiar features designed to make it even
more unspeakable. The Woods-Lyons implementation was actually used
by many (well, at least several) people at Princeton. The language
has been recently reimplemented as C-INTERCAL and is consequently
enjoying an unprecedented level of unpopularity; there is even an
alt.lang.intercal newsgroup devoted to the study and ...
appreciation of the language on USENET.

interesting
=========== adj. In hacker parlance, this word has strong
connotations of `annoying', or `difficult', or both. Hackers
relish a challenge, and enjoy wringing all the irony possible out
of the ancient Chinese curse "May you live in interesting times".
Oppose trivial, uninteresting.
Internet address
================ : n. 1. [techspeak] An absolute network address of
the form foo@bar.baz, where foo is a user name, bar is a
sitename, and baz is a `domain' name, possibly including
periods itself. Contrast with bang path; see also [network,
the} and network address. All Internet machines and most UUCP
sites can now resolve these addresses, thanks to a large amount of
behind-the-scenes magic and PD software written since 1980 or so.
See also bang path, domainist. 2. More loosely, any
network address reachable through Internet; this includes [bang
path} addresses and some internal corporate and government
networks.

Reading Internet addresses is something of an art. Here are the
four most important top-level functional Internet domains followed
by a selection of geographical domains:

com
commercial organizations
edu
educational institutions
gov
U.S. government civilian sites
mil
U.S. military sites

Note that most of the sites in the com and edu domains are in
the U.S. or Canada.

us
sites in the U.S. outside the functional domains
su
sites in the ex-Soviet Union (see kremvax).
uk
sites in the United Kingdom

Within the us domain, there are subdomains for the fifty
states, each generally with a name identical to the state's postal
abbreviation. Within the uk domain, there is an ac subdomain for
academic sites and a co domain for commercial ones. Other
top-level domains may be divided up in similar ways.

interrupt
========= 1. [techspeak] n. On a computer, an event that
interrupts normal processing and temporarily diverts
flow-of-control through an "interrupt handler" routine. See also
trap. 2. interj. A request for attention from a hacker.
Often explicitly spoken. "Interrupt --- have you seen Joe
recently?" See priority interrupt. 3. Under MS-DOS, nearly
synonymous with `system call', because the OS and BIOS routines
are both called using the INT instruction (see "[interrupt list,
the}") and because programmers so often have to bypass the OS (going
directly to a BIOS interrupt) to get reasonable
performance.
interrupt list, the
=================== : [MS-DOS] n. The list of all known software
interrupt calls (both documented and undocumented) for IBM PCs and
compatibles, maintained and made available for free redistribution
by Ralf Brown . As of late 1992, it had grown to
approximately two megabytes in length.
interrupts locked out
===================== adj. When someone is ignoring you. In a
restaurant, after several fruitless attempts to get the waitress's
attention, a hacker might well observe "She must have interrupts
locked out". The synonym `interrupts disabled' is also common.
Variations abound; "to have one's interrupt mask bit set" and
"interrupts masked out" are also heard. See also spl.
IRC
=== /I-R-C/ [Internet Relay Chat] n. A worldwide "party
line" network that allows one to converse with others in real
time. IRC is structured as a network of Internet servers, each of
which accepts connections from client programs, one per user. The
IRC community and the USENET and MUD communities overlap
to some extent, including both hackers and regular folks who have
discovered the wonders of computer networks. Some USENET jargon
has been adopted on IRC, as have some conventions such as
emoticons. There is also a vigorous native jargon,
represented in this lexicon by entries marked `[IRC]'. See also
talk mode.

iron
==== n. Hardware, especially older and larger hardware of
mainframe class with big metal cabinets housing relatively
low-density electronics (but the term is also used of modern
supercomputers). Often in the phrase big iron. Oppose
silicon. See also dinosaur.
Iron Age
======== n. In the history of computing, 1961--1971 --- the
formative era of commercial mainframe technology, when
ferrite-core dinosaurs ruled the earth. The Iron Age began,
ironically enough, with the delivery of the first minicomputer (the
PDP-1) and ended with the introduction of the first commercial
microprocessor (the Intel 4004) in 1971. See also Stone Age;
compare elder days.
iron box
======== [UNIX/Internet] n. A special environment set up to trap
a cracker logging in over remote connections long enough to be
traced. May include a modified shell restricting the cracker's
movements in unobvious ways, and `bait' files designed to keep
him interested and logged on. See also back door,
firewall machine, Venus flytrap, and Clifford Stoll's
account in "The Cuckoo's Egg" of how he made and used
one (see the Bibliography in appendix C). Compare [padded
cell}.
ironmonger
========== [IBM] n. A hardware specialist (derogatory). Compare
sandbender, polygon pusher.
ITS
=== : /I-T-S/ n. 1. Incompatible Time-sharing System, an
influential but highly idiosyncratic operating system written for
PDP-6s and PDP-10s at MIT and long used at the MIT AI Lab. Much
AI-hacker jargon derives from ITS folklore, and to have been `an
ITS hacker' qualifies one instantly as an old-timer of the most
venerable sort. ITS pioneered many important innovations,
including transparent file sharing between machines and
terminal-independent I/O. After about 1982, most actual work was
shifted to newer machines, with the remaining ITS boxes run
essentially as a hobby and service to the hacker community. The
shutdown of the lab's last ITS machine in May 1990 marked the end
of an era and sent old-time hackers into mourning nationwide (see
high moby). The Royal Institute of Technology in Sweden is
maintaining one `live' ITS site at its computer museum (right next
to the only TOPS-10 system still on the Internet), so ITS is still
alleged to hold the record for OS in longest continuous use
(however, "WAITS" is a credible rival for this palm). See
Appendix A. 2. A mythical image of operating-system perfection
worshiped by a bizarre, fervent retro-cult of old-time hackers and
ex-users (see troglodyte, sense 2). ITS worshipers manage
somehow to continue believing that an OS maintained by
assembly-language hand-hacking that supported only monocase
6-character filenames in one directory per account remains superior
to today's state of commercial art (their venom against UNIX is
particularly intense). See also holy wars,
Weenix.
IWBNI
===== // [abbreviation] `It Would Be Nice If'. Compare WIBNI.
IYFEG
===== // [USENET] Abbreviation for `Insert Your Favorite Ethnic
Group'. Used as a meta-name when telling ethnic jokes on the net
to avoid offending anyone. See JEDR.