That glorious day when I explained to my boss what wiki is and that we should have one internally, he fired "viki" into google, with smoothly honed muscle memory clicked first result..and got full screen of poon.
There is actually a good reason not mentioned, not to name tools by their purpose:
- the purpose will change
Your "silicon-valley-bank-integrator" tool will eventually need to be updated to do something else.
Or your "login-page-config-service" tool may eventually do more than just logins.
Using gibberish or mythological names gives a nice memorable name that doesn't lead (or mislead) you to believe it does a particular thing which may or may not be correct anymore.
If the community followed the author's guidance, we would have names like "Generic LLM wrapper 690" ("GLW690" if following the early programming language conventions.) or "Github clone with a different ideology 11"
Yeah, this is a bit relative. Use microsoft tools/products (especially cloud/office) that came out in the past decade and you'll appreciate every other naming pattern.
My subjective view is that names should be exotic, flamboyant, unique and generally wild when it comes to tools. sticking your company's name as a prefix into everything (or the flagship product's) is confusing and only hurts you.
One issue with package naming is competition. One of the great things about OSS or software in general is people can take inspiration from other projects that do the same thing. Personally I've ran into deciding which casting library to use
AJV and runtypes use the naming convention that the article suggestions. It's named is derived from how it's used. Zod on the other hand seems to come from left field.
Personally, I built a simple caster called "ShallowCaster" before choosing to move to a library as things got move complex but I think a problem is that as competition increases the "generic" naming becomes more difficult to find.
I suppose an option is to include the author name for each package such as "json casting from google" or "@google/json-casting" this way all packages can use the descriptive naming while not conflicting
> naming things after random nouns, mythological creatures, or random favorite fictional characters is somehow acceptable professional practice. This would be career suicide in virtually any other technical field.
Really? Have you specced a microprocessor lately? Seen what pharmaceuticals are called? How polymer compound materials get named?
> There’s an odd tendency in modern software development; we’ve collectively decided that naming things after random nouns, mythological creatures, or random favorite fictional characters is somehow acceptable professional practice. This would be career suicide in virtually any other technical field.
I'm charmed by the lack of truth in this beautiful sentence. Top of mind for me, at least.
>> Early programming languages followed similar logic: FORTRAN (Formula Translation), COBOL (Common Business-Oriented Language), BASIC (Beginner’s All-purpose Symbolic Instruction Code), SQL (Structured Query Language), I believe Lisp stands for list processing. The pattern was clear: names conveyed purpose or origin.
"names conveyed purpose or origin.": no they don't. If I use the authors example of the two people talking: as if saying "BASIC" instead of "Cobra" explained the meaning anything better to a person who never used BASIC.
I've been programming for 15 years+ and never used basic due to my age and I never know, until today, that BASIC stands for "Beginner’s All-purpose Symbolic Instruction Code".
Why? Because I don't need to know and it doesn't make the usage of BASIC anything different.
We have an internal name and our product name. Internal names start as something that describes the project/repo/tool. Then within 18 months the name no longer makes sense so we rename it to some random name - state names, lake names, presidents, mountains, etc. It's just a placeholder.
The public facing product name is a compromise of marketing, trademark, and what gets approved by the CEO. Even the company name might change in startup world. No joke: the startup next door had to change their name because it was too masculine, and they realized more than half their projected market was women.
The problem with descriptive names is that they start descriptive but then become proper nouns. At a former employer in the Fortune 100 outside the software industry, everything started with a descriptive name, that then became an acronym. And as every project and tool inevitably developed its own idiosyncrasies, the descriptive name pretty soon didn't tell you anything useful about the project at all.
It is an unavoidable reality that knowing something's name gives you very, very little information about what that something is. That's what sentences are for.
I really could go on about this. Names are only useful for distinct identification. They need to be distinct within their domain. Otherwise they're just an index into a list.
> Sure, if you’re building a consumer product. Your HTTP client, cli utility helper, whatever library is not a consumer product. The people who will ever care about it just want to know what it does.
——
It sounds like the author doesn’t view themselves as a consumer in this relationship, that they are immune to marketing, and that what they are advocating for isn’t just another marketing tactic. I’m not sure if any of those are true.
My experience with areas that use functional names to describe things is that you end up in a sea of acronyms (the functional-based names are a mouthful!) and you end in an arguably worse situation (did you say ABDC or ADBC, those are two completely different things).
I find the remark that we give things names more as a word play than purpose.... kind of amusing? Like, of course people will find a way to play with the tools they have. And in programming, that is often words. Because what else would it be?
By far the worst aspect of the nerd ecosystem is the odd belief that pops up every so often that names should matter. In every ecosystem, there is usually some odd idea that it is only in their world that people abuse this.
Just skim through that list of things that are unexpectedly named after people. Sure, you can get upset about Shell's sort not having any relation to shells. Or Bloom's filter not having a phase where the data "blooms" into use. But you would have the same issue with French drains. Or how gaslighting has nothing to do with lighting things on fire using gas and the affect that will have.
Honestly, I think this would be a fun list to just keep going. Akin to the old Chuck Norris joke generators.
I strongly agree with this. And what bothers me more than obscure or meaningless names like Viper are silly and embarrassing names like Hunchentoot. Names like that sometimes cause people to dismiss good software. It’s like using Comic Sans in a serious research paper.
One area of the sciences does partly use names like this, and that is biology. Biologists do sometimes name a species after a famous person, as in the louse Strigiphilus garylarsoni:
I agree. One recent example is in the Zig community a popular tool for benchmarking is "poop" [1] (Performance Optimizer Observation Platform). It could have easily been "pop" (Performance Observation Platform) and been cute enough without being intentionally cringe. Every time I see Zig now I think about "poop".
My old company Canva, was pretty good about this and I'm bringing that to the culture at my current place.
Krazam has excellently parodied this unserious naming indulgence of programmers[1]. "See, Bingo knows everyone's name-O. So we get the user ID from there." Racoon, Wingman, EKS (Entropy Chaos Service), RGS, Barbie Doll, Ringo-2.
209 comments
[ 4.0 ms ] story [ 107 ms ] thread- the purpose will change
Your "silicon-valley-bank-integrator" tool will eventually need to be updated to do something else.
Or your "login-page-config-service" tool may eventually do more than just logins.
Using gibberish or mythological names gives a nice memorable name that doesn't lead (or mislead) you to believe it does a particular thing which may or may not be correct anymore.
My subjective view is that names should be exotic, flamboyant, unique and generally wild when it comes to tools. sticking your company's name as a prefix into everything (or the flagship product's) is confusing and only hurts you.
- runtypes - https://github.com/runtypes/runtypes
- zod - https://zod.dev/
- ajv - https://ajv.js.org/
AJV and runtypes use the naming convention that the article suggestions. It's named is derived from how it's used. Zod on the other hand seems to come from left field.
Personally, I built a simple caster called "ShallowCaster" before choosing to move to a library as things got move complex but I think a problem is that as competition increases the "generic" naming becomes more difficult to find.
I suppose an option is to include the author name for each package such as "json casting from google" or "@google/json-casting" this way all packages can use the descriptive naming while not conflicting
Really? Have you specced a microprocessor lately? Seen what pharmaceuticals are called? How polymer compound materials get named?
I'm charmed by the lack of truth in this beautiful sentence. Top of mind for me, at least.
"names conveyed purpose or origin.": no they don't. If I use the authors example of the two people talking: as if saying "BASIC" instead of "Cobra" explained the meaning anything better to a person who never used BASIC.
I've been programming for 15 years+ and never used basic due to my age and I never know, until today, that BASIC stands for "Beginner’s All-purpose Symbolic Instruction Code".
Why? Because I don't need to know and it doesn't make the usage of BASIC anything different.
We have an internal name and our product name. Internal names start as something that describes the project/repo/tool. Then within 18 months the name no longer makes sense so we rename it to some random name - state names, lake names, presidents, mountains, etc. It's just a placeholder.
The public facing product name is a compromise of marketing, trademark, and what gets approved by the CEO. Even the company name might change in startup world. No joke: the startup next door had to change their name because it was too masculine, and they realized more than half their projected market was women.
- Forth
- Grep
- CVS (I'm not an American but you can relate)
- Clang
Altough MS products can be as opaque if not more. And let's not talk about IBM...
It is an unavoidable reality that knowing something's name gives you very, very little information about what that something is. That's what sentences are for.
What does chef do? Garden? Pig? Burp?
Nonsense.
- 'Microservices' sketch by Krazam
https://www.youtube.com/watch?v=y8OnoxKotPQ
Amiga famously had a custom ASIC called "Fat Gary" https://en.wikipedia.org/wiki/Amiga_custom_chips
I really could go on about this. Names are only useful for distinct identification. They need to be distinct within their domain. Otherwise they're just an index into a list.
What is it with a number of blogs recently that have turned off normal right-click behavior, and probably related, the scroll behavior is awful.
This is one, and as soon as I scroll on my work high powered Macbook and it's not smooth, I'm out.
> Sure, if you’re building a consumer product. Your HTTP client, cli utility helper, whatever library is not a consumer product. The people who will ever care about it just want to know what it does.
——
It sounds like the author doesn’t view themselves as a consumer in this relationship, that they are immune to marketing, and that what they are advocating for isn’t just another marketing tactic. I’m not sure if any of those are true.
My experience with areas that use functional names to describe things is that you end up in a sea of acronyms (the functional-based names are a mouthful!) and you end in an arguably worse situation (did you say ABDC or ADBC, those are two completely different things).
By far the worst aspect of the nerd ecosystem is the odd belief that pops up every so often that names should matter. In every ecosystem, there is usually some odd idea that it is only in their world that people abuse this.
Just skim through that list of things that are unexpectedly named after people. Sure, you can get upset about Shell's sort not having any relation to shells. Or Bloom's filter not having a phase where the data "blooms" into use. But you would have the same issue with French drains. Or how gaslighting has nothing to do with lighting things on fire using gas and the affect that will have.
Honestly, I think this would be a fun list to just keep going. Akin to the old Chuck Norris joke generators.
One area of the sciences does partly use names like this, and that is biology. Biologists do sometimes name a species after a famous person, as in the louse Strigiphilus garylarsoni:
https://en.wikipedia.org/wiki/Strigiphilus_garylarsoni
[1]: https://github.com/andrewrk/poop
Krazam has excellently parodied this unserious naming indulgence of programmers[1]. "See, Bingo knows everyone's name-O. So we get the user ID from there." Racoon, Wingman, EKS (Entropy Chaos Service), RGS, Barbie Doll, Ringo-2.
1. https://youtu.be/y8OnoxKotPQ?si=QkI-TPStI9I4RtAB&t=33
>Reserve the creative names for end-user products where branding matters. For infrastructure, tools, and libraries, choose clarity. Every time.
Ah yes the software I am giving away for free must go easy on the minds of the poor VCs and business drones who are extracting value from it.