The Hacker's Dictionary A Guide to the World of Computer Wizards Guy L. Steele Jr. Donald R. Woods Raphael A. Finkel Mark R. Crispin Richard M. Stallman Geoffrey S. Goodfellow The Menu There are many dictionaries of computer buzzwords and jargon. This book is different. It is a dictionary of slang. Jargon consists of technical words that are needed for very precise communication in a specialized subject. Economists, truck drivers, chemists, and steelworkers all use a specialized vocabulary to convey technical meanings. Slang, on the other hand, is used for fun, for human communication rather than technical communication. Slang is often derived from jargon. When a bit of technical jargon is used in an extended or metaphorical way, it becomes slang. Many "computer" words are making their way into everyday use. Thanks to the proliferation of home computers, many people have heard of bytes, RAM, memory banks, terminals, processors, and floppy disks. You won't find those words defined here. This, we warn you, is supposed to be a fun book. These are the words used for fun by the people who use computers for fun: the hackers. Here you will find almost nothing of those awful computer languages such as BASIC that can be written but not spoken. This book is, in fact, a revised version of the famous "jargon file", a dictionary of slang terms cooperatively maintained by hackers at advanced computer laboratories at Stanford University, The Mas- sachusetts Institute of Technology (MIT), Carnegie-Mellon University (CMU), and other places such as Yale University, Princeton University, and Worcester Polytechnic Institute (WPI). Some of these words are fairly new; others have been used for over two decades. Some arose in the computer laboratory; others were borrowed from other fields. Our gang of six contributed to this file over the years, and to this revision for publication. (Steele coordinated the effort and did most of the polish work. Occasional first-person references in the main text are his unless otherwise identified). Many other hackers around the country, too numerous to list, made helpful suggestions; to them we are grateful. For this edition, pronunciation keys have been added for all those words that are not ordinary English words, and many cross- -references, examples, and explanatory notes have been added. We have tried to keep technical details to a minimum. A word is included only if it is amusing or unusual, or if it peculiarly illuminates some aspect if hacker culture. We hope you enjoy this book. Confessions of a Happy Hacker By Guy Steele I was a teen-age hacker. When I was about twelve or so, a lab secretary at MIT who knew I was "interested in science" (it might be more accurate to say "a latent nerd") arranged for one of the computer hackers there to give me an informal tour. I remember stumbling around racks full of circuit boards and wires, a screeching cabinet that printed a full page every six seconds, and rows of blinking lights: the computer room was crammed full of equipment with no obvious organization. One set of gray cabinets had some trophies and plaques sitting on it: this was the PDP-6 computer that, running a program called MacHack, consistently won prizes by outwitting human players in chess tournaments. This PDP-6 was also versatile: it had two speakers and a stereo amplifier sitting on top of it. The hacker typed a couple of commands on a keyboard, and the PDP-6 burst into a Bach Brandenburg Concerto (no. 6, as I recall). One part of that tour stands out most clearly in my mind. I was told to sit down in front of a large, round, glass screen, and given a box that had some buttons and a stick on the top. My hacker guide typed a command on the keyboard, and suddenly, green and purple space ships appeared on the screen! The purple one started shooting little red dots at the green one, which was soon obliterated in a multicolored shower of sparkles. The green ship was "mine", and the hacker had expertly shot it down. This was a color version of Space War, one of the very first video games. Remember that this was years before "Apple" and "TRS-80" had become household words. Back then computers were still rather mys- terious, hidden away in giant corporations and university laboratories. Playing Space War was fun, but I learned nothing of programming then. I had the true fascination of computers revealed to me in November, 1968, when a chum slipped me the news that our school (Boston Latin School, of Boston, Massachusetts) had an IBM computer locked up in the basement. I was dubious. I had earlier narrowly avoided buying from a senior a ticket to the fourth-floor swimming pool (Boston Latin has only three stories, and no swimming pool at all), and assumed this was another scam. So of course I laughed in his face. When he persisted, I checked it out. Sure enough, in a locked basement room was and IBM 1130 computer. If you want all the specs: 4096 words of memory, 16 bits per word, a 15-character-per-second Selectric ("golf ball") printer, and a card reader (model 1442) that could read 300 cards per minute. Yes, this was back in the days of punched cards. Personal computers were completely unheard-of then. Nominally the computer was for the training of juniors and seniors, but I cajoled a math teacher into lending me a computer manual and spent all of Thanksgiving vacation reading it. I was hooked. No doubt about it. I was born to be a hacker. Fortunately, I didn't let my studies suffer (as many young hackers do), but every spare moment I thought about the computer. It was spellbinding. I wanted to know all about it: what it could and couldn't do, how its programs worked, what its circuits looked like. During study halls, lunch, and after school, I could be found in the computer room, punching programs onto cards and running them through the computer. I was not the only one. Very soon there was a small community of IBM 1130 hackers. We helped to maintain the computer and we tutored our less fanatical fellow students in the ways of computing. What could possibly compensate us for these chores? Free rein in the computer room. Soon after that, I developed into one of the unauthorized but tolerated "random people" hanging around the MIT Artificial Intel- ligence Laboratory much as a groupie is to a rock band: not really doing useful work, but emotionally involved and contributing to the ambiance, if nothing else. After a while, I was haunting the computer rooms at off-hours, talking to people but more often looking for chances to run programs. Sometimes "randoms" such as I were quite helpful, operating the computers for no pay and giving advice to college students who were having trouble. Sometimes, however, we were quite a nuisance. Once, I was ejected from the Artificial Intelligence Laboratory by none other than Richard Greenblatt, the very famous hacker who wrote the MacHack program with which the PDP-6 had won its chess trophies. He threw me out because I was monopolizing the one terminal that produced letter-quality copy. (I was using the computer to write "personalized" form letters to various computer manufacturers, asking for machine manuals.) I deserved to be tossed out, and gave him no argument. But when you're hooked, you're hooked, and I was un- daunted: within a week or two I was back again. Eventually I got a part-time job as a programmer at MIT's Project MAC computer laboratory. There I became a full-fledged member of the hacker community, and ultimately an MIT graduate student. I was never a lone hacker, but one of many. Despite stories you may have read about anti-social nerds glued permanently to display screens, totally addicted to the computer, hackers have (human) friends too. Often these friendships are formed and maintained through the computer. At one time, the MIT Artificial Intelligence Laboratory had one common telephone number, extension 6765, and a public-address system. The phone was answered "six-seven-six-five", or sometimes "Fibonacci of twenty", since, as mathematician know, 6765 is the twentieth Fibonacci number. Through this number and the public-address system, it was easy to cal and reach anyone and everyone. In particular, one could easily ask, "Who wants to go for Chinese food?" and get ten or fifteen people for an expedition. "Unfortunately", says MIT hacker Richard Stallman, "most of the people and terminals have moved to other floors, where the 6765 number does not reach. The ninth floor, the lab's ancient heart, is becoming totally filled with machines, leaving no room for people, who must move to other floors. Now I can't even call up and find out if anyone is hungry." Stallman can, however, still call us all up using the computer. Through timesharing (where many people use one computer) and networking (where many computers are connected together), the computer makes possible a new form of human communication, better than the telephone and the postal system put together. You can send a message by elec- tronic mail and get a reply within two minutes, or you can just link two terminals together and have a conversation. MIT has no monopoly on hackers. In the 1960s and 1970s hackers congregated around any computer center that made computer time vailable for "play". (Some of this play turned out to be very important work, but hacking is done mostly for fun, for its own sake, for the pure joy of it). Because universities tend to be more flexible than corporations in this regard, most hackers' dens arose in uni- versity laboratories. While some of these hackers were unauthorized "random people" like me, many hackers were paid employees who chose to stay after hours and work on their own projects -- or even continue their usual work -- purely for pleasure. The hacker community became still larger and more closely knit in the early 1970s, when the government funded a project to see whether it would be useful to let the computers at dozens of universities and other sites "talk" to each other. The project succeeded and produced the famous ARPANET, a network that now links hundreds of computers across the country. Through the ARPANET, researchers can share programs, trade research results, and send electronic mail -- both to individuals and to massive mailing lists. Best of all, it allowed once-isolated hackers to talk to each other via computer. The result is a nation-wide hackers' community, now one decade old. In some ways the community serves as a geographically dispersed think tank. When Rubik's Cube became popular, one hacker created an electronic mailing list of "Cube hackers". (Such mailing lists are routinely created for new topics of interest). The network buzzed, and continues to buzz, with exposition of some very deep mathematics in efforts to solve various puzzles about the Cube. What, for example, is the smallest number of twists required to solve the Cube? This question is still unanswered; but some progress has been make, and hackers across the country continue to discuss and to fret over its solution via computer. Hackers do more than talk, however; they hack. Although no two people are alike, there are certain traits that are typical of hacker. The cardinal qualification is that hackers like to use computers. The word CYCLE, as used by hackers, refers to the fundamental unit of work done by a computer, so we say that hackers crave cycles. The more cycles available, the more a hacker gets out of the computer. As a direct result of this craving, a hacker will frequently wake up at dinner time and go to bed after breakfast, or perhaps get up at noon and sack out a 4:00 A.M. (See the terms PHASE and NIGHT MODE for more information on hackers' sleeping schedules.) Hackers do this because the computer has its own circadian rhythms to which hackers willingly adjust themselves. These rhythms in turn grow out of the heavier demands for the computer during the day than at night. Hackers will therefore work late into the evening or night, when other computer users aren't competing for cycles. It's more fun, after all, to use the computer when it's responding at split-second speeds. Most such hackers are single. Hackers do get married, but the res- ponsibilities of family life don't always mix well with typical hacker life style. When I was at MIT, I would sometimes work nights for a month at a time. Now that I am married, I find that I can hack only in spurts, one or two days a week. This book, by the way, is a hack of sorts. The manuscript was prepared using a computer, and nearly all of the work was done after midnight. The truly dedicated hacker does little else but eat, sleep, and hack. Of these activities, eating is the only social activity, so rather than eat at home alone, a hacker will usually go out to eat with his hacker friends. While hackers may sleep according to different schedules, most arrange to be awake and at the laboratory around 6:00 P.M., at which time one or more dinner expeditions usually head out. For some reason, Chinese food is particularly favored by most hackers. You will find several references to Chinese Szechuan and Hunan cuisine in this dictionary. Other spicy cuisines, such as Mexican and Indian, are also enjoyed by hackers, but Chinese is the definite favorite. Many shorthand expressions have developed for discussing food and local restaurants. At MIT one might hear: "Foodp?"; "Smallp?"; "T."; "T!" Translated, this means roughly: "Do you want to eat now?" "Maybe; what do would you think of going to Joyce Chen's Small Eating Place?" "Okay by me." "Then I'll join you!" When you walk up to the terminal of a time-shared computer, the first thing you must do is to "log in", that is, tell the computer who you are. To do this, you type your "computer i.d." or "login name". Different computers have different ideas of what a login name should be. Some use numbers or other codes (see the entry for PPN), some use your last name, some use your initials. Many computers limit login names to either three or six characters, so full names or last names can't be used in general. As a result everyone acquires a login name, which you need to know to communicate with other hacker via computer. A login name serves in much the same way as a CB "handle". I have friends whom I know only by login name; I have no idea what their real names are. Once, at a wedding, I ran into a good hacker friend who was also a guest there. I recalled his login name instantly, but was embarrassed that I couldn't immediately remember his real name in order to introduce him to a third person. It was SWAPPED OUT. Login names are often used as nicknames, pronounces if possible and spelled if necessary. My wife and I met at MIT, and she still calls me "Gliss", because my login name was GLS. "Guy" sounds very weird to her. Some hackers (including Richard Stallman) actually prefer to be called by their login name. Because of the design and use of computers depend on other branches of science, a hacker has to have some knowledge of ma- thematics, physics, electronics, and other disciplines. Hackers typically have many other interests as well: science fiction, music, and chess are particularly popular. The common them, however, is the love of the computer. Hackers discuss science fiction through computerized mailing lists. A hacker is less likely to listen to music than to program a computer to play music. A hacker who can play only a middling game of chess can write a program that wins chess tournaments. Such are the compensations of a life at the keyboard. Happy hacking! A Hackish Note on How to Use This Book By Raphael Finkel and Don Woods While hackers necessarily design and use unspeakable languages to control computers, they also have an unusual spoken language. Just as strange language had first attracted many of us to computers, we were struck by the queer vocabulary hackers would use to describe not only computer-related things but the wide world as well. Finkel decided to build a lexicon of the strange words and expressions that set this community apart, and the rest of us added to it over the years. A lot of our slang can be figured out from context. Don Woods once told a waitress, "I think we're ready to go, MODULO paying the check". And there's the time he asked a flight attendant to "please SNARF me a magazine". Neither of them batted an eye. It is the most commonly used jargon words -- the ones loaded with subtle connotations accumulated over the years -- that are the hardest to define. This book is arranged as a dictionary, and you may skip around reading individual definitions if you please. However, definitions occurring later in the book purposely build on earlier ones, and we think you will get more fun out of it if you read the book straight through in alphabetical order. We want to warn the reader that not all the expressions you will find here are in common use. Many are regional; some are obsolete. Some are used every day, and others are heard only occasionally. To give you an idea, here is a list of out favorite and perhaps most frequently used words: BAR BOGOSITY CRUFTY BARF BOGUS FEATURE BAZ BUG FLAME BELLS AND WHISTLES CANONICAL FLAVOR FLUSH LOSER PHASE OF THE MOON FOO MAGIC RANDOM FOOBAR MOBY THE REAL WORLD FROB MODULO SNARF HACK MUMBLE VANILLA KLUDGE PHASE WIZARD By and large, computer people have an enormous range of in- tellectual interests; you will see this fact reflected in the lexicon. While they use slang for fun, most computer people are highly literate, highly articulate, and sticklers for grammar. Don't expect to impress people by overusing the words you find here. They are the spice, not the bread and butter, of everyday conversation. Grokking Hacker Grammar For the most part, hackerese fits within the framework of ordinary English speech. There are but a few rules, however, that are unusual in everyday English but are very commonly used in hackerese. (These extra rules of grammar reflect the fact that hackers enjoy playing with language. Most are quite aware of when they are breaking the rules of standard English). Verb doubling A standard construction in English is to double a verb and use it as an exclamation, such as "bang, bang!" or "quack, quack!". Most of these are names for noises. Hackers also double verbs as a concise, sometimes sarcastic, comment on what the implied subject does. Also, a doubled verb is often used to terminate a conversation -- in the process, remarking on the current state of affairs or what the speaker intends to do next. Verbs frequently doubled include WIN, HACK, FLAME, BARF, and CHOMP. Typical examples of usage: "The disk heads just crashed. Lose, lose." "Mostly he just talked about his latest crock. Flame, flame." "I think I'll go fix that bug now. Hack, hack!" Standard doublings with subtle connotations are listed individually in the lexicon. Sound-alike Slang In the manner of cockney rhyming slang, hackers will often make rhymes or puns in order to convert an ordinary word of phrase into something more interesting. It is particularly FLAVORFUL if the phrase is bent so as to include some other slang word; thus, the computer hobbyist magazine Dr. Dobb's Journal is almost always referred to among hackers as Dr. Frob's Journal. Terms of this kind in fairly wide use include names for newspapers: Boston Herald American becomes Horrid (or Harried) American. Boston Globe becomes Boston Glob. San Francisco Chronicle becomes the Crocknicle. New York Times becomes New York Slime Other standard terms include: "For historical reasons" becomes "for hysterical raisins" "Margaret Hacks Hall" (a building at Stanford) becomes "Marginal Hacks Hall". "Government property -- do not duplicate" (seen on keys at MIT) is usually quoted as "Government duplicity -- do not propagate" The -P Convention This rule is unique, used by no one but hackers. A word or phrase is turned onto a yes/no question by appending the letter P, which is pronounced as a separate syllable when spoken. This rule is derived from a convention of LISP programming language, where the letter P at the end of a name denotes a "predicate" -- that is, a function that returns "true" or "false" as its result. For example, the question "Foodp?" (pronounced "food'pee", with the voice rising as for any question) means "Do you want to eat now?" The question "Colleen's-p?" is more specific: "Do you want to go eat at Colleen's Chinese cuisine (a favorite restaurant near MIT)?" "Lose-p?" means "Are you LOSING?" or "Is it LOSING?". And so on. As a special case, the question "State-of-the-world-p?" means "What's going on?" or "What are you doing (or about to do)?" The -P convention is used for this even though it isn't a yes/no question. A typical answer might be "The SYSTEM just CRASHED" or "I'm about to GRONK OUT". If the responder is feeling silly or obstinate, however, he will insist on interpreting it as a yes/no question after all, and respond with "Yes, the world has a state." The -P convention is often applied to new words at the spur of the moment. The best of these is a GOSPERISM (that is, invented by R. William Gosper). When we were at a Chinese restaurant, he wanted to know whether someone would like to share with him a two-person-sized bowl of soup. His inquiry was "Split-p soup?" and everyone instantly knew what he meant. (After all, split pea soup was not on the menu). Overgeneralisation Hackers love to take advantage of the inconsistencies of English by extending a general rule to cases where it doesn't apply. Children routinely do this when they say "teached" for "taught" or "He goed there" for "He went there". Hackers do this quite intentionally for more complicated words. One example: "Generous" becomes "generosity". "Porous" becomes "porosity". "Curious" becomes "curiosity". Therefore: "Mysterious" becomes "mysteriosity". "Obvious" becomes "obviosity". "Dubious" becomes "dubiosity". Less clearly: "Bogus" becomes "bogosity". And, perhaps: "Ferrous" becomes "ferocity"! Other examples: winnitude, disustitude, hackitude, hackification. Spoken Inarticulations Words such a "mumble", "sigh", and "groan" are spoken in places where their referent might more naturally be used. It has been suggested that this usage derives from the impossibility of re- presenting such noises in conversation by computer (see COM MODE); one gets so used to typing "Sigh!" to indicate a sigh that one soon develops the vocal habit of saying the word instead of actually sighing. Another expression sometimes heard is "complain!" (meaning not "You, complain!" but "I have a complaint!") How to Make Hacker Noises Many of the words in this dictionary are ordinary English words that have acquired new meanings. Some appear to be English words but are pronounced differently, and many are new words. To keep things simple, we have included pronunciations only in the unusual cases. If no pronunciation is given for a word, it should be pronounced as an ordinary English word. Also for simplicity, we do not use the complicated alphabets and pronunciation marks used in most dictionaries. These alphabets, such as the International Phonetic Alphabet, allow a very precise description of pronunciation but are hard to read if you're not familiar with them. We use the following simplified system: Syllables are separated by hyphens, except that an apostrophe follows an accented syllable. Consonants are pronounced as they usually are in English. The letter g is always hard, as in "got" rather than in "giant"; ch is always soft, as in "child" rather than "chemist". The letter s is always as in "pass", never a z sound as in "has"; but to prevent confusion, ss is sometimes used at the end of a syllable to emphasize this. Other consonants are also occasionally doubled for the same reason. The letter h always contains the leading d sound as used twice in "judge". Vowel sounds are represented as shown in the following table: a back, that ay bake, rain ah cot, father aw flaw, caught e less, men ee easy, ski i trip, hit ie life, sky ow out, how oh flow, sew oy boy, coin uh but, some u put, foot oo loot, through y yet yoo few A colon -- ":" -- is used for the "schwa" sound that is often written as an upside-down e. For example, the pronunciation of "kitten" would be kit':n, and of "magical" would be maj'i-k:l. Some Overflow in PDL Various abbreviations are used throughout these definitions. Most refer to computer hardware and software. For example, one of the favorite computer languages in our hacker community is LISP. The two poles of the hacker's network that compiled this dictionary are the artificial intelligence laboratories at Stanford and MIT, and LISP has always been one language of choice for artificial intelligence research. A particular computer, the Digital Equipment Corporation (DEC) PDP-6, and its successors (the PDP-10 and DECSYSTEM-20) have until recently been the computers of choice for running LISP. The consequence is that technical words from the LISP language and the PDP-10 computer will occasionally appear in this dictionary. The EMACS text editor, also referred to, was one of the first "display editors" to be widely distributed. It is used as a standard against which new text editors for personal computers are measured. We have tried to keep such words to a minimum throughout. AOS (owss [East coast], ay'ahss [West coast]) verb. 1. To add one to a number. Example: "Every time the computer finds a bad file it aoses the bad-file counter". 2. More generally, to increase the amount of something. Example: "Aos the campfire" means "Add more wood to the campfire". Silly. Antonym: SOS This word is the name of a PDP-10 instruction that takes any memory location in the computer and adds one to it. AOS means "Add One and do not Skip". Why, you may ask, does the S stand for "Do not Skip" rather than "Skip"? Ah, here is a beloved piece of PDP-10 folklore. There are eight such instructions: AOSE adds One and then Skips the next instruction if the result is Equal to zero; AOSG adds One and then Skips if the result is Greater than zero; AOSN adds One and then Skips if the result is Not zero; AOSA adds One and then Skips Always; and so on. Just plain AOS doesn't say when to skip, so it never skips. For similar reasons, AOJ means "Add One and do not Jump". Even more bizarre, SKIP means "Do not SKIP"! If you want to skip the next instruction, you must say "SKIPA". Likewise, JUMP means "Do not JUMP". ARG (ahrg) noun. An argument, in the mathematical sense only: a quantity accepted by a function or procedure. Example: "The sine function takes one arg, but the arc-tangent function can take either one or two args". This is an abbreviation that has become a new word in its own right, just as "telephone" and "pianoforte" have become "phone" and "piano". Arguments to mathematical functions and computational procedures are discussed so frequently by hackers that this ab- breviation saves a lot of time. AUTOMAGICALLY (aw'toh-maj'i-k:l-lee, aw'toh-maj'i-klee) adverb. Automatically, but in a way which, for some reason (typically because it is too complicated, or too ugly, or perhaps even too trivial), the speaker doesn't feel like explaining. Example: "File that have a name ending in 'TMP' are automagically deleted when you log out". (This means "When you say good-bye to the computer, files with names ending in 'TMP' are deleted. How this happens is complicated and I don't want to get into it just now. Trust me, it works.") See MAGIC BAGBITER (bag'bie-t:r) noun. 1. Something, such as a program or a computer, that fails to work or that works in a remarkably clumsy manner. Example: "This text editor won't let me make a file with a line longer than eighty characters! What a bagbiter!" 2. A person who has caused you some trouble, inadvertently or otherwise, typically by failing to program the computer properly. Synonyms: LOSER, CRETIN, CHOMPER. BAGBITING adjective. Having the quality of a bagbiter. "This bagbiting system won't let me compute the greatest common divisor of two negative numbers." Synonyms: LOSING, CRETINOUS, BLETCHEROUS, BARFUCIOUS, CHOMPING. BITE THE BAG verb. To fail in some manner. Example: "The computer keeps CRASHING every five minutes." "Yes, the disk controller is really biting the bag." The original meaning of this term was almost un- doubtedly obscene, probably referring to the scrotum. In its current usage it has become almost completely sanitized. BANG noun. The character "!" (exclamation point). Synonyms: EXCL, SHRIEK. See CHARACTERS. This term is more popular at CMU than at MIT or Stanford. It is used to describe the character "!" itself rather than to replace it. For example, one would not say, "Congratulations bang." On the other hand, if I wanted you to write "FOO!" -- those exact four characters, on a piece of paper -- I would tell you, "Write eff, oh, oh, bang." BAR The second metasyntactic variable, after FOO. If a hacker needs to invent exactly two names for things, he almost always picks the names "foo" and "bar". Example: "Suppose we have two functions, say, foo and bar. Now suppose foo calls bar..." See FOO, FOOBAR. BARF 1. interjection. Term of disgust or frustration. See BLETCH. 2. verb. To say "Barf!" or a similar term of disgust (because one is annoyed or offended). 3. To fail to work because of unacceptable input; sometimes, to print an error message. Examples: "The division operation barfs if you try to divide by zero." (Division by zero fails in some unspecified spectacular way) "The text editor barfs if you try to read in a new file before writing out the old one." BARFULOUS, BARFUCIOUS adjective. So ugly or offensive as to make someone barf. These meanings are derived form the common slang meaning of "barf", namely, "to vomit". BAZ (baz) 1. The third metasyntactic variable, after FOO and BAR. 2. interjection. Term of mild annoyance. In this usage the pro- nunciation is often drawn out for two or three seconds, sometimes sounding like the bleating of a sheep: "Baaaaaaaaaaz!" BELLS AND WHISTLES noun. Unnecessary (but often useful, convenient, or amusing) features of a program or other object. Example: "Now that we've got the basic program working, let's go back and add some bells and whistles." On an automobile, things like power windows and quadrophonic sound would be bells and whistles. This term is widely used, and not just in the hacker community. To understand it, think of a plain box that does a job well but is awfully boring to look at. Who will buy it? Now you add a few bells and whistles. They don't do anything useful, but they make the product more interesting. Nobody seems to know what distinguishes a bell from a whistle. BIGNUM (big'num) noun. 1. A multiple-precision computer representation for very large integer. 2. More generally, any very large number. "Have you ever looked at the United States Budget? There's bignums for you!" 3. When playing backgammon, large numbers on the dice, especially a roll of double fives or double sixes. See EL CAMINO BIGNUM. Most computer languages provide a kind of data called "integers", but such computer integers are usually very limited in size; usually they must be smaller than 215 (32768) or 231 (2147483648). If you want to work with numbers larger than that, you have to use floating-point numbers, which are usually only accurate to six or seven decimal places. Computer languages that provide bignums can perform exact calculation on very large numbers such as 21000 or 1000! (the factorial of 1000, which is 1000 times 999 times 998 times ... times 2 times 1) exactly. For example, this value for 1000! was computed by the MACLISP system using bignums: 40238726007709377354370243392300398571937486421071 46325437999104299385123986290205920442084869694048 00479988610197196058631666872994808558901323829669 94459099742450408707375991882362772718873251977950 59509952761208749754624970436014182780946464962910 56393887437886487337119181045825783647849977012476 63288983595573543251318532395846307555740911426241 74743493475534286465766116677973966688202912073791 43853719588249808126867838374559731746136085379534 52422158659320192809087829730843139284440328123155 86110369768013573042161687476096758713483120254785 89320767169132448426236131412508780208000261683151 02734182797770478463586817016436502415369139828126 48102130927612448963599287051149649754199093422215 66832572080821333186116811553615836546984046708975 60290095053761647584772842188967964624494516076535 34081989013854424879849599533191017233555566021394 50399736280750137837615307127761926849034352625200 01588853514733161170210396817592151090778801939317 81141945452572238655414610628921879602238389714760 88506276862967146674697562911234082439208160153780 88989396451826324367161676217916890977991190375403 12746222899880051954444142820121873617459926429565 81746628302955570299024324153181617210465832036786 90611726015878352075151628422554026517048330422614 39742869330616908979684825901254583271682264580665 26769958652682272807075781391858178889652208164348 34482599326604336766017699961283186078838615027946 59551311565520360939881806121385586003014356945272 24206344631797460594682573103790084024432438465657 24501440282188525247093519062092902313649327349756 55139587205596542287497740114133469627154228458623 77387538230483865688976461927383814900140767310446 64025989949022222176590433990188601856652648506179 97023561938970178600408118897299183110211712298459 01641921068884387121855646124960798722908519296819 37238864261483965738229112312502418664935314397013 74285319266498753372189406942814341185201580141233 44828015051399694290153483077644569099073152433278 28826986460278986432113908350621709500259738986355 42771967428222487575867657523442202075736305694988 25087968928162753848863396909959826280956121450994 87170124451646126037902930912088908694202851064018 21543994571568059418727489980942547421735824010636 77404595741785160829230135358081840096996372524230 56085590370062427124341690900415369010593398383577 79394109700277534720000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000000000000000000000000000000000000 00000000000000000 The MACLISP language was not the first computer system to calculate very large integers, but it was MACLISP that provided the name "bignum". BIT noun. 1. The unit of information: the amount of information obtained by asking a yes-no question. 2. A computational quantity that can take on one of two values, such as true and false, or 0 and 1. 3. A mental flag: a reminder that something should be done eventually. Example: "I have a bit set for you." (I haven't seen you for a while, and I'm supposed to tell or ask you something). A bit is said to be "set" if its value is true or 1, and "reset" or "clear" if its value is false or 0. One speaks of setting and clearing bits. To TOGGLE a bit is to change it, either from 0 to 1 or from 1 to 0. BITS. Information. Example: "I need some bits about file formats." ("I need to know about file formats"). THE SOURCE OF ALL GOOD BITS noun. A person from whom (or a place from which) information may be obtained. If you need to know about a program, a WIZARD might be the source of all good bits. The title is often applied to a particularly competent secretary. BITBLT (bit'blit) 1. verb. To copy a large array of bits from on part of a com- puter's memory to another part, particularly when the memory is being used to determine what is shown on a display screen. 2. More generally, to perform some operation (such as TOGGLING) on a large array of bits while moving them. 3. noun. The operation of bitblting. See BLT. BIT BUCKET noun. 1. The mythical receptacle used to catch bits when they fall off the end of a register during a shift instruction. 2. More generally, the place where information goes when it is lost or destroyed. Example: "Oh, no! All my files just went into the bit bucket!" 3. The physical device used to implement output to the NULL DEVICE. This term is used purely in jest. It's based on the fanciful notion that bits are objects that are not destroyed, only misplaced. BIT DECAY noun. A fanciful theory to explain SOFTWARE ROT, the phenomenon that unused programs or features will eventually stop working even if "nothing has changed". The theory explains that bits decay as if they were radioactive. As time passes, the contents of a file or the code in a program will become increasingly garbled. There actually are physical processes that produce these effects. Alpha particles, such as those found in cosmic rays, can change the contents of a computer memory unpredictably. Fortunately, the pro- bability of this can be kept fairly low. In any case, when you can't figure out why something stopped working, it is often convenient to blame it on bit decay. BLETCH (bletch) interjection. Term of disgust. BLETCHEROUS adjective. Disgusting in design of function, aes- thetically unappealing. (This word is seldom used of people.) Example: "This keyboard is bletcherous!" (Perhaps the keys don't work very well or are poorly arranged.) Slightly comic. "Bletcherous" applies to the aesthetics of the thing so described; similarly for CRETINOUS. By contrast, something that is LOSING or BAGBITING may be failing to meet objective criteria. See BOGUS and RANDOM, which have richer and wider shades of meaning than any of the others. BLT (blit, belt) verb. To copy or transfer a large contiguous package of information from one place to another. "The storage allocator picks through the table and copies the good parts up into high memory, and at the end, blt's it all back down again." THE BIG BLT noun. A massive memory-shuffling operation frequently performed by some time-sharing systems on the PDP-10 computer. This comes from the name of a PDP-10 instruction that copies a block of memory form one place to another; the name "BLT" stands for "Block Transfer". Nowadays, BLT almost always means "Branch if Less Than zero", so the slang meanings above are rather like antiques or dinosaurs. BOGUS (boh'gus) adjective. 1. Nonfunctional. Example: "Your fix for that BUG was bogus". 2. Useless. Example: "ATSIGN is a bogus program". 3. False. Example: "Your arguments are bogus". 4. Incorrect. Example: "That algorithm is bogus". 5. Unbelievable. Example: "You claim to have solved the halting problem for Turing Machines? That's totally bogus". 6. Silly. Example: "Stop writing those bogus SAGAS". Astrology is bogus. So is a bolt that is obviously about to break. So is someone who makes blatantly false claims of having solved a scientific problem. BOGOSITY (boh'gahss':t-ee) noun. The quality of being bogus; also, an instance or example thereof. BOGON (boh'gahn) noun. 1. A person who is bogus or who says bogus things. 2. More rarely, a mythical subatomic particle that bears the unit charge of bogosity. (A convention in particle physics is to name new subatomic particles by using the Greek suffix -on, because Greek words originally used to name such particles. For example hadrons are very massive particles that were named from the Greek word hadros, meaning "heavy". More recently, however, physicist have taken to attaching this suffix to words from other languages. For example, the particles that help to hold quarks together are called "gluons", from the English word glue. Hackers have used this convention in fun, on an ad hoc basis; but two of them, "bogon" and COMPUTRON, are used fairly regularly). BOGOMETER (boh-gahm':t-:r) noun. A mythical instrument used to measure bogosity, much as a thermometer measures temperature. Example: In a seminar, when a speaker makes an outrageous claim, a listener might raise his hand and say, "My bogometer just triggered". Someone who is a bogon in the first sense probably radiates a lot of bogons in the second sense. This provides a (pseudo) scientific explanation for how a bogometer works: it's like a Geiger counter that detects bogons. The agreed-upon unit of bogosity is the microLenat (uL) or one- -millionth of a Lenat, in honor of computer scientist Doug Lenat. The consensus is that this is the largest unit practical for everyday use. BOGOTIFY (boh-gaht':f-ie) verb. To make or become bogus. A program that has been changed so many times as to become completely dis- organized has become bogotified. If you tighten a nut too hard and strip the threads on the bolt, the bolt has become bogotified and you'd better not use it any more. BOGUE OUT (bohg owt) verb. To become bogus, suddenly and un- expectedly. Example: "His talk was relatively sane, but then someone asked him a tricky question; he bogued out and did nothing but FLAME after that". AUTOBOGOTIPHOBIA (aw'to-boh-gaht':-foh'bee-uh) noun. The fear of becoming bogotified. "Bogus" has many, but not all, of the meanings of RANDOM. "Random" tends to connote pointlessness or a lack of direction, while "bogus" tends to connote deception or misdirection. Both, however, may connote confusion. "Bogus" was originally used in the hacker sense at Princeton in the late 1960s; not just in the computer science department but all over the campus. It came to Yale and (we assume) elsewhere through the efforts of migratory Princeton alumni, Michael Shamos in particular, now a faculty member at CMU. The hacker usage of this word has since spread to other places. BOUNCE verb. To play volleyball. This term is, or was, used primarily at Stanford. At on time there was a volleyball court next to the computer laboratory. From 5:00 P.M. to 7:00 P.M. was the scheduled maintenance time for the computer, so every afternoon at 5:00 the computer would become unavailable. And over the intercom a voice would cry, "Bounce, bounce!" meaning "Everyone come out and play volleyball!" BRAIN-DAMAGED adjective. Obviously wrong; extremely poorly designed; CRETINOUS; DEMENTED. There is a connotation that the person responsible must have suffered brain damage, because he should have known better. Calling something brain-damaged is really extreme. The word implies that the thing is completely unusable, and that its failure to work is due to poor design, not accident. BREAK verb. 1. To become BROKEN (in any sense). 2. To cause to be broken (in any sense). "Your latest patch to the editor broke the paragraph commands". 3. Of a program, to halt or pause temporarily so that it may be examined for debugging purposes. The place where the program stops is called a "breakpoint". See CONTROL-B. BROKEN adjective. 1. Of programs, not working properly. "The FORTRAN compiler is broken". 2. Behaving strangely -- especially (of people), exhibiting extreme depression. BROKET (broh'k:t, broh'ket) noun. Either of the characters "<" and ">". The first is called a "left broket", and the second a "right broket". This word originated as a contraction of the phrase "broken bracket", that is, a bracket that is bent in the middle. BUCKY BITS noun. Bits corresponding to "control" and "meta" keys on a keyboard. See DOUBLE BUCKY and QUADRUPLE BUCKY. This phrase requires a long explanation. Most computer keyboards are arranged more or less like a typewriter keyboard, but have extra keys. One of them, usually marked "control" or "CTRL", is like a shift key, but instead of changing letters from lower case to upper case, it changes them into so-called control characters. The character sent when you hold down the control key and type F is called simply "control-F". Such characters are usually used as commands to the computer, es- pecially to a text editor. In one well-known text editor, EMACS (which was written at MIT), control-F moves forward one character, control-N moves to the next line, control-P moves to the previous line, control-D deletes a character, and so on. Control characters are so useful that sometimes special keyboards are built that have even more shift keys. One of the first of these was used at Stanford. It had the usual shift and control keys, and a third key called "meta", as well as lots of unusual characters such as Greek letter. So, one can type such characters as control-F, meta-N, and control-meta-B. Now, when you type a character on a Stanford keyboard, the following information is sent to the computer: a code indicating the basic character, plus one BIT for each shifting key to indicate whether that shifting key was pressed along with the basic character key. Programs usually treat the regular shift key as part of the basic character, indicating whether you want lower case or upper case (or whether you want "3" or "#", and so on). The other bits (control and meta) are called the bucky bits. Why "bucky"? Rumor has it that the idea for the extra bits for characters came from computer scientist Niklaus Wirth (who invented the computer languages PASCAL and MODULA-2) when he was at Stanford, and that his nickname was "Bucky". Inspired by the Stanford keyboard, the MIT SPACE CADET KEYBOARD has seven shifting keys: four "bucky bit" keys -- "control", "meta", "hyper", and "super" -- and three like the regular shift key, called "shift", "top", and "front". Many keys have three symbols on them: a letter and a symbol on the top, and a Greek letter on the front. For example, the L key has an "L" and a two-way arrow on the top, and a Greek letter lambda on the front. If you press this key with the right hand while playing an appropriate :chord: with the left hand on the shift keys, you can get the following results: L lower-case "l" shift-L upper-case "L" front-L Greek lower-case lambda front-shift-L Greek upper-case lambda top-L two-way arrow (front and shift are ignored) And of course each of these may also be typed with any combination of the control, meta, hyper, and super keys. On this keyboard you can type over 8000 different character! This allows the user to type very complicated mathematical text, and also to have thousands of sin- gle-character commands at his disposal. Many hackers are actually willing to memorize the command meanings of that many characters if it will reduce typing time. Other hackers, however, think having that many bucky bits is overkill, and object that such a keyboard can require three or four hands to operate. BUG noun. A mistake or problem (possibly simple, possibly very deep); an unwanted and unintended property, characteristic, or behavior. Examples: "There's a bug in the editor. It writes things out backward." "The system CRASHED because of a hardware bug". (That is, the computer suddenly stopped because of an equipment failure) "Fred is a WINNER, but he has a few bugs" (Fred is a good guy, but he has a few personality problems). Antonym: FEATURE. This is usually thought of as applying to a program but can be applied to computers, people, and other things. Some say this term came from telephone company usage: "Bugs in a telephone cable" were blamed for noisy lines. However, computer scientist Grace Hopper has repeatedly been heard to claim that the use of the term in computer science comes from a story concerning actual bugs found wedged in an early malfunctioning computer. In any case, in hacker's slang the word almost never refers to insects. Here is a plausible conversation that never actually happened: "This ant farm has a bug." "What do you mean? There aren't even any ants in it." "That's the bug." BUM 1. verb. To improve something by removing or rearranging its parts -- such as wires in a computer or instructions from a program -- while preserving its function. More generally, to make highly efficient, either in time or space. The connotation is that this is done at the expense of clarity. Examples: "I managed to bum three more instructions out of that code." "I bummed the program not to write the file if it would be empty." "I bummed the inner loop of the program down to seven microseconds." 2. noun. A small change to an algorithm, program, or object to make it more efficient. "This hardware bum makes the jump instruction faster." BUZZ verb. Of a program, to run with no indication of progress and perhaps without guarantee of ever finishing. The state of a buzzing program resembles CATATONIA, but you never get out of catatonia, while a buzzing loop may eventually end of its own accord. Example: "The program buzzes for about ten seconds trying to sort all the names into order". CANONICAL (ki-nahn'i-kil) adjective. Usual; standard; ordinary. Example: "What is the canonical way to rejustify a paragraph in EMACS?" This word has a somewhat more technical meaning in mathematics. For example, on sometimes speaks of a formula as being in canonical form. Two formulas such as 9+3x^2+x and 3x^2+x+9 are said to be equivalent because they mean the same thing, but the second one is in canonical form because it is written in the usual way, with the highest power of x first. Usually there are fixed rules you can use to decide whether something is in canonical form. The slang meaning is a relaxation of the technical meaning. A true story: One Bob Sjoberg, new at MIT, expressed some annoyance at the use of hacker's slang. Over his loud objections, we made a point of using the slang as much as possible in his presence, and eventually it began to sink in, Finally, in one conversation he used the word "canonical" in slanglike fashion without thinking. Steele: Aha! We've finally got him talking jargon [slang] too! Stallman: (who wasn't quite paying attention) What did he say? Steele: Bob just used "canonical" in the canonical way. CATATONIA (kat':-toh'ne-uh) noun. A condition of suspended animation in which something is so WEDGED that it makes no response. For example, if you are typing on your terminal and suddenly the computer doesn't even make the letter appear on the screen as you type -- let alone do what you're asking it to do -- then the computer is suffering from catatonia (probably because it has CRASHED). CATATONIC (kat':-tahn'ik) adjective. In a state of catatonia. Synonym: WEDGED. CDR (ku'd:r) verb. To remove the first item from a list of things. CDR DOWN verb. To go down a list of things one by one. Example: "Shall we cdr down the agenda?" Silly. This term is derived from a function of the LISP language that removes an item from a list. CHARACTERS noun. Those things that you type on a keyboard or that appear on your terminal. (Sometimes you can type characters on your keyboard that cannot be printed on the screen, and vice versa. For example, on most keyboards you can type "control characters" that can't be written down like the characters "A" and "%" can; they are mostly used as special commands. Conversely, some terminals can display almost any picture a program can draw. A program can then draw Greek letters or any other funny symbol, even if they aren't on the keyboard.) Computers tend to seem very unforgiving: a program can fail to work if you get even one character in it wrong. (Folklore has it that a NASA mission to Venus failed because, in one place in one program, there was a period where there should have been a comma). Hackers therefore need to be very precise when talking about characters, and have developed a considerable amount of verbal shorthand for talking about characters: ! EXCL, exclam, BANG, SHRIEK, WOW. # Hash mark, MESH, SPLAT, CRUNCH, pig-pen. $ Dollar. & Ampersand (This name is already so silly that no slang term is needed!) ' Single quote, forward quote. ( and ) Parens (separately called just OPEN and CLOSE). * Star, SPLAT. (In other computer communities, the name "gear" is used, because it looks like a little cogwheel). . Period, dot, point. (Which of these is used depends on culture and context. The word "point" is used more at MIT that "dot" is. CMU uses "dot" almost exclusively). / Slash, forward slash. ; SEMI. < Less than, left ANGLE BRACKET, open angle bracket, left BROKET. = Equals. > Greater than, right ANGLE BRACKET, close angle bracket, right BROKET. ? QUES, query. @ At-sign, at. \ Backslash. ^ Caret. (The name "uparrow" is also used; this dates from the days of old ASCII, when the code now assigned to circumflex was used for an upward- -pointing arrow). _ Backarrow. (This dates from the days of old ASCII, when the code now assigned to an underscore was used for a leftward-pointing arrow). ` Backquote. { and } Curly braces, curly brackets, SQUIGGLE BRACKETS. | Vertical bar. ~ TWIDDLE, SQUIGGLE, SQIGGLE. The INTERCAL programming language, consistent with its general policy of never doing anything the way some other programming language does it, has odd names especially invented for many characters. Most of these names are generally not used except in the context of INTERCAL. . Spot. : Two-spot. , Tail. # Mesh. = Half-mesh. ' Spark. ` Backspark. " Rabbit ears. ! WOW. ? What. | Spike. - Worm. < Angle. (The two-character arrow "<-" is called "angleworm"). > Right angle. ( Wax. ) Wane. [ U turn. ] U turn back. { Embrace. } Bracelet. * SPLAT. & Ampersand (INTERCAL couldn't make this any sillier, either). _ Flatworm. + Intersection. / Slat. \ Backslat. ^ Shark (or simply shark fin). @ Whirlpool. % Double-oh-seven. CHINE NUAL (sheen'yu-:l) noun. The reference manual for the Lisp Machine, a computer designed at MIT especially for running the LISP language. It is called this because the title, LISP MACHINE MANUAL, appears in big block letters -- wrapped around the cover in such a way that you have to open the cover out flat to see the whole thing. If you look at just the front cover, you see only part of the title, and it reads "LISP CHINE NUAL" CHOMP (chahmp) verb. To LOSE; to chew on something of which more was bitten off than one can. Synonyms: LOSE, BITE THE BAG (see BAGBITER). A hand gesture commonly accompanies the use of the word "chomp". The four fingers are held together as if in a mitten or hand puppet, and the fingers and thumb are opened and closed rapidly to illustrate a biting action. The hand may be pointed at the object of complaint, and for the real emphasis you can use both hands at once. For example, to do this to a person is equivalent to saying, "You chomper!". If you point the gesture at yourself, it is a humble but humorous admission of some failure. I would do this if someone told me that a program I had written failed in some surprising way and I felt stupid for not having anticipated it. CHOMPER (chahmp':r) noun. Someone or something that is chomping; a loser. Synonyms: LOSER, BAGBITER. CLOSE (klohz) 1. adjective. Of a delimiting CHARACTER, used at the righthand end of a grouping. Used in such terms as "close parenthesis" and "close bracket". 2. noun. Abbreviation for "close (or right) parenthesis", used when necessary to eliminate oral ambiguity. See OPEN and CHARACTERS. 3. verb. To terminate one's interaction with a file of in- formation. See OPEN. COKEBOTTLE (kohk'baht-:l) noun. Any very unusual character, particularly one that isn't on your keyboard so you can't type it. A program written at Stanford, for example, is likely to have a lot of "control-meta-cokebottle" commands, that is, commands that you can only type on a Stanford keyboard -- because you need the "control" and "meta" keys (see BUCKY BITS) -- and also unusual characters such as the downward-pointing arrow. The last is a "cokebottle" unless you happen to have a Stanford keyboard. (This usage probably arose because of the unusual and distinctive shape of Coca-Cola bottles. No keyboard I know of actually has a cokebottle character on it, so any character you can't type might as well be a Coke bottle for all the good it does you). COM MODE, COMM MODE (kahm'mohd) noun. A situation in which two or more terminals are linked together by the computer so that whatever is typed on any of them appears on all of them. Ideally this is accomplished in such a way that what you type appears on the other terminals but is not otherwise interpreted by the computer (so what you type doesn't foul up your programs). The word com is short for communicate. Com mode is used for conversation: you can talk to other hackers without leaving your terminal. It combines the immediacy of talking with all the precision (and verbosity) that written language entail. It is difficult to communicate inflections, though conventions have arisen for some of these. For example, to emphasize a word (as if printed in italics), one may type an asterisk before and after the word. Typing in all-capital letters is equivalent to raising one's voice). Neophytes, when in com mode, seem to think they must produce let- ter-perfect prose because they are typing rather than speaking. This is not the best approach. It can be very frustrating to wait while your partner pauses to think of a word, or repeatedly makes the same spelling error and backs up to fix it. It is usually best just to leave typographical errors behind and plunge forward, unless severe confusion may result. In that case, it is often fastest just to type xxx and start over from before the mistake. There is a special set of slang terms used only in com mode, which are not used vocally. These are used to save typing or to communicate inflection. BCNU Be seeing you (that is, good-bye). BTW By the way... BYE? Are you ready to unlink? (This is the standard way to end a com mode conversation: the other person types BYE to confirm, or else continues the conversation). CUL See you later. FOO? A greeting, also meaning R U THERE? Often used in the case of unexpected links, meaning also "Sorry if I butted in" (linker) or "What's up?" (linkee). FYI For your information... GA Go ahead (used when two people have tried to type simultaneously; this cedes the right to type to the other. HELLOP A greeting, also meaning R U THERE? (This is an instance of the -P convention). NIL No. (See the main entry for NIL). OBTW Oh, by the way... R U THERE? Are you there? SEC Wait a second (sometimes written SEC...). For example, if you are interrupted by a telephone call, or need to think about something before replying, you might type this. You might also type an additional dot every few seconds to indicate that you are still there but busy. Also, if you need to use a program for a moment (possibly because someone asked you a question), you might type SEC..., unlink your terminal, use your program, and the link back into the com mode. T Yes (See the main entry for T). TNX Thanks. TNX 1.0E6 Thanks a million. (This "1.0E6" is a standard way to write one million in many computer languages). Silly. [double crlf] When the typing party has finished, he types two CRLF's (that is, presses the RETURN key twice) to signal that he is done. This leaves a blank line between individual "speeches" in the conversation, making it easier to reread the preceding text, and indicates that the other person may type. [name]: When three or more terminals are linked, each speech is preceded by the typist's login name ("computer id") and a colon (or a hyphen) to indicate who is typing. You need to do this because you can't tell who is who by tone of voice! The login name often is shortened to a unique prefix (possibly a single letter) during a very long conversation. /\/\/\ The equivalent of a giggle. Synonym: TALK MODE. (The term "com mode" is used more at MIT, and "talk mode" at Stanford. COMPUTRON (kahm'pyoo-trahn'), COMPUTON (kahm'pyoo-tahn') noun. A mythical subatomic particle that bears the unit quantity of computation or information, in much the same way that an electron bears one unit of electric charge. If the computer is too slow, it's because you're short of computrons. See BOGON and CYCLE. An elaborate pseudo-scientific theory of computrons has been worked out as a jest by MIT hacker Stavros Macrakis. (He called the particles "mensons", but that name is no longer used). It is a well-known fact of physics that as you heat something, the molecules get jiggled around and their positions become more random. The hotter it gets, the less predictable are the positions of the molecules. Eventually the molecules just spill all over each other, and the thing melts. Now, he argues, it obviously melts because each molecule has lost the information about where it is supposed to be: in other words, it has lost computrons. This explains why computers get so hot and require air conditioning: they use up computrons. Conversely, you should be able to refrigerate something simply by placing it in the path of a computron beam. CMU hacker Joe Newcomer has also observed that this theory explains why a computer works when it's tested in the factory but not when you've put it in the computer room with all the other computers. They're tested singly at the factory, and so there are plenty of computrons available there, but in the computer room all the computers compete for the computrons in a limited space and some of them come up short. CONNECTOR CONSPIRACY noun. The (perhaps only mythical) tendency of manufacturers (or, by ex- tension, programmers or purveyors of anything) to come up with new products that don't fit together with the old stuff, thereby making you buy either all new stuff or expensive interface devices. This term probably came into prominence with the appearance of the KL10 model of the PDP-10, none of whose connectors seemed to match anything else. CONS (kahnz) verb. To add a new element to a list, usually to the top rather than at the bottom. CONS UP verb. To synthesize from smaller pieces; more ge- nerally, to create or invent. Examples: "I'm trying to cons up a list of volleyball players". "Let's cons up an example". This term comes from the LISP programming language, which has a function called CONS that adds a data item to the front of a list. CONTROL The name of one of the several BUCKY BITS. Used as a prefix to another character, it indicates that the "control" key on your keyboard should be pressed as the other character is typed. CONTROL-B (k:n-trohl' bee') interjection. May I interrupt? or, Beginning of digression. Synonym: PUSH. Antonym: CONTROL-P. CONTROL-G (k:n-trohl' jee') interjection. Stop! Cease! Change the subject! Stop that FLAMING! CONTROL-P (k:n-trohl' pee') interjection. End of interruption or digression. If two hackers are sitting in an office talking, a third one might stick his head in the door and ask "Control-B?". This is a polite, albeit silly, way of asking "May I interrupt?" When the side conversation is done, the third hacker might say "Thanks a lot, Control-P". Control characters are used in various ways to control the actions of computer programs. Different computer systems have different con- ventions about how control characters are used, and hackers will use the local computer convention when speaking. The definitions given above correspond to their meanings as used in the MACLISP language and in DDT at MIT. At other places, "Control-C" replaces "Control-G", for example. CRASH 1. noun. A sudden, usually drastic failure. Most often said of the SYSTEM, sometimes of magnetic disk drives. Example: "Three LUSERS lost their files in last night's disk crash". The term "system crash" usually, though not always, implies that the operating system or other software was at fault. Disk crashes come in two varieties: either the disks are physically unharmed but some information stored on them is lost, or else the disks are physically damaged -- in which case the entire information content of the disk is usually lost. The second kind usually occurs when the magnetic read/write heads hit the surfaces of the disks and scrape off the oxide. This kind of disk crash is called a "head crash". 2. verb. To fail suddenly. Example: "Has the system just crashed?". 3. verb. To cause to fail. Example: "There is a BUG in the tape controller; if you try to use the tape drive, you will crash the system". 4. verb. Of people, to go to sleep -- particularly after a long period of work. See GRONK OUT. CREEPING FEATURISM (kreep'eeng feetch':r-iz':m) noun. The tendency for anything complicated to become even more complicated because people keep saying, "Gee, it would be even better if it had this feature too". (See FEATURE) The result is usually a patchwork, because it grew one ad hoc step at a time, rather than being planned. Planning is a lot of work, but it's easy to add just one extra little feature to help someone... And then another... and another... Usually this term is used to describe computer programs, but it could also be applied to the federal government, the IRS 1040 form, and new cars. CRETIN (kreet-:n) noun. A congenital LOSER; an obnoxious person; someone who can't do anything right. CRETINOUS (kree'tin-uhss, kreet':n-uhss) adjective. Wrong; nonfunctional; very poorly designed (also used pejoratively of people). Synonyms: BLETCHEROUS, BAGBITING, LOSING, BRAIN-DAMAGED. CRLF (k:r'lif, crul':f) 1. noun. A carriage return (CR) followed by a line feed (LF). More loosely, whatever it takes to get you from the end of one line of text to the beginning of the next line. 2. verb. To output a crlf; to end a line of text or to begin a new line of text. Synonym: TERPRI. CROCK noun. 1. Something, especially a program, that works but does so in an unbelievable ugly or awkward manner; more specifically, something that works acceptably but which is quite prone to failure if disturbed in the least. 2. A tightly woven, almost completely unmodifiable structure; something very complicated that ought to be simple. Computer programs seldom stay the same forever. They tend to evolve, and are constantly changed as BUGS are fixed or new FEATURES added. Crocks make this difficult because, although they work, they are very difficult to make small changes to. Synonym: KLUDGE. CROCKISH, CROCKY adjective. Having the cha- racteristics of a crock. See BLETCHEROUS. CROCKITUDE (krahk':-tood) noun. Crockness, crockhood. CRUFT (kruhft) 1. noun. An unpleasant substance. The dust that gathers under your bed is cruft. 2. noun. The results of shoddy construction. CRUFT TOGETHER verb. To make something quickly and haphazardly to get it working quickly, without regard to craftsmanship. Example: "There isn't any program now to reverse all the lines of a file, but I can probably cruft one together in about ten minutes". The origin of this word is unknown. CRUFTY (kruhft'ee) 1. adjective. Unpleasant, especially to the touch; yucky, like spilled coffee smeared with peanut butter and catsup. 2. adjective. Poorly built, possibly overly complex. "This is standard old crufty DEC software". 3. adjective. Generally unpleasant. 4. noun (also spelled "cruftie"). A small crufty object, or (in a program) a small data structure, especially one that doesn't fit well into the scheme of things. Every desk seems to have one drawer that accumulates crufties. Example: "A LISP property list is a good place to store crufties". (In the LISP language, odd data structures can be stored in a catchall data structure called a property list). CRUFTSMANSHIP noun. The antithesis of craftsmanship. CRUNCH 1. verb. To process, usually in a time-consuming or complicated way. The connotation is of an essentially trivial operation that is nonetheless painful to perform, possibly because the trivial operation must be performed millions of times. When the trivial operation involves numerical computation, this is called "number crunching". Example: "FORTRAN programs mostly do number crunching". 2. verb. To reduce the size of a file by a complicated scheme that produces bit configurations completely unrelated to the original data, such as by the mathematical technique called "Huffman codes". (The file ends up looking like a paper document would if somebody crunched the paper into a wad). Since such a compression operation usually requires a great deal of computation (it is much more sophisticated than such simper methods as counting consecutive repeated characters), the term is doubly appropriate. Sometimes the term "file crunching" is used to distinguish it from "number crunching". 3. noun. A crisis, especially a scarcity of some resource. If you don't have much time to get something done, you're in a time crunch. See CYCLE CRUNCH. 4. noun. The character "#". See CHARACTERS. CTY (sit'ee) noun. The terminal physically associated with a computer's operating console. The term is a contraction of "Console TTY", that is, "Console TeleTYpe". CUSPY (cuhsp'ee) adjective. Clean, well-written; functionally excellent. A program that performs well and interfaces well to users is cuspy. Antonyms: RUDE, CRUFTY, BLETCHEROUS. This term originated at WPI. It comes from the acronym CUSP, used by DEC to mean a "Commonly Used System Program", that is, a utility program used by many people. Ideally, such programs, whatever the source, are built to high standards of excellence. The extent to which a hacker uses this word obviously depends largely on how highly he regards DEC-supplied software. CYCLE noun. The "basic unit of computation". What every hacker wants more of. You might think that single machine instructions would be the measure of computation, and indeed computers are often compared by assessing how many instructions they can process per second -- even though some instructions take longer that others. Nearly all computers have an internal clock, though, and you can describe an instruction as taking so many "clock cycles". Typically the computer can access its memory once on every clock cycle, and so one speaks also of "memory cycles". These are technical meanings of "cycle". The slang meaning comes from the observation that there are only so many cycles per second; and when you are sharing a computer, the cycles get divided up among the users. The more cycles the computer spends working on your program rather than someone else's, the faster your program will run. That's why every hacker wants more cycles: so he can spend less time waiting for the computer to respond. CYCLE CRUNCH noun. The situation where the number of people si- multaneously trying to use the computer has reached the point where no one can get enough cycles because they are spread too thin. Usually the only solution is to buy another computer. CYCLE DROUGHT noun. A scarcity of cycles. It may be due to a cycle crunch, but could also occur because part of the computer is tem- porarily not working, leaving fewer cycles to go around. Example: "The high MOBY is DOWN, so we're running with only half the usual amount of memory. There will be a cycle drought until it's fixed". DAEMON (day'm:n, dee'm:n) noun. A program that is not invoked explicitly, but that lies dormant waiting for one or more conditions to occur. The idea is that the perpetrator of the condition need not be aware that a daemon is lurking (though often a program will commit an action only because it knows that it will implicitly invoke a daemon). For example, many operating systems have a printing daemon. When you want to print a file on some printing device, instead of explicitly running a program that does the printing, you just copy your file to a particular directory (file area). The printer daemon is just a program that is always running; it checks the special directory periodically, and whenever it finds a file there it prints it and then deletes it. The advantage is that programs that want (in this example) files printed need not compete for access to the printing device itself, and need not wait until the printing process is completed. In particular, a user doesn't have to sit there waiting with his terminal tied up while the printing program does its work. He can do something else useful while the daemon does its job. Daemon and DEMON are often used interchangeably, but seem to have discrete connotations. "Daemon" was introduced to computing by people working on CTSS, the Compatible Time-Sharing System, which was the first time-sharing system, developed at MIT. They pronounced it "dee'm:n", and used it to refer to what is now called a DRAGON or PHANTOM. The meaning and pronunciation have drifted, and we think the definitions given here reflect current usage. DAY MODE noun. The state a person is in when he is working during the day and sleeping at night. See PHASE and NIGHT MODE. DDT (dee'dee'tee') noun. A program that helps you to debug other programs by showing individual machine instruction in a readable symbolic form and letting the user change them. At MIT, DDT is also used as the "top-level command language" to run other programs. The DEC PDP-10 Reference Handbook (1969) contained this footnote on the first page of the documentation for DDT: 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 acronym. Confusion between DDT-10 and another well-known pesticide, dichloro-diphenyl-trichloroethane (C14H9Cl5) should be minimal, since each attacks a different, and apparently mutually exclusive, class of bugs. Sad to say, this quotation was removed from later editions of the handbook as DEC became much more "businesslike". DEADLOCK noun. A situation wherein two or more processes (or persons) are unable to proceed because each is waiting for another to do something. Here is a typical example: Two programs running on the same computer both want the exclusive use of two things, say a line printer and a disk. The first one grabs the line printer and the tries to grab the disk, but fails because the second one successfully grabbed the disk and is now waiting to get the line printer. Deadlock also occurs 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. Synonym: DEADLY EMBRACE. DEADLY EMBRACE noun. DEADLOCK. This term is usually used only when exactly two processes are involved, while "deadlock" can involve any number. Also, "deadly embrace" seems to be the more popular term in Europe, while "deadlock" is more frequently used in the United States. DELTA noun. 1. A change, especially a small or incremental change. Example: "I just doubled the speed of my program!" "What was the delta on program size?". "About thirty percent". (He doubled the speed of his program, but increased its size by thirty percent). 2. A small quantity, but not so small as EPSILON. DEMENTED adjective. Useless; totally nonfunctional; BRAIN_DAMAGED. This is yet another term of disgust used to describe a program. The connotation in this case that the program works as designed, but the design is bad; perhaps also that the program explicitly exhibits strange behavior. For example, a program that generates large numbers of meaningless error messages, implying that it is on the point of imminent collapse, would be described as demented. DEMON (dee'm:n) noun. A portion of a program which is not involved explicitly, but which lies dormant waiting for some condition(s) to occur. See DAEMON. Demons are usually processes that are pieces of a single program, while daemons are usually entire programs running in the context of a large system, such as an operating system. This distinction is admittedly not hard and fast. Demons are particularly common in artificial intelligence 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. DIDDLE (did':l) 1. verb. To work with in a not particularly serious manner; to make a very simple change (as to a program). Examples: "Let's diddle this piece of code and see if the problem goes away". (That is, let's try the obvious quick fix). "I diddled the text editor to ring the bell before it deletes all your files". 2. noun. The action of result of diddling. Synonyms: TWEAK, TWIDDLE. DIKE (diek) verb. To remove or disable a portion of something, as a wire form a computer or subroutine from a program. A standard slogan: "When in doubt, dike it out". (The implication is that the program [or whatever] is so bad that taking something out can only make things better!) The word "dikes" is widely used among mechanics and engineers to mean "diagonal cutters", a heavy-duty metal cutting device. To "dike something out" means to use such cutters to remove something. Among hackers, this term has been metaphorically extended to nonphysical objects such as pieces of program. DO PROTOCOL verb. To perform an interaction with somebody or something according to a well-defined standard procedure. For example: "Let's do protocol with the check" at a restaurant means to ask the waitress for the check, calculate the tip and everybody's share, make change as necessary, and pay the bill. DOUBLE BUCKY adjective. Using both the "control" and "meta" keys on a keyboard that has them. "The EMACS command to reformat a LISP program is double-bucky-G". (That is, the command is control-meta-G). For a complete explanation, see BUCKY BITS. The following lyrics were written on May 27, 1978, in celebration of the Stanford keyboard. A typical MIT comment was that the "bucky bits" ("control" and "meta" shifting keys) were nice, but there weren't enough of them -- you could only type 512 different characters on a Stanford keyboard. An obvious thing was simply to add more shifting keys, and this was eventually done. One problem is that a keyboard with that many shifting keys is hard on touch typists, who don't like to move their hands away from the home position on the keyboard. It was half-seriously suggested that the extra shifting keys be pedals; typing on such a keyboard would be very much like playing a pipe organ. This idea is mentioned below, in what is a parody of a very fine song by Jeffrey Moss called "Rubber Duckie", which was published in The Sesame Street Songbook. Double Bucky Double bucky, you're the one! You make my keyboard lots of fun. Double bucky, an additional bit or two: (Vo-vo-de-o!) Control and meta, side by side. Augmented ASCII, nine bits wide! Double bucky! Half a thousands glyphs, plus a few! Oh, I sure wish that I Had a couple of Bits more! Perhaps a Set of pedals to Make the number of Bits four: Double double bucky! Double bucky, left and right OR'd together, outta sight! Double bucky, I'd like a whole word of Double bucky, I'm happy I heard of Double bucky, I'd like a whole word of you! --The Great QUUX (with apologies to Jeffrey Moss) DOWN adjective. Not working; deactivated. Example: "The Up escalator is down". That is considered a humorous thing to say, but "The elevator is down" always means "The elevator isn't working", and never refers to what floor the elevator is on. Antonym: UP. GO DOWN verb. To stop functioning, usually said of the SYSTEM. The message every hacker hates to hear from the operator is, "The system will go down in five minutes". TAKE DOWN, BRING DOWN verb. To deactivate purposely, usually for repair work. Example: "I'm taking the system down to work on that BUG in the tape drive". See CRASH. DPB (d:-pib', duh-pib') verb. To plop something down in the middle. Silly. Example: "Dpb yourself into that couch there". (The connotation would be that the couch is full except for one slot just big enough for you to sit in. DPB means "DePosit Byte", and is the name of a PDP-10 instruction that inserts some BITS into the middle of some other bits). DRAGON noun. A program similar to a DAEMON, except that it doesn't sit around waiting for something to happen but is instead used by the SYSTEM to perform various useful tasks that just have to be done periodically. A typical example would be an accounting program that accumulates statistics, keeps track of who is logged in, and so on. Another example: Most time-sharing systems have several terminals, and at any given time some are in use and some are sitting idle. The idle ones usually sit there with some idiotic message on their screens, such as "logged off", from the last time someone used it. One time- -sharing system at MIT puts these idle terminals to good use by displaying useful information on them, such as who is using the computer, where they are, what they're doing, and what their telephone numbers are, along with other information such as pretty pictures (the picture collection includes a unicorn, Snoopy, and the U.S.S. Enter- prise from "Star Treck"). All this information is displayed on idle terminals by the "name dragon", so called because it originally printed just the names of the users. (That it now shows all kinds of things, including useless though pretty pictures, is an example of CREEPING FEATURISM). The "name dragon" is a program started up by the system, and it runs about every five minutes and updates the information on all idly terminals. DWIM (dwim) noun. A complicated procedure (in the INTERLISP dialect of LISP) that attempts to correct your mistakes automatically. For example, if you spell something wrong or don't balance your parentheses properly, it tries to figure out what you meant. DWIM stands for "Do What I Mean". When this works, it is very impressive. When it doesn't work, anything can happen. When a program has become very big and complicated -- so com- plicated that no one can understand how to use it -- it is often suggested in jest that dwim be added to it. See BELLS AND WHISTLES. EL CAMINO BIGNUM (el' k:-mee'noh big'num) noun. El Camino Real. El Camino Real is the name of a street through the San Francisco peninsula that originally extended (and still appears in places) all the way down to Mexico City. Navigation on the San Francisco peninsula is usually done relative to El Camino Real, which is assumed to run north and south even tough it doesn't really in many places (see LOGICAL). El Camino Real runs right past Stanford University, and so is familiar to hackers. The Spanish word real, which has two syllables (ree-ahl'), means "royal"; El Camino Real is "the royal road". Now, the English word real is used in mathematics to describe numbers (and by analogy is misused in computer jargon to mean floating-point numbers). In the FORTRAN language, for example, a "real" quantity is a number typically precise to seven decimal places; and a "double-precision" quantity is a larger floating-point number, precise to perhaps fourteen decimal places. When a hacker from MIT visited Stanford in 1976 or so, he remarked what a long road El Camino Real was. Making a pun on "real", he started calling it "El Camino Double Precision". But when the hacker was told that the road was hundreds of miles long, he renamed it "El Camino Bignum", and among hackers that name has stuck. (See BIGNUM). ENGLISH noun. The source code for a program, which may be in any computer language. This term is slightly obsolete, and used mostly by old-time hackers who were around MIT in the mid-1960s. To a real hacker, a program written in his favorite programming language is as readable as English. EPSILON (ep'si-lahn) 1. noun. A small quantity of anything. Example: "The cost is epsilon". 2. adjective. Very small, negligible. "I tried to speed up the program, but got epsilon improvement". WITHIN EPSILON OF preposition. Close enough to be indistin- guishable for all practical purposes. This is even closer than being within DELTA of. Example: "That's now what I asked for, but it's within epsilon of what I wanted". Alternatively, it may mean not close enough, but very little is required to get is there: "My program is within epsilon of working". EPSILON SQUARED noun. A quantity even smaller than epsilon, as small in relation to epsilon as epsilon is to something normal. Suppose you buy a large computer for one million dollars. You probably need a thousand-dollar terminal to go with it, but by comparison the cost of that is epsilon. If you need a ten-dollar cable to connect them together, its cost is epsilon squared. See DELTA. The terms epsilon and delta are names of Greek letter; the slang usage stems from the traditional use of these letters in mathematics for very small numerical quantities, particularly in so-called "epsilon-delta" proofs in the differential calculus. Once "epsilon" has been mentioned, "delta" is usually used to mean a quantity that is slightly greater than epsilon but still very small. For example, "The cost isn't epsilon, but it's delta" means that the cost isn't totally negligible, but it is nevertheless very small. A quantity that is a little bit smaller than epsilon is "epsilon over 2", and "epsilon squared" is very much smaller than epsilon. EXCH (eks'ch:, ekstch) verb. To exchange two things, one for the other; to swap places. Silly. If you point to two people sitting down and say "Exch!" you are asking them to trade places. EXCH, meaning EXCHange, is the name of a PDP-10 instruction that exchanges the contents of a register and a memory location. EXCL (eks'c:l) noun. The character "!". See CHARACTERS. FAULTY adjective. Nonfunctional; buggy. This word means about the same thing as BAG- BITING, BLETCHEROUS, and LOSING, but the connotation is much milder. FEATURE noun. 1. An intended property of behavior (as of a program). Whether it is good is immaterial. 2. A good property or behavior (as of a program). Whether it was intended is immaterial. 3. A surprising property of behavior; in particular, one that is purposely inconsistent because it works better that way. For example, in the EMACS text editor, the "transpose characters" command will exchange the two characters on either side of the cursor on the screen, except when the cursor is at the end of a line; in that 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. The inconsistency is therefore a feature and not a BUG. 4. A property or behavior that is gratuitous or unnecessary, though perhaps impressive or cute. For example, one feature of the MACLISP language is the ability to print numbers as Roman numerals. See BELLS AND WHISTLES. 5. A property of behavior that was put in to help someone else but that happens to be in your way. A standard joke is that a bug can be turned into a feature simply by documenting it (then theoretically no one can complain about it because it's in the manual), or even by simply declaring it to be good. "That's not a bug; it's a feature!" If someone tells you about some new improvement to a program, you might respond, "Feetch, feetch!" The meaning of this depends critically on vocal inflection. With enthusiasm, it means something like "Boy, that's great! What a great HACK!" Grudgingly or with obvious doubt, it means "I don't know. It sounds like just one more unnecessary and complicated thing." With a tone of resignation, it means "Well, I'd rather keep it simple, but I suppose it has to be done". The following list covers the spectrum of terms used to rate programs or portions thereof (except for the first two, which tend to be applied more to hardware or to the SYSTEM, but are included for completeness): CRASH LOSS HACK STOPPAGE MISFEATURE WIN BRAIN DAMAGE CROCK FEATURE BUG KLUDGE PERFECTION The last is never actually attained. FEEP (feep) 1. noun. The soft electronic "bell" of a display terminal (except for a DEC VT-52!): a beep. 2. verb. To make (or to cause a terminal to make) a "feep" sound. FEEPER noun. The device in the terminal (usually a loudspeaker of some kind) that makes the feep sound. FEEPING CREATURISM noun. This term isn't really well defined, but it sounds so nice (being a spoonerism on CREEPING FEATURISM) that most hackers have said or heard it. It probably has something to do with terminals prowling about in the dark making their customary noises. A true TTY does not feep; it has a real mechanical bell that just rings. Synonyms for "feep" are "beep", "bleep", or just about anything suitably onomatopoeic. (Jeff MacNelly, in his comic strip Shoe, uses the word "eep" for sounds made by computer terminals and video games; this is perhaps the closest one yet.) The term "breedle" is sometimes heard at Stanford, where the terminal bleepers are not particularly soft. (They sound more like the musical equivalent of a raspberry or a Bronx cheer. For a close approximation, imagine the sound of a "Star Trek" communicator's beep lasting for five seconds). By contrast, the feeper on a DEC VT-52 terminal has been compared to the sound of a '52 Chevy stripping it gears. FENCEPOST ERROR noun. An "off-by-one" error: the discrete equivalent of a boundary condition. This problem is often exhibited in programs containing iterative loops: something will be done one time too few or too many. The term comes from the following problem: "If you build a fence 100 feet long with posts 10 feet apart, how many posts do you need?" (Either 9 or 11 is a better answer than the obvious 10.) For example, suppose you have a long list or array of items and want to process items m through n. How many items are there? The obvious answer is n-m, but that is off by one. The right answer is n-m+1. A program that used the "obvious" formula would have a fencepost error in it. Not all off-by-one problems are fencepost errors. The game of Musical Chairs involves an off-by-one problem where N people try to sit in N-1 chairs, but it's not a fencepost error. A fencepost error is typified by counting things rather than counting the spaces between them, or vice versa, or by neglecting to consider whether one should count one or both of the ends of a row. FINE adjective. Good, but not good enough to be CUSPY. This term is used primarily at WPI. The word "fine" is oc- casionally heard elsewhere, too, but does not connote the implicit comparison the higher level of perfection implied by CUSPY. FLAG noun. A variable or quantity that can take on one of two values: a BIT, particularly one that is used to indicate one of two outcomes or is used to control which of two things is to be done. Example: "This flag controls whether to clear the screen before printing the message". "The program status word contains several flag bits". FLAG DAY noun. A day on which a change is made that is neither forward- nor backward compatible (so old programs won't work under the new system, and new programs won't work under the old one), and that is costly to make and costly to undo. Example: "If we change MACLISP to use square brackets instead of parentheses, it will cause a flag day for every- body". A flag day, as well as the weeks or months following, is a time of great confusion for everyone concerned. This term has nothing to do with the use of the word FLAG to mean a variable that has two values. It came into use when a massive change was made to the MULTICS time-sharing system to convert from the old ASCII code to the new one. This was scheduled for Flag Day, June 14, 1966. FLAKY, FLAKEY adjective. Subject to frequent or intermittent failure. This use is of course related to the common slang use of the word, to describe a person as eccentric or crazy. A system that is flaky is working, sort of, enough that you are tempted to try to use it; but it fails frequently enough that the odds in favor of finishing what you start are low. FLAME 1. verb. To speak incessantly and/or rabidly on some relatively uninteresting subject or with a patently ridiculous attitude. 2. noun. A speech or dialogue in which the speakers are flaming. 3. noun. A subject on which a given person likes to flame. FLAME SESSION noun. A meeting in which everyone flames; a "bull session". FLAME ON verb. To continue to flame. FLAMER noun. One who flames: a fanatic. FLAMAGE (flaym':j) noun. Flaming; the content of a flame. (Both flamage and flaming are used in this sense). Synonym: RAVE. When a discussion degenerates into useless controversy, one might tell the participants, "Now you're just flaming!" or "Stop all that flamage!" to get them to cool down (so to speak). FLAP verb. To give the command to unload a MICROTAPE or, more generally, any magnetic tape from its drive. (When this operation is finished, the take-up reel keeps spinning and the end of the tape goes flap, flap, flap...) "I need to use the tape drive; could you please flap your tape?" FLAVOR noun. 1. Variety, type, kind. "EMACS commands come in two flavors: sin- gle-character and named". "These lights come in two flavors: big red ones and small green ones". See VANILLA. 2. The attribute that causes something to be FLAVORFUL. Usually used in the phrase "yields additional flavor". Example: "This feature yields additional flavor by allowing one to print text either right- -side-up or upside-down." FLAVORFUL adjective. Aesthetically pleasing. Antonym: BLETCHEROUS. See TASTE. FLUSH verb. 1. To delete, destroy, or get rid of something, typically something that is useless or superfluous. "All that nonsense has been flushed". This is standard MIT terminology within the ITS time-sharing SYSTEM for aborting an output operation. One speaks of the text that would have been printed -- but was not -- as having been "flushed". Under that time-sharing system, if you ask to have a file printed on your terminal, it is printed a page at a time; at the end of each page, it asks whether you want to see more. If you say no, it says "FLUSHED". (A speculation is that this term arose from a vivid image of flushing unwanted characters by hosing down the internal output buffer, washing the characters away before they can be printed.) 2. To exclude someone from an activity. 3. To leave at the end of a day's work (as opposed to leaving for a meal). Examples: "I'm going to flush now". "Time to flush". See GRONK OUT. FOO (foo) 1. interjection. Term of disgust. For greater emphasis, one says MOBY FOO (see MOBY). 2. noun. The first metasyntactic variable. When you have to invent an arbitrary temporary name for something for the sake of exposition, FOO is usually used. If you need a second one, BAR or BAZ is usually used; there is a slight preference at MIT for bar and at Stanford for baz. (It was probably at Stanford that bar was corrupted to baz). Clearly, bar was the original, for the concatenation FOOBAR is widely used also, and this in turn can be traced to the obscene acronym "FUBAR" that arose in the armed forces during World War II) If bar is used, then baz is used as a third name after that. Example: "The bug can happen in this way. Suppose you have two functions FOO and BAR. FOO calls BAR with two arguments. Now BAR calls BAZ, passing it just one of the two arguments..." In effect, these words serve as extra pronouns; they are always "nonce names". The very fact that they always serve this purpose allows some abbreviation. The preceding example might be shortened without loss of clarity to: "The bug can happen in this way. Suppose FOO calls BAR with two arguments. Now BAR calls BAZ, passing it just one of the two arguments..." Words such as "foo" are called "metasyntactic variables" because, just as a mathematical variable stands for some number, so "foo" always stands for the real name of the thing under discussion. A hacker avoids using "foo" as the real name of anything. Indeed, a standard convention is that any file with "foo" in its name is temporary and can be deleted on sight. FOO? What? What's going on here? See COM MODE. FOOBAR. A concatenation of FOO and BAR. "Foo" is certainly a favorite among hackers. While its use in connection with BAR clearly stems from "FUBAR", its original appearance appears to be untraceable, and may derive from other common interjections such as the Yiddish "Feh!". Bill Holman featured the word "foo" prominently in his comic strip Smokey Stover. FRIED adjective. 1. Nonfunctional because of hardware failure; burned out. Example: "The disk controller is fried". (Sometimes this literally happens to electronic circuits! In particular, resistors can burn out and transformers can melt down, emitting terrible-smelling smoke. However, this term is also used metaphorically.) 2. Of people, exhausted, "burned out". This is said particularly of those who continue to work in such a state, and often used as an explanation or excuse. Example: "Yeah, I know that fix destroyed the file system, but I was fried when I put it in". See FRY FROB (frahb) 1. noun. A protruding arm or trunnion. (This is the official definition by the Tech Model Railroad Club at MIT). 2. Any somewhat small thing; an object that you can comfortably hold in one hand. Something you can frob. See FROBNICATION. 3. verb. Abbreviated form of FROBNICATE. FROBNICATE (frahb'ni-kayt) verb. To manipulate or adjust; to do the appropriate thing to; to play with; to fondle. This word is usually abbreviated to simply "frob", but frobnicate is recognized as the official full form. Examples: "Please frob the light switch". (That is, flip the light switch) "Stop frobbing that clasp. You'll break it". Synonyms: TWEAK, TWIDDLE. Frob, twiddle, and tweak sometimes connote points along a spectrum. Frob connotes aimless manipulation; twiddly connotes gross manipulation, often a coarse search for a proper setting; tweak connotes fine tuning. Suppose someone is turning a knob on an oscil- loscope. If he's carefully adjusting it, searching for some particular point, he is probably tweaking it. If he is turning it rather quickly while looking at the screen, he is probably twiddling it. But if he's just doing it because turning a knob is fun, he's frobbing it. FROBNITZ (frahb'nitz), plural FROBNITZEM (frahb'nit-z:m) noun. 1. An unspecified physical object; a widget; a black box. 2. By extension, a data structure in a program, when regarded as an object. This rare form is usually abbreviated to FROTZ (frahtz), or more commonly, to FROB. Also used are frobnule (frahb'nyool), frobule (frahb'yool), and frobnodule (frahb'nahd'yool). Starting perhaps in 1979, "frobboz" (fruh-bahz', fr:-bahz'), plural "frobbotzim" (fruh- -baht'z:m), has also become very popular, largely due to its exposure as a name via the Adventure-type game called Zork (which originated at MIT). FROG, PHROG 1. interjection. Term of disgust. (Hackers seem to have a lot of them). 2. noun. Of things, a CROCK. Of people, something between a turkey and a toad. FROGGY adjective. Similar to BAGBITING, but milder. "This froggy program is taking forever to run!" FROTZ (frahtz) noun. An abbreviated form of FROBNITZ. MUMBLE FROTZ interjection. A term of fairly mild disgust, usually used as an objection to something someone has just said. See MUMBLE. FRY verb. 1. To fail. Said especially of smoke-producing hardware failures. 2. More generally, to become nonworking. (This term is never said of software, only of hardware and humans). See FRIED. FTP (ef'tee'pee') 1. noun. The File Transfer Protocol for transmitting files between systems on the ARPANET. 2. noun. A program that implements the protocol and thereby helps you to transfer files. 3. verb. To transfer a file using the File Transfer Program. Example: "Lemme get this copy of Wuthering Heights FTP'd from Stan- ford". 4. verb. More generally, to transfer a file between two computers using any electronic network such as ETHERNET (as opposed, say, to using a magnetic tape as the transfer medium). FUDGE 1. verb. To perform in an incomplete but marginally acceptable way, particularly with respect to the writing of a program. "I didn't feel like doing it all the right way, so I fudged it." 2. noun. The code resulting from fudging as defined above. 3. verb. To make something come out the way it was supposed to by making an ex post facto change, such as to a FUDGE FACTOR. All these uses are related to the common slang use of the word to mean something like cheating, as when a scientist fudges his mea- surements to fit his pet theory. FUDGE FACTOR noun. A value or parameter that is varied in an ad hoc way to produce a desired result. See SLOP. GABRIEL noun. An unnecessary (in the opinion of the opponent) stalling tactic when playing volleyball, such as tying one's shoelaces repeatedly or asking the time. Also used to refer to the perpetrator of such tactics. GABRIEL MODE noun. The state a person is in when he performs one stalling tactic after another. See MODE. This is in honor of Richard P. Gabriel, a Stanford hacker and vol- leyball fanatic. His reputation for stalling is a bit undeserved, and has the status of a running gag. One may speak of "pulling a Gabriel" or of "being in Gabriel mode." See RPG. GARPLY (gahrp'lee) noun. A meta-word, like FOO. This one is used mostly at Stanford. GAS 1. interjection. A term of disgust and hatred, implying that gas should be dispensed in generous quantities, thereby extermination the source of irritation. "Some LOSER just reloaded the SYSTEM for no reason! Gas!". 2. An exclamation suggestion that someone or something ought to be FLUSHED (gotten rid of) out of mercy. "The system is getting WEDGED every few minutes. Gas!" 3. verb. To get rid of; to flush. "You should gas that old CRUFTY software". GASEOUS adjective. Deserving of being gassed. GC (jee'see') 1. verb. To clean up and throw away useless things. "I think I'll GC the top of my desk today". 2. To recycle, reclaim, or put to another use. 3. To forget. (The implication is sometimes that one has done so deliberately). "You told me last week where it was, but I GC'd those bits". 4. noun. An instantiation of the GC process. GC is an abbreviation of "garbage collect" or "garbage col- lection", which is computer science jargon for a particular class of strategies used to recycle computer memory. One such strategy involves periodically scanning all the data in memory and discarding useless data items. Occasionally the full phrase is used. Note the ambiguity in usage which has to be resolved by context: "I'm going to garbage-collect my desk" usually means to clean out the drawers, but it could also mean to throw away or recycle the desk itself. GEDANKEN (ge-dahnk-:n) adjective. Wild-eyed; impractical; not well-thought-out; untried; untested. Gedanken is a German word for thought. A thought experiment is one you carry out in you head. In physics, the term "gedanken experiment" refers to an experiment that is impractical to carry out but useful to consider theoretically. (A classic gedanken experiment of relativity theory involves thinking about a man flying through space in an elevator). Gedanken experiments are very useful in physics, but you have to be careful. It was a gedanken experiment that led Aristotle to conclude that heavy things always fall faster than light things (he thought about a rock and a feather). This was accepted until Galileo proved otherwise. Among hackers, however, the word has a pejorative connotation. It is said of a project -- especially one on artificial intelligence research -- which is written up in grand detail (typically as a Ph.D. thesis) without ever begin implemented to any great extent. Such a project is usually perpetrated by people who aren't very good hackers or find programming distasteful or are just in a furry. A gedanken thesis is usually marked by an obvious lack of intuition about what is programmable and what is not, and about what does and does not constitute a clear specification of an algorithm. GLASS TTY (glass ti'tee) noun. A terminal which has a display screen but which, because of hardware or software limitations, behaves like a teletype or other printing terminal, thereby combining the disadvantages of both. Like a printing terminal, it can't do fancy display hacks; and like a display terminal, it doesn't produce hard copy (a paper copy that you can carry away with you). An example is the Lear Siegler ADM-3 terminal, which was actually advertised as "the dumb terminal" when it first came out (implying that it was also cheap). See TTY. GLITCH 1. noun. A sudden interruption in electric service, sanity, continuity, or program function. It may or may not be possible to recover from it. 2. verb. To commit a glitch. See GRITCH. An interruption in electric service is usually called a "power glitch". This is of grave concern because it usually CRASHES all the computers. Have you ever been in the middle of a sentence and then forgotten what you were going to say? If this happened to a hacker, he might say, "Sorry, I just glitched" (This would be a "mental glitch"). This word almost certainly comes from Yiddish, where the verb glitschen means to slide or skid on a slippery surface. A fall while walking on ice would be a glitch. 3. verb. To scroll a display screen. The use of "glitch" to mean "scroll" needs some explanation. When a program prints text on a display screen, there is a question of what to do when it reaches the last line of the screen. There are two main strategies: After the last like, go back to the top line (possibly clearing the screen first). This is called "wraparound". Move all the lines of text on the screen upward one line. The top line of text disappears (it "falls off the top of the screen") because there's no more room for it, and the bottom line of the screen becomes empty and can be used to display the next line of text. This is called "scrolling", because it looks as though a papyrus scroll is zipping past your eyes, unwinding at the bottom and winding up again at the top. The advantage of the scrolling technique is that new text always appears at the bottom of the screen. The disadvantage is that all the text keeps moving upward as new lens are displayed, so it's awfully hard to read it as it flashes by on the screen. (Movie fans know about this problem from trying to read the credits at the end). The computer system at Stanford compromises. It scrolls, but when the last line of the screen has been used, the text is moved up many line (about ten or so). This means that the top ten lines all disappear at once, but the rest stay put on the screen while the next ten lines are being displayed at the bottom. So instead of appearing to move continuously up the screen, the text "jerks" or "glitches" every five seconds or so. GLORK (glohrk) 1. interjection. Term of mild surprise, usually tinged with outrage, as when one attempts to save the results of two house of editing and finds that the SYSTEM has just CRASHED. 2. A meta-word. See FOO. 3. verb. Similar to GLITCH, but usually used reflexively. "My program just glorked itself". GOBBLE verb. To consume or to obtain. "Gobble up" tends to imply "consume", while "gobble down" tends to imply "obtain". Examples: "The output spy gobbles characters out of a TTY output buffer". (See OUTPUT SPY). "I guess I'll gobble down a copy of the documentation tomorrow." See SNARF. GORP (gohrp) This is yet another metasyntactic variable like FOO and BAR. It is used primarily at CMU. (It may be related to its use as the generic term for hiker's dried food, stemming from the acronym "Good Old Raisins and Peanuts", but this is uncertain.) GOSPERISM (gahss'p:r-iz':m) A hack, invention, or saying by arch-hacker R. William (Bill) Gosper. This notion merits its own term because there are so many of them. Many of the entries in HAKMEM are gosperisms. See also LIFE. GRIND verb. 1. To format code, especially LISP code, by indenting the lines so that is looks pretty. (This term is used primarily within the MACLISP community. Elsewhere, to format code so that it looks nice is to "pretty-print" it.) 2. To run seemingly interminably, performing some tedious and in- herently useless task. Synonym: CRUNCH. GRITCH 1. noun. A complaint (often caused by a GLITCH). 2. verb. To complain. Often verb-doubled: "Gritch, gritch". GROK (grahk) verb. To understand, usually in a global sense especially, to understand all the implications and consequences of making a change. Example: "JONL is the only one who groks the MACLISP compiler". This word comes from the science-fiction novel Stranger in a Strange Land by Robert Heinlein, where it is a Martian word meaning roughly "to be one with". GRONK (grahnk) verb. To clear the state of a WEDGED device and restart it. More severe than "to FROB". GRONKED adjective. Of people, the condition of feeling very tired or sick. Of things, totally nonfunctional. (For things, gronked and BROKEN mean about the same thing, but they have very different connotations when used of people. "Gronked" connotes physical ex- haustion of illness, while "broken" connotes mental or emotional illness.) GRONK OUT verb. Of things, to cease functioning. "My terminal just gronked out". Of people, to go home and go to sleep. "I guess I'll gronk out now. See you all tomorrow." When you are gronked, the best thing to do is to gronk out. "Gronk out" is a more specific term than "flush". In both cases you stop hacking and leave, but when you flush you might go home or might go to a restaurant or to see a movie. If you gronk out, however, you intend to go get some sleep. GRONK has been popularized as a noise made by dinosaurs in the comic strip B.C., by Johnny Hart, but the hackers' connotation apparently predates Hart's usage. GROVEL verb. 1. To work interminably and without apparent progress. Often used with "over" or "through". Example: "The file scavenger has been groveling through the file directories for ten minutes now". 2. To examine minutely or in complete detail. "The compiler grovels over the entire source program before beginning to translate it." "I groveled through all the documentation, but I still couldn't find the command I wanted". GROVEL OBSCENELY. This is the standard emphatic form of grovel. GRUNGY (gruhn'jee) adjective. 1. Incredibly dirty, greasy, grubby. Anything that has been washed within the last year is not really grungy. If you sleep all night in your clothes and then get up and start hacking again, you feel grungy. 2. More generally, awful or ugly. Programs (especially CROCKS) can be described as grungy. A person with a headache or a cold probably feels grungy. GUBBISH (guhb'ish) noun. Garbage; crap; nonsense. "What is all this gubbish?" (This word is probably a portmanteau of "garbage" and "rubbish".) GUN verb. To forcibly terminate a program. May be used with or without "down". "Some idiot left a useless background program running, soaking up half the CYCLES. So I gunned it." HACK 1. noun. A quick bit of work that produces what is needed, but not well. 2. The result of that work: a CROCK. (Occasionally the connotation is affectionate). 3. An incredibly good, and perhaps very time-consuming, piece of work that produces exactly what is needed. 4. The result of that work. 5. A clever technique. 6. A brilliant practical joke. The value of the hack varies in proportion to its cleverness, harmlessness, surprise values, fame, and appropriate use of technology. 7. verb. With "together", to throw something together so it will work. See CRUFT and KLUDGE. 8. To bear something emotionally or physically. "I can't hack this heat!". 9. To work with a computer. 10. To work on something (typically a program). In specific sense: "What are you doing". "I'm hacking TECO". In general sense: "What do you do around here?" "I hack TECO". (The former is time-immediate, the latter time-extended.) More generally, "I hack x" is roughly equivalent to "X is my bag". Example: "I hack solid-state physics". 11. To pull a prank on. See definition 6 above, and also de- finition 7 of HACKER. 12. To waste time (as opposed to TOOL). Example: "Watcha up to?" "Oh, just hacking". HACK VALUE noun. Term used as the reason or motivation for expending effort toward a seemingly useless goal, the point being that the accomplished goal is a hack. For example, the MACLISP language can read and print integers as Roman numerals; the code for this was installed purely for hack value. HACK UP (ON) verb. To hack, but with the connotation that the result is a hack as in definition 2, above. Examples: "You need a quick-and-dirty sorting routine? I'll see if I can hack one up by tomorrow." "I hacked up on EMACS so it can use the Greek alphabet". HOW'S HACKING? A friendly greeting among hackers. (It recognizes the other person as a hacker and invites him to describe what he has been working on recently.) HAPPY HACKING A farewell. BACK TO HACKING Another farewell. "Happy hacking" implies that the other person will continue hacking (perhaps you interrupted him). "Oh, well, back to hacking" implies that you, the speaker, are going to return to work (and perhaps the other person also). HACK, HACK. A somewhat pointless but friendly comment, often used as a farewell but occasionally also as a greeting. "The word 'hack' doesn't really have sixty-nine different meanings", according to Phil Agre, an MIT hacker. "In fact, one which defies articulation. Which connotation is implied by a given use of the word depends in similarly profound ways on the context. Similar remarks apply to a couple of other hacker words, most notably RANDOM. Hacking might be characterized as "an appropriate application of ingenuity". Whether the result is a quick-and-dirty patchwork job or a carefully crafted work of art, you have to admire the cleverness that went into it. Here are examples of practical-joke hacks: (1) In 1961, students from Caltech (California Institute of Technology in Pasadena) hacked the Rose Bowl football game. One student posed as a reporter and "interviewed" the director of the University of Washington card stunts (such stunts involve people in the stands who hold up colored cards to make pictures). The reporter learned exactly how the stunts were operated, and also that the director would be out to dinner later. While the director was eating, the students (who called themselves the "Fiendish Fourteen") picked a lock and stole one of the direction sheets for the card stunts. They then had a printer run of 2300 copies of the sheet. The next day they picked the lock again and stole the master plans for the stunts, large sheets of graph paper colored in with the stunt pictures. Using these as a guide, they carefully made "corrections" for three of the stunts on the duplicate instruction sheets. Finally, they broke in once more, replacing the stolen master plans and substituting the stack of altered instruction sheets for the original set. The result was that three of the pictures were totally different. Instead of spelling WASHINGTON, the word CALTECH was flashed. Another stunt showed the word HUSKIES, the Washington nickname, but spelled it backward. And what was supposed to have been a picture of a husky instead showed a beaver. (Both Caltech and MIT use the beaver as a mascot. Beavers are nature's engineers). After the game, the Washington faculty athletic representative said, "Some thought it ingenious; others were indignant." The Wa- shington student body president remarked, "No hard feelings, but at the time it was unbelievable. We were amazed." This is now considered a classic hack, particularly because revising the direction sheets constituted a form of programming not unlike computer programming. (2) On November 20, 1982, MIT hacked the Harvard-Yale football game. Just after Harvard's second touchdown against Yale in the second quarter, a small black ball popped up out of the ground at the 40-yard line and grew bigger and bigger and bigger. The letters "MIT" appeared all over the ball. As the players and officials stood around gawking, the ball grew to six feet in diameter and then burst with a bang and a cloud of white smoke. As the Boston Globe later reported, "If you want to know the truth, MIT won The Game". The prank had taken weeks of careful planning by members of MIT's Delta Kappa Epsilon fraternity. The device consisted of a weather balloon, a hydraulic ram powered by Freon gas to lift it out of the ground, and a vacuum-cleaner motor to inflate it. The hackers made eight separate expeditions to Harvard Stadium between 1:00 and 5:00 AM, in which they located an unused 110-volt circuit in the stadium and ran buried wiring from the balloon device. When the time came to activate the device, two fraternity members had merely to flip a circuit breaker and push a plug into an outlet. This stunt had all the earmarks of a perfect hack: surprise, publicity, the ingenious use of technology, safety, and harmlessness. The use of manual control allowed the prank to be timed so as not to disrupt the game (it was set off between plays so the outcome of the game would not be affected). The perpetrators had even thoughtfully attached a note to the balloon explaining that the device was not dangerous and contained no explosives. Harvard president Derek Bok commented: "They have an awful lot of clever people down there at MIT, and they did it again." President Paul E. Gray of MIT said, "There is absolutely no truth to the rumor that I had to do with it, but I wish there were." Such is the way of all good hacks. HACK ATTACK noun. A period of greatly increased hacking activity. "I've been up for thirty hours; I had a hack attack and finished off that new FEATURE I thought would take two weeks to program." HACKER noun. 1. A person who enjoys learning the details of computer systems and how to stretch their capabilities -- as opposed to most users of computers, who prefer learn only the minimum amount necessary. 2. One who programs enthusiastically, or who enjoys programming rather than just theorizing about programming. 3. A person capable of appreciating HACK VALUE. 4. A person who is good at programming quickly. (By the way, not everything a hacker produces is a hack). 5. An expert on a particular program, or one who frequently does work using it or on it. Example: "A SAIL hacker". (This definition and the preceding ones are correlated, and people who fit them congregate). 6. An expert of any kind. One might be an astronomy hacker, for example. 7. A malicious or inquisitive meddler who tries to discover information by poking around. For example, a "password hacker" is one who tries, possibly by deceptive or illegal means, to discover other people's computer passwords. A "network hacker" is one who tries to learn about the computer network (possibly because he wants to improve it or possibly because he wants to interfere -- one can tell the difference only by context and tone of voice). HACKISH adjective. Being or involving a hack. HACKISHNESS, HACKITUDE noun. The quality of being or involving a hack. (The word "hackitude" is considered silly; the standard term is "hackishness"). Hackers consider themselves somewhat of an elite, though one to which new members are gladly welcome. It is a meritocracy based on ability. There is a certain self-satisfaction in identifying yourself as a hacker (but if you claim to be one and are not, you're quickly labeled BOGUS). HAIR noun. Complexity. "Decoding TECO commands requires a certain amount of hair". INFINITE HAIR, HAIR SQUARED noun. Extreme complexity. The phrase "infinite hair" is usually used in sentences, while "hair squared" is used as an interjection. For example: "I wrote a program to do my income taxes; properly handling Schedule G requires infinite hair". (To which his friend replies, "Hair squared!") HAIRY adjective. 1. Overly complicated. "DWIM is incredibly hairy". 2. Incomprehensible. "DWIM is incredibly hairy". 3. Of people: High-powered, authoritative, rare, expert, or in- comprehensible. This usage is difficult to explain except by example: "He knows a hairy lawyer who says there's nothing to worry about". F. Lee Bailey would be considered hairy. HAKMEM (hak'mem) noun. MIT Artificial Intelligence Memo 239 (February 1972). A collection of neat mathematical, programming, and electronic hacks contributed by people at MIT and elsewhere. (The title of the memo really is HAKMEM, which is a portmanteau word for "hacks memo".) Some of them are very useful techniques or powerful theorems, but most fall into the category of mathematical and computer trivia. A sampling of the entries (with authors), slightly paraphrased: Item 41. (Gene Salamin) There are exactly 23,000 prime numbers less than 2^18. Item 46. (Rich Schroeppel) The most probable suit distribution in bridge hands is 4-4-3-2, as compared to 4-3-3-3, which is the most evenly distributed. This is because the world likes to have unequal numbers: a thermodynamic effect saying things will not be in the state of lowest energy, but in the state of lowest disordered energy. Problem 81 (Rich Schroeppel) Count the magic squares of order 5 (that is, all the 5-by-5 arrangements of the numbers from 1 to 25 such that all rows, columns and diagonals add up to the same number). There are about 320 million, not counting those that differ only by rotation and re- flection. Item 174. (Bill Gosper and Stuart Nelson) 21963283741 is the only number such that if you represent it on the PDP-10 as both an integer and a floating-point number, the bit patterns of the two representations are identical. HAKMEM also contains some rather more complicated mathematical and technical items, but these examples show some of its fun flavor. HANDWAVE 1. verb. To gloss over a complex point; to distract a listener; to support a (possibly actually valid) point with blatantly faulty logic. If someone starts a sentence with "Clearly..." or "Obviously..." or "It is self-evident that...", you can be sure he is about to handwave. The idea is that if you wave your hands at the right moment, the listener may be sufficiently distracted that he will not notice that what you have said is BOGUS. Alternatively, if a listener does object, you might try to dismiss the objection "with a wave of your hand". 2. noun. A specific act of handwaving. The use of this word is often accompanied by gestures both hands up, palms forward, swinging the hands in a vertical plane pivoting at the elbows and/or shoulders (depending on the magnitude of the handwave); alternatively, holding the forearms still while rotating the hands at the wrist suffice as a remark. If a speaker makes an outra- geous, unsupported assumption, you might simply wave your hands in this way as an accusation, more eloquent than words could express, that his logic is faulty. HANG verb. 1. To wait for some event to occur; to hang around until something happens. Example: "The program prints out a menu and then hangs until you type a character". 2. To wait for some event that will never occur. "The system is hanging because the disk controller never sent the interrupt signal". HUNG adjective. In the state of hanging. If you're hacking, away at a terminal and suddenly the computer stops responding, you might yell across the hallway, "Is the system hung?". Synonym: WEDGED. HARDWARILY (hahrd-war':-lee) adverb. In a way pertaining to hardware. "The SYSTEM is hardwarily unreliable". Note the adjective "hardwary" is not used. See SOFTWARILY. HIRSUTE adjective. This word is occasionally used humorously as a synonym for HAIRY. HOOK noun. An extraneous piece of software or hardware included in order to simplify later changes of to permit changes by a user. For instance, a PDP-10 program might execute a location that is normally a JFCL (no operation), but by changing the JFCL to a PUSHJ (subroutine call) one can insert a debugging routine at that point. As another example, a simple program that prints numbers might always print them in base ten, but a more flexible version would let a variable determine what base to use. Setting the variable to "5" would make the program print numbers in base five. The variable is a simple hook. An even more flexible program might examine the variable and treat any other number as the address of a user-supplied program for printing a number. This is a very powerful hook: one can then write a routine to print numbers as Roman numerals, say, or as Hebrew ch- aracters, and connect it to the program by hanging it on the hook. Often the difference between a good program and a superb one is that the latter has useful hooks in judiciously chosen places. Both may do the original job about equally well, but the one with the hooks is much more flexible for future expansion of capabilities. ILL MEM REF (ill'mem'ref') noun. A lapse of memory; a GLITCH. This phrase is a contraction of "illegal memory reference", computer jargon for the result of im- properly accessing a computer's memory. Example: "I recognized his face, but got an ill mem ref on his name". See NXM. INFINITE adjective. Consisting of a large number of objects; extreme. Used very loosely. Example: "This program produces infinite garbage". "He is an infinite LOSER". See HAIR. The slang use of "infinite" is an abuse of its precise technical meaning in mathematics. INTERCAL (int':r-cal) noun. A computer language designed by Donald R. Woods and James M. Lyon. INTERCAL is purposely different from any other computer language in all ways but one: it is purely written language, being totally unspeakable. The name "INTERCAL" is an abbreviation for "Compiler Language With No Pronounceable Acronym". An excerpt from the INTERCAL Reference Manual will make the style of the language clear. In most programming languages, if you want a variable (say A) to have the value 65536, you would write something like LET A=65536 or A:=65536; The INTERCAL Reference Manual, however, explains that "it is a well-known and oft-demonstrated fact that a person whose work is incomprehensible is held in high esteem. For example: if one were to state that the simplest way to store 65536 in an INTERCAL variable is DO :1 <- #0¢#256 any sensible programmer would say that that was absurd. Since this is indeed the simplest method, the programmer would be made to look foolish in front of his boss, who would of course have happened to turn up, as bosses are wont to do. The effect would be no less devastating for the programmer having been correct.". INTERCAL has many other peculiar features, as well, to make it even more unspeakable. The language was actually implemented and used by many people at Princeton University. See CHARACTERS for a discussion of names of characters in INTERCAL. IRP (urp) verb. To perform a series of tasks repeatedly with a minor change each time through. A hacker who is also a teaching assistant might say, "I guess I'll IRP over these homework papers and give each a RANDOM grade". The word "IRP" is an acronym for "Indefinite RePeat". It is the name of a command in the MIDAS assembler, a program that translates PDP-10 instructions from a symbolic form to binary bits. JEDGAR (jed'g:r) A "counterspy" program. See OUTPUT SPY. JFCL (j:-fik':l, jif'k:l) verb. To cancel or annul something. "Why don't you jfcl that out?" The PDP-10 has several instructions that don't do anything (remember that SKIP means "Do not SKIP", as explained in the entry for AOS). However, the fastest do-nothing instruction happens to be JFCL, which stands for "Jump if Flag set and the CLear the flag". This does something useful, but is a very fast no-operation if no flag is specified. If one wants to patch a program by removing one instruction, the easiest thing to do is to replace the instruction with one that doesn't do anything. Such and instruction is said to have been jfcl'd out. This bit of jargon was then extended metaphorically. The license plate on hacker Geoff Goodfellow's BMW is JFCL. JIFFY (jif'ee) noun. 1. The time unit used by a clock attached to a computer to measure CPU time, typically either 1/60 second or (less commonly) one mil- lisecond. "The swapper runs every six jiffies" means that the virtual memory management routine is executed once for every six ticks of the computer's clock, or ten times a second. 2. An indeterminate time from a few seconds to forever. "I'll do it in a jiffy" means certainly not now and possibly never. This is a bit contrary to the more widespread use of the word. JOCK noun. A programmer who is characterized by the large and somewhat brute-force programs he writes. Brute-force programs typically work by enumerating all possible combinations of things in an effort to find the one combination that solves the problem. An example of a brute- -force program is one that sorts ten thousand numbers by examining them all, picking the smallest one, and saving it in another table; then examining all the numbers again and picking the smallest on except for the one it already picked; and in general choosing the next number by examining all ten thousand numbers and choosing the smallest one that hasn't yet been picked (as determined by examining all the ones already picked.) Yes, the program will produce the right answer, but it will be much slower than a program that uses even a modicum of cleverness to avoid most of the work. (A little bit of computer science -- spe- cifically, the theory of algorithms -- will show that a typical large computer such as a PDP-10, using a clever sorting method, can sort ten thousand numbers in about eight seconds, while the brute-force method outlined above would take about 40 days.) J. RANDOM (jay' ran'd:m) adjective. Arbitrary; ordinary; any one; "any old". Would you let J.Random LOSER marry your daughter?". See RANDOM. JRST (jusrt) verb. 1. To suddenly change subjects, with no intention of returning to the previous topic. Usage: rare and considered silly. 2. To jump. "Jack be nimble, Jack be quick, Jack jrst over the candle stick". This is even sillier. The PDP-10 JUMP instruction means "Do not jump", as explained in the definition of AOS. The JUMPA instruction ("JUMP Always") does jump, but it isn't quite so fast as the JRST instruction ("Jump and ReSTore flags"). The instruction is used so frequently that the speed matters, so all PDP-10 hackers automatically use the faster though more obscure JRST instruction. KLUGE, KLUDGE (klooj) noun. 1. A Rube Goldberg device in hardware of software. 2. A clever programming trick intended to solve a particularly nasty case in an efficient, if not clear, manner. Often used to repair BUGS. Often verges on being a CROCK. 3. Something that works for the wrong reason. 4. verb. To insert a kluge into a program. "I've kluged this routing to get around that weird bug, but there's probably a better way". Also "kluge up". 5. A feature that is implemented in a RUDE manner. KLUGE AROUND. To avoid (a problem) by inserting a kluge. LASER CHICKEN noun. Kung Pao Chicken, a standard Chinese dish containing chicken, peanuts, and bell peppers in a spicy pepper-oil sauce. A few hackers call it "laser chicken" for two reasons: It can ZAP you just like a laser, and the pepper-oil sauce has a red color reminiscent of a laser beam. LIFE noun. A cellular-automaton game invented by mathematician John Horton Conway, and first introduced publicly by Martin Gardner in his column "Mathematical Games" (Scientific American", October 1970). Hackers at various places contributed to the mathematical analysis of this game, notably Bill Gosper at MIT. When a hacker mentions "life", he is much more likely to mean this game than the magazine, the breakfast cereal, or the human state of existence. LINE FEED 1. verb. To feed the paper through a terminal by one line (in order to print on the next line). On a display terminal, to move the cursor down to the next line of the screen. 2. noun. The "character" which, when sent to a terminal by the computer, causes the terminal to perform this action. This is standard ASCII terminology. LINE STARVE 1. verb. To feed the paper through the terminal the wrong way by one line. (Most terminals can't do this!) On a display terminal, to move the cursor up to the previous line of the screen. Example: "To print X squared, you just output X, line starve, 2, line feed". (The line starve causes the "2" to appear on the line above the "X", and the line feed gets back to the original line.) 2. noun. A "character" (or character sequence) that causes a terminal to perform this action. This is not standard ASCII terminology. Even among hackers it is considered a bit silly. LOGICAL adjective. Conventional; assumed for the sake of exposition or convenience; not the actual thing but in some sense equivalent to it; not ne- cessarily corresponding to reality. Example: If a person who had long held a certain post (for example, Les Earnest at Stanford) left and was replaced, the re- placement would for a while be known as the "logical Les Earnest." Pepsi might be referred to as "logical Coke" (or vice versa). At Stanford, "logical" compass directions denote a coordinate system in which "logical north" is toward San Francisco, "logical south" is toward San Jose, "logical west" is away from the ocean -- even though logical north varies between physical (true) north near San Francisco and physical west near San Jose. The best rule of thumb here is that El Camino Real by definition always runs north-and-south. In giving directions, one might say, "To get to Rincon Taraco Restaurant, get onto EL CAMINO BIGNUM going logical north". Using the word "logical" helps to prevent the recipient from worrying about the fact that the sun is setting almost directly in front of him as he travels "north". A similar situation exists at MIT. Route 128 (famous for the ele- ctronics industries that have grown up along it) is a three-quarters circle surrounding Boston at a radius of ten miles, terminating at the coast line at each end. It would be most precise to describe the two directions along this highway as being "clockwise" and "counter- clockwise", but the road signs all say "north" and "south", res- pectively. A hacker would describe these directions as "logical north" and "logical south", to indicate that they are conventional directions not corresponding to the usual convention for those words. (If you went logical south along the entire length of Route 128, you would start out going northwest, curve along to the south, and finish headed due east!) Synonym: VIRTUAL. Antonym: physical. This use is an extension from its technical use in computer science. A program can be written to do input or output using a "logical device". When the program is run, the user can specify which "physical" (actual) device to use for that logical device. For example, a program might send all its error messages to a logical device called ERROR; the user can then specify whether logical device ERROR should be terminal, a disk file, or the NULL DEVICE (to throw the error messages away). A speculation is that the word "logical" is used because, even though a thing isn't the actual object in question, you can reason logically about the thing as if it were the actual object. LOSE verb. 1. To fail. A program loses when it encounters an exceptional condition or fails to work in the expected manner. 2. To be exceptionally unaesthetic. 3. Of people, to be obnoxious or unusually stupid (as opposed to ignorant). See LOSER. DESERVE TO LOSE verb. Said of someone who willfully does THE WRONG THING, or uses a feature known to be MARGINAL. What is meant is that one deserves the consequences of one's losing actions. "Boy, anyone who tries to use UNIX deserves to lose!". LOSE, LOSE interjection. A reply or comment on an undesirable s- ituation. Example: "I accidentally deleted all my files!" "Lose, lose". LOSER noun. An unexpectedly bad situation, program, programmer, or person. Someone who habitually loses (even winners can lose occasionally). Someone who knows not and knows not that he knows not. Emphatic forms are "real loser", "total loser", and "complete loser" (but not "MOBY loser", which would be a contradiction in terms). LOSS noun. Something (but not a person) that loses: a situation in which something is losing. Emphatic forms are "MOBY loss", "total loss", "complete loss". (Note that a loss can be moby, even though a loser cannot be). WHAT A LOSS! interjection. A remark to the effect that a situation is bad. Example: Suppose someone said, "Fred decided to write his program in ADA instead of LISP." The reply "What a loss!" comments that the choice was bad, or that it will result in an undesirable situation -- but may also implicitly recognize that Fred was forced to make that decision because of outside influences. On the other hand, the reply "What a loser!" is a more general remark about Fred himself, and implies that bad consequences will be entirely his fault. LOSSAGE (lowss':j) noun. The stuff of which losses are made. This is a collective noun. "What a loss!" and "What a lossage!" are nearly synonymous remarks. LPT (lip':t) noun. A Line PrinTer. "The LIST command can be used to send a file to the lpt". LUSER (loo'z:r) noun. A USER who is probably also a LOSER. ("Luser" and "loser" are pronounced identically). This word was coined about eight years ago at MIT. When you first walk up to a terminal at MIT and type "Control-Z" to get the computer's attention, it prints out some status information, including how many people are already using the computer. It might print "14 users", for example. Someone thought it would be a great joke to patch the SYSTEM to print "14 losers" instead. There ensued a great controversy, as some of the users didn't particularly want to be called losers to theirs faces every time they used the computer. For a while several hackers struggled covertly, each changing the message behind the back of the others; any time you logged into the computer it was even money whether it would say "users" or "losers". Finally, someone tried the compromise "lusers", and it stuck. To this day, when you connect to the MIT computer, it will say "14 lusers". MACROTAPE (mak'roh-tayp) noun. An industry standard reel of magnetic tape, about ten inches in diameter, as opposed to MICROTAPE. MAGIC adjective. 1. As yet unexplained, or too complicated to explain. (Arthur C. Clarke once said that any sufficiently advanced technology is indistinguishable from magic). "The precise form in which CHARACTERS are printed to the terminal is controlled by a number of magic BITS". "This routine computes the parity of an eight-bit byte in only three instructions". 2. Characteristic of something that works though no one really understands why. 3. Characteristic of a FEATURE not generally publicized which allows something otherwise impossible -- or a feature formerly in that category but now unveiled. Example: the keyboard commands at Stanford that override the screen-hiding features. See AUTOMAGICALLY. (1) When Barbara Steele was pregnant, her doctor had her take a sonogram to determine whether she was carrying twins. Now Barbara and I had both studied computer science at MIT, and we saw that some complex computerized image-processing was involved. We asked the doctor how it was done, hoping to learn some details about the mathematics involved in the computer program. The doctor simply said, "The probe sends out sound waves, which bounce off the internal organs. A microphone picks up the echoes, like radar, and sends the signals to a computer -- and the computer makes a picture." Thanks a lot! Now a hacker would have said, "... and the computer magically makes a picture", implicitly acknowledging that he had glossed over an extremely complicated process. (2) Some years ago I was snooping around in the cabinets that housed the MIT AI lab's PDP-10, and I noticed a little switch glued to the frame of on cabinet. It was obviously a homebrew job added by one of the lab's hardware hackers (no one knows who). You don't touch an unknown switch on a computer without knowing what it does, because you might CRASH it. The switch was labeled in a most unhelpful way. It had two positions, and scrawled in pencil on the metal switch body were the words "magic" and "more magic". The switch was in the "more magic" position. I called another hacker over to look at it. He had never seen the switch before, either. Closer examination revealed that the switch only had one wire running to it! The other end of the wire did disappear into the maze of wires inside the computer, but it's a basic fact of electricity that a switch can't do anything unless there are two wires connected to it. This switch had a wire connected on one side and no wire on its other side. It was clear that this switch was someone's idea of a silly joke. Convinced by our reasoning that the switch was inoperative, we flipped it. The computer instantly crashed! Imagine our utter astonishment. We wrote it off as coincidence, but nevertheless restored the switch to the "more magic" position before reviving the computer. A year later, I told this story to yet another hacker -- David Moon, as I recall. (See MOON). He clearly doubted my sanity, or suspected me of a supernatural belief in the power of this switch, or perhaps thought I was fooling him with a BOGUS SAGA. To prove it to him, I showed him the very switch, still glued to the cabinet frame with only one wire connected to it. It was still in the "more magic" position. We scrutinized the switch and its lone connection and found that the other end of the wire, though connected to the computer wiring, was connected to a ground pin. That clearly made the switch doubly useless: not only was it electrically nonoperative, but it was connected to a place that couldn't affect anything anyway. So we flipped the switch. The computer promptly crashed. This time we ran for Richard Greenblatt, a long-time MIT hacker who was close at hand. He had never noticed the switch before, either. He inspected it, concluded it was useless, got some diagonal cutters and DIKED IT OUT. We then revived the computer, and it has run fine ever since. We still don't know how the switch crashed the machine. There is a theory that some circuit near the ground pin was MARGINAL, and flipping the switch changed the electrical capacitance enough to upset the circuit as millionth-of-a-second pulses went through it. But we'll never know for sure. All we can really say is that the switch was magic. I still have that switch in my basement. Maybe I'm silly, but I usually keep it set on "more magic". MARGINAL adjective. 1. Extremely small. "A marginal increase in memory can decrease GC time drastically". (In everyday terms, this means that it's 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). See EPSILON. 2. Of extremely small merit. "This proposed new FEATURE seems rather marginal to me". 3. Of extremely small probability of WINNING; on the edge of LOSING. "The power supply was rather marginal anyway; no wonder it FRIED". MARGINALLY adverb. Slightly, somewhat. "The RAVS (raviolis) here are only marginally better than at Small Eating Place". MARGINAL HACKS noun. Margaret Jacks Hall, a building into which the Stanford Computer Science Department was recently moved. MESH noun. The character "#" (number sign). Synonyms: CRUNCH, SPLAT. See CHARACTERS. MICROTAPE (miek'roh-tayp) noun. A DECtape, as opposed to a MACROTAPE. A DECtape is a small reel of magnetic tape about four inches in diameter and an inch wide. Unlike standard magnetic tapes, microtapes allow "random access" to the data. 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 CONSED UP the word "DECtape", which of course has more commercial appeal. MISFEATURE noun. A FEATURE that eventually clobbers someone, possibly because it is not adequate for a new situation that has evolved. It is not the same as a BUG because fixing it involves a gross philosophical change to the system's structure. A misfeature is different from a simple and unforeseen side effect. The term implies that the misfeature was carefully planned, but that not all the consequences or circumstances were predicted accurately. Often a feature becomes a misfeature because a trade-off is made. Example: "Well, yeah, it's kind of a misfeature that file names are limited to six characters. That decision was made N years ago to simplify the file access software and save space on the disk, and now we're stuck with it." MOBY (moh'bee) 1. adjective. Large, immense, complex, impressive. Examples: "A Saturn V rocket is a truly moby FROB". (This example is oxymoronic -- frobs are normally not very large.) "Some MIT undergrads pulled off a moby HACK at the Harvard-Yale game." 2. noun. The total size of a computer's address space, that is, the amount of memory that a given computer can access. Examples: For a PDP-10, a moby is 262144 36-bit words; for a PDP-8, it is 4096 12-bit words; for a 68000 or a VAX, it is 4294967296 8-bit bytes. This term is useful because when a computer has "virtual memory mapping", a computer may have more physical memory attached to it than any one program can access directly. One can then say, "This computer has six mobies" to mean that the ration of physical memory to address space is six -- without having to say specifically how much memory there actually is. That in turn implies that the computer can time-share six "full-sized" programs without having to swap programs between memory and disk. If a computer has exactly two mobies, then the one with smaller (physical) addresses is called the "low moby" and the other one is called the "high moby". Example: "Response times will be long today. The high moby just FRIED, so we're limping along with only half our memory". 3. noun. 256K 36-bit words, which is the size of a moby on every hacker's favorite computer, the PDP-10. This amount is sufficiently close to a megabyte (one million bytes) that sometimes the term "moby" and "megabyte" are used interchangeably. 4. adjective. An honorific term of address (never of third-person reference) usually used to show admiration, respect, and/or friendliness to a competent hacker. Example: "So, moby Knight, how's the CONS machine doing?" (Tom Knight was one of the designers of MIT's LISP Machine, a personal computer designed to run LISP. The prototype was called "CONS".) 5. adjective. In backgammon, doubles on the dice, as in "moby sixes", "moby threes", "moby ones", etc. Compare this with BIGNUMS: Double sixes are both bignums and moby sixes, but moby ones are not bignums. (The use of term "moby" to describe double ones is sarcastic). MOBY FOO, MOBY LOSS, MOBY HACK, MOBY WIN. These are standard emphatic forms. MODE noun. A general state, usually used with an adjective or noun describing the state. Use of the word "mode" rather that "STATE" implies that the state is extended over time, and probably also that some activity characteristic of that state is being carried out. Examples: "No time to HACK; I'm in these mode". "I'll be in vacation mode next week". "My editor is stuck in some weird mode where every CHARACTER I type appears twice on the screen". "The E editor normally uses a display terminal, but if you're on a TTY it will switch to nondisplay mode". This term is normally used in a technical sense to describe the state of a program. Extended usage -- for example, to describe people -- is definitely slang. See DAY MODE, NIGHT MODE, and YOYO MODE; also COM MODE, TALK MODE, and GABRIEL MODE. MODULO (mahd'yoo-loh) preposition. Except for. This is from mathematical terminology. One writes "4=2 mod 9" to mean that 4 and 22 give the same remainder when divided by 9 (the precise meaning is a bit more complicated, but that's the idea). One might say that 4 equals 22 "except for some 9's", because if you add two 9's to 4 you get 22. Examples: "Well, LISP seems to work okay now, modulo that GC BUG". "I feel fine today modulo a slight headache". MOON noun. 1. A celestial object whose phase is very important to hackers. See PHASE OF THE MOON. 2. The login name of MIT hacker David A. Moon. Because he hacks important system software, his PHASE may also be very important to hackers. MUMBLAGE (muhm'bl:j) noun. The topic of one's mumbling. (See MUMBLE). "All that mumblage" is used like "all that stuff" when it is not quite clear what it is or how it works, or like "all that crap" when "mumble" is being used as an implicit replacement for obscenities. MUMBLE interjection. 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 big long discussion. Example: "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) 3. Yet another metasyntactic variable like FOO. MUNCH verb. To transform information in a serial fashion, often requiring large amounts of computation. To trace down a data structure. Synonyms: CRUNCH, GROVEL. "Munch" connotes somewhat less paint than the other two words. MUNCHING SQUARES noun. A display HACK dating back to the PDP-11 (early 1960s) at MIT, which employs a trivial computation (involving XOR'ing of x-y display coordinates, described in items 146-148 of HAKMEM) to produce an impressive display of moving, growing, and shrinking squares. The hack usually has a parameter (usually taken from toggle switches) which, when well chosen, can produce amazing effects. Some of these, discovered recently on the LISP machine, have been christened "munching triangles", "munching w's" and "munching mazes". More generally, suppose a graphics program produces an impressive and everchanging 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". [By the way, note the use of the word foo as a metasyntactic variable in the last sentence.] MUNG (muhng) verb. 1. To make changes to a file, often large-scale, usually ir- revocable, occasionally accidental. 2. To destroy, usually accidentally, occasionally maliciously. Note that the SYSTEM only mungs things maliciously (this is a con- sequence of Murphy's Law). 3. The kind of beans of which the sprouts are used in Chinese food. (That's their real name! Mung beans! Really!) This word is said to be a recursive acronym: MUNG means Mung Until No Good. MUNGE (muhnj) verb. Variant of MUNG. N (en) noun. 1. Some large and indeterminate number. "There were N bugs in that crock!". 2. An arbitrarily large (and perhaps infinite) number. 3. A variable whose value is specified by the current context. For example: When ordering a meal at a restaurant, "N" may refer to 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 minus one", 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. A silly riddle: "How many computers does it take to shift the bits in a register?" "N+1: N to hold all the bits still, and one to shove the register over." NTH (enth) adjective. The ordinal counterpart of N. "Now, for the Nth and last time..." In the specific context "Nth-year graduate student", N is generally assumed to be at least 4, and is usually 5 or more. See also 69. NIGHT MODE noun. The state a person is in when he is working at night and sleeping during the day. (The advantage of being in night mode is that the computers are usually overloaded during the day; at night more CYCLES are available). See PHASE and DAY MODE. NIL (nil) No. This word is used in reply to a question, particularly one asked using the "-P" convention. Example: "Foodp?" "Nil". That simple interchange means "Do you want to come eat with us?" "No, thanks". See T. (In the LISP language, the name "nil" means "false", among other things). NULL DEVICE noun. An input/output device that doesn't do anything. A card reader reads cards, and a terminal keyboard reads the characters typed on the keyboard, but reading from the null device always yields zeros. Similarly, writing to a printer produces words on paper, but writing to the null device just throws the output into the BIT BUCKET. There is no such physical thing as a null device -- it would be pointless to build one -- but it is a useful notion that is provided LOGICALLY by many operating systems. If a program normally prints out a lot of information and you don't happen to want to see it, you simply direct the program to send the output to the null device. The program is satisfied because the output is AUTOMAGICALLY discarded without wasting paper. NXM (niks':m) A lapse of memory; a GLITCH. This phrase is an acronym for "NoneXistent Memory", the result of accessing a computer's memory at an address for which no memory has been connected. A NXM is technically a special case of an ILL MEM REF, but in slang usage they are practically synonymous. OBSCURE adjective. Little-known; incomprehensible; undocumented. This word is used, in an exaggeration of its normal meaning, to imply a total lack of comprehensibility. "The reason for that last CRASH is obscure". "That program has a very obscure command syntax". "This KLUDGE works by taking advantage of an obscure FEATURE in TECO". The phrase "moderately obscure" implies that it could be figured out but probably isn't worth the trouble. OPEN noun. A left parenthesis, "(". This word is used as shorthand to eliminate ambiguity when communicating a sequence of characters vocally. To read aloud the LISP program "DEFUN FOO (X) (PLUS X 1))", which takes an arguments X and adds 1 to it, one might say: "Open def-fun foo. Open eks close. Open, plus eks one, close, close." See CLOSE. OPEN BRACKET noun. The character "[". OPEN BRACE noun. The character "{". OUTPUT SPY noun. On the MIT system there is a program that allows you to see what is being printed on someone else's terminal. It works by "spying" on the other guy's output, by examining the insides of the monitor system. It can do this because the MIT system purposely has very little in the way of "protection" that prevents one user from interfering with another. Fair is fair, however. There is another program that will automatically notify you if anyone starts to spy on your output. It works in exactly the same way, by looking at the insides that have to do with you output. This "counterspy" program is called JEDGAR (pronounced as two syllables: jed'gar), in honor of the former head of the FBI. By the way, the output spy program is called "os" (oh'ess'). Throughout the rest of computer science, and also at IBM, "OS" means "operating system", but among MIT hackers it almost always means "output spy". PARSE verb. 1. To determine the syntactic structure of a sentence or other utterance. (This is close to the standard English meaning). Example: "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 (usually at a Chinese restaurant). "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 de-boned. There is some controversy whether "unparsed" should mean "bony", or also mean "deboned". This term is derived from the technical use of the word in linguistics. Hackers know about it because some researchers in artificial intelligence work on the problem of writing computer programs that can understand and/or speak human languages. PATCH 1. noun. 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 of may not eventually be incorporated permanently into the program. 2. verb. To fix something temporarily; to insert a patch into a piece of code. See KLUGE AROUND. PDL (pid':l, pud':l) [acronym for Push Down List] noun. 1. A last-in/first-out (LIFO) queue, also known as a "stack" in computer science; more loosely, any ordered list of things. Even more loosely, any set of things. A person's "pdl" is the set of things he has to do in the future. One speaks of the next project to be attacked as having "risen to the top of the pdl" (or the top of the stack). Examples: "I'm afraid I've got real work to do, so this HACK will have to be pushed way down on my pdl." "I haven't done it yet because every time I POP my pdl something new gets PUSHED". If you are interrupted several times in the middle of a conversation, "my pdl overflowed" means "I forget what we were talking about originally". (The implication is that too many items were pushed onto the pdl than could be remembered, and so the least recent items were lost.) See PUSH and POP. OVERFLOW PDL noun. The place where you put things when your pdl is full. If you don't have one and too many things get pushed, you gorget something. The overflow pdl for a person's memory might be a memo pad. 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" is an acronym for Push Down List, and in its technical sense rather than its slang meaning always means a stack. The best example of a stack is to be found in a cafeteria: a pile of plates sitting on a spring in a well in a cart, so that when you put a plate on the top they all sink down; and when you take one off the top the rest spring up a bit. PESSIMAL adjective. Maximally bad. "This is a pessimal situation". PESSIMIZE verb. To make as bad as possible. PESSIMIZING COMPILER noun. A compiler that produces object code that is worse than the straightforward or obvious translation. (The implication is that the compiler is actually trying to optimize the program, but through stupidity is doing the opposite. A few pessimizing compilers have been written on purpose, as pranks). 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 Oxford English Dictionary. PHANTOM noun. At Stanford, the term "phantom" is used to mean a DRAGON. PHASE noun. The offset 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 according to no fixed schedule. Examples: "What's your phase?" "I've been getting in about eight P.M. lately, but I'm going to phase 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.) It is not uncommon to change one's phase by as much as six hours per day on a regular basis. For example, one can stay awake for twenty hours and then sleep for ten. This can be a bit of a strain on the metabolism when done for extended periods, however. One nice phase-changing schedule is to keep a 28-hour day: stay awake 18 hours and sleep for ten, for example. Six 28-hour days are equal to seven 24-hour days, so this schedule means you can be in day mode on weekends and in night mode (or close to it) for most weekdays that way you get lots of CYCLES by being awake at night, and yet are reasonably synchronized with the REAL WORLD on weekends. CHANGE PHASE THE HARD WAY. To stay awake for a very long time in order to get into a different phase. CHANGE PHASE THE EASY WAY. To stay asleep for a very long time in order to get into a different phase. The phenomenon of "jet lag" that afflicts travelers who cross many time-zone boundaries may be attributed to two distinct causes: the strain of travel per se, and the strain of changing phase. Hackers who suddenly find that they must change phase drastically in a short period of time, particularly the hard way, experience something like jet lag without traveling. PHASE OF THE MOON noun. A random parameter on which something is (humorously) said to depend. Something that depends on the phase of the moon is at best unpredictable, at worst unreliable. (Maybe it is predictable, but figuring it out is so complicated it isn't worth it.) Example: "Whether the editor will save your file automatically when you exit depends on the phase of the moon". The "phase of the moon" is one example of RANDOMNESS. Once a program written by Gerald Sussman (professor of electrical engineering at MIT) and Guy Steele had a BUG that really did depend on the phase of the moon! There is a little subroutine that has traditionally been used in various programs at MIT to calculate an approximation to the moon's true phase; the phase is the printed out -- at the top of program listings, for example -- along with the date and time, purely for fun. (Actually, since hackers spend most of their time indoors, this might be the only way they would ever know what the moon's phase was!) Steele incorporated this routine into a LISP program that, when it wrote out a file, would print a 'timestamp' at the top that looked something like this: ; THE MOON IS 1 DAY, 20 HOURS, 42 MINUTES, AND 54 SECONDS ; PAST THE FIRST QUARTER. ; THE SUN IS 41*44'1" NORTH OF EAST, ; 35*7'26" BELOW THE HORIZON. ; THAT MEANS IT IS NOW 2:21 AM ; ON WEDNESDAY, MARCH 23, 1983. (A calculation of the position of the sun was also included for additional HACK VALUE. The asterisk was used in lieu of a "degrees" symbol to indicate angles). Occasionally the first line of the message would be too long and would overflow onto the next line like this: ; THE MOON IS 2 DAYS, 17 HOURS, 20 MINUTES, AND 45 SECONDS ; PAST THE FIRST QUARTER. ; THE SUN IS 17*17'46" WEST OF NORTH, ; 44*56'42" BELOW THE HORIZON. ; THAT MEANS IT IS NOW 10:59 PM ; ON WEDNESDAY, MARCH 23, 1983. When the file was later read back, the program would BARF. The length of the first line depended on the precise time when the timestamp was printed, and so the bug literally depended on the phase of the moon! POM (pee-oh-em, pahm) noun. An abbreviation for PHASE OF THE MOON. This is usually used in the phrase "POM-dependent", meaning FLAKEY. POP verb. 1. To remove something from a stack or PDL. If a person says he has popped something from his pdl, he means he has finally finished working on it and can now remove it from the list of things hanging over his head. 2. To return from a digression. The term "popj" (pop'jay) is also used in this sense. "Popj?" as a simple request means "Have we finished with this digression? Shall we return to the previous subject of conversation?". "Popj!" has more the force of "Stop FLAMING about that, you LOSER! Let's return to the main point." "Popj, popj" means roughly "Now let's see, where were we?" Synonyms: CONTROL-P. Antonyms: PUSH, PUSHJ. The PDP-10 has instructions named POP and POPJ; the former pops a single word from a stack, and the latter (POP and Jump always) is a subroutine return instruction. PPN (pip':n) 1. A combination of a "project identifier" and "programmer name", used to identify a specific file directory belonging to that pro- grammer. This is used in the TOPS-10 operating system that DEC provides for the PDP-10. The implicit assumption is that there will be many projects, each with several programmers working on it, and that a programmer may work on several projects. This is not a bad orga- nization; what is totally BOGUS is that projects and programmers are identified by octal (base eight) numbers! Hence the term Project- -Programmer Number, or PPN. If I were programmer 72534 and wanted to work on project 306, I would have to tell the computer "login 306,72534". This is totally ridiculous. At CMU the TOPS-10 system was modified to be somewhat less ridiculous. Projects are identified by a letter and three decimal (not octal) digits, and a programmer is identified by his two initials, a digit indicating the first year he came to CMU, and a fourth character that is used to distinguish between, say, Fred Loser and Farlay Luser who both happened to arrive the same year. So to use the PDP-10 at CMU one might say "login A780GS70". The programmer name "GS70" is also called a "man number" at CMU, even though it isn't really a number. At Stanford, projects and programmers are identified by three letters or digits each. To work on a LISP project at Stanford, I might log in as: "login lsp, gls". This is much more mnemonic. Programmer identifiers at Stanford are usually the programmers's initials, though sometimes they are nicknames or other three-letter sequences. Even though sometimes the CMU and Stanford forms are not really (pairs of) numbers, the term "ppn" is used to refer to the combination. 2. At Stanford, the term "ppn" is often used loosely to refer to the programmer name alone. "I want to send you some mail. What's your ppn?". MIT uses an operating system called ITS that is completely unrelated to TOPS-10. ITS does not use PPN's. The closest approximation to a ppn on ITS is UNAME (user name), which is a six-character programmer name with no project number. The names JRN and JRL are sometimes used as example names when discussing ppn's; they are understood to be programmer names for (fictious) programmers named "J. Random Nerd", and "J. Random Loser". (See J. RANDOM). For example, one might say "To log in, type log one comma jay are en" (that is, "log 1,JRN"). And the listener will understand that he should use his own programmer name in place of JRN. PROTOCOL See DO PROTOCOL. PSEUDOPRIME (soo'doh-priem) noun. A backgammon prime (six consecutive occupied points) with one point missing; that is, only five out of six consecutive points are really occupied. This term is a pun. In mathematics, a pseudoprime is an integer that satisfies one of a set of criteria. Any number that passes even one of these tests is almost certainly a true prime (an integer that cannot be divided evenly by any integer except itself or 1); however, there are a very few integers that can fool the tests, so the best you can say is that a number that passes the test is "probably" prime. The hacker backgammon usage stems from the idea that a pseudoprime is almost as good as a prime: it does the job of a prime for most purposes until proven otherwise, and that probably won't happen. A true backgammon prime guarantees that your opponent cannot escape; a backgammon pseudoprime will probably prevent the opponent from escaping. PUNT verb. To give up; to decide not to do. Typically there is no intention of trying again later. Examples: "Let's punt the movie tonight". "I was going to HACK all night to get this FEATURE in, but I decided to punt" may mean that you've decided not to stay up all night, and may also mean you're not ever even going to put in the feature. This doubtless comes from football: When you punt, you give up the offense. PUSH verb. 1. To put something onto a stack or PDL. If a person says something has been pushed onto his pdl, he means yet another thing has been added to the list of things hanging over his head for him to do. 2. To enter upon a digression; to save the current discussion for later. The term PUSHJ (push'jay) is also used in this sense. "Pushj?" means "May I interrupt for a moment?". Antonyms: POP, POPJ. Synonym: CONTROL-B. The PDP-10 has instructions named PUSH and PUSHJ; the former pushes a single word onto a stack, and the latter (PUSH and Jump always) is a subroutine call instruction. QUADRUPLE BUCKY adjective. 1. Using all four of the shifting keys "control", "meta", "hyper", and "super" while typing a character key (on an MIT keyboard that has all these keys). This combination is very seldom used in practice, because when you invent a new command you usually assign it to some character that is easier to type than using all four shift keys. If you want to imply that a program has ridiculously many commands or features, you can say something like "Oh, the command that makes it spin all the tapes while whistling Beethoven's Fifth Symphony is quadruple bucky COKEBOTTLE". 2. Using four shift keys while typing a fifth character, where the four shift keys are the "control", and "meta" keys on both sides of the (MIT or Stanford) keyboard. This is very difficult to do! One accepted technique is to press the left-control and left-meta keys with your left hand, the right-control and right-meta with your right hand, and the fifth key with your nose. Such hard-to-type commands are used for things that you want to be very sure can't happen accidentally, such as throwing away your entire program and starting all over. For a complete explanation, see BUCKY BITS. QUES (kwess) 1. noun. The question mark character ("?"). 2. interjection. What? Also Ques, Ques? See WALL. QUUX (kwuhks) Originally, a meta-word like FOO. This word was coined by Guy Steele for precisely this purpose when he was young and naive and not yet interacting with the real hacker community. Had he known that "foo" was the standard, he would not have bothered. Many people invent such silly words; this one seems simply to have been lucky enough to have spread a little. In an eloquent display of poetic justice, it has returned to the originator in the form of a nickname as punishment for inventing this BLETCHEROUS word in the first place. QUUXY (kwuhks'ee) adjective. Of or pertaining to a QUUX. RANDOM 1. adjective. Unpredictable (closest to mathematical definition); weird. "The SYSTEM's been behaving pretty randomly". 2. Assorted; various; undistinguished; uninteresting. "Who was at the conference?" "Just a bunch of random business types". 3. Frivolous; unproductive; undirected. "He's just a random LOSER". 4. Incoherent or inelegant; not well organized. "The program has a random set of MISFEATURES". "That's a random name for that function". "Well, all the names were chosen pretty randomly". 5. Gratuitously wrong; poorly done and for no good apparent reason. "This subroutine randomly uses six registers where two would have sufficed". 6. In no particular order, though deterministic. "The I/O channels are in a pool, and when a file is opened one is chosen randomly". 7. noun. A random hacker. This is used particularly of high school students who soak up computer time and generally get in the way. The term "high school random" is frequently heard. 8. One who lives at Random Hall at MIT. J. RANDOM is often prefixed to a noun to make a "name" out of it (by analogy to common names such as "J. Fred Muggs"). It means roughly "some particular" or "any specific one". The most common uses are "J. Random Loser" and "J. Random Nerd". Example: "Should J. Random Loser be allowed to delete system files without warning?" RANDOMNESS noun. 1. An unexplainable MISFEATURE; gratuitous inelegance or in- consistency; failure to so THE RIGHT THING. 2. A HACK or CROCK that depends on a complex combination of coincidences; also, the combination upon which the hack or crock depends for its accidental failure to malfunction; a situation in which several BUGS or MISFEATURES happen to cancel each other. See also PHASE OF THE MOON. RAPE verb. To (metaphorically) screw someone or something, violently; in particular, to destroy a program or information irrecoverably. This term is usually used in describing damage to the file system (that portion of the computer system responsible for keeping track of all files and maintaining their integrity). Example: "Some LOSER ran a program that did direct output to the disk instead of going through the file system and ended up raping the master directory". RAV (rav) noun. A Chinese appetizer known variously in the plural as Peking ravioli, dumplings, and potstickers. The term "rav" is short for "ravioli", which among hackers always means the Chinese kind rather than the Italian kind. Both consist of a filling in a pasta shell, but the Chinese kind uses a thinner pasta and is cooked differently, either by steaming or frying. A rav or dumpling can be steamed or fried, but a potsticker is always the fried kind (so called because it sticks to the frying pot and has to be scraped off). "Let's get hot-and-sour soup and three orders of ravs". RAVE verb. 1. To persist in discussing a specific subject. 2. To speak authoritatively on a subject about which one knows very little. 3. To complain (loud and long) to a person who is not in a position to correct the difficulty. 4. To purposely annoy another person verbally. 5. To proselytize (in a loose or metaphorical sense). Synonym: FLAME. This term was imported from WPI. It differs slightly from "flame" in that "rave" implies that it is the manner or persistence of speaking that is annoying, while "flame" implies somewhat more strongly that the subject matter is annoying as well. REAL USER noun. 1. A commercial user; one who is paying "real" money for his computer usage. 2. A nonhacker; someone using the system for an explicit purpose (such as a research project, or academic course-work). See USER. It is possible for one person to play different roles at different times. This is especially true of hackers who are also students. "I need this fixed so I can do a problem set. I'm not complaining out of RANDOMNESS, but as a real user". REAL WORLD, THE noun. 1. Those institutions at which people might use the word "pro- gramming" in the same sentence as "FORTRAN", "COBOL", "RPG", "IBM", etc. 2. Places where programs do such commercially necessary but intellectually uninspiring things as compute payroll checks and invoices. 3. To programmers (especially hackers), the location of non- -programmers and activities not related to programming. 4. A universe in which the standard dress is shirt and tie, and in which a person's working hours are defined as 9 to 5. 5. The location of the status quo. 6. Anywhere outside a university. Example: "Poor fellow, he's left MIT and gone into the real world". This term is used pejoratively by those not in residence there. In conversation, talking of someone who has entered the real world is not unlike talking about a deceased person. RIGHT THING, THE noun. That which is "obviously" the correct or appropriate thing to use, do, say, etc. Use of this term often implies that in fact reasonable people may disagree. Examples: "Never let your conscience keep you from doing the right thing!" "What's the right thing for LISP to do when computing a mod 0? Should it return a, or give a divide-by-zero error?". RPG (ahr'pee'jee) noun. 1. Report Program Generator, an extremely RUDE, BOGUS, and BLETCHEROUS programming language. 2. Richard P. Gabriel, a hacker at Stanford. See GABRIEL. RUDE adjective. 1. Badly written (said of programs). 2. Functionally poor, such as a program that is very difficult to use because of gratuitously poor (RANDOM?) design decisions. Antonym: CUSPY. SACRED adjective. Reserved for the exclusive use of something (this is a me- taphorical extension of the standard meaning). Often this means that anyone may look at the sacred object, but destroying it will cause a malfunction in whatever it is sacred to. Example: The comment "Register seven is sacred to the interrupt handler" appearing in a program would be interpreted by a hacker to mean that one part of the program, the "interrupt handler", uses register 87, and if any other part of the program changes the contents of register 7 there will be dire consequences. (This information would be useful to him if he had to change a program someone else had written it tells him that new code added to the program must avoid using register 7). SAGA noun. A CUSPY but BOGUS RAVING story dealing with N RANDOM BROKEN people. Here is an example of a saga: Jon L. White (login name JONL) and I (GLS) were office mates at MIT for many years, and worked together on the LISP language. One April we both flew from Boston to California for a week on research business, to consult face to face with some people at Stanford, particularly our common friend Richard P. Gabriel (RPG; see GABRIEL). RPG picked us up at the San Francisco airport and drove us back to Palo Alto (going LOGICAL SOUTH on Route 101, parallel the EL CAMINO BIGNUM). Palo Alto is adjacent to Stanford University, and about forty miles south of San Francisco. We ate at The Good Earth, a "health food" restaurant, very popular, the sort whose milkshakes all contain honey and protein powder. JONL ordered such a shake -- the waitress claimed the flavor of the day was "lalaberry". I still have no idea what that might be, but it became a running joke. It was the color of raspberry, and JONL said it tasted rather bitter. I ate a better tostada there than I have ever had in a Mexican restaurant. After this we went to the local Uncle Gaylord's Old Fashioned Ice Cream Parlor. They make ice cream fresh daily, in a variety of intriguing flavors. It's a chain, and they have a slogan: "If you don't live near an Uncle Gaylord's -- MOVE!". Also, Uncle Gaylord (a real person) wages a constant battle to force big-name ice cream makers to print their ingredients on the package (such as air and plastic and other non-natural garbage). JONL and I had first discovered Uncle Gaylord's the previous August when we had flown to a computer science conference in Berkeley, California, the first time either of us had been on the West Coast. When not in the conference sessions, we spent our time wandering the length of Telegraph Avenue, which, like Harvard Square in Cambridge, Massachusetts, in summer was lined with pic- turesque street vendors and interesting little shops. On that street we discovered Uncle Gaylord's Berkeley store. The ice cream there was very good. During that August visit, JONL went absolutely bananas (so to speak) over one particular flavor, ginger honey. Therefore, after eating at The Good Earth -- indeed, after every lunch and dinner and before bed during our April visit -- a trip to Uncle Gaylord's (the one in Palo Alto) was mandatory. We had arrived on a Wednesday, and by Thursday evening we had been there at least four times. Each time JONL would get ginger honey ice cream and proclaim to all bystanders that "Ginger was the spice that drove the Europeans mad! That's why they sought a route to the East! They used it to preserve their otherwise off-taste meat." After the third or fourth repetition, RPG and I were getting a little tired of this spiel, and we began to paraphrase him: "Wow! Ginger! The spice that makes rotten meat taste good!" "Say! Why don't we find some dog that's been run over and sat in the sun for a week and put some ginger on it for dinner?!" "Right! With a lalaberry shake!" And so on. This failed to faze JONL; he took it in good humor, as long as we kept returning to Uncle Gaylord's. He loves ginger honey ice cream. Now, RPG and his wife KBT (Kathy Tracy) were putting us up (putting up with us?) in their home for our visit, so to thank them JONL and I took them out to a nice French restaurant of their choosing. I unadventurously chose the filet mignon, and KBT had je ne sais quoi du jour, but RPG and JONL had lapin (rabbit). (Waitress: "Oui, we have fresh rabbit, fresh today." RPG: "Well, JONL, I guess we won't need any ginger!") We finished the meal late, about 11:00 PM, which is 2:00 AM Boston time, so JONL and I were rather droopy. But it wasn't yet midnight. Off to Uncle Gaylord's. Now, the French restaurant was in Redwood City, north of Palo Alto. In leaving Redwood City, we somehow got onto Route 101 going north instead of south. JONL and I wouldn't have known the difference had RPG not mentioned it. We still knew very little of the local geography. I did figure out, however, that we were headed in the direction of Berkeley, and I half-jokingly suggested that we continue north and go to Uncle Gaylord's in Berkeley. RPG said "Fine!" and we drove on for a while and talked. I was drowsy, and JONL actually dropped off to sleep for five minutes. When he awoke, RPG said, "Gee, JONL, you must have slept all the was over the bridge!" -- referring to the one spanning San Francisco Bay. Just then we came to a sign that said "University Avenue". I mumbled something about working our way over to Telegraph Avenue; RPG said "Right!" and maneuvered some more. Eventually we pulled up in front of an Uncle Gaylord's. I hadn't really been paying attention because I was too sleepy, and I didn't really understand what was happening until RPG let me in on it a few moments later, but I was just alert enough to notice that we had somehow come to the Palo Alto Uncle Gaylord's after all. JONL noticed the resemblance to the Palo Alto store, but hadn't caught on. He said, "This isn't the Uncle Gaylord's I went to in Berkeley! It looked like a barn! But this place looks just like the one back in Pale Alto!" RPG deadpanned, "Wee, this is the one I always come to when I'm in Berkeley. They've got two in San Francisco, too. Remember, they're a chain. JONL accepted this bit of wisdom. And he was not totally ignorant -- he knew perfectly well that University Avenue was in Berkeley, not far from Telegraph Avenue. What he didn't know was the there is a completely different University Avenue in Palo Alto. JONL went up to the counter and asked for ginger honey. The guy at the counter asked whether JONL would like to taste it first -- evidently their standard procedure with that flavor, as not too many people like it. JONL said, "I'm sure I like it. Just give me a cone." The guy behind the counter insisted that JONL try just a taste first. "Some people think it tastes like soap." JONL insisted, "Look, I love ginger. I eat Chinese food. I eat raw ginger roots. I already went through this hassle with the guy back in Palo Alto. I know I like that flavor!" At the words "back in Palo Alto", the guy behind the counter got a very strange look on his face, but said nothing. KBT caught his eye and winked. Through my stupor I still hadn't quite grasped what was going on and thought RPG was rolling on the floor laughing and clutching his stomach just because JONL had launched into his spiel ("makes rotten meat a dish for a prince") for the forty-third time. At this point RPG clued me in fully. RPG, KBT and I retreated to a table, trying to stifle our chuckles. JONL remained at the counter, talking about ice cream with the guy b.t.c., comparing Uncle Gaylord's to other ice cream shops and generally having a good old time. At length the g.b.t.c. said, "You really like that stuff, huh?". JONL said, "Yeah, I've been eating it constantly back in Palo Alto for the past two days. In fact, I think that this batch is about as good as the cones I got back in Palo Alto!" G.b.t.c. looked him straight in the eye and said, "You're in Palo Alto!". JONL turned slowly around and saw the three of us collapse in a fit of giggles. He clapped a hand to his forehead and exclaimed, "I've been HACKED!". SEMI 1. (sem'ee) noun. The semicolon character ";". Example: "Commands to GRIND are prefixed by semi-semi-star" means that grind commands (whatever they are) begin with ";;*", not 1/4 of a star (*). 2. (sem'ee, sem'ie) Prefix with words such as "immediately", as a qualifier meaning "sort of" or "not really". Example: "When is the system coming up?" "Semi-immediately". (That is, maybe not for an hour). See CHARACTERS. SHIFT LEFT (RIGHT) LOGICAL verb. To move oneself to the left (right). To move out of the way. As an imperative, this implies "Get out of that (my) seat! You can move to that empty one to the left (right)." This term is used technically to describe the motions of in- formation bits in a computer register. Most computers have specific instructions with these names to perform such motions. The slang usage asks the listener to imagine that he is a BIT and to perform the appropriate motion. Other computer instructions, such as "rotate left" and EXCH, are also used in this way. The PDP-10 instruction that performs left-shifting is called LSH (lish), and so that word is sometimes used too. SHRIEK The exclamation point character "!". Synonyms: BANG, EXCL. See CHARACTERS. 69 adjective. A moderately large quantity. Example: "Go away, I have sixty-nine things to do before I GRONK OUT". Actually, any number less than 100 but large enough to have no obvious special properties will be recognized as a "large number". There is no denying that 69 is the local favorite. I don't know whether its origins are related to the obscene interpretation, but I do know that 69 decimal = 105 octal, and 69 hexadecimal = 105 decimal, which is a nice property. SLOP noun. 1. A one-sided FUDGE FACTOR, that is, an allowance for error but only in one of two directions. For example, if you need a piece of wire ten feet long and have to guess when you cut it, you make very sure to cut it too long -- by a large amount if necessary -- rather than too short by even a little bit. You can always cut off the "slop", but you can't paste it back on again. When discrete quantities are involved, slop is sometimes introduced to avoid the possibility of a FENCEPOST ERROR. 2. The ratio of the size or speed of code generated by a compiler to that of code carefully written by hand, minus one. Suppose that you have the choice to write a program in a so-called high-level language such as LISP or PASCAL, or to hand-craft it directly in machine language. (The advantage of the former is that you can write the program more easily; the advantage of the latter is that the program may be more efficient). Then the slop, as defined by the formula given above, is the amount of inefficiency in the final program because you used a compiler instead of hand-crafting it. This number is often used as a measure of the goodness of a compiler: slop below 5% is very good, and 10% is usually acceptable for most purposes. The second definition of "slop" is consonant with the first under the assumption that a compiler will never produce better code than a competent hacker. However, this assumption is not always valid. Recent software technology has produced compilers that sometimes produce better code than a good hacker because the hacker will get bored hand-crafting mountains of code and therefore be less TENSE than he could be. Compilers don't get bored. SLURP verb. To read a large data file entirely into the computer's main memory before beginning to work on it. (This may be contrasted with the strategy of reading a small piece at a time, processing it, and then reading the next piece.) Example: "This program slurps in a 1024-by-1024 matrix of numbers and than CRUNCHES them using an FFT (Fast Fourier Transform). SMART adjective. 1. Said of a program or other object that does THE RIGHT THING in a wide variety of complicated circumstances. There is a difference between calling a program smart and calling it intelligent; in particular, there do not exist any intelligent programs (although some researchers in artificial intelligence are working toward that goal). SMART TERMINAL noun. A terminal that has enough computing capability to perform useful work independent of the main computer. SMOKING CLOVER verb. A psychodelic color MUNCH due to Gosper (see GOSPERISM). This is a display HACK that produces a very strong optical illusion. A series of nested, wildly colored clover-leaf patterns appear on the screen and seem to expand in size indefinitely. When the program is stopped, the patterns are frozen; but because you have been watching them expand for a while, they suddenly seem to contract. The display changes with a speed that is awesome to anyone who is familiar with the computer hardware being used. This speed is made possible by a very clever programming technique. Also, the clover-leaf pattern is the non-obvious result of another program that is startingly simple. For both of these reasons, as well as for the illusion, smoking clover is a favorite HACK. SMOP (ess'em'oh'pee') noun. An acronym for "a Small Matter Of Programming". A piece of program code, not yet written, whose anticipated length is significantly greater than its intellectual complexity. This term is used to refer to a program that could obviously be written but is not worth the trouble. It is also used ironically to imply that a difficult problem can be easily solved because a program can be written to do it. The irony is that it is very clear that writing such a program will be a great deal of work. Example: "It's easy to change a FORTRAN compiler to compile COBOL as well; it's just a small matter of programming." SNAIL MAIL noun. Mail sent via the Postal Service rather than electronically, sometimes written as one word: SnailMail. At its worst, electronic mail usually arrives within half an hour. Compare that to the typical three days for SnailMail. If you ask a hacker for his mailing address, he will usually give you his network address for electronic mail. You have to say "What's you SnailMail address?" if you want to send him a package. SNARF (snahrf) verb. 1. To grab, especially a large document or file for the purpose of using it either with or without the owner's permission. Examples: "I snarfed the DDT manual from you desk last night". "This program snarfs all the file directories and searches for files named 'DELETE.ME'". SNARF DOWN. To snarf, sometimes with the connotation of absorbing, processing, or understanding. "I think I'll snarf down the list of DDT commands so I'll know what's changed recently". SOFTWARE ROT noun. A hypothetical disease the existence of which has been deduced from the observation that unused programs or FEATURES will stop working after sufficient time has passed even if "nothing has changed". Synonym: BIT DECAY. SOFTWARILY (sawft-war'-:l-ee) adverb. In a way pertaining to software. "The system is softwarily unreliable". Note: the adjective "softwary" is not used. See HARD- WARILY. SOS 1. (ess'oh-ess') noun. A LOSING text editor. Once, back in the 1960s, when a text editor was needed for the PDP-6, a hacker CRUFTED TOGETHER a quick-and-dirty "stopgap editor" to be used until a better one was written. Unfortunately, the old one was never really discarded when new ones came along. SOS is a descendant of that editor: SOS means "Son Of Stopgap". (Since then other programs similar in style to SOS have been written, notably BILOS (bye'lohss) the Brother-in-Law Of Stopgap). 2. (sahss) verb. To substract one from a number; to decrease the amount of something. This SOS means "Subtract One and do not Skip"; it is an antonym of AOS, named after a PDP-10 instruction. SPACE CADET KEYBOARD noun. A computer keyboard designed at MIT and used on special LISP computers. It has seven shifting keys: control, meta, hyper, super, shift, top and Greek. (See BUCKY BITS). There are six rows of keys instead of the usual four rows, and each row of keys is half again as wide as usual. It is jocularly called a "space cadet" keyboard because when sitting at it for the first time you feel like a junior space cadet at the control panel of a rocket ship: a little bit overwhelmed by all the controls. SPAZZ (spaz) 1. verb. To behave spastically or erratically; more often, to commit a single gross error. "I'm sorry I BROKE the LISP system last night. I was trying to fix that printing bug and must've spazzed royally". 2. noun. One who spazzes. "Boy, what a spazz!" 3. noun. The result of spazzing; spasticity. Example: "He forgot to make the routine that prints numbers handle negative numbers. In particular, trying to print -32768 gets an ILL MEM REF." "Boy, what a spazz!" SPLAT (splat) noun. 1. Name used in many places (DEC, IBM, and others) for the ASCII asterisk ("*") CHARACTER. 2. Name used by some people for the ASCII number-sign ("#") CHARACTER. 3. Name used by some people for the extended Stanford ASCII circle-x character. This character is also called "circle-x", "grinch", "blobby", and "FROB", among other names.) 4. Name for the semimythical extended Stanford ASCII circle-plus character. 5. The CANONICAL name for an output routine that outputs whatever the local interpretation of "splat" is. Nobody really agrees what character "splat" is, but the term is common. See CHARACTERS. SQUIGGLE (skwig':l), SQIGGLE (skig':l) noun. The character "~" (tilde). Synonym: TWIDDLE. SQUIGGLE BRACKETS noun. The brace characters "{" and "}". See CHARACTERS. STATE noun. Condition, situation. Examples: "What's the state of your latest hack?" "It's WINNING away." "The SYSTEM tried to read and write the disk simultaneously and got into at totally WEDGED state." A standard question is "What's your state?" which means "What are you doing?" or "What are you about to do?". Typical answers might be "I'm about to GRONK OUT" or "I'm hungry". Another standard question is "What's the state of the world?" meaning "What's new?" or "What's going on?". STOPPAGE (stahp':j) noun. Extreme LOSSAGE resulting in something (usually vital) becoming completely unusable. Example: "The recent system stoppage was caused by a FRIED transformer". SUPERPROGRAMMER noun. A prolific programmer; one who can code exceedingly well and quickly. Not all hackers are superprogrammers, but many are. Productivity can vary from one programmer to another by factors of as much as 1000. For example, one programmer might be able to write an average of 3 lines of working code in one day, while another, with the proper tools and skill, might be able to write 3000 lines of working code in one day. This variance is astonishing, appearing in very few other areas of human endeavor. Mark Crispin once reported, "While working at Stanford, I wrote the first 96-bit leader PDP-10 Network Control Program as my first monitor coding project. That took about two weeks, and at the time nobody believed I had accomplished it because someone on the East Coast had been working on it for over a year and still hadn't finished. I understand I rocked some boats when it was proven I had succeeded." The term "superprogrammer" is more commonly used within such places as IBM than in the hacker community. It tends to stress productivity rather than creativity or ingenuity. Hackers prefer the terms HACKER and WIZARD. SWAP verb. 1. To exchange; to trade places. See EXCH. 2. To move information from a fast-access memory to a slow-access memory (swap out), or vice versa (swap in). This is a technical term in computer science, and often specifically refers to the use of disks as "virtual memory". As pieces of data or program are needed, they are swapped into main memory for processing; when they are no longer needed for the nonce they are swapped out again. The slang use of these terms is as a fairly exact analogy referring to people's memories. Cramming for an exam might be spoken of as swapping in. If you temporarily forget someone's name but then remember it, your excuse is that it was swapped out. To "keep something swapped in" means to keep it fresh in your memory: "I reread the TECO manual every few months to keep it swapped in." If someone interrupts you just as you get a good idea, you might say, "Wait a moment while I write this down so I can swap it out", implying that if you don't write it down it will get swapped out (forgotten) as you talk. SYSTEM noun. 1. The supervisor program on the computer; the program that is responsible for coordinating the activities of the various users of the computer. 2. The entire computer system, including input/output devices, the supervisor program, and possibly other software. 3. Any large-scale program. 4. Any method or methodology. 5. The way things are usually done. 6. The existing bureaucracy. "You can't beat the system". SYSTEM HACKER noun. One who hacks the system (in sense 1 only; for sense 3 one mentions the particular program, as in LISP hacker or TECO hacker). T (tee) 1. A particular time. See TIME T. (The variable "T" is customarily used in physics to represent points in or quantities of time). 2. Yes. This word is used in reply to a question, particularly one asked using the "-P" convention. Example: "Foodp?" "T". That simple interchange means, "Do you want to come eat with us?" "Sure". See NIL. In the LISP language, the name "T" means "true", among other things. Some hackers use "T" and "NIL" instead of "yes" and "no" almost reflexively. This sometimes causes misunderstandings, when a waiter or flight attendant asks if a hacker wants coffee; but of course he will be brought a cup of tea instead. As it happens, most hackers like tea at least as well as coffee -- particularly those who frequent Chinese restaurants -- so it's not that big a problem. TALK MODEM A situation in which two or more terminals are logically linked together so that whatever is typed on the keyboard of any one appears on the screens of all. This is used for conversation via computer. See COM MODE and MODE. TASTE noun. 1. Aesthetic pleasance; the quality in programs which tends to be inversely proportional to the number of FEATURES, HACKS, CROCKS, and KLUGES programmed into it. TASTY adjective. Aesthetically pleasing; FLAVORFUL. Example: "This FEATURE comes in N tasty FLAVORS". Although "tasteful" and "flavorful" are essentially synonyms, "taste" and "flavor" are not. "Taste" refers to sound judgment on the part of the creator; a program or feature can exhibit taste but cannot "have" taste. On the other hand, a feature can have flavor. Also, "flavor" has the additional meaning of "kind" or "variety" not shared by "taste". "Flavor" is a more popular word among hackers than "taste", though both are used. TECO (tee'koh) 1. noun. A text editor developed at MIT and modified by just about everybody. If all the dialects are included, TECO might well be the single most prolific editor in use. Noted for its powerful pseudo-programming features and its incredibly hairy syntax. As an example, here is a TECO program that takes a list of names like this... Loser, J. Random Quux, The Great Dick, Moby ...sorts them alphabetically according to last name, and then puts the last name last, removing the comma, to produce this: Moby Dick J. Random Loser The Great Quux The program is: [1 J ^ P $ L $ $ J <.-Z; .,(S,$ -D .)FXl @F ^ B $K :L I $ Gl L> $$ In fact, this very program was used to produce the second, sorted, list from the first list! The manuscript for this book was produced using the EMACS editor, which is built on top of TECO and allows you to execute TECO programs. The first time I tried the program it had a BUG; I had accidentally omitted the "@" in front of "F ^ B", which, as anyone can see, is clearly THE WRONG THING. It worked fine the second time. There isn't space to describe all the features of TECO, but I will note that " ^ P" means "sort" and "J <.-Z; ... L>" is an idiomatic series of commands for "do once for every line". 2. verb. To edit using the TECO editor in one of its infinite forms; sometimes used to mean "to edit" even when not using TECO! Mark Crispin provided these historical notes: Historical note (1): DEC grabbed an ancient version of MIT TECO many years ago when it was still a TTY-oriented editor (that is, didn't make use of display screens). By now, TECO at MIT is highly dis- play-oriented and is actually a programming language for writing editors such as EMACS, rather than being used as an editor itself. Meanwhile, the outside world's various versions of TECO remain almost the same as the MIT version of 1970 or so. DEC recently tried to discourage its use, but an underground movement of sorts kept it alive. Historical note (2): Since note (1) was written, I found out that DEC tried to force their programmers by administrative decision to use a hacked-up and generally lobotomized version of SOS instead of TECO, and they revolted. TENSE adjective. Of programs, very clever and efficient. A tense piece of code often got that way because it was highly BUMMED, but sometimes it was just based on a great idea. As an example, this comment was found in a clever display routine by Mike Kazar, a student hacker at CMU: "This routine is so tense it will bring tears to your eyes. Much thanks to Craig Everhart and James Gosling for inspiring this HACK ATTACK." A tense programmer is one who produces tense code. They say that PDP-10 code flows from the pencil of hacker Bill Gosper in a maximally tense state. I don't waste my time trying to bum even one instruction from a PDP-10 program if I learn that Gosper wrote it. TENURED GRADUATE STUDENT noun. One who has been in graduate school for ten years (the usual maximum is five or six): a "ten-yeared" student. (Get it?) Students don't really get tenure, of course, the way professors do, but a tenth-year graduate student has probably been around the university longer than any nontenured professor. TERPRI (tur'pree, t:r'pree) verb. To output a CRLF; to terminate a line of text and start the next line. This comes from the name of the LISP routine that performs this action. It is a contraction of "TERminate PRInt line". THEORY noun. Any idea, plan, story, policy, or set of rules. This is a generalization and abuse of the technical meaning. Examples: "What's the theory on fixing this TECO loss?" "What's the theory on dinner tonight?" ("Chinatown, I guess.") "What's the current theory on letting LOSERS on during the day?" "The theory behind this change is to fix the following well-known screw..." THRASH verb. To move wildly or violently without accomplishing anything useful. The connotation is of a maximum of motion with a minimum of ef- fectiveness. Computer systems that are overloaded waste most of their time SWAPPING information between disk and memory rather than per- forming useful computation, and are therefore said to "trash". Someone who keeps changing his mind is said to be trashing. TIME T noun. A time or instant unspecified but understandable from context. Often used in conjunction with a later time, "T+1" or "T+N". Example: "We'll meet on campus at time T or at Louie's at time T plus one" means, in the context of going out for dinner, "If we meet at Louie's directly, we can meet there a little later than if we meet on campus and the have to travel to Louie's". (Louie's is a Chinese restaurant in Palo Alto that is a favorite with hackers. Louie makes the best potstickers I've ever tasted. See RAV). Had "thirty" been used instead of "one", it would have implied that the travel time from campus to Louie's is thirty minutes. Whatever time "T" is (and that hasn't been decided yet), you can meet half an hour later at Louie's than you could on campus and end up eating at the same time. SINCE (OR AT) TIME T EQUALS MINUS INFINITY. A long time ago; for as long as anyone can remember; at the time that some particular FROB was first designed. "That feature has been BROKEN since time T equals minus infinity". Sometimes the word "time" is omitted if there is no danger of confusing T as a time with T meaning "yes". See T. TOGGLE verb. To change a BIT from whatever state it is in to the other state: to change from 1 to 0 or from 0 to 1. This probably comes from "toggle switches", such as standard light switches -- though the word toggle apparently originally referred to the mechanism that keeps the switch in the position to which it is flipped, rather than to the fact that the switch has two positions. There are four things you can do to a bit: set it (force it to be 1), clear (or zero) it, leave it alone, or toggle it. (Mathematically, one would say that there are four distinct boolean-valued functions of one boolean argument, but saying that is much less fun than talking about toggling bits.) TOOL 1. verb. To work hard; to study; to "cram" for an exam. This is an antonym of sorts for HACK: "tooling" is working without enjoying it. The distinction is useful to hackers who are also students: tooling is programming or other work done for courses. Example: "I have to tool chemistry for a while before I GRONK OUT". 2. noun. A person who (seemingly) always tools and never hacks; a nerd (or nurd). This term is used throughout MIT: Students refer to themselves with more or less pride as "Tech tools". TRASH-80 noun. A Radio Shack TRS-80 personal computer. Hackers are accustomed to using powerful, million-dollar com- puters, and tend to look down a little on itty-bitty computers that can't deliver enough CYCLES for their purposes. This is not to say that personal computers can't be useful , or that some hackers don't enjoy working with them. Personal computers are getting better all the time. Observe, however, that many programs being sold for personal computers are developed on much larger computers that provide a better pro- gramming environment. The name "Trash-80" is used more as a play on the name of the product than as a judgment on the product as compared to its com- petitors. The term is used in good spirit by TRS-80 owners as well. TTY (tit'ee) noun. 1. A computers terminal of the Teletype variety, characterized by a noisy mechanical printer, a very limited character set, and poor print quality. This term is antiquated (like the TTYs themselves). The definition must be considered relative to modern terminals. In their heyday, TTYs were useful and fairly reliable workhorses. 2. Any computer terminal at all, especially the one that is controlling a computer program under discussion, or that the program can display information on. Example: "This program lists the current file directory on the TTY". TWEAK verb. To change slightly, relative to some reference point; to adjust finely. If a program is almost correct, rather than figuring out the precise problem you might just keep tweaking it until it works. Synonym: TWIDDLE. See also FROBNICATE and FUDGE FACTOR. TWENEX (twen'eks) noun. The TOPS-20 operating system distributed by DEC for the DECSYSTEM-20 computer, a successor to the PDP-10. There was an operating system for the PDP-10 called TOPS-10, so TOPS-20 is an obvious name for a DECSYSTEM-20 operating system, event though TOPS-20 is nothing like TOPS-10. TOPS-10 was a typically CRUFTY operating system produced by DEC itself. The firm Bolt, Beranek and Newman (BBN) developed its own operating system, called TENEX (for "TEN EXecutive system"). DEC obtained the right to use TENEX and extended it to create TOPS-20. The term "TWENEX" is therefore a contraction of "twenty TENEX". DEC people tend to cringe when they hear TOPS-20 referred to as "TWENEX", but the term seems to be catching on nevertheless. The abbreviation "20x" is also used and also pronounced "TWENEX". TWIDDLE (twid':l) 1. noun. The tilde character "~". See CHARACTERS. 2. noun. A small and insignificant change to a program. A twiddle usually fixes one BUG and generates several new ones. 3. verb. To change something in a small way. BITS, for example, are often twiddled. Twiddling a switch or knob implies much less sense of purpose than TOGGLING or TWEAKING it: see FROBNICATE. To speak of twiddling a bit connotes aimlessness, and at best doesn't specify what you're doing to the bit; by contrast, toggling a bit has a more specific meaning. UP adjective. Working; in order. Example: "The Down escalator is up". Antonym: DOWN. BRING UP verb. To create a working version and start it. Examples: "They just brought up the system". "JONL is going to bring up a new LISP compiler tonight". Antonym: TAKE DOWN. USER noun. 1. Someone doing "real work" with the computer, who uses a computer as a means rather than an end. Someone who pays to use a computer. See REAL USER. 2. A programmer who will believe anything you tell him. One who asks silly questions. See LUSER. 3. Someone who uses a program from the outside, however skill- fully, without getting into the internals of the program. One who reports BUGS instead of just going ahead and fixing them. Basically, there are two classes of people who work with a program: there are implementors (HACKERS) and users (LOSERS). The users are looked down on by hackers to a mild degree because they don't understand the full ramifications of the SYSTEM in all its glory. (The few users who do are known as REAL WINNERS). The term is a relative one: A consummate hacker may be a user with respect to some program he himself does not hack. A LISP hacker might be one who maintains LISP or one who uses LISP (but with the skill of a hacker). A LISP user is one who uses LISP, whether skillfully or not. Thus there is some overlap between the two terms; the subtle distinctions must be resolved by context. It is true that users ask questions (of necessity). Sometimes they are thoughtful or deep. Very often they are annoying or downright stupid, apparently because the user failed to think for two seconds or to look in the documentation before bothering the maintainer. VANILLA adjective. Standard, usual, of ordinary FLAVOR. "It's just a vanilla terminal; it doesn't have any interesting FEATURES". When used of food, this term very often does not mean that the food is flavored with vanilla extract! For example, "vanilla-flavored wonton soup" (or simply "vanilla wonton soup") means ordinary wonton soup, as opposed to hot-and-sour wonton soup. This word differs from CANONICAL in that the latter means "the thing you always use (or the way you always do it) unless you have some strong reason to do otherwise", whereas "vanilla" simply means "ordinary". For example, when MIT hackers go to Colleen's Chinese Cuisine, hot-and-sour wonton soup is the canonical wonton soup to get (because that is what most of them usually order) even though it isn't the vanilla wonton soup. VAXEN (vaks':n) The plural usually used among hackers for the DEC VAX computers. "Our installation has four PDP-10's and twenty vaxen". The DEC operating system for the VAX is called VMS (for Virtual Memory System). It has its advantages, but sometimes it seems to run rather slowly. Hence this limerick: There once was a system called VMS Of cycles by no means abstemious It's chock-full of hacks And runs on a VAX And makes my poor stomach all squeamious. -- The Great QUUX VIRTUAL adjective. Performing the functions of. Virtual memory acts like real memory but isn't. (A virtual memory system uses a combination of a small main memory plus a magnetic disk to give the illusion that a computer has a large main memory and the disk as needed). The term is synonymous with LOGICAL, except that "virtual" is never used with compass directions. VISIONARY noun. One who HACKS vision, in the sense of an artificial intelligence researcher working on the problem of getting computers to "see" things using TV cameras. (There isn't any problem in sending information from a TV camera to a computer. The problem is, how can the computer be programmed to make use of the camera information? See SMOP). WALL interjection. An indication of confusion, usually spoken with a quizzical tone. "Wall?" A request for further explication. This seems to be a shortened form of "Hello, wall", apparently from the phrase "up against a blank wall". This term is used primarily at WPI. WALLPAPER noun. A program listing or, especially, a transcript of all or part of a login session, showing everything that ever appeared on the terminal. (The idea was that the LPT paper for such listings was essentially good only for wallpaper to cover windows to keep the light out). WALLPAPER FILE noun. The file that contains the wallpaper information before it is actually printed on paper. (Sometimes you don't intend ever to produce a real paper copy of the file, because you can look at the file directly on your terminal, but it is still called a "wallpaper file"). This term is used infrequently nowadays, especially since other SYSTEMS have developed other terms for the concept (for example: PHOTO on TWENEX). This term possibly originated on the ITS system at MIT, where the commands to begin and end transcript files are still ":WALBEG" and ":WALEND", which produce a file named "WALL PAPER". WEDGED adjective. 1. To be stuck, incapable of proceeding without help. This is different from having CRASHED. If the system has crashed, then it has become totally nonfunctioning. If the system is "wedged", it is trying to do something but cannot make progress. It may be capable of doing a few things, but not be fully operational. For example, the system may become wedged if the disk controller FRIES; there are some things you can do without using the disks, but not many. Being wedged is slightly milder than being "hung". This term is sometimes used as a synonym for DEADLOCKED. See also HANG, LOSING, CATATONIA, and BUZZ. 2. Of a person, suffering severely from misconceptions. Example: "He's totally wedged -- he's convinced that he can levitate through meditation". "I'm sorry. I had a BIT set that you were responsible for TECO, but I was wedged". WEDGITUDE (wedj'i-tood). The quality or state of being wedged. WHEEL noun. 1. A "privilege" BIT that, when set, CANONICALLY allows the possessor to perform any operation whatsoever on a timesharing system, such as read or write any file on the system regardless of protections, change or look at any address in the running monitor, CRASH or reload the SYSTEM, and kill or create jobs and USER accounts. The term was invented on the TENEX operating system and carried over to TOPS-20 and others. See TWENEX. 2. A person who possesses a set wheel bit (and who therefore has great privilege and power on that system). "We need to find a wheel to unwedge the hung tape drives". WHEEL WARS. A period during which student wheels HACK each other by attempting to log each other our of the system, delete each other's files, or otherwise wreak havoc -- usually at the expense of the lesser USERS. WIN 1. verb. To succeed. A program wins if no unexpected conditions arise. Antonym: LOSE. 2. noun. Success, or a specific instance thereof. A pleasing outcome. A FEATURE. Emphatic forms: MOBY win, super win, hyper-win. For some reason "suitable win" is also common at MIT, usually in reference to a satisfactory solution to a problem. Antonym: LOSS. BIG WIN noun. The results of serendipity. WIN BIG verb. The experience serendipity. "I went shopping and won big; there was a two-for-one sale". WIN, WIN interjection. WINNER noun. An unexpectedly good situation, program, programmer, or person. Albert Einstein was a winner. Antonym: LOSER. REAL WINNER noun. This term is often used sarcastically, but is also used as high praise. WINNAGE (win':j) noun. The situation when a LOSSAGE is corrected or when something is winning. Quire rare. Usage: also quite rare. WINNITUDE (win':-tood) noun. The quality of winning (as opposed to WINNAGE, which is the result of winning). WIZARD noun. 1. A person who knows how a complex piece of software or hardware works (that is, who GROKS it); someone who can find and fix BUGS quickly in an emergency. This term differs somewhat from HACKER. Someone is a hacker if he has general hacking ability, but is only a wizard with respect to something if he has specific, detailed knowledge of that thing. A good hacker could become a wizard of something, given the time to study it. 2. A person who is permitted to do things forbidden to ordinary people. For example, an Adventure wizard at Stanford may play the Adventure game during the day, which is forbidden (the program simply refuses to play) to most people because it uselessly consumer to many CYCLES. WIZARDLY adjective. Pertaining to wizards. A wizardly FEATURE is one that only a wizard could understand or use properly. WOW The exclamation point character "!". Synonyms: BANG, EXCL, SHRIEK. See CHARACTERS. WRONG THING, THE noun. The opposite of THE RIGHT THING; more generally, anything that is not the right thing. In cases where "the good is the enemy of the best", the merely good, while good, is nevertheless the wrong thing. XOR (eks'ohr) conjunction. Exclusive or. "A xor B" means "A or B, but definitely not both". Example: "I want to get cherry pie xor a banana split". This derives from the technical use of the term as a function on truth-values that is true if either of two arguments is true but not both. XYZZY (eks'wie'zee'zee'wie, zi'zee) The CANONICAL "magic word". This comes from the Adventure game, in which the idea is to explore an underground cave with many rooms to collect treasure. If you type XYZZY at the appropriate time, you can move instantly between two otherwise distant points. If, therefore, you encounter some bit of MAGIC, or more precisely some technique for accomplishing magic, you might remark on this quite succinctly by saying simply "XYZZY!". This may be translated roughly as "Wow! Magic!" Example: "Ordinarily you can't look at someone else's screen if he has protected it, but if you type quadruple-bucky-CLEAR the system will let you do it anyway" "XYZZY!". YOYO MODE noun. A state in which the system is said to be when it rapidly alternates several times between being UP and being DOWN. YU-SHIANG WHOLE FISH (yoo'hsyang', yoo'shang') noun. The Greek letter lower-case gamma when written with a loop in its tail, making it look like a little fish swimming down the page. The term is actually the name of a Chinese dish in which a fish is cooked whole (not PARSED) and covered with Yu Shiang sauce. This bit of slang is used primarily by people on the MIT LISP Machine computers, which can display this character on their screens. The term also tends to elicit incredulity from people who hear about it secondhand. See CHARACTERS. ZAP 1. noun. Spiciness. 2. verb. To make food spicy. 3. verb. To make someone "suffer" by making his food spicy. (Most hackers love spicy food. Hot-and-sour soup is wimpy unless it makes you blow your nose for the rest of the meal). ZAPPED adjective. Of food, spicy. "Watch out -- than bean curd disk is really zapped tonight". Of people, wiped out of GRONKED because of eating spicy food. "I ate the bean curd and got totally zapped. I used up two boxes of Kleenex. It was great." This term is used to distinguish between food that is hot (in temperature) and food that is "hot", that is, spicy. For example, the Chinese appetizer Bon Bon Chicken is a kind of chicken salad that is cold but zapped. Hacker Bill Gosper has one of the highest tolerances for zapped food. He frequently eats at Louie's, a Chinese restaurant in Palo Alto (actually called "Hsi Nan", but hackers who know the owner refer to it simply as Louie's); and Louie will frequently try to out-zap him. When he does, you don't want to get caught in the cross fire. The food is absolutely delicious, but you would think that the sauce contains nitric acid. ZERO verb. 1. To set to zero. Usually said of small pieces of data such as BITS or words. 2. By extension, to erase; to discard all data from. Said of disks and directories, where "zeroing" need not involve actually writing zeroes throughout the area being zeroed. One may speak of something being LOGICALLY zeroed (forgotten) rather than being physically zeroed (erased). ZORCH (zorch) 1. verb. To move quickly, like a rocket ship training fire behind it. "This file transfer program is very fast; it really zorches those files through the network". 2. noun. Influence, "brownie points"; that intangible and fuzzy currency in which favors are measured. "I'd rather not ask him for that just yet; I think I've used up my quota of zorch with him for the week". 3. noun. Energy of ability. "I guess I'll PUNT fixing that bug until tomorrow. I've been up for thirty hours and I've run out of zorch". About the Authors GLS (gliss) Guy L. Steel Jr. I earned my A.B. degree (1975) in applied mathematics at Harvard College, and my S.M. (1977) and Ph.D. (1980) degrees in computer science and artificial intelligence at MIT. Since 1980 I have been an assistant professor of computer science at Carnegie-Mellon University, now on leave. Now I am a Senior Scientist at Tartan Laboratories, Incorporated. I have been hacking computers for fifteen years. I am married to another hacker, Barbara K. Steele, and we have two children. I enjoy cooking Chinese food, doing carpentry, cartooning, singing, and playing piano and guitar. But for real fun, nothing can beat an all-night hack session, preferably writing hairy TECO code for EMACS. Synonym: QUUX. DON (dahn) Donald R. Woods. My father got me interested in computers at the age of 11, back when that was still unusual. One of my very first hacks earned me $50 when his company decided to use it as a demonstration at one of the trade fairs. I studied electrical engineering at Princeton (B.S.E., 1975), mainly because they didn't have an undergraduate computer science program. Then I came out to Stanford where, after the obli- gatory dawdling and hacking, I contrived to earn a Ph.D. (1981) in computer science. By that time I was working for the Xerox Corporation, and I've been there ever since. Besides contributing to the "jargon file", I'm probably best known as coauthor (with Jim Lyon) of the INTERCAL Programming Language Reference Manual, and as one of the primary authors of the original Adventure program. RF (ahr'eff) Raphael A. Finkel. I received an A.B. degree in mathematics and an M.A.T. degree in teaching from the University of Chicago in 1972, and in 1976 a Ph.D. degree in computer science from Stanford University. I am now an associate professor in the Department of Computer Science, University of Wisconsin, Madison. Teaching is important to me, and I have received two teaching awards: the Sperry Univac 1979-1980 Computer Science Professor of the Year Award, and a 1981 University Distinguished Teaching Award. My research is in the general area of distribute algorithms; in particular, I have built several distributed operating systems. Outside of work, I enjoy studying Judaica (Mishna, Gemorra, and Yiddish) and playing piano. I don't hack much any more. MRC (murk, m:rc) Mark R. Crispin. I earned my B.S. degree (1977) in Technology and Society at Stevens Institute of Technology. Since graduating I have been a systems programmer at the Computer Science Department at Stanford University. I'm married to hacker and aspiring broadcasting personality Lynn Ann Gold; my BMW 320i's license plate is California ILVLYNN. Besides hacking, we ice skate, ski, go to punk rock concerts, collect science fiction artwork, and are dragon lovers and ardent bad movie fanatics. One recent thrill was seeing Plan Nine from Outer Space, the winner of the Golden Turkey award at the "worst movie ever made" (I agree with that assessment). We have several home computers, one of which runs an X-rated electronic bulletin-board system popular with many of the perverts in the San Francisco Bay Area. RMS (ahr'em'ess) Richard M. Stallman. I was built at a laboratory in Manhattan around 1953, and moved to the MIT Artificial Intelligence lab in 1971. My hobbies include affection, international folk dance, flying, cooking, physics, recorder, puns, science fiction fandom, and programming; I magically get paid for doing the last one. About a year ago I split up with the PDP-10 computer to which I was married for the years. We still love each other, but the world is taking us in different directions. For the moment I still live in Cambridge, Massachusetts, among our old memories. "Richard Stallman" is just my mundane name; you can call me "RMS". GFF (jef) Geoffrey S. Goodfellow. I've been a hacker ever since I ran into a model-33 TTY connected at the lightning speed of 110 bps between my seventh grade school and a PDP-10 running TENEX at Stanford University. Since my introduction to the world of hacking, formal education has held no allure for me. Two weeks into the final quarter of my senior year of high school, I dropped out and accepted a job at SRI International in Menlo Park, California. I have not returned to class since I flushed school and have no degree of any type to my name. Today, my most productive hacking is accomplished at my residence where I'm connected up to an ersatz PDP-10, a Foonly-4, running TENEX in SRI's computer science lab via a 9600 bps leased line. Professionally, my interests are primarily computer packet-switched networks, security, office automation, electronic mail, cellular radio, and mobile communications. Nonprofessionally, I like to hack, travel, eat out at fine restaurants, collect cars, and watch an occasional movie on my 6-foot projection TV.