Top
Best
New

Posted by todsacerdoti 3 days ago

Programmers and software developers lost the plot on naming their tools(larr.net)
418 points | 517 comments
pdpi 3 days ago|
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.

anyfoo 3 days ago||
> I couldn't for the life of me tell you what dd stands for.

Data(set) Definition. But that name does not make any sense whatsoever by itself in this context, neither for the tool (it hardly "defines" anything), nor for UNIX in general (there are no "datasets" in UNIX).

Instead, it's specifically a reference to the DD statement in the JCL, the job control language, of many of IBM's mainframe operating systems of yore (let's not get into the specifics of which ones, because that's a whole other can of complexity).

And even then the relation between the DD statement and the dd command in UNIX is rather tenuous. To simplify a lot, DD in JCL does something akin to "opening a file", or rather "describing to the system a file that will later be opened". The UNIX tool dd, on the other hand, was designed to be useful for exchanging files/datasets with mainframes. Of course, that's not at all what it is used for today, and possibly that was true even back then.

This also explains dd's weird syntax, which consists of specifying "key=value" or "key=flag1,flag2,..." parameters. That is entirely alien to UNIX, but is how the DD and other JCL (again, of the right kind) statements work.

isoprophlex 2 days ago|||
I just remember it as "Da Disk", early 2000's nu metal lyrics-style, because it does mad things to da disk, yo.
marcosdumay 2 days ago|||
I guess the most relevant backcronym expansion is still "Disk Destroyer"
f33d5173 2 days ago||||
I had remembered it was "convert and copy", but cc was already taken by the c compiler so they shifted it down a letter. That might have been apocryphal.
classified 2 days ago||
Same here. But I also seem to remember claims that this isn't true…
f1shy 2 days ago||
I had it learned as "data duplicator" or something like that... seems also bogus.
necovek 2 days ago||||
Having come from the DOS world (or it could have been Norton utilities), I always thought it was more like DiskDupe (duplicate disks).

Funny how we never confirm our hypothesis that "checks out".

anyfoo 2 days ago||
"disk dump" is another common (but wrong) guess.
softskunk 2 days ago|||
I always read it as “[disk|data] destroyer”, because that’s what it’ll do if you’re not careful.
jaredhallen 2 days ago||
You know, this is true. And I've read any number of "you should never use dd, use this instead" articles over the years. But man, do I love me some dd.
georgefrowny 2 days ago||
dd is the software equivalent of removing the riving knife from a table saw.

Then again, I get very paranoid when I write software that has to delete arbitrary files recursively. One bad string gets in there and it's a very bad day.

Kevin-Xi 2 days ago|||
One explanation that left a deep impression on me is[1]:

  it stands for 'Copy and Convert' and was renamed to `dd` only because `cc` was reserved for the C compiler!
[1]: https://unix.stackexchange.com/a/6835/192313
usefulcat 2 days ago||
Reminds me of IBM => HAL, just the other direction
bmacho 2 days ago||
APL -> BQN where the author remembered the alphabet wrong : https://chat.stackexchange.com/transcript/message/54753804#5...
linhns 2 days ago||||
I thought it was dirty deeds.
vrighter 2 days ago||||
i always think of it as Data Destroyer
richardc323 2 days ago||||
Ha, for the last 30 years I have been convinced it was Disk Direct.
Y_Y 2 days ago|||
I feel obliged to point out that C++ is C postincremented, that is to say it has the same value as C, but after you read it C gets incremented. The metaphor is flawless.
pdpi 2 days ago||
By the same token, the sharp sign in C♯ is two plusses put together, and represents going a (half) step above C. Also, a minor second is one of the most dissonant intervals in western music, which is also a brilliant metaphor for how well C♯ meshes with C.
necovek 2 days ago|||
Even GNU is a recursive acronym, Emacs a convoluted one... What's Perl, Python, Java... all about? Remember how JavaScript was named? Don't mention Go (go-lang) or Pascal... Git, Mercurial, CVS anyone?

I believe this makes much ado about nothing.

johnnyanmac 2 days ago|||
Pascal is probably the most sensible name, as far as traditional naming schemes go. Names after Blaise Pascal, mathematician and one of the two inventors of the mechanical calculator. Pretty fair association and tribute.

Git as a name is our daily reminder that pre-mainstream programmers were rebellious against the mainstream (to put it as generously as I could) before corporate interests took over. but i encourwge you to look up that story yourself.

disgruntledphd2 2 days ago||
>Git

The stupid content tracker.

Still one of my favourite names.

delaminator 2 days ago||||
The 2000s Plan9 community asserts "Gnu is Not Useful" as the correct expansion.
necovek 2 days ago||
It would be funny if I did not run GNU/Linux as a daily driver since 1998: Plan9 did look interesting too, and compared to GNU/Hurd, it was certainly in a better shape.

(Even Solaris, *BSDs already started including GNU tools, compilers...)

xxs 2 days ago||||
Java is easy - named after the coffee beans of the coffee they used to drink...

CVS (noticed already mentioned by a sibling comment) is just an abbreviation.

Python - well Monty Python

eloisant 2 days ago|||
Java was originally called Oak but its creator because he could see an oak from his office, but marketing people at Sun thought Java would be more catchy. Yes it's named after coffee beans, but it has no relation whatsoever to the language or the way it was created, it's just a marketing name.
xp84 2 days ago|||
I can totally see how that was an obvious decision in the 90s, the coffee shop craze was just taking hold in America, and it was such an exciting and fashionable thing to do to sip espressos and lattes.
yard2010 2 days ago|||
Imagine a parallel world in which Java is called Oak and it's actually nice from inception, not just like nice after decades.
xxs 2 days ago||
compared to C, java was quite nice
necovek 2 days ago|||
Yes, I am simply highlighting that programmers have not used descriptive names consistently... well, ever (reinforcing the point the GP made).

The entire premise of the OP is simply wrong.

pdpi 2 days ago||||
"Concurrent Versions/Versioning System" is a pretty reasonable one, though.
necovek 2 days ago||
Then Gimp is also a great name, right? GNU-is-not-Unix Image Manipulation Program: immediatelly obvious what it does as soon as you learn what the acronym stands for.

Or Gtk even: Gnu-is-not-Unix Image Manipulation Program ToolKit (later changed to refer to Gnome instead of Gimp I believe).

zem 2 days ago||
and gdk was, delightfully enough, the gnu's not unix image manipulation program toolkit drawing kit
usefulcat 2 days ago|||
Perl stands for “practical extraction and report language”
nineteen999 2 days ago||
Also "pathlogically eclectic rubbish lister".
bruce511 2 days ago|||
The article even refers to AWK as being the initials of the authors. And posits this as "reasonable"?

Naming is hard, not least because "a million" new projects are spawned every day. And if you're going down a path of "rule the world" (even in a niche like infrastructure) you start by getting a .com domain, so choices are limited.

Plus the name has to be unique enough to Google.

ekidd 3 days ago|||
> I couldn't for the life of me tell you what dd stands for.

Traditionally, according to folklore? "Delete disk" or "destroy data". (Because it was commonly used to write raw disk blocks.)

sweetjuly 2 days ago|||
I always assumed part of the "data destroyer" folklore was from people flipping if/of by accident and destroying their data :)
opan 2 days ago|||
I thought the more common mistake with dd was picking the wrong disk to write to (especially when using /dev/sdc type naming instead of /dev/disk/by-id/whatever naming). Flipping source/dest and overwriting data is a problem I associate with the tar command.
QuantumNomad_ 2 days ago||||
Another, similar name it is sometimes jokingly referred to under is “destroyer of disks”.

https://web.archive.org/web/20081206105906/http://www.noah.o...

hoherd 2 days ago|||
I always thought it was "disk dump"
rikthevik 2 days ago|||
https://en.wikipedia.org/wiki/Back_Orifice_2000 was pretty clear about what it did.

