The Jargon File, Version 2.9.10, 01 Jul 1992
Part 38
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 Knight keyboard.
: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 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: [from the {MUD} community] vt. To crash a program by overrunning a fixed-size buffer with excessively large input data. See also {buffer overflow}, {overrun screw}, {smash the stack}.
:special-case: vt. To write unique code to handle input to or situations arising in 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 software 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 Honeywell 6000 (later GE 600) actually had an *analog* speedometer on the front panel, calibrated in instructions executed per second.
:spell: n. Syn. {incantation}.
: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 which 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}.
: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. [Stanford] 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. [Stanford] Name for the semi-mythical extended ASCII circle-plus character. 6. Canonical name for an output routine that outputs whatever the local interpretation of `splat' is.
With ITS and WAITS gone, senses 4--6 are now nearly obsolete. See also {{ASCII}}.
:spod: [Great Britain] n. A lower form of life found on {talker system}s and {MUD}s. The spod has few friends in {RL} and uses talkers instead, finding communication easier and preferable over the net. He has all the negative traits of the {computer geek} without having any interest in computers per se. Lacking any knowledge of or interest in how networks work, and considering his access a God-given right, he is a major irritant to sysadmins, clogging up lines in order to reach new MUDs, following passed-on instructions on how to sneak his way onto Internet ("Wow! It's in America!") and complaining when he is not allowed to use busy routes. A true spod will start any conversation with "Are you male or female?" (and follow it up with "Got any good numbers/IDs/passwords?") and will not talk to someone physically present in the same terminal room until they log onto the same machine that he is using and enter talk mode. Compare {newbie}, {tourist}, {weenie}, {twink}, {terminal junkie}.
:sponge: [UNIX] n. A special case of a {filter} that reads its entire input before writing any output; the canonical example is a sort utility. Unlike most filters, a sponge can conveniently overwrite the input file with the output data stream. If your file system has versioning (as ITS did and VMS does now) the sponge/filter distinction loses its usefulness, because directing filter output would just write a new version. See also {slurp}.
:spooge: /spooj/ 1. n. Inexplicable or arcane code, or random and probably incorrect output from a computer program. 2. vi. To generate spooge (sense 1).
:spool: [from early IBM `Simultaneous Peripheral Operation On-Line', but this acronym is widely thought to have been contrived for effect] vt. To send files to some device or program (a `spooler') that queues them up and does something useful with them later. The spooler usually understood is the `print spooler' controlling output of jobs to a printer, but the term has been used in connection with other peripherals (especially plotters and graphics devices) and occasionally even for input devices. See also {demon}.
:spool file: n. Any file to which data is {spool}ed to await the next stage of processing. Especially used in circumstances where spooling the data copes with a mismatch between speeds in two devices or pieces of software. For example, when you send mail under UNIX, it's typically copied to a spool file to await a transport {demon}'s attentions. This is borderline techspeak.
:square tape: n. Mainframe magnetic tape cartridges for use with IBM 3480 or compatible tape drives. The term comes from the square (actually rectangular) shape of the cartridges; contrast {round tape}.
:stack: n. A person's stack is the set of things he or she has to do in the future. One speaks of the next project to be attacked as having risen to the top of the stack. "I'm afraid I've got real work to do, so this'll have to be pushed way down on my stack." "I haven't done it yet because every time I pop my stack something new gets pushed." If you are interrupted several times in the middle of a conversation, "My stack overflowed" means "I forget what we were talking about." The implication is that more items were pushed onto the stack than could be remembered, so the least recent items were lost. The usual physical example of a stack is to be found in a cafeteria: a pile of plates or trays sitting on a spring in a well, so that when you put one on the top they all sink down, and when you take one off the top the rest spring up a bit. See also {push} and {pop}.
At MIT, {pdl} used to be a more common synonym for {stack} in all these contexts, and this may still be true. Everywhere else {stack} seems to be the preferred term. {Knuth} (`The Art of Computer Programming', second edition, vol. 1, p. 236) says:
Many people who realized the importance of stacks and queues independently have given other names to these structures: stacks have been called push-down lists, reversion storages, cellars, nesting stores, piles, last-in-first-out ("LIFO") lists, and even yo-yo lists!
:stack puke: n. Some processor architectures are said to `puke their guts onto the stack' to save their internal state during exception processing. The Motorola 68020, for example, regurgitates up to 92 bytes on a bus fault. On a pipelined machine, this can take a while.
:stale pointer bug: n. Synonym for {aliasing bug} used esp. among microcomputer hackers.
:state: n. 1. Condition, situation. "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 a totally wedged state." The standard question "What's your state?" means "What are you doing?" or "What are you about to do?" Typical answers are "about to gronk out", or "hungry". Another standard question is "What's the state of the world?", meaning "What's new?" or "What's going on?". The more terse and humorous way of asking these questions would be "State-p?". Another way of phrasing the first question under sense 1 would be "state-p latest hack?". 2. Information being maintained in non-permanent memory (electronic or human).
:steam-powered: adj. Old-fashioned or underpowered; archaic. This term does not have a strong negative loading and may even be used semi-affectionately for something that clanks and wheezes a lot but hangs in there doing the job.
:stiffy: [University of Lowell, Massachusetts.] n. 3.5-inch {microfloppies}, so called because their jackets are more firm than those of the 5.25-inch and the 8-inch floppy. Elsewhere this might be called a `firmy'.
:stir-fried random: alt. `stir-fried mumble' n. Term used for the best dish of many of those hackers who can cook. Consists of random fresh veggies and meat wokked with random spices. Tasty and economical. See {random}, {great-wall}, {ravs}, {{laser chicken}}, {{oriental food}}; see also {mumble}.
:stomp on: vt. To inadvertently overwrite something important, usually automatically. "All the work I did this weekend got stomped on last night by the nightly server script." Compare {scribble}, {mangle}, {trash}, {scrog}, {roach}.
:Stone Age: n., adj. 1. In computer folklore, an ill-defined period from ENIAC (ca. 1943) to the mid-1950s; the great age of electromechanical {dinosaur}s. Sometimes used for the entire period up to 1960--61 (see {Iron Age}); however, it is funnier and more descriptive to characterize the latter period in terms of a `Bronze Age' era of transistor-logic, pre-ferrite-{core} machines with drum or CRT mass storage (as opposed to just mercury delay lines and/or relays). See also {Iron Age}. 2. More generally, a pejorative for any crufty, ancient piece of hardware or software technology. Note that this is used even by people who were there for the {Stone Age} (sense 1).
:stone knives and bearskins: [ITS, prob. from the Star Trek Classic episode "The City on the Edge of Forever"] n. A term traditionally used by {ITS} fans to describe (and deprecate) computing environments they regard as less advanced, with the (often correct) implication that said environments were grotesquely primitive in light of what is known about good ways to design things. As in "Don't get too used to the facilities here. Once you leave MIT it's stone knives and bearskins as far as the eye can see". Compare {steam-powered}.
:stoppage: /sto'p*j/ n. Extreme {lossage} that renders something (usually something vital) completely unusable. "The recent system stoppage was caused by a {fried} transformer."
:store: [prob. from techspeak `main store'] n. Preferred Commonwealth synonym for {core}. Thus, `bringing a program into store' means not that one is returning shrink-wrapped software but that a program is being {swap}ped in.
:stroke: n. Common name for the slant (`/', ASCII 0101111) character. See {ASCII} for other synonyms.
:strudel: n. Common (spoken) name for the at-sign (`@', ASCII 1000000) character. See {ASCII} for other synonyms.
:stubroutine: /stuhb'roo-teen/ [contraction of `stub subroutine'] n. Tiny, often vacuous placeholder for a subroutine that is to be written or fleshed out later.
:studlycaps: /stuhd'lee-kaps/ n. A hackish form of silliness similar to {BiCapitalization} for trademarks, but applied randomly and to arbitrary text rather than to trademarks. ThE oRigiN and SigNificaNce of thIs pRacTicE iS oBscuRe.
:stunning: adj. Mind-bogglingly stupid. Usually used in sarcasm. "You want to code *what* in ADA? That's ... a stunning idea!"
:stupid-sort: n. Syn. {bogo-sort}.
:Stupids: n. Term used by {samurai} for the {suit}s who employ them; succinctly expresses an attitude at least as common, though usually better disguised, among other subcultures of hackers. There may be intended reference here to an SF story originally published in 1952 but much anthologized since, Mark Clifton's `Star, Bright'. In it, a super-genius child classifies humans into a very few `Brights' like herself, a huge majority of `Stupids', and a minority of `Tweens', the merely ordinary geniuses.
:subshell: /suhb'shel/ [UNIX, MS-DOS] n. An OS command interpreter (see {shell}) spawned from within a program, such that exit from the command interpreter returns one to the parent program in a state that allows it to continue execution. Compare {shell out}; oppose {chain}.
:sucking mud: [Applied Data Research] adj. (also `pumping mud') Crashed or wedged. Usually said of a machine that provides some service to a network, such as a file server. This Dallas regionalism derives from the East Texas oilfield lament, "Shut 'er down, Ma, she's a-suckin' mud". Often used as a query. "We are going to reconfigure the network, are you ready to suck mud?"
:sufficiently small: adj. Syn. {suitably small}.
:suit: n. 1. Ugly and uncomfortable `business clothing' often worn by non-hackers. Invariably worn with a `tie', a strangulation device that partially cuts off the blood supply to the brain. It is thought that this explains much about the behavior of suit-wearers. Compare {droid}. 2. A person who habitually wears suits, as distinct from a techie or hacker. See {loser}, {burble}, {management}, {Stupids}, {SNAFU Principle}, and {brain-damaged}. English, by the way, is relatively kind; our Moscow correspondent informs us that the corresponding idiom in Russian hacker jargon is `sovok', lit. a tool for grabbing garbage.
:suitable win: n. See {win}.
:suitably small: [perverted from mathematical jargon] adj. An expression used ironically to characterize unquantifiable behavior that differs from expected or required behavior. For example, suppose a newly created program came up with a correct full-screen display, and one publicly exclaimed: "It works!" Then, if the program dumps core on the first mouse click, one might add: "Well, for suitably small values of `works'." Compare the characterization of pi under {{random numbers}}.
:sun lounge: [Great Britain] n. The room where all the Sun workstations live. The humor in this term comes from the fact that it's also in mainstream use to describe a solarium, and all those Sun workstations clustered together give off an amazing amount of heat.
:sun-stools: n. Unflattering hackerism for SunTools, a pre-X windowing environment notorious in its day for size, slowness, and misfeatures. {X}, however, is larger and slower; see {second-system effect}.
:sunspots: n. 1. Notional cause of an odd error. "Why did the program suddenly turn the screen blue?" "Sunspots, I guess." 2. Also the cause of {bit rot} --- from the myth that sunspots will increase {cosmic rays}, which can flip single bits in memory. See {cosmic rays}, {phase of the moon}.
:superprogrammer: n. 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 three orders of magnitude. 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, might be able to write 3,000. This range is astonishing; it is matched in very few other areas of human endeavor.) The term `superprogrammer' is more commonly used within such places as IBM than in the hacker community. It tends to stress na"ive measures of productivity and to underweight creativity, ingenuity, and getting the job *done* --- and to sidestep the question of whether the 3,000 lines of code do more or less useful work than three lines that do the {Right Thing}. Hackers tend to prefer the terms {hacker} and {wizard}.
:superuser: [UNIX] n. Syn. {root}, {avatar}. This usage has spread to non-UNIX environments; the superuser is any account with all {wheel} bits on. A more specific term than {wheel}.
:support: n. After-sale handholding; something many software vendors promise but few deliver. To hackers, most support people are useless --- because by the time a hacker calls support he or she will usually know the relevant manuals better than the support people (sadly, this is *not* a joke or exaggeration). A hacker's idea of `support' is a t^ete-`a-t^ete with the software's designer.
:Suzie COBOL: /soo'zee koh'bol/ 1. [IBM: prob. from Frank Zappa's `Suzy Creamcheese'] n. A coder straight out of training school who knows everything except the value of comments in plain English. Also (fashionable among personkind wishing to avoid accusations of sexism) `Sammy Cobol' or (in some non-IBM circles) `Cobol Charlie'. 2. [proposed] Meta-name for any {code grinder}, analogous to {J. Random Hacker}.
:swab: /swob/ [From the mnemonic for the PDP-11 `SWAp Byte' instruction, as immortalized in the `dd(1)' option `conv=swab' (see {dd})] 1. vt. To solve the {NUXI problem} by swapping bytes in a file. 2. n. The program in V7 UNIX used to perform this action, or anything functionally equivalent to it. See also {big-endian}, {little-endian}, {middle-endian}, {bytesexual}.
:swap: vt. 1. [techspeak] To move information from a fast-access memory to a slow-access memory (`swap out'), or vice versa (`swap in'). Often refers specifically to the use of disks as `virtual memory'. As pieces of data or program are needed, they are swapped into {core} for processing; when they are no longer needed they may be swapped out again. 2. The jargon use of these terms analogizes people's short-term memories with core. 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 got a good idea, you might say "Wait a moment while I swap this out", implying that the piece of paper is your extra-somatic memory and if you don't swap the info out by writing it down it will get overwritten and lost as you talk. Compare {page in}, {page out}.
:swap space: n. Storage space, especially temporary storage space used during a move or reconfiguration. "I'm just using that corner of the machine room for swap space."
:swapped in: n. See {swap}. See also {page in}.
:swapped out: n. See {swap}. See also {page out}.
:swizzle: v. To convert external names, array indices, or references within a data structure into address pointers when the data structure is brought into main memory from external storage (also called `pointer swizzling'); this may be done for speed in chasing references or to simplify code (e.g., by turning lots of name lookups into pointer dereferences). The converse operation is sometimes termed `unswizzling'. See also {snap}.
:sync: /sink/ (var. `synch') n., vi. 1. To synchronize, to bring into synchronization. 2. [techspeak] To force all pending I/O to the disk; see {flush}, sense 2. 3. More generally, to force a number of competing processes or agents to a state that would be `safe' if the system were to crash; thus, to checkpoint (in the database-theory sense).
:syntactic sugar: [coined by Peter Landin] n. Features added to a language or other formalism to make it `sweeter' for humans, that do not affect the expressiveness of the formalism (compare {chrome}). Used esp. when there is an obvious and trivial translation of the `sugar' feature into other constructs already present in the notation. C's `a[i]' notation is syntactic sugar for `*(a + i)'. "Syntactic sugar causes cancer of the semicolon." --- Alan Perlis.
The variants `syntactic saccharine' and `syntactic syrup' are also recorded. These denotes something even more gratuitous, in that syntactic sugar serves a purpose (making something more acceptable to humans) but syntactic saccharine or syrup serves no purpose at all. Compare {candygrammar}.
:sys-frog: /sis'frog/ [the PLATO system] n. Playful variant of `sysprog', which is in turn short for `systems programmer'.
:sysadmin: /sis'ad-min/ n. Common contraction of `system admin'; see {admin}.
:sysape: /sysape/ n. A rather derogatory term for a computer operator; a play on {sysop} common at sites that use the banana hierarchy of problem complexity (see {one-banana problem}).
:sysop: /sis'op/ n. [esp. in the BBS world] The operator (and usually the owner) of a bulletin-board system. A common neophyte mistake on {FidoNet} is to address a message to `sysop' in an international {echo}, thus sending it to hundreds of sysops around the world.