The Jargon File, Version 4.0.0, 24 Jul 1996

Chapter 12

Chapter 123,655 wordsPublic domain

Daemon and {demon} are often used interchangeably, but seem to have distinct connotations. The term `daemon' was introduced to computing by {CTSS} people (who pronounced it /dee'mon/) and used it to refer to what ITS called a {dragon}. Although the meaning and the pronunciation have drifted, we think this glossary reflects current (1996) usage.

:daemon book: /n./ "The Design and Implementation of the 4.3BSD UNIX Operating System", by Samuel J. Leffler, Marshall Kirk McKusick, Michael J. Karels, and John S. Quarterman (Addison-Wesley Publishers, 1989, ISBN 0-201-06196-1) -- the standard reference book on the internals of {BSD} Unix. So called because the cover has a picture depicting a little devil (a visual play on {daemon}) in sneakers, holding a pitchfork (referring to one of the characteristic features of Unix, the `fork(2)' system call). Also known as the {Devil Book}.

:dahmum: /dah'mum/ /n./ [Usenet] The material of which protracted {flame war}s, especially those about operating systems, is composed. Homeomorphic to {spam}. The term `dahmum' is derived from the name of a militant {OS/2} advocate, and originated when an extensively crossposted OS/2-versus-{Linux} debate was fed through {Dissociated Press}.

:dangling pointer: /n./ A reference that doesn't actually lead anywhere (in C and some other languages, a pointer that doesn't actually point at anything valid). Usually this happens because it formerly pointed to something that has moved or disappeared. Used as jargon in a generalization of its techspeak meaning; for example, a local phone number for a person who has since moved to the other coast is a dangling pointer. Compare {dead link}.

:dark-side hacker: /n./ A criminal or malicious hacker; a {cracker}. From George Lucas's Darth Vader, "seduced by the dark side of the Force". The implication that hackers form a sort of elite of technological Jedi Knights is intended. Oppose {samurai}.

:Datamation: /day`t*-may'sh*n/ /n./ A magazine that many hackers assume all {suit}s read. Used to question an unbelieved quote, as in "Did you read that in `Datamation?'" (But see below; this slur may be dated by the time you read this.) It used to publish something hackishly funny every once in a while, like the original paper on {COME FROM} in 1973, and Ed Post's "Real Programmers Don't Use Pascal" ten years later, but for a long time after that it was much more exclusively {suit}-oriented and boring. Following a change of editorship in 1994, Datamation is trying for more of the technical content and irreverent humor that marked its early days.

Datamation now has a WWW page at http://www.datamation.com worth visiting for its selection of computer humor, including "Real Programmers Don't Use Pascal" and the `Bastard Operator From Hell' stories by Simon Travaglia (see {BOFH}).

:DAU: /dow/ [German FidoNet] /n./ German acronym for D"ummster Anzunehmender User (stupidest imaginable user). From the engineering-slang GAU for Gr"osster Anzunehmender Unfall, worst assumable accident, esp. of a LNG tank farm plant or something with similarly disastrous consequences. In popular German, GAU is used only to refer to worst-case nuclear acidents such as a core meltdown. See {cretin}, {fool}, {loser} and {weasel}.

:day mode: /n./ See {phase} (sense 1). Used of people only.

:dd: /dee-dee/ /vt./ [Unix: from IBM {JCL}] Equivalent to {cat} or {BLT}. Originally the name of a Unix copy command with special options suitable for block-oriented devices; it was often used in heavy-handed system maintenance, as in "Let's `dd' the root partition onto a tape, then use the boot PROM to load it back on to a new disk". The Unix `dd(1)' was designed with a weird, distinctly non-Unixy keyword option syntax reminiscent of IBM System/360 JCL (which had an elaborate DD `Dataset Definition' specification for I/O devices); though the command filled a need, the interface design was clearly a prank. The jargon usage is now very rare outside Unix sites and now nearly obsolete even there, as `dd(1)' has been {deprecated} for a long time (though it has no exact replacement). The term has been displaced by {BLT} or simple English `copy'.

:DDT: /D-D-T/ /n./ 1. Generic term for a program that assists in debugging other programs by showing individual machine instructions in a readable symbolic form and letting the user change them. In this sense the term DDT is now archaic, having been widely displaced by `debugger' or names of individual programs like `adb', `sdb', `dbx', or `gdb'. 2. [ITS] Under MIT's fabled {{ITS}} operating system, DDT (running under the alias HACTRN, a six-letterism for `Hack Translator') was also used as the {shell} or top level command language used to execute other programs. 3. Any one of several specific DDTs (sense 1) supported on early {DEC} hardware. The DEC PDP-10 Reference Handbook (1969) contained a footnote on the first page of the documentation for DDT that illuminates the origin of the term:

