Dead Metaphors in Computer Science
— Formerly "Hacker Folklore"
Some computer terms have a surprising legacy. Many of them are derived from long-obsolete technologies. This post tries to dust off the exciting history of some of these terms that we use every day but aren't quite sure about their origins. Let's jump right in!
Today's meaning: A pointless discussion about trivial issues.
The term bike-shed effect or bike-shedding was coined as a metaphor to illuminate the law of triviality; it was popularised in the Berkeley Software Distribution community by the Danish computer developer Poul-Henning Kamp in 1999 on the FreeBSD mailing list and has spread from there to the whole software industry.
The concept was first presented as a corollary of his broader "Parkinson's law" spoof of management. He dramatizes this "law of triviality" with the example of a committee's deliberations on an atomic reactor, contrasting it to deliberations on a bicycle shed. As he put it: "The time spent on any item of the agenda will be in inverse proportion to the sum of money involved."
A reactor is so vastly expensive and complicated that an average person cannot understand it, so one assumes that those who work on it understand it. On the other hand, everyone can visualize a cheap, simple bicycle shed, so planning one can result in endless discussions because everyone involved wants to add a touch and show personal contribution.
Reference - Wikipedia: Law of Triviality
Today's meaning: A chunk of code that is copied over and over again with little or no changes made to it in the process.
Boiler plate originally referred to the rolled steel used to make water boilers but is used in the media to refer to hackneyed or unoriginal writing. The term refers to the metal printing plates of pre-prepared text such as advertisements or syndicated columns that were distributed to small, local newspapers. These printing plates came to be known as 'boilerplates' by analogy. One large supplier to newspapers of this kind of boilerplate was the Western Newspaper Union, which supplied "ready-to-print stories [which] contained national or international news" to papers with smaller geographic footprints, which could include advertisements pre-printed next to the conventional content.
The term boot is used in the context of computers to refer to the process of starting a computer.
In compiler development, the term bootstrapping refers to the process of rewriting a compiler in a new language: The first compiler is written in an existing language. Then it gets rewritten in the new language and compiled by itself.
The saying "to pull oneself up by one's bootstraps" dates back to the 19th century. Tall boots may have a tab, loop or handle at the top allowing one to help pulling them on. The metaphor spawned additional metaphors for self-sustaining processes that proceed without external help.
According to Wikipedia,
The idiom dates at least to 1834, when it appeared in the Workingman's Advocate: "It is conjectured that Mr. Murphee will now be enabled to hand himself over the Cumberland river or a barn yard fence by the straps of his boots."
There's also a nice summary in Merriam-Webster.
Today's meaning: A defect in a piece of code or hardware.
The origins are unknown!
Contrary to popular belief it predates the bug found by Grace Hopper in the Mark II computer.
The term was used by engineers way before that; at least since the 1870s. It predates electronic computers and computer software. Thomas Edison used the term "bug" in his notes. Reference
Today's meaning: Set the cursor to the beginning of the next line.
These two terms were adopted from typewriters.
The carriage holds the paper and is moving from left to right to advance the typing position as the keys are pressed. It "carries" the paper with it. The carriage return is the operation when the carriage gets moved into its original position on the very left end side of the paper.
Simply returning the carriage to the left is not enough to start with a new line, however. The carriage would still be on the same line than before — just at the beginning of the line. To go to a new line, a line feed was needed. It would move the paper inside the typewriter up by one line.
These two operations — carriage return (CR) and line feed (LF) — were commonly done at once by pushing the carriage return lever.
- On Unix systems (like Linux or macOS), a
\nstill stands for a
line feed (ASCII symbol: LF) or newline.
- On CP/M, DOS, and Windows,
\r\nis used, where
\rstands for carriage return and
\nstands for line feed (CR+LF).
Here is an old video that shows the basic mechanics of carriage return and line-feed:
Today's meaning: A meta-key available on Apple computers to provide additional keyboard combinations.
Directly quoting Wikipedia (emphasis mine):
The ⌘ symbol came into the Macintosh project at a late stage. The development team originally went for their old Apple key, but Steve Jobs found it frustrating when "apples" filled up the Mac's menus next to the key commands, because he felt that this was an over-use of the company logo. He then opted for a different key symbol. With only a few days left before deadline, the team's bitmap artist Susan Kare started researching for the Apple logo's successor. She was browsing through a symbol dictionary when she came across the cloverleaf-like symbol, commonly used in Nordic countries as an indicator of cultural locations and places of interest (it is the official road sign for tourist attraction in Denmark, Finland, Iceland, Norway, and Sweden and the computer key has often been called Fornminne — ancient monument — by Swedish Mac users and Seværdighedstegn by Danish users). When she showed it to the rest of the team, everyone liked it, and so it became the symbol of the 1984 Macintosh command key. Susan Kare states that it has since been told to her that the symbol had been picked for its Scandinavian usage due to its resembling the shape of a square castle with round corner towers as seen from above looking down, notably Borgholm Castle.
- Wikipedia: Command Key
- Cult of Mac: What Are The Mac’s Command ⌘ And Option ⌥ Symbols Supposed To Represent?
Today's meaning: Retrieving a snapshot of a (crashed) program's state by storing all of its memory for offline analysis.
The name comes from magnetic core memory, which is an early storage mechanism based on a grid of toroid magnets. It has since become obsolete, but the term is still used today for getting a snapshot of a computer process. Reference
Today's meaning: a visual cue (such as a flashing vertical line) on a video display that indicates position (as for data entry). Merriam-Webster
Cursor is Latin for runner. A cursor is the name given to the transparent slide engraved with a hairline that is used for marking a point on a slide rule. The term was then transferred to computers through analogy. Reference
Today's meaning: A user interface that provides a quick overview of a system's status.
Originally a plank of wood at the front of a horse-drawn carriage to protect the driver from mud 'dashed' backward by a horses hooves.
When automobiles were manufactured, the board in front of the driver was given the same name. That was the logical place to put the necessary gauges so the driver could see them easily. In time, the term became more associated with the readouts than the protection it offered. Reference
Today's meaning: A network security system that establishes a barrier between a trusted internal network and an untrusted external network, such as the Internet.
Fire walls are used mainly in terraced houses, but also in individual residential buildings. They prevent fire and smoke from spreading to another part of the building in the event of a fire. Large fires can thus be prevented. The term is used in computing since the 80s. Reference
Today's meaning: A class of computer software that provides the low-level control for the device's specific hardware and closely tied to the hardware it runs on.
Ascher Opler coined the term firmware in a 1967 Datamation article. As originally used, firmware contrasted with hardware (the CPU itself) and software (normal instructions executing on a CPU). It existed on the boundary between hardware and software; thus the name "firmware". The original article is available on the Internet Archive. Reference
Today's meaning: Common placeholder variable names.
Originally the term might come from the military term FUBAR. There are a few variations, but a common meaning is FUBAR: "f***ed up beyond all recognition".
The use of
foo in a programming context is generally credited to the Tech Model Railroad Club (TMRC) of MIT from circa 1960. In the complex model system, there were scram switches located at numerous places around the room that could be thrown if something undesirable was about to occur, such as a train going full-bore at an obstruction.
The way I understood it was that they literally had emergency buttons labeled
foo for lack of a better name. Maybe related to the original military meaning of FUBAR to indicate that something is going very very wrong.
Today's meaning: A self-employed person, which is not committed to a particular employer long-term.
In it, a Lord offers his paid army of 'free lances' to King Richard:
I offered Richard the service of my Free Lances, and he refused them — I will lead them to Hull, seize on shipping, and embark for Flanders; thanks to the bustling times, a man of action will always find employment.
Therefore, a "free lancer" is someone who fights for whoever pays the most. Free does not mean "without pay", but refers to the additional freedom to work for any employer. Reference
Today's meaning: A file that records events of a computer program or system.
Sailors used so-called log lines to measure the speed of their ship. A flat piece of wood (the log) was attached to a long rope. The log had regularly spaced knots in it. As the log would drift away, the sailors would count the number of knots that went out in a fixed time interval, and this would be the ship's speed — in knots.
The ship's speed was important for navigation, so the sailors noted it down in a book, aptly called the log book, together with other information to establish the position of the ship more accurately, like landmark sightings and weather events. Later, additional information, more generally concerning the ship, was added — or logged — such as harbor fees and abnormal provision depletion.
Today's meaning: A piece of code that can be applied to fix or improve a computer program.
In the early days of computing history, if you made a programming mistake, you'd have to fix a paper tape or a punched card by putting a patch on top of a hole.
Today's meaning: A way to check the availability and response time of a computer over the network.
Ping is a terminal program originally written by Mike Muuss in 1983 that is included in every version of UNIX, Windows, and macOS. He named it "after the sound that a sonar makes, inspired by the whole principle of echo-location. [...] ping uses timed
IP/ICMP ECHO_REQUEST and
ECHO_REPLY packets to probe the "distance" to the target machine." The reference is well worth a read.
Today's meaning: The smallest controllable element of a picture represented on the screen.
The word pixel is a combination of pix (from "pictures", shortened to "pics") and el (for "element"). Similarly, voxel is a volume element and texel is a texture element. Reference
Today's meaning: An interactive, commonly text-based runtime to interact with a computer system.
The inventor of the term, Louis Pouzin, does not give an explanation for the name in his essay The Origins of the Shell. It can however be traced back to Unix' predecessor Multics. It is described in the Multics glossary like so:
[The shell] is passed a command line for execution by the listener.
Historical note: Apparently, the original Multics shell (sense 1) was so called because it was a shell (sense 3);
where sense 3 refers to
A skeleton program, created by hand or by another program (like, say, a parser generator), which provides the necessary incantations to set up some task and the control flow to drive it (the term driver is sometimes used synonymously). The user is meant to fill in whatever code is needed to get real work done. This usage is common in the AI and Microsoft Windows worlds, and confuses Unix hackers.
Unfortunately, the book does not provide any evidence to back up this claim.
I like the (possibly historically incorrect) analogy to a nut with the shell being on the outside, protecting the kernel.
Today's meaning: An efficient memory allocation technique, which reuses previous allocations.
With slab allocation, a cache for a certain type or size of data object has a number of pre-allocated "slabs" of memory; within each slab there are memory chunks of fixed size suitable for the objects. (Wikpedia)
The name slab comes from a teenage friend of Bonwick. He tells the story on the Oracle blog:
While watching TV together, a commercial by Kellogg's came on with the tag line, "Can you pinch an inch?"
The implication was that you were overweight if you could pinch more than an inch of fat on your waist — and that hoovering a bowl of corn flakes would help.
Without missing a beat, Tommy, who weighed about 250 pounds, reached for his midsection and offered his response: "Hell, I can grab a slab!"
A decade later, Bonwick remembered that term when he was looking for a word to describe the allocation of a larger chunk of memory.
Here is the original Kellogg's advertisement:
Today's meaning: Unsolicited electronic communications, for example by sending mass-emails or posting in forums and chats.
The term goes back to a sketch by the British comedy group Monty Python from 1970. In the sketch, a cafe is including Spam (a brand of canned cooked pork) in almost every dish. The excessive amount of Spam mentioned is a reference to the ubiquity of it and other imported canned meat products in the UK after World War II (a period of rationing in the UK) as the country struggled to rebuild its agricultural base. Reference
Today's meaning: A UI element that allows to choose from a predefined set of mutually exclusive options
"Radio buttons" are named after the analogous pendant of mechanical buttons that were used in radios. The UI concept has later been used in tape recorders, cassette recorders and wearable audio players (the famous "Walkman" and similar). And later in VCRs and video cameras. Reference
Today's meaning: Distinction between capital letters and small letters on a keyboard.
Back when typesetting was a manual process where single letters made of led were "type set" to form words and sentences, upper- and lowercase letters were kept in separate containers — or cases — to make this rather tedious process a little faster.
Today's meaning: HTTP Status Code for "File not found".
There is a story that the number comes from the server room where the World Wide Web's central database was located. In there, administrators would manually locate the requested files and transfer them, over the network, to the person who made that request. If a file didn't exist, they'd return an error message: "Room 404: file not found".
This, however, seems to be a myth and the status code was chosen rather arbitrarily based on the then well-established FTP status codes. Reference
The etymology of programming language names and common abbreviations would probably warrant its own article, but I've decided to note down some of my favorites for the time being.
C++ is a programming language based on C by Bjarne Stroustrup. The name is a programmer pun by Rick Mascitti, a coworker of Stroustrup. The
++ refers to the post-increment operator, that is common in many C-like languages. It increases the value of a variable by 1. In that sense, C++ can be seen as the spiritual "successor" of C. Reference
Similarly to C++, C# is a C-like programming language. The name again refers to "incremental" improvements on top of C++. The
# in the name looks like four plus signs. Hence
C# == (C++)++. But on top of that, the name was also inspired by the musical notation where a sharp indicates that the written note should be made a semitone higher in pitch. Reference
Officially, PNG stands for Portable Network Graphics. It was born out of frustration over a CompuServe announcement in 1994 that programs supporting GIF would have to pay licensing fees from now on. A working group lead by hacker Thomas Boutell created the
.webp file format, a patent-free replacement for GIF. Therefore I prefer the format's unofficial name: PNG's Not GIF. Here's a great article on PNG's history. Reference
Most of the content comes from sources like Wikipedia (with reference where appropriate), but the explanations are difficult to hunt down if you don't know what you're looking for.
This is a living document, and I'm planning to update it in case of reader submissions.
You have to know the past to understand the present.
— Dr. Carl Sagan (1980)
I hope you enjoyed this trip down memory lane. Now it's your turn!
👉 Do you know any other stories? Send me a message, and I'll add them here.
- Awesome Computer History: A curated list of computer history videos, documentaries and related folklore maintained by Thomas Watson.
- Wikipedia: List of computer term etymologies: List of the origins of computer-related terms or terms used in the computing world.
- Talk: The Etymology of Programming by Brittany Storoz - JSConf EU 2018: A talk that explains the background behind a few programming terms. Careful here: the explanation for "bug" is probably wrong as mentioned above.
- Typewriter terminology that has survived into the personal computer era: A list of computer terms that have their origins from typewriters.
- Folklore - The Original Macintosh: Anecdotes about the development of Apple's original Macintosh, and the people who made it.
Thanks for reading! I mostly write about Rust and my (open-source) projects. If you would like to receive future posts automatically, you can subscribe via RSS or email: