Hackers' Folklore

— A collection of stories about the origins of computer terms.

Tagged withculture

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!

Bike-Shedding

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

Boilerplate

An old machine that bended steel
plates to water boilers.
An old machine that bended steel plates to water boilers.
Source: Wikimedia Commons

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.

References:

The man in the foreground is holding
a rounded printing plate. Plates like this were provided by companies such as
Western Newspaper Union to many smaller newspapers.
The man in the foreground is holding a rounded printing plate. Plates like this were provided by companies such as Western Newspaper Union to many smaller newspapers.
Source: Wikimedia Commons

Boot / Reboot / Bootstrapping

Lithography of Baron M&ampuuml;nchhausen
pulling himself out of a swamp by his pigtail
Lithography of Baron Münchhausen pulling himself out of a swamp by his pigtail
Source: Wikimedia

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.

Bug

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

Bit

The term’s invention is credited to John W. Tukey, who in a memo written for Bell Labs on January 9, 1947, had shortened “binary information digit” to “bit”. Reference

Byte

The term “byte” was first introduced by Werner Buchholz in June 1956. This was during the initial design stage for the IBM Stretch computer. The computer had a design that enabled addressing down to the individual bit and allowed variable field length instructions, with the size of the byte encoded into the instruction itself. The choice of spelling as “byte” instead of “bite” was intentional to prevent any accidental alteration to “bit”.

Carriage Return and Line Feed

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.

A mechanical typewriter. The lever for the carriage return is
on the outer left side.
A mechanical typewriter. The lever for the carriage return is on the outer left side.
Source: Source: piqsels
  • On Unix systems (like Linux or macOS), a \n still stands for a
    line feed (ASCII symbol: LF) or newline.
  • On CP/M, DOS, and Windows, \r\n is used, where \r stands for carriage return and \n stands for line feed (CR+LF).
  • Reference

Here is an old video that shows the basic mechanics of carriage return and line-feed:

Command key symbol (⌘)

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.

Norwegian Severdighet road sign
Norwegian Severdighet road sign
Source: Wikimedia Commons
Aearial view of Borgholm Castle, which could have been the model for the symbol
Aearial view of Borgholm Castle, which could have been the model for the symbol
Source: Wikimedia Commons

References:

Today’s meaning: A small piece of data sent from a website and stored in the user’s web browser.

The term cookie was coined by 23-year-old web browser programmer Lou Montulli in the fall of 1994. It was inspired by the term magic cookie, which is a packet of data a program receives and sends back unchanged, used by Unix programmers. This term in turn derives from the fortune cookie, which is a cookie with an embedded message.

Montulli used the term cookie to describe the small packets of data that the web browser receives and sends back unchanged to the web server.

“So, yeah, the cookie,” Montulli says with a laugh. “It’s one week of my life that turned into the most important thing that I ever did.” (Reference)

Core Dump

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

A 32 x 32 core memory plane storing
1024 bits (or 128 bytes) of data. The first core dumps were printed on paper, which sounds reasonable given these small amounts of bytes.
A 32 x 32 core memory plane storing 1024 bits (or 128 bytes) of data. The first core dumps were printed on paper, which sounds reasonable given these small amounts of bytes.
Source: Wikimedia Commons

Cursor

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

A December 1951 advertisement for the
IBM 604 Electronic Calculating Punch that was first produced in 1948. The
advertisement claims the IBM 604 can do the work of 150 engineers with slide
rules. The cursor (or runner) is the transparent part in the middle of the
slide.
Source: A December 1951 advertisement for the IBM 604 Electronic Calculating Punch that was first produced in 1948. The advertisement claims the IBM 604 can do the work of 150 engineers with slide rules. The cursor (or runner) is the transparent part in the middle of the slide.

Daemon

In computing, a daemon is a background process that handles requests for services such as print spooling and file transfers, and then terminates. The term was coined by the programmers of MIT’s Project MAC (Mathematics and Computation) in 1963. They took the name from Maxwell’s demon, a hypothetical creature from a thought experiment that constantly works in the background, sorting molecules.

