The Jargon File, Version 4.2.2, 20 Aug 2000
Chapter 37
[Unix/C; common] 1. In source code, some non-obvious constant whose value is significant to the operation of a program and that is inserted inconspicuously in-line (hardcoded), rather than expanded in by a symbol set by a commented #define. Magic numbers in this sense are bad style. 2. A number that encodes critical information used in an algorithm in some opaque way. The classic examples of these are the numbers used in hash or CRC functions, or the coefficients in a linear congruential generator for pseudo-random numbers. This sense actually predates and was ancestral to the more commonsense 1. 3. Special data located at the beginning of a binary data file to indicate its type to a utility. Under Unix, the system and various applications programs (especially the linker) distinguish between types of executable file by looking for a magic number. Once upon a time, these magic numbers were PDP-11 branch instructions that skipped over header data to the start of executable code; 0407, for example, was octal for `branch 16 bytes relative'. Many other kinds of files now have magic numbers somewhere; some magic numbers are, in fact, strings, like the ! at the beginning of a Unix archive file or the %! leading PostScript files. Nowadays only a wizard knows the spells to create magic numbers. How do you choose a fresh magic number of your own? Simple -- you pick one at random. See? It's magic!
The magic number, on the other hand, is 7+/-2. See "The magical number seven, plus or minus two: some limits on our capacity for processing information" by George Miller, in the "Psychological Review" 63:81-97 (1956). This classic paper established the number of distinct items (such as numeric digits) that humans can hold in short-term memory. Among other things, this strongly influenced the interface design of the phone system.
Node:magic smoke, Next:mail storm, Previous:magic number, Up:= M =
magic smoke n.
A substance trapped inside IC packages that enables them to function (also called `blue smoke'; this is similar to the archaic `phlogiston' hypothesis about combustion). Its existence is demonstrated by what happens when a chip burns up -- the magic smoke gets let out, so it doesn't work any more. See smoke test, let the smoke out.
Usenetter Jay Maynard tells the following story: "Once, while hacking on a dedicated Z80 system, I was testing code by blowing EPROMs and plugging them in the system, then seeing what happened. One time, I plugged one in backwards. I only discovered that after I realized that Intel didn't put power-on lights under the quartz windows on the tops of their EPROMs -- the die was glowing white-hot. Amazingly, the EPROM worked fine after I erased it, filled it full of zeros, then erased it again. For all I know, it's still in service. Of course, this is because the magic smoke didn't get let out." Compare the original phrasing of Murphy's Law.
Node:mail storm, Next:mailbomb, Previous:magic smoke, Up:= M =
mail storm n.
[from broadcast storm, influenced by `maelstrom'] What often happens when a machine with an Internet connection and active users re-connects after extended downtime -- a flood of incoming mail that brings the machine to its knees. See also hairball.
Node:mailbomb, Next:mailing list, Previous:mail storm, Up:= M =
mailbomb
(also _mail bomb_) [Usenet] 1. v. To send, or urge others to send, massive amounts of email to a single system or person, esp. with intent to crash or spam the recipient's system. Sometimes done in retaliation for a perceived serious offense. Mailbombing is itself widely regarded as a serious offense -- it can disrupt email traffic or other facilities for innocent users on the victim's system, and in extreme cases, even at upstream sites. 2. n. An automatic procedure with a similar effect. 3. n. The mail sent. Compare letterbomb, nastygram, BLOB (sense 2), list-bomb.
Node:mailing list, Next:main loop, Previous:mailbomb, Up:= M =
mailing list n.
(often shortened in context to `list') 1. An email address that is an alias (or macro, though that word is never used in this connection) for many other email addresses. Some mailing lists are simple `reflectors', redirecting mail sent to them to the list of recipients. Others are filtered by humans or programs of varying degrees of sophistication; lists filtered by humans are said to be `moderated'. 2. The people who receive your email when you send it to such an address.
Mailing lists are one of the primary forms of hacker interaction, along with Usenet. They predate Usenet, having originated with the first UUCP and ARPANET connections. They are often used for private information-sharing on topics that would be too specialized for or inappropriate to public Usenet groups. Though some of these maintain almost purely technical content (such as the Internet Engineering Task Force mailing list), others (like the `sf-lovers' list maintained for many years by Saul Jaffe) are recreational, and many are purely social. Perhaps the most infamous of the social lists was the eccentric _bandykin_ distribution; its latter-day progeny, _lectroids_ and _tanstaafl_, still include a number of the oddest and most interesting people in hackerdom.
Mailing lists are easy to create and (unlike Usenet) don't tie up a significant amount of machine resources (until they get very large, at which point they can become interesting torture tests for mail software). Thus, they are often created temporarily by working groups, the members of which can then collaborate on a project without ever needing to meet face-to-face. Much of the material in this lexicon was criticized and polished on just such a mailing list (called `jargon-friends'), which included all the co-authors of Steele-1983.
Node:main loop, Next:mainframe, Previous:mailing list, Up:= M =
main loop n.
The top-level control flow construct in an input- or event-driven program, the one which receives and acts or dispatches on the program's input. See also driver.
Node:mainframe, Next:management, Previous:main loop, Up:= M =
mainframe n.
Term originally referring to the cabinet containing the central processor unit or `main frame' of a room-filling Stone Age batch machine. After the emergence of smaller `minicomputer' designs in the early 1970s, the traditional big iron machines were described as `mainframe computers' and eventually just as mainframes. The term carries the connotation of a machine designed for batch rather than interactive use, though possibly with an interactive timesharing operating system retrofitted onto it; it is especially used of machines built by IBM, Unisys, and the other great dinosaurs surviving from computing's Stone Age.
It has been common wisdom among hackers since the late 1980s that the mainframe architectural tradition is essentially dead (outside of the tiny market for number-crunching supercomputers (see cray)), having been swamped by the recent huge advances in IC technology and low-cost personal computing. The wave of failures, takeovers, and mergers among traditional mainframe makers in the early 1990s bore this out. The biggest mainframer of all, IBM, was compelled to re-invent itself as a huge systems-consulting house. (See dinosaurs mating and killer micro).
Node:management, Next:mandelbug, Previous:mainframe, Up:= M =
management n.
1. Corporate power elites distinguished primarily by their distance from actual productive work and their chronic failure to manage (see also suit). Spoken derisively, as in "Management decided that ...". 2. Mythically, a vast bureaucracy responsible for all the world's minor irritations. Hackers' satirical public notices are often signed `The Mgt'; this derives from the "Illuminatus" novels (see the Bibliography in Appendix C).
Node:mandelbug, Next:manged, Previous:management, Up:= M =
mandelbug /man'del-buhg/ n.
[from the Mandelbrot set] A bug whose underlying causes are so complex and obscure as to make its behavior appear chaotic or even non-deterministic. This term implies that the speaker thinks it is a Bohr bug, rather than a heisenbug. See also schroedinbug.
Node:manged, Next:mangle, Previous:mandelbug, Up:= M =
manged /mahnjd/ n.
[probably from the French `manger' or Italian `mangiare', to eat; perhaps influenced by English `mange', `mangy'] adj. Refers to anything that is mangled or damaged, usually beyond repair. "The disk was manged after the electrical storm." Compare mung.
Node:mangle, Next:mangled name, Previous:manged, Up:= M =
mangle vt.
1. Used similarly to mung or scribble, but more violent in its connotations; something that is mangled has been irreversibly and totally trashed. 2. To produce the mangled name corresponding to a C++ declaration.
Node:mangled name, Next:mangler, Previous:mangle, Up:= M =
mangled name n.
A name, appearing in a C++ object file, that is a coded representation of the object declaration as it appears in the source. Mangled names are used because C++ allows multiple objects to have the same name, as long as they are distinguishable in some other way, such as by having different parameter types. Thus, the internal name must have that additional information embedded in it, using the limited character set allowed by most linkers. For instance, one popular compiler encodes the standard library function declaration "memchr(const void*,int,unsigned int)" as "@memchr$qpxviui".
Node:mangler, Next:manularity, Previous:mangled name, Up:= M =
mangler n.
[DEC] A manager. Compare management. Note that system mangler is somewhat different in connotation.
Node:manularity, Next:marbles, Previous:mangler, Up:= M =
manularity /man`yoo-la'ri-tee/ n.
[prob. fr. techspeak `manual' + `granularity'] A notional measure of the manual labor required for some task, particularly one of the sort that automation is supposed to eliminate. "Composing English on paper has much higher manularity than using a text editor, especially in the revising stage." Hackers tend to consider manularity a symptom of primitive methods; in fact, a true hacker confronted with an apparent requirement to do a computing task by hand will inevitably seize the opportunity to build another tool (see toolsmith).
Node:marbles, Next:marginal, Previous:manularity, Up:= M =
marbles pl.n.
[from mainstream "lost all his/her marbles"] The minimum needed to build your way further up some hierarchy of tools or abstractions. After a bad system crash, you need to determine if the machine has enough marbles to come up on its own, or enough marbles to allow a rebuild from backups, or if you need to rebuild from scratch. "This compiler doesn't even have enough marbles to compile hello world."
Node:marginal, Next:Marginal Hacks, Previous:marbles, Up:= M =
marginal adj.
[common] 1. [techspeak] An extremely small change. "A marginal increase in core can decrease GC time drastically." In everyday terms, this means that it is a lot easier to clean off your desk if you have a spare place to put some of the junk while you sort through it. 2. Of little merit. "This proposed new feature seems rather marginal to me." 3. Of extremely small probability of winning. "The power supply was rather marginal anyway; no wonder it fried."
Node:Marginal Hacks, Next:marginally, Previous:marginal, Up:= M =
Marginal Hacks n.
Margaret Jacks Hall, a building into which the Stanford AI Lab was moved near the beginning of the 1980s (from the D. C. Power Lab).
Node:marginally, Next:marketroid, Previous:Marginal Hacks, Up:= M =
marginally adv.
Slightly. "The ravs here are only marginally better than at Small Eating Place." See epsilon.
Node:marketroid, Next:Mars, Previous:marginally, Up:= M =
marketroid /mar'k*-troyd/ n.
alt. `marketing slime', `marketeer', `marketing droid', `marketdroid'. A member of a company's marketing department, esp. one who promises users that the next version of a product will have features that are not actually scheduled for inclusion, are extremely difficult to implement, and/or are in violation of the laws of physics; and/or one who describes existing features (and misfeatures) in ebullient, buzzword-laden adspeak. Derogatory. Compare droid.
Node:Mars, Next:martian, Previous:marketroid, Up:= M =
Mars n.
A legendary tragic failure, the archetypal Hacker Dream Gone Wrong. Mars was the code name for a family of PDP-10 compatible computers built by Systems Concepts (now, The SC Group): the multi-processor SC-30M, the small uniprocessor SC-25M, and the never-built superprocessor SC-40M. These machines were marvels of engineering design; although not much slower than the unique Foonly F-1, they were physically smaller and consumed less power than the much slower DEC KS10 or Foonly F-2, F-3, or F-4 machines. They were also completely compatible with the DEC KL10, and ran all KL10 binaries (including the operating system) with no modifications at about 2-3 times faster than a KL10.
When DEC cancelled the Jupiter project in 1983, Systems Concepts should have made a bundle selling their machine into shops with a lot of software investment in PDP-10s, and in fact their spring 1984 announcement generated a great deal of excitement in the PDP-10 world. TOPS-10 was running on the Mars by the summer of 1984, and TOPS-20 by early fall. Unfortunately, the hackers running Systems Concepts were much better at designing machines than at mass producing or selling them; the company allowed itself to be sidetracked by a bout of perfectionism into continually improving the design, and lost credibility as delivery dates continued to slip. They also overpriced the product ridiculously; they believed they were competing with the KL10 and VAX 8600 and failed to reckon with the likes of Sun Microsystems and other hungry startups building workstations with power comparable to the KL10 at a fraction of the price. By the time SC shipped the first SC-30M to Stanford in late 1985, most customers had already made the traumatic decision to abandon the PDP-10, usually for VMS or Unix boxes. Most of the Mars computers built ended up being purchased by CompuServe.
This tale and the related saga of Foonly hold a lesson for hackers: if you want to play in the Real World, you need to learn Real World moves.
Node:martian, Next:massage, Previous:Mars, Up:= M =
martian n.
A packet sent on a TCP/IP network with a source address of the test loopback interface [127.0.0.1]. This means that it will come back labeled with a source address that is clearly not of this earth. "The domain server is getting lots of packets from Mars. Does that gateway have a martian filter?" Compare Christmas tree packet, Godzillagram.
Node:massage, Next:math-out, Previous:martian, Up:= M =
massage vt.
[common] Vague term used to describe `smooth' transformations of a data set into a different form, esp. transformations that do not lose information. Connotes less pain than munch or crunch. "He wrote a program that massages X bitmap files into GIF format." Compare slurp.
Node:math-out, Next:Matrix, Previous:massage, Up:= M =
math-out n.
[poss. from `white-out' (the blizzard variety)] A paper or presentation so encrusted with mathematical or other formal notation as to be incomprehensible. This may be a device for concealing the fact that it is actually content-free. See also numbers, social science number.
Node:Matrix, Next:maximum Maytag mode, Previous:math-out, Up:= M =
Matrix n.
[FidoNet] 1. What the Opus BBS software and sysops call FidoNet. 2. Fanciful term for a cyberspace expected to emerge from current networking experiments (see the network). The name of the rather good 1999 cypherpunk movie "The Matrix" played on this sense, which however had been established for years before. 3. The totality of present-day computer networks (popularized in this sense by John Quarterman; rare outside academic literature).
Node:maximum Maytag mode, Next:meatspace, Previous:Matrix, Up:= M =
maximum Maytag mode n.
What a washing machine or, by extension, any disk drive is in when it's being used so heavily that it's shaking like an old Maytag with an unbalanced load. If prolonged for any length of time, can lead to disks becoming walking drives. In 1999 it's been some years since hard disks were large enough to do this, but the same phenomenon has recently been reported with 24X CD-ROM drives.
Node:meatspace, Next:meatware, Previous:maximum Maytag mode, Up:= M =
meatspace /meet'spays/ n.
The physical world, where the meat lives - as opposed to cyberspace. Hackers are actually more willing to use this term than `cyberspace', because it's not speculative - we already have a running meatspace implementation (the universe). Compare RL.
Node:meatware, Next:meeces, Previous:meatspace, Up:= M =
meatware n.
Synonym for wetware. Less common.
Node:meeces, Next:meg, Previous:meatware, Up:= M =
meeces /mees'*z/ n.
[TMRC] Occasional furry visitors who are not urchins. [That is, mice. This may no longer be in live use; it clearly derives from the refrain of the early-1960s cartoon character Mr. Jinx: "I hate meeces to pieces!" -- ESR]
Node:meg, Next:mega-, Previous:meeces, Up:= M =
meg /meg/ n.
See quantifiers.
Node:mega-, Next:megapenny, Previous:meg, Up:= M =
mega- /me'g*/ pref.
[SI] See quantifiers.
Node:megapenny, Next:MEGO, Previous:mega-, Up:= M =
megapenny /meg'*-pen`ee/ n.
$10,000 (1 cent * 10^6). Used semi-humorously as a unit in comparing computer cost and performance figures.
Node:MEGO, Next:meltdown network, Previous:megapenny, Up:= M =
MEGO /me'goh/ or /mee'goh/
[`My Eyes Glaze Over', often `Mine Eyes Glazeth (sic) Over', attributed to the futurologist Herman Kahn] Also `MEGO factor'. 1. n. A handwave intended to confuse the listener and hopefully induce agreement because the listener does not want to admit to not understanding what is going on. MEGO is usually directed at senior management by engineers and contains a high proportion of TLAs. 2. excl. An appropriate response to MEGO tactics. 3. Among non-hackers, often refers not to behavior that causes the eyes to glaze, but to the eye-glazing reaction itself, which may be triggered by the mere threat of technical detail as effectively as by an actual excess of it.
Node:meltdown network, Next:meme, Previous:MEGO, Up:= M =
meltdown, network n.
See network meltdown.
Node:meme, Next:meme plague, Previous:meltdown network, Up:= M =
meme /meem/ n.
[coined by analogy with `gene', by Richard Dawkins] An idea considered as a replicator, esp. with the connotation that memes parasitize people into propagating them much as viruses do. Used esp. in the phrase `meme complex' denoting a group of mutually supporting memes that form an organized belief system, such as a religion. This lexicon is an (epidemiological) vector of the `hacker subculture' meme complex; each entry might be considered a meme. However, `meme' is often misused to mean `meme complex'. Use of the term connotes acceptance of the idea that in humans (and presumably other tool- and language-using sophonts) cultural evolution by selection of adaptive ideas has superseded biological evolution by selection of hereditary traits. Hackers find this idea congenial for tolerably obvious reasons.
Node:meme plague, Next:memetics, Previous:meme, Up:= M =
meme plague n.
The spread of a successful but pernicious meme, esp. one that parasitizes the victims into giving their all to propagate it. Astrology, BASIC, and the other guy's religion are often considered to be examples. This usage is given point by the historical fact that `joiner' ideologies like Naziism or various forms of millennarian Christianity have exhibited plague-like cycles of exponential growth followed by collapses to small reservoir populations.
Node:memetics, Next:memory farts, Previous:meme plague, Up:= M =
memetics /me-met'iks/ n.
[from meme] The study of memes. As of early 1999, this is still an extremely informal and speculative endeavor, though the first steps towards at least statistical rigor have been made by H. Keith Henson and others. Memetics is a popular topic for speculation among hackers, who like to see themselves as the architects of the new information ecologies in which memes live and replicate.
Node:memory farts, Next:memory leak, Previous:memetics, Up:= M =
memory farts n.
The flatulent sounds that some DOS box BIOSes (most notably AMI's) make when checking memory on bootup.
Node:memory leak, Next:memory smash, Previous:memory farts, Up:= M =
memory leak n.
An error in a program's dynamic-store allocation logic that causes it to fail to reclaim discarded memory, leading to eventual collapse due to memory exhaustion. Also (esp. at CMU) called core leak. These problems were severe on older machines with small, fixed-size address spaces, and special "leak detection" tools were commonly written to root them out. With the advent of virtual memory, it is unfortunately easier to be sloppy about wasting a bit of memory (although when you run out of memory on a VM machine, it means you've got a real leak!). See aliasing bug, fandango on core, smash the stack, precedence lossage, overrun screw, leaky heap, leak.
Node:memory smash, Next:menuitis, Previous:memory leak, Up:= M =
memory smash n.
[XEROX PARC] Writing through a pointer that doesn't point to what you think it does. This occasionally reduces your machine to a rubble of bits. Note that this is subtly different from (and more general than) related terms such as a memory leak or fandango on core because it doesn't imply an allocation error or overrun condition.
Node:menuitis, Next:mess-dos, Previous:memory smash, Up:= M =
menuitis /men`yoo-i:'tis/ n.
Notional disease suffered by software with an obsessively simple-minded menu interface and no escape. Hackers find this intensely irritating and much prefer the flexibility of command-line or language-style interfaces, especially those customizable via macros or a special-purpose language in which one can encode useful hacks. See user-obsequious, drool-proof paper, WIMP environment, for the rest of us.
Node:mess-dos, Next:meta, Previous:menuitis, Up:= M =
mess-dos /mes-dos/ n.
[semi-obsolescent now that DOS is] Derisory term for MS-DOS. Often followed by the ritual banishing "Just say No!" See MS-DOS. Most hackers (even many MS-DOS hackers) loathed MS-DOS for its single-tasking nature, its limits on application size, its nasty primitive interface, and its ties to IBMness and Microsoftness (see fear and loathing). Also `mess-loss', `messy-dos', `mess-dog', `mess-dross', `mush-dos', and various combinations thereof. In Ireland and the U.K. it is even sometimes called `Domestos' after a brand of toilet cleanser.
Node:meta, Next:meta bit, Previous:mess-dos, Up:= M =
meta /me't*/ or /may't*/ or (Commonwealth) /mee't*/ adj.,pref.
[from analytic philosophy] One level of description up. A metasyntactic variable is a variable in notation used to describe syntax, and meta-language is language used to describe language. This is difficult to explain briefly, but much hacker humor turns on deliberate confusion between meta-levels. See hacker humor.
Node:meta bit, Next:metasyntactic variable, Previous:meta, Up:= M =
meta bit n.
The top bit of an 8-bit character, which is on in character values 128-255. Also called high bit, alt bit, or (rarely) hobbit. Some terminals and consoles (see space-cadet keyboard) have a META shift key. Others (including, mirabile dictu, keyboards on IBM PC-class machines) have an ALT key. See also bucky bits.
Historical note: although in modern usage shaped by a universe of 8-bit bytes the meta bit is invariably hex 80 (octal 0200), things were different on earlier machines with 36-bit words and 9-bit bytes. The MIT and Stanford keyboards (see space-cadet keyboard) generated hex 100 (octal 400) from their meta keys.
Node:metasyntactic variable, Next:MFTL, Previous:meta bit, Up:= M =
metasyntactic variable n.