Chapter 39 of 61 · 3999 words · ~20 min read

Part 39

"The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time." Attributed to Tom Cargill of Bell Labs, and popularized by Jon Bentley's September 1985 "Bumper-Sticker Computer Science" column in "Communications of the ACM". It was there called the "Rule of Credibility", a name which seems not to have stuck. Other maxims in the same vein include the law attributed to the early British computer scientist Douglas Hartree: "The time from now until the completion of the project tends to become constant."

Node:nipple mouse, Next:NMI, Previous:Ninety-Ninety Rule, Up:= N =

nipple mouse n.

Var. `clit mouse, clitoris' Common term for the pointing device used on IBM ThinkPads and a few other laptop computers. The device, which sits between the `g' and `h' keys on the keyboard, indeed resembles a rubber nipple intended to be tweaked by a forefinger. Many hackers consider these superior to the glide pads found on most laptops, which are harder to control precisely.

Node:NMI, Next:no-op, Previous:nipple mouse, Up:= N =

NMI /N-M-I/ n.

Non-Maskable Interrupt. An IRQ 7 on the PDP-11 or 680[01234]0; the NMI line on an 80[1234]86. In contrast with a priority interrupt (which might be ignored, although that is unlikely), an NMI is never ignored. Except, that is, on clone boxes, where NMI is often ignored on the motherboard because flaky hardware can generate many spurious ones.

Node:no-op, Next:noddy, Previous:NMI, Up:= N =

no-op /noh'op/ n.,v.

alt. NOP /nop/ [no operation] 1. A machine instruction that does nothing (sometimes used in assembler-level programming as filler for data or patch areas, or to overwrite code to be removed in binaries). 2. A person who contributes nothing to a project, or has nothing going on upstairs, or both. As in "He's a no-op." 3. Any operation or sequence of operations with no effect, such as circling the block without finding a parking space, or putting money into a vending machine and having it fall immediately into the coin-return box, or asking someone for help and being told to go away. "Oh, well, that was a no-op." Hot-and-sour soup (see great-wall) that is insufficiently either is `no-op soup'; so is wonton soup if everybody else is having hot-and-sour.

Node:noddy, Next:node, Previous:no-op, Up:= N =

noddy /nod'ee/ adj.

[UK: from the children's books] 1. Small and un-useful, but demonstrating a point. Noddy programs are often written by people 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. 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 hack sufficiently trivial that it can be written and debugged while carrying on (and during the space of) a normal conversation. "I'll just throw together a noddy awk script to dump all the first fields." In North America this might be called a mickey mouse program. See toy program.

Node:node, Next:Nominal Semidestructor, Previous:noddy, Up:= N =

node n.

1. [Internet, UUCP] A host machine on the network. 2. [MS-DOS BBSes] A dial-in line on a BBS. Thus an MS-DOS sysop might say that his BBS has 4 nodes even though it has a single machine and no Internet link, confusing an Internet hacker no end.

Node:Nominal Semidestructor, Next:non-optimal solution, Previous:node, Up:= N =

Nominal Semidestructor n.

Soundalike slang for `National Semiconductor', found among other places in the Networking/2 networking sources. During the late 1970s to mid-1980s this company marketed a series of microprocessors including the NS16000 and NS32000 and several variants. At one point early in the great microprocessor race, the specs on these chips made them look like serious competition for the rising Intel 80x86 and Motorola 680x0 series. Unfortunately, the actual parts were notoriously flaky and never implemented the full instruction set promised in their literature, apparently because the company couldn't get any of the mask steppings to work as designed. They eventually sank without trace, joining the Zilog Z8000 and a few even more obscure also-rans in the graveyard of forgotten microprocessors. Compare HP-SUX, AIDX, buglix, Macintrash, Telerat, ScumOS, sun-stools, Slowlaris, Internet Exploder.

Node:non-optimal solution, Next:nonlinear, Previous:Nominal Semidestructor, Up:= N =

non-optimal solution n.