Historical footnote: DDT was developed at MIT for the PDP-1 computer in 1961. At that time DDT stood for "DEC Debugging Tape". Since then, the idea of an on-line debugging program has propagated throughout the computer industry. DDT programs are now available for all DEC computers. Since media other than tape are now frequently used, the more descriptive name "Dynamic Debugging Technique" has been adopted, retaining the DDT abbreviation. Confusion between DDT-10 and another well known pesticide, dichloro-diphenyl-trichloroethane (C14-H9-Cl5) should be minimal since each attacks a different, and apparently mutually exclusive, class of bugs.

(The `tape' referred to was, incidentally, not magnetic but paper.) Sadly, this quotation was removed from later editions of the handbook after the {suit}s took over and DEC became much more `businesslike'.

The history above is known to many old-time hackers. But there's more: Peter Samson, compiler of the original {TMRC} lexicon, reports that he named `DDT' after a similar tool on the TX-0 computer, the direct ancestor of the PDP-1 built at MIT's Lincoln Lab in 1957. The debugger on that ground-breaking machine (the first transistorized computer) rejoiced in the name FLIT (FLexowriter Interrogation Tape).

:de-rezz: /dee-rez'/ [from `de-resolve' via the movie "Tron"] (also `derez') 1. /vi./ To disappear or dissolve; the image that goes with it is of an object breaking up into raster lines and static and then dissolving. Occasionally used of a person who seems to have suddenly `fuzzed out' mentally rather than physically. Usage: extremely silly, also rare. This verb was actually invented as *fictional* hacker jargon, and adopted in a spirit of irony by real hackers years after the fact. 2. /vt./ The Macintosh resource decompiler. On a Macintosh, many program structures (including the code itself) are managed in small segments of the program file known as `resources'; `Rez' and `DeRez' are a pair of utilities for compiling and decompiling resource files. Thus, decompiling a resource is `derezzing'. Usage: very common.

:dead: /adj./ 1. Non-functional; {down}; {crash}ed. Especially used of hardware. 2. At XEROX PARC, software that is working but not undergoing continued development and support. 3. Useless; inaccessible. Antonym: `live'. Compare {dead code}.

:dead code: /n./ Routines that can never be accessed because all calls to them have been removed, or code that cannot be reached because it is guarded by a control structure that provably must always transfer control somewhere else. The presence of dead code may reveal either logical errors due to alterations in the program or significant changes in the assumptions and environment of the program (see also {software rot}); a good compiler should report dead code so a maintainer can think about what it means. (Sometimes it simply means that an *extremely* defensive programmer has inserted {can't happen} tests which really can't happen -- yet.) Syn. {grunge}. See also {dead}, and {The Story of Mel, a Real Programmer}.

:dead link: /n./ [WWW] A World-Wide-Web URL that no longer points to the information it was written to reach. Usually this happens because the document has been moved or deleted. Lots of dead links make a WWW page frustrating and useless and are the #1 sign of poor page maintainance. Compare {dangling pointer}.

:DEADBEEF: /ded-beef/ /n./ The hexadecimal word-fill pattern for freshly allocated memory (decimal -21524111) under a number of IBM environments, including the RS/6000. Some modern debugging tools deliberately fill freed memory with this value as a way of converting {heisenbug}s into {Bohr bug}s. As in "Your program is DEADBEEF" (meaning gone, aborted, flushed from memory); if you start from an odd half-word boundary, of course, you have BEEFDEAD. See also the anecdote under {fool}.

:deadlock: /n./ 1. [techspeak] A situation wherein two or more processes are unable to proceed because each is waiting for one of the others to do something. A common example is a program communicating to a server, which may find itself waiting for output from the server before sending anything more to it, while the server is similarly waiting for more input from the controlling program before outputting anything. (It is reported that this particular flavor of deadlock is sometimes called a `starvation deadlock', though the term `starvation' is more properly used for situations where a program can never run simply because it never gets high enough priority. Another common flavor is `constipation', in which each process is trying to send stuff to the other but all buffers are full because nobody is reading anything.) See {deadly embrace}. 2. Also used of deadlock-like interactions between humans, as when two people meet in a narrow corridor, and each tries to be polite by moving aside to let the other pass, but they end up swaying from side to side without making any progress because they always move the same way at the same time.

:deadly embrace: /n./ Same as {deadlock}, though usually used only when exactly two processes are involved. This is the more popular term in Europe, while {deadlock} predominates in the United States.

:death code: /n./ A routine whose job is to set everything in the computer -- registers, memory, flags, everything -- to zero, including that portion of memory where it is running; its last act is to stomp on its own "store zero" instruction. Death code isn't very useful, but writing it is an interesting hacking challenge on architectures where the instruction set makes it possible, such as the PDP-8 (it has also been done on the DG Nova).

Perhaps the ultimate death code is on the TI 990 series, where all registers are actually in RAM, and the instruction "store immediate 0" has the opcode "0". The PC will immediately wrap around core as many times as it can until a user hits HALT. Any empty memory location is death code. Worse, the manufacturer recommended use of this instruction in startup code (which would be in ROM and therefore survive).

:Death Square: /n./ The corporate logo of Novell, the people who acquired USL after AT&T let go of it (Novell eventually sold the Unix group to SCO). Coined by analogy with {Death Star}, because many people believed Novell was bungling the lead in Unix systems exactly as AT&T did for many years.

:Death Star: /n./ [from the movie "Star Wars"] 1. The AT&T corporate logo, which appears on computers sold by AT&T and bears an uncanny resemblance to the Death Star in the movie. This usage is particularly common among partisans of {BSD} Unix, who tend to regard the AT&T versions as inferior and AT&T as a bad guy. Copies still circulate of a poster printed by Mt. Xinu showing a starscape with a space fighter labeled 4.2 BSD streaking away from a broken AT&T logo wreathed in flames. 2. AT&T's internal magazine, "Focus", uses `death star' to describe an incorrectly done AT&T logo in which the inner circle in the top left is dark instead of light -- a frequent result of dark-on-light logo images.

:DEC:: /dek/ /n./ Commonly used abbreviation for Digital Equipment Corporation, now deprecated by DEC itself in favor of "Digital". Before the {killer micro} revolution of the late 1980s, hackerdom was closely symbiotic with DEC's pioneering timesharing machines. The first of the group of cultures described by this lexicon nucleated around the PDP-1 (see {TMRC}). Subsequently, the PDP-6, {PDP-10}, {PDP-20}, PDP-11 and {VAX} were all foci of large and important hackerdoms, and DEC machines long dominated the ARPANET and Internet machine population. DEC was the technological leader of the minicomputer era (roughly 1967 to 1987), but its failure to embrace microcomputers and Unix early cost it heavily in profits and prestige after {silicon} got cheap. Nevertheless, the microprocessor design tradition owes a heavy debt to the PDP-11 instruction set, and every one of the major general-purpose microcomputer OSs so far (CP/M, MS-DOS, Unix, OS/2, Windows NT) was either genetically descended from a DEC OS, or incubated on DEC hardware, or both. Accordingly, DEC is still regarded with a certain wry affection even among many hackers too young to have grown up on DEC machines. The contrast with {IBM} is instructive.

[1996 update: DEC has gradually been reclaiming some of its old reputation among techies in the last five years. The success of the Alpha, an innovatively-designed and very high-performance {killer micro}, has helped a lot. So has DEC's newfound receptiveness to Unix and open systems in general. --ESR]

:dec: /dek/ /v./ Verbal (and only rarely written) shorthand for decrement, i.e. `decrease by one'. Especially used by assembly programmers, as many assembly languages have a `dec' mnemonic. Antonym: {inc}.

:DEC Wars: /n./ A 1983 {Usenet} posting by Alan Hastings and Steve Tarr spoofing the "Star Wars" movies in hackish terms. Some years later, ESR (disappointed by Hastings and Tarr's failure to exploit a great premise more thoroughly) posted a 3-times-longer complete rewrite called "Unix WARS"; the two are often confused.

:decay: /n.,vi/ [from nuclear physics] An automatic conversion which is applied to most array-valued expressions in {C}; they `decay into' pointer-valued expressions pointing to the array's first element. This term is borderline techspeak, but is not used in the official standard for the language.

:DEChead: /dek'hed/ /n./ 1. A {DEC} {field servoid}. Not flattering. 2. [from `deadhead'] A Grateful Dead fan working at DEC.

:deckle: /dek'l/ /n./ [from dec- and {nybble}; the original spelling seems to have been `decle'] Two {nickle}s; 10 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 {nybble} for other such terms.

:DED: /D-E-D/ /n./ Dark-Emitting Diode (that is, a burned-out LED). Compare {SED}, {LER}, {write-only memory}. In the early 1970s both Signetics and Texas instruments released DED spec sheets as {AFJ}s (suggested uses included "as a power-off indicator").

:deep hack mode: /n./ See {hack mode}.

:deep magic: /n./ [poss. from C. S. Lewis's "Narnia" books] An awesomely arcane technique central to a program or system, esp. one neither generally published nor available to hackers at large (compare {black art}); one that could only have been composed by a true {wizard}. Compiler optimization techniques and many aspects of {OS} design used to be {deep magic}; many techniques in cryptography, signal processing, graphics, and AI still are. Compare {heavy wizardry}. Esp. found in comments of the form "Deep magic begins here...". Compare {voodoo programming}.

:deep space: /n./ 1. Describes the notional location of any program that has gone {off the trolley}. Esp. used of programs that just sit there silently grinding long after either failure or some output is expected. "Uh oh. I should have gotten a prompt ten seconds ago. The program's in deep space somewhere." Compare {buzz}, {catatonic}, {hyperspace}. 2. The metaphorical location of a human so dazed and/or confused or caught up in some esoteric form of {bogosity} that he or she no longer responds coherently to normal communication. Compare {page out}.

:defenestration: /n./ [from the traditional Czechoslovakian method of assassinating prime ministers, via SF fandom] 1. Proper karmic retribution for an incorrigible punster. "Oh, ghod, that was *awful*!" "Quick! Defenestrate him!" 2. The act of exiting a window system in order to get better response time from a full-screen program. This comes from the dictionary meaning of `defenestrate', which is to throw something out a window. 3. The act of discarding something under the assumption that it will improve matters. "I don't have any disk space left." "Well, why don't you defenestrate that 100 megs worth of old core dumps?" 4. Under a GUI, the act of dragging something out of a window (onto the screen). "Next, defenestrate the MugWump icon." 5. [proposed] The requirement to support a command-line interface. "It has to run on a VT100." "Curses! I've been defenestrated!"

:defined as: /adj./ In the role of, usually in an organization-chart sense. "Pete is currently defined as bug prioritizer." Compare {logical}.

:dehose: /dee-hohz/ /vt./ To clear a {hosed} condition.

:delint: /dee-lint/ /v. obs./ To modify code to remove problems detected when {lint}ing. Confusingly, this process is also referred to as `linting' code. This term is no longer in general use because ANSI C compilers typically issue compile-time warnings almost as detailed as lint warnings.

:delta: /n./ 1. [techspeak] A quantitative change, especially a small or incremental one (this use is general in physics and engineering). "I just doubled the speed of my program!" "What was the delta on program size?" "About 30 percent." (He doubled the speed of his program, but increased its size by only 30 percent.) 2. [Unix] A {diff}, especially a {diff} stored under the set of version-control tools called SCCS (Source Code Control System) or RCS (Revision Control System). 3. /n./ A small quantity, but not as small as {epsilon}. The jargon usage of {delta} and {epsilon} stems from the traditional use of these letters in mathematics for very small numerical quantities, particularly in `epsilon-delta' proofs in limit theory (as in the differential calculus). The term {delta} is often used, once {epsilon} has been mentioned, to mean a quantity that is slightly bigger than {epsilon} but still very small. "The cost isn't epsilon, but it's delta" means that the cost isn't totally negligible, but it is nevertheless very small. Common constructions include `within delta of ---', `within epsilon of ---': that is, `close to' and `even closer to'.

:demented: /adj./ Yet another term of disgust used to describe a program. The connotation in this case is that the program works as designed, but the design is bad. Said, for example, of a program that generates large numbers of meaningless error messages, implying that it is on the brink of imminent collapse. Compare {wonky}, {bozotic}.

:demigod: /n./ A hacker with years of experience, a world-wide reputation, and a major role in the development of at least one design, tool, or game used by or known to more than half of the hacker community. To qualify as a genuine demigod, the person must recognizably identify with the hacker community and have helped shape it. Major demigods include Ken Thompson and Dennis Ritchie (co-inventors of {{Unix}} and {C}), Richard M. Stallman (inventor of {EMACS}), Linus Torvalds (inventor of Linux), and most recently James Gosling (inventor of Java). In their hearts of hearts, most hackers dream of someday becoming demigods themselves, and more than one major software project has been driven to completion by the author's veiled hopes of apotheosis. See also {net.god}, {true-hacker}.

:demo: /de'moh/ [short for `demonstration'] 1. /v./ To demonstrate a product or prototype. A far more effective way of inducing bugs to manifest than any number of {test} runs, especially when important people are watching. 2. /n./ The act of demoing. "I've gotta give a demo of the drool-proof interface; how does it work again?" 3. /n./ Esp. as `demo version', can refer either to an early, barely-functional version of a program which can be used for demonstration purposes as long as the operator uses *exactly* the right commands and skirts its numerous bugs, deficiencies, and unimplemented portions, or to a special version of a program (frequently with some features crippled) which is distributed at little or no cost to the user for enticement purposes.

:demo mode: /n./ 1. [Sun] The state of being {heads down} in order to finish code in time for a {demo}, usually due yesterday. 2. A mode in which video games sit by themselves running through a portion of the game, also known as `attract mode'. Some serious {app}s have a demo mode they use as a screen saver, or may go through a demo mode on startup (for example, the Microsoft Windows opening screen -- which lets you impress your neighbors without actually having to put up with {Microsloth Windows}).

:demon: /n./ 1. [MIT] A portion of a program that is not invoked explicitly, but that lies dormant waiting for some condition(s) to occur. See {daemon}. The distinction is that demons are usually processes within a program, while daemons are usually programs running on an operating system. 2. [outside MIT] Often used equivalently to {daemon} -- especially in the {{Unix}} world, where the latter spelling and pronunciation is considered mildly archaic.

Demons in sense 1 are particularly common in AI programs. For example, a knowledge-manipulation program might implement inference rules as demons. Whenever a new piece of knowledge was added, various demons would activate (which demons depends on the particular piece of data) and would create additional pieces of knowledge by applying their respective inference rules to the original piece. These new pieces could in turn activate more demons as the inferences filtered down through chains of logic. Meanwhile, the main program could continue with whatever its primary task was.

:demon dialer: /n./ A program which repeatedly calls the same telephone number. Demon dialing may be benign (as when a number of communications programs contend for legitimate access to a {BBS} line) or malign (that is, used as a prank or denial-of-service attack). This term dates from the {blue box} days of the 1970s and early 1980s and is now semi-obsolescent among {phreaker}s; see {war dialer} for its contemporary progeny.