The Jargon File, Version 4.2.2, 20 Aug 2000

Chapter 43

Chapter 433,843 wordsPublic domain

Node:overflow pdl, Next:overrun, Previous:overflow bit, Up:= O =

overflow pdl n.

[MIT] The place where you put things when your PDL is full. If you don't have one and too many things get pushed, you forget something. The overflow pdl for a person's memory might be a memo pad. This usage inspired the following doggerel:

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' (see PDL) seems to be primarily an MITism; outside MIT this term is replaced by `overflow stack' (but that wouldn't rhyme with `diddle').

Node:overrun, Next:overrun screw, Previous:overflow pdl, Up:= O =

overrun n.

1. [techspeak] Term for a frequent consequence of data arriving faster than it can be consumed, esp. in serial line communications. For example, at 9600 baud there is almost exactly one character per millisecond, so if a silo can hold only two characters and the machine takes longer than 2 msec to get to service the interrupt, at least one character will be lost. 2. Also applied to non-serial-I/O communications. "I forgot to pay my electric bill due to mail overrun." "Sorry, I got four phone calls in 3 minutes last night and lost your message to overrun." When thrashing at tasks, the next person to make a request might be told "Overrun!" Compare firehose syndrome. 3. More loosely, may refer to a buffer overflow not necessarily related to processing time (as in overrun screw).

Node:overrun screw, Next:P-mail, Previous:overrun, Up:= O =

overrun screw n.

[C programming] A variety of fandango on core produced by scribbling past the end of an array (C implementations typically have no checks for this error). This is relatively benign and easy to spot if the array is static; if it is auto, the result may be to smash the stack -- often resulting in heisenbugs of the most diabolical subtlety. The term `overrun screw' is used esp. of scribbles beyond the end of arrays allocated with malloc(3); this typically trashes the allocation header for the next block in the arena, producing massive lossage within malloc and often a core dump on the next operation to use stdio(3) or malloc(3) itself. See spam, overrun; see also memory leak, memory smash, aliasing bug, precedence lossage, fandango on core, secondary damage.

Node:= P =, Next:= Q =, Previous:= O =, Up:The Jargon Lexicon

= P =

P-mail:

P.O.D.:

packet over air:

padded cell:

page in:

page out:

pain in the net:

Pangloss parity:

paper-net:

param:

PARC:

parent message:

parity errors:

Parkinson's Law of Data:

parm:

parse:

Pascal:

pastie:

patch:

patch pumpkin:

patch space:

path:

pathological:

payware:

PBD:

PC-ism:

PD:

PDL:

PDP-10:

PDP-20:

PEBKAC:

peek:

pencil and paper:

Pentagram Pro:

Pentium:

peon:

percent-S:

perf:

perfect programmer syndrome:

Perl:

person of no account:

pessimal:

pessimizing compiler:

peta-:

PETSCII:

PFY:

phage:

phase:

phase of the moon:

phase-wrapping:

PHB:

phreaker:

phreaking:

pico-:

pig-tail:

pilot error:

ping:

Ping O' Death:

ping storm:

pink wire:

pipe:

pistol:

pixel sort:

pizza box:

plaid screen:

plain-ASCII:

plan file:

platinum-iridium:

playpen:

playte:

plingnet:

plokta:

plonk:

plug-and-pray:

plugh:

plumbing:

PM:

pnambic:

pod:

point-and-drool interface:

pointy hat:

pointy-haired:

poke:

poll:

polygon pusher:

POM:

pop:

POPJ:

poser:

post:

postcardware:

posting:

postmaster:

PostScript:

pound on:

power cycle:

power hit:

PPN:

pr0n:

precedence lossage:

prepend:

prestidigitization:

pretty pictures:

prettyprint:

pretzel key:

priesthood:

prime time:

print:

printing discussion:

priority interrupt:

profile:

progasm:

proggy:

proglet:

program:

Programmer's Cheer:

programming:

programming fluid:

propeller head:

propeller key:

proprietary:

protocol:

provocative maintenance:

prowler:

pseudo:

pseudoprime:

pseudosuit:

psychedelicware:

psyton:

pubic directory:

puff:

pumpkin holder:

pumpking:

punched card:

punt:

Purple Book:

purple wire:

push:

Python:

Node:P-mail, Next:P.O.D., Previous:overrun screw, Up:= P =

P-mail n.

[rare] Physical mail, as opposed to email. Synonymous with snail-mail, but much less common.

Node:P.O.D., Next:packet over air, Previous:P-mail, Up:= P =

P.O.D. /P-O-D/

[rare] Acronym for `Piece Of Data' (as opposed to a code section). See also pod.

