> http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.
The "Zephyr" that I knew about was a notification system for workstation clusters on a LAN, written at the MIT Athena project. You'd announce something on it, and the info would spread through the network as if by a gentle breeze. See: https://en.wikipedia.org/wiki/Zephyr_(protocol)
I do recall there was an experimental study in the 1980s (Hartwell, Landauer, and Gigliotti iirc) showing that this naming stuff doesn't matter. This exact same debate was going on back then. The study refuted Don Norman's "The Truth about Unix" paper which claimed that Unix commands ("rm", "mv", etc.) were too hard to remember.
I agree with the sentiment, though the argument could be made better. It’s not really about good names being descriptive, nor about memorable mnemonics. It’s that modern naming styles tend to overload random English words for no good reason, but just to be cute (which I don’t consider a good reason) or to be evocative of something which it isn’t. One issue with that is that you might have very different connotations evoked by the word, that clashes with the software. And conversely, if you have to use the software regularly, it now encroaches into the semantic space of what you otherwise associate with the word. I’d like my software, and hence its name, to be its own thing, thank you very much.
That is one thing i like about the Julia package ecosystem. The general Registry (where package metadata is stored and where you go to register a new package), recommends using explicit names over short acronyms. For example, DifferentialEquations.jl is a package that does differential equations in julia (recognizable via the .jl suffix). What does Garlic.jl do? Exactly, garlic (the vegetable) modelling.
The author is vastly overestimating the general legibility and familiarity of things they happen to know well and are used to.
Boring names are also very generic, by definition, and thus often harder to remember. Especially when there are 10 other similar tools. Is it sql-validator, sql-schema-validator, schema-validate, db-validator, or god knows what else?
Edit: I am in favor of better “sub titles” / descriptive slugs / and so on. As well as names that are a hybrid of creative and descriptive. Sqlalchemy is a good example.
Why isn’t there a command line utility called “whatisthis” with a standard protocol that allows tools to give a brief description of what they are?
It could be extended to package managers as well. E.g “pip whatisthis foo_baz”.
Shit we should create this…
Why does nobody in SF say "I am going via the San Francisco-Oakland Bay Bridge", but shortens it to just the "Bay Bridge"? This is the reason some bridges get a nice name (like Golden Gate), and some are strictly utilitarian (like SF-Oakland Bay).
And I am sure there are other "Bay Bridges" in the world too.
I almost completely disagree with this post. The only thing I can consider that you should probably avoid embarrassing names.
A descriptive name is terrible if you're slightly off. Or if the library gets repurposed. Or if the project doesn't turn out how you expected but it's still helpful. With everything going on, a nonsense name forces people to learn about it instead of having them guess at it from a three word description that might be misleading.
The author probably never had a project where something got named the oscilloscope-controller but there's no oscilloscope in sight, but we used to have one and then we tweaked a few things and now it runs something else and but the name was everywhere.
And all of these are abstract concepts. Getting data from point A to point B. FIFO? It's an acronym. Pipe? Doesn't really suggest it can buffer data. Buffer? Queue? Both sound like they might slow down data. Precise technical names would be good, but then the chances the purpose changes goes up!
Past projects of mine.
'pedes
Glook
Fitznik
Plops
Gyralight
I wanted a new tower defence game: So I made one
Oh and https://lerc.itch.io/namesarehardpart5The examples given for real world things The Golden Gate Bridge and The Hoover Dam, are instances of things. Things that the class of which they belong is old enough that Dam and Bridge are not new words.
If you are making new things you need a new name. Software is inherently new because computers have been in wide use for only a few decades. Instances of software rarely even get names, just numbers, with project names or nicknames attached. I'd be willing to bet both The Golden Gate Bridge and the Hoover dam had project names or nicknames.
The author should read up on the https://en.wikipedia.org/wiki/Sonic_hedgehog_protein or maybe https://en.wikipedia.org/wiki/Boaty_McBoatface both of which are actually scientifically important things.
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.
I believe one of the things that prompted stallman to give that talk was the inclusion of the lsp client "eglot" in emacs. Eglot i think is short for emacs polyglot.
The most idiomatic name, lsp-mode, was taken by another package. Stallman wanted to find another name but no one seemed to care as much as he did. I think one name he suggested in its place at one point was "code-parse" or something like that.
We had this debate at my company and the end result was a ban on “random” service names.
So we ended up with “auth service” instead of something like “Galactus”. The problem of course is that “auth service” isn’t searchable in our monorepo and it was a nightmare to find or discuss any info or references to the service itself. Now imagine if docker was called “container manager”. Good luck googling that and disentangling it from all the search results.
The value of a name doesn’t come from it being self-explanatory but rather from it being a pseudo-unique identifier. The small cognitive tax of remembering it serves as a shared bookmark between people that you can refer to when discussing or speaking to others about it - whether we’re talking about docker, Linux, or another person.
This drives me crazy because I use dmenu to launch things, and every time I want to launch a subsonic client I'm like "blueberry? Wayshin... Weish... Fei... FEISHIN!"
Just call it "subsonicfeishin" or something at least!
"Chatgpt... Mc... CODEX!"
It's nuts.
How do conference-room names fare in this view? My current company names them after football teams or local landmarks. But I heard about someone who used to work somewhere that named theirs after WWII battles, which was awkward for the Japanese guy they interviewed in one of them.
are you guys naming your products?
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.
I agree, some names that come to mind are Celery and Windows. But there are always silly names. I like Plan 9, an OS named after an Ed Wood B movie. Its sibling, Inferno is full of puns and references to Dante Alighieri's Divine Comedy. Its corporate dullards who insist that neutral boring is appealing to most and I again agree but its not a hard rule for me.
Just name everything Phoenix.
(The joke here is: look up how many _major_ software projects have been named Phoenix at some point. It's a lot.)
There are many different tools that attempt to solve the same problem, with varying levels of competency.
They can't all use the same name. If you want to build a better alternative to an existing solution, you need to choose a different name, this leads to names being arbitrary.
The Sonic Hedgehog gene would like a word.
And forty years ago, I was using a tool called Brief, which was a product from UnderWare. I was also using a librarian named Marian.
Why does it have to be all or nothing? How about a clever name or two for marketing that stands out and doesn't get lost in a sentence "I'm not asking you to search, I'm asking you to use the search command" but not obnoxiously over done where everything is named after some Norse god or some other silliness.
I was just discussing this today funny enough. How long until someone goes for broke and just names their app "peepee poopoo"?
I am highly sympathetic to this sentiment, but I think it's hard to name things in software because a) it's easy for the obvious names to get overloaded and b) many of the things we are dealing with are basically abstract relationships with arbitrary properties.
Even for consumer products - I'd rather have Mozilla Mail and Microsoft Mail instead of Outlook and Thunderbird. But marketing must market, dammit.
<tangent>
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.
Love this:
> Name your library after what it does. Use compound terms. Embrace verbosity if necessary. http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.
As they say in physics: color and charm may change, but up and down are forever.
The two hardest things in software engineering: cache invalidation, naming things, and off-by-one errors.
I remember a trend of randomly dropping vowels started with flickr.
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'm happy to see this post, it's something that bugs me every time I have to learn a new tool with a name that's neither A. unique to the project AND B. doesn't describe the project.
For example Zola and Hugo, static site generators - great, unique words that has no other meaning to me but the generator. The only other Hugo I know is a character in Bob's Burgers. But choosing random dictionary words like Avocado or Spice or whatever makes it completely transparent against my existing knowledge and now I have the mental lookup issue the author describes.
The other day a HN user was commenting "NAT, aka IP masquerading... (proceeds to keep re-using the term)". IME no one in the industry says "IP masquerading" unless your entire org and vendors are on Linux. Just call it NAT, we know what you mean. This a Linuxism and should be avoided!
Let's hit up Britannica.com on the word:
> a party at which people wear masks and often costumes
> a way of appearing or behaving that is not true or real
> to pretend to be someone or something else
I guess? I guess we are "pretending to be the peer IP when actually we are the LAN IP". But to me it's just nonsense. It's capital T Translating one IP to another for the sake of routing, drop the weird social implications.
I like to mock the current meta as being coca cola driven.
First it was racehorses. Then it was prescription medications. Then software.
I hope this goes no further.
Is it just me or the website is completely unreadable? Black text on a dark-gray background
"...When you see “libsodium,” you must context-switch from problem-solving mode to detective mode: “What does this do? Let me check the README. Ah, it’s a crypto library... "
I would not mind the command names whose etymology was complex or inspired, if the README files would do a better job of giving context and function. Even though I have a wide set of wheelhouses in computer systems, I frequently encounter README files that still leaves me saying "Huh?". I shouldn't have to google three levels down before I get a clue.
The two hardest things to do in computer science is knowing when to invalidate cache and how to name things.
why is this stupid ai-generated text on hn?
Idk about open source tools, but internal corporate things have codenames for good reasons.
> Your HTTP client, cli utility helper, whatever library is not a consumer product.
I'm not sure how the author came to this conclusion.
At any rate, programmers aren't any worse about this than mathematicians. Just replace [fictional name] with some foreign word or philosophical term that's justified with the most insane mental gymnastics you've ever heard of. Given some historical native speaker of Latin, do you think they're going to know what a matrix is for? No, because the word means "uterus". There is no connection to "tabular shorthand of linear transformations."
I think it's clear the author is writing this to vent frustration, but I think they've misidentified the actual problem:
> http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.
My jaw hit the floor reading this. The idea there are people out there debugging codebases without knowing something as foundational as the dependencies is beyond absurd to me. That's insane and horrifying, overshadowing pretty much the entire blog post. Does anyone else live like this? How do you tolerate these conditions? Why would you tolerate these conditions?
Sometimes "branded" names are a good thing.
For example, naming some application modules strictly after what they do is super tedious, and uses words that are already reserved, therefore creating ambiguous nomenclature. Maybe I have various sort of permissions in my system but naming that particular permission system some greek god name creates a clear and shared meaning across the team (both business and technical), and mind you that that's what communication is all about - a shared meaning. Nothing else.
P.S. (I'm deliberately not going into discussion about bad things with that approach)
This reads like an extensive, and frankly exhausting, rationalisation of a personal preference. Personal preferences are fine, I have my own. But please stop thinking they apply universally.
Laravel works better than Rails-but-PHP. Ruby on Rails beats Opinionated-One-Person-Stack-Using-Ruby and I'm fine with the name Ruby as well.
I shall name my next product larmn in honour of OP.
>Every person who encounters your “fun” name pays a small tax. Across the industry, these taxes compound into significant waste
>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.
> We’re using Viper for configuration management, which feeds into Cobra for the CLI, and then Melody handles our WebSocket connections, Casbin manages permissions, all through Asynq for our job queue
Would it be better if it was this:
> We’re using ConfigurationManager for configuration management, which feeds into CLI for the CLI, and then WebSocketHandler handles our WebSocket connections, PermissionManager manages permissions, all through JobQueue for our job queue
I think the author makes the opposite point of intended)
> There are only two hard things in Computer Science: cache invalidation and naming things.
> -- Phil Karlton
- https://skeptics.stackexchange.com/questions/19836/has-phil-...
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.
Like GMail addresses, all the good names are taken.
I have developed a language for writing structured queries. Based on this article, I have decided to call it SQL.
The cognitive tax is a real problem. Using random cutesy names, there is no obvious behavior boundary. Does authentication go in the SnufBux module? Or the Farfrumstable service? Who knows? Without obvious language clues to handle a new concept, any new functionality will get strewn across these internal boundaries. And why not - they have zero semantic meaning anyway! Sloppy names encourage sloppy programming.