This commit is contained in:
2025-07-18 23:13:11 +02:00
parent c9485bf576
commit 652812eed0
2354 changed files with 1266414 additions and 1 deletions

368
html/naming.md2.html Normal file
View File

@@ -0,0 +1,368 @@
<h1 id="awesome-naming-awesome">Awesome Naming <a
href="https://awesome.re"><img src="https://awesome.re/badge.svg"
alt="Awesome" /></a></h1>
<!-- lint disable no-repeat-punctuation -->
<p>Famously… <!-- lint enable no-repeat-punctuation --></p>
<blockquote>
<p>There are only two hard things in Computer Science: cache
invalidation and naming things.</p>
<p>― Phil Karlton</p>
</blockquote>
<p>Concepts in computer science are usually nothing tangible so its no
surprise that naming things is hard. Nevertheless, we <em>do</em> come
up with clever, creative and funny names. Some of them so established,
we never pause and admire.</p>
<p>This is a curated list for when naming things is done right.</p>
<h2 id="contents">Contents</h2>
<ul>
<li><a href="#data-structures-and-algorithms">Data Structures and
Algorithms</a></li>
<li><a href="#design-patterns-and-anti-patterns">Design Patterns and
Anti Patterns</a></li>
<li><a href="#functions">Functions</a></li>
<li><a href="#it-security">IT Security</a></li>
<li><a href="#machine-learning-and-artificial-intelligence">Machine
Learning and Artificial Intelligence</a></li>
<li><a
href="#programming-languages-and-programming-language-theory">Programming
Languages and Programming Language Theory</a></li>
<li><a href="#theoretical-computer-science">Theoretical Computer
Science</a></li>
<li><a href="#tools-applications-libraries-frameworks">Tools,
Applications, Libraries, Frameworks</a></li>
<li><a href="#user-interface-design">User Interface Design</a></li>
<li><a href="#other">Other</a></li>
</ul>
<hr />
<h2 id="data-structures-and-algorithms">Data Structures and
Algorithms</h2>
<ul>
<li><a
href="https://de.wikipedia.org/wiki/Backtracking">Backtracking</a> -
When you explore a search space and you reach a dead end, you follow
your <em>tracks</em> back to the last crossroad and try the other
way.</li>
<li><a href="https://en.m.wikipedia.org/wiki/Brute-force_search">Brute
force</a> - Violence is actually almost always a solution but not a very
clever one.</li>
<li><a href="https://en.wikipedia.org/wiki/Greedy_algorithm">Greedy
algorithm</a> - An algorithm that finds a solution by always picking the
currently best looking option without thinking too much about past and
future decisions.</li>
<li><a href="https://en.wikipedia.org/wiki/Hill_climbing">Hill
climbing</a> - Starting somewhere in the hilly “landscape” of solutions
you go in the direction of steepest ascent until reaching the top of a
hill. You might miss higher hills though.</li>
<li><a
href="https://rapidapi.com/blog/israeli-queues-exploring-a-bizarre-data-structure/">Israeli
Queue</a> - A type of priority queue and a reference to the infamously
unorganized queues in Israel. Here items can <em>cut in line</em> when
they <em>have already waiting friends</em>.</li>
<li><a
href="https://en.wikipedia.org/wiki/Stack_(abstract_data_type)">Stack</a>
- Like with a stack of pancakes you can only add and remove items from
the top of this data structure.</li>
<li><a
href="https://en.wikipedia.org/wiki/Tree_(data_structure)">Tree</a> - A
hierarchically organized data structure. From the <em>root</em> item the
other items <em>branch out</em> into <em>nodes</em> and <em>leaves</em>.
A collection of trees is often called a <em>forest</em>.</li>
<li><a
href="https://en.wikipedia.org/wiki/Queue_(abstract_data_type)">Queue</a>
- In this data structure items are always added at the end and removed
at the front as if the items were waiting in line.</li>
</ul>
<h2 id="design-patterns-and-anti-patterns">Design Patterns and Anti
Patterns</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Adapter_pattern">Adapter</a>
- Allows classes with incompatible interfaces to work together by
wrapping its own interface around that of an already existing
class.</li>
<li><a href="https://en.wikipedia.org/wiki/Facade_pattern">Facade</a> -
Analogous to a facade in architecture, a facade is an object that serves
as a front-facing interface masking more complex underlying
structure.</li>
<li><a
href="https://en.wikipedia.org/wiki/Futures_and_promises">Promise</a> -
A representation of a result that is available in the future, unless
there are errors. Like in reality, promises are broken sometimes.</li>
<li><a href="https://en.wikipedia.org/wiki/Shotgun_surgery">Shotgun
surgery</a> - A programming antipattern where in a single change you
wildly add code everywhere in your codebase.</li>
<li><a href="https://en.wikipedia.org/wiki/Spaghetti_code">Spaghetti
Code</a> - A program with a tangled and hard-to-follow stucture.</li>
</ul>
<h2 id="functions">Functions</h2>
<ul>
<li><a
href="https://en.wikipedia.org/wiki/Fold_(higher-order_function)">fold</a>
- 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.</li>
<li><a
href="https://hackage.haskell.org/package/base-4.19.0.0/docs/Text-ParserCombinators-ReadP.html#v:munch">munch</a>
- Parser function that greedily consumes an input stream until its
satisfied.</li>
<li><a
href="https://clojuredocs.org/clojure.core/trampoline">trampoline</a> -
Continuously runs functions which itself return functions. Like a child
on a trampoline that <em>returns</em> and bounces back up.</li>
<li><a
href="https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:zip">zip</a>
- Merges two lists into one list of pairs like the interlocking teeth of
a zipper.</li>
</ul>
<h2 id="it-security">IT Security</h2>
<ul>
<li><a
href="https://en.wikipedia.org/wiki/Backdoor_(computing)">Backdoor</a> -
A method of bypassing normal authentication in a computer system.</li>
<li><a href="https://en.wikipedia.org/wiki/Computer_virus">Computer
virus</a> - A computer program that self replicates by
<em>infecting</em> other computer programs similar to the behavior of
biological viruses.</li>
<li><a
href="https://digitalguardian.com/blog/what-cyber-hygiene-definition-cyber-hygiene-benefits-best-practices-and-more">Cyber
hygiene</a> - Steps and practices that users should take to maintain
system health and improve online security.</li>
<li><a
href="https://en.wikipedia.org/wiki/Honeypot_(computing)">Honeypot</a> -
Part of a system meant to look like an attractive target but actually
helps detect and deflect attackers.</li>
<li><a href="https://en.wikipedia.org/wiki/Phoning_home">Phoning
home</a> - 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.</li>
<li><a
href="https://en.wikipedia.org/wiki/Sandbox_(computer_security)">Sandbox</a>
- A safe and isolated environment to test unverified programs that may
contain malicious code.</li>
<li><a
href="https://en.wikipedia.org/wiki/Trojan_horse_(computing)">Trojan
horse</a> - Malware which misleads users of its true intent. The term is
derived from the Ancient Greek story of the deceptive Trojan Horse.</li>
</ul>
<h2 id="machine-learning-and-artificial-intelligence">Machine Learning
and Artificial Intelligence</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Confusion_matrix">Confusion
matrix</a> - A tabular summary of a classifiers “confusion”, i.e. how
often it thought to make correct predictions when it actually
didnt.</li>
<li><a href="https://en.wikipedia.org/wiki/Decision_boundary">Decision
boundary</a> - A boundary dividing the space of possible data points.
Here you decide, everything on this side is SPAM, everything on that
side is not.</li>
<li><a href="https://en.wikipedia.org/wiki/Gradient_descent">Gradient
descent</a> - Minimizing a cost function by iteratively computing the
gradient and moving in the direction of steepest descent.</li>
<li><a
href="https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)">Hallucination</a>
- A confident response by an AI that does not seem to be justified by
its training data.</li>
<li><a
href="https://en.wikipedia.org/wiki/Training,_validation,_and_test_data_sets">Training</a>
- The process of showing the machine a bunch of examples, until it
learns what we want from it.</li>
</ul>
<h2
id="programming-languages-and-programming-language-theory">Programming
Languages and Programming Language Theory</h2>
<ul>
<li><a
href="https://en.wikipedia.org/wiki/Choreographic_programming">Choreographic
programming</a> - A programming paradigm where programs are compositions
of interactions among multiple concurrent participants.</li>
<li><a href="https://clojure.org/">Clojure</a> - A functional language
making extensive use of <strong>closures</strong> but with a
<strong>j</strong> because its running on the Java virtual
machine.</li>
<li><a
href="https://en.wikipedia.org/wiki/C%2B%2B#External_links">C++</a> -
Although C was certainly a bad name, C++ was quite clever. The iconic
increment operator <strong>++</strong> indicates that
<strong>C++</strong> is the successor.</li>
<li><a
href="https://en.m.wikipedia.org/wiki/Garbage_collection_(computer_science)">Garbage
Collector</a> - Part of a program that attempts to find and reclaim
garbage pieces of memory not used anymore.</li>
<li><a href="https://en.wikipedia.org/wiki/Lazy_evaluation">Lazy
evaluation</a> - An evaluation stategy which suspends evaluation until
its absolutely necessary and then never does it again.</li>
<li><a href="https://en.wikipedia.org/wiki/Syntactic_sugar">Syntactic
sugar</a> - Syntax that makes the language “sweeter” for human use.
Usually a shorthand for common operations that can also be expressed in
a more verbose form.</li>
</ul>
<h2 id="user-interface-design">User Interface Design</h2>
<ul>
<li><a href="https://www.saasframe.io/blog/the-bento-layout-trend">Bento
layout</a> - A grid based layout resembling the compartmentation of
bento boxes.</li>
<li><a
href="https://en.wikipedia.org/wiki/Breadcrumb_(navigation)">Breadcrumb</a>
- Navigational aid allowing users to keep track of their location within
programs, documents, or websites. The term is a reference to the fairy
tale <em>Hansel and Gretel</em>.</li>
<li><a
href="https://www.nngroup.com/articles/designing-effective-carousels/">Carousel</a>
- A kind of animated slideshow looping back on itself.</li>
<li><a
href="https://en.wikipedia.org/wiki/Clipboard_(computing)">Clipboard</a>
- Where you temporarily put <em>files</em> you are working with
(i.e. the copy &amp; paste buffer).</li>
<li><a href="https://en.wikipedia.org/wiki/Desktop_metaphor">Desktop</a>
- The metaphorical top of the users desk, upon which objects such as
documents and folders of documents can be placed.</li>
<li><a href="https://en.wikipedia.org/wiki/Hamburger_button">Hamburger
button</a> - A button to toggle a menu. The associated icon resembles a
hamburger.</li>
<li><a
href="https://uxplanet.org/optimistic-1000-34d9eefe4c05">Optimistic
UI</a> - User interfaces that assume expensive operations will complete
successfully thereby improving the perceived performance.</li>
<li><a href="https://en.wikipedia.org/wiki/Scrolling">Scrolling</a> -
Screen content is often less like a book with discrete pages and more
like a continuous roll of parchment, i.e. a scroll.</li>
</ul>
<h2 id="theoretical-computer-science">Theoretical Computer Science</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Busy_beaver">Busy Beaver</a>
- Turing machines that produce numbers so insanly large, no other
algorithm can keep up with them.</li>
<li><a href="https://en.wikipedia.org/wiki/Clique_problem">Clique
problem</a> - The problem of finding groups of mutual friends in a
network of people with friendship relations. Or more general, finding
complete subgraphs.</li>
<li><a href="https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life">Game
of Life</a> - A game world that showcases how astonishing complexity can
arise from very simple ingredients.</li>
<li><a href="https://en.wikipedia.org/wiki/Oracle_machine">Oracle</a> -
A black box that magically gives answers even to undeciable questions
like the halting problem.</li>
<li><a href="https://en.wikipedia.org/wiki/Pumping_lemma">Pumping
lemma</a> - The fact that in some formal languages any sufficiently long
string can be <em>pumped</em> with repetitions of its substring and the
result stays in the same formal language.</li>
</ul>
<h2 id="tools-applications-libraries-frameworks">Tools, Applications,
Libraries, Frameworks</h2>
<ul>
<li><a href="https://github.com/GoogleChromeLabs/clooney">clooney</a> -
A JavaScript library implementing the actor model for concurrent
computation. The term is a reference to George Clooney who is also an
actor.</li>
<li><a
href="https://web.archive.org/web/20150514123425/http://www.wired.co.uk/news/archive/2014-07/22/cockroachdb">CockroachDB</a>
- Database application, that is marketed as being so fault tolerant and
resilient as a cockroach.</li>
<li><a href="https://github.com/corrosion-rs/corrosion">corrosion</a> -
The process that turns metal into rust (literally) but also a tool that
“turns” C++ into Rust.</li>
<li><a href="https://github.com/jesseduffield/horcrux">horcrux</a> -
Splits a file into encrypted fragments that only together can be
decrypted again. In the Harry Potter universe, Horcruxes are fragments
of a persons soul. To kill the person, all fragments must be
destroyed.</li>
<li><a href="https://github.com/puppeteer/puppeteer">Puppeteer</a> - A
browser automation library. If the browser is the puppet, this is the
puppeteer.</li>
<li><a
href="https://en.wikipedia.org/wiki/Safari_(web_browser)">Safari</a> -
Web browser developed by Apple.</li>
<li><a href="https://tldr.sh/">tldr</a> - Simplified man pages with
practical examples.</li>
<li><a href="https://github.com/mishoo/UglifyJS">Uglify</a> - A
JavaScript minifier. Removes everything that makes the code readable and
pretty to make it smaller.</li>
<li><a href="https://github.com/transloadit/uppy">uppy</a> - A dog
themed uploader component. The name is a blend of <em>upload</em> and
<em>puppy</em>. It even comes with a crash recovery plugin called
<em>Golden Retriever</em>.</li>
<li><a href="https://webpack.js.org/">Webpack</a> - A bundler for
JavaScript and other <em>web</em> assets with a short and descriptive
name that also somewhat rhymes.</li>
<li><a href="https://yarnpkg.com/">yarn</a> - NodeJS dependency
manager.</li>
</ul>
<h2 id="other">Other</h2>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Numeronym">a11y, i18n, k8s,
</a> - Abbreviating long words by keeping the first and last letter and
writing the number of omitted letters in between.</li>
<li><a
href="https://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/">ACID
vs. BASE</a> - Acronyms describing competing database ideologies (aka.
SQL vs. NoSQL). Note that acid and base are also opposites in
chemistry.</li>
<li><a
href="https://en.wikipedia.org/wiki/Bottleneck#Computing">Bottleneck</a>
- A central part of a network/application that significantly limits
throughput/performance and should ideally be eliminated.</li>
<li><a
href="https://en.m.wikipedia.org/wiki/Brick_(electronics)">Brick</a> -
When your device is so corrupted it virtually turns into a brick.</li>
<li><a
href="https://en.wikipedia.org/wiki/Letter_case#Use_within_programming_languages">camelCase,
snake_case, kebab-case</a> - Different case styles where the name
illustrates its appearance.</li>
<li><a href="https://en.wikipedia.org/wiki/Code_golf">Code golf</a> -
Writing a program in as few characters as possible. Just like how Golf
players try to win in the fewest club strokes.</li>
<li><a
href="https://devblogs.microsoft.com/oldnewthing/20091201-00/?p=15843">Cookie
licking</a> - E.g. claiming a GitHub issue, then not working on it.</li>
<li><a href="https://en.wikipedia.org/wiki/Easter_egg_(media)">Easter
egg</a> - A hidden feature especially in video games in reference to the
Easter egg hunt.</li>
<li><a href="https://en.wikipedia.org/wiki/Firmware">Firmware</a> - The
<em>ware</em> between <em>software</em> and <em>hardware</em>.</li>
<li><a href="https://floating-point-gui.de/formats/fp/">Floating point
number</a> - This representation can encode numbers at very different
magnitudes with limited amount of digits by letting the radix point
<em>float</em> instead of being fixed in place.</li>
<li><a
href="https://en.wikipedia.org/wiki/Software_framework">Framework</a> -
In software architecture (like in actual architecture) frameworks
provide basic structure to build upon that guide and constrain the
further development.</li>
<li><a href="https://en.wikipedia.org/wiki/Glue_code">Glue Code</a> -
Jenga and LEGO bricks dont share the same interface but you can always
glue them together.</li>
<li><a href="https://en.wikipedia.org/wiki/Heisenbug">Heisenbug</a> - A
bug that seems to disappear or change when one tries to study it. Its a
pun on Werner Heisenberg who discovered that the act of observing
quantum systems inevitably alters their state.</li>
<li><a
href="https://computer-dictionary-online.org/definitions-h/hydra-code">Hydra</a>
- A bug that, when an attempt to fix is made, introduces multiple new
bugs. Its a bug that cannot be fixed.</li>
<li><a
href="https://en.wikipedia.org/wiki/Magic_(programming)">Magic</a> - A
magic program/piece of code is doing its job but nobody knows how. Like
in reality, magic doesnt actually exist. Once you understand it, its
not magic anymore.</li>
<li><a
href="https://en.wikipedia.org/wiki/Starvation_(computer_science)">Process
starvation</a> - A problem where a process is perpetually denied
resources to do its work.</li>
<li><a href="https://en.wikipedia.org/wiki/Time_travel_debugging">Time
travel debugging</a> - Stepping back in time through source code to
understand execution and sometimes even to change history.</li>
<li><a href="https://en.wikipedia.org/wiki/Tree_shaking">Tree
shaking</a> - Shake the dependency tree until all the dead parts are
falling off and you end up with a nice lean tree.</li>
<li><a
href="https://www.youtube.com/watch?v=CvLsVfq6cks&amp;t=835s">Unfair
enumeration</a> - A program that outputs all even numbers and then all
odd numbers generates an unfair enumeration of the natural numbers
because some numbers are never reached.</li>
<li><a href="https://eslint.org/docs/latest/rules/yoda">Yoda
condition</a> - When you write <code>if ("red" === color) {</code>
instead of <code>if (color === "red") {</code> because it reads as, “if
red equals the color”, similar to the way the Star Wars character Yoda
speaks.</li>
</ul>
<p><a href="https://github.com/gruhn/awesome-naming">naming.md
Github</a></p>