The MIT programmers thought demon would be an appropriate name for a background process that worked tirelessly to perform system chores. But instead of using the term demon, they used daemon, which is an older form of the word. (Reference)

Dashboard

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

A dashboard of a horse carriage.
A dashboard of a horse carriage.
Source: Wikimedia Commons

Firewall

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

Firewall residential construction, separating the building into two separate residential units, and fire areas.
Firewall residential construction, separating the building into two separate residential units, and fire areas.
Source: Wikimedia Commons

Firmware

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

Foo and Bar

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.

A scram switch (button), that could be
pressed to prevent inadvertent operation. Maybe the TMRC had buttons labeled `foo` instead
A scram switch (button), that could be pressed to prevent inadvertent operation. Maybe the TMRC had buttons labeled foo instead
Source: Source Wikimedia Commons

References:

Freelancer

Today’s meaning: A self-employed person, which is not committed to a particular employer long-term.

The term first appears in the novel Ivanhoe by Sir Walter Scott. (The novel also had a lasting influence on the Robin Hood legend.)

Cover of a Classic Comics book
Cover of a Classic Comics book
Source: Wikimedia Commons

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

Hash

Today’s meaning: A hash function is any function that can be used to map data of arbitrary size to fixed-size values.

According to Wikipedia, the use of the word “hash” in hash function “comes by way of analogy with its non-technical meaning, to “chop and mix”. Indeed, typical hash functions, like the mod operation, “chop” the input domain into many sub-domains that get “mixed” into the output range to improve the uniformity of the key distribution.“

References:

Log / Logfile

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.

Reference.

Sailors measuring ship speed with a
log line
Sailors measuring ship speed with a log line
Source: The Pilgrims & Plymouth Colony:1620 by Duane A. Cline
The parts of a log-line
The parts of a log-line
Source: The Pilgrims & Plymouth Colony:1620 by Duane A. Cline
Page from the log-file of the British
Winchelsea. The second column denotes the number of knots measured with the
log-line, which indicates the ship's speed
Page from the log-file of the British Winchelsea. The second column denotes the number of knots measured with the log-line, which indicates the ship’s speed
Source: Navigation and Logbooks in the Age of Sail by Peter Reaveley

Patch

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.

A program tape with physical patches used
to correct punched holes by covering them.
A program tape with physical patches used to correct punched holes by covering them.
Source: Smithsonian Archives Center

Ping

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.

Pixel

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

Shell

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.

The The New Hacker’s Dictionary, (also known as the Jargon File) by Eric S. Raymond contains the following:

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.

Reference

Slab allocator

Today’s meaning: An efficient memory allocation technique, which reuses previous allocations.

Slab allocation was invented by John Bonwick (Note: PDF file) in 1994 and has since been used by services like Memcached and the Linux Kernel.

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:

Spam

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. Spam is a portmanteau of spiced and ham. 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

Vintage Ad: Look What You Can Do With One
Can of Spam
Vintage Ad: Look What You Can Do With One Can of Spam
Source: By user Jamie (jbcurio) on flickr.com

Monty Pythons Flying Circus (1974) - SPAM from Testing Tester on Vimeo.

Radio Button

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

An old car radio (left) and CSS
radio buttons (right). Only a single option can be selected at any point in
time. As a kid, I would push two buttons at once so they would interlock. Good
times.
An old car radio (left) and CSS radio buttons (right). Only a single option can be selected at any point in time. As a kid, I would push two buttons at once so they would interlock. Good times.
Source: Images by Matt Coady

Uppercase and lowercase

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.

A set of printers cases
A set of printers cases
Source: From the book ‘Printing types, their history, forms, and use; a study in survivals’ by Updike, Daniel Berkeley, 1860-1941. Freely available on archive.org.

Honorable mentions

404

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

Programming languages and Abbreviations

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++

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

C Sharp

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

A C-Sharp note.
A C-Sharp note.
Source: Wikimedia Commons

PNG

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

Credits

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.

Conclusion

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.

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.

Sponsor me on Github My Amazon wish list

Thanks to Jakub Sacha, Simon Brüggen for reviewing drafts of this article.