Node:packet over air, Next:padded cell, Previous:P.O.D., Up:= P =

packet over air

[common among backbone ISPs] The protocol notionally being used by Internet data attempting to traverse a physical gap or break in the network, such as might be caused by a fiber-seeking backhoe. "I see why you're dropping packets. You seem to have a packet over air problem.

Node:padded cell, Next:page in, Previous:packet over air, Up:= P =

padded cell n.

Where you put lusers so they can't hurt anything. A program that limits a luser to a carefully restricted subset of the capabilities of the host system (for example, the rsh(1) utility on USG Unix). Note that this is different from an iron box because it is overt and not aimed at enforcing security so much as protecting others (and the luser) from the consequences of the luser's boundless naivete (see naive). Also `padded cell environment'.

Node:page in, Next:page out, Previous:padded cell, Up:= P =

page in v.

[MIT] 1. To become aware of one's surroundings again after having paged out (see page out). Usually confined to the sarcastic comment: "Eric pages in, film at 11!" 2. Syn. `swap in'; see swap.

Node:page out, Next:pain in the net, Previous:page in, Up:= P =

page out vi.

[MIT] 1. To become unaware of one's surroundings temporarily, due to daydreaming or preoccupation. "Can you repeat that? I paged out for a minute." See page in. Compare glitch, thinko. 2. Syn. `swap out'; see swap.

Node:pain in the net, Next:Pangloss parity, Previous:page out, Up:= P =

pain in the net n.

A flamer.

Node:Pangloss parity, Next:paper-net, Previous:pain in the net, Up:= P =

Pangloss parity n.