https://en.wikipedia.org/wiki/BitchX less so.

saghm 2 days ago|||
In the same vein, my recollection is reading that the X windowing system is called X because it's the letter after "W", which was the original choice (because it's what the word "window" starts with), but it was already taken, so they went with X.
anyfoo 2 days ago||
It looks like X was deliberately chosen to denote succession of W, not clashing with it:

    "The name X derives from the lineage of the system. At Stanford University, Paul Asente and Brian Reid had begun work on the W window system [3] as an alternative to VGTS [13, 221 for the V system [5]. [...] We acquired a UNIX-based version of W for the VSlOO (with synchronous communication over TCP[24] produced by Asente and Chris Kent at Digital’s Western Research Laboratory. [...] It was also clear that, although synchronous communication was perhaps acceptable in the V system (owing to very fast networking primitives), it was completely inadequate in most other operating environments. X is our “reaction” to W."
-- https://dl.acm.org/doi/pdf/10.1145/22949.24053
xp84 2 days ago||
Wow. Wayland really should have considered “Y” apparently!
layer8 2 days ago|||
> what dd stands for

https://groups.google.com/d/msg/alt.folklore.computers/HAWoZ...

dspillett 2 days ago|||
> UNIX was UNICS which was a pun on MULTICS.

I doubt it is official, but I was told the name Unix was picked as it was "Multics with bits taken off".

> I couldn't for the life of me tell you what dd stands for.

I always assumed “data dump” or something like.

kazinator 2 days ago|||
The only thing that's different between the era when Bison as named and now is the proliferation. There is vastly more shit in open source with the cute names. Back then, one person could keep all the cute names for everything related to C and Unix in their head.
Suppafly 2 days ago||
>The only thing that's different between the era when Bison as named and now is the proliferation. There is vastly more shit in open source with the cute names.

I personally think that's a pretty good idea for coming up with better names instead of cute names now.

port11 2 days ago|||
I agree we never had it in the first place, and that it ultimately doesn't add up to much. It seems like just a familiarity problem.

If I'm diagnosing something at 2AM, I don't care whether my database queries were written with Zapatos or PG-ORM, even if the latter is clearer. As long as you use the tools, you know what they do.

HPsquared 2 days ago|||
Naming is a big part of programming, you'd expect software to have good descriptive names.
Supermancho 2 days ago|||
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.

swiftcoder 2 days ago||||
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...
rahoulb 2 days ago||
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.

selcuka 2 days ago||||
> you'd expect software to have good descriptive names

Like Microsoft Word?

mbesto 2 days ago||||
"There are only two hard things in Computer Science: cache invalidation and naming things."
MrDarcy 2 days ago|||
And off by one errors.
casper14 2 days ago|||
"And off by one errors"
tempest_ 2 days ago|||
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
KurSix 2 days ago|||
So maybe the takeaway isn't "we lost the plot" vs "we never had it," but that there's always been a tension
Groxx 2 days ago|||
This, plus it's less obtuse than drug naming, and about on par with any other random product on the market.

Which is not to claim the general market is full of good names - clearly it is not. But I don't think it's below par at any point in its existence.

abetusk 2 days ago|||
GNU stands for "GNU's Not Unix".

Yacc stands for "Yet Another C Compiler".

Nano was originally TIP which stood for "TIP Isn't Pico" but was later changed to Nano so as not to conflict with another Unix utility called tip [0]. Presumably nano was chosen as the metric prefix next larger than pico.

Personally, I'd prefer choosing a random string of 3-8 letters for command line tools. At least that would be better than naming programs using generic names (Keep, Bamboo, Chef, Salt) which leads to all sorts of name collisions.

From the article:

> This would be career suicide in virtually any other technical field.

The mascot for an $8.8T dollar (supply side) software industry, larger than Google, Microsoft and Apple combined, is a cartoon penguin [1].

"never had it in the first place" is absolutely correct.

[0] https://en.wikipedia.org/wiki/GNU_nano

[1] https://www.hbs.edu/ris/Publication%20Files/24-038_51f8444f-...

Sniffnoy 2 days ago|||
Yacc is Yet Another Compiler Compiler, not Yet Another C Compiler. It's useful for writing compilers, not for compiling C.
spauldo 2 days ago|||
Especially since, IIRC, it actually predates C.
abetusk 2 days ago|||
Yep, my mistake! And it makes a lot more sense.
pdpi 2 days ago|||
> "never had it in the first place" is absolutely correct.

To be clear: I didn't mean to imply this is a bad thing.

GNU's Not Unix, Pine Is Not Elm, TIP Isn't Pico all share one important characteristic — their audience is expected to know what Unix, Elm, Pico are, and saying "X is not Y" implies "X is specifically, deliberately an alternative to Y, in the same style as Y".

If you know what GNU and YACC are, you probably don't need to be told twice that "Bison" is GNU's YACC implementation — the pun makes it instantly memorable.

One of my personal favourites is Ubuntu's version naming scheme. The "alliterative animal" form is highly memorable, and gives you two different words to latch on to, either of which is enough to uniquely identify a version. The fact they're alphabetical also makes it easy to check which version is newer (Letter collisions happen on a 13-year cycle, which makes it highly unlikely to be a source of confusion).

swiftcoder 2 days ago||
> their audience is expected to know what Unix, Elm, Pico are

Of course, the context for these references are all kind of anchored in the 90s. Someone first discovering Bison in the year of our lord 2025 is unlikely to have the foggiest clue what YACC was...

PenguinCoder 2 days ago|||
Pretty sure dd is disk destroyer
bsder 2 days ago|||
There are two hard problems in computer science: caching things, naming things and off-by-one errors.
jaredhallen 2 days ago||
dd = (D)oes what it says it (D)oes
plorkyeran 3 days ago||
> grep (global regular expression print), awk (Aho, Weinberger, Kernighan; the creators’ initials), sed (stream editor), cat (concatenate), diff (difference). Even when abbreviated, these names were either functional descriptions or systematic derivations.

If you asked someone unfamiliar with unix tools what they thought each of these commands did, diff is the only one which they would have even the slightest chance of guessing. It's ridiculous to complain about "libsodium" and then hold up "awk" as a good name.

DSMan195276 3 days ago||
Yeah this definitely falls into the category of "I use them so they feel natural", there's nothing amazing about those names.

The underlying problem is that you now run into so many named things (utilities, libraries, programs, etc.) in a day and they all have to differentiate themselves somehow. You can't name every crypto library `libcrypto` for obvious reasons.

groos 3 days ago|||
Fine. Name it sodium-crypto.a or sodium.crypto.a or whatever. The author's complaint does hold water.
DSMan195276 2 days ago|||
You can, but then the names get needlessly long and one of the things we generally like (especially for command-line programs) is names that are short and easy to type. If we're going to make this argument then why not call the unix tools `concatenate`, `difference`, `stream-editor`, etc. Those are way better names in terms of telling you what they do, but from a usability standpoint they stink to type out.

Libraries and programs also have a habit of gradually changing what exactly they're about and used for. Changing their name at that point doesn't usually make sense, so you'll still end up with long names that don't actually match exactly what it does. Imagine if we were typing out `tape-archive` to make tarballs, it's a historically accurate name but gives you no hint about how people actually use it today. The name remains only because `tar` is pretty generic and there's too much inertia to change it. Honestly I'd say `cat` is the same, It's pretty rare that I see someone actually use it to concatenate multiple files rather than dump a single file to stdout.

The author is missing the fact that stuff like `libsodium` is no differently named from all the other stuff he mentioned. If he used libsodium often then he may just as well have mentioned it as well-named due to it's relation to salt and would instead be complaining about some other library name that he doesn't know much about or doesn't use often. I _understand_ why he's annoyed, but my point is that it's simply nothing new and he's just noticing it now.

lanstin 2 days ago||
libeay
DSMan195276 2 days ago||
`eay` is just the initials of the original author, so basically the same thing as `awk`.
kibwen 2 days ago||||
> The author's complaint does hold water.

