{"id":624,"url":"https://github.com/gruhn/awesome-naming","last_synced_at":"2025-09-27T07:30:24.419Z","repository":{"id":45981655,"uuid":"214240899","full_name":"gruhn/awesome-naming","owner":"gruhn","description":"A curated list for when naming things is done right.","archived":false,"fork":false,"pushed_at":"2025-06-22T21:47:54.000Z","size":228,"stargazers_count":1348,"open_issues_count":0,"forks_count":46,"subscribers_count":20,"default_branch":"master","last_synced_at":"2025-09-23T19:42:53.681Z","etag":null,"topics":["awesome","awesome-list","computer-science","naming","naming-conventions"],"latest_commit_sha":null,"homepage":"","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"cc0-1.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gruhn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2019-10-10T17:10:14.000Z","updated_at":"2025-09-18T11:51:04.000Z","dependencies_parsed_at":"2024-04-13T05:01:51.493Z","dependency_job_id":"814d93d8-1e22-4538-8e3a-0ad6a35cbbc6","html_url":"https://github.com/gruhn/awesome-naming","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/gruhn/awesome-naming","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruhn%2Fawesome-naming","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruhn%2Fawesome-naming/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruhn%2Fawesome-naming/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruhn%2Fawesome-naming/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gruhn","download_url":"https://codeload.github.com/gruhn/awesome-naming/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gruhn%2Fawesome-naming/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":276857082,"owners_count":25716776,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-25T02:00:09.612Z","response_time":80,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["awesome","awesome-list","computer-science","naming","naming-conventions"],"created_at":"2024-01-05T20:13:00.484Z","updated_at":"2025-09-27T07:30:24.413Z","avatar_url":"https://github.com/gruhn.png","language":null,"funding_links":[],"categories":["Programming","Miscellaneous","Technical","Others","Uncategorized","Live Site:   [searchAwesome](https://search-awesome.vercel.app/)","Other Lists","awesome-list","Themed Directories"],"sub_categories":["awesome-*","Uncategorized","TeX Lists","Updated this month"],"readme":"# Awesome Naming [![Awesome](https://awesome.re/badge.svg)](https://awesome.re)\n\n\u003c!-- lint disable no-repeat-punctuation --\u003e\nFamously...\n\u003c!-- lint enable no-repeat-punctuation --\u003e\n\n\u003e There are only two hard things in Computer Science: cache invalidation and naming things.\n\u003e \n\u003e ― Phil Karlton\n\nConcepts in computer science are usually nothing tangible so it's no surprise that naming things is hard.\nNevertheless, we _do_ come up with clever, creative and funny names.\nSome of them so established, we never pause and admire.\n\nThis is a curated list for when naming things is done right.\n\n## Contents \n\n- [Data Structures and Algorithms](#data-structures-and-algorithms)\n- [Design Patterns and Anti Patterns](#design-patterns-and-anti-patterns)\n- [Functions](#functions)\n- [IT Security](#it-security)\n- [Machine Learning and Artificial Intelligence](#machine-learning-and-artificial-intelligence)\n- [Programming Languages and Programming Language Theory](#programming-languages-and-programming-language-theory)\n- [Theoretical Computer Science](#theoretical-computer-science) \n- [Tools, Applications, Libraries, Frameworks](#tools-applications-libraries-frameworks)\n- [User Interface Design](#user-interface-design)\n- [Other](#other)\n\n---\n\n## Data Structures and Algorithms\n\n- [Backtracking](https://de.wikipedia.org/wiki/Backtracking) - When you explore a search space and you reach a dead end, you follow your *tracks* back to the last crossroad and try the other way. \n- [Brute force](https://en.m.wikipedia.org/wiki/Brute-force_search) - Violence is actually almost always a solution but not a very clever one.\n- [Greedy algorithm](https://en.wikipedia.org/wiki/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.\n- [Hill climbing](https://en.wikipedia.org/wiki/Hill_climbing) - 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. \n- [Israeli Queue](https://rapidapi.com/blog/israeli-queues-exploring-a-bizarre-data-structure/) - A type of priority queue and a reference to the infamously unorganized queues in Israel. Here items can *cut in line* when they *have already waiting friends*.\n- [Stack](https://en.wikipedia.org/wiki/Stack_(abstract_data_type)) - Like with a stack of pancakes you can only add and remove items from the top of this data structure.\n- [Tree](https://en.wikipedia.org/wiki/Tree_(data_structure)) - A hierarchically organized data structure. From the _root_ item the other items _branch out_ into _nodes_ and _leaves_. A collection of trees is often called a *forest*.\n- [Queue](https://en.wikipedia.org/wiki/Queue_(abstract_data_type)) - In this data structure items are always added at the end and removed at the front as if the items were waiting in line.\n\n## Design Patterns and Anti Patterns\n\n- [Adapter](https://en.wikipedia.org/wiki/Adapter_pattern) - Allows classes with incompatible interfaces to work together by wrapping its own interface around that of an already existing class.\n- [Facade](https://en.wikipedia.org/wiki/Facade_pattern) - Analogous to a facade in architecture, a facade is an object that serves as a front-facing interface masking more complex underlying structure.\n- [Promise](https://en.wikipedia.org/wiki/Futures_and_promises) - A representation of a result that is available in the future, unless there are errors. Like in reality, promises are broken sometimes.\n- [Shotgun surgery](https://en.wikipedia.org/wiki/Shotgun_surgery) - A programming antipattern where in a single change you wildly add code everywhere in your codebase.\n- [Spaghetti Code](https://en.wikipedia.org/wiki/Spaghetti_code) - A program with a tangled and hard-to-follow stucture.\n\n## Functions\n\n- [fold](https://en.wikipedia.org/wiki/Fold_(higher-order_function)) - 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.\n- [munch](https://hackage.haskell.org/package/base-4.19.0.0/docs/Text-ParserCombinators-ReadP.html#v:munch) - Parser function that greedily consumes an input stream until it's satisfied.\n- [trampoline](https://clojuredocs.org/clojure.core/trampoline) - Continuously runs functions which itself return functions. Like a child on a trampoline that _returns_ and bounces back up. \n- [zip](https://hackage.haskell.org/package/base-4.12.0.0/docs/Prelude.html#v:zip) - Merges two lists into one list of pairs like the interlocking teeth of a zipper.\n\n## IT Security\n\n- [Backdoor](https://en.wikipedia.org/wiki/Backdoor_(computing)) - A method of bypassing normal authentication in a computer system.\n- [Computer virus](https://en.wikipedia.org/wiki/Computer_virus) - A computer program that self replicates by _infecting_ other computer programs similar to the behavior of biological viruses.\n- [Cyber hygiene](https://digitalguardian.com/blog/what-cyber-hygiene-definition-cyber-hygiene-benefits-best-practices-and-more) - Steps and practices that users should take to maintain system health and improve online security.\n- [Honeypot](https://en.wikipedia.org/wiki/Honeypot_(computing)) - Part of a system meant to look like an attractive target but actually helps detect and deflect attackers.\n- [Phoning home](https://en.wikipedia.org/wiki/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.\n- [Sandbox](https://en.wikipedia.org/wiki/Sandbox_(computer_security)) - A safe and isolated environment to test unverified programs that may contain malicious code.\n- [Trojan horse](https://en.wikipedia.org/wiki/Trojan_horse_(computing)) - Malware which misleads users of its true intent. The term is derived from the Ancient Greek story of the deceptive Trojan Horse. \n\n## Machine Learning and Artificial Intelligence\n\n- [Confusion matrix](https://en.wikipedia.org/wiki/Confusion_matrix) - A tabular summary of a classifiers \"confusion\", i.e. how often it thought to make correct predictions when it actually didn't.\n- [Decision boundary](https://en.wikipedia.org/wiki/Decision_boundary) - A boundary dividing the space of possible data points. Here you decide, everything on this side is SPAM, everything on that side is not.\n- [Gradient descent](https://en.wikipedia.org/wiki/Gradient_descent) - Minimizing a cost function by iteratively computing the gradient and moving in the direction of steepest descent. \n- [Hallucination](https://en.wikipedia.org/wiki/Hallucination_(artificial_intelligence)) - A confident response by an AI that does not seem to be justified by its training data.\n- [Training](https://en.wikipedia.org/wiki/Training,_validation,_and_test_data_sets) - The process of showing the machine a bunch of examples, until it learns what we want from it.\n\n## Programming Languages and Programming Language Theory\n\n- [Choreographic programming](https://en.wikipedia.org/wiki/Choreographic_programming) - A programming paradigm where programs are compositions of interactions among multiple concurrent participants.\n- [Clojure](https://clojure.org/) - A functional language making extensive use of **closures** but with a **j** because it's running on the Java virtual machine.\n- [C++](https://en.wikipedia.org/wiki/C%2B%2B#External_links) - Although C was certainly a bad name, C++ was quite clever. The iconic increment operator **++** indicates that **C++** is the successor.\n- [Garbage Collector](https://en.m.wikipedia.org/wiki/Garbage_collection_(computer_science)) - Part of a program that attempts to find and reclaim garbage pieces of memory not used anymore.\n- [Lazy evaluation](https://en.wikipedia.org/wiki/Lazy_evaluation) - An evaluation stategy which suspends evaluation until it's absolutely necessary and then never does it again.\n- [Syntactic sugar](https://en.wikipedia.org/wiki/Syntactic_sugar) - 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.\n\n## User Interface Design\n\n- [Bento layout](https://www.saasframe.io/blog/the-bento-layout-trend) - A grid based layout resembling the compartmentation of bento boxes.\n- [Breadcrumb](https://en.wikipedia.org/wiki/Breadcrumb_(navigation)) - 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_.\n- [Carousel](https://www.nngroup.com/articles/designing-effective-carousels/) - A kind of animated slideshow looping back on itself.\n- [Clipboard](https://en.wikipedia.org/wiki/Clipboard_(computing)) - Where you temporarily put _files_ you are working with (i.e. the copy \u0026 paste buffer).\n- [Desktop](https://en.wikipedia.org/wiki/Desktop_metaphor) - The metaphorical top of the user's desk, upon which objects such as documents and folders of documents can be placed.\n- [Hamburger button](https://en.wikipedia.org/wiki/Hamburger_button) - A button to toggle a menu. The associated icon resembles a hamburger.\n- [Optimistic UI](https://uxplanet.org/optimistic-1000-34d9eefe4c05) - User interfaces that assume expensive operations will complete successfully thereby improving the perceived performance.\n- [Scrolling](https://en.wikipedia.org/wiki/Scrolling) - Screen content is often less like a book with discrete pages and more like a continuous roll of parchment, i.e. a scroll.\n\n## Theoretical Computer Science\n\n- [Busy Beaver](https://en.wikipedia.org/wiki/Busy_beaver) - Turing machines that produce numbers so insanly large, no other algorithm can keep up with them.\n- [Clique problem](https://en.wikipedia.org/wiki/Clique_problem) - The problem of finding groups of mutual friends in a network of people with friendship relations. Or more general, finding complete subgraphs.\n- [Game of Life](https://en.wikipedia.org/wiki/Conway%27s_Game_of_Life) - A game world that showcases how astonishing complexity can arise from very simple ingredients.\n- [Oracle](https://en.wikipedia.org/wiki/Oracle_machine) - A black box that magically gives answers even to undeciable questions like the halting problem. \n- [Pumping lemma](https://en.wikipedia.org/wiki/Pumping_lemma) - The fact that in some formal languages any sufficiently long string can be _pumped_ with repetitions of its substring and the result stays in the same formal language.\n\n## Tools, Applications, Libraries, Frameworks\n\n- [clooney](https://github.com/GoogleChromeLabs/clooney) - A JavaScript library implementing the actor model for concurrent computation. The term is a reference to George Clooney who is also an actor.\n- [CockroachDB](https://web.archive.org/web/20150514123425/http://www.wired.co.uk/news/archive/2014-07/22/cockroachdb) - Database application, that is marketed as being so fault tolerant and resilient as a cockroach.\n- [corrosion](https://github.com/corrosion-rs/corrosion) - The process that turns metal into rust (literally) but also a tool that \"turns\" C++ into Rust.\n- [horcrux](https://github.com/jesseduffield/horcrux) - 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.\n- [Puppeteer](https://github.com/puppeteer/puppeteer) - A browser automation library. If the browser is the puppet, this is the puppeteer.\n- [Safari](https://en.wikipedia.org/wiki/Safari_(web_browser)) - Web browser developed by Apple.\n- [tldr](https://tldr.sh/) - Simplified man pages with practical examples.\n- [Uglify](https://github.com/mishoo/UglifyJS) - A JavaScript minifier. Removes everything that makes the code readable and pretty to make it smaller.\n- [uppy](https://github.com/transloadit/uppy) - A dog themed uploader component. The name is a blend of _upload_ and _puppy_. It even comes with a crash recovery plugin called _Golden Retriever_.\n- [Webpack](https://webpack.js.org/) - A bundler for JavaScript and other *web* assets with a short and descriptive name that also somewhat rhymes.\n- [yarn](https://yarnpkg.com/) - NodeJS dependency manager.\n\n## Other\n\n- [a11y, i18n, k8s, ...](https://en.wikipedia.org/wiki/Numeronym) - Abbreviating long words by keeping the first and last letter and writing the number of omitted letters in between. \n- [ACID vs. BASE](https://www.johndcook.com/blog/2009/07/06/brewer-cap-theorem-base/) - Acronyms describing competing database ideologies (aka. SQL vs. NoSQL). Note that acid and base are also opposites in chemistry.\n- [Bottleneck](https://en.wikipedia.org/wiki/Bottleneck#Computing) - A central part of a network/application that significantly limits throughput/performance and should ideally be eliminated.\n- [Brick](https://en.m.wikipedia.org/wiki/Brick_(electronics)) - When your device is so corrupted it virtually turns into a brick.\n- [camelCase, snake_case, kebab-case](https://en.wikipedia.org/wiki/Letter_case#Use_within_programming_languages) - Different case styles where the name illustrates its appearance.\n- [Code golf](https://en.wikipedia.org/wiki/Code_golf) - Writing a program in as few characters as possible. Just like how Golf players try to win in the fewest club strokes.\n- [Cookie licking](https://devblogs.microsoft.com/oldnewthing/20091201-00/?p=15843) - E.g. claiming a GitHub issue, then not working on it.\n- [Easter egg](https://en.wikipedia.org/wiki/Easter_egg_(media)) - A hidden feature especially in video games in reference to the Easter egg hunt.\n- [Firmware](https://en.wikipedia.org/wiki/Firmware) - The _ware_ between _software_ and _hardware_.\n- [Floating point number](https://floating-point-gui.de/formats/fp/) - This representation can encode numbers at very different magnitudes with limited amount of digits by letting the radix point _float_ instead of being fixed in place.\n- [Framework](https://en.wikipedia.org/wiki/Software_framework) - In software architecture (like in actual architecture) frameworks provide basic structure to  build upon that guide and constrain the further development.\n- [Glue Code](https://en.wikipedia.org/wiki/Glue_code) - Jenga and LEGO bricks don't share the same interface but you can always glue them together.\n- [Heisenbug](https://en.wikipedia.org/wiki/Heisenbug) - A bug that seems to disappear or change when one tries to study it. It's a pun on Werner Heisenberg who discovered that the act of observing quantum systems inevitably alters their state.\n- [Hydra](https://computer-dictionary-online.org/definitions-h/hydra-code) - A bug that, when an attempt to fix is made, introduces multiple new bugs. It's a bug that cannot be fixed.\n- [Magic](https://en.wikipedia.org/wiki/Magic_(programming)) - A magic program/piece of code is doing it's job but nobody knows how. Like in reality, magic doesn't actually exist. Once you understand it, it's not magic anymore.\n- [Process starvation](https://en.wikipedia.org/wiki/Starvation_(computer_science)) - A problem where a process is perpetually denied resources to do its work.\n- [Time travel debugging](https://en.wikipedia.org/wiki/Time_travel_debugging) - Stepping back in time through source code to understand execution and sometimes even to change history.\n- [Tree shaking](https://en.wikipedia.org/wiki/Tree_shaking) - Shake the dependency tree until all the dead parts are falling off and you end up with a nice lean tree.\n- [Unfair enumeration](https://www.youtube.com/watch?v=CvLsVfq6cks\u0026t=835s) - 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. \n- [Yoda condition](https://eslint.org/docs/latest/rules/yoda) - When you write `if (\"red\" === color) {` instead of `if (color === \"red\") {` because it reads as, “if red equals the color”, similar to the way the Star Wars character Yoda speaks.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgruhn%2Fawesome-naming","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgruhn%2Fawesome-naming","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgruhn%2Fawesome-naming/lists"}