←back to thread

311 points todsacerdoti | 9 comments | | HN request time: 0.019s | source | bottom
Show context
pdpi ◴[] No.46239164[source]
GNU's version of Yacc is called Bison. Pine Is Not Elm (even though that was never an official acronym). UNIX was UNICS which was a pun on MULTICS. I couldn't for the life of me tell you what dd stands for. nano is a copy of pico which was the "PIne COmposer". Postfix is a completely opaque portmanteau of post (as in mail) and "bug fix". C++ is "C incremented", and C is the successor of B, which is the successor of BCPL.

Developers haven't "lost the plot", we never had it in the first place.

Inversely, Clang, LLDB, jq, fzf, loc are modern projects perfectly in line with the author's notion of a good name. "mise-en-place" is the perfect metaphor for what mise does.

replies(16): >>46239266 #>>46239267 #>>46239293 #>>46239675 #>>46239818 #>>46239903 #>>46240006 #>>46240043 #>>46240475 #>>46240516 #>>46240745 #>>46240858 #>>46240981 #>>46240986 #>>46242271 #>>46242669 #
1. HPsquared ◴[] No.46239818[source]
Naming is a big part of programming, you'd expect software to have good descriptive names.
replies(5): >>46239863 #>>46239907 #>>46240940 #>>46241522 #>>46242293 #
2. Supermancho ◴[] No.46239863[source]
How do you discriminate between 2 different things that ostensibly have similar features, but do it in different ways without getting very large names? What if you modify software or just part of it to make it something distinctively new, should it keep the name or add to it? What if I revert that non-trivial feature and add a different non-trivial one. Now what is it?

I would hope the author realizes the core counterpoint when re-reading "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" - because the real names, are the roles the tools play. The implementation name is incidental and amorphous, since you can make wild changes to software, rendering the name without much utility beyond a project label. Project labels are necessarily opaque, for the same good reasons software is. The ideals are more important than the details. They are a conflux of interests and plans, not a market label. If market labels were fixed to functionality, the world would be worse off for obvious reasons of practicality and marketability. Ironically, Stallman is completely comfortable with PostgreSQL which is semantic context adjacent, charitably. It describes a small element of the project (a synthetic SQL syntax), not the project itself.

3. mbesto ◴[] No.46239907[source]
"There are only two hard things in Computer Science: cache invalidation and naming things."
replies(2): >>46239928 #>>46239933 #
4. MrDarcy ◴[] No.46239928[source]
And off by one errors.
5. casper14 ◴[] No.46239933[source]
"And off by one errors"
6. selcuka ◴[] No.46240940[source]
> you'd expect software to have good descriptive names

Like Microsoft Word?

7. tempest_ ◴[] No.46241522[source]
eh, in 2025 SEO ( Whatever the jargon is for LLM) is as important or perhaps more important so that you can search and find documentation and issues etc
8. swiftcoder ◴[] No.46242293[source]
I think this runs into the intersection of the "code is art" and "code is a tool" crowds. I like to name my API methods with a little whimsy too...
replies(1): >>46242613 #
9. rahoulb ◴[] No.46242613[source]
I remember writing a function to convert a string from snake case to camel case and calling it `humpify`. And another that would take a string and locate the constant with that name called `constantinople`.

But then, this is ruby and it's known for its unusual naming. Plus both also had sensible/boring aliases and they were for internal use only.