Ironically, much like sodium itself, a substance of which the author seemingly possesses too much of.

wrsh07 2 days ago|||
Without looking it up, is it sodium for "salt"? That's about as tethered to the actual use (salt + hash being a common crypto thing) as any of the names in the root comment
QuercusMax 3 days ago|||
https://en.wikipedia.org/wiki/Libiberty was always my favorite ridiculous name. It was named so you can link it with -liberty.
lmm 2 days ago|||
A friend created a library called library which was kind of a converse to that (you had to link it with -lrary). It was funny for 30 seconds and then just annoying.
MarsIronPI 2 days ago||||
Used to be that Ruby's "rubygems" library had an alias "ubygems" so that when invoking ruby with the -r option (to require a library) you could say "ruby -rubygems". Sadly, they seem to have removed this alias library sometime around Ruby 2.4.
byroot 2 days ago||
It was removed because rubygems was made to be required by default so it was now useless.

The stdlib still contains `un.rb` though: https://github.com/ruby/ruby/blob/d428d086c23219090d68eb2d02...

mr_mitm 2 days ago|||
There is also https://github.com/gebi/libowfat
kazinator 2 days ago|||
cat is arguably from catenate, which is the smarter, shorter version of concatenate. By default, unadorned catenation is a joining (literally "making into a chain"), which is always together/with, so the con prefix is redundant. If you ever need a derivative of catenate that means splitting apart, you can coin discatenate, where the dis then plays an essential role.

Also, why is it that people are gregarious when they congregate, and not congregarious? Or why didn't they just gregate? There was such a Latin cognate verb without the con attached.

Joker_vD 2 days ago||
> Or why didn't they just gregate?

Because that's not how the prepositions worked in Latin. E.g. "Marcus ex casa exit" ("Marcus went out of the house") requires both the "ex" preposition and the "ex-" prefix in the verb. Heck, even today similar things can happen in English: "they gathered together", that sentence has two instances of "gather" in it.

bee_rider 3 days ago|||
I’m not sure I like awk, sed, or cat, I think these are just names we’re used to, not good really. diff seems ok.

grep almost has an onomatopoeic nature to it… like, it sounds like you are grabbing or ripping the patterns out of the file, right?

fsckboy 2 days ago|||
>I’m not sure I like awk, sed, or cat

sed is not "stream editor" as it says above, it's "stream ed", where ed was another prexisting program which was essential and everybody knew it. its name was from "editor" shortened.

the sed commands are the ed commands. so, it's almost not possible to say "i don't like the name", it rests on a rich tradition, it's the stream version of ed. (ed commands are very similar to vi commands at heart.) it's sad the unix crowd never grokked teco because teco was already a programmable stream editor from a tradition that was not particulary streamy. it predated ed by a decade and would have fit the unix world perfectly. maybe it was already too big? I'm sure they would have known about it. Emacs does come from the teco tradition.

grep got its name from what the "grep" command would look like typed within the ed editor.

awk should not be thought of as a tool, it's a programming language, and has every right to the name as ada or pascal or haskell does.

back in those days, filenames had to be short, long names were not allowed, no space, and also, people liked typing short commands. concatenate shortened is... well, cat is as good a name as any. back then the word console was popular for the name of the terminal connected directly to the computer (frequently already logged in), perhaps con was already in use then, it definitely had a meaning already on DEC operating system machines as inherited on Microsoft machines, CON: is still console, and Bell Labs was using DEC machines.

btw at some sites there is a "dog" command. it's like the "cat" command, but it starts at the end of the file and then shows any additions. so, if you want to see if anything is being added to a logfile, you can "dog" the file (which is completely broken when VMS Windows dorks show up and decide to make everything binary) now the verb "to dog" in English means "to follow closely", so it's a cute wordplay on cat and means what it does, similar to "less is more". in less, you can accomplish something like "dog" (dog with more context) with the "F" command. these individual pieces of wordplay don't form a coherent network in the end, but as new things are invented over time they are fun and help you remember new commands till you get used to them.

nocman 2 days ago|||
> sed is not "stream editor" as it says above, it's "stream ed"

Well, according to the man page, it is indeed "stream editor":

https://man.cat-v.org/unix_8th/1/sed

I was already aware of its relation to 'ed' (having had to actually use 'ed' in ancient times). However that doesn't change the fact that it does stand for "stream editor".

After reading your post, I thought "That doesn't seem right, I remember it specifically being referred to as 'stream editor'", so I went looking.

rswail 2 days ago|||
> ed commands are very similar to vi commands at heart

vi was build on top of ed.

Ed was the Unix line editor, which is why all the commands after a colon have the form of "start,endcommand", eg "1,$p" would list all the lines of a file on your tty/decwriter.

1,$s/findexp/replace/g would s ubstitute all examples ("g") of findexp on the lines 1 through EOF

a96 2 days ago||
And these all pretty much came from an era before glass display were (affordable) in computers. A terminal was roughly a keyboard and a printer attached together, or a typewriter cut in half. Paper. No cursors. No arrow keys. Mostly after punched cards and mostly before transistors. And that was only a few decades ago, there's people still alive that have used these machines.

Funny that they are still some of the most efficient and powerful interfaces.

squigz 2 days ago|||
They're good names because they're short and easily recognizable
lmm 2 days ago||
There are only so many short names to go around.
johnnyanmac 2 days ago||
Well yea. These guys got dibs some 35f years ago or so. Maybe more. First come first served.
mojuba 3 days ago|||
However once you learn that sed means stream editor, you won't ever forget it. libsodium is forgettable.
pavel_lishin 3 days ago|||
> However once you learn that sed means stream editor, you won't ever forget it.

I feel like this is approximately the third time I'm learning this.

embedding-shape 3 days ago||
I've been using Linux for almost 20 years, including sed a lot of that time, I'm sure I've heard it before, I must have, but when parent wrote it I was like "aah, that makes sense".
a96 2 days ago||
Thirty years for me and several more since I learned what sed does and what it's called and never forgot.
embedding-shape 2 days ago||
I never forget what it does obviously, I use it at least weekly and most of the time daily. But if you asked me what "sed" stand for I'd probably not recall. I might have attempted to work in "extended" somewhere in a guess, because of ex the editor, but besides that :/
homebrewer 3 days ago||||
Don't forget that you need to know English for that to work. I'm pretty sure most Unix users don't speak English (most computer users definitely don't). I interact with people who know few words besides "hello" and "goodbye", and for them "sed" is a nonsense term, just a set of letters randomly thrown together. Same as e.g. Excel, a random token that means nothing.

sed is just an example, of course, the author's point doesn't hold much weight for many (most?) users globally.

Gigachad 2 days ago||||
Libsodium isn’t a tool or program the average user casually uses. Anyone who actually has to use it in their project even once will remember it.

How often do you forget what Firefox or Gnome are?

jolmg 3 days ago||||
That's part of the point, I believe. It's not about being always able to guess the function from first sight. It's also about the function and name serving as mnemonic to each other once you understand how it got named.
bigiain 3 days ago|||
I think perhaps the articles argument gets less strong then?

It's claimed grep is "well named" because even though it's not obvious when you first read it, that it being a contraction for "global reg ex print" and hence memorable. I'm not sure the same argument can't be made for libsodium which assuming the reader is familiar with NaCl (the same as the assumption that the previous reader is familiar with regex) then it's an equally memorable name for your crypto library.

There's always a consideration about the context the name is intended and likely to be used in. The article mentions engineering naming and "ibeam", but engineering has it's own technical names an jargon as well. Most people wont know what "4130 tube" means, but people who build bicycle frames or roll cages will - and they're likely to use the less specific term "chromoly" if the don't need to distinguish between 4130 and 4145.

In my head "libsodium" is similar - if you don't know what it (and NaCl) mean, you 100% should keep out of that part of the codebase.