(also `sub-optimal solution') An astoundingly stupid way to do something. This term is generally used in deadpan sarcasm, as its impact is greatest when the person speaking looks completely serious. Compare stunning. See also Bad Thing.

Node:nonlinear, Next:nontrivial, Previous:non-optimal solution, Up:= N =

nonlinear adj.

[scientific computation] 1. Behaving in an erratic and unpredictable fashion; unstable. When used to describe the behavior of a machine or program, it suggests that said machine or program is being forced to run far outside of design specifications. This behavior may be induced by unreasonable inputs, or may be triggered when a more mundane bug sends the computation far off from its expected course. 2. When describing the behavior of a person, suggests a tantrum or a flame. "When you talk to Bob, don't mention the drug problem or he'll go nonlinear for hours." In this context, `go nonlinear' connotes `blow up out of proportion' (proportion connotes linearity).

Node:nontrivial, Next:not ready for prime time, Previous:nonlinear, Up:= N =

nontrivial adj.

Requiring real thought or significant computing power. Often used as an understated way of saying that a problem is quite difficult or impractical, or even entirely unsolvable ("Proving P=NP is nontrivial"). The preferred emphatic form is `decidedly nontrivial'. See trivial, uninteresting, interesting.

Node:not ready for prime time, Next:notwork, Previous:nontrivial, Up:= N =

not ready for prime time adj.

Usable, but only just so; not very robust; for internal use only. Said of a program or device. Often connotes that the thing will be made more solid Real Soon Now. This term comes from the ensemble name of the original cast of "Saturday Night Live", the "Not Ready for Prime Time Players". It has extra flavor for hackers because of the special (though now semi-obsolescent) meaning of prime time. Compare beta.

Node:notwork, Next:NP-, Previous:not ready for prime time, Up:= N =

notwork /not'werk/ n.

A network, when it is acting flaky or is down. Compare nyetwork. Said at IBM to have originally referred to a particular period of flakiness on IBM's VNET corporate network ca. 1988; but there are independent reports of the term from elsewhere.

Node:NP-, Next:nroff, Previous:notwork, Up:= N =

NP- /N-P/ pref.

Extremely. Used to modify adjectives describing a level or quality of difficulty; the connotation is often `more so than it should be' This is generalized from the computer-science terms `NP-hard' and `NP-complete'; NP-complete problems all seem to be very hard, but so far no one has found a proof that they are. NP is the set of Nondeterministic-Polynomial algorithms, those that can be completed by a nondeterministic Turing machine in an amount of time that is a polynomial function of the size of the input; a solution for one NP-complete problem would solve all the others. "Coding a BitBlt implementation to perform correctly in every case is NP-annoying."

Note, however, that strictly speaking this usage is misleading; there are plenty of easy problems in class NP. NP-complete problems are hard not because they are in class NP, but because they are the hardest problems in class NP.

Node:nroff, Next:NSA line eater, Previous:NP-, Up:= N =

nroff /N'rof/

n. [Unix, from "new roff" (see troff)] A companion program to the Unix typesetter troff, accepting identical input but preparing output for terminals and line printers.

Node:NSA line eater, Next:NSP, Previous:nroff, Up:= N =

NSA line eater n.

The National Security Agency trawling program sometimes assumed to be reading the net for the U.S. Government's spooks. Most hackers used to think it was mythical but believed in acting as though existed just in case. since the mid-1990s it has gradually become known that the NSA actually does this, quite illegaly, through its Echelon program.

The standard countermeasure is to put loaded phrases like `KGB', `Uzi', `nuclear materials', `Palestine', `cocaine', and `assassination' in their sig blocks in a (probably futile) attempt to confuse and overload the creature. The GNU version of EMACS actually has a command that randomly inserts a bunch of insidious anarcho-verbiage into your edited text.

As far back as the 1970s there was a mainstream variant of this myth involving a `Trunk Line Monitor', which supposedly used speech recognition to extract words from telephone trunks. This is much harder than noticing keywords in email, and most of the people who originally propagated it had no idea of then-current technology or the storage, signal-processing, or speech recognition needs of such a project. On the basis of mass-storage costs alone it would have been cheaper to hire 50 high-school students and just let them listen in. Twenty years and several orders of technological magnitude later, however, there are clear indications that the NSA has actually deployed such filtering (again, very much against U.S. law).

Node:NSP, Next:nude, Previous:NSA line eater, Up:= N =

NSP /N-S-P/ n.

Common abbreviation for `Network Service Provider', one of the big national or regional companies that maintains a portion of the Internet backbone and resells connectivity to ISPs. In 1996, major NSPs include ANS, MCI, UUNET, and Sprint. An Internet wholesaler.

Node:nude, Next:nugry, Previous:NSP, Up:= N =

nude adj.

Said of machines delivered without an operating system (compare bare metal). "We ordered 50 systems, but they all arrived nude, so we had to spend a an extra weekend with the installation disks." This usage is a recent innovation reflecting the fact that most IBM-PC clones are now delivered with an operating system pre-installed at the factory. Other kinds of hardware are still normally delivered without OS, so this term is particular to PC support groups.

Node:nugry, Next:nuke, Previous:nude, Up:= N =

nugry /n[y]oo'gree/

[Usenet, 'newbie' + '-gry'] `. n. A newbie who posts a FAQ in the rec.puzzles newsgroup, especially if it is a variant of the notorious and unanswerable "What, besides `angry' and `hungry', is the third common English word that ends in -GRY?". In the newsgroup, the canonical answer is of course `nugry' itself. Plural is `nusgry' /n[y]oos'gree/. 2. adj. Having the qualities of a nugry.

Node:nuke, Next:number-crunching, Previous:nugry, Up:= N =

nuke /n[y]ook/ vt.

[common] 1. To intentionally delete the entire contents of a given directory or storage volume. "On Unix, rm -r /usr will nuke everything in the usr filesystem." Never used for accidental deletion; contrast blow away. 2. Syn. for dike, applied to smaller things such as files, features, or code sections. Often used to express a final verdict. "What do you want me to do with that 80-meg wallpaper file?" "Nuke it." 3. Used of processes as well as files; nuke is a frequent verbal alias for kill -9 on Unix. 4. On IBM PCs, a bug that results in fandango on core can trash the operating system, including the FAT (the in-core copy of the disk block chaining information). This can utterly scramble attached disks, which are then said to have been `nuked'. This term is also used of analogous lossages on Macintoshes and other micros without memory protection.

Node:number-crunching, Next:numbers, Previous:nuke, Up:= N =

number-crunching n.

[common] Computations of a numerical nature, esp. those that make extensive use of floating-point numbers. The only thing Fortrash is good for. This term is in widespread informal use outside hackerdom and even in mainstream slang, but has additional hackish connotations: namely, that the computations are mindless and involve massive use of brute force. This is not always evil, esp. if it involves ray tracing or fractals or some other use that makes pretty pictures, esp. if such pictures can be used as wallpaper. See also crunch.

Node:numbers, Next:NUXI problem, Previous:number-crunching, Up:= N =

numbers n.

[scientific computation] Output of a computation that may not be significant results but at least indicate that the program is running. May be used to placate management, grant sponsors, etc. `Making numbers' means running a program because output -- any output, not necessarily meaningful output -- is needed as a demonstration of progress. See pretty pictures, math-out, social science number.

Node:NUXI problem, Next:nybble, Previous:numbers, Up:= N =

NUXI problem /nuk'see pro'bl*m/ n.

Refers to the problem of transferring data between machines with differing byte-order. The string `UNIX' might look like `NUXI' on a machine with a different `byte sex' (e.g., when transferring data from a little-endian to a big-endian, or vice-versa). See also middle-endian, swab, and bytesexual.

Node:nybble, Next:nyetwork, Previous:NUXI problem, Up:= N =

nybble /nib'l/ (alt. `nibble') n.

