Part 7 out of 11The first great goal in the mind of the designer of an MFTL is usually to write a compiler for it, then bootstrap the design away from contamination by lesser languages by writing a compiler for it in itself. Thus, the standard put-down question at an MFTL talk is "Has it been used for anything besides its own compiler?". On the other hand, a language that *cannot* be used to write its own compiler is beneath contempt. See {break-even point}. (On a related note, Dennis Ritchie has proposed a test of the generality and utility of a language and the operating system under which it is compiled: "Is the output of a program compiled under the language acceptable as input to the compiler?" In other words, can you write programs which write programs? (see {toolsmith}) Alarming numbers of (language, OS) pairs fail this test, particularly when the language is Fortran; Ritchie is quick to point out that {UNIX} (even using Fortran) passes it handily. That the test could ever be failed is only surprising to those who have had the good fortune only to have worked under modern systems which lack OS-supported and -imposed "file types".) :mickey: n. The resolution unit of mouse movement. It has been suggested that the `disney' will become a benchmark unit for animation graphics performance. :mickey mouse program: n. North American equivalent of a {noddy} (that is, trivial) program. Doesn't necessarily have the belittling connotations of mainstream slang "Oh, that's just mickey mouse stuff!"; sometimes trivial programs can be very useful. :micro-: pref. 1. Very small; this is the root of its use as a quantifier prefix. 2. A quantifier prefix, calling for multiplication by 10^(-6) (see {{quantifiers}}). Neither of these uses is peculiar to hackers, but hackers tend to fling them both around rather more freely than is countenanced in standard English. It is recorded, for example, that one CS professor used to characterize the standard length of his lectures as a microcentury --- that is, about 52.6 minutes (see also {attoparsec}, {nanoacre}, and especially {microfortnight}). 3. Personal or human-scale --- that is, capable of being maintained or comprehended or manipulated by one human being. This sense is generalized from `microcomputer', and is esp. used in contrast with `macro-' (the corresponding Greek prefix meaning `large'). 4. Local as opposed to global (or {macro-}). Thus a hacker might say that buying a smaller car to reduce pollution only solves a microproblem; the macroproblem of getting to work might be better solved by using mass transit, moving to within walking distance, or (best of all) telecommuting. :microfloppies: n. 3.5-inch floppies, as opposed to 5.25-inch {vanilla} or mini-floppies and the now-obsolete 8-inch variety. This term may be headed for obsolescence as 5.25-inchers pass out of use, only to be revived if anybody floats a sub-3-inch floppy standard. See {stiffy}, {minifloppies}. :microfortnight: n. 1/1000000 of the fundamental unit of time in the Furlong/Firkin/Fortnight system of measurement; 1.2096 sec. The VMS operating system has a lot of tuning parameters that you can set with the SYSGEN utility, and one of these is TIMEPROMPTWAIT, the time the system will wait for an operator to set the correct date and time at boot if it realizes that the current value is bogus. This time is specified in microfortnights! Multiple uses of the millifortnight (about 20 minutes) and {nanofortnight} have also been reported. :microLenat: /mi:-kroh-len'-*t/ n. See {bogosity}. :microReid: /mi:'kroh-reed/ n. See {bogosity}. :Microsloth Windows: /mi:'kroh-sloth` win'dohz/ n. Hackerism for `Microsoft Windows', a windowing system for the IBM-PC which is so limited by bug-for-bug compatibility with {mess-dos} that it is agonizingly slow on anything less than a fast 386. Compare {X}, {sun-stools}. :microtape: /mi:'kroh-tayp/ n. Occasionally used to mean a DECtape, as opposed to a {macrotape}. A DECtape is a small reel, about 4 inches in diameter, of magnetic tape about an inch wide. Unlike drivers for today's {macrotape}s, microtape drivers allow random access to the data, and therefore could be used to support file systems and even for swapping (this was generally done purely for {hack value}, as they were far too slow for practical use). In their heyday they were used in pretty much the same ways one would now use a floppy disk: as a small, portable way to save and transport files and programs. Apparently the term `microtape' was actually the official term used within DEC for these tapes until someone coined the word `DECtape', which, of course, sounded sexier to the {marketroid}s; another version of the story holds that someone discovered a conflict with another company's `microtape' trademark. :middle-endian: adj. Not {big-endian} or {little-endian}. Used of perverse byte orders such as 3-4-1-2 or 2-1-4-3, occasionally found in the packed-decimal formats of minicomputer manufacturers who shall remain nameless. See {NUXI problem}. :milliLampson: /mil'*-lamp`sn/ n. A unit of talking speed, abbreviated mL. Most people run about 200 milliLampsons. Butler Lampson (a CS theorist and systems implementor highly regarded among hackers) goes at 1000. A few people speak faster. This unit is sometimes used to compare the (sometimes widely disparate) rates at which people can generate ideas and actually emit them in speech. For example, noted computer architect C. Gordon Bell (designer of the PDP-11) is said, with some awe, to think at about 1200 mL but only talk at about 300; he is frequently reduced to fragments of sentences as his mouth tries to keep up with his speeding brain. :minifloppies: n. 5.25-inch {vanilla} floppy disks, as opposed to 3.5-inch or {microfloppies} and the now-obsolescent 8-inch variety. At one time, this term was a trademark of Shugart Associates for their SA-400 minifloppy drive. Nobody paid any attention. See {stiffy}. :MIPS: /mips/ [abbreviation] n. 1. A measure of computing speed; formally, `Million Instructions Per Second' (that's 10^6 per second, not 2^(20)!); often rendered by hackers as `Meaningless Indication of Processor Speed' or in other unflattering ways. This joke expresses a nearly universal attitude about the value of most {benchmark} claims, said attitude being one of the great cultural divides between hackers and {marketroid}s. The singular is sometimes `1 MIP' even though this is clearly etymologically wrong. See also {KIPS} and {GIPS}. 2. Computers, especially large computers, considered abstractly as sources of {computron}s. "This is just a workstation; the heavy MIPS are hidden in the basement." 3. The corporate name of a particular RISC-chip company; among other things, they designed the processor chips used in DEC's 3100 workstation series. 4. Acronym for `Meaningless Information per Second' (a joke, prob. from sense 1). :misbug: /mis-buhg/ [MIT] n. An unintended property of a program that turns out to be useful; something that should have been a {bug} but turns out to be a {feature}. Usage: rare. Compare {green lightning}. See {miswart}. :misfeature: /mis-fee'chr/ or /mis'fee`chr/ n. A feature that eventually causes lossage, possibly because it is not adequate for a new situation which has evolved. Since it results from a deliberate and properly-implemented feature, a misfeature is not a bug. Nor is it a simple unforeseen side effect; the term implies that the feature in question was carefully planned, but its long-term consequences were not accurately or adequately predicted (which is quite different from not having thought ahead at all). A misfeature can be a particularly stubborn problem to resolve, because fixing it usually involves a substantial philosophical change to the structure of the system involved. Many misfeatures (especially in user-interface design) arise because the designers/implementors mistake their personal tastes for laws of nature. Often a former feature becomes a misfeature because a tradeoff was made whose parameters subsequently change (possibly only in the judgment of the implementors). "Well, yeah, it is kind of a misfeature that file names are limited to 6 characters, but the original implementors wanted to save directory space and we're stuck with it for now." :Missed'em-five: n. Pejorative hackerism for AT&T System V UNIX, generally used by {BSD} partisans in a bigoted mood. (The synonym `SysVile' is also encountered.) See {software bloat}, {Berzerkeley}. :missile address: n. See {ICBM address}. :miswart: /mis-wort/ [from {wart} by analogy with {misbug}] n. A {feature} that superficially appears to be a {wart} but has been determined to be the {Right Thing}. For example, in some versions of the {EMACS} text editor, the `transpose characters' command exchanges the character under the cursor with the one before it on the screen, *except* when the cursor is at the end of a line, in which case the two characters before the cursor are exchanged. While this behavior is perhaps surprising, and certainly inconsistent, it has been found through extensive experimentation to be what most users want. This feature is a miswart. :moby: /moh'bee/ [MIT: seems to have been in use among model railroad fans years ago. Derived from Melville's `Moby Dick' (some say from `Moby Pickle').] 1. adj. Large, immense, complex, impressive. "A Saturn V rocket is a truly moby frob." "Some MIT undergrads pulled off a moby hack at the Harvard-Yale game." (See "{The Meaning of `Hack'}"). 2. n. obs. The maximum address space of a machine (see below). For a 680[234]0 or VAX or most modern 32-bit architectures, it is 4,294,967,296 8-bit bytes (4 gigabytes). 3. A title of address (never of third-person reference), usually used to show admiration, respect, and/or friendliness to a competent hacker. "Greetings, moby Dave. How's that address-book thing for the Mac going?" 4. adj. In backgammon, doubles on the dice, as in `moby sixes', `moby ones', etc. Compare this with {bignum} (sense 2): double sixes are both bignums and moby sixes, but moby ones are not bignums (the use of `moby' to describe double ones is sarcastic). Standard emphatic forms: `Moby foo', `moby win', `moby loss'. `Foby moo': a spoonerism due to Richard Greenblatt. This term entered hackerdom with the Fabritek 256K memory added to the MIT AI PDP-6 machine, which was considered unimaginably huge when it was installed in the 1960s (at a time when a more typical memory size for a timesharing system was 72 kilobytes). Thus, a moby is classically 256K 36-bit words, the size of a PDP-6 or PDP-10 moby. 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 6 mobies" meaning that the ratio of physical memory to address space is 6, 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 address spaces are usually larger than the most physical memory you can cram onto a machine, so most systems have much *less* than one theoretical `native' moby of {core}. Also, more modern memory-management techniques (esp. paging) 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 designs. On these, a `moby' would be the 1-megabyte address span of a segment/offset pair (by coincidence, a PDP-10 moby was exactly 1 megabyte of 9-bit bytes). :mod: vt.,n. 1. Short for `modify' or `modification'. Very commonly used --- in fact the full terms are considered markers that one is being formal. The plural `mods' is used esp. with reference to bug fixes or minor design changes in hardware or software, most esp. with respect to {patch} sets or a {diff}. 2. Short for {modulo} but used *only* for its techspeak sense. :mode: n. A general state, usually used with an adjective describing the state. Use of the word `mode' rather than `state' implies that the state is extended over time, and probably also that some activity characteristic of that state is being carried out. "No time to hack; I'm in thesis mode." In its jargon sense, `mode' is most often attributed to people, though it is sometimes applied to programs and inanimate objects. In particular, see {hack mode}, {day mode}, {night mode}, {demo mode}, {fireworks mode}, and {yoyo mode}; also {talk mode}. One also often hears the verbs `enable' and `disable' used in connection with jargon 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". In a usage much closer to techspeak, a mode is a special state which certain user interfaces must pass into in order to perform certain functions. For example, in order to insert characters into a document in the UNIX editor `vi', one must type the "i" key, which invokes the "Insert" command. The effect of this command is to put vi into "insert mode", in which typing the "i" key has a quite different effect (to wit, it inserts an "i" into the document). One must then hit another special key, "ESC", in order to leave "insert mode". Nowadays, moded interfaces are generally considered {losing}, but survive in quite a few widely-used tools built in less enlightened times. :mode bit: n. A {flag}, usually in hardware, that selects between two (usually quite different) modes of operation. The connotations are different from {flag} bit in that mode bits are mainly written during a boot or set-up phase, are seldom explicitly read, and seldom change over the lifetime of an ordinary program. The classic example was the EBCDIC-vs.-ASCII bit (#12) of the Program Status Word of the IBM 360. Another was the bit on a PDP-12 that controlled whether it ran the PDP-8 or the LINC instruction set. :modulo: /mo'dyu-loh/ prep. Except for. An overgeneralization of mathematical terminology; one can consider saying that 4 = 22 except for the 9s (4 = 22 mod 9). "Well, LISP seems to work okay now, modulo that {GC} bug." "I feel fine today modulo a slight headache." :molly-guard: /mol'ee-gard/ [University of Illinois] n. A shield to prevent tripping of some {Big Red Switch} by clumsy or ignorant hands. Originally used of some plexiglass covers improvised for the BRS on an IBM 4341 after a programmer's toddler daughter (named Molly) frobbed it twice in one day. Later generalized to covers over stop/reset switches on disk drives and networking equipment. :Mongolian Hordes technique: n. Development by {gang bang} (poss. from the Sixties counterculture expression `Mongolian clusterfuck' for a public orgy). Implies that large numbers of inexperienced programmers are being put on a job better performed by a few skilled ones. Also called `Chinese Army technique'; see also {Brooks's Law}. :monkey up: vt. To hack together hardware for a particular task, especially a one-shot job. Connotes an extremely {crufty} and consciously temporary solution. Compare {hack up}, {kluge up}, {cruft together}, {cruft together}. :monkey, scratch: n. See {scratch monkey}. :monstrosity: 1. n. A ridiculously {elephantine} program or system, esp. one that is buggy or only marginally functional. 2. The quality of being monstrous (see `Overgeneralization' in the discussion of jargonification). See also {baroque}. :Moof: /moof/ [MAC users] n. The Moof or `dogcow' is a semi-legendary creature that lurks in the depths of the Macintosh Technical Notes Hypercard stack V3.1; specifically, the full story of the dogcow is told in technical note #31 (the particular Moof illustrated is properly named `Clarus'). Option-shift-click will cause it to emit a characteristic `Moof!' or `!fooM' sound. *Getting* to tech note 31 is the hard part; to discover how to do that, one must needs examine the stack script with a hackerly eye. Clue: {rot13} is involved. A dogcow also appears if you choose `Page Setup...' with a LaserWriter selected and click on the `Options' button. :Moore's Law: /morz law/ prov. The observation that the logic density of silicon integrated circuits has closely followed the curve (bits per square inch) = 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. See also {Parkinson's Law of Data}. :moose call, the: n. See {whalesong}. :moria: /mor'ee-*/ n. Like {nethack} and {rogue}, one of the large PD Dungeons-and-Dragons-like simulation games, available for a wide range of machines and operating systems. Extremely addictive and a major consumer of time better used for hacking. :MOTAS: /moh-toz/ [USENET: Member Of The Appropriate Sex, after {MOTOS} and {MOTSS}] n. A potential or (less often) actual sex partner. See also {SO}. :MOTOS: /moh-tohs/ [acronym from the 1970 U.S. 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 have largely displaced it. :MOTSS: /mots/ or /M-O-T-S-S/ [from the 1970 U.S. census forms via USENET, Member Of The Same Sex] n. Esp. one considered as a possible sexual partner. The gay-issues newsgroup on USENET is called soc.motss. See {MOTOS} and {MOTAS}, which derive from it. Also see {SO}. :mouse ahead: vi. Point-and-click analog of `type ahead'. To manipulate a computer's pointing device (almost always a mouse in this usage, but not necessarily) and its selection or command buttons before a computer program is ready to accept such input, in anticipation of the program accepting the input. Handling this properly is rare, but it can help make a {WIMP environment} much more usable, assuming the users are familiar with the behavior of the user interface. :mouse around: vi. To explore public portions of a large system, esp. a network such as Internet via {FTP} or {TELNET}, looking for interesting stuff to {snarf}. :mouse belt: n. See {rat belt}. :mouse droppings: [MS-DOS] n. Pixels (usually single) that are not properly restored when the mouse pointer moves away from a particular location on the screen, producing the appearance that the mouse pointer has left droppings behind. The major causes for this problem are programs that write to the screen memory corresponding to the mouse pointer's current location without hiding the mouse pointer first, and mouse drivers that do not quite support the graphics mode in use. :mouse elbow: n. A tennis-elbow-like fatigue syndrome resulting from excessive use of a {WIMP environment}. Similarly, `mouse shoulder'; GLS reports that he used to get this a lot before he taught himself to be ambimoustrous. :mouso: /mow'soh/ n. [by analogy with `typo'] An error in mouse usage resulting in an inappropriate selection or graphic garbage on the screen. Compare {thinko}, {braino}. :MS-DOS:: /M-S-dos/ [MicroSoft Disk Operating System] n. A {clone} of {{CP/M}} for the 8088 crufted together in 6 weeks by hacker Tim Paterson, who is said to have regretted it ever since. Numerous features, including vaguely UNIX-like but rather broken support for subdirectories, I/O redirection, and pipelines, were hacked into 2.0 and subsequent versions; as a result, there are two or more incompatible versions of many system calls, and MS-DOS programmers can never agree on basic things like what character to use as an option switch or whether to be case-sensitive. The resulting mess is now the highest-unit-volume OS in history. Often known simply as DOS, which annoys people familiar with other similarly abbreviated operating systems (the name goes back to the mid-1960s, when it was attached to IBM's first disk operating system for the 360). The name further annoys those who know what the term {operating system} does (or ought to) connote; DOS is more properly a set of relatively simple interrupt services. Some people like to pronounce DOS like "dose", as in "I don't work on dose, man!", or to compare it to a dose of brain-damaging drugs (a slogan button in wide circulation among hackers exhorts: "MS-DOS: Just say No!"). See {mess-dos}, {ill-behaved}. :mu: /moo/ The correct answer to the classic trick question "Have you stopped beating your wife yet?". Assuming that you have no wife or you have never beaten your wife, the answer "yes" is wrong because it implies that you used to beat your wife and then stopped, but "no" is worse because it suggests that you have one and are still beating her. According to various Discordians and Douglas Hofstadter (see the Bibliography in {appendix C}), the correct answer is usually "mu", a Japanese word alleged to mean "Your question cannot be answered because it depends on incorrect assumptions". Hackers tend to be sensitive to logical inadequacies in language, and many have adopted this suggestion with enthusiasm. The word `mu' is actually from Chinese, meaning `nothing'; it is used in mainstream Japanese in that sense, but native speakers do not recognize the Discordian question-denying use. It almost certainly derives from overgeneralization of the answer in the following well-known Rinzei Zen teaching riddle: A monk asked Joshu, "Does a dog have the Buddha nature?" Joshu retorted, "Mu!" See also {has the X nature}, {AI Koans}, and Douglas Hofstadter's `G"odel, Escher, Bach: An Eternal Golden Braid' (pointer in the Bibliography in appendix C). :MUD: /muhd/ [acronym, Multi-User Dungeon; alt. Multi-User Dimension] 1. n. A class of {virtual reality} experiments accessible via the Internet. These are real-time chat forums with structure; they have multiple `locations' like an adventure game, and may include combat, traps, puzzles, magic, a simple economic system, and the capability for characters to build more structure onto the database that represents the existing world. 2. vi. To play a MUD (see {hack-and-slay}). The acronym MUD is often lowercased and/or verbed; thus, one may speak of `going mudding', etc. Historically, MUDs (and their more recent progeny with names of MU- form) derive from a hack by Richard Bartle and Roy Trubshaw on the University of Essex's DEC-10 in the early 1980s; descendants of that game still exist today (see {BartleMUD}). There is a widespread myth (repeated, unfortunately, by earlier versions of this lexicon) that the name MUD was trademarked to the commercial MUD run by Bartle on British Telecom (the motto: "You haven't *lived* 'til you've *died* on MUD!"); however, this is false --- Richard Bartle explicitly placed `MUD' in PD in 1985. BT was upset at this, as they had already printed trademark claims on some maps and posters, which were released and created the myth. Students on the European academic networks quickly improved on the MUD concept, spawning several new MUDs (VAXMUD, AberMUD, LPMUD). Many of these had associated bulletin-board systems for social interaction. Because these had an image as `research' they often survived administrative hostility to BBSs in general. This, together with the fact that USENET feeds have been spotty and difficult to get in the U.K., made the MUDs major foci of hackish social interaction there. AberMUD and other variants crossed the Atlantic around 1988 and quickly gained popularity in the U.S.; 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). The second wave of MUDs (TinyMUD and variants) tended to emphasize social interaction, puzzles, and cooperative world-building as opposed to combat and competition. In 1991, over 50% of MUD sites are of a third major variety, LPMUD, which synthesizes the combat/puzzle aspects of AberMUD and older systems with the extensibility of TinyMud. The trend toward greater programmability and flexibility will doubtless continue. 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}, {link-dead}, {mudhead}, {posing}, {talk mode}, {tinycrud}. :muddie: n. Syn. {mudhead}. More common in Great Britain, possibly because system administrators there like to mutter "bloody muddies" when annoyed at the species. :mudhead: n. Commonly used to refer to a {MUD} player who eats, sleeps, and breathes MUD. Mudheads have been known to fail their degrees, drop out, etc., with the consolation, however, that they made wizard level. When encountered in person, on a MUD, or in a chat system, all a mudhead will talk about is three topics: the tactic, character, or wizard that is supposedly always unfairly stopping him/her from becoming a wizard or beating a favorite MUD; why the specific game he/she has experience with is so much better than any other, and the MUD he or she is writing or going to write because his/her design ideas are so much better than in any existing MUD. See also {wannabee}. :multician: /muhl-ti'shn/ [coined at Honeywell, ca. 1970] n. Competent user of {{Multics}}. Perhaps oddly, no one has ever promoted the analogous `Unician'. :Multics:: /muhl'tiks/ n. [from "MULTiplexed Information and Computing Service"] An early (late 1960s) timesharing operating system co-designed by a consortium including MIT, GE, and Bell Laboratories. Very innovative for its time --- among other things, it introduced the idea of treating all devices uniformly as special files. All the members but GE eventually pulled out after determining that {second-system effect} had bloated Multics to the point of practical unusability (the `lean' predecessor in question was {CTSS}). Honeywell commercialized Multics after buying out GE's computer group, but it was never very successful (among other things, on some versions one was commonly required to enter a password to log out). One of the developers left in the lurch by the project's breakup was Ken Thompson, a circumstance which led directly to the birth of {{UNIX}}. For this and other reasons, aspects of the Multics design remain a topic of occasional debate among hackers. See also {brain-damaged} and {GCOS}. :multitask: n. Often used of humans in the same meaning it has for computers, to describe a person doing several things at once (but see {thrash}). The term `multiplex', from communications technology (meaning to handle more than one channel at the same time), is used similarly. :mumblage: /muhm'bl*j/ n. The topic of one's mumbling (see {mumble}). "All that mumblage" is used like "all that stuff" when it is not quite clear how the subject of discussion works, or like "all that crap" when `mumble' is being used as an implicit replacement for pejoratives. :mumble: interj. 1. Said when the correct response is too complicated to enunciate, or the speaker has not thought it out. Often prefaces a longer answer, or indicates a general reluctance to get into a long discussion. "Don't you think that we could improve LISP performance by using a hybrid reference-count transaction garbage collector, if the cache is big enough and there are some extra cache bits for the microcode to use?" "Well, mumble ... I'll have to think about it." 2. Sometimes used as an expression of disagreement. "I think we should buy a {VAX}." "Mumble!" Common variant: `mumble frotz' (see {frotz}; interestingly, one does not say `mumble frobnitz' even though `frotz' is short for `frobnitz'). 3. Yet another {metasyntactic variable}, like {foo}. 4. When used as a question ("Mumble?") means "I didn't understand you". 5. Sometimes used in `public' contexts on-line as a placefiller for things one is barred from giving details about. For example, a poster with pre-released hardware in his machine might say "Yup, my machine now has an extra 16M of memory, thanks to the card I'm testing for Mumbleco." 6. A conversational wild card used to designate something one doesn't want to bother spelling out, but which can be {glark}ed from context. Compare {blurgle}. 7. [XEROX PARC] A colloquialism used to suggest that further discussion would be fruitless. :munch: [often confused with {mung}, q.v.] vt. To transform information in a serial fashion, often requiring large amounts of computation. To trace down a data structure. Related to {crunch} and nearly synonymous with {grovel}, but connotes less pain. :munching: n. Exploration of security holes of someone else's computer for thrills, notoriety, or to annoy the system manager. Compare {cracker}. See also {hacked off}. :munching squares: n. A {display hack} dating back to the PDP-1 (ca. 1962, reportedly discovered by Jackson Wright), which employs a trivial computation (repeatedly plotting the graph Y = X XOR T for successive values of T --- see {HAKMEM} items 146--148) to produce an impressive display of moving and growing squares that devour the screen. The initial value of T is treated as a parameter, which, when well-chosen, can produce amazing effects. Some of these, later (re)discovered on the LISP machine, have been christened `munching triangles' (try AND for XOR and toggling points instead of plotting them), `munching w's', and `munching mazes'. More generally, suppose a graphics program produces an impressive and ever-changing display of some basic form, foo, on a display terminal, and does it using a relatively simple program; then the program (or the resulting display) is likely to be referred to as `munching foos'. [This is a good example of the use of the word {foo} as a {metasyntactic variable}.] :munchkin: /muhnch'kin/ [from the squeaky-voiced little people in L. Frank Baum's `The Wizard of Oz'] n. A teenage-or-younger micro enthusiast hacking BASIC or something else equally constricted. A term of mild derision --- munchkins are annoying but some grow up to be hackers after passing through a {larval stage}. The term {urchin} is also used. See also {wannabee}, {bitty box}. :mundane: [from SF fandom] n. 1. A person who is not in science fiction fandom. 2. A person who is not in the computer industry. In this sense, most often an adjectival modifier as in "in my mundane life...." See also {Real World}. :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, esp. large-scale and irrevocable changes. See {BLT}. 2. To destroy, usually accidentally, occasionally maliciously. The system only mungs things maliciously; this is a consequence of {Finagle's Law}. See {scribble}, {mangle}, {trash}, {nuke}. Reports from {USENET} suggest that the pronunciation /muhnj/ is now usual in speech, but the spelling `mung' is still common in program comments (compare the widespread confusion over the proper spelling of {kluge}). 3. The kind of beans of which the sprouts are used in Chinese food. (That's their real name! Mung beans! Really!) Like many early hacker terms, this one seems to have originated at {TMRC}; it was already in use there in 1958. Peter Samson (compiler of the TMRC lexicon) thinks it may originally have been onomatopoeic for the sound of a relay spring (contact) being twanged. :Murphy's Law: prov. The correct, *original* Murphy's Law reads: "If there are two or more ways to do something, and one of those ways can result in a catastrophe, then someone will do it." This is a principle of defensive design, cited here because it is usually given in mutant forms less descriptive of the challenges of design for lusers. For example, you don't make a two-pin plug symmetrical and then label it `THIS WAY UP'; if it matters which way it is plugged in, then you make the design asymmetrical (see also the anecdote under {magic smoke}). Edward A. Murphy, Jr. was one of the engineers on the rocket-sled experiments that were done by the U.S. Air Force in 1949 to test human acceleration tolerances (USAF project MX981). One experiment involved a set of 16 accelerometers mounted to different parts of the subject's body. There were two ways each sensor could be glued to its mount, and somebody methodically installed all 16 the wrong way around. Murphy then made the original form of his pronouncement, which the test subject (Major John Paul Stapp) quoted at a news conference a few days later. Within months `Murphy's Law' had spread to various technical cultures connected to aerospace engineering. Before too many years had gone by variants had passed into the popular imagination, changing as they went. Most of these are variants on "Anything that can go wrong, will"; this is sometimes referred to as {Finagle's Law}. The memetic drift apparent in these mutants clearly demonstrates Murphy's Law acting on itself! :music:: n. A common extracurricular interest of hackers (compare {{science-fiction fandom}}, {{oriental food}}; see also {filk}). Hackish folklore has long claimed that musical and programming abilities are closely related, and there has been at least one large-scale statistical study that supports this. Hackers, as a rule, like music and often develop musical appreciation in unusual and interesting directions. Folk music is very big in hacker circles; so is electronic music, and the sort of elaborate instrumental jazz/rock that used to be called `progressive' and isn't recorded much any more. The hacker's musical range tends to be wide; many can listen with equal appreciation to (say) Talking Heads, Yes, Gentle Giant, Spirogyra, Scott Joplin, Tangerine Dream, King Sunny Ade, The Pretenders, or Bach's Brandenburg Concerti. It is also apparently true that hackerdom includes a much higher concentration of talented amateur musicians than one would expect from a similar-sized control group of {mundane} types. :mutter: vt. To quietly enter a command not meant for the ears, eyes, or fingers of ordinary mortals. Often used in `mutter an {incantation}'. See also {wizard}. = N = ===== :N: /N/ quant. 1. A large and indeterminate number of objects: "There were N bugs in that crock!" Also used in its original sense of a variable name: "This crock has N bugs, as N goes to infinity." (The true number of bugs is always at least N + 1.) 2. A variable whose value is inherited from the current context. For example, when a meal is being ordered at a restaurant, N may be understood to mean however many people there are at the table. From the remark "We'd like to order N wonton soups and a family dinner for N - 1" you can deduce that one person at the table wants to eat only soup, even though you don't know how many people there are (see {great-wall}). 3. `Nth': adj. The ordinal counterpart of N, senses 1 and 2. "Now for the Nth and last time..." In the specific context "Nth-year grad student", N is generally assumed to be at least 4, and is usually 5 or more (see {tenured graduate student}). See also {{random numbers}}, {two-to-the-N}. :nadger: /nad'jr/ [Great Britain] v. Of software or hardware (not people), to twiddle some object in a hidden manner, generally so that it conforms better to some format. For instance, string printing routines on 8-bit processors often take the string text from the instruction stream, thus a print call looks like `jsr print:"Hello world"'. The print routine has to `nadger' the return instruction pointer so that the processor doesn't try to execute the text as instructions. :nailed to the wall: [like a trophy] adj. Said of a bug finally eliminated after protracted, and even heroic, effort. :nailing jelly: vi. See {like nailing jelly to a tree}. :na"ive: adj. Untutored in the perversities of some particular program or system; one who still tries to do things in an intuitive way, rather than the right way (in really good designs these coincide, but most designs aren't `really good' in the appropriate sense). This is completely unrelated to general maturity or competence, or even competence at any other specific program. It is a sad commentary on the primitive state of computing that the natural opposite of this term is often claimed to be `experienced user' but is really more like `cynical user'. :na"ive user: n. A {luser}. Tends to imply someone who is ignorant mainly owing to inexperience. When this is applied to someone who *has* experience, there is a definite implication of stupidity. :NAK: /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!" :nano: /nan'oh/ [CMU: from `nanosecond'] n. A brief period of time. "Be with you in a nano" means you really will be free shortly, i.e., implies what mainstream people mean by "in a jiffy" (whereas the hackish use of `jiffy' is quite different --- see {jiffy}). :nano-: [SI: the next quantifier below {micro-}; meaning * 10^(-9)] pref. Smaller than {micro-}, and used in the same rather loose and connotative way. Thus, one has {{nanotechnology}} (coined by hacker K. Eric Drexler) by analogy with `microtechnology'; and a few machine architectures have a `nanocode' level below `microcode'. Tom Duff at Bell Labs has also pointed out that "Pi seconds is a nanocentury". See also {{quantifiers}}, {pico-}, {nanoacre}, {nanobot}, {nanocomputer}, {nanofortnight}. :nanoacre: /nan'oh-ay`kr/ n. A unit (about 2 mm square) of real estate on a VLSI chip. The term gets its giggle value from the fact that VLSI nanoacres have costs in the same range as real acres once one figures in design and fabrication-setup costs. :nanobot: /nan'oh-bot/ n. A robot of microscopic proportions, presumably built by means of {{nanotechnology}}. As yet, only used informally (and speculatively!). Also called a `nanoagent'. :nanocomputer: /nan'oh-k*m-pyoo'tr/ n. A computer whose switching elements are molecular in size. Designs for mechanical nanocomputers which use single-molecule sliding rods for their logic have been proposed. The controller for a {nanobot} would be a nanocomputer. :nanofortnight: [Adelaide University] n. 1 fortnight * 10^-9, or about 1.2 msec. This unit was used largely by students doing undergraduate practicals. See {microfortnight}, {attoparsec}, and {micro-}. :nanotechnology:: /nan'-oh-tek-no`l*-jee/ n. A hypothetical fabrication technology in which objects are designed and built with the individual specification and placement of each separate atom. The first unequivocal nanofabrication experiments are taking place now (1990), for example with the deposition of individual xenon atoms on a nickel substrate to spell the logo of a certain very large computer company. Nanotechnology has been a hot topic in the hacker subculture ever since the term was coined by K. Eric Drexler in his book `Engines of Creation', where he predicted that nanotechnology could give rise to replicating assemblers, permitting an exponential growth of productivity and personal wealth. See also {blue goo}, {gray goo}, {nanobot}. :nasal demons: n. During a discussion on the USENET group comp.std.c in early 1992, a regular remarked "When the compiler encounters [a given undefined construct] it is legal for it to make demons fly out of your nose" (the implication is that it may choose any arbitrarily bizarre way to interpret the code without violating the ANSI C standard). Someone else followed up with a reference to "nasal demons", which became recognized shorthand on that group for any unexpected behaviour of a C compiler on encountering an undefined construct. :nastygram: /nas'tee-gram/ n. 1. A protocol packet or item of email (the latter is also called a {letterbomb}) that takes advantage of misfeatures or security holes on the target system to do untoward things. 2. Disapproving mail, esp. from a {net.god}, pursuant to a violation of {netiquette} or a complaint about failure to correct some mail- or news-transmission problem. Compare {shitogram}. 3. A status report from an unhappy, and probably picky, customer. "What'd Corporate say in today's nastygram?" 4. [deprecated] An error reply by mail from a {daemon}; in particular, a {bounce message}. :Nathan Hale: n. An asterisk (see also {splat}, {{ASCII}}). Oh, you want an etymology? Notionally, from "I regret that I have only one asterisk for my country!", a misquote of the famous remark uttered by Nathan Hale just before he was hanged. Hale was a (failed) spy for the rebels in the American War of Independence. :nature: n. See {has the X nature}. :neat hack: n. 1. A clever technique. 2. A brilliant practical joke, where neatness is correlated with cleverness, harmlessness, and surprise value. Example: the Caltech Rose Bowl card display switch (see "{The Meaning of `Hack'}", appendix A). See also {hack}. :neats vs. scruffies: n. The label used to refer to one of the continuing {holy wars} in AI research. This conflict tangles together two separate issues. One is the relationship between human reasoning and AI; `neats' tend to try to build systems that `reason' in some way identifiably similar to the way humans report themselves as doing, while `scruffies' profess not to care whether an algorithm resembles human reasoning in the least as long as it works. More importantly, `neats' tend to believe that logic is king, while `scruffies' favor looser, more ad-hoc methods driven by empirical knowledge. To a `neat', `scruffy' methods appear promiscuous and successful only by accident; to a `scruffy', `neat' methods appear to be hung up on formalism and irrelevant to the hard-to-capture `common sense' of living intelligences. :neep-neep: /neep neep/ [onomatopoeic, from New York SF fandom] n. One who is fascinated by computers. More general than {hacker}, as it need not imply more skill than is required to boot games on a PC. The derived noun `neep-neeping' applies specifically to the long conversations about computers that tend to develop in the corners at most SF-convention parties. Fandom has a related proverb to the effect that "Hacking is a conversational black hole!". :neophilia: /nee`oh-fil'-ee-*/ n. The trait of being excited and pleased by novelty. Common trait of most hackers, SF fans, and members of several other connected leading-edge subcultures, including the pro-technology `Whole Earth' wing of the ecology movement, space activists, many members of Mensa, and the Discordian/neo-pagan underground. All these groups overlap heavily and (where evidence is available) seem to share characteristic hacker tropisms for science fiction, {{music}}, and {{oriental food}}. :net.-: /net dot/ pref. [USENET] Prefix used to describe people and events related to USENET. From the time before the {Great Renaming}, when most non-local newsgroups had names beginning `net.'. Includes {net.god}s, `net.goddesses' (various charismatic net.women with circles of on-line admirers), `net.lurkers' (see {lurker}), `net.person', `net.parties' (a synonym for {boink}, sense 2), and many similar constructs. See also {net.police}. :net.god: /net god/ n. Used to refer to anyone who satisfies some combination of the following conditions: has been visible on USENET for more than 5 years, ran one of the original backbone sites, moderated an important newsgroup, wrote news software, or knows Gene, Mark, Rick, Mel, Henry, Chuq, and Greg personally. See {demigod}. Net.goddesses such as Rissa or the Slime Sisters have (so far) been distinguished more by personality than by authority. :net.personality: /net per`sn-al'-*-tee/ n. Someone who has made a name for him or herself on {USENET}, through either longevity or attention-getting posts, but doesn't meet the other requirements of {net.god}hood. :net.police: /net-p*-lees'/ n. (var. `net.cops') Those USENET readers who feel it is their responsibility to pounce on and {flame} any posting which they regard as offensive or in violation of their understanding of {netiquette}. Generally used sarcastically or pejoratively. Also spelled `net police'. See also {net.-}, {code police}. :NetBOLLIX: [from bollix: to bungle] n. {IBM}'s NetBIOS, an extremely {brain-damaged} network protocol which, like {Blue Glue}, is used at commercial shops that don't know any better. :netburp: [IRC] n. When {netlag} gets really bad, and delays between servers exceed a certain threshhold, the {IRC} network effectively becomes partitioned for a period of time, and large numbers of people seem to be signing off at the same time and then signing back on again when things get better. An instance of this is called a `netburp' (or, sometimes, {netsplit}). :netdead: [IRC] n. The state of someone who signs off {IRC}, perhaps during a {netburp}, and doesn't sign back on until later. In the interim, he is "dead to the net". :nethack: /net'hak/ [UNIX] n. A dungeon game similar to {rogue} but more elaborate, distributed in C source over {USENET} and very popular at UNIX sites and on PC-class machines (nethack is probably the most widely distributed of the freeware dungeon games). The earliest versions, written by Jay Fenlason and later considerably enhanced by Andries Brouwer, were simply called `hack'. The name changed when maintenance was taken over by a group of hackers originally organized by Mike Stephenson; the current contact address (as of mid-1991) is nethack-bugs@linc.cis.upenn.edu. :netiquette: /net'ee-ket/ or /net'i-ket/ [portmanteau from "network etiquette"] n. Conventions of politeness recognized on {USENET}, such as avoidance of cross-posting to inappropriate groups or refraining from commercial pluggery on the net. :netlag: [IRC, MUD] n. A condition that occurs when the delays in the {IRC} network or on a {MUD} become severe enough that servers briefly lose and then reestablish contact, causing messages to be delivered in bursts, often with delays of up to a minute. (Note that this term has nothing to do with mainstream "jetlag", a condition which hackers tend not to be much bothered by.) :netnews: /net'n[y]ooz/ n. 1. The software that makes {USENET} run. 2. The content of USENET. "I read netnews right after my mail most mornings." :netrock: /net'rok/ [IBM] n. A {flame}; used esp. on VNET, IBM's internal corporate network. :netsplit: n. Syn. {netburp}. :netter: n. 1. Loosely, anyone with a {network address}. 2. More specifically, a {USENET} regular. Most often found in the plural. "If you post *that* in a technical group, you're going to be flamed by angry netters for the rest of time!" :network address: n. (also `net address') As used by hackers, means an address on `the' network (see {network, the}; this is almost always a {bang path} or {{Internet address}}). Such an address is essential if one wants to be to be taken seriously by hackers; in particular, persons or organizations that claim to understand, work with, sell to, or recruit from among hackers but *don't* display net addresses are quietly presumed to be clueless poseurs and mentally flushed (see {flush}, sense 4). Hackers often put their net addresses on their business cards and wear them prominently in contexts where they expect to meet other hackers face-to-face (see also {{science-fiction fandom}}). This is mostly functional, but is also a signal that one identifies with hackerdom (like lodge pins among Masons or tie-dyed T-shirts among Grateful Dead fans). Net addresses are often used in email text as a more concise substitute for personal names; indeed, hackers may come to know each other quite well by network names without ever learning each others' `legal' monikers. See also {sitename}, {domainist}. :network meltdown: n. A state of complete network overload; the network equivalent of {thrash}ing. This may be induced by a {Chernobyl packet}. See also {broadcast storm}, {kamikaze packet}. :network, the: n. 1. The union of all the major noncommercial, academic, and hacker-oriented networks, such as Internet, the old ARPANET, NSFnet, {BITNET}, and the virtual UUCP and {USENET} `networks', plus the corporate in-house networks and commercial time-sharing services (such as CompuServe) that gateway to them. A site is generally considered `on the network' if it can be reached through some combination of Internet-style (@-sign) and UUCP (bang-path) addresses. See {bang path}, {{Internet address}}, {network address}. 2. A fictional conspiracy of libertarian hacker-subversives and anti-authoritarian monkeywrenchers described in Robert Anton Wilson's novel `Schr"odinger's Cat', to which many hackers have subsequently decided they belong (this is an example of {ha ha only serious}). In sense 1, `network' is often abbreviated to `net'. "Are you on the net?" is a frequent question when hackers first meet face to face, and "See you on the net!" is a frequent goodbye. :New Jersey: [primarily Stanford/Silicon Valley] adj. Brain-damaged or of poor design. This refers to the allegedly wretched quality of such software as C, C++, and UNIX (which originated at Bell Labs in Murray Hill, New Jersey). "This compiler bites the bag, but what can you expect from a compiler designed in New Jersey?" Compare {Berkeley Quality Software}. See also {UNIX conspiracy}. :New Testament: n. [C programmers] The second edition of K&R's `The C Programming Language' (Prentice-Hall, 1988; ISBN 0-13-110362-8), describing ANSI Standard C. See {K&R}. :newbie: /n[y]oo'bee/ n. [orig. from British public-school and military slang variant of `new boy'] A USENET neophyte. This term surfaced in the {newsgroup} talk.bizarre but is now in wide use. Criteria for being considered a newbie vary wildly; a person can be called a newbie in one newsgroup while remaining a respected regular in another. The label `newbie' is sometimes applied as a serious insult to a person who has been around USENET for a long time but who carefully hides all evidence of having a clue. See {BIFF}. :newgroup wars: /n[y]oo'groop wohrz/ [USENET] n. The salvos of dueling `newgroup' and `rmgroup' messages sometimes exchanged by persons on opposite sides of a dispute over whether a {newsgroup} should be created net-wide. These usually settle out within a week or two as it becomes clear whether the group has a natural constituency (usually, it doesn't). At times, especially in the completely anarchic alt hierarchy, the names of newsgroups themselves become a form of comment or humor; e.g., the spinoff of alt.swedish.chef.bork.bork.bork from alt.tv.muppets in early 1990, or any number of specialized abuse groups named after particularly notorious {flamer}s, e.g., alt.weemba. :newline: /n[y]oo'li:n/ n. 1. [techspeak, primarily UNIX] The ASCII LF character (0001010), used under {{UNIX}} as a text line terminator. A Bell-Labs-ism rather than a Berkeleyism; interestingly (and unusually for UNIX jargon), it is said to have originally been an IBM usage. (Though the term `newline' appears in ASCII standards, it never caught on in the general computing world before UNIX). 2. More generally, any magic character, character sequence, or operation (like Pascal's writeln procedure) required to terminate a text record or separate lines. See {crlf}, {terpri}. :NeWS: /nee'wis/, /n[y]oo'is/ or /n[y]ooz/ [acronym; the `Network Window System'] n. The road not taken in window systems, an elegant {PostScript}-based environment that would almost certainly have won the standards war with {X} if it hadn't been {proprietary} to Sun Microsystems. There is a lesson here that too many software vendors haven't yet heeded. Many hackers insist on the two-syllable pronunciations above as a way of distinguishing NeWS from {news} (the {netnews} software). :news: n. See {netnews}. :newsfroup: // [USENET] n. Silly synonym for {newsgroup}, originally a typo but now in regular use on USENET's talk.bizarre and other lunatic-fringe groups. Compare {hing} and {filk}. :newsgroup: [USENET] n. One of {USENET}'s huge collection of topic groups or {fora}. Usenet groups can be `unmoderated' (anyone can post) or `moderated' (submissions are automatically directed to a moderator, who edits or filters and then posts the results). Some newsgroups have parallel {mailing list}s for Internet people with no netnews access, with postings to the group automatically propagated to the list and vice versa. Some moderated groups (especially those which are actually gatewayed Internet mailing lists) are distributed as `digests', with groups of postings periodically collected into a single large posting with an index. Among the best-known are comp.lang.c (the C-language forum), comp.arch (on computer architectures), comp.unix.wizards (for UNIX wizards), rec.arts.sf-lovers (for science-fiction fans), and talk.politics.misc (miscellaneous political discussions and {flamage}). :nick: [IRC] n. Short for nickname. On {IRC}, every user must pick a nick, which is sometimes the same as the user's real name or login name, but is often more fanciful. :nickle: /ni'kl/ [from `nickel', common name for the U.S. 5-cent coin] n. A {nybble} + 1; 5 bits. Reported among developers for Mattel's GI 1600 (the Intellivision games processor), a chip with 16-bit-wide RAM but 10-bit-wide ROM. See also {deckle}. :night mode: n. See {phase} (of people). :Nightmare File System: n. Pejorative hackerism for Sun's Network File System (NFS). In any nontrivial network of Suns where there is a lot of NFS cross-mounting, when one Sun goes down, the others often freeze up. Some machine tries to access the down one, and (getting no response) repeats indefinitely. This causes it to appear dead to some messages (what is actually happening is that it is locked up in what should have been a brief excursion to a higher {spl} level). Then another machine tries to reach either the down machine or the pseudo-down machine, and itself becomes pseudo-down. The first machine to discover the down one is now trying both to access the down one and to respond to the pseudo-down one, so it is even harder to reach. This situation snowballs very fast, and soon the entire network of machines is frozen --- worst of all, the user can't even abort the file access that started the problem! Many of NFS'es problems are excused by partisans as being an inevitable result of its statelessness, which is held to be a great feature (critics, of course, call it a great {misfeature}). (ITS partisans are apt to cite this as proof of UNIX's alleged bogosity; ITS had a working NFS-like shared file system with none of these problems in the early 1970s.) See also {broadcast storm}. :NIL: /nil/ No. Used in reply to a question, particularly one asked using the `-P' convention. Most hackers assume this derives simply from LISP terminology for `false' (see also {T}), but NIL as a negative reply was well-established among radio hams decades before the advent of LISP. The historical connection between early hackerdom and the ham radio word was strong enough that this may have been an influence. :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. :no-op: /noh'op/ alt. NOP /nop/ [no operation] n. 1. (also v.) 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). See also {JFCL}. 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. :noddy: /nod'ee/ [UK: from the children's books] adj. 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}. :NOMEX underwear: /noh'meks uhn'-der-weir/ [USENET] n. Syn. {asbestos longjohns}, used mostly in auto-related mailing lists and newsgroups. NOMEX underwear is an actual product available on the racing equipment market, used as a fire resistance measure and required in some racing series. :Nominal Semidestructor: n. Sound-alike slang for `National Semiconductor', found among other places in the 4.3BSD 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 Z80,000 and a few even more obscure also-rans in the graveyard of forgotten microprocessors. Compare {HP-SUX}, {AIDX}, {buglix}, {Macintrash}, {Telerat}, {Open DeathTrap}, {ScumOS}, {sun-stools}. :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}. :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). :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}. :notwork: /not'werk/ n. A network, when it is acting {flaky} or is {down}. Compare {nyetwork}. Said at IBM to have orig. 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. :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' (NP-complete problems all seem to be very hard, but so far no one has found a good a priori reason that they should be.) "Coding a BitBlt implementation to perform correctly in every case is NP-annoying." This is generalized from the computer-science terms `NP-hard' and `NP-complete'. 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. Note, however, that the NP- prefix is, from a complexity theorist's point of view, the wrong part of `NP-complete' to connote extreme difficulty; it is the completeness, not the NP-ness, that puts any problem it describes in the `hard' category. :nroff: /en'rof/ [UNIX, from "new runoff"] n. A companion program to the UNIX typesetter `troff', accepting identical input but preparing output for terminals and line printers. :NSA line eater: n. The National Security Agency trawling program sometimes assumed to be reading {USENET} for the U.S. Government's spooks. Most hackers describe it as a mythical beast, but some believe it actually exists, more aren't sure, and many believe in acting as though it exists just in case. Some netters put loaded phrases like `KGB', `Uzi', `nuclear materials', `Palestine', `cocaine', and `assassination' in their {sig block}s 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. There is a mainstream variant of this myth involving a `Trunk Line Monitor', which supposedly used speech recognition to extract words from telephone trunks. This one was making the rounds in the late 1970s, spread by people who 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. Speech-recognition technology can't do this job even now (1991), and almost certainly won't in this millennium, either. The peak of silliness came with a letter to an alternative paper in New Haven, Connecticut, laying out the factoids of this Big Brotherly affair. The letter writer then revealed his actual agenda by offering --- at an amazing low price, just this once, we take VISA and MasterCard --- a scrambler guaranteed to daunt the Trunk Trawler and presumably allowing the would-be Baader-Meinhof gangs of the world to get on with their business. :nuke: vt. 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. Oppose {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. :number-crunching: n. 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}. :numbers: [scientific computation] n. 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}. :NUXI problem: /nuk'see pro'bl*m/ n. This 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}. :nybble: /nib'l/ (alt. `nibble') [from v. `nibble' by analogy with `bite' => `byte'] n. Four bits; one {hex} digit; a half-byte. Though `byte' is now techspeak, this useful relative is still jargon. Compare {{byte}}, {crumb}, {tayste}, {dynner}; see also {bit}, {nickle}, {deckle}. Apparently this spelling is uncommon in Commonwealth Hackish, as British orthography suggests the pronunciation /ni:'bl/. :nyetwork: /nyet'werk/ [from Russian `nyet' = no] n. A network, when it is acting {flaky} or is {down}. Compare {notwork}. = 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 your Obs are more interesting than other people's whole postings. :Obfuscated C Contest: n. 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 */ 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 */ #define _ -F<00||--F-OO--; int F=00,OO=00; main(){F_OO();printf("%1.3f\n",4.*-F/OO/OO);}F_OO() { _-_-_-_ _-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_-_-_-_-_ _-_-_-_-_-_-_-_ _-_-_-_ } See also {hello, world}. :obi-wan error: /oh'bee-won` er'*r/ [RPI, from `off-by-one' and the Obi-Wan Kenobi character in "Star Wars"] n. 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}. :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. :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 it could be figured out but probably isn't worth the trouble. The construction `obscure in the extreme' is the preferred emphatic form. :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}. :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}. :off-by-one error: n. 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. :offline: adv. Not now or not here. "Let's take this discussion offline." Specifically used on {USENET} to suggest that a discussion be taken off a public newsgroup to email. :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 block}s 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. :Old Testament: n. [C programmers] The first edition of {K&R}, the sacred text describing {Classic C}. :one-banana problem: n. At mainframe shops, where the computers have operators for routine administrivia, the programmers and hardware people tend to look down on the operators and claim that a trained monkey could do their job. It is frequently observed that the incentives which would be offered said monkeys can be used as a scale to describe the difficulty of a task. A one-banana problem is simple; hence "It's only a one-banana job at the most; what's taking them so long?" At IBM, folklore divides the world into one-, two-, and three-banana problems. Other cultures have different hierarchies and may divide them more finely; at ICL, for example, five grapes (a bunch) equals a banana. Their upper limit for the in-house {sysape}s is said to be two bananas and three grapes (another source claims it's three bananas and one grape, but observes "However, this is subject to local variations, cosmic rays and ISO"). At a complication level any higher than that, one asks the manufacturers to send someone around to check things. :one-line fix: n. Used (often sarcastically) of a change to a program that is thought to be trivial or insignificant right up to the moment it crashes the system. Usually `cured' by another one-line fix. See also {I didn't change anything!} :one-liner wars: n. A game popular among hackers who code in the language APL (see {write-only language} and {line noise}). The objective is to see who can code the most interesting and/or useful routine in one line of operators chosen from APL's exceedingly {hairy} primitive set. A similar amusement was practiced among {TECO} hackers and is now popular among {Perl} aficionados. Ken Iverson, the inventor of APL, has been credited with a one-liner that, given a number N, produces a list of the prime numbers from 1 to N inclusive. It looks like this: (2 = 0 +.= T o.| T) / T <- iN where `o' is the APL null character, the assignment arrow is a single character, and `i' represents the APL iota. :ooblick: /oo'blik/ [from Dr. Seuss's `Bartholomew and the Oobleck'] n. A bizarre semi-liquid sludge made from cornstarch and water. Enjoyed among hackers who make batches during playtime at parties for its amusing and extremely non-Newtonian behavior; it pours and splatters, but resists rapid motion like a solid and will even crack when hit by a hammer. Often found near lasers. Here is a field-tested ooblick recipe contributed by GLS: 1 cup cornstarch 1 cup baking soda 3/4 cup water N drops of food coloring This recipe isn't quite as non-Newtonian as a pure cornstarch ooblick, but has an appropriately slimy feel. Some, however, insist that the notion of an ooblick *recipe* is far too mechanical, and that it is best to add the water in small increments so that the various mixed states the cornstarch goes through as it *becomes* ooblick can be grokked in fullness by many hands. For optional ingredients of this experience, see the "{Ceremonial Chemicals}" section of {appendix B}. :op: /op/ [IRC] n. Someone who is endowed with privileges on {IRC}, not limited to a particular channel. These are generally people who are in charge of the IRC server at their particular site. Sometimes used interchangably with {CHOP}. Compare {sysop}. :open: n. Abbreviation for `open (or left) parenthesis' --- used when necessary to eliminate oral ambiguity. To read aloud the LISP form (DEFUN FOO (X) (PLUS X 1)) one might say: "Open defun foo, open eks close, open, plus eks one, close close." :Open DeathTrap: n. Abusive hackerism for the Santa Cruz Operation's `Open DeskTop' product, a Motif-based graphical interface over their UNIX. The funniest part is that this was coined by SCO's own developers...compare {AIDX}, {terminak}, {Macintrash} {Nominal Semidestructor}, {ScumOS}, {sun-stools}, {HP-SUX}. :open switch: [IBM: prob. from railroading] n. An unresolved question, issue, or problem. :operating system:: [techspeak] n. (Often abbreviated `OS') The foundation software of a machine, of course; that which schedules tasks, allocates storage, and presents a default interface to the user between applications. The facilities an operating system provides and its general design philosophy exert an extremely strong influence on programming style and on the technical cultures that grow up around its host machines. Hacker folklore has been shaped primarily by the {{UNIX}}, {{ITS}}, {{TOPS-10}}, {{TOPS-20}}/{{TWENEX}}, {{WAITS}}, {{CP/M}}, {{MS-DOS}}, and {{Multics}} operating systems (most importantly by ITS and UNIX). :optical diff: n. See {vdiff}. :optical grep: n. See {vgrep}. :Orange Book: n. The U.S. Government's standards document `Trusted Computer System Evaluation Criteria, DOD standard 5200.28-STD, December, 1985' which characterize secure computing architectures and defines levels A1 (most secure) through D (least). Stock UNIXes are roughly C1, and can be upgraded to about C2 without excessive pain. See also {{book titles}}. :oriental food:: n. Hackers display an intense tropism towards oriental cuisine, especially Chinese, and especially of the spicier varieties such as Szechuan and Hunan. This phenomenon (which has also been observed in subcultures that overlap heavily with hackerdom, most notably science-fiction fandom) has never been satisfactorily explained, but is sufficiently intense that one can assume the target of a hackish dinner expedition to be the best local Chinese place and be right at least three times out of four. See also {ravs}, {great-wall}, {stir-fried random}, {laser chicken}, {Yu-Shiang Whole Fish}. Thai, Indian, Korean, and Vietnamese cuisines are also quite popular. :orphan: [UNIX] n. A process whose parent has died; one inherited by `init(1)'. Compare {zombie}. :orphaned i-node: /or'f*nd i:'nohd/ [UNIX] n. 1. [techspeak] A file that retains storage but no longer appears in the directories of a filesystem. 2. By extension, a pejorative for any person serving no useful function within some organization, esp. {lion food} without subordinates. :orthogonal: [from mathematics] adj. Mutually independent; well separated; sometimes, irrelevant to. Used in a generalization of its mathematical meaning to describe sets of primitives or capabilities that, like a vector basis in geometry, span the entire `capability space' of the system and are in some sense non-overlapping or mutually independent. For example, in architectures such as the PDP-11 or VAX where all or nearly all registers can be used interchangeably in any role with respect to any instruction, the register set is said to be orthogonal. Or, in logic, the set of operators `not' and `or' is orthogonal, but the set `nand', `or', and `not' is not (because any one of these can be expressed in terms of the others). Also used in comments on human discourse: "This may be orthogonal to the discussion, but...." :OS: /O-S/ 1. [Operating System] n. An abbreviation heavily used in email, occasionally in speech. 2. n.,obs. On ITS, an output spy. See "{OS and JEDGAR}" (in {appendix A}). :OS/2: /O S too/ n. The anointed successor to MS-DOS for Intel 286- and 386-based micros; proof that IBM/Microsoft couldn't get it right the second time, either. Mentioning it is usually good for a cheap laugh among hackers --- the design was so {baroque}, and the implementation of 1.x so bad, that 3 years after introduction you could still count the major {app}s shipping for it on the fingers of two hands --- in unary. Often called `Half-an-OS'. On January 28, 1991, Microsoft announced that it was dropping its OS/2 development to concentrate on Windows, leaving the OS entirely in the hands of IBM; on January 29 they claimed the media had got the story wrong, but were vague about how. It looks as though OS/2 is moribund. See {vaporware}, {monstrosity}, {cretinous}, {second-system effect}. :out-of-band: [from telecommunications and network theory] adj. 1. In software, describes values of a function which are not in its `natural' range of return values, but are rather signals that some kind of exception has occurred. Many C functions, for example, return either a nonnegative integral value, or indicate failure with an out-of-band return value of -1. Compare {hidden flag}, {green bytes}. 2. Also sometimes used to describe what communications people call `shift characters', like the ESC that leads control sequences for many terminals, or the level shift indicators in the old 5-bit Baudot codes. 3. In personal communication, using methods other than email, such as telephones or {snail-mail}. :overflow bit: n. 1. [techspeak] On some processors, an attempt to calculate a result too large for a register to hold causes a particular {flag} called an {overflow bit} to be set. 2. Hackers use the term of human thought too. "Well, the {{Ada}} description was {baroque} all right, but I could hack it OK until they got to the exception handling ... that set my overflow bit." 3. The hypothetical bit that will be set if a hacker doesn't get to make a trip to the Room of Porcelain Fixtures: "I'd better process an internal interrupt before the overflow bit gets set". :overflow pdl: [MIT] n. The place where you put things when your {pdl} is full. If you don't have one and too many things get pushed, you forget something. The overflow pdl for a person's memory might be a memo pad. This usage inspired the following doggerel: Hey, diddle, diddle The overflow pdl To get a little more stack; If that's not enough Then you lose it all, And have to pop all the way back. --The Great Quux The term {pdl} seems to be primarily an MITism; outside MIT this term would logically be replaced by `overflow {stack}', but the editors have heard no report of the latter term actually being in use. :overrun: n. 1. [techspeak] Term for a frequent consequence of data arriving faster than it can be consumed, esp. in serial line communications. For example, at 9600 baud there is almost exactly one character per millisecond, so if your {silo} can hold only two characters and the machine takes longer than 2 msec to get to service the interrupt, at least one character will be lost. 2. Also applied to non-serial-I/O communications. "I forgot to pay my electric bill due to mail overrun." "Sorry, I got four phone calls in 3 minutes last night and lost your message to overrun." When {thrash}ing at tasks, the next person to make a request might be told "Overrun!" Compare {firehose syndrome}. 3. More loosely, may refer to a {buffer overflow} not necessarily related to processing time (as in {overrun screw}). :overrun screw: [C programming] n. A variety of {fandango on core} produced by scribbling past the end of an array (C implementations typically have no checks for this error). This is relatively benign and easy to spot if the array is static; if it is auto, the result may be to {smash the stack} --- often resulting in {heisenbug}s of the most diabolical subtlety. The term `overrun screw' is used esp. of scribbles beyond the end of arrays allocated with `malloc(3)'; this typically trashes the allocation header for the next block in the {arena}, producing massive lossage within malloc and often a core dump on the next operation to use `stdio(3)' or `malloc(3)' itself. See {spam}, {overrun}; see also {memory leak}, {memory smash}, {aliasing bug}, {precedence lossage}, {fandango on core}, {secondary damage}. = P = ===== :P.O.D.: /P-O-D/ Acronym for `Piece Of Data' (as opposed to a code section). Usage: pedantic and rare. See also {pod}. :padded cell: n. Where you put {luser}s 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 USG UNIX). Note that this is different from an {iron box} because it is overt and not aimed at enforcing security so much as protecting others (and the luser) from the consequences of the luser's boundless na"ivet'e (see {na"ive}). Also `padded cell environment'. :page in: [MIT] vi. 1. To become aware of one's surroundings again after having paged out (see {page out}). Usually confined to the sarcastic comment: "Eric pages in. Film at 11." See {film at 11}. 2. Syn. `swap in'; see {swap}. :page out: [MIT] vi. 1. To become unaware of one's surroundings temporarily, due to daydreaming or preoccupation. "Can you repeat that? I paged out for a minute." See {page in}. Compare {glitch}, {thinko}. 2. Syn. `swap out'; see {swap}. :pain in the net: n. A {flamer}. :paper-net: n. Hackish way of referring to the postal service, analogizing it to a very slow, low-reliability network. USENET {sig block}s not uncommonly include a "Paper-Net:" header just before the sender's postal address; common variants of this are "Papernet" and "P-Net". Compare {voice-net}, {snail-mail}. :param: /p*-ram'/ n. Shorthand for `parameter'. See also {parm}; compare {arg}, {var}. :PARC: n. See {XEROX PARC}. :parent message: n. See {followup}. :parity errors: pl.n. Little lapses of attention or (in more severe cases) consciousness, usually brought on by having spent all night and most of the next day hacking. "I need to go home and crash; I'm starting to get a lot of parity errors." Derives from a relatively common but nearly always correctable transient error in RAM hardware. :Parkinson's Law of Data: prov. "Data expands to fill the space available for storage"; buying more memory encourages the use of more memory-intensive techniques. It has been observed over the last 10 years that the memory usage of evolving systems tends to double roughly once every 18 months. Fortunately, memory density available for constant dollars tends to double about once every 12 months (see {Moore's Law}); unfortunately, the laws of physics guarantee that the latter cannot continue indefinitely. :parm: /parm/ n. Further-compressed form of {param}. This term is an IBMism, and written use is almost unknown outside IBM shops; spoken /parm/ is more widely distributed, but the synonym {arg} is favored among hackers. Compare {arg}, {var}. :parse: [from linguistic terminology] vt. 1. To determine the syntactic structure of a sentence or other utterance (close to the standard English meaning). "That was the one I saw you." "I can't parse that." 2. More generally, to understand or comprehend. "It's very simple; you just kretch the glims and then aos the zotz." "I can't parse that." 3. Of fish, to have to remove the bones yourself. "I object to parsing fish", means "I don't want to get a whole fish, but a sliced one is okay". A `parsed fish' has been deboned. There is some controversy over whether `unparsed' should mean `bony', or also mean `deboned'. :Pascal:: n. An Algol-descended language designed by Niklaus Wirth on the CDC 6600 around 1967--68 as an instructional tool for elementary programming. This language, designed primarily to keep students from shooting themselves in the foot and thus extremely restrictive from a general-purpose-programming point of view, was later promoted as a general-purpose tool and, in fact, became the ancestor of a large family of languages including Modula-2 and {{Ada}} (see also {bondage-and-discipline language}). The hackish point of view on Pascal was probably best summed up by a devastating (and, in its deadpan way, screamingly funny) 1981 paper by Brian Kernighan (of {K&R} fame) entitled "Why Pascal is Not My Favorite Programming Language", which was turned down by the technical journals but circulated widely via photocopies. It was eventually published in "Comparing and Assessing Programming Languages", edited by Alan Feuer and Narain Gehani (Prentice-Hall, 1984). Part of his discussion is worth repeating here, because its criticisms are still apposite to Pascal itself after ten years of improvement and could also stand as an indictment of many other bondage-and-discipline languages. At the end of a summary of the case against Pascal, Kernighan wrote: 9. There is no escape This last point is perhaps the most important. The language is inadequate but circumscribed, because there is no way to escape its limitations. There are no casts to disable the type-checking when necessary. There is no way to replace the defective run-time environment with a sensible one, unless one controls the compiler that defines the "standard procedures". The language is closed. 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 applications and systems programming, but retains some popularity as a hobbyist language in the MS-DOS and Macintosh worlds. :pastie: /pay'stee/ n. An adhesive-backed label designed to be attached to a key on a keyboard to indicate some non-standard character which can be accessed through that key. Pasties are likely to be used in APL environments, where almost every key is associated with a special character. A pastie on the R key, for example, would remind the user that it is used to generate the rho character. The term properly refers to nipple-concealing devices formerly worn by strippers in concession to indecent-exposure laws; compare {tits on a keyboard}. :patch: 1. n. A temporary addition to a piece of code, usually as a {quick-and-dirty} remedy to an existing bug or misfeature. A patch may or may not work, and may or may not eventually be incorporated permanently into the program. Distinguished from a {diff} or {mod} by the fact that a patch is generated by more primitive means than the rest of the program; the classical examples are instructions modified by using the front panel switches, and changes made directly to the binary executable of a program originally written in an {HLL}. Compare {one-line fix}. 2. vt. To insert a patch into a piece of code. 3. [in the UNIX world] n. A {diff} (sense 2). 4. A set of modifications to binaries to be applied by a patching program. IBM operating systems often receive updates to the operating system in the form of absolute hexadecimal patches. If you have modified your OS, you have to disassemble these back to the source. The patches might later be corrected by other patches on top of them (patches were said to "grow scar tissue"). The result was often a convoluted {patch space} and headaches galore. 5. [UNIX] the `patch(1)' program, written by Larry Wall, which automatically applies a patch (sense 3) to a set of source code. There is a classic story of a {tiger team} penetrating a secure military computer that illustrates the danger inherent in binary patches (or, indeed, any that you can't --- or don't --- inspect and examine before installing). They couldn't find any {trap door}s or any way to penetrate security of IBM's OS, so they made a site visit to an IBM office (remember, these were official military types who were purportedly on official business), swiped some IBM stationery, and created a fake patch. The patch was actually the trapdoor they needed. The patch was distributed at about the right time for an IBM patch, had official stationery and all accompanying documentation, and was dutifully installed. The installation manager very shortly thereafter learned something about proper procedures. :patch space: n. An unused block of bits left in a binary so that it can later be modified by insertion of machine-language instructions there (typically, the patch space is modified to contain new code, and the superseded code is patched to contain a jump or call to the patch space). The widening use of HLLs has made this term rare; it is now primarily historical outside IBM shops. See {patch} (sense 4), {zap} (sense 4), {hook}. :path: n. 1. A {bang path} or explicitly routed {{Internet address}}; a node-by-node specification of a link between two machines. 2. [UNIX] A filename, fully specified relative to the root directory (as opposed to relative to the current directory; the latter is sometimes called a `relative path'). This is also called a `pathname'. 3. [UNIX and MS-DOS] The `search path', an environment variable specifying the directories in which the {shell} (COMMAND.COM, under MS-DOS) should look for commands. Other, similar constructs abound under UNIX (for example, the C preprocessor has a `search path' it uses in looking for `#include' files). :pathological: adj. 1. [scientific computation] Used of a data set that is grossly atypical of normal expected input, esp. one that exposes a weakness or bug in whatever algorithm one is using. An algorithm that can be broken by pathological inputs may still be useful if such inputs are very unlikely to occur in practice. 2. When used of test input, implies that it was purposefully engineered as a worst case. The implication in both senses is that the data is spectacularly ill-conditioned or that someone had to explicitly set out to break the algorithm in order to come up with such a crazy example. 3. Also said of an unlikely collection of circumstances. "If the network is down and comes up halfway through the execution of that command by root, the system may just crash." "Yes, but that's a pathological case." Often used to dismiss the case from discussion, with the implication that the consequences are acceptable since that they will happen so infrequently (if at all) that there is no justification for going to extra trouble to handle that case (see sense 1). :payware: /pay'weir/ n. Commercial software. Oppose {shareware} or {freeware}. :PBD: /P-B-D/ [abbrev. of `Programmer Brain Damage'] n. Applied to bug reports revealing places where the program was obviously broken by an incompetent or short-sighted programmer. Compare {UBD}; see also {brain-damaged}. :PC-ism: /P-C-izm/ n. A piece of code or coding technique that takes advantage of the unprotected single-tasking environment in IBM PCs and the like, e.g., by busy-waiting on a hardware register, direct diddling of screen memory, or using hard timing loops. Compare {ill-behaved}, {vaxism}, {unixism}. Also, `PC-ware' n., a program full of PC-isms on a machine with a more capable operating system. Pejorative. :PD: /P-D/ adj. Common abbreviation for `public domain', applied to software distributed over {USENET} and from Internet archive sites. Much of this software is not in fact public domain in the legal sense but travels under various copyrights granting reproduction and use rights to anyone who can {snarf} a copy. See {copyleft}. :pdl: /pid'l/ or /puhd'l/ [abbreviation for `Push Down List'] 1. n. In ITS days, the preferred MITism for {stack}. See {overflow pdl}. 2. n. Dave Lebling, one of the co-authors of {Zork}; (his {network address} on the ITS machines was at one time pdl@dms). 3. n. `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. See also {{flowchart}}. 4. v. To design using a program design language. "I've been pdling so long my eyes won't focus beyond 2 feet." 5. n. `Page Description Language'. Refers to any language which is used to control a graphics device, usually a laserprinter. The most common example, is of course, Adobe's {PostScript} language, but there are many others, such as Xerox InterPress, etc. :PDP-10: [Programmed Data Processor model 10] n. The machine that made timesharing real. It looms large in hacker folklore because of its adoption in the mid-1970s by many university computing facilities and research labs, including the MIT AI Lab, Stanford, and CMU. Some aspects of the instruction set (most notably the bit-field instructions) are still considered unsurpassed. The 10 was eventually eclipsed by the VAX machines (descendants of the PDP-11) when DEC recognized that the 10 and VAX product lines were competing with each other and decided to concentrate its software development effort on the more profitable VAX. The machine was finally dropped from DEC's line in 1983, following the failure of the Jupiter Project at DEC to build a viable new model. (Some attempts by other companies to market clones came to nothing; see {Foonly}) This event spelled the doom of {{ITS}} and the technical cultures that had spawned the original Jargon File, but by mid-1991 it had become something of a badge of honorable old-timerhood among hackers to have cut one's teeth on a PDP-10. See {{TOPS-10}}, {{ITS}}, {AOS}, {BLT}, {DDT}, {DPB}, {EXCH}, {HAKMEM}, {JFCL}, {LDB}, {pop}, {push}, {appendix A}. :PDP-20: n. The most famous computer that never was. {PDP-10} computers running the {{TOPS-10}} operating system were labeled `DECsystem-10' as a way of differentiating them from the PDP-11. Later on, those systems running {TOPS-20} were labeled `DECSYSTEM-20' (the block capitals being the result of a lawsuit brought against DEC by Singer, which once made a computer called `system-10'), but contrary to popular lore there was never a `PDP-20'; the only difference between a 10 and a 20 was the operating system and the color of the paint. Most (but not all) machines sold to run TOPS-10 were painted `Basil Blue', whereas most TOPS-20 machines were painted `Chinese Red' (often mistakenly called orange). :peek: n.,vt. (and {poke}) The commands in most microcomputer BASICs for directly accessing memory contents at an absolute address; often extended to mean the corresponding constructs in any {HLL} (peek reads memory, poke modifies it). Much hacking on small, non-MMU micros consists of `peek'ing around memory, more or less at random, to find the location where the system keeps interesting stuff. Long (and variably accurate) lists of such addresses for various computers circulate (see {{interrupt list, the}}). The results of `poke's at these addresses may be highly useful, mildly amusing, useless but neat, or (most likely) total {lossage} (see {killer poke}). Since a {real operating system} provides useful, higher-level services for the tasks commonly performed with peeks and pokes on micros, and real languages tend not to encourage low-level memory groveling, a question like "How do I do a peek in C?" is diagnostic of the {newbie}. (Of course, OS kernels often have to do exactly this; a real C hacker would unhesitatingly, if unportably, assign an absolute address to a pointer variable and indirect through it.) :pencil and paper: n. An archaic information storage and transmission device that works by depositing smears of graphite on bleached wood pulp. More recent developments in paper-based technology include improved `write-once' update devices which use tiny rolling heads similar to mouse balls to deposit colored pigment. All these devices require an operator skilled at so-called `handwriting' technique. These technologies are ubiquitous outside hackerdom, but nearly forgotten inside it. Most hackers had terrible handwriting to begin with, and years of keyboarding tend to have encouraged it to degrade further. Perhaps for this reason, hackers deprecate pencil-and-paper technology and often resist using it in any but the most trivial contexts. See also {appendix B}. :peon: n. A person with no special ({root} or {wheel}) privileges on a computer system. "I can't create an account on *foovax* for you; I'm only a peon there." :percent-S: /per-sent' es'/ [From the code in C's `printf(3)' library function used to insert an arbitrary string argument] n. An unspecified person or object. "I was just talking to some percent-s in administration." Compare {random}. :perf: /perf/ n. See {chad} (sense 1). The term `perfory' /per'f*-ree/ is also heard. The term {perf} may also refer to the preforations themselves, rather than the chad they produce when torn. :perfect programmer syndrome: n. Arrogance; the egotistical conviction that one is above normal human error. Most frequently found among programmers of some native ability but relatively little experience (especially new graduates; their perceptions may be distorted by a history of excellent performance at solving {toy problem}s). "Of course my program is correct, there is no need to test it." "Yes, I can see there may be a problem here, but *I'll* never type `rm -r /' while in {root}." :Perl: /perl/ [Practical Extraction and Report Language, a.k.a Pathologically Eclectic Rubbish Lister] n. An interpreted language developed by Larry Wall `patch(1)' and `rn(1)') and distributed over USENET. Superficially resembles `awk(1)', but is much hairier (see {awk}). UNIX sysadmins, who are almost always incorrigible hackers, increasingly consider it one of the {languages of choice}. Perl has been described, in a parody of a famous remark about `lex(1)', as the "Swiss-Army chainsaw" of UNIX programming. :pessimal: /pes'im-l/ [Latin-based antonym for `optimal'] adj. Maximally bad. "This is a pessimal situation." Also `pessimize' vt. To make as bad as possible. These words are the obvious Latin-based antonyms for `optimal' and `optimize', but for some reason they do not appear in most English dictionaries, although `pessimize' is listed in the OED. :pessimizing compiler: /pes'*-mi:z`ing k*m-pi:l'r/ [antonym of `optimizing compiler'] n. A compiler that produces object code that is worse than the straightforward or obvious hand translation. The implication is that the compiler is actually trying to optimize the program, but through excessive cleverness is doing the opposite. A few pessimizing compilers have been written on purpose, however, as pranks or burlesques. :peta-: /pe't*/ [SI] pref. See {{quantifiers}}. :PETSCII: /pet'skee/ [abbreviation of PET ASCII] n. The variation (many would say perversion) of the {{ASCII}} character set used by the Commodore Business Machines PET series of personal computers and the later Commodore C64, C16, and C128 machines. The PETSCII set used left-arrow and up-arrow (as in old-style ASCII) instead of underscore and caret, placed the unshifted alphabet at positions 65--90, put the shifted alphabet at positions 193--218, and added graphics characters. :phase: 1. n. The phase of one's waking-sleeping schedule with respect to the standard 24-hour cycle. This is a useful concept among people who often work at night and/or according to no fixed schedule. It is not uncommon to change one's phase by as much as 6 hours per day on a regular basis. "What's your phase?" "I've been getting in about 8 P.M. lately, but I'm going to {wrap around} to the day schedule by Friday." A person who is roughly 12 hours out of phase is sometimes said to be in `night mode'. (The term `day mode' is also (but less frequently) used, meaning you're working 9 to 5 (or, more likely, 10 to 6).) The act of
Back to Full Books |