jolmg 3 days ago|||
Names fall on a spectrum on this argument. Sodium is not really random because of the use of "salt" on crypto. It's like saying that libsodium is part of your crypto. awk is more random.

The argument goes stronger with projects where the creator seemed to just roll the dice with the name.

a96 2 days ago||
Well, "Aho, Weinberger, Kernighan" is not random but entirely unrelated to it's use.

https://en.wikipedia.org/wiki/AWK

foobarian 3 days ago|||
One additional complication with grep (and other CLI tools) is that the name itself is part of the day to day UX. It needs to be short, easy to say, and easy to type. With a library the API that is contained within serves the analogous role.
pavel_lishin 3 days ago|||
"libsodium" -> "salt" -> "salting is something tangentially related to cryptography" is significantly better as a mnemonic than "awk stands for the author's initials".
bigiain 3 days ago||||
Same for grep - with, I guess, the proviso/assumption that you know what regular expression means, which might have been a fair assumption for the sort of people who had command line access to Unix systems in the 70s/80s, but may no longer be valid for developers under 30 who grew up with Windows and were perhaps trained in 6 or 26 week "bootcamps" that didn't have time to cover historical basics like that?
necovek 2 days ago||
Regular expressions are more of a CS topic (regular languages), though common abbrevs of "re" and "regex" I've only seen in the wild pre and post my formal education in CS.
bigiain 2 days ago||
Yeah, I'd totally expect CS grads, old school Unix sysadmins, and Perl hackers to be fully familiar with Regex. Not so sure I'd expect that from bootcamp front end webdev "grads", self touch game devs, or maybe (I'm not sure?) engineers who have spent their careers in Microsoft dev environments.
forrestthewoods 3 days ago||||
lol no. There are literally a hundred plus Unix tools and commands. I couldn’t tell you what 90% of them mean. I sure as hell couldn’t have told you what sed stood for. And if you asked me tomorrow I also wouldn’t be able to tell you.

C programmers are great. I love C. I wish everything had a beautiful pure C API. But C programmers are strictly banned from naming things. Their naming privileges have been revoked, permanently.

lanstin 2 days ago||||
creat(...)
wombatpm 3 days ago|||
Relevant XKCD

Https://xkcd.com/1168/

orthoxerox 2 days ago|||
To quote bash.org (or qdb.us?), you have to talk to tar with a German accent:

    tar xzf file.tgz
where xzf stands for "extrakt ze feil"
marcosdumay 2 days ago||
It's `xaf`, because the modern world is way too complex for simple Germanic rules to solve it.

But GNU tar was never the issue. It's almost completely straight forward, the only problem it has is people confusing the tar file with the target directory. If you use some UNIX tar, you will understand why everybody hates it.

WJW 3 days ago|||
Someone once tried this on me during Friday drinks and I successfully conquered the challenge with "tar --help". The challenger tried in vain to claim that this was not valid, but everyone present agreed that an exit code of zero meant that it was a valid solution.
tolciho 2 days ago|||

  $ tar --help
  tar: unknown option -- -
  usage: tar {crtux}[014578beFfHhjLmNOoPpqsvwXZz]
             [blocking-factor | format | archive | replstr]
             [-C directory] [-I file] [file ...]
         tar {-crtux} [-014578eHhjLmNOoPpqvwXZz] [-b blocking-factor]
             [-C directory] [-F format] [-f archive] [-I file]
             [-s replstr] [file ...]
  $ echo $?
  1
pharrington 2 days ago||
That is not GNU tar's output. You might wanna make sure your installation is ok.

edit: maybe i missed the joke?

tolciho 2 days ago|||
Some drunks in a gnu-shaped echo chamber concluded that the world is gnu-shaped. That's not much a joke, if there is one here. Such presently popular axioms as "unix means linux" or "the userland must be gnu" or "bash is installed" can be shown as poor foundations to reason from by using a unix system that violates all those assumptions. That the XCDD comic did not define what a unix system is is another concern; there are various definitions, some of which would exclude both linux and OpenBSD.
lloeki 2 days ago|||
> maybe i missed the joke?

the bomb specifies only "unix" so you can't assume GNU (which, aha, is Not Unix)

necovek 2 days ago||||
This works with GNU tar, but likely not with tar on other Unix systems.

"tar cf /tmp/a.tar $HOME" would, I guess, work on all POSIX systems.

chihuahua 2 days ago|||
I seem to remember "tar xvf filename.tar" from the 1990s, I'll try that out. If I'm wrong, I'll be dead before I even notice anything. That's better than dying of cancer or Alzheimer's.
anyfoo 2 days ago|||
I still do that at least once a week. Along with "tar xzpvf" or more complex invocations like:

    tar cvf - -C /foo/bar baz | zstd > foo.tar.zstd
tharkun__ 2 days ago|||

    tar zxvf
Is burnt into my brain. One of my earliest Linux command line experience required untaring zipped tars.

So yeah that xkcd is "not funny" to me in that sense. Of course I couldn't tell you pretty much any other use without a man page.

necovek 2 days ago||
z requires it's compressed with gzip and is likely a GNU extension too (it was j for bzip2 iirc). It's also important to keep f the last because it is parametrized and a filename should follow.

So I'd always go with c (create) instead of x (extract), as the latter assumes an existing tar file (zx or xz even a gzipped tar file too; not sure if it's smart enough to autodetect compress-ed .Z files vs .gz either): with create, higher chances of survival in that xkcd.

thaumasiotes 2 days ago||

    tar xvzf file.name
is always a valid command, whether file.name exists or not. When the file doesn't exist, tar will exit with status '2', apparently, but that has no bearing on the validity of the command.

Compare these two logs:

    $ tar xvzf read.me
    tar (child): read.me: Cannot open: No such file or directory
    tar (child): Error is not recoverable: exiting now
    tar: Child returned status 2
    tar: Error is not recoverable: exiting now

    $ tar extract read.me
    tar: invalid option -- 'e'
    Try 'tar --help' or 'tar --usage' for more information.
Do you really not understand the difference between "you told me to do something, but I can't" and "you just spouted some meaningless gibberish"?
necovek 2 days ago||
The GGP set the benchmark at "returns exit code 0" (for "--help"), and even with XKCD, the term in use is "valid command" which can be interpreted either way.

The rest of your slight is unneccessary, but that's your choice to be nasty.

justindotdev 2 days ago|||
i think you are misunderstanding the point. with awk, sed, grep they actually hold relevance to the tools whereas a file browser named "zephrus" holds no connection to the actual file browser.
KurSix 2 days ago|||
It's more that they weren't random. There was a convention, a lineage, or a rule behind them. Modern projects often skip that step entirely and jump straight to branding, even when the thing is just plumbing
i_am_proteus 3 days ago|||
So few of us use physical tapes these days, but the "tape archive" (tar) remains ubiquitous.

Not entirely unserious: "awk" is a good name because it is three characters to type "rg" is better than "grep" because it is two fewer characters type

rswail 2 days ago|||
There's a reason why the basic Unix file commands are ls, cp, mv, rm.

They're easy to type on a TTY.

grep is from the ed command "g/re/p" which is g (all lines, short for "1,$") /re/ regular expression to search for, "p" to print the lines.

It still works in vi.

necovek 2 days ago|||
I would if they weren't so outrageously expensive (tapes and tape drives ;))
apetrovic 2 days ago|||
You don't need to go that deep into the article. Just - emacs. Of course I know what it is, I had to google the name to find it's EditorMACroS
deathanatos 2 days ago||
Pretty sure it stands for Eight Megabytes And Constantly Swapping, a literal description of its function. /s

http://www.catb.org/jargon/html/E/EMACS.html (which also pretty much has your definition, though it calls it "Editing MACroS".)

johnnyanmac 2 days ago|||
Well that's jargon in any industry. It makes no sense, you take a minute to learn it, and now it's part of your vocabulary.