[from v. `nibble' by analogy with `bite' => `byte'] Four bits; one hex digit; a half-byte. Though `byte' is now techspeak, this useful relative is still jargon. Compare byte; see also bit. The more mundane spelling "nibble" is also commonly used. Apparently the `nybble' spelling is uncommon in Commonwealth Hackish, as British orthography would suggest the pronunciation /ni:'bl/.

Following `bit', `byte' and `nybble' there have been quite a few analogical attempts to construct unambiguous terms for bit blocks of other sizes. All of these are strictly jargon, not techspeak, and not very common jargon at that (most hackers would recognize them in context but not use them spontaneously). We collect them here for reference together with the ambiguous techspeak terms `word', `half-word' and `double word'; some (indicated) have substantial information separate entries.

2 bits:

crumb, quad, quarter, tayste, tydbit

4 bits:

nybble

5 bits:

nickle

10 bits:

deckle

16 bits:

playte, chawmp (on a 32-bit machine), word (on a 16-bit machine), half-word (on a 32-bit machine).

18 bits:

chawmp (on a 36-bit machine), half-word (on a 36-bit machine)

32 bits:

dynner, gawble (on a 32-bit machine), word (on a 32-bit machine), longword (on a 16-bit machine).

36:

word (on a 36-bit machine)

48 bits:

gawble (under circumstances that remain obscure)

64 bits

double word (on a 32-bit machine)

The fundamental motivation for most of these jargon terms (aside from the normal hackerly enjoyment of punning wordplay) is the extreme ambiguity of the term `word' and its derivatives.

Node:nyetwork, Next:Ob-, Previous:nybble, Up:= N =

nyetwork /nyet'werk/ n.

[from Russian `nyet' = no] A network, when it is acting flaky or is down. Compare notwork.

Node:= O =, Next:= P =, Previous:= N =, Up:The Jargon Lexicon

= O =

Ob-:

Obfuscated C Contest:

obi-wan error:

Objectionable-C:

obscure:

octal forty:

off the trolley:

off-by-one error:

offline:

ogg:

-oid:

old fart:

Old Testament:

on the gripping hand:

one-banana problem:

one-line fix:

one-liner wars:

ooblick:

op:

open:

open source:

open switch:

operating system:

optical diff:

optical grep:

optimism:

Oracle the:

Orange Book:

oriental food:

orphan:

orphaned i-node:

orthogonal:

OS:

OS/2:

OSS:

OSU:

OTOH:

out-of-band:

overclock:

overflow bit:

overflow pdl:

overrun:

overrun screw:

Node:Ob-, Next:Obfuscated C Contest, Previous:nyetwork, Up:= O =

Ob- /ob/ pref.

Obligatory. A piece of netiquette acknowledging that the author has been straying from the newsgroup's charter topic. For example, if a posting in alt.sex is a response to a part of someone else's posting that has nothing particularly to do with sex, the author may append `ObSex' (or `Obsex') and toss off a question or vignette about some unusual erotic act. It is considered a sign of great winnitude when one's Obs are more interesting than other people's whole postings.

Node:Obfuscated C Contest, Next:obi-wan error, Previous:Ob-, Up:= O =

Obfuscated C Contest n.

