The term `macro' originated in early assemblers, which encouraged
the use of macros as a structuring and information-hiding device.
During the early 1970s, macro assemblers became ubiquitous, and
sometimes quite as powerful and expensive as HLLs, only to fall
from favor as improving compiler technology marginalized assembler
programming (see languages of choice). Nowadays the term is
most often used in connection with the C preprocessor, LISP, or one
of several special-purpose languages built around a macro-expansion
facility (such as TeX or UNIX's [nt]roff suite).
Indeed, the meaning has drifted enough that the collective
`macros' is now sometimes used for code in any special-purpose
application control language (whether or not the language is
actually translated by text expansion), and for macro-like entities
such as the `keyboard macros' supported in some text editors
(and PC TSR or Macintosh INIT/CDEV keyboard enhancers).
For more about hackish `magic', see A Story About `Magic'
(in Appendix A).
*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.
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}.
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.
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. As of 1993, corporate
America is just beginning to figure this out --- the wave of
failures, takeovers, and mergers among traditional mainframe makers
have certainly provided sufficient omens (see [dinosaurs
mating}).
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.
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.
To some extent, the list of one's preferred metasyntactic variables
is a cultural signature. They occur both in series (used for
related groups of variables or objects) and as singletons. Here
are a few common signatures:
foo, bar, baz, quux, quuux, quuuux...:
MIT/Stanford usage, now found everywhere (thanks largely to early
versions of this lexicon!). At MIT (but not at Stanford), baz
dropped out of use for a while in the 1970s and '80s. A common
recent mutation of this sequence inserts qux before
quux.
bazola, ztesch:
Stanford (from mid-'70s on).
foo, bar, thud, grunt:
This series was popular at CMU. Other CMU-associated variables
include gorp.
foo, bar, fum:
This series is reported to be common at XEROX PARC.
fred, barney:
See the entry for fred. These tend to be Britishisms.
toto, titi, tata, tutu:
Standard series of metasyntactic variables among francophones.
corge, grault, flarp:
Popular at Rutgers University and among GOSMACS hackers.
zxc, spqr, [wombat]:
Cambridge University (England).
shme
Berkeley, GeoWorks, Ingres. Pronounced /shme/ with a short /e/.
foo, bar, zot
Helsinki University of Technology, Finland.
blarg, wibble
New Zealand
Of all these, only `foo' and `bar' are universal (and baz
nearly so). The compounds foobar and `foobaz' also enjoy
very wide currency.
Some jargon terms are also used as metasyntactic names; barf
and mumble, for example. See also "Commonwealth Hackish"
for discussion of numerous metasyntactic variables found in Great
Britain and the Commonwealth.
The 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, Doug McIlroy once 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 FORTRAN program
acceptable as input to the FORTRAN compiler?" In other words, can
you write programs that write programs? (See toolsmith.)
Alarming numbers of (language, OS) pairs fail this test,
particularly when the language is FORTRAN; aficionados are 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 to have worked only under modern systems
which lack OS-supported and -imposed "file types".)
Multiple uses of the millifortnight (about 20 minutes) and
nanofortnight have also been reported.
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 trade-offs were 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 six
characters, but the original implementors wanted to save directory
space and we're stuck with it for now."
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 widely-used 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).
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
that 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, modeful interfaces are
generally considered losing but survive in quite a few
widely used tools built in less enlightened times.
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).
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 and are sometimes generically called
BartleMUDs. 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 bonk/oif, FOD, link-dead,
mudhead, talk mode.
To the anthropologically literate, this term may recall the
Zuni/Hopi legend of the mudheads or `koyemshi', mythical
half-formed children of an unnatural union. Figures representing
them act as clowns in Zuni sacred ceremonies.
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 original TMRC lexicon) thinks it may originally
have been onomatopoeic for the sound of a relay spring (contact)
being twanged. However, it is known that during the World Wars,
`mung' was army slang for the ersatz creamed chipped beef better
known as `SOS'.
This term is often confused with mung and may derive from it,
or possibly vice-versa.
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!