At least these kinds of acronyms had utility once upon a time, when typing real estate was valuable and you input commands by hand for hours a day. Typing cat vs concat is hours of productivity save.

nonameiguess 3 days ago|||
It also seems wrong? libsodium explains the logic in its name right on its about page. It's a fork of NaCL (the chemical formula for sodium salt), which itself is a plain acronym for "networking and cryptography library." Google doesn't seem like a good example, either. Wasn't that meant to be an allusion to the very large number googolplex, as in Google exists to tame the unfathomably large amount of information on the web? The author may or may not like those names, but they have a logic just like grep and awk do.
quesera 2 days ago|||
Even more directly, in fact.

"Google" is from "Googol", the latter being 10^100. Apparently, "Google" the corporate name is an accidental misspelling of the number.

The number (googol) has no mathematical special properties and the name was invented by a 9-year old in the 1920s.

Googolplex is 10 to the googolth power, so 10^(10^100).

And Googleplex is the MV campus of Google.

j16sdiz 2 days ago|||
it should have been called chlorine for "Cl" is the cryptography library in "NaCL"
1vuio0pswjnm7 2 days ago|||
Nitpick: Correct me if wrong but I think cat is catenate not concatenate

IMHO, the best names are the ones that are easiest to type. I have read several accounts of authors choosing names for this reason

I sometimes rename other peoples' executables (cf. libraries), not the ones in the traditional UNIX userland, but the ones with goofy names.^1 I will rename them to something I find easier to type and less annoying. I create symbolic links with the original names if I think they will be required^2

With own software, I give every program a number, the source file is named according to the number and the executable name is a short prefix followed by the number. All names are the same length. I have a text file that lists what each program does if I forget

I put a description in a comment at the top of each source file as a sort of header. Then I can do something like

   head src/???.l  
for a list of descriptions

1. Needless to say, Arthur Whitney's software does not get renamed. No need, he gets it

2. I will also rewrite the argument parsing and "usage:" output if it annoys me

The best way to determine what a program does is to read the source. This is one reason I prefer to compile programs from source instead of using "binary packages"

I also think the names that are chosen for so-called "tech" companies are routinely quite silly, but that's another discussion

fuzzfactor 2 days ago|||
>developers lost the plot on naming their tools

As a complete outsider it always seemed like the plot had never yet been found to begin with . . .

thaumasiotes 2 days ago|||
> It's ridiculous to complain about "libsodium" and then hold up "awk" as a good name.

Awk is short, easy to pronounce, and difficult to confuse with anything else. It's nearly as perfect as a name can be.

> If you asked someone unfamiliar with unix tools what they thought each of these commands did, diff is the only one which they would have even the slightest chance of guessing.

You seem to have confused the concept of a "name" with that of a "description". The whole point of names is that they aren't descriptive.

https://en.wikipedia.org/wiki/Arbitrariness#Linguistics

jcparkyn 2 days ago||
> The whole point of names is that they aren't descriptive

I actually agree with this, but that's exactly the opposite of what TFA is arguing.

ezconnect 2 days ago|||
The problem with current naming is it now using common names like coffee and it's hard to search for them or relate to them. At least the old Unix naming are kinda unique and sometimes means something. Unlike today.
ozyschmozy 2 days ago||
Yep. Cat, find, git, date, gimp, gnu. All very distinctive, easy to search for
gowld 3 days ago|||
awk is short for awkward, like awkword, for awkwardly manipulating words (text).
KingLancelot 3 days ago||
[dead]
munificent 3 days ago||
> This would be career suicide in virtually any other technical field.

This article would certainly disagree with you:

https://en.wikipedia.org/wiki/List_of_U.S._Department_of_Def...

> the Golden Gate Bridge tells you it spans the Golden Gate strait.

Is that even a meaningful distinction? Does anyone think, "Gee, I'd really like to cross the Golden Gate strait?" or do they think "I want to get to Napa?".

> The Hoover Dam is a dam, named after the president who commissioned it, not “Project Thunderfall” or “AquaHold.”

It was actually called the "Boulder Canyon Project" while being built, referred to as "Hoover Dam" even though finished during the Roosevelt administration, officially called "Boulder Dam", and only later officially renamed to "Hoover Dam".

The fact that Herbert Hoover initiated the project tells you nothing meaningful about it. Would "Reitzlib" be a better name than "Requests"?

> If you wrote 100 CLIs, you will never counter with a cobra.

But out in the real world, you could encounter a Shelby Cobra sports car, Bell AH-1 Cobra chopper, USS Cobra (SP-626) patrol boat, Colt Cobra handgun, etc.

> No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

When you open your medicine cabinet, do you look for a jar labeled "acetylsalicylic acid", "2-propylvaleric acid", or "N-acetyl-para-aminophenol"? Probably not.

It's a bad sign when all of the examples in an article don't even agree with the author's point.

moregrist 3 days ago||
> > No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

The author is just wrong. Chemistry is fairly jam-packed with various cutesy names either to amuse the authors or because they’re attempting to make an algorithm memorable to the field.

Off the top of my head:

- SHAKE and RATTLE: Bond constraint algorithms.

- CHARMm: An MD package but you’d never guess it from the name

- Amber: Another MD package that you’d never guess from the name.

- So so many acronyms from NMR: COSY, TOCSY, NOESY

The list goes on and on and permeates most of the subfields in one form or another.

If you want really cutesy names, though, look in molecular biology.

kergonath 2 days ago|||
> - So so many acronyms from NMR: COSY, TOCSY, NOESY

My favourite: MAS, for magic angle spinning. Because every paper needs a bit of magic.

Scientists are the wrong population to pick if you want people who dislike silly names. They are everywhere because we don’t hate fun, and it does make things memorable. We’re also fond of naming things after people, which is as un-descriptive as it gets.

istjohn 2 days ago||
Also see physics: "quarks," "strange," "charm"
bigger_cheese 2 days ago||||
Physics has "Strangeness" and "Charm Quarks"

My own field Materials Engineering has:

"Hardness", "Toughness", Resilience", etc. which all describe different properties.

"Ferromagnetic" or "Ferrimagnetic best believe those are different.

Oreb 2 days ago|||
And astrophysics has MACHOs and WIMPs.
sweetjuly 2 days ago|||
and, of course, can't forget the derivatives of position after jerk being snap, crackle, and pop [1] after, you know, Rice Krispies.

[1] https://en.wikipedia.org/wiki/Fourth,_fifth,_and_sixth_deriv...

mvanzoest 2 days ago||||
yeah like how about the "sonic hedgehog" protein https://en.wikipedia.org/wiki/Sonic_hedgehog_protein
eloisant 2 days ago|||
Also: https://en.wikipedia.org/wiki/Pikachurin
dylan604 3 days ago||||
Americium, Einsteinium, Unobtanium also show chemistry isn't so uptight as suggested.
marcosdumay 2 days ago|||
> Unobtanium

I think you mean Unununium.

dylan604 2 days ago||
[dead]
jrowen 2 days ago||||
Unobtanium is fiction from the movie Avatar lol

Notoriously bad exposition I might add ("This is unobtanium. This is what we're here for!").

hidroto 2 days ago|||
unobtainium predates Avatar https://en.wikipedia.org/wiki/Unobtainium

and at least that exposition makes more sense then the "fountain of youth brain juice" in the sequel, when the humans can literally reincarnate themselves without having to cross interstellar space to do it.

dylan604 2 days ago||
My physics teacher in high school used unobtanium in class and was the first I recall using it. This was way before Core or Avatar. After reading your wiki link, it fit perfectly with the definition of a frictionless, massless pulley use.

It's funny, because I'm one to use movie references in casual conversation like it's nothing, yet my use was definitely not in this case

a96 2 days ago||||
Avatar was a famously wrong use of the very old term for something that is (no longer) available anywhere.
silvester23 2 days ago|||
Unobtanium was a thing in fiction long before Avatar.
knallfrosch 2 days ago|||
America is named after some author writing about a "New World." America is sometimes erroneously used to refer to only one of the states instead of the whole continent.