[from Dr. Pangloss, the eternal optimist in Voltaire's "Candide"] In corporate DP shops, a common condition of severe but equally shared lossage resulting from the theory that as long as everyone in the organization has the exactly the same model of obsolete computer, everything will be fine.

Node:paper-net, Next:param, Previous:Pangloss parity, Up:= P =

paper-net n.

Hackish way of referring to the postal service, analogizing it to a very slow, low-reliability network. Usenet sig blocks sometimes include a "Paper-Net:" header just before the sender's postal address; common variants of this are "Papernet" and "P-Net". Note that the standard netiquette guidelines discourage this practice as a waste of bandwidth, since netters are quite unlikely to casually use postal addresses. Compare voice-net, snail-mail, P-mail.

Node:param, Next:PARC, Previous:paper-net, Up:= P =

param /p*-ram'/ n.

[common] Shorthand for `parameter'. See also parm; compare arg, var.

Node:PARC, Next:parent message, Previous:param, Up:= P =

PARC n.

See XEROX PARC.

Node:parent message, Next:parity errors, Previous:PARC, Up:= P =

parent message n.

What a followup follows up.

Node:parity errors, Next:Parkinson's Law of Data, Previous:parent message, Up:= P =

parity errors pl.n.

Little lapses of attention or (in more severe cases) consciousness, usually brought on by having spent all night and most of the next day hacking. "I need to go home and crash; I'm starting to get a lot of parity errors." Derives from a relatively common but nearly always correctable transient error in memory hardware. It predates RAM; in fact, this term is reported to have already have been in use in its jargoin sense back in the 1960s when magnetic cores ruled. Parity errors can also afflict mass storage and serial communication lines; this is more serious because not always correctable.

Node:Parkinson's Law of Data, Next:parm, Previous:parity errors, Up:= P =

Parkinson's Law of Data prov.

"Data expands to fill the space available for storage"; buying more memory encourages the use of more memory-intensive techniques. It has been observed since the mid-1980s that the memory usage of evolving systems tends to double roughly once every 18 months. Fortunately, memory density available for constant dollars also tends to about double once every 18 months (see Moore's Law); unfortunately, the laws of physics guarantee that the latter cannot continue indefinitely.

Node:parm, Next:parse, Previous:Parkinson's Law of Data, Up:= P =

parm /parm/ n.

Further-compressed form of param. This term is an IBMism, and written use is almost unknown outside IBM shops; spoken /parm/ is more widely distributed, but the synonym arg is favored among hackers. Compare arg, var.

Node:parse, Next:Pascal, Previous:parm, Up:= P =

parse [from linguistic terminology] vt.

1. To determine the syntactic structure of a sentence or other utterance (close to the standard English meaning). "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. "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 deboned. There is some controversy over whether `unparsed' should mean `bony', or also mean `deboned'.

Node:Pascal, Next:pastie, Previous:parse, Up:= P =

Pascal n.

An Algol-descended language designed by Niklaus Wirth on the CDC 6600 around 1967-68 as an instructional tool for elementary programming. This language, designed primarily to keep students from shooting themselves in the foot and thus extremely restrictive from a general-purpose-programming point of view, was later promoted as a general-purpose tool and, in fact, became the ancestor of a large family of languages including Modula-2 and Ada (see also bondage-and-discipline language). The hackish point of view on Pascal was probably best summed up by a devastating (and, in its deadpan way, screamingly funny) 1981 paper by Brian Kernighan (of K&R fame) entitled "Why Pascal is Not My Favorite Programming Language", which was turned down by the technical journals but circulated widely via photocopies. It was eventually published in "Comparing and Assessing Programming Languages", edited by Alan Feuer and Narain Gehani (Prentice-Hall, 1984). Part of his discussion is worth repeating here, because its criticisms are still apposite to Pascal itself after ten years of improvement and could also stand as an indictment of many other bondage-and-discipline languages. At the end of a summary of the case against Pascal, Kernighan wrote:

9. There is no escape

This last point is perhaps the most important. The language is inadequate but circumscribed, because there is no way to escape its limitations. There are no casts to disable the type-checking when necessary. There is no way to replace the defective run-time environment with a sensible one, unless one controls the compiler that defines the "standard procedures". The language is closed.

People who use Pascal for serious programming fall into a fatal trap. Because the language is impotent, it must be extended. But each group extends Pascal in its own direction, to make it look like whatever language they really want. Extensions for separate compilation, FORTRAN-like COMMON, string data types, internal static variables, initialization, octal numbers, bit operators, etc., all add to the utility of the language for one group but destroy its portability to others.

I feel that it is a mistake to use Pascal for anything much beyond its original target. In its pure form, Pascal is a toy language, suitable for teaching but not for real programming.

Pascal has since been almost entirely displaced (by C) from the niches it had acquired in serious applications and systems programming, but retains some popularity as a hobbyist language in the MS-DOS and Macintosh worlds.

Node:pastie, Next:patch, Previous:Pascal, Up:= P =

pastie /pay'stee/ n.

An adhesive-backed label designed to be attached to a key on a keyboard to indicate some non-standard character which can be accessed through that key. Pasties are likely to be used in APL environments, where almost every key is associated with a special character. A pastie on the R key, for example, might remind the user that it is used to generate the rho character. The term properly refers to nipple-concealing devices formerly worn by strippers in concession to indecent-exposure laws; compare tits on a keyboard.

Node:patch, Next:patch pumpkin, Previous:pastie, Up:= P =

patch

1. n. 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 or may not eventually be incorporated permanently into the program. Distinguished from a diff or mod by the fact that a patch is generated by more primitive means than the rest of the program; the classical examples are instructions modified by using the front panel switches, and changes made directly to the binary executable of a program originally written in an HLL. Compare one-line fix. 2. vt. To insert a patch into a piece of code. 3. [in the Unix world] n. A diff (sense 2). 4. A set of modifications to binaries to be applied by a patching program. IBM operating systems often receive updates to the operating system in the form of absolute hexadecimal patches. If you have modified your OS, you have to disassemble these back to the source. The patches might later be corrected by other patches on top of them (patches were said to "grow scar tissue"). The result was often a convoluted patch space and headaches galore. 5. [Unix] the patch(1) program, written by Larry Wall, which automatically applies a patch (sense 3) to a set of source code.

There is a classic story of a tiger team penetrating a secure military computer that illustrates the danger inherent in binary patches (or, indeed, any patches that you can't -- or don't -- inspect and examine before installing). They couldn't find any trap doors or any way to penetrate security of IBM's OS, so they made a site visit to an IBM office (remember, these were official military types who were purportedly on official business), swiped some IBM stationery, and created a fake patch. The patch was actually the trapdoor they needed. The patch was distributed at about the right time for an IBM patch, had official stationery and all accompanying documentation, and was dutifully installed. The installation manager very shortly thereafter learned something about proper procedures.

Node:patch pumpkin, Next:patch space, Previous:patch, Up:= P =

patch pumpkin n.

[Perl hackers] A notional token passed around among the members of a project. Possession of the patch pumpkin means one has the exclusive authority to make changes on the project's master source tree. The implicit assumption is that `pumpkin holder' status is temporary and rotates periodically among senior project members.

This term comes from the Perl development community, but has been sighted elsewhere. It derives from a stuffed-toy pumpkin that was passed around at a development shop years ago as the access control for a shared backup-tape drive.

Node:patch space, Next:path, Previous:patch pumpkin, Up:= P =

patch space n.

An unused block of bits left in a binary so that it can later be modified by insertion of machine-language instructions there (typically, the patch space is modified to contain new code, and the superseded code is patched to contain a jump or call to the patch space). The near-universal use of compilers and interpreters has made this term rare; it is now primarily historical outside IBM shops. See patch (sense 4), zap (sense 4), hook.

Node:path, Next:pathological, Previous:patch space, Up:= P =

path n.

1. A bang path or explicitly routed Internet address; a node-by-node specification of a link between two machines. Though these are now obsolete as a form of addressing, they still show up in diagnostics and trace headers ocvcasionally (e.g. in NNTP headers). 2. [Unix] A filename, fully specified relative to the root directory (as opposed to relative to the current directory; the latter is sometimes called a `relative path'). This is also called a `pathname'. 3. [Unix and MS-DOS] The `search path', an environment variable specifying the directories in which the shell (COMMAND.COM, under MS-DOS) should look for commands. Other, similar constructs abound under Unix (for example, the C preprocessor has a `search path' it uses in looking for #include files).

Node:pathological, Next:payware, Previous:path, Up:= P =

pathological adj.

1. [scientific computation] Used of a data set that is grossly atypical of normal expected input, esp. one that exposes a weakness or bug in whatever algorithm one is using. An algorithm that can be broken by pathological inputs may still be useful if such inputs are very unlikely to occur in practice. 2. When used of test input, implies that it was purposefully engineered as a worst case. The implication in both senses is that the data is spectacularly ill-conditioned or that someone had to explicitly set out to break the algorithm in order to come up with such a crazy example. 3. Also said of an unlikely collection of circumstances. "If the network is down and comes up halfway through the execution of that command by root, the system may just crash." "Yes, but that's a pathological case." Often used to dismiss the case from discussion, with the implication that the consequences are acceptable, since they will happen so infrequently (if at all) that it doesn't seem worth going to the extra trouble to handle that case (see sense 1).

Node:payware, Next:PBD, Previous:pathological, Up:= P =

payware /pay'weir/ n.

Commercial software. Oppose shareware or freeware.

Node:PBD, Next:PC-ism, Previous:payware, Up:= P =

PBD /P-B-D/ n.

[abbrev. of `Programmer Brain Damage'] Applied to bug reports revealing places where the program was obviously broken by an incompetent or short-sighted programmer. Compare UBD; see also brain-damaged.

Node:PC-ism, Next:PD, Previous:PBD, Up:= P =

PC-ism /P-C-izm/ n.

A piece of code or coding technique that takes advantage of the unprotected single-tasking environment in IBM PCs and the like running DOS, e.g., by busy-waiting on a hardware register, direct diddling of screen memory, or using hard timing loops. Compare ill-behaved, vaxism, unixism. Also, `PC-ware' n., a program full of PC-isms on a machine with a more capable operating system. Pejorative.

Node:PD, Next:PDL, Previous:PC-ism, Up:= P =

PD /P-D/ adj.

[common] Abbreviation for `public domain', applied to software distributed over Usenet and from Internet archive sites. Much of this software is not in fact public domain in the legal sense but travels under various copyrights granting reproduction and use rights to anyone who can snarf a copy. See copyleft.

Node:PDL, Next:PDP-10, Previous:PD, Up:= P =

PDL /P-D-L/, /pid'l/, /p*d'l/ or /puhd'l/

1. n. `Program Design Language'. Any of a large class of formal and profoundly useless pseudo-languages in which management forces one to design programs. Too often, management expects PDL descriptions to be maintained in parallel with the code, imposing massive overhead to little or no benefit. See also flowchart. 2. v. To design using a program design language. "I've been pdling so long my eyes won't focus beyond 2 feet." 3. n. `Page Description Language'. Refers to any language which is used to control a graphics device, usually a laserprinter. The most common example is, of course, Adobe's PostScript language, but there are many others, such as Xerox InterPress, etc. 4. In ITS days, the preferred MITism for stack. See overflow pdl. 5. Dave Lebling, one of the co-authors of Zork; (his network address on the ITS machines was at one time pdl@dms).

Node:PDP-10, Next:PDP-20, Previous:PDL, Up:= P =

PDP-10 n.

[Programmed Data Processor model 10] The machine that made timesharing real. It looms large in hacker folklore because of its adoption in the mid-1970s by many university computing facilities and research labs, including the MIT AI Lab, Stanford, and CMU. Some aspects of the instruction set (most notably the bit-field instructions) are still considered unsurpassed. The 10 was eventually eclipsed by the VAX machines (descendants of the PDP-11) when DEC recognized that the 10 and VAX product lines were competing with each other and decided to concentrate its software development effort on the more profitable VAX. The machine was finally dropped from DEC's line in 1983, following the failure of the Jupiter Project at DEC to build a viable new model. (Some attempts by other companies to market clones came to nothing; see Foonly and Mars.) This event spelled the doom of ITS and the technical cultures that had spawned the original Jargon File, but by mid-1991 it had become something of a badge of honorable old-timerhood among hackers to have cut one's teeth on a PDP-10. See TOPS-10, ITS, BLT, DDT, DPB, EXCH, HAKMEM, LDB, pop, push. See also http://www.inwap.com/pdp10/.

Node:PDP-20, Next:PEBKAC, Previous:PDP-10, Up:= P =

PDP-20 n.

The most famous computer that never was. PDP-10 computers running the TOPS-10 operating system were labeled `DECsystem-10' as a way of differentiating them from the PDP-11. Later on, those systems running TOPS-20 were labeled `DECSYSTEM-20' (the block capitals being the result of a lawsuit brought against DEC by Singer, which once made a computer called `system-10'), but contrary to popular lore there was never a `PDP-20'; the only difference between a 10 and a 20 was the operating system and the color of the paint. Most (but not all) machines sold to run TOPS-10 were painted `Basil Blue', whereas most TOPS-20 machines were painted `Chinese Red' (often mistakenly called orange).

Node:PEBKAC, Next:peek, Previous:PDP-20, Up:= P =

PEBKAC /peb'kak/

[Abbrev., "Problem Exists Between Keyboard And Chair"] Used by support people, particularly at call centers and help desks. Not used with the public. Denotes pilot error as the cause of the crash, especially stupid errors that even a luser could figure out. Very derogatory. Usage: "Did you ever figure out why that guy couldn't print?" "Yeah, he kept cancelling the operation before it could finish. PEBKAC."

Node:peek, Next:pencil and paper, Previous:PEBKAC, Up:= P =

peek n.,vt.

(and poke) The commands in most microcomputer BASICs for directly accessing memory contents at an absolute address; often extended to mean the corresponding constructs in any HLL (peek reads memory, poke modifies it). Much hacking on small, non-MMU micros used to consist of `peek'ing around memory, more or less at random, to find the location where the system keeps interesting stuff. Long (and variably accurate) lists of such addresses for various computers circulated (see interrupt list). The results of `poke's at these addresses may be highly useful, mildly amusing, useless but neat, or (most likely) total lossage (see killer poke).

Since a real operating system provides useful, higher-level services for the tasks commonly performed with peeks and pokes on micros, and real languages tend not to encourage low-level memory groveling, a question like "How do I do a peek in C?" is diagnostic of the newbie. (Of course, OS kernels often have to do exactly this; a real kernel hacker would unhesitatingly, if unportably, assign an absolute address to a pointer variable and indirect through it.)

Node:pencil and paper, Next:Pentagram Pro, Previous:peek, Up:= P =

pencil and paper n.