aboutsummaryrefslogtreecommitdiff
path: root/_posts/2021-03-21-coins.md
blob: f29937cbac8f04b1172b079323b258e156863767 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
---
title: Cactus's Obvious, Intuitive Naming Scheme
---

It's well-established that naming things is one of the two hardest problems in computer science (along with cache invalidation and off-by-one errors).
So I solved naming.
If you've got a project that needs a name, here you go.

The ingredients are simple:

1. Your name.
2. The word "obvious".
3. A good adjective.
4. The kind of thing you've made.

The canonical example, from which this scheme was reverse-engineered, is [Tom's Obvious, Minimal Language](https://en.wikipedia.org/wiki/TOML).
People who haven't used TOML might think that "obvious" is functioning here to describe the language, but various attributes of TOML ([non-ASCII keys requiring quotes](https://toml.io/en/v1.0.0#keys), [substantial distinctions between single- and double-quoted strings](https://toml.io/en/v1.0.0#string), [array-of-tables syntax](https://toml.io/en/v1.0.0#array-of-tables)) indicate that "obvious" is merely part of the name template rather than an actual descriptor.

As an example, we can construct a name for this approach to assigning names to things.
My name is *cactus* (for some value of "name", and for that matter "my"), it would be good if this was *intuitive*, and this is a *naming scheme*.
As such, the name this process assigns to itself is "Cactus's Obvious, Intuitive Naming Scheme", which abbreviates nicely to "COINS".

We can also construct COINS names for other things:

- [Linus's Obvious, Free Kernel](https://en.wikipedia.org/wiki/Linux_kernel)
- [Bjarne's Obvious, Powerful Language](https://en.wikipedia.org/wiki/C%2B%2B)
- [Donald's Obvious, Expressive Language](https://en.wikipedia.org/wiki/TeX)
- [Leslie's Obvious, Usable Macros](https://en.wikipedia.org/wiki/LaTeX)
- [Jack's Obvious, Nightmarish Hellsite](https://en.wikipedia.org/wiki/Twitter)
- [Bram's Obvious, Terse Editor](https://en.wikipedia.org/wiki/Vim_(text_editor))
- [Sonja's Obvious, Minimal Language](https://en.wikipedia.org/wiki/Toki_Pona)
- [Kurt's Obvious, Profound Theorem](https://en.wikipedia.org/wiki/G%C3%B6del%27s_incompleteness_theorems)
- [[Miku]'s Obvious, Engaging Film](https://en.wikipedia.org/wiki/Primer_(film))
- [Jimmy's Obvious, Collective Encyclopedia](https://en.wikipedia.org/wiki/Wikipedia)
- [Alan's Obvious, Revolutionary Mistake](https://en.wikipedia.org/wiki/Computer)

Despite the fact that Tom's Obvious, Minimal Language inspired this naming scheme, it actually suffers greatly from having used it.
If I ever get my hands on a time machine, I will go back and tell Tom to call it "My INI-Like Format" instead.