Skip to content
A curated list for when naming things is done right.
Branch: master
Clone or download
Latest commit 64fcb66 Nov 26, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information. Update Nov 23, 2019
LICENSE Update LICENSE Nov 23, 2019 Fix typo Nov 26, 2019

Awesome Naming Awesome


There are only two hard things in Computer Science: cache invalidation and naming things.

-- Phil Karlton

Concepts in computer science are usually nothing tangible so it's no surprise that naming things is hard. Nevertheless, we do come up with clever, creative and funny names. Some of them so established, we never pause and admire.

This is a curated list for when naming things is done right.


Data Structures and Algorithms

  • Greedy algorithm - An algorithm that finds a solution by always picking the currently best looking option without thinking too much about past and future decisions.
  • Stack - Data structure that only supports two operations: 1) adding a single object, and 2) removing the most recently added object. Analogy to a stack of (heavy/bulky) physical objects.

Design Patterns

  • Adapter - Allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.
  • Facade - Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying or structural code.


  • fold - Like a blanket being folded up, this function iterates a collection and in each step combines the current item with everything that has already been folded.
  • trampoline - Continuously runs functions which itself return functions. Like a child on a trampoline that returns and bounces back up.
  • zip - Merges two lists into one list of pairs like the interlocking teeth of a zipper.

IT Security

  • Backdoor - A method of bypassing normal authentication in a computer system.
  • Computer virus - A computer program that self replicates by infecting other computer programs similar to the behavior of biological viruses.
  • Cyber hygiene - Steps and practices that users should take to maintain system health and improve online security.
  • Honeypot - Part of a system meant to look like an attractive target but actually helps detect and deflect attackers.
  • Phoning home - When a system (e.g. stolen computer) secretly reports back to a third party other than the current possessor. The name is a reference to the movie E.T.
  • Sandbox - A safe and isolated environment to test unverified programs that may contain malicious code.
  • Trojan horse - Malware which misleads users of its true intent. The term is derived from the Ancient Greek story of the deceptive Trojan Horse.

Libraries and Frameworks

  • clooney - A JavaScript library implementing the actor model for concurrent computation. The term is a reference to George Clooney who is also an actor.
  • uppy - A dog themed uploader component. The name is a blend of upload and puppy. It comes with a crash recovery plugin called golden retreiver.

User Interface Elements

  • Breadcrumb - Navigational aid allowing users to keep track of their location within programs, documents, or websites. The term is a reference to the fairy tale Hansel and Gretel.
  • Carousel - A kind of animated slideshow looping back on itself.
  • Desktop - The metaphorical top of the user's desk, upon which objects such as documents and folders of documents can be placed.
  • Hamburger button - A button to toggle a menu. The associated icon resembles a hamburger.


  • ACID vs. BASE - Acronyms describing competing database ideologies (aka. SQL vs. NoSQL).
  • camelCase, snake_case, kebab-case - Different case styles where the name illustrates its appearance.
  • Easter egg - A hidden feature especially in video games in reference to the Easter egg hunt.
  • Lazy evaluation - An evaluation stategy which suspends evaluation until it's absolutly necessary and then never does it again.
  • Optimistic UI - User interfaces that assume expensive operations will complete successfully thereby improving the perceived performance.
  • Process starvation - A problem where a process is perpetually denied resources to do its work.
  • Time travel debugging - Stepping back in time through source code to understand execution and sometimes even to change history.
You can’t perform that action at this time.