Einstein doesn't tell me anything, unlike Müller (miller) and Schmied (Schmiede = Forge)

shaftway 3 days ago||||
> > > No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

Lawrencium has entered the chat.

jghn 2 days ago|||
Biology, not chemistry but there's also the Sonic Hedgehog pathway [1]

[1] https://en.wikipedia.org/wiki/Hedgehog_signaling_pathway

yongjik 3 days ago|||
Off-topic, but it always amuses me that the sleepy town of Livermore, CA, known locally for its vineyards and an outlet mall, is immortalized in the Periodic Table, instead of the other greater places like New York or Chicago.

Chicago even had the world's first nuclear reactor, but no luck.

einr 2 days ago||
Ytterby is an otherwise pretty insignificant small town of 6k inhabitants in Sweden, but it has FOUR elements named after it: yttrium, terbium, ytterbium, and erbium.
gowld 3 days ago|||
Most of your examples are software!

Also SHAKE and RATTLE describe the motion-simulation in the algorithm.

Acronyms are abbreviations for meaningful names.

moregrist 2 days ago|||
> Most of your examples are software!

Most of my examples are from computational chemistry, which is software, but (historically) written by chemists.

As one of those chemists (at least before my current work), I feel somewhat qualified to comment on my field and whether it always names things seriously or not.

But if you look around, fun terms are everywhere in chemistry or chemistry-adjacent fields. For example, PALM and STORM (from fluorescence microscopy) were almost certainly chosen because they were easy to remember.

> Also SHAKE and RATTLE describe the motion-simulation in the algorithm.

Not really. SHAKE and RATTLE are bond constraint algorithms to avoid simulating the fast degrees of freedom, typically in solvent.

In molecular dynamics, your time step is effectively set by the fastest degree of freedom (there’s a relationship with the Nyquist theorem here), so it pays to freeze out the vibrations of the O-H bonds in water when you’re simulating a larger system. SHAKE and RATTLE effectively freeze the bond and angle distances near equilibrium while allowing some relaxation.

The rest of the degrees of freedom are typically integrated with a larger time step using a method appropriate for the simulation ensemble (eg: one of the Verlet integrators, a Langevin integrator, etc).

> Acronyms are abbreviations for meaningful names.

Acronyms like XPS, EPR, NMR, etc are like that: dry, short, and meaningful.

But there are a lot that were chosen because they were entertaining to the authors or because they are easy to remember. Even in a technical field, marketing matters.

smallnix 2 days ago|||
> Acronyms are abbreviations for meaningful names.

I think often words are added to allow for a memorable name, such as crispr

> When Mojica and Jansen struck up a correspondence, they began tossing around catchy names for the patterns, and on Nov. 21, 2001, they settled on CRISPR—an acronym for Clustered Regularly Interspaced Short Palindromic Repeats.

https://nautil.us/the-unbearable-weirdness-of-crispr-236685/

Y_Y 2 days ago|||
> No chemist wakes up and decides to call it “Steve” because Steve is a funny name and they think it’ll make their paper more approachable.

But a meteorologist might:

https://en.wikipedia.org/wiki/STEVE

buzzardbait 2 days ago|||
Good job pointing out the logical inconsistencies so succinctly. That article is yet another case of a solution looking for a problem.
armadsen 3 days ago|||
Biology is another discipline where the author is wrong. See e.g.: https://en.wikipedia.org/wiki/Sonic_hedgehog_protein
BuyMyBitcoins 2 days ago||
Don’t forget the Thagomizer: https://en.wikipedia.org/wiki/Thagomizer
BoppreH 3 days ago|||
I think the author makes a hard distinction between consumer products and infrastructure/engineering products. The Shelby Cobra has a funny name, but its engine is the memorably named V8. The Hoover Dam is a dam, and the Golden Gate Bridge is a bridge.

We can argue about namespace pollution and overly long names, but I think there's a point there. When I look at other profession's jargon, I never have the impression they are catching Pokemon like programmers do.

Except for the ones with Latin and Greek names, but old mistakes die hard and they're not bragging about their intelligibility.

leipert 3 days ago|||
Also the author misses how elements, species and astronomical objects are named. After random places, people, games, fictional characters, etc.

Names are just names. It’s nice if they are kind of unique and have no collisions.

BoppreH 3 days ago||
Elements are numbered, species are messy categories to begin with and too numerous, and astronomical objects do have sensible naming[1].

But to me it's still unclear what a good naming culture would look like for programmers.

[1] https://en.wikipedia.org/wiki/Astronomical_naming_convention...

kace91 3 days ago||||
>I think the author makes a hard distinction between consumer products and infrastructure/engineering products.

Which is really funny considering he talks about emacs.

makeitdouble 2 days ago||||
> The Hoover Dam is a dam, and the Golden Gate Bridge is a bridge.

Nothing stops the author from using "Libsodium crypto lib" and "Zephyr RTOS".

themafia 3 days ago|||
> but its engine is the memorably named V8.

You're misremembering. It's the "Windsor V8." Or more specifically the "4.8L Windsor Ford V8."

BoppreH 2 days ago||
Thanks, I'm not a car guy. I double checked with Wikipedia, but clearly I don't even know where I'm supposed to look.
spauldo 2 days ago||
Yeah, V8 is the shape of the engine - 8 cylinders in two rows offset at an acute angle (i. e. V-shaped). Likewise a V6 has the same number of cylinders as an inline 6 but performs very differently. There's a handful of different engine shapes - I'm fond of the rotary engines used in early aircraft. Traditionally, the name of an engine was just the year, the manufacturer, and the displacement (like 1965 Ford 352). You often leave off the year and even the manufacturer if it's not required by context.

The Ford 351 is a bit special because there were two different engines made by Ford in the same time period with the same displacement, so they tacked on the city they were manufactured in (Windsor or Cleveland).

titzer 2 days ago|||
> But out in the real world, you could encounter a Shelby Cobra sports car, Bell AH-1 Cobra chopper, USS Cobra (SP-626) patrol boat, Colt Cobra handgun, etc.

In this example, you added "chopper", "patrol boat", and "handgun" to disambiguate them. There wouldn't have been enough context to do so otherwise, which IMHO is more aligned with the point the author was making.

If you were in the middle of a conversation about helicopters with people who knew lots of helicopter models, just saying "Cobra" would probably be fine. But in the software world, there are far too many obscure and new tools that are not at all clear without context. And the context just always happens to be all the dang things. A cutesy name could be any dang thing.

> It's a bad sign when all of the examples in an article don't even agree with the author's point.

I think you're just being selective because you disagree. A better example was:

> “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.”

If we want to cherry pick, your comment has:

> When you open your medicine cabinet

You used the term "medicine cabinet", a term that is not only descriptive, but not branded or jargon. It's standard and doesn't need something new. It's common usage and doesn't need to be disrupted by someone overly proud of a basic thing they made. You didn't call it Wapsooie, a "playful" take on WPSU (Wall-mounted pharmaceutical storage unit) or a MMC (Materia medica cabinet), or a whole host of other cutesy names or even acronyms that you might eventually get to if you were talking about medicine cabinets all day long, or designing or building them.

I mostly agree with the author. Software tools think they're so hilarious. I mean, the Virgil compiler is named "Aeneas" internally. Yet the cli command is "v3c"--Virgil III compiler.

munificent 2 days ago||
My comment was mostly snarky, but I think the author is oblivious to their own biases and wrong. They even say:

> I read a lot into software history, and I can’t really say that there was an era of fantastic naming (even very experienced engineers made some very silly naming) but at least some current was trying to make some sense in the 80s; grep (global regular expression print), awk (Aho, Weinberger, Kernighan; the creators’ initials), sed (stream editor), cat (concatenate), diff (difference).

