Jargon File
Jargon File
Introduction
************
Hackers, as a rule, love word-play and are very conscious in their use
of language. Thus, a compilation of their slang is a particularly
effective window into their culture --- and, in fact, this one is the
latest version of an evolving compilation called the `Jargon File'
maintained by hackers themselves for over fifteen years. This one
(like its ancestors) is primarily a lexicon, but also includes `topic
entries' which collect background or sidelight information on hacker
culture that would be awkward to try to subsume under individual
entries.
The reader with minimal computer background who finds some references
incomprehensibly technical can safely ignore them. We have not felt
it either necessary or desirable to eliminate all such; they, too,
contribute flavor, and one of this document's major intended audiences
(fledgling hackers already partway inside the culture) will benefit
from them.
Revision History
================
In 1976, Mark Crispin brought the File to MIT; he and Guy Steele then
added a first wave of new entries. Raphael Finkel dropped out of
active participation shortly thereafter, and Don Woods became the SAIL
contact for the File (which was subsequently kept in duplicate at SAIL
and MIT, with periodic re-synchronizations).
The File expanded by fits and starts until about 1983; Richard
Stallman was prominent among the contributors, adding many MIT and
ITS-related coinages.
By the mid-1980s the File's content was dated, but the legend that
had grown up around it never quite died out. The book, and softcopies
obtained off the ARPANET, circulated even in cultures far removed from
MIT's; the content exerted a strong and continuing influence on
hackish slang and humor. Even as the advent of the microcomputer and
other trends fueled a tremendous expansion of hackerdom, the File (and
related materials like the AI Koans in Appendix A) came to be seen as
a sort of sacred epic, a hacker-culture Matter of Britain chronicling
the heroic exploits of the Knights of the Lab. The pace of change in
hackerdom at large accelerated tremendously, but the Jargon File
passed from living document to icon and remained essentially untouched
for seven years.
This new version casts a wider net than the old jargon file; its aim
is to cover not just AI but all the technical computing cultures
wherein the true hacker-nature is manifested. More than half of the
entries now derive from USENET and represent slang now current in the
C and UNIX communities, but special efforts have been made to collect
slang from other cultures including IBM-PC programmers, Mac
enthusiasts, and even the IBM mainframe world.
Berkeley
University of California at Berkeley.
Cambridge
The university in England (*not* the town in Massachusetts!).
CMU
Carnegie-Mellon University
Commodore
Commodore Business Machines.
Fidonet
See the {Fidonet} entry.
IBM
International Business Machines
MIT
Massachusetts Institute of Technology; esp. the legendary MIT AI Lab
culture of roughly 1971 to 1983. Some MITisms go as far as the
Tech Model Railroad Club at MIT c.1960.
NYU
New York University.
Purdue
Purdue University.
SAIL
Stanford Artificial Intelliegence Laboratory.
Stanford
Stanford University.
Sun
Sun Microsystems.
UCLA
University of California at Los Angeles.
USENET
See the {USENET} entry.
WPI
Worcester Polytechnic Institute, site of a very active community of
PDP-10 hackers during the Seventies.
Xerox PARC
Xerox's Palo Alto Research Center, site of much pioneering research in
user interface design and networking.
Yale
Yale University.
(Warning: other email addresses appear in this file *but are not
guaranteed to be correct* later than the revision date on the first
line. *Don't* email us if an attempt to reach your idol bounces
--- we have no magic way of checking addresses or looking up people)
Some snapshot of this on-line version will become the main text of a
`New Hacker's Dictionary' by MIT Press possibly as early as Summer
1991. The maintainers are committed to updating the on-line version
of the jargon file through and beyond paper publication, and will
continue to make it available to archives and public-access sites as a
trust of the hacker community.
Version 2.1.1, Jun 12 1990: the jargon file comes alive again after a
seven-year hiatus. Reorganization and massive additions were by Eric
S. Raymond, approved by Guy Steele. Many items of UNIX, C, USENET, and
microcomputer-based slang were added at that time (as well as The
Untimely Demise of Mabel The Monkey). Some obsolete usages (mostly
PDP-10 derived) were moved to Appendix B.
Version 2.2.1, Dec 15 1990: most of the contents of the 1983 paper
edition edited by Guy Steele was merged in. Many more USENET
submissions added, including the International Style and the material
on Commonwealth Hackish. This version had 9394 lines, 75954 words,
490501 characters, and 1046 entries.
Version 2.3.1, Jan 03 1991: the great format change --- case is no
longer smashed in lexicon keys and cross-references. A very few
entries from jargon-1 which were basically straight tech-speak were
deleted; this enabled the rest of Appendix B to be merged back into
main text and the appendix replaced with the Portrait of J. Random
Hacker. More USENET submissions were added. This version had 10728
lines, 85070 words, 558261 characters, and 1138 entries.
Version 2.4.1, Jan 14 1991: the Story of Mel and many more USENET
submissions merged in. More material on hackish writing habits added.
Numerous typo fixes. This version had 12362 lines, 97819 words,
642899 characters, and 1239 entries.
Version 2.5.1, Jan 29 1991: many new entries merged in. Discussion of
inclusion styles added. This version had 14145 lines, 111904 words,
734285 characters, and 1425 entries.
Version 2.6.1, Feb 13 1991: second great format change; no more <>
around headwords or references. Merged in results of serious
copy-editing passes by Guy Steele, Mark Brader. Still more entries
added. This version had 15011 lines, 118277 words, 774942 characters,
and 1485 entries.
Try to conform to the format already being used --- head-words and
cross-references in angle brackets, pronunciations in slashes,
etymologies in square brackets, single-space after definition numbers
and word classes, etc. Stick to the standard ASCII character set (no
high-half characters or [nt]roff/TeX/Scribe escapes), as one of the
versions generated from the master file is an info document that has
to be viewable on a character tty.
The jargon file will be regularly maintained and re-posted from now on and
will include a version number. Read it, pass it around, contribute --- this
is *your* monument!
Jargon Construction
===================
However, terms like these are often made up on the spur of the moment.
Standard examples include:
This is not really similar to the Cockney rhyming slang it has been
compared to in the past, because Cockney substitutions are opaque
whereas hacker rhyming slang is intentionally transparent.
At dinnertime:
Q: "Foodp?"
A: "Yeah, I'm pretty hungry." or "T!"
Q: "State-of-the-world-P?"
A: (Straight) "I'm about to go home."
A: (Humorous) "Yes, the world has a state."
Also, note that all nouns can be verbed. e.g.: "All nouns can be
verbed", "I'll mouse it up", "Hang on while I clipboard it over",
"I'm grepping the files". English as a whole is already heading in
this direction (towards pure-positional grammar like Chinese);
hackers are simply a bit ahead of the curve.
if (going) {
and
if (!going) {
that when they parse the question "Aren't you going?" it seems to be
asking the opposite question from "Are you going?", and so merits an
answer in the opposite sense. This confuses English-speaking
non-hackers because they were taught to answer as though the negative
part weren't there (in some other languages, including Chinese and
Japanese, the hackish interpretation is standard and the problem
wouldn't arise). Hackers often find themselves wishing for a word
like French `si' or German `doch' with which one could
unambiguously answer `yes' to a negative question.
is different from
Another notation for exponentiation one sees more frequently uses the
caret (^, ASCII 1011110); one might write instead `2 ^ 8 = 256'.
This goes all the way back to Algol-60, which used the archaic ASCII
`up-arrow' that later became caret; this was picked up by Kemeny &
Kurtz's original BASIC, which in turn influenced the design of the
bc(1) and dc(1) UNIX tools that have probably done most to reinforce
the convention on USENET. The notation is mildly confusing to C
programmers, because `^' means logical {XOR} in C. Despite
this, it was favored 3/1 over ** in a late-1990 snapshot of USENET.
It is used consistently in this text.
Hackers also mix letters and numbers more freely than in mainstream
usage. In particular, it is good hackish style to write a digit
sequence where you intend the reader to understand the text string
that names that number in English. So, hackers write "1970s" rather
than "nineteen-seventies" or "1970's".
One area where hackish conventions for on-line writing are still in
some flux is the marking of included material from earlier messages
--- what would be called `block quotations' in ordinary English. From
the usual typographic convention employed for these (smaller font at
an extra indent), there derived the notation of included text being
indented by one ASCII TAB (0001001) character, which under UNIX and
many other environments gives the appearance of an 8-space indent.
Early mail and netnews readers had no facility for including messages
this way, so people had to paste in copy manually. BSD `Mail(1)'
was the first message agent to support inclusion, and early USENETters
emulated its style. But the TAB character tended to push included
text too far to the right (especially in multiply nested inclusions),
leading to ugly wraparounds. After a brief period of confusion
(during which an inclusion leader consisting of three or four spaces
became established in EMACS and a few mailers), the use of leading ">"
or "> " became standard, perhaps because the character suggests
movement to the right (alternatively, it may derive from the ">" that
some V7 UNIX mailers use to quote leading instances of "From" in
text). Inclusions within inclusions keep their ">" leaders, so the
`nesting level' of a quotation is visually apparent.
Many people feel that this cure is worse than the original disease,
and there soon appeared newsreader software designed to let the reader
skip over included text if desired. Today, some posting software
rejects articles containing too high a proportion of lines beginning
with ">", but this too has led to undesirable workarounds such as the
deliberate inclusion of zero-content filler lines which aren't quoted
and thus pull the message below the rejection threshold.
Because the default mailers supplied with UNIX and other operating
systems haven't evolved as quickly as human usage, the older
conventions using a leading TAB or three or four spaces are still
alive; however, >-inclusion is now clearly the preferred form in both
netnews and mail.
International Style
===================
A note or two on hackish usages in Russian have been added where they
are parallel with English idioms and thus comprehensible to
English-speakers.
Pronunciation Guide
===================
a back, that
ah father, palm
ar far, mark
aw flaw, caught
ay bake, rain
e less, men
ee easy, ski
eir their, software
i trip, hit
ie life, sky
o cot, top
oh flow, sew
oo loot, through
or more, door
ow out, how
oy boy, coin
uh but, some
u put, foot
y yet
yoo few
[y]oo /oo/ with optional fronting as in `news' (/nooz/ or /nyooz/)
In pure ASCII renderings of the Jargon File, you will see {} used in
to bracket words which themselves have entries in the File. This
isn't done all the time for every such word, but it is done everywhere
that a reminder seems useful that the term has a jargon meaning and
might wish to refer to its entry.
\begin: [written only, from the LaTeX command] With \end, used
humorously in writing to indicate a context or to remark on the
surrounded text. For example:
\begin{Flame}
Predicate logic is the only good programming language.
Anyone who would use anything else is an idiot. Also,
computers should be tredecimal instead of binary.
\end{Flame}
A
-
There is also a usage "ACK?" (from sense #1) meaning "Are you
there?", often used in email when earlier mail has produced no
reply, or during a lull in {talk mode} to see if the person has
gone away (the standard humorous response is of course {NAK}
(sense #2), i.e., "I'm not here").
This game defined the terse, dryly humorous style now expected in
text adventure games, and popularized several tag lines that have
become fixtures of hacker-speak. "A huge green fierce snake bars
the way!" "I see no X here." (for some noun X). "You are in a
maze of twisty little passages, all alike." "You are in a little
maze of twisty passages, all different." The "magic words"
{xyzzy} and {plugh} also derive from this game.
ALT: /awlt/ [PDP-10] n.obs. Alternate name for the ASCII ESC
character, after the keycap labeling on some older terminals. Also
`ALTMODE'. This character was almost never pronounced
"escape" on an ITS system, in TECO, or under TOPS-10 --- always
ALT, as in "Type ALT ALT to end a TECO command" or "ALT U onto
the system" (for "log onto the [ITS] system"). This was
probably because ALT is more convenient to say than "escape",
especially when followed by another ALT or a character (or another
ALT *and* a character, for that matter!).
alt bit: /awlt bit/ [from alternate] adj. See {meta bit}.
amp off: [Purdue] vt. To run in {background}. From the UNIX shell `&'
operator.
asbestos cork award: n. Once, long ago at MIT, there was a {flamer}
so consistently obnoxious that another hacker designed, had made,
and distributed posters announcing that said flamer had been
nominated for the `asbestos cork award'. Persons in any doubt as
to the intended application of the cork should consult the
etymology under {flame}. Since then, it is agreed that only a
select few have risen to the heights of bombast required to earn
this dubious dignity --- but there's no agreement on *which*
few.
`!'
Common: {bang}, pling, excl, shriek, (exclamation point).
Rare: factorial, exclam, smash, cuss, boing, yell, wow, hey,
wham, spot-spark, soldier.
`"'
Common: double quote, quote. Rare: literal mark,
double-glitch, (quotation marks), (dieresis), dirk.
`#'
Common: (number sign), pound, hash, sharp, {crunch}, mesh,
hex, octothorpe. Rare: flash, crosshatch, grid, pig-pen,
tictactoe, scratchmark, thud, {splat}.
`$'
Common: dollar, (dollar sign). Rare: currency symbol, buck,
cash, string (from BASIC), escape (from {TOPS-10}), ding,
cache.
`%'
Common: percent, (percent sign), mod, grapes.
`&'
Common: (ampersand), amper, and. Rare: address (from C),
reference (from C++), andpersand, bitand, background (from
`sh(1)'), pretzel, amp.
`''
Common: single quote, quote, (apostrophe). Rare: prime,
glitch, tick, irk, pop, spark, (closing single quotation
mark), (acute accent).
`()'
Common: left/right paren, left/right parenthesis, left/right,
paren/thesis, open/close paren, open/close, open/close
parenthesis, left/right banana. Rare: lparen/rparen,
so/already, wax/wane, (opening/closing parenthesis),
left/right ear, parenthisey/unparenthisey, open/close round
bracket.
`*'
Common: star, {splat}, (asterisk). Rare: wildcard, gear,
dingle, mult, spider, aster, times, twinkle, glob (see
{glob}), {Nathan Hale}.
`+'
Common: (plus), add. Rare: cross.
`,'
Common: (comma). Rare: (cedilla).
`-'
Common: dash, (hyphen), (minus). Rare: worm, option, dak,
bithorpe.
`.'
Common: dot, point, (period), (decimal point). Rare: radix
point, full stop.
`/'
Common: slash, stroke, (slant), forward slash. Rare:
diagonal, solidus, over, slak, virgule.
`:'
Common: (colon). Rare: two-spot.
`;'
Common: (semicolon), semi. Rare: weenie.
`<>'
Common: (less/greater than), left/right angle bracket,
bra/ket, left/right broket. Rare: from/{into,towards}, read
from/write to, suck/blow, comes-from/gozinta, in/out,
crunch/zap (all from UNIX).
`='
Common: (equals), gets. Rare: quadrathorpe.
`?'
Common: query, (question mark), {ques}. Rare: whatmark, what,
wildchar, huh, hook, buttonhook, hunchback.
`@'
Common: at sign, at, strudel. Rare: each, vortex, whorl,
cyclone, snail, ape, cat, rose, cabbage, (commercial at).
`V'
Rare: vee, book.
`[]'
Common: left/right square bracket, (opening/closing bracket),
bracket/unbracket left/right bracket. Rare: square/unsquare.
`\'
Common: backslash, escape (from C/UNIX), reverse slash, slosh,
backslant. Rare: bash, backwhack, (reverse slant), reversed
virgule.
`^'
Common: hat, control, uparrow, caret. Rare: (circumflex),
chevron, shark (or shark fin), to the (`to the power of'),
fang.
`_'
Common: (underline), underscore, underbar, under. Rare:
score, backarrow.
``'
Common: backquote, left quote, open quote, (grave accent),
grave. Rare: backprime, backspark, unapostrophe, birk,
blugle, back tick, back glitch, push, (opening single
quotation mark), quasiquote.
`{}'
Common: open/close brace, left/right brace, left/right
squiggly bracket/brace, left/right curly bracket/brace,
(opening/closing brace). Rare: brace/unbrace, curly/uncurly,
leftit/rytit.
`|'
Common: bar, or, or-bar, v-bar, pipe. Rare: vertical bar,
(vertical line), gozinta, thru, pipesinta (last three ones
from UNIX).
`~'
Common: (tilde), squiggle, {twiddle}, not. Rare: approx,
wiggle, swung dash, enyay, sqiggle.
Also note that the `swung dash' or `approx' sign is not quite the
same as tilde in typeset material, but the ASCII tilde serves for
both (compare {angle brackets}).
B
-
Ken Thompson's 1983 Turing Award lecture to the ACM revealed the
existence of a back door in early UNIX versions that may have
qualified as the most fiendishly clever security hack of all time.
The binaries of the C compiler had code in them which would
automatically patch itself into the output executable whenever the
compiler itself was being recompiled, and also patch the
`login' command, when *it* was being recompiled, to
accept a password that gave Thompson entry to the computer whether
or not an account had been created for him! Thompson describes
this hack as a {Trojan Horse}. This talk was published as
`Reflections on Trusting Trust', Communications of the ACM
27,8 (August 1984) pp761-763. Although Thompson didn't say whether
the hacked version ever made it off site, it is commonly believed
that this back door was in fact propagated through hundreds of
machines without any clue to it ever showing up in source.
backbone site: n. A key USENET and email site; one which processes
a large amount of third-party traffic, especially if it's the home
site of any of the regional coordinators for the USENET maps.
Notable backbone sites as of early 1991 include `uunet' and the
mail machines at Rutgers University, UC Berkeley, DEC's Western
Research Laboratories, Ohio State University, and the University of
Texas. Compare {rib site}, {leaf site}.
Bad Thing: [from the 1962 Sellars & Yeatman parody `1066 and
All That'] n. Something which can't possibly result in improvement
of the subject. This term is always capitalized, as in "Replacing
all of the 9600 baud modems with bicycle couriers would be a Bad
Thing." Oppose {Good Thing}. British correspondents confirm
that {Bad Thing} and {Good Thing} (and prob. therefore {Right
Thing} and {Wrong Thing}) come from the book referenced in the
etymology, which discusses rulers who were Good Kings, but Bad
Things. This has apparently created a mainstream idiom on the
British side of the pond.
banana problem: n. [from the story of the little girl who said "I
know how to spell `banana', but I don't know when to stop"]. Not
knowing where or when to bring a production to a close (compare
{fencepost error}). One may say there is a banana problem of an
algorithm with poorly defined or incorrect termination conditions,
or in discussing the evolution of a design that may be succumbing
to featuritis (see also {creeping elegance}, {creeping
featuritis}). See also item 176 under {HAKMEM}.
baud barf: /bawd barf/ n. The garbage one gets on the monitor when
using a modem connection with some protocol setting (esp. line
speed) incorrect, or when someone picks up a voice extension on the
same line, or when really bad line noise disrupts the connection.
Baud barf is not completely {random}, by the way; hackers with a
lot of serial-line experience can usually tell whether the device
at the other end is expecting a higher or lower speed than the
terminal is set to. *Really* experienced ones can identify
particular speeds.
beep: n.,v. Syn. {feep}. This term seems to be preferred among micro
hobbyists.
biff: /bif/ vt. To notify someone of incoming mail; from the BSD
utility `biff(1)' which was in turn named after the
implementor's dog; it barked whenever the mailman came.
Big Red Switch: [IBM] n. The power switch on a computer, esp. the
`Emergency Pull' switch on an IBM {mainframe} or the power switch
on an IBM-PC where it really is large and red. "This !@%$%
{bitty box} is hung again; time to hit the Big Red Switch."
Sources at IBM report that, in tune with the company's passion for
{TLA}s, this is often acronymized as `BRS' (this has also
become established on FidoNet and in the PC {clone} world). It
is alleged that the emergency pull switch on a 360/91 actually
fired a non-conducting bolt into the main power feed; modern ones
physically drop a block into place so that they can't be pushed
back in. People get fired for pulling them, especially
inappropriately.. Compare {power cycle}, {three-finger
salute}.
40238726007709377354370243392300398571937486421071
46325437999104299385123986290205920442084869694048
00479988610197196058631666872994808558901323829669
94459099742450408707375991882362772718873251977950
59509952761208749754624970436014182780946464962910
56393887437886487337119181045825783647849977012476
63288983595573543251318532395846307555740911426241
74743493475534286465766116677973966688202912073791
43853719588249808126867838374559731746136085379534
52422158659320192809087829730843139284440328123155
86110369768013573042161687476096758713483120254785
89320767169132448426236131412508780208000261683151
02734182797770478463586817016436502415369139828126
48102130927612448963599287051149649754199093422215
66832572080821333186116811553615836546984046708975
60290095053761647584772842188967964624494516076535
34081989013854424879849599533191017233555566021394
50399736280750137837615307127761926849034352625200
01588853514733161170210396817592151090778801939317
81141945452572238655414610628921879602238389714760
88506276862967146674697562911234082439208160153780
88989396451826324367161676217916890977991190375403
12746222899880051954444142820121873617459926429565
81746628302955570299024324153181617210465832036786
90611726015878352075151628422554026517048330422614
39742869330616908979684825901254583271682264580665
26769958652682272807075781391858178889652208164348
34482599326604336766017699961283186078838615027946
59551311565520360939881806121385586003014356945272
24206344631797460594682573103790084024432438465657
24501440282188525247093519062092902313649327349756
55139587205596542287497740114133469627154228458623
77387538230483865688976461927383814900140767310446
64025989949022222176590433990188601856652648506179
97023561938970178600408118897299183110211712298459
01641921068884387121855646124960798722908519296819
37238864261483965738229112312502418664935314397013
74285319266498753372189406942814341185201580141233
44828015051399694290153483077644569099073152433278
28826986460278986432113908350621709500259738986355
42771967428222487575867657523442202075736305694988
25087968928162753848863396909959826280956121450994
87170124451646126037902930912088908694202851064018
21543994571568059418727489980942547421735824010636
77404595741785160829230135358081840096996372524230
56085590370062427124341690900415369010593398383577
79394109700277534720000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000000000
000000000000000000.
"I just need one bit from you" is a polite way of indicating that
you intend only a short interruption for a question which can
presumably be answered with a yes or no.
blast: vt.,n. Synonym for {BLT}, used esp. for large data sends over
a network or comm line. Opposite of {snarf}. Usage: uncommon.
The variant `blat' has been reported. 2. vt. [HP/Apollo] Synonymous
with {nuke} (sense #3). Sometimes the message "Unable to kill all
processes. Blast them (y/n)?" would appear in the command window
upon logout.
blit: /blit/ vt. 1. To copy a large array of bits from one part of
a computer's memory to another part, particularly when the memory
is being used to determine what is shown on a display screen.
"The storage allocator picks through the table and copies the good
parts up into high memory, and at the end {blit}s it all back
down again." See {bitblt}, {BLT}, {DD}, {cat}, {blast},
{snarf}. More generally, to perform some operation (such as
toggling) on a large array of bits while moving them. 2.
All-capitalized as `BLIT': An early experimental bit-mapped
terminal designed by Rob Pike at Bell Labs, later commercialized as
the AT&T 5620. The folk etymology from `Bell Labs Intelligent
Terminal' is incorrect.
blow away: vt. To remove files and directories from permanent storage
with extreme prejudice, generally by accident. Oppose {nuke}.
blow past: vt. To {blow out} despite a safeguard. "The server blew
past the 5K reserve buffer."
A major reason BNF is listed here is that the term is also used
loosely for any number of variants and extensions, possibly
containing some or all of the {glob} wildcards.
boa: [IBM] n. Any one of the fat cables that lurk under the floor
in a {dinosaur pen}. Possibly so called because they display a
ferocious life of their own when you try to lay them straight and
flat after they have been coiled for some time. It is rumored
within IBM that 370 channel cables are limited to 200 feet because
beyond that length the boas get dangerous ... and it is worth
noting that one of the major cable makers uses the trademark
`Anaconda'.
boat anchor: n. 1. Like {doorstop} but more severe, implies that the
offending hardware is irreversibly dead or useless. 2. Also used
of people who just take up space.
/*************************************************
*
* This is a boxed comment in C style
*
*************************************************/
Some have said this term came from telephone company usage: "bugs
in a telephone cable" were blamed for noisy lines, but this
appears to be an incorrect folk etymology. Admiral Grace Hopper
(an early computing pioneer better known for inventing COBOL) liked
to tell a story in which a technician solved a persistent {glitch} in
the Harvard Mark II machine by pulling an actual physical bug out
from between the contacts of one of its relays, and she
subsequently promulgated {bug} in its hackish sense as a joke about
the incident (though, as she was careful to admit, she was not
there when it happened). For many years the logbook associated
with the incident and the actual bug in question (a moth) sat in a
display case at the Naval Surface Warfare Center; it now resides
in the Smithsonian. The entire story, with a picture of the
logbook and the moth taped into it, is recorded in the Annals of
the History of Computing, Volume 3, Number 3 (July 1981), on pages
285 and 286.
Interestingly, the text of the log entry, which reads "1545 Relay
#70 Panel F (moth) in relay. First actual case of bug being
found." seems to establish that the term was already in use at the
time, and a similar incident is alleged to have occurred on the
original ENIAC machine. Indeed, the use of `bug' to mean an
industrial defect was already established in Thomas Edison's time,
and `bug' in the sense of an disruptive event goes back to
Shakespeare! In the First Edition of Johnson's Dictionary a `bug'
is a `frightful object'; this is traced to `bugbear', a Welsh term
for a variety of mythological monster which (to complete the
circle) has recently been reintroduced into the popular lexicon
through fantasy role-playing games.
bump: vt. Synonym for increment. Has the same meaning as C's ++
operator. Used esp. of counter variables, pointers, and index
dummies in `for', `while', and `do-while' loops.
burble: vi. Like {flame}, but connotes that the source is truly
clueless and ineffectual (mere flamers can be competent). A term
of deep contempt.
C
-
can: vt. To abort a job on a time-sharing system. Used esp. when the
person doing the deed is an operator, as in "canned from the
{{console}}". Frequently used in an imperative sense, as in "Can
that print job, the LPT just popped a sprocket!". Synonymous with
{gun}. It is said that the ASCII character with mnemonic CAN
(0011000) was used as a kill-job character on some early OSs.
A true story: One Bob Sjoberg, new at the MIT AI Lab, expressed
some annoyance at the use of jargon and hacker slang. Over his
loud objections, GLS and RMS made a point of using it as much as
possible in his presence, and eventually it began to sink in.
Finally, in one conversation, he used the word `canonical' in
slang-like fashion without thinking. Steele: "Aha! We've finally
got you talking jargon too!" Stallman: "What did he say?"
Steele: "Bob just used `canonical' in the canonical way."
case and paste: [from `cut and paste'] n. 1. The addition of a new
{feature} to an existing system by selecting the code from an
existing feature and pasting it in with minor changes. Common in
telephony circles because most operations in a telephone switch are
selected using case statements. Leads to {software bloat}.
cdr: /ku'dr/ or /kuh'dr/ [from LISP] vt. To remove the first item
from a list of things. In the form `cdr down', to trace down a
list of elements. "Shall we cdr down the agenda?" Usage: silly.
See also {loop through}.
Historical note: the instruction format of the IBM 7090 that hosted
the original LISP implementation featured two 15-bit fields called
the `address' and `decrement' parts. The term `cdr' was originally
`Contents of Decrement Register', referring to the decrement part
(but not, confusingly, to a separate register). Similarly, `car'
stood for `Contents of Address Register'.
The `cdr' and `car' operations have since become bases for
formation of compound metaphors in non-LISP contexts. GLS recalls,
for example, a programming project in which strings were
represented as linked lists; the get-character and skip-character
operations were of course called CHAR and CHDR.
chad box: n. {Iron Age} card punches contained boxes inside them,
about the size of a lunchbox, that held the {chad} (squares of
paper punched out of punch cards). You had to open the covers of
the card punch periodically and empty the chad box. The {bit
bucket} was notionally the equivalent device in the CPU enclosure,
which was typically across the room in another great grey-and-blue
box.
Christmas tree packet: n. A packet with every single option set for
whatever protocol is in use.
DO 10 I=1,LIMIT
C imagine many lines of code here, leaving the original DO
C statement lost in the spaghetti...
WRITE(6,10) I,FROB(I)
10 FORMAT(1X,I5,G10.4)
COME FROM was supported under its own name for the first time
fifteen years later, in C-INTERCAL (see {INTERCAL},
{retrocomputing}); knowledgeable observers are still reeling from
shock.
comm mode: /kom mohd/ [from the ITS feature supporting on-line
chat, spelled with one or two Ms] Syn. for {talk mode}; also
spelled `comm mode'.
computer geek: n. One who eats (computer) bugs for a living. One
who fulfills all of the dreariest negative stereotypes about
hackers: an asocial, malodorous, pasty-faced monomaniac with all
the personality of a cheese grater. Cannot be used by outsiders
without implied insult to all hackers; compare black-on-black usage
of `nigger'. A computer geek may be either a fundamentally
clueless individual or a proto-hacker in {larval stage}. Also
called `turbo nerd', `turbo geek'. See also
{clustergeeking}, {wannabee}, {terminal junkie}.
Conway's Law: prov. The rule that the organization of the software and
the organization of the software team will be congruent; originally
stated as "If you have four groups working on a compiler, you'll
get a four-pass compiler."
cuspy: /kuhs'pee/ [coined at WPI from the DEC acronym CUSP, for
Commonly Used System Program, i.e., a utility program used by many
people] adj. 1. (of a program) Well-written. 2. Functionally
excellent. A program which performs well and interfaces well to
users is cuspy. See {rude}. 3. [NYU] Said of an attractive
woman, especially one regarded as available.
D
-
dead code: n. Routines that can never be accessed because all calls
to them have been removed, or code which cannot be reached because
it is guarded by a control structure which provably must always
transfer control somewhere else. The presence of dead code may
reveal either logical errors due to alterations in the program or
significant changes in the assumptions and environment of the
program (see also {software rot}); a good compiler should report
dead code so a maintainer can think about what it means. Syn.
{grunge}.
deadlock: n. 1. A situation wherein two or more processes are
unable to proceed because each is waiting for one of the other to
do something. A common example is a program communicating to a
server, which may find itself waiting for output from the server
before sending anything more to it, while the server is similarly
waiting for more input from the controlling program before
outputting anything. (It is reported that this particular flavor
of deadlock is sometimes called a `starvation deadlock', though
the term `starvation' is more properly used for situations where a
program can never run simply because it never gets high enough
priority. Another common flavor is `constipation', where each
process is trying to send stuff to the other, but all buffers are
full because nobody is reading anything.) See {deadly embrace}.
2. Also used of deadlock-like interactions between humans, as when
two people meet in a narrow corridor, and each tries to be polite
by moving aside to let the other pass, but they end up swaying from
side to side without making any progress because they always both
move the same way at the same time.
death star: [from the movie `Star Wars'] The AT&T corporate
logo, which appears on computers sold by AT&T and bears an uncanny
resemblance to the `Death Star' in the movie. This usage is
particularly common among partisans of {BSD} UNIX, who tend to
regard the AT&T versions as inferior and AT&T as a bad guy. Copies
still circulate of a poster printed by Mt. Xinu showing a starscape
with a space fighter labelled 4.2BSD streaking away from a broken
AT&T logo wreathed in flames.
DEC Wars: n. A 1983 {USENET} posting by Alan Hastings and Steve Tarr,
spoofing the `Star Wars' movies in hackish terms. Some years
later, ESR (disappointed by Hastings/Tarr's failure to exploit a
great premise more thoroughly) posted a three-times-longer complete
rewrite called `UNIX WARS'; the two are often confused.
dink: adj. Said of a machine which has the {bitty box} nature; a
machine too small to be worth bothering with, sometimes the current
system you're forced to work on. First heard from an MIT hacker
(BADOB) working on a CP/M system with 64K in reference to any 6502
system, then from fans of 32-bit architectures about 16-bit
machines. "GNUMACS will never work on that dink machine."
Probably derived from mainstream `dinky', which isn't sufficiently
pejorative.
double bucky: adj. Using both the CTRL and META keys. "The
command to burn all LEDs is double bucky F."
Double Bucky
DWIM: /dwim/ [Do What I Mean] 1. adj. Able to guess, sometimes even
correctly, the result intended when bogus input was provided. 2.
n.,obs. The INTERLISP function that attempted to accomplish this
feat by correcting many of the more common errors. See {hairy}.
3. Occasionally, an interjection hurled at a balky computer, esp.
when one senses one might be tripping over legalisms (see
{legalese}).
E
-
Of these, the first two are by far the most frequently encountered.
Hyphenless forms of them are common on CompuServe, GEnie, and BIX;
see also {bixie}. On {USENET}, `smiley' is often used as a
generic synonymous with {emoticon}, as well as specifically for the
happy-face emoticon.
English: n.,obs. The source code for a program, which may be in any
language, as opposed to the linkable or executable binary produced
from it by a compiler. The idea behind the term is that to a real
hacker, a program written in his favorite programming language is
at least as readable as English. Usage: used mostly by old-time
hackers, though recognizable in context.
EXCH: /eks'ch@, eksch/ vt. To exchange two things, each for the
other; to swap places. If you point to two people sitting down and
say "Exch!", you are asking them to trade places. {EXCH},
meaning EXCHange, was originally the name of a PDP-10 instruction
that exchanged the contents of a register and a memory location.
Many newer hackers tend to be thinking instead of the PostScript
exchange operator (which is usually written in lowercase).
F
-
fall over: [IBM] vi. Yet another synonym for {crash} or {lose}.
`Fall over hard' equates to {crash and burn}.
switch (color)
{
case GREEN:
do_green();
break;
case PINK:
do_pink();
/* FALL THROUGH */
case RED:
do_red();
break;
default:
do_blue();
break;
}
B: "Indeed."
fepped out: adj. The Symbolics 3600 Lisp Machine has a front-end
processor called a `FEP' (compare sense #2 of {box}). When the
main processor gets {wedged}, the FEP takes control of the
keyboard and screen. Such a machine is said to have `fepped
out'.
Q: How can you recognize a DEC field circus engineer with a flat tire?
A: He's changing each tire to see which one is flat.
Q: How can you recognize a DEC field circus engineer who is out of
gas?
A: He's changing each tire to see which one is flat.
filk: /filk/ [from SF fandom, where a typo for `folk' was adopted
as a new word] n.,v. A `filk' is a popular or folk song with
lyrics revised or completely new lyrics, intended for humorous
effect when read and/or to be sung late at night at SF conventions.
There is a flourishing subgenre of these called `computer filks',
written by hackers and often containing technical humor of quite
sophisticated nature. See {double bucky} for an example.
fine: [WPI] adj. Good, but not good enough to be {cuspy}. The word
`fine' is used elsewhere, of course, but without the implicit
comparison to the higher level implied by {cuspy}.
FISH queue: [acronym, by analogy with FIFO (First In, First Out)]
n. First In, Still Here. A joking way of pointing out that
processing of a particular sequence of events or requests has
stopped dead. Also `FISH mode' and `FISHnet'; the latter
may be applied to any network that is running really slowly or
exhibiting extreme flakiness.
fix: n.,v. What one does when a problem has been reported too many
times to be ignored.
A USENETter who was at WPI from 1972 to 1976 adds: "I am 99% certain
that the use of `flame' originated at WPI". Those who made a
nuisance of themselves insisting that they needed to use a TTY for
`real work' came to be known as `flaming asshole lusers'.
Other, particularly annoying people became `flaming asshole
ravers', which shortened to `flaming ravers', and ultimately
`flamers'. I remember someone picking up on the Human Torch pun,
but I don't think `flame on/off' was ever much used at WPI. See
also {asbestos cork award}.
flat-ASCII: adj. Said of a text file that contains only 7-bit ASCII
characters and uses only ASCII-standard control characters (that
is, has no embedded codes specific to a particular text formatter
or markup language, and no {meta}-characters). Syn.
{plain-ASCII}. Compare {flat-file}.
fold case: v. See {smash case}. This term tends to be used more
by people who don't `mind' that their tools smash case. It
also connotes that case is ignored but case distinctions in data
processed by the tool in question aren't destroyed.
However, the use of the word `foo' itself has more complicated
antecedents, including a long history in comic strips and cartoons.
The old `Smokey Stover' comic strips by Bill Holman often
included the word `FOO', in particular on license plates of cars;
allegedly, `FOO' and `BAR' also occurred in Walt Kelly's
`Pogo' strips. In a 1938 cartoon Daffy Duck holds up a sign
saying "SILENCE IS FOO!". It is even possible that hacker usage
actually springs from the title `FOO, Lampoons and Parody' of
a comic book first issued 20 years later, in September 1958; the
byline read `C. Crumb' but this may well have been a sort-of
pseudonym for noted weird-comix artist Robert Crumb. The title FOO
was featured in large letters on the front cover.
for the rest of us: [from the Mac slogan "The computer for the
rest of us"] adj. Used to describe a {spiffy} product whose
affordability shames other comparable products, or (more often)
used sarcastically to describe {spiffy}, but very overpriced
products.
gen: /jen/ n.,v. Short for {generate}, used frequently in both spoken
and written contexts.
gender mender: n., A cable connector shell with either two male or
two female connectors on it, used to correct the mismatches that
result when some {loser} didn't understand the RS232C
specification and the distinction between DTE and DCE. Used esp.
for RS-232C parts in either the original D-25 or the IBM PC's bogus
D-9 format. Also called a `gender bender', `gender
blender', `sex changer' and even `homosexual adaptor';
there appears to be some confusion as to whether a `male homosexual
adapter' has pins on both sides (is male) or sockets on both sides
(connects two males)
GFR: /jee eff ar/ vt. [acronym, ITS] From "Grim File Reaper", an
ITS utility. To remove a file or files according to some
program-automated or semi-automatic manual procedure, especially
one designed to reclaim mass storage space or reduce namespace
clutter. Often generalized to pieces of data below file level.
"I used to have his phone number but I guess I {GFR}ed it." See
also {prowler}, {reaper}. Compare {GC}, which discards only
provably worthless stuff.
GIGO: /gie'goh/ [acronym] 1. Garbage In, Garbage out --- usually said
in response to lusers who complain that a program didn't complain
about faulty data. Also commonly used to describe failures in
human decision making due to faulty, incomplete, or imprecise data.
2. Garbage In, Gospel Out --- this more recent expansion is a
sardonic comment on the tendency human beings have to put excessive
trust in "computerized" data.
gorp: /gorp/ [CMU, perhaps from the canonical hiker's food, Good
Old Raisins and Peanuts] Another metasyntactic variable, like
{foo} and {bar}.
Great Renaming: n. The {flag day} on which all of the groups on the
{USENET} had their names changed from the net.- format to the
current multiple-hierarchies scheme.
green card: n. [after the IBM System/360 Reference Data card] This
is used for any summary of an assembly language, even if the color is
not green. Less frequently used now because of the decrease in the
use of assembly language. "I'll go get my green card so I can
check the addressing mode for that instruction." Some green cards
are actually booklets.
The original green card became a yellow card when the System/370
was introduced, and later a yellow booklet. An anecdote from IBM
refers to a scene that took place in a programmers' terminal room
at Yorktown in 1978. A luser overheard one of the programmers ask
another "Do you have a green card?". The other grunted and
passed the first a thick yellow booklet. At this point the luser
turned a delicate shade of olive and rapidly left the room, never
to return. See also {card}.
H
-
hack up: vt. To {hack}, but generally implies that the result is
a hack in sense #1 (a quick hack). Contrast this with {hack on}.
To `hack up on' implies a quick and dirty modification to an
existing system.
Item 41 (Gene Salamin): There are exactly 23,000 prime numbers less
than 2 ^ 18.
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.
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!"
high bit: [from `high order bit'] n. 1. See {meta bit}. 2. Also
meaning most significant part of something other than a data byte,
e.g. "Spare me the whole saga, just give me the high bit."
holy wars: [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.
LISP, etc. etc. etc. The characteristic that distinguishes
{holy wars} from normal technical disputes is that (regardless of
the technical merits of the case on either side) most participants
spend their time trying to pass off personal value choices and
cultural attachments as objective technical evaluations.
I
-
IBM: /ie bee em/ 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 for the `industry leader' (see {fear
and loathing}).
What galls hackers about most IBM machines above the PC level isn't
so much that they're underpowered and overpriced (though that
counts 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 marked `IBM'; these derive from two
rampantly unofficial jargon lists circulated among IBM's own
beleaguered hacker underground.
indent style: [C programmers] n. The rules one uses to lay out code
in a readable fashion; a subject of {holy wars}. There are four
major C indent styles, as 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 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', abbr. 1TBS, by its partisans. The basic indent shown
here is 8 spaces (or 1 tab) per level; 4 or 2 is occasionally seen,
but is 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 8 spaces, but 4 is
just as common (esp. in C++ code).
if (cond)
{
<body>
}
if (cond)
{
<body>
}
`GNU style' --- Used throughout GNU EMACS and the Free Software
Foundation code, and just about nowhere else. Indents are always 4
spaces per level, with { and } "centered" between levels.
if (cond)
{
<body>
}
What style one uses is very much a matter of personal choice, but
one should be consistent within any one software package.
Statistically, surveys have shown the Allman and Whitesmiths styles
to be the most common, with about equal `mind share'. K&R 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).
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 greatest of
{hacker}-natures.
LET A = 65536;
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 re-implemented 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.
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. not within one of the functional domains.
su
Sites in the Soviet Union (only one really active one so far!).
uk
Sites in the United Kingdom.
Within the `us' domain there are subdomains for the fifty
states, 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 can be divided up in similar ways.
J
-
JR[LN]: /jay ahr en/, /jay ahr el/ n. The names JRN and JRL were
sometimes used as example names when discussing a kind of user ID
used under {TOPS-10}; they were understood to be the initials of
(fictitious) programmers named `J. Random Nerd' and `J. Random
Loser' (see {J. Random}). For example, if one said "To log in,
type log one comma jay are en" (that is, "log#1,JRN"), the
listener would have understood that he should use his own computer
id in place of `JRN'.
K
-
ken: /ken/ n. A flaming user. This noun was in use by the Software
Support group at Symbolics because the two greatest flamers in the
user community were both named Ken.
kluge up: vt. To lash together a quick hack to perform a task; this
is milder than {cruft together} and has some of the connotations
of {hack up} (note however that the construction `kluge on'
corresponding to {hack on} is never used). "I've kluged up this
routine to dump the buffer contents to a safe place."
In fact, it was only 6 years later that the first genuine site in
Moscow, demos.su, joined USENET. Some readers needed convincing
that it wasn't another prank. Vadim Antonov ([email protected]),
the major poster from Moscow up to at least the end of 1990, was
quite aware of all this, referred to it frequently in his own
postings, and at one point twitted some credulous readers by
blandly `admitting' that he *was* a hoax! [Mr. Antonov also
contributed the Russian-language material for this File --- ESR]
L
-
lace card: n. obs. A {{punched card}} with all holes punched (also
called a `whoopee card'). Card readers jammed when they got to
one of these, as the resulting card had too little structural
strength to avoid buckling inside the mechanism. Card punches
could also jam trying to produce these things due to power-supply
problems. When some practical joker fed a lace card through
the reader you needed to clear the jam with a `card knife' --- which
you used on the joker first.
Most hackers tend to frown at languages like Pascal and Ada which
don't give them the near-total freedom considered necessary for
hacking (see {bondage-and-discipline language}) and to regard
everything that's even remotely connected with {COBOL} or other
traditional {card walloper} languages as a total {loss}.
lase: /layz/ vt. To print a given document via a laser printer. "OK,
let's lase that sucker and see if all those graphics-macro calls
did the right things."
laser chicken: n. Kung Pao Chicken, a standard Chinese dish
containing chicken, peanuts, and hot red peppers in a spicy
pepper-oil sauce. A few hackers call it `laser chicken' for
two reasons; it can {zap} you just like a laser, and the
sauce has a red color reminiscent of some laser beams.
LDB: /l@'d@b/ [from the PDP-10 instruction set] vt. To extract from
the middle. This usage has been kept alive by Common LISP's
function of the same name. See also {DPB}.
legal: adj. Loosely used to mean `in accordance with all the
relevant rules', esp. in connection with some set of constraints
defined by software. Thus one very frequently hears constructions
like `legal syntax', `legal input' etc. Hackers often model their
work as a sort of game played with the environment in which the
objective is to maneuver through the thicket of `natural laws' to
achieve a desired objective. Their use of `legal' is flavored as
much by this game-playing sense as by the more conventional one
having to do with courts and lawyers. Compare {language lawyer},
{legalese}.
line starve: [MIT] 1. vi. To feed paper through a printer the wrong
way by one line (most printers can't do this!). On a display
terminal, to move the cursor up to the previous line of the screen.
Example: "To print X squared, you just output X, line starve, 2,
line feed." (The line starve causes the 2 to appear on the line
above the X, and the line feed gets back to the original line.) 2.
n. A character (or character sequence) that causes a terminal to
perform this action. Unlike `line feed', `line starve' is
*not* standard ASCII terminology. Even among hackers it is
considered a bit silly. 3. [proposed] A sequence like \c (used in
System V echo, as well as nroff/troff) which suppresses a
{newline} or other character(s) that would normally implicitly be
emitted.
Live Free Or Die!: imp. 1. The state motto of New Hampshire, which
used to be on its car license plates. 2. A slogan associated with
UNIX in the romantic days when UNIX aficionados saw themselves as a
tiny, beleaguered underground tilting against the windmills of
industry. The "free" referred specifically to freedom from the
{fascist} design philosophies and crufty misfeatures common on
commercial operating systems. Armando Stettner, one of the early
UNIX developers, used to give out fake license plates bearing this
motto under a large UNIX, all in New Hampshire colors of green and
white. These are now valued collector's items.
locked and loaded: [from military slang for an M-16 with magazine
inserted and prepared for firing] adj. Said of a removable disk
volume properly prepared for use --- that is, locked into the drive
and with the heads loaded. Ironically, because their heads are
`loaded' whenever the power is up, this is never used of
{{Winchester}} drives.
lord high fixer: [primarily British, prob. from Gilbert & Sullivan's
`lord high executioner'] n. The person in an organization who
knows the most about some aspect of a system. See {wizard}.
M
-
Mailing lists are easy to create and (unlike USENET) don't tie up a
significant amount of machine resources. Thus, they are often
created temporarily by working groups who can then collaborate on a
project without ever needing to meet face-to-face. Much of the
material in this book was criticized and polished on just such a
mailing list (called `jargon-friends') which included all the
co-authors of the original `The Hacker's Dictionary'.
Matrix: [FidoNet] n. 1. What the Opus BBS software and sysops call
{FidoNet}. 2. Fanciful term for a {cyberspace} expected to
emerge from current networking experiments (see {network, the}).
Some people refer to the totality of present networks this way.
Mbogo, Dr. Fred: [Stanford] n. The archetypal man you don't want to
see about a problem, esp. an incompetent professional; a shyster.
Usage: "Do you know a good eye doctor?" "Sure, try Mbogo Eye
Care and Professional Dry Cleaning." The name comes from synergy
between {bogus} and the original Dr. Mbogo, a witch doctor who
was Gomez Addams' physician on the old `Addams Family' TV show.
MEGO: /me'goh/ or /mee'goh/ [My Eyes Glaze Over, often Mine Eyes
Glazeth (sic) Over, attributed to the futurologist Herman Kahn]
Also `MEGO factor'. 1. n. Handwaving intended to confuse the
listener and hopefully induce agreement because the listener does
not want to admit to not understanding what is going on. MEGO is
usually directed at senior management by engineers and contains a
high proportion of {TLA}s. 2. excl. An appropriate response to
MEGO tactics.
This term entered hackerdom with the Fabritek 256K moby memory of
the MIT-AI machine. Thus, a moby is classically, 256K 36-bit words,
the size of a PDP-10 moby (it had two). Back when address
registers were narrow, the term was more generally useful; because
when a computer had virtual memory mapping, it might actually
have more physical memory attached to it than any one program could
access directly. One could then say "This computer has six
mobies" to mean that the ratio of physical memory to address space
is six, without having to say specifically how much memory there
actually is. That in turn implied that the computer could
timeshare six `full-sized' programs without having to swap
programs between memory and disk.
Nowadays the low cost of processor logic means that registers are
typically wider than the most memory you can cram onto a machine,
so most systems have much *less* than 1 theoretical `native'
moby of core. Also, more modern memory-management techniques make
the `moby count' less significant. However, there is one series of
popular chips for which the term could stand to be revived --- the
Intel 8088 and 80286 with their incredibly brain-damaged
segmented-memory design. On these, a `moby' would be the
1-megabyte address span of a paragraph-plus-offset pair (by
coincidence, a PDP-10 moby was exactly 1 megabyte of 9-bit bytes).
One also often hears the verbs `enable' and `disable' used in
connection with slang modes. Thus, for example, a sillier way of
saying "I'm going to crash" is "I'm going to enable crash mode
now." One might also hear a request to "disable flame mode,
please".
Moore's Law: /morz law/ prov. The observation that the logic
density of silicon integrated circuits has closely followed the
curve (bits per inch ^ 2) = 2 ^ (n - 1962); that is, the amount of
information storable in one square inch of silicon has roughly
doubled yearly every year since the technology was invented.
MOTOS: /moh-tohs/ [from the 1970 census forms via USENET, Member Of
The Opposite Sex] n. A potential or (less often) actual sex
partner. See {MOTAS}, {MOTSS}, {SO}. Less common than {MOTSS} or
{MOTAS}, which has largely displaced it.
Historically, MUDs (and their more recent progeny with names of MU-
form) derive from an AI experiment by Richard Bartle and Roy
Trubshaw on the University of Essex's DEC-10 in the early 1980s, and
descendants of that game still exist today (see {BartleMUD}). The
title `MUD' is still copyright to the commercial MUD run by Bartle
on British Telecom (their motto: "You haven't *lived* `til
you've *died* on MUD"); however, this did not stop students on
the European academic networks from copying/improving on the MUD
concept, from which sprung several new MUDs (VAXMUD, AberMUD,
LPMUD). Many of these had associated bulletin-board systems for
social interaction. Because USENET feeds have been spotty and
difficult to get in Great Britain and the British JANET
network doesn't support {FTP} or {telnet}, the MUDs became
major foci of hackish social interaction there.
LPMUD and other variants crossed the Atlantic around 1988 and
quickly gained popularity in the US; they became nuclei for large
hacker communities with only loose ties to traditional hackerdom
(some observers see parallels with the growth of USENET in the
early 1980s).
More recent MUDs (such as TinyMud), esp. in the US, have tended to
emphasize social interaction, puzzles, and cooperative
world-building as opposed to combat and competition. Whether this
represents a genuine long-term trend is hard to say; the state of
the art in MUD design is still moving very rapidly, with new
simulation designs appearing (seemingly) every month. There is now
(early 1991) a move afoot to deprecate the term {MUD} itself, as
newer designs exhibit an exploding variety of names corresponding
to the different simulation styles being explored. See also
{BartleMUD}, {berserking}, {bonk/oif}, {brand brand brand},
{FOD}, {hack-and-slay}, {mudhead}, {posing}, {talk mode},
{tinycrud}.
mung: /muhng/ alt. `munge' /muhnj/ [in 1960 at MIT, `Mash Until No
Good"; sometime after that the derivation from the recursive
acronym `Mung Until No Good' became standard] vt. 1. To make
changes to a file, often large-scale, usually irrevocable.
Occasionally accidental. See {BLT}. 2. To destroy, usually
accidentally, occasionally maliciously. The system only mungs
things maliciously; this is a consequence of Murphy's Law. See
{scribble}, {mangle}, {trash}. Reports from {USENET} suggest that
the pronunciation /muhnj/ is now usual in speech, but the spelling
`mung' is still common in program comments. 3. The kind of beans of
which the sprouts are used in Chinese food. (That's their real
name! Mung beans! Really!)
mutter: vt. To quietly enter a command not meant for the ears, eyes
or fingers of ordinary mortals. Frequently in `mutter an
{incantation}'.
N
-
NAK: [from the ASCII mnemonic for 0010101] interj. 1. On-line joke
answer to {ACK}? --- "I'm not here". 2. On line answer to a
request for chat --- "I'm not available". 3. Used to politely
interrupt someone to tell them you don't understand their point or
that they have suddenly stopped making sense. See {ACK}, sense
#3. "And then, after we recode the project in COBOL...."
"Nak Nak Nak! I thought I heard you say COBOL!"
net.-: /net dot/ pref. [USENET] Prefix used to describe people and
events related to USENET. From the time before the {Great
Renaming}, when all non-local newsgroups had names beginning
`net.'. Includes {net.god}s, `net.goddesses' (various
charismatic women with circles of on-line admirers),
`net.lurkers', (see {lurker}), `net.parties' (a synonym
for {boink} sense #2 (q.v.)) and many similar constructs. See
also {net.police}.
nil: [from LISP terminology for `false'] No. Usage: used in reply
to a question, particularly one asked using the `-P' convention.
See {T}.
noddy: [Great Britain; from the children's books] adj. 1. Small and
unuseful, but demonstrating a point. Noddy programs are often
written when learning a new language or system. The archetypal
noddy program is {hello world}. Noddy code may be used to
demonstrate a feature or bug of a compiler, but would not be used
in a real program. May be used of real hardware or software to
imply that it isn't worth using. "This editor's a bit noddy."
2. A program that is more or less instant to produce. In this use,
the term does not necessarily connote uselessness, but describes a
{kluge} sufficiently trivial that it can be written and debugged
while carrying on (and during the space of) a normal conversation.
e.g. "I'll just throw together a noddy `awk(1)' script to convert
{crlf}s into {newline}s".
O
-
This relatively short and sweet entry might help convey the flavor
of obfuscated C:
/*
* HELLO WORLD program
* by Jack Applin and Robert Heckendorn, 1985
*/
main(v,c)char**c;{for(v[c++]="Hello, world!\n)";
(!!c)[*c]&&(v--||--c&&execlp(*c,*c,c[!!c]+!!c,!c));
**c=!c)write(!!*c,*c,!!**c);}
/*
* Program to compute an approximation of pi
* by Brian Westley, 1988
*/
#define _ -F<00||--F-OO--;
int F=00,OO=00;
main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO()
{
_-_-_-_
_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_-_-_-_-_
_-_-_-_-_-_-_-_
_-_-_-_
}
offline: adv. Not now or not here. Example: "Let's take this
discussion offline." Specifically used on {USENET} to suggest
that a discussion be taken off a public newsgroup to email.
ONE BELL SYSTEM (IT WORKS): This was the output from the old UNIX V6
`1' command. The `1' command also contained a random number
generator which gave it a one-in-ten chance of recursively
executing itself.
1 cup cornstarch
1 cup baking soda
3/4 cup water
N drops of food coloring
P
-
padded cell: n. Where you put lusers so they can't hurt anything.
A program that limits a {luser} to a carefully restricted subset
of the capabilities of the host system (for example, the
`rsh(1)' utility on UNIX). Note that this is different from
an {iron box} because it's overt and not aimed at enforcing
security so much as protecting others (and the luser him/herself!)
from the consequences of the luser's boundless naivete (see
{naive}). Also `padded cell environment'.
page in: [MIT] vi. To become aware of one's surroundings again after
having paged out (see {page out}). Usually confined to the sarcastic
comment, "So-and-so pages in. Film at 11." See {film at 11}.
9. There is no escape
People who use Pascal for serious programming fall into a fatal trap.
Because the language is impotent, it must be extended. But each group
extends Pascal in its own direction, to make it look like whatever
language they really want. Extensions for separate compilation,
Fortran-like COMMON, string data types, internal static variables,
initialization, octal numbers, bit operators, etc., all add to the
utility of the language for one group but destroy its portability to
others.
I feel that it is a mistake to use Pascal for anything much beyond its
original target. In its pure form, Pascal is a toy language, suitable
for teaching but not for real programming.
Pascal has since been almost entirely displaced (by C) from the
niches it had acquired in serious application and systems
programming, but retains some popularity as a hobbyist language in
the MS-DOS world.
pdl: /pid'l/ or /puhd'l/ [acronym for Push Down List] In ITS days,
the preferred MITism for {stack}. 2. Dave Lebling, one of the
co-authors of {Zork}; (his {network address} on the ITS machines
was at one time pdl@dms). 3. Program Design Language. Any of a
large class of formal and profoundly useless pseudo-languages in
which {management} forces one to design programs. {Management}
often expects it to be maintained in parallel with the code. Used
jokingly as in, "Have you finished the PDL?" See also
{{flowchart}}.
pig, run like a: adj. To run very slowly on given hardware, said of
software. Distinct from {hog}.
pipeline: [UNIX, orig. by Doug McIlroy; now also used under MS-DOS
and elsewhere] n. A chain of {filter} programs connected
`head-to-tail', so that the output of one becomes the input of
the next. Under UNIX, user utilities can often be implemented or
at least prototyped by a suitable collection of pipelines and
temp-file grinding encapsulated in a shell script; this is much
less effort than writing C every time, and the capability is
considered one of UNIX's major winning features.
pistol: [IBM] n. A tool that makes it all too easy for you to
shoot yourself in the foot. "UNIX `rm *' makes such a nice
pistol!"
pizza box: [SUN] n. The largish thin box housing the electronics
in (especially SUN) desktop workstations, so named because of its
size and shape, and the dimpled pattern that looks like air holes.
pop: /pop/ [based on the stack operation that removes the top of a
stack, and the fact that procedure return addresses are saved on
the stack] (also POP, POPJ /pop-jay/) 1. vt. To remove something
from a {stack} or {pdl}. If a person says he has popped
something from his stack, he means he has finally finished working
on it and can now remove it from the list of things hanging over
his head. 2. To return from a digression (the J-form derives
specifically from a {PDP-10} assembler instruction). By verb
doubling, "Popj, popj" means roughly, "Now let's see, where were
we?" See {RTI}.
Q
-
quick and dirty: adj. Describes a {crock} put together under time
or user pressure. Used esp. when you want to convey that you think
the fast way might lead to trouble further down the road. "I can
have a quick and dirty fix in place tonight, but I'll have to
rewrite the whole module to solve the underlying design problem."
See also {kluge}.
R
-
17
Long described at MIT as `the least random number', see 23.
23
Sacred number of Eris, Goddess of Discord (along with 17 and 5).
42
The Answer to the Ultimate Question of Life, the Universe and Everything.
69
From the sexual act. This one was favored in MIT's ITS culture.
105
69 hex = 105 decimal, and 69 dec = 105 octal.
666
The Number of the Beast.
real time: adv. Doing something while people are watching or waiting.
"I asked her how to find the calling procedure's program counter
on the stack and she came up with an algorithm in real time."
RTFM: /ahr-tee-ef-em/ [UNIX] imp. Abbrev. for `Read The Fucking Manual'.
1. Used by GURUs to brush off questions they consider trivial or
annoying. Compare {Don't do that, then!}. 2. Used when reporting
a problem to indicate that you aren't just asking out of
{randomness}. "No, I can't figure out how to interface UNIX to my
toaster and yes I have RTFM." Unlike sense #1 this use is
considered polite. See also {RTFAQ}, {RTM}.
rusty iron: n. Syn. {tired iron}. It has been claimed that this
is the inevitable fate of {water MIPS}.
S
-
saga: [WPI] n. A cuspy but bogus raving story dealing with N random
broken people.
The author of `The Intel 8086 Primer', who was one of the
original designers of the 8086, noted that there was originally a
SEX instruction on that processor. He says that Intel management
got cold feet and decreed that it be changed, and thus the
instruction was renamed CBW and CWD (depending on what was being
extended). Amusingly, the Intel 8048 (the microcontroller used in
IBM PC keyboards) is also missing straight SEX but has logical-or
and logical-and instructions ORL and ANL.
sig block: /sig blok/ [UNIX; often written ".sig" there] n. Short
for `signature', used specifically to refer to the electronic
signature block which most UNIX mail- and news-posting software
will allow you to automatically append to outgoing mail and news.
The composition of one's sig can be quite an art form, including an
ASCII logo or one's choice of witty sayings (see {sig quote}); but
many consider large sigs a waste of {bandwidth}, and it has been
observed that the size of one's sig block is usually inversely
proportional to one's longevity and level of prestige on the net.
since time T equals minus infinity: adj. A long time ago; for as
long as anyone can remember; at the time that some particular frob
was first designed. Sometimes the word `time' is omitted if there
is no danger of confusing `T' as a time with {T} meaning `yes'.
See also {time T}.
slurp: vt. To read a large data file entirely into core before working
on it. This may be contrasted with the strategy of reading a small
piece at a time, processing it, and then reading the next piece.
"This program slurps in a 1K-by-1K matrix and does an FFT."
smart: adj. Said of a program that does the {Right Thing} in a wide
variety of complicated circumstances. There is a difference
between calling a program smart and calling it intelligent; in
particular, there do not exist any intelligent programs (yet).
Compare {robust} (smart programs can be {brittle}).
snarf: /snarf/ vt. 1. To grab, esp. a large document or file for the
purpose of using it either with or without the author's permission.
See {BLT}. Variant: `snarf down', to snarf, sometimes with the
connotation of absorbing, processing, or understanding. "I think
I'll snarf down the list of DDT commands so I'll know what's
changed recently." 2. [in the UNIX community] to fetch a file or
set of files across a network. See also {blast}. This term was
mainstream in the late 1960s meaning `to eat piggishly'.
L lower-case "l"
shift-L upper-case "L"
front-L Greek lower-case lambda
front-shift-L Greek upper-case lambda
top-L two-way arrow (front and shift are ignored)
And of course each of these may also be typed with any combination
of the control, meta, hyper, and super keys. On this keyboard, you
can type over 8000 different characters! This allows the user to
type very complicated mathematical text, and also to have thousands
of single-character commands at his disposal. Many hackers were
actually willing to memorize the command meanings of that many
characters if it reduced typing time (this view rather obviously
shaped the interface of EMACS). Other hackers, however, thought
having that many bucky bits was overkill, and objected that such a
keyboard can require three or four hands to operate. See {bucky
bits}, {cokebottle}, {double bucky}, {meta bit}, {quadruple
bucky}.
splat: n. 1. Name used in many places (DEC, IBM, and others) for
the ASCII asterisk (`*') character. This may derive from the
`squashed-bug' appearance of the asterisk on many early line
printers. 2. [MIT] Name used by some people for the ASCII
number-sign (`#') character. 3. [Stanford] Name used by some
people for the Stanford/ITS extended ASCII circle-x character.
(This character is also called `circle-x', `blobby', and
`frob', among other names; it is used by mathematicians as a
notation for `cross-product') 4. [Stanford] Name for the
semi-mythical extended ASCII circle-plus character. 5. Canonical
name for an output routine that outputs whatever the local
interpretation of splat is. 6. [Rochester Institute of Technology]
The command key on a Macintosh. Usage: nobody really agrees what
character `splat' is, but the term is common. See also {{ASCII}}
stack puke: n. Some micros are said to `puke their guts onto the
stack' to save their internal state during exception processing.
On a pipelined machine this can take a while (up to 92 bytes for a
bus fault on the 68020, for example).
stale pointer bug: n. Synonym for {aliasing bug} used esp. among
microcomputer hackers.
swab: /swob/ [From the mnemonic for the PDP-11 `byte swap'
instruction, as immortalized in the dd(1) option `conv=swab'
(see {dd})] 1. vt. to solve the {NUXI problem} by swapping
bytes in a file. 2. The program in V7 UNIX used to perform this
action, or anything functionally equivalent to it. See also
{big-endian}, {little-endian}, {bytesexual}.
sync: /sink/ [UNIX] n.,vi. 1. To force all pending I/O to the disk.
2. More generally, to force a number of competing processes or
agents to a state that would be `safe' if the system were to crash;
thus, to checkpoint. See {flush}.
<g> grin
BBL be back later
BRB be right back
HHOJ ha ha only joking
HHOS {ha ha only serious}
LOL laughing out loud
ROTF rolling on the floor
ROTFL rolling on the floor laughing
AFK away from keyboard
b4 before
CU l8tr see you later
MORF Male or Female?
TTFN ta-ta for now
OIC Oh, I see
rehi hello again
tea, ISO standard cup of: [South Africa] n. A cup of tea with milk
and one teaspoon of sugar, where the milk was poured into the cup
before the tea. Variations are ISO 0, with no sugar, ISO 2, with
two spoons of sugar, and so on.
Note: like many ISO standards, this one has a faintly alien ring in
North America, wherein hackers generally shun the decadent British
practice of adulterating perfectly good tea with *dairy
products* and prefer instead to add a wedge of lemon, if anything.
If one were feeling extremely silly, one might hypothecate an
analogous `ANSI standard cup of tea' and wind up with a
political situation distressingly similar to several that arise in
much more serious technical contexts. Milk and lemon don't mix
very well.
TECO: /tee'koh/ obs. 1. vt. Originally, to edit using the TECO editor
in one of its infinite variations (see below); sometimes still used
to mean `to edit' even when not using TECO! Usage: rare and now
primarily historical. 2. [originally an acronym for (paper)
`Tape Editor and COrrector'; later, `Text Editor and
Corrector'] n. A text editor developed at MIT and modified by
just about everybody. If all the dialects are included, TECO might
have been the single most prolific editor in use before {EMACS},
to which it was directly ancestral. Noted for its powerful
programming-language-like features and its incredibly hairy syntax.
It is literally the case that every possible sequence of {{ASCII}}
characters is a valid, though probably uninteresting, TECO program;
one common hacker game used to be mentally working out what the
TECO commands corresponding to human names did. As an example,
here is a TECO program that takes a list of names like this:
Loser, J. Random
Quux, The Great
Dick, Moby
sorts them alphabetically according to last name, and then puts the
last name last, removing the comma, to produce this:
Moby Dick
J. Random Loser
The Great Quux
[ 1 J^P$L$$
J <.-Z; .,(S,$ -D .)FX1 @F^B $ K :L I $ G1 L>$$
In fact, this very program was used to produce the second, sorted
list from the first list! The first hack at it had a {bug}: gls
(the author) had accidentally omitted the `@' in front of
`F^B', which as anyone can see is clearly the {Wrong Thing}. It
worked fine the second time. There is no space to describe all the
features of TECO, but it may be of interest that `^P' means
`sort' and `J<.-Z; ... L>' is an idiomatic series of commands
for `do once for every line'.
In mid-1991, TECO is now pretty much one with the dust of history,
having been replaced in the affections of hackerdom by {EMACS}. It
can still be found lurking on VMS and a couple of crufty PDP-11
operating systems, however, and remains the focus of some antiquarian
interest. See also {write-only language}.
tenured graduate student: n. One who has been in graduate school for
ten years (the usual maximum is five or six): a `ten-yeared'
student (get it?). Students don't really get tenure, of course,
the way professors do, but a tenth-year graduate student has
probably been around the university longer than any non-tenured
professor.
terpri: /ter'pree/ [from the LISP 1.5 (and later, MACLISP)] vi. To
output a {CRLF}. Now rare as slang, though still used as jargon
in Common Lisp. It is a contraction of `TERminate PRInt line'.
tip of the ice-cube: [IBM] n. The visible part of something small and
insignificant. Used as an ironic comment in situations where `tip
of the iceberg' might be appropriate if the subject were actually
nontrivial.
trit: [by analogy with `bit'] n. One base-3 digit; the amount of
information conveyed by a choice of one of three equally likely
outcomes (see also {bit}). These arise, for example, in the
context of a {flag} that should actually be able to assume
*three* values --- yes, no, or unknown. Trits are sometimes
jokingly called "three-state bits". A trit may be semi-seriously
referred to as "a bit and a half" (though it is properly
equivalent to 1.58 bits).
tty: /tee-tee-wie/ [UNIX], /ti'tee/ [ITS, but some UNIX people say
it this way as well; this pronunciation is not considered to have
sexual undertones] n. 1. Terminal of the teletype variety,
characterized by a noisy mechanical printer, a very limited
character set, and poor print quality. Usage: antiquated (like the
TTYs themselves). See also {bit-paired keyboard}. 2.
[especially UNIX] Any terminal at all; sometimes used to refer to
the particular terminal controlling a given job.
two pi: quant. The number of years it takes to finish one's thesis.
Occurs in stories in the form: "He started on his thesis; two pi
years later...".
U
-
UNIX: /yoo'niks/ [In the authors' words, "A weak pun on Multics"]
n. (also `Unix') A popular interactive time-sharing system
originally invented in 1969 by Ken Thompson after Bell Labs left
the Multics project, mostly so he could play {SPACEWAR} on a
scavenged PDP-7. Dennis Ritchie, the inventor of C, is considered a
co-author of the system. The turning point in UNIX's history came
when it was reimplemented almost entirely in C in 1974, making it
the first source-portable operating system. Fifteen years and a
lot of changes later, UNIX is the most widely used multiuser
general-purpose operating system in the world. Many people
consider this the single most important victory yet of hackerdom
over industry opposition (but see {UNIX weenie} for an opposing
point of view). See {Version 7}, {BSD}, {USG}.
user: n. 1. Someone doing `real work' with the computer, who uses a
computer as a means rather than an end. Someone who pays to use a
computer. See {real user}. 2. A programmer who will believe
anything you tell him. One who asks silly questions. (This is
slightly unfair. It is true that users ask questions (of
necessity). Sometimes they are thoughtful or deep. Very often
they are annoying or downright stupid, apparently because the user
failed to think for two seconds or look in the documentation before
bothering the maintainer.) See {luser}. 3. Someone who uses a
program from the outside, however skillfully, without getting into
the internals of the program. One who reports bugs instead of just
going ahead and fixing them. Basically, there are two classes of
people who work with a program: there are implementors (hackers)
and users (losers). The users are looked down on by hackers to a
mild degree because they don't understand the full ramifications of
the system in all its glory. (The few users who do are known as
{real winner}s.) The term is a relative one: a consummate hacker
may be a user with respect to some program he himself does not
hack. A LISP hacker might be one who maintains LISP or one who
uses LISP (but with the skill of a hacker). A LISP user is one who
uses LISP, whether skillfully or not. Thus there is some overlap
between the two terms; the subtle distinctions must be resolved by
context.
user-friendly: adj. Programmer-hostile. Generally used by hackers in
a critical tone, to describe systems which hold the user's hand so
obsessively that they make it painful for the more experienced and
knowledgeable to get any work done. See {menuitis}, {drool-proof
paper}, {Macintrash}, {user-obsequious}.
V
-
vanilla: [from the default flavor of ice cream in the U.S.] adj.
Ordinary flavor, standard. See {flavor}. When used of food,
very often does not mean that the food is flavored with vanilla
extract! For example, `vanilla-flavored wonton soup' (or simply
`vanilla wonton soup') means ordinary wonton soup, as opposed to
hot and sour wonton soup (suan la chow show). Applied to hardware
and software. As in "Vanilla Version 7 UNIX can't run on a
vanilla 11/34". Also used to orthogonalize chip nomenclature; for
instance a 74V00 means what TI calls a 7400, as distinct from a
74LS00, etc. This word differs from {canonical} in that the
latter means `the thing you always use (or the way you always do
it) unless you have some strong reason to do otherwise', whereas
{vanilla} simply means `ordinary'. For example, when hackers go
on a {great-wall}, hot-and-sour wonton soup is the {canonical}
wonton soup to get (because that is what most of them usually
order) even though it isn't the {vanilla} wonton soup.
2. The assumption that pointer and integer types are the same size,
and that pointers can be stuffed into integer variables and drawn
back out without being truncated or mangled.
3. The assumption that a data type of any size may begin at any
byte address in memory (for example, that you can freely construct
and dereference a pointer to a word-sized object at an odd
address). On many (esp. RISC) architectures better optimized for
{HLL} execution speed this is invalid and can cause an illegal
address fault or bus error.
10. The assumption that a pointer to any one type can freely be cast
into a pointer to any other type (fails on word-oriented machines
or others with multiple pointer formats).
14. The assumption that all pointers are the same size and format,
which means you don't have to worry about getting the types correct
in calls (fails on word-oriented machines or others with multiple
pointer formats).
virus: [from the obvious analogy with biological viruses, via SF]
n. A cracker program that searches out other programs and
`infects' them by embedding a copy of itself in them, so that when
these programs are executed, the embedded virus is executed, too,
thus propagating the `infection'. This normally happens
transparently to the user. The virus may do nothing but propagate
itself. Usually, however, after propagating silently for a while
it starts doing things like writing cute messages on the terminal
or playing strange tricks with your display (some viruses include
nice {display hack}s). Many nasty viruses, written by
particularly perversely minded {cracker}s, do irreversible
damage, like nuking all the user's files.
VMS: /vee em ess/ n. DEC's proprietary operating system for their VAX
minicomputer; one of the seven or so environments that loom largest
in hacker folklore. Many UNIX fans generously concede that VMS
would probably be the hacker's favorite commercial OS if UNIX
didn't exist; though true, this makes VMS fans furious. One major
hacker gripe with it is its slowness, thus the following limerick:
vulcan nerve pinch: n. [From the old Star Trek TV series via
Commodore Amiga hackers] The keyboard combination that forces a
soft-boot or jump to ROM monitor (on machines that support such a
feature). On many micros this is Ctrl-Alt-Del; on Suns, L1-A; on
Macintoshes, it is <Cmd>-<Power switch>! Also called {three-finger
salute}. Compare {quadruple bucky}.
W
-
win big: vi. To experience serendipity. "I went shopping and won
big; there was a two-for-one sale."
wound around the axle: adj. In an infinite loop. Often used by older
computer types.
X
-
Y
-
You know you've been hacking too long when...: The set-up line
for a genre of one-liners told by hackers about themselves. These
include the following:
* not only do you check your email more often than your paper
mail, but you remember your {network address} faster than your
postal one.
* your {SO} kisses you on the neck and the first thing you
think is "Uh, oh, {priority interrupt}".
* you go to balance your checkbook and discover that you're
doing it in octal.
* your computers have a higher street value than your car.
* `round numbers' are powers of 2, not 10.
* you've woken up more than once to recall of a dream in
some programming language.
* you realize you've never met half of your best friends.
All but one of these have been reliably reported as hacker traits
(some of them quite often). Even hackers may have trouble spotting
the ringer.
Your mileage may vary.: cav. [from the standard disclaimer attached
to EPA mileage ratings by American car manufacturers] A ritual
warning often found in UNIX freeware distributions. Translates
roughly as "Hey, I tried to write this portably but who
*knows* what'll happen on your system?"
Yow!: /yow/ [from Zippy the Pinhead comix] interj. Favored hacker
expression of humorous surprise or emphasis. "Yow! Check out what
happens when you twiddle the foo option on this display hack!"
Compare {gurfle}.
Z
-
zombie: [UNIX] n. A process that has died but has not yet
relinquished its process table slot (because the parent process
hasn't executed a `wait(2)' for it yet). These show up in `ps(1)'
listings occasionally. Compare {orphan}.
Hacker Folklore
***************
This appendix contains several fables and legends which illuminate the
meaning of various entries in the main text. Some of this material
appeared in the 1983 paper edition of the Jargon File (but not in the
previous on-line versions).
While the director was eating, the students (who called themselves the
`Fiendish Fourteen') picked a lock and stole one of the direction
sheets for the card stunts. They then had a printer run off 2300
copies of the sheet. The next day they picked the lock again and
stole the master plans for the stunts, large sheets of graph paper
colored in with the stunt pictures. Using these as a guide, they
carefully made `corrections' for three of the stunts on the
duplicate instruction sheets. Finally, they broke in once more,
replacing the stolen master plans and substituting the stack of
altered instruction sheets for the original set.
The result was that three of the pictures were totally different.
Instead of spelling "WASHINGTON", the word "CALTECH" was flashed.
Another stunt showed the word "HUSKIES", the Washington nickname,
but spelled it backwards. And what was supposed to have been a
picture of a husky instead showed a beaver. (Both Caltech and MIT use
the beaver as a mascot. Beavers are nature's engineers.)
The piece of trolley track with the wheel still welded to it was later
used as the trophy at the First Annual All-Tech Sing. They carted it
in on a very heavy duty dolly up the freight elevator of the Student
Center. Six feet of rail and a trolley wheel is a *lot* of
steel.
And another:
On November 20, 1982, MIT hacked the Harvard-Yale football game. Just
after Harvard's second touchdown against Yale in the second quarter, a
small black ball popped up out of the ground at the 40-yard line, and
grew bigger, and bigger, and bigger. The letters "MIT" appeared all
over the ball. As the players and officials stood around gawking, the
ball grew to six feet in diameter and then burst with a bang and a
cloud of white smoke.
As the Boston Globe later reported, "If you want to know the truth,
M.I.T. won The Game."
Finally, here is a great story about one of the classic computer hacks.
So... one day, the system operator on the main CP-V software
development system in El Segundo was surprised by a number of unusual
phenomena. These included the following:
* Tape drives would rewind and dismount their tapes in the middle of a
job.
* Disk drives would seek back and forth so rapidly that they'd attempt
to walk across the floor (see {walking drives}).
* The card-punch output device would occasionally start up of itself
and punch a {lace card} (every hole punched). These would usually
jam in the punch.
* The console would print snide and insulting messages from Robin Hood
to Friar Tuck, or vice versa.
* The Xerox card reader had two output stackers; it could be
instructed to stack into A, stack into B, or stack into A unless a
card was unreadable, in which case the bad card was placed into
stacker B. One of the patches installed by the ghosts added some
code to the card-reader driver... after reading a card, it would flip
over to the opposite stacker. As a result, card decks would divide
themselves in half when they were read, leaving the operator to
recollate them manually.
!X id1
Each ghost-job would detect the fact that the other had been killed,
and would start a new copy of the recently-slain program within a few
milliseconds. The only way to kill both ghosts was to kill them
simultaneously (very difficult) or to deliberately crash the system.
Finally, the system programmers did the latter... only to find that
the bandits appeared once again when the system rebooted! It turned
out that these two programs had patched the boot-time image (the
/vmunix file, in UNIX terms) and had added themselves to the list of
programs that were to be started at boot time...
The Robin Hood and Friar Tuck ghosts were finally eradicated when the
system staff rebooted the system from a clean boot-tape and
reinstalled the monitor. Not long thereafter, Xerox released a patch
for this problem.
This went on for a couple of minutes and Bud was getting nowhere, so he
decided to alter his approach to the customer.
Well, to avoid making a long story even longer, I will abbreviate what had
happened. The customer was a Biologist at the University of Blah-de-blah,
and he had one of our computers that controlled gas mixtures that Mabel (the
monkey) breathed. Now, Mabel was not your ordinary monkey. The University
had spent years teaching Mabel to swim, and they were studying the effects
that different gas mixtures had on her physiology. It turns out that the
repair folks had just gotten a new Calibrated Power Supply (used to
calibrate analog equipment), and at their first opportunity decided to
calibrate the D/A converters in that computer. This changed some of the gas
mixtures and poor Mabel was asphyxiated. Well, Bud then called the branch
manager for the repair folks:
Manager: Hello
B: This is Bud, I heard you did a PM at the University of
Blah-de-blah.
M: Yes, we really performed a complete PM. What can I do
for you?
B: Can you swim?
The moral is, of course, that you should always mount a scratch monkey.
~~~~~~~~~~~~~~~~~~~~~~
Art Evans
Tartan Labs
Here is a true story about a glass tty. One day an MIT hacker was in
a motorcycle accident and broke his leg. He had to stay in the
hospital quite a while, and got restless because he couldn't HACK (use
the computer). Two of his friends therefore took a display terminal
and a telephone connection for it to the hospital, so that he could
use the computer by telephone from his hospital bed.
Now this happened some years before the spread of home computers, and
computer terminals were not a familiar sight to the average person.
When the two friends got to the hospital, a guard stopped them and
asked what they were carrying. They explained that they wanted to
take a computer terminal to their friend who was a patient.
The guard got out his list of things that patients were permitted to
have in their rooms: TV, radio, electric razor, typewriter, tape
player... no computer terminals. Computer terminals weren't on the
list, so they couldn't take it in. Rules are rules.
Fair enough, said the two friends, and they left again. They were
frustrated, of course, because they knew that the terminal was as
harmless as a TV or anything else on the list... which gave them an
idea.
The next day they returned, and the same thing happened: a guard
stopped them and asked what they were carrying. They said, "This is
a TV typewriter!" The guard was skeptical, so they plugged it in and
demonstrated it. "See? You just type on the keyboard and what you
type shows up on the TV screen." Now the guard didn't stop to think
about how utterly useless a typewriter would be that didn't produce
any paper copies of what you typed; but this was clearly a TV
typewriter, no doubt about it. So he checked his list: "A TV is all
right, a typewriter is all right... okay, take it on in!"
When Barbara Steele was in her fifth month of pregnancy in 1981, her
doctor sent her to a specialist to have a sonogram made to determine
whether there were twins. She dragged her husband Guy along to the
appointment. It was quite fascinating; as the doctor moved an
instrument along the skin, a small TV screen showed cross-sectional
pictures of the abdomen.
Now Barbara and I had both studied computer science at MIT, and we
both saw that some complex computerized image-processing was involved.
Out of curiosity, we asked the doctor how it was done, hoping to learn
some details about the mathematics involved. The doctor, not knowing
our educational background, simply said, "The probe sends out sound
waves, which bounce off the internal organs. A microphone picks up
the echoes, like radar, and send the signals to a computer---and the
computer makes a picture." Thanks a lot! Now a hacker would have
said, "... and the computer *magically* (or {automagically})
makes a picture", implicitly acknowledging that he has glossed over
an extremely complicated process.
Some years ago I was snooping around in the cabinets that housed the
MIT AI Lab's PDP-10, and noticed a little switch glued to the frame of
one cabinet. It was obviously a homebrew job, added by one of the
lab's hardware hackers (no one knows who).
I called another hacker over to look at it. He had never seen the
switch before either. Closer examination revealed that the switch
only had one wire running to it! The other end of the wire did
disappear into the maze of wires inside the computer, but it's a basic
fact of electricity that a switch can't do anything unless there are
two wires connected to it. This switch had a wire connected on one
side and no wire on its other side.
It was clear that this switch was someone's idea of a silly joke.
Convinced by our reasoning that the switch was inoperative, we flipped
it. The computer instantly crashed.
A year later, I told this story to yet another hacker, David Moon as I
recall. He clearly doubted my sanity, or suspected me of a
supernatural belief in the power of this switch, or perhaps thought I
was fooling him with a bogus saga. To prove it to him, I showed him
the very switch, still glued to the cabinet frame with only one wire
connected to it, still in the `more magic' position. We scrutinized
the switch and its lone connection, and found that the other end of
the wire, though connected to the computer wiring, was connected to a
ground pin. That clearly made the switch doubly useless: not only was
it electrically nonoperative, but it was connected to a place that
couldn't affect anything anyway. So we flipped the switch.
This time we ran for Richard Greenblatt, a long-time MIT hacker, who
was close at hand. He had never noticed the switch before, either.
He inspected it, concluded it was useless, got some diagonal cutters
and diked it out. We then revived the computer and it ran fine ever
since.
We still don't know how the switch crashed the machine. There is a
theory that some circuit near the ground pin was marginal, and
flipping the switch changed the electrical capacitance enough to upset
the circuit as millionth-of-a-second pulses went through it. But
we'll never know for sure; all we can really say is that the switch
was {magic}.
I still have that switch in my basement. Maybe I'm silly, but I
usually keep it set on `more magic.'
A Selection of AI Koans
=======================
* * *
A novice was trying to fix a broken Lisp machine by turning the power
off and on.
Knight, seeing what the student was doing spoke sternly: "You can not
fix a machine by just power-cycling it with no understanding of what
is going wrong."
[Ed note: This is much funnier if you know that Tom Knight was one of the
Lisp machine's principal designers]
* * *
One day a student came to Moon and said, "I understand how to
make a better garbage collector. We must keep a reference count
of the pointers to each cons."
* * *
In the days when Sussman was a novice Minsky once came to him as
he sat hacking at the PDP-6.
* * *
"I would like to give you this personality test", said the
outsider, "because I want you to be happy."
Drescher took the paper that was offered him and put it
into the toaster, saying:
OS and JEDGAR
*************
This story says a lot about the style of the ITS culture.
On the ITS system there was a program that allowed you to see what is
being printed on someone else's terminal. It worked by `spying' on
the other guy's output, by examining the insides of the monitor
system. The output spy program was called OS. Throughout the rest of
the computer science (and also at IBM) OS means `operating system',
but among old-time ITS hackers it almost always meant `output spy'.
OS could work because ITS purposely had very little in the way of
`protection' that prevented one user from interfering with another.
Fair is fair, however. There was another program that would
automatically notify you if anyone started to spy on your output. It
worked in exactly the same way, by looking at the insides of the
operating system to see if anyone else was looking at the insides that
had to do with your output. This `counterspy' program was called
JEDGAR (pronounced as two syllables: /jed'gr/), in honor of the former
head of the FBI.
But there's more. The rest of the story is that JEDGAR would ask the
user for `license to kill'. If the user said yes, then JEDGAR would
actually gun the job of the luser who was spying. However, people
found this made life too violent, especially when tourists learned
about it. One of the systems hackers solved the problem by replacing
JEDGAR with another program that only pretended to do its job. It
took a long time to do this, because every copy of JEDGAR had to be
patched, and to this day no one knows how many people never figured
out that JEDGAR had been defanged.
I first met Mel when I went to work for Royal McBee Computer Corp.,
a now-defunct subsidiary of the typewriter company.
The firm manufactured the LGP-30,
a small, cheap (by the standards of the day)
drum-memory computer,
and had just started to manufacture
the RPC-4000, a much-improved,
bigger, better, faster --- drum-memory computer.
Cores cost too much,
and weren't here to stay, anyway.
(That's why you haven't heard of the company, or the computer.)
Mel balked.
He felt this was patently dishonest,
which it was,
and that it impinged on his personal integrity as a programmer,
which it did,
so he refused to do it.
The Head Salesman talked to Mel,
as did the Big Boss and, at the boss's urging,
a few Fellow Programmers.
Mel finally gave in and wrote the code,
but he got the test backwards,
and, when the sense switch was turned on,
the program would cheat, winning every time.
Mel was delighted with this,
claiming his subconscious was uncontrollably ethical,
and adamantly refused to fix it.
General appearance:
===================
Dress:
======
Female hackers never wear visible makeup and many use none at all.
Reading habits:
===============
Other interests:
================
Some hobbies are widely shared and recognized as going with the
culture. Science fiction. Music (see the MUSIC entry). Medievalism.
Chess, go, backgammon, wargames and intellectual games of all kinds.
Role-playing games such as Dungeons and Dragons used to be extremely
popular among hackers but have lost a bit of their former luster as
they moved into the mainstream and became heavily commercialized.
Logic puzzles. Ham radio. Other interests that seem to correlate
less strongly but positively with hackerdom include: linguistics and
theater teching.
Many (perhaps even most) hackers don't do sports at all and are
determinedly anti-physical.
Among those that do, they are almost always self-competitive ones
involving concentration, stamina, and micromotor skills: martial arts,
bicycling, kite-flying, hiking, rock-climbing, sailing, caving,
juggling.
Education:
==========
For those all-night hacks, pizza and microwaved burritos are big.
Interestingly, though the mainstream culture has tended to think of
hackers as incorrigible junk-food junkies, many have at least mildly
health-foodist attitudes and are fairly discriminating about what they
eat. This may be generational; anecdotal evidence suggests that the
stereotype was more on the mark ten to fifteen years ago.
Politics:
=========
Religion:
=========
Ceremonial chemicals:
=====================
Communication style:
====================
Geographical Distribution:
==========================
Sexual habits:
==============
Personality Characteristics:
============================
Hackers are `control freaks' in a way that has nothing to do with the
usual coercive or authoritarian connotations of the term. In the same
way that children delight in making model trains go forward and back
by moving a switch, hackers love making complicated things like
computers do nifty stuff for them. But it has to be *their*
nifty stuff; they don't like tedium or nondeterminism. Accordingly,
they tend to be careful and orderly in their intellectual lives and
chaotic elsewhere. Their code will be beautiful, even if their desks
are buried in three feet of crap.
Miscellaneous:
==============
Hackers are more likely to keep cats than dogs. Many drive incredibly
decrepit heaps and forget to wash them; richer ones drive spiffy
Porsches and RX-7s and then forget to wash them.
Bibliography
************
Here are some other books you can read to help you understand the
hacker mindset.
This gentle, funny spoof of the `Tao Te Ching' contains much that is
illuminating about the hacker way of thought. "When you have learned
to snatch the error code from the trap frame, it will be time for you
to leave."
Hackers
Steven Levy
Anchor/Doubleday 1984, New York
ISBN 0-385-19195-2
Levy's book is at its best in describing the early MIT hackers at the
Model Railroad Club and the early days of the microcomputer
revolution. He never understood UNIX or the networks, though, and his
enshrinement of Richard Stallman as "the last true hacker" turns out
(thankfully) to have been quite misleading. Numerous minor factual
errors also mar the text; for example, Levy's claim that the original
jargon file derived from a 1959 dictionary of Model Railroad Club
slang is incorrect (the File originated at Stanford and was brought to
MIT in 1976; the First Edition co-authors had never seen the dictionary
in question). Nevertheless this remains a useful and stimulating book
that captures the feel of several important hackish subcultures.
Clifford Stoll's absorbing tale of how he tracked Markus Hess and the
Chaos Club cracking-ring nicely illustrates the difference between
`hacker' and `cracker'. And Stoll's portrait of himself and his lady
Martha and his friends at Berkeley and on the Internet paints a
marvelously vivid picture of how hackers and the people around them
like to live and what they think.
Hacker demigod Richard Stallman believes the title story of this book
"expresses the spirit of hacking best". This may well be true; it's
certainly difficult to recall anyone doing a better job. The other
stories in this collection are also fine work by an author who is
perhaps one of today's very best practitioners of the hard-SF genre.