(in full, the `International Obfuscated C Code Contest', or IOCCC) An annual contest run since 1984 over Usenet by Landon Curt Noll and friends. The overall winner is whoever produces the most unreadable, creative, and bizarre (but working) C program; various other prizes are awarded at the judges' whim. C's terse syntax and macro-preprocessor facilities give contestants a lot of maneuvering room. The winning programs often manage to be simultaneously (a) funny, (b) breathtaking works of art, and (c) horrible examples of how not to code in C.

This relatively short and sweet entry might help convey the flavor of obfuscated C:

/* * HELLO WORLD program * by Jack Applin and Robert Heckendorn, 1985 * (Note: depends on being able to modify elements of argv[], * which is not guaranteed by ANSI and often not possible.) */ 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);}

Here's another good one:

/* * Program to compute an approximation of pi * by Brian Westley, 1988 * (requires pcc macro concatenation; try gcc -traditional-cpp) */

#define _ -F<00||--F-OO--; int F=00,OO=00; main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO() { _-_-_-_ _-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_ _-_-_-_ }

Note that this program works by computing its own area. For more digits, write a bigger program. See also hello world.

The IOCCC has an official home page at http://www.ioccc.org.

Node:obi-wan error, Next:Objectionable-C, Previous:Obfuscated C Contest, Up:= O =

obi-wan error /oh'bee-won` er'*r/ n.

[RPI, from `off-by-one' and the Obi-Wan Kenobi character in "Star Wars"] A loop of some sort in which the index is off by 1. Common when the index should have started from 0 but instead started from 1. A kind of off-by-one error. See also zeroth.

Node:Objectionable-C, Next:obscure, Previous:obi-wan error, Up:= O =

Objectionable-C n.

Hackish take on "Objective-C", the name of an object-oriented dialect of C in competition with the better-known C++ (it is used to write native applications on the NeXT machine). Objectionable-C uses a Smalltalk-like syntax, but lacks the flexibility of Smalltalk method calls, and (like many such efforts) comes frustratingly close to attaining the Right Thing without actually doing so.

Node:obscure, Next:octal forty, Previous:Objectionable-C, Up:= O =

obscure adj.

Used in an exaggeration of its normal meaning, to imply total incomprehensibility. "The reason for that last crash is obscure." "The find(1) command's syntax is obscure!" The phrase `moderately obscure' implies that something could be figured out but probably isn't worth the trouble. The construction `obscure in the extreme' is the preferred emphatic form.

Node:octal forty, Next:off the trolley, Previous:obscure, Up:= O =

octal forty /ok'tl for'tee/ n.

Hackish way of saying "I'm drawing a blank." Octal 40 is the ASCII space character, 0100000; by an odd coincidence, hex 40 (01000000) is the EBCDIC space character. See wall.

Node:off the trolley, Next:off-by-one error, Previous:octal forty, Up:= O =

off the trolley adj.

Describes the behavior of a program that malfunctions and goes catatonic, but doesn't actually crash or abort. See glitch, bug, deep space, wedged.

This term is much older than computing, and is (uncommon) slang elsewhere. A trolley is the small wheel that trolls, or runs against, the heavy wire that carries the current to run a streetcar. It's at the end of the long pole (the trolley pole) that reaches from the roof of the streetcar to the overhead line. When the trolley stops making contact with the wire (from passing through a switch, going over bumpy track, or whatever), the streetcar comes to a halt, (usually) without crashing. The streetcar is then said to be off the trolley, or off the wire. Later on, trolley came to mean the streetcar itself. Since streetcars became common in the 1890s, the term is more than 100 years old. Nowadays, trolleys are only seen on historic streetcars, since modern streetcars use pantographs to contact the wire.

Node:off-by-one error, Next:offline, Previous:off the trolley, Up:= O =

off-by-one error n.

[common] Exceedingly common error induced in many ways, such as by starting at 0 when you should have started at 1 or vice-versa, or by writing < N instead of <= N or vice-versa. Also applied to giving something to the person next to the one who should have gotten it. Often confounded with fencepost error, which is properly a

## particular subtype of it.

Node:offline, Next:ogg, Previous:off-by-one error, Up:= O =

offline adv.

Not now or not here. "Let's take this discussion offline." Specifically used on Usenet to suggest that a discussion be moved off a public newsgroup to email.

Node:ogg, Next:-oid, Previous:offline, Up:= O =

ogg /og/ v.

[CMU] 1. In the multi-player space combat game Netrek, to execute kamikaze attacks against enemy ships which are carrying armies or occupying strategic positions. Named during a game in which one of the players repeatedly used the tactic while playing Orion ship G, showing up in the player list as "Og". This trick has been roundly denounced by those who would return to the good old days when the tactic of dogfighting was dominant, but as Sun Tzu wrote, "What is of supreme importance in war is to attack the enemy's strategy, not his tactics." However, the traditional answer to the newbie question "What does ogg mean?" is just "Pick up some armies and I'll show you." 2. In other games, to forcefully attack an opponent with the expectation that the resources expended will be renewed faster than the opponent will be able to regain his previous advantage. Taken more seriously as a tactic since it has gained a simple name. 3. To do anything forcefully, possibly without consideration of the drain on future resources. "I guess I'd better go ogg the problem set that's due tomorrow." "Whoops! I looked down at the map for a sec and almost ogged that oncoming car."

Node:-oid, Next:old fart, Previous:ogg, Up:= O =

-oid suff.

[from Greek suffix -oid = `in the image of'] 1. Used as in mainstream slang English to indicate a poor imitation, a counterfeit, or some otherwise slightly bogus resemblance. Hackers will happily use it with all sorts of non-Greco/Latin stem words that wouldn't keep company with it in mainstream English. For example, "He's a nerdoid" means that he superficially resembles a nerd but can't make the grade; a `modemoid' might be a 300-baud box (Real Modems run at 28.8 or up); a `computeroid' might be any bitty box. The word `keyboid' could be used to describe a chiclet keyboard, but would have to be written; spoken, it would confuse the listener as to the speaker's city of origin. 2. More specifically, an indicator for `resembling an android' which in the past has been confined to science-fiction fans and hackers. It too has recently (in 1991) started to go mainstream (most notably in the term `trendoid' for victims of terminal hipness). This is probably traceable to the popularization of the term droid in "Star Wars" and its sequels. (See also windoid.)

Coinages in both forms have been common in science fiction for at least fifty years, and hackers (who are often SF fans) have probably been making `-oid' jargon for almost that long [though GLS and I can personally confirm only that they were already common in the mid-1970s --ESR].

Node:old fart, Next:Old Testament, Previous:-oid, Up:= O =

old fart n.

Tribal elder. A title self-assumed with remarkable frequency by (esp.) Usenetters who have been programming for more than about 25 years; often appears in sig blocks attached to Jargon File contributions of great archeological significance. This is a term of insult in the second or third person but one of pride in first person.

Node:Old Testament, Next:on the gripping hand, Previous:old fart, Up:= O =

Old Testament n.

[C programmers] The first edition of K&R, the sacred text describing Classic C.

Node:on the gripping hand, Next:one-banana problem, Previous:Old Testament, Up:= O =

on the gripping hand

In the progression that starts "On the one hand..." and continues "On the other hand..." mainstream English may add "on the third hand..." even though most people don't have three hands. Among hackers, it is just as likely to be "on the gripping hand". This metaphor supplied the title of Larry Niven & Jerry Pournelle's 1993 SF novel "The Gripping Hand" which involved a species of hostile aliens with three arms (the same species, in fact, referenced in juggling eggs). As with TANSTAAFL and con, this usage one of the naturalized imports from SF fandom frequently observed among hackers.

Node:one-banana problem, Next:one-line fix, Previous:on the gripping hand, Up:= O =

one-banana problem n.