# Glossary

This is a glossary of terms as used in this essay. These do not necessarily have a standardized meaning to other people. Eric S. Raymond has compiled a massive and informative glossary\[HackerDict] that rather surprisingly can pleasurably be read cover-to-cover once you can appreciate a fraction of it.

## unk-unk

Slang for unknown-unknown. Problems that cannot presently even be conceptualized that will steal time away from the project and wreck the schedule.

## printlining

The insertion of statements into a program on a strictly temporary basis that output information about the execution of the program for the purpose of debugging.

## logging

The practice of writing a program so that it can produce a configurable output log describing its execution.

## divide and conquer

A technique of top-down design and, importantly, of debugging that is the subdivision of a problem or a mystery into progressively smaller problems or mysteries.

## vapour

Illusionary and often deceptive promises of software that is not yet for sale and, as often as not, will never materialize into anything solid.

## boss

The person who sets your tasks. In some cases, the user is the boss.

## tribe

The people with whom you share loyalty to a common goal.

## low-hanging fruit

Big improvements that cost little.

## Entrepreneur

The initiator of projects.

## business

A group of people organized for making money.

## company

A group of people organized for making money.

## tribe

A group of people you share cultural affinity and loyalty with.

## scroll blindness

The effect of being unable to find information you need because it is buried in too much other, less interesting information.

## wall-clock

Actually time as measured by a clock on a wall, as opposed to CPU time.

## bottleneck

The most important limitation in the performance of a system. A constriction that limits performance.

## master

A unique piece of information from which all cached copies are derived that serves as the official definition of that data.

## heap allocated

Memory can be said to be heap allocated whenever the mechanism for freeing it is complicated.

## garbage

Memory which is being taken up by objects your application no longer needs.

## garbage collector

A system for recycling garbage.

## memory leak

The unwanted collection of references to objects that prevents garbage collection (or a bug in the garbage collector or memory management system!) that causes the program to gradually increase its memory demands over time.

## Extreme Programming

A style of programming emphasizing communication with the customer and automated testing.

## hitting the wall

To run out of a specific resource causing performance to degrade sharply rather than gradually.

## speculative programming

Producing a feature before it is really known if that feature will be useful.

## information hiding

A design principle that seeks to keep things independent and decoupled by using interfaces that expose as little information as possible.

## object-oriented programming

An programming style emphasizing the the management of state inside objects.

## communication languages

A language designed primarily for standardization rather than execution.

## boxes and arrows

A loose, informal style of making diagrams consisting of boxes and arrows drawn between those boxes to show the relationships. This contrast with formal diagram methodologies, such as UML.

## lingua franca

A language so popular as to be a de facto standard for its field, as French was for international diplomacy at one time.

## buy vs. build

An adjective describing a choice between spending money for software or writing it your self.

## mere work

Work that requires little creativity and entails little risk. Mere work can be estimated easily.

## programming notation

A synonym for programming language that emphasizes the mathematical nature of programming language and their relative simplicity compared to natural languages.

## strawman

A document meant to be the starting point of a technical discussion. A strawman may lead to a stickman, tinman, woodman, ironman, etc.

## white-paper

An informative document that is often meant to explain or sell a product or idea to an audience different than the programmers of that product or idea.