"diff" is a good name. There is no sane argument that "awk" conveys anything meaningful about what the tool does. "grep" is utterly opaque until you know what it's an acronym for. The name itself conveys absolutely nothing. "cat" is actively misleading because it is a word, but the tool has nothing to do with felines at all.

The author only likes those names because they're familiar with them, not because they're good names.

> You used the term "medicine cabinet", a term that is not only descriptive, but not branded or jargon. It's standard and doesn't need something new.

Sure. That's because I only have one medicine cabinet.

If I go on homedepot.com and search for medicine cabinets, the bold text is "Glacier Bay", "Zenith", "Kohler", etc.

What's frustrating about this article is that the author doesn't even realize why software packages have these funny names. Let's say I want to make a JavaScript package for parsing command-line arguments. Seems like "argparse" is a pretty clear name for that. Taken. Maybe "cliparse"? Taken. "args", "cli", "options", "argparser", "cli_argparser". Yup, all taken.

Packages need unique names so that package managers and imports can refer to them unambiguously. You can namespace them with the author's name but that just makes it confusing to talk about when two people say "args" but don't realize that one of them is talking about "@some_rando/args" and the other is talking about "@weird_startup/args".

So people just pick cute names. The name is an identifier, not a descriptor.

There is no real problem here, the author is just being cranky.

jdranczewski 2 days ago|||
Following on on the DoD example, the field of astronomy is infamous for its terrible acronyms: https://lweb.cfa.harvard.edu/~gpetitpas/Links/Astroacro.html
rsynnott 2 days ago||
Military codenames are a bit different; they're deliberately random words, assigned so that no-one can guess the nature of the programme based on the name.

(Companies sometimes do this, too, for internal stuff.)

kixiQu 3 days ago||
I believe strongly in this counterargument:

https://medium.com/better-programming/software-component-nam...

Small summary: external identifiers are hard to change, so projects will evolve such that they are not accurately descriptive after time.

(Less discussed there, but: In a complex or decentralized ecosystem, it's also the case that you come across many "X Manager"/"X Service"/"X State Manager"/"X Workflow Service" simultaneously, and then have to rely on a lot of thick context to know what the distinctions are)

parpfish 2 days ago||
I’ve been told multiple times in multiple jobs that I’m good at naming things, and I love whimsical names. A couple rules I’ve internalized are:

- if it’s hard to name, that’s a good sign that you haven’t clearly delineated use case or set of responsibilities for the thing

- best case for a name is that it’s weird and whimsical on first encounter. Then when somebody tells you the meaning/backstory for the name it reveals some deeper meaning/history that makes it really memorable and cements it in your mind

- the single best tech naming thing I’ve encountered (I didn’t come up with it) was the A/B testing team at Spotify naming themselves “ABBA”

mbg721 2 days ago|||
The winner takes it all!
zahlman 2 days ago|||
> I’ve been told multiple times in multiple jobs that I’m good at naming things, and I love whimsical names.

As long as you're naming products and features, rather than variables.

parpfish 2 days ago||
oh yeah, definitely. for variables its best to exclusively use obscure unicode.
tomnicholas1 2 days ago|||
God this article is 10000% better than the posted one. This is great:

> Names should not describe what you currently think the thing you’re naming is for. Imagine naming your newborn child "Doctor", or "SupportsMeInMyOldAge". Poor kid.

pksebben 3 days ago|||
I suppose it depends on your goals, but that scope restraint can be a good thing.

Do one thing, do it well, and while you're at it call yourself by the thing you do so you remember that's what you ought to be doing. A bit wordy for unix but you get the idea.

MerrimanInd 3 days ago||
> This would be career suicide in virtually any other technical field.

The cognitive load is unavoidable and in some ways worse in industries with highly technical names.

At one point in my career I was an engine calibrator at a large automotive OEM. Our lexicon included physics industry terms (BMEP, BTDC, VVT, etc), a large software package where every variable, table, and function was an acronym (we had about 75k tunable parameters, each with an acronym), and all the internal company jargon and acronyms you'd expect in a large corporation. But every name was as technical and functional as the author would desire.

During my first month I was exhausted. I would doze off in afternoon meetings or pass out in my car as soon as I pulled in the driveway. I finally mentioned this to a more senior coworker and his insight was that my brain was working overtime because it was busy learning another language. He was entirely right! The constant mental load was a very real and tangible load. He relayed an anecdote when he went to S. America on his honeymoon and despite him and his wife having taken ~4 years of HS/college Spanish the mental work they had to do to function basically nixed half the daily activities they had planned due to exhaustion. That was what I was experiencing.

The idea that more technical and specific names reduces mental load does not track with my experience. The complexity is intrinsic not incidental and I don't think it has much to do with the specific names chosen.

YurgenJurgensen 3 days ago||
In mobile telephony, one of the first things new hires are told is “don’t even try to work out what all the acronyms stand for; it won’t help”. You just have eat all the alphabet soup. Worse is that they nest themselves. You can have acronyms where every letter stands for another acronym. Writing a thousand words without using a single noun is easy. And of course all the short ones are overloaded. Is an AP an Application Processor or an Access Point? Depends on which subfield the person you’re talking to is from.

But they’re a necessary evil, since MSISDN is still less cumbersome than Mobile Station International Subscriber Directory Number.

jaggederest 3 days ago|||
I thought this was a wonderful example of "some things are just intrinsically challenging to represent in your brain":

https://www.youtube.com/watch?v=6ZwWG1nK2fY

Apparently they've found structural differences in the brains of people undergoing London's famously difficult taxi qualification.

I think I saw a video that said people studying for "the knowledge" as it's known report massive fatigue.

KurSix 2 days ago||
The article's complaint (as I read it) is more about incidental load: names that force you to context-switch just to figure out what category of thing you're dealing with
arscan 3 days ago||
> “But memorable names help with marketing!”

> 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).

ElevenLathe 3 days ago||
I agree. I've worked in places that discourage "cute" names and the result is often things like having to decide between using CoreMainHttp and MainHttpCore. Or worse, two things with exactly the same name, but two different APIs, with projects sometimes taking both as a dependency at the same time. Or even obsolete parts of the org chart encoded into dependency names, like "DataOrgUtils" when the "Data Org" stopped existing several reorgs ago, when our current VP was an intern and nobody else even worked here.

Without some central control of names though, even "cute" ones tend to converge on the same handful eventually: Phoenix (and other classical allusions like Plato's Cave, etc.), Keymaster/MCP (and other 80s childrens' movie references), Simpsons characters, Star {Trek,Wars} references. These are all attractors for the kind of people that tend to be in IT/SWE even if the actual namespace (all possible ASCII-expressable words) is much larger.

ak217 2 days ago||
Exactly - the author thinks all these tools just materialized fully formed in their software ecosystem instead of surviving years of competition with other, less memorable tools. It takes many years of work, luck, and yes, marketing to get to the point where any of these tools are, and a memorable name can absolutely make the difference between support and oblivion.
jchw 3 days ago||
Sometimes I am baffled at what gets onto the frontpage at HN, reminding us all that the people who vote stories and the people who comment on them are less of an overlapping group than you might think. I can understand the desire to have names that are more descriptive, but to claim we have "lost the plot" while holding up names like "awk" is contradictory at best. It sounds more like this person just had a personal vendetta against cute sounding names, not against the names being uselessly non-descriptive. In my opinion, the way this post is framed at the outset is misleading.

— This comment brought to you via Firefox, which obviously from its name, is a web browser.

lr0 2 days ago||
> but to claim we have "lost the plot" while holding up names like "awk" is contradictory at best

My argument is that even a name like awk is much more relevant to the people who used this software back then, of course it was not the best way to name it, but at least it held some meaning to it. Unlike modern software, awk and others were not written with the consideration of a wide user-base in mind. Regarding whether we "lost the plot" or not, I believe that we did, because as mentioned, in the 80s there was a current of people who named software conventionally, and up to the 2010s, the names still used to hold some rational even when word-played or combined with cutey names.

