The Jargon File, Version 4.0.0, 24 Jul 1996
Chapter 40
:SNAFU principle: /sna'foo prin'si-pl/ /n./ [from a WWII Army acronym for `Situation Normal, All Fucked Up'] "True communication is possible only between equals, because inferiors are more consistently rewarded for telling their superiors pleasant lies than for telling the truth." -- a central tenet of {Discordianism}, often invoked by hackers to explain why authoritarian hierarchies screw up so reliably and systematically. The effect of the SNAFU principle is a progressive disconnection of decision-makers from reality. This lightly adapted version of a fable dating back to the early 1960s illustrates the phenomenon perfectly:
In the beginning was the plan, and then the specification; And the plan was without form, and the specification was void.
And darkness was on the faces of the implementors thereof; And they spake unto their leader, saying: "It is a crock of shit, and smells as of a sewer."
And the leader took pity on them, and spoke to the project leader: "It is a crock of excrement, and none may abide the odor thereof."
And the project leader spake unto his section head, saying: "It is a container of excrement, and it is very strong, such that none may abide it."
The section head then hurried to his department manager, and informed him thus: "It is a vessel of fertilizer, and none may abide its strength."
The department manager carried these words to his general manager, and spoke unto him saying: "It containeth that which aideth the growth of plants, and it is very strong."
And so it was that the general manager rejoiced and delivered the good news unto the Vice President. "It promoteth growth, and it is very powerful."
The Vice President rushed to the President's side, and joyously exclaimed: "This powerful new software product will promote the growth of the company!"
And the President looked upon the product, and saw that it was very good.
After the subsequent and inevitable disaster, the {suit}s protect themselves by saying "I was misinformed!", and the implementors are demoted or fired.
:snail: /vt./ To {snail-mail} something. "Snail me a copy of those graphics, will you?"
:snail-mail: /n./ Paper mail, as opposed to electronic. Sometimes written as the single word `SnailMail'. One's postal address is, correspondingly, a `snail address'. Derives from earlier coinage `USnail' (from `U.S. Mail'), for which there have even been parody posters and stamps made. Also (less commonly) called `P-mail', from `paper mail' or `physical mail'. Oppose {email}.
:snap: /v./ To replace a pointer to a pointer with a direct pointer; to replace an old address with the forwarding address found there. If you telephone the main number for an institution and ask for a particular person by name, the operator may tell you that person's extension before connecting you, in the hopes that you will `snap your pointer' and dial direct next time. The underlying metaphor may be that of a rubber band stretched through a number of intermediate points; if you remove all the thumbtacks in the middle, it snaps into a straight line from first to last. See {chase pointers}.
Often, the behavior of a {trampoline} is to perform an error check once and then snap the pointer that invoked it so as henceforth to bypass the trampoline (and its one-shot error check). In this context one also speaks of `snapping links'. For example, in a LISP implementation, a function interface trampoline might check to make sure that the caller is passing the correct number of arguments; if it is, and if the caller and the callee are both compiled, then snapping the link allows that particular path to use a direct procedure-call instruction with no further overhead.
:snarf: /snarf/ /vt./ 1. To grab, esp. to grab a large document or file for the purpose of using it with or without the author's permission. See also {BLT}. 2. [in the Unix community] To fetch a file or set of files across a network. See also {blast}. This term was mainstream in the late 1960s, meaning `to eat piggishly'. It may still have this connotation in context. "He's in the snarfing phase of hacking -- {FTP}ing megs of stuff a day." 3. To acquire, with little concern for legal forms or politesse (but not quite by stealing). "They were giving away samples, so I snarfed a bunch of them." 4. Syn. for {slurp}. "This program starts by snarfing the entire database into core, then...." 5. [GEnie] To spray food or {programming fluid}s due to laughing at the wrong moment. "I was drinking coffee, and when I read your post I snarfed all over my desk." "If I keep reading this topic, I think I'll have to snarf-proof my computer with a keyboard {condom}." [This sense appears to be widespread among mundane teenagers --ESR]
:snarf & barf: /snarf'n-barf`/ /n./ Under a {WIMP environment}, the act of grabbing a region of text and then stuffing the contents of that region into another region (or the same one) to avoid retyping a command line. In the late 1960s, this was a mainstream expression for an `eat now, regret it later' cheap-restaurant expedition.
:snarf down: /v./ To {snarf}, with the connotation of absorbing, processing, or understanding. "I'll snarf down the latest version of the {nethack} user's guide -- it's been a while since I played last and I don't know what's changed recently."
:snark: /n./ [Lewis Carroll, via the Michigan Terminal System] 1. A system failure. When a user's process bombed, the operator would get the message "Help, Help, Snark in MTS!" 2. More generally, any kind of unexplained or threatening event on a computer (especially if it might be a boojum). Often used to refer to an event or a log file entry that might indicate an attempted security violation. See {snivitz}. 3. UUCP name of snark.thyrsus.com, home site of the Jargon File versions from 2.*.* on (i.e., this lexicon).
:sneaker: /n./ An individual hired to break into places in order to test their security; analogous to {tiger team}. Compare {samurai}.
:sneakernet: /snee'ker-net/ /n./ Term used (generally with ironic intent) for transfer of electronic information by physically carrying tape, disks, or some other media from one machine to another. "Never underestimate the bandwidth of a station wagon filled with magtape, or a 747 filled with CD-ROMs." Also called `Tennis-Net', `Armpit-Net', `Floppy-Net' or `Shoenet'.
:sniff: /v.,n./ Synonym for {poll}.
:snivitz: /sniv'itz/ /n./ A hiccup in hardware or software; a small, transient problem of unknown origin (less serious than a {snark}). Compare {glitch}.
:SO: /S-O/ /n./ 1. (also `S.O.') Abbrev. for Significant Other, almost invariably written abbreviated and pronounced /S-O/ by hackers. Used to refer to one's primary relationship, esp. a live-in to whom one is not married. See {MOTAS}, {MOTOS}, {MOTSS}. 2. [techspeak] The Shift Out control character in ASCII (Control-N, 0001110).
:social engineering: /n./ Term used among {cracker}s and {samurai} for cracking techniques that rely on weaknesses in {wetware} rather than software; the aim is to trick people into revealing passwords or other information that compromises a target system's security. Classic scams include phoning up a mark who has the required information and posing as a field service tech or a fellow employee with an urgent access problem. See also the {tiger team} story in the {patch} entry.
:social science number: /n./ [IBM] A statistic that is {content-free}, or nearly so. A measure derived via methods of questionable validity from data of a dubious and vague nature. Predictively, having a social science number in hand is seldom much better than nothing, and can be considerably worse. As a rule, {management} loves them. See also {numbers}, {math-out}, {pretty pictures}.
:sodium substrate: /n./ Syn {salt substrate}.
:soft boot: /n./ See {boot}.
:softcopy: /soft'kop-ee/ /n./ [by analogy with `hardcopy'] A machine-readable form of corresponding hardcopy. See {bits}, {machinable}.
:software bloat: /n./ The results of {second-system effect} or {creeping featuritis}. Commonly cited examples include `ls(1)', {X}, {BSD}, {Missed'em-five}, and {OS/2}.
:software hoarding: /n./ Pejorative term employed by members and adherents of the {GNU} project to describe the act of holding software proprietary, keeping it under trade secret or license terms which prohibit free redistribution and modification. Used primarily in Free Software Foundation propaganda. For a summary of related issues, see {GNU}.
:software laser: /n./ An optical laser works by bouncing photons back and forth between two mirrors, one totally reflective and one partially reflective. If the lasing material (usually a crystal) has the right properties, photons scattering off the atoms in the crystal will excite cascades of more photons, all in lockstep. Eventually the beam will escape through the partially-reflective mirror. One kind of {sorcerer's apprentice mode} involving {bounce message}s can produce closely analogous results, with a {cascade} of messages escaping to flood nearby systems. By mid-1993 there had been at least two publicized incidents of this kind.
:software rot: /n./ Term used to describe the tendency of software that has not been used in a while to {lose}; such failure may be semi-humorously ascribed to {bit rot}. More commonly, `software rot' strikes when a program's assumptions become out of date. If the design was insufficiently {robust}, this may cause it to fail in mysterious ways.
For example, owing to endemic shortsightedness in the design of COBOL programs, most will succumb to software rot when their 2-digit year counters {wrap around} at the beginning of the year 2000. Actually, related lossages often afflict centenarians who have to deal with computer software designed by unimaginative clods. One such incident became the focus of a minor public flap in 1990, when a gentleman born in 1889 applied for a driver's license renewal in Raleigh, North Carolina. The new system refused to issue the card, probably because with 2-digit years the ages 101 and 1 cannot be distinguished.
Historical note: Software rot in an even funnier sense than the mythical one was a real problem on early research computers (e.g., the R1; see {grind crank}). If a program that depended on a peculiar instruction hadn't been run in quite a while, the user might discover that the opcodes no longer did the same things they once did. ("Hey, so-and-so needs an instruction to do such-and-such. We can {snarf} this opcode, right? No one uses it.")
Another classic example of this sprang from the time an MIT hacker found a simple way to double the speed of the unconditional jump instruction on a PDP-6, so he patched the hardware. Unfortunately, this broke some fragile timing software in a music-playing program, throwing its output out of tune. This was fixed by adding a defensive initialization routine to compare the speed of a timing loop with the real-time clock; in other words, it figured out how fast the PDP-6 was that day, and corrected appropriately.
Compare {bit rot}.
:softwarily: /soft-weir'i-lee/ /adv./ In a way pertaining to software. "The system is softwarily unreliable." The adjective **`softwary' is *not* used. See {hardwarily}.
:softy: /n./ [IBM] Hardware hackers' term for a software expert who is largely ignorant of the mysteries of hardware.
:some random X: /adj./ Used to indicate a member of class X, with the implication that Xs are interchangeable. "I think some random cracker tripped over the guest timeout last night." See also {J. Random}.
:sorcerer's apprentice mode: /n./ [from Goethe's "Der Zauberlehrling" via Paul Dukas's "L'apprenti sorcier" the film "Fantasia"] A bug in a protocol where, under some circumstances, the receipt of a message causes multiple messages to be sent, each of which, when received, triggers the same bug. Used esp. of such behavior caused by {bounce message} loops in {email} software. Compare {broadcast storm}, {network meltdown}, {software laser}, {ARMM}.
:SOS: /S-O-S/ /n. obs./ 1. An infamously {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 (in particular, {TECO}) came along. SOS is a descendant (`Son of Stopgap') of that editor, and many PDP-10 users gained the dubious pleasure of its acquaintance. Since then other programs similar in style to SOS have been written, notably the early font editor BILOS /bye'lohs/, the Brother-In-Law Of Stopgap (the alternate expansion `Bastard Issue, Loins of Stopgap' has been proposed). 2. /sos/ /vt./ To decrease; inverse of {AOS}, from the PDP-10 instruction set.
:source of all good bits: /n./ A person from whom (or a place from which) useful information may be obtained. If you need to know about a program, a {guru} might be the source of all good bits. The title is often applied to a particularly competent secretary.
:space-cadet keyboard: /n./ A now-legendary device used on MIT LISP machines, which inspired several still-current jargon terms and influenced the design of {EMACS}. It was equipped with no fewer than *seven* shift keys: four keys for {bucky bits} (`control', `meta', `hyper', and `super') and three like regular shift keys, called `shift', `top', and `front'. Many keys had three symbols on them: a letter and a symbol on the top, and a Greek letter on the front. For example, the `L' key had an `L' and a two-way arrow on the top, and the Greek letter lambda on the front. By pressing this key with the right hand while playing an appropriate `chord' with the left hand on the shift keys, you could get the following results:
L lowercase l
shift-L uppercase L
front-L lowercase lambda
front-shift-L uppercase lambda
top-L two-way arrow (front and shift are ignored)
And of course each of these might also be typed with any combination of the control, meta, hyper, and super keys. On this keyboard, you could type over 8000 different characters! This allowed the user to type very complicated mathematical text, and also to have thousands of single-character commands at his disposal. Many hackers were actually willing to memorize the command meanings of that many characters if it reduced typing time (this attitude obviously shaped the interface of EMACS). Other hackers, however, thought having that many bucky bits was overkill, and objected that such a keyboard can require three or four hands to operate. See {bucky bits}, {cokebottle}, {double bucky}, {meta bit}, {quadruple bucky}.
Note: early versions of this entry incorrectly identified the space-cadet keyboard with the `Knight keyboard'. Though both were designed by Tom Knight, the latter term was properly applied only to a keyboard used for ITS on the PDP-10 and modeled on the Stanford keyboard (as described under {bucky bits}). The true space-cadet keyboard evolved from the first Knight keyboard.
:spaceship operator: /n./ The glyph `<=>', so-called apparently because in the low-resolution constant-width font used on many terminals it vaguely resembles a flying saucer. {Perl} uses this to denote the signum-of-difference operation.
:SPACEWAR: /n./ A space-combat simulation game, inspired by E. E. "Doc" Smith's "Lensman" books, in which two spaceships duel around a central sun, shooting torpedoes at each other and jumping through hyperspace. This game was first implemented on the PDP-1 at MIT in 1960--61. SPACEWAR aficionados formed the core of the early hacker culture at MIT. Nine years later, a descendant of the game motivated Ken Thompson to build, in his spare time on a scavenged PDP-7, the operating system that became {{Unix}}. Less than nine years after that, SPACEWAR was commercialized as one of the first video games; descendants are still {feep}ing in video arcades everywhere.
:spaghetti code: /n./ Code with a complex and tangled control structure, esp. one using many GOTOs, exceptions, or other `unstructured' branching constructs. Pejorative. The synonym `kangaroo code' has been reported, doubtless because such code has so many jumps in it.
:spaghetti inheritance: /n./ [encountered among users of object-oriented languages that use inheritance, such as Smalltalk] A convoluted class-subclass graph, often resulting from carelessly deriving subclasses from other classes just for the sake of reusing their code. Coined in a (successful) attempt to discourage such practice, through guilt-by-association with {spaghetti code}.
:spam: /vt.,vi.,n./ [from "Monty Python's Flying Circus"] 1. To crash a program by overrunning a fixed-size buffer with excessively large input data. See also {buffer overflow}, {overrun screw}, {smash the stack}. 2. To cause a newsgroup to be flooded with irrelevant or inappropriate messages. You can spam a newsgroup with as little as one well- (or ill-) planned message (e.g. asking "What do you think of abortion?" on soc.women). This is often done with {cross-post}ing (e.g. any message which is crossposted to alt.rush-limbaugh and alt.politics.homosexuality will almost inevitably spam both groups). 3. To send many identical or nearly-identical messages separately to a large number of Usenet newsgroups. This is one sure way to infuriate nearly everyone on the Net.
The second and third definitions have become much more prevalent as the Internet has opened up to non-techies, and to many Usenetters sense 3 is now (1995) primary. In this sense the term has apparantly begun to go mainstream, though without its original sense or folkloric freight -- there is apparently a widespread belief among {luser}s that "spamming" is what happens when you dump cans of Spam into a revolving fan.
:special-case: /vt./ To write unique code to handle input to or situations arising in a program that are somehow distinguished from normal processing. This would be used for processing of mode switches or interrupt characters in an interactive interface (as opposed, say, to text entry or normal commands), or for processing of {hidden flag}s in the input of a batch program or {filter}.
:speedometer: /n./ A pattern of lights displayed on a linear set of LEDs (today) or nixie tubes (yesterday, on ancient mainframes). The pattern is shifted left every N times the operating system goes through its {main loop}. A swiftly moving pattern indicates that the system is mostly idle; the speedometer slows down as the system becomes overloaded. The speedometer on Sun Microsystems hardware bounces back and forth like the eyes on one of the Cylons from the wretched "Battlestar Galactica" TV series.
Historical note: One computer, the GE 600 (later Honeywell 6000) actually had an *analog* speedometer on the front panel, calibrated in instructions executed per second.
:spell: /n./ Syn. {incantation}.
:spelling flame: /n./ [Usenet] A posting ostentatiously correcting a previous article's spelling as a way of casting scorn on the point the article was trying to make, instead of actually responding to that point (compare {dictionary flame}). Of course, people who are more than usually slovenly spellers are prone to think *any* correction is a spelling flame. It's an amusing comment on human nature that spelling flames themselves often contain spelling errors.
:spiffy: /spi'fee/ /adj./ 1. Said of programs having a pretty, clever, or exceptionally well-designed interface. "Have you seen the spiffy {X} version of {empire} yet?" 2. Said sarcastically of a program that is perceived to have little more than a flashy interface going for it. Which meaning should be drawn depends delicately on tone of voice and context. This word was common mainstream slang during the 1940s, in a sense close to 1.
:spike: /v./ To defeat a selection mechanism by introducing a (sometimes temporary) device that forces a specific result. The word is used in several industries; telephone engineers refer to spiking a relay by inserting a pin to hold the relay in either the closed or open state, and railroaders refer to spiking a track switch so that it cannot be moved. In programming environments it normally refers to a temporary change, usually for testing purposes (as opposed to a permanent change, which would be called {hardwired}).
:spin: /vi./ Equivalent to {buzz}. More common among C and Unix programmers.
:spl: /S-P-L/ [abbrev, from Set Priority Level] The way traditional Unix kernels implement mutual exclusion by running code at high interrupt levels. Used in jargon to describe the act of tuning in or tuning out ordinary communication. Classically, spl levels run from 1 to 7; "Fred's at spl 6 today" would mean that he is very hard to interrupt. "Wait till I finish this; I'll spl down then." See also {interrupts locked out}.
:splash screen: /n./ [Mac users] Syn. {banner}, sense 3.
:splat: /n./ 1. Name used in many places (DEC, IBM, and others) for the asterisk (`*') character (ASCII 0101010). This may derive from the `squashed-bug' appearance of the asterisk on many early line printers. 2. [MIT] Name used by some people for the `#' character (ASCII 0100011). 3. [Rochester Institute of Technology] The {feature key} on a Mac (same as {alt}, sense 2). 4. obs. Name used by some people for the Stanford/ITS extended ASCII circle-x character. This character is also called `blobby' and `frob', among other names; it is sometimes used by mathematicians as a notation for `tensor product'. 5. obs. Name for the semi-mythical Stanford extended ASCII circle-plus character. See also {{ASCII}}.