> It sounds more like this person just had a personal vendetta against cute sounding names, not against the names being uselessly non-descriptive.

Not at all, I find it quite fun, just unprofessional.

--

Sent by replying to an automated RSS email, via msmtp (light SMTP client, which is unlike firefox, not a consumer product and its name has to do with its function).

jchw 2 days ago||
> My argument is that even a name like awk is much more relevant to the people who used this software back then, of course it was not the best way to name it, but at least it held some meaning to it. Unlike modern software, awk and others were not written with the consideration of a wide user-base in mind. Regarding whether we "lost the plot" or not, I believe that we did, because as mentioned, in the 80s there was a current of people who named software conventionally, and up to the 2010s, the names still used to hold some rational even when word-played or combined with cutey names.

I don't personally get it. I can see the argument for names that are descriptive, because a descriptive name might be useful. Meanwhile though, a name like awk is only useful if you already happen to know what it stands for, which to me seems a little silly. Relevant? Maybe... But to what end?

> Not at all, I find it quite fun, just unprofessional.

Why do you consider it "unprofessional"? This seems like a cultural thing. For example, in Japan, it seems like it is not unusual to see cute illustrations in otherwise professional contexts. I am not sure there is a standard for professionalism that is actually universal.

Disregarding that, okay, fine: let's say that naming software after irrelevant things is unprofessional. Why should we care?

Software developers have spent at least the past couple decades bucking trends. We went to work at white collar offices wearing khakis and t-shirts, with laptops decked out in stickers. Now I'm not saying this is all software developers, but it is certainly enough that it is a considerably recognizable part of the culture.

Professionalism, in my eyes, is descriptive, not prescriptive. If professional software engineers normally name things with cute nonsense names, then that is professional for our industry.

I can see the usefulness in descriptive names because they serve a purpose, but names that are merely somehow relevant but otherwise don't tell you anything useful seem just as useless as non-sense names, and justifying the distinction with "professionalism" feels odd.

> Sent by replying to an automated RSS email, via msmtp (light SMTP client, which is unlike firefox, not a consumer product and its name has to do with its function).

Note how this also neatly works as a strong argument against descriptive names. RSS? msmtp? We're now drowning in acronyms and initialisms. I don't particularly have anything against these names (I mean, I use msmtp and the name certainly doesn't bother me) but the utility of the name RSS is quite limited and the vast majority of people probably don't really know what it stands for (to my memory it is Really Simple Syndication, but it may as well be just about anything else, since that doesn't help me understand what it is truly useful for.)

But you do hit on an interesting point that probably helps explain to some degree what's going on here: even for small CLI utilities, more often than not programmers doing open source are actually bothering to work on the marketing and deployment of their software. When I was younger a lot of open source was still more decentralized, with many programmers just dropping tarballs periodically and Linux distros (and others) taking care of delivering the software to users in a usable form. Part of trying to deliver a holistic product is having a memorable name.

msmtp may not be developed as a product, but in practice, almost all software is like a product. Someone is a "consumer" of it. (Even if that person is also a producer of it.) People get "sold" on it. (Even if it's free.) How it's marketed definitely depends on the sensibilities of the developers and the target audience but I'd argue almost all software is "marketed" in some form even if it is non-commercial and not packaged like a product. (Even something like GNU's landing pages for things like Coreutils is arguably a very, very light bit of marketing)

The actual truth is software programs that have more care put into marketing are arguably more professional. The professionalism of having a "relevant" name is rather superficial in my eyes, but having concise "marketing" that "sells" your software well to its intended audience and provides good resources for users is professionalism that makes a difference. Likewise, plenty of things delivered more like products do have relevant names! For example, KeePass and SyncThing come to mind immediately.

So whether the next great email server suite is "SMTPMailSuite" or "Stalwart" is mostly immaterial, but I'm not surprised when marketing-concious developers choose memorable names. (Obviously in case of Stalwart, there's a company behind it, so having good marketing is absolutely in their best interest.)

Another downside of a descriptive name is that software evolves over time and a name that is too descriptive could stop being relevant eventually. Off the top of my head it's hard to think of a specific example, but you can see software that evolves this way all the time. (One example on the Linux desktop is how KWin went from being an X11 Window manager to a full-blown display server compositor during the Wayland transition; but that name obviously still works just fine.)

elktown 2 days ago||
Name it after your favourite football players and functional names will be enforced within the first 3 reviews.
KurSix 2 days ago||
I don't think the core argument is a vendetta against whimsy
dillydogg 2 days ago||
>“Descriptive names are boring!”

>>Yes, and surgical instruments are boring.

I'm absolutely certain that this person has never been (awake) in a surgery suite because all of the tools people use have eponymous names.

There are a billion little grabbers that all have silly names like Adson, Allis, Babcock, Kocher etc. which are all meaningless until you just know what they are. And don't you grab the Mayo scissors when they ask for Metzenbaum. In med school we had a flashcard deck that just had a picture of the tool and what it is called on the other end.

In the end, I think the author has a point, but then doesn't really make it that well. I think using awk as a good example is a bit silly. diff is a good one though!

necovek 2 days ago|
Or had a Kirchner pin inserted.
ctoth 3 days ago||
> 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.

benrutter 3 days ago|
> Our field deserves better than a zoo of random nouns masquerading as professional nomenclature. Clarity isn’t boring, it’s respect for your users’ time and cognitive resources.

I felt a little guilty at first, I maintain a project called Wimsey (it's a data testing library but you couldn't guess that) and at work my team regularly enjoys fun/silly names.

Trying to defend myself, I was thinking about various logical responses to this article: non-descriptive names don't become out of place when a projects goals drift; descriptive names will lead to repitition; etc.

If I'm honest though, I think I just like software to have a sense, even a tiny one, of enjoyment.

The software I use everyday, like Cron (named after a greek god of time); Python (named after a comedy act) and Zellij (names after a tiling craft) all have fun, joyful names that tell me someone loved and cared about these projects when they built them.

I need to learn these tools beyond just "x does y category of thing" anyway, so I don't mind learning these names. And it makes software engineering just a bit more fun than using "unix-scheduler", "object-oriented-scripting-lang" or "terminal-display-manager".

I love working in a field where people are passionate about their craft. Stern professionalism doesn't sound like something I want to trade that for.

It's a human trait to name the things we love, that's the exact reason why pets typically have names like "cookie" and not "brown-dog-2".

wredcoll 3 days ago||
Naming your library "data-testing-library" would be useful... until there's a second one at which point the specific name effectively becomes meaningless.
marc_abonce 2 days ago||
Case in point: @testing-library (the JS one for React, Vue, etc.)

Besides, this type of overly generic names makes it harder to search relevant stuff, which makes them more annoying to me than silly names.

amadeuspagel 2 days ago||
They also make things hard to talk about. When you mention testing library in an ordinary conversation without @ signs and dashes, people won't know whether you're talking about the concept of a testing library or a specific one.
general1465 3 days ago|||
I always get stuck into .NET naming structure Project.Parser.Pcapng, it is great for projects, but it is utterly useless for standalone naming
layer8 2 days ago||
Some people are passionate about being professional in the sense of doing things competently and expertly. Cuteness is inherently a mental distraction from what you really care about in the craft, which is why it appears tonally inappropriate. The desire to add some sort of cuteness is taken as an indication that the person apparently doesn’t derive enough joy from the workmanship itself. In other words, a lack of caring about and being fulfilled by the actual work, so that you need to add something “fun” on top.
necovek 2 days ago||
But that's trivially provable to not be true. You can easily be both: dedicated and professional in your work, and fun and flimsy where possible.

I mean, all the funny names of great software in this thread and even OP are a testament to that.

shermantanktop 2 days ago||
And it’s a lowkey flex. Look, I can be technical wiz and have a sense of humor at the same time!
More comments...