12/12/2025 at 12:03:02 AM
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.
by pdpi
12/12/2025 at 12:14:34 AM
> 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.
by anyfoo
12/12/2025 at 6:09:41 AM
I just remember it as "Da Disk", early 2000's nu metal lyrics-style, because it does mad things to da disk, yo.by isoprophlex
12/12/2025 at 4:06:40 PM
I guess the most relevant backcronym expansion is still "Disk Destroyer"by marcosdumay
12/12/2025 at 3:41:40 AM
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.by f33d5173
12/12/2025 at 7:44:03 AM
Same here. But I also seem to remember claims that this isn't true…by classified
12/12/2025 at 8:13:10 AM
I had it learned as "data duplicator" or something like that... seems also bogus.by f1shy
12/12/2025 at 1:59:36 AM
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".
by necovek
12/12/2025 at 2:07:59 AM
"disk dump" is another common (but wrong) guess.by anyfoo
12/12/2025 at 2:19:04 AM
I always read it as “[disk|data] destroyer”, because that’s what it’ll do if you’re not careful.by softskunk
12/12/2025 at 4:49:46 AM
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.by jaredhallen
12/12/2025 at 8:35:57 AM
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.
by georgefrowny
12/12/2025 at 4:22:04 AM
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
by Kevin-Xi
12/12/2025 at 6:22:59 AM
Reminds me of IBM => HAL, just the other directionby usefulcat
12/12/2025 at 9:53:35 AM
APL -> BQN where the author remembered the alphabet wrong : https://chat.stackexchange.com/transcript/message/54753804#5...by bmacho
12/12/2025 at 12:26:33 PM
i always think of it as Data Destroyerby vrighter
12/12/2025 at 8:17:10 AM
Ha, for the last 30 years I have been convinced it was Disk Direct.by richardc323
12/12/2025 at 7:10:05 PM
I thought it was dirty deeds.by linhns
12/12/2025 at 10:17:35 AM
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.by Y_Y
12/12/2025 at 5:46:02 PM
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.by pdpi
12/12/2025 at 2:04:00 AM
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.
by necovek
12/12/2025 at 3:08:38 AM
"Concurrent Versions/Versioning System" is a pretty reasonable one, though.by pdpi
12/12/2025 at 3:32:42 AM
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).
by necovek
12/12/2025 at 10:58:46 AM
and gdk was, delightfully enough, the gnu's not unix image manipulation program toolkit drawing kitby zem
12/12/2025 at 7:19:54 AM
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
by xxs
12/12/2025 at 8:40:07 AM
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.by eloisant
12/12/2025 at 5:43:00 PM
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.by xp84
12/12/2025 at 10:49:48 AM
Imagine a parallel world in which Java is called Oak and it's actually nice from inception, not just like nice after decades.by yard2010
12/12/2025 at 1:52:46 PM
compared to C, java was quite niceby xxs
12/12/2025 at 8:02:45 AM
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.
by necovek
12/12/2025 at 12:22:15 PM
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.
by johnnyanmac
12/12/2025 at 12:53:26 PM
>GitThe stupid content tracker.
Still one of my favourite names.
by disgruntledphd2
12/12/2025 at 11:19:35 AM
The 2000s Plan9 community asserts "Gnu is Not Useful" as the correct expansion.by delaminator
12/12/2025 at 4:49:18 PM
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...)
by necovek
12/12/2025 at 6:25:10 AM
Perl stands for “practical extraction and report language”by usefulcat
12/12/2025 at 8:13:02 AM
Also "pathlogically eclectic rubbish lister".by nineteen999
12/12/2025 at 4:25:26 AM
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.
by bruce511
12/12/2025 at 12:14:35 AM
> 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.)
by ekidd
12/12/2025 at 4:47:11 AM
I always assumed part of the "data destroyer" folklore was from people flipping if/of by accident and destroying their data :)by sweetjuly
12/12/2025 at 4:54:26 AM
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.by opan
12/12/2025 at 12:53:49 AM
Another, similar name it is sometimes jokingly referred to under is “destroyer of disks”.https://web.archive.org/web/20081206105906/http://www.noah.o...
by QuantumNomad_
12/12/2025 at 11:27:11 AM
I always thought it was "disk dump"by hoherd
12/12/2025 at 1:05:59 AM
https://en.wikipedia.org/wiki/Back_Orifice_2000 was pretty clear about what it did.https://en.wikipedia.org/wiki/BitchX less so.
by rikthevik
12/12/2025 at 1:42:23 AM
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.by saghm
12/12/2025 at 1:57:52 AM
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
by anyfoo
12/12/2025 at 8:12:58 PM
I think I sort of meant the same thing, but my wording might have been unclear. Essentially, there already was a W, and they were making something new, so they picked X.by saghm
12/12/2025 at 5:44:31 PM
Wow. Wayland really should have considered “Y” apparently!by xp84
12/12/2025 at 12:16:57 AM
> what dd stands forhttps://groups.google.com/d/msg/alt.folklore.computers/HAWoZ...
by layer8
12/12/2025 at 3:20:22 AM
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.by kazinator
12/12/2025 at 5:46:26 AM
>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.
by Suppafly
12/12/2025 at 1:28:24 AM
Naming is a big part of programming, you'd expect software to have good descriptive names.by HPsquared
12/12/2025 at 1:35:00 AM
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.
by Supermancho
12/12/2025 at 9:14:24 AM
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...by swiftcoder
12/12/2025 at 10:08:10 AM
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.
by rahoulb
12/12/2025 at 4:43:15 AM
> you'd expect software to have good descriptive namesLike Microsoft Word?
by selcuka
12/12/2025 at 1:42:38 AM
"There are only two hard things in Computer Science: cache invalidation and naming things."by mbesto
12/12/2025 at 1:45:35 AM
And off by one errors.by MrDarcy
12/12/2025 at 1:46:35 AM
"And off by one errors"by casper14
12/12/2025 at 6:51:38 AM
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 etcby tempest_
12/12/2025 at 9:10:54 AM
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.
by port11
12/12/2025 at 3:59:18 AM
There are two hard problems in computer science: caching things, naming things and off-by-one errors.by bsder
12/12/2025 at 4:52:53 AM
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.
by Groxx
12/12/2025 at 4:56:52 PM
> 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.
by dspillett
12/12/2025 at 3:29:35 PM
So maybe the takeaway isn't "we lost the plot" vs "we never had it," but that there's always been a tensionby KurSix
12/12/2025 at 1:57:37 AM
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-...
by abetusk
12/12/2025 at 2:01:50 AM
Yacc is Yet Another Compiler Compiler, not Yet Another C Compiler. It's useful for writing compilers, not for compiling C.by Sniffnoy
12/12/2025 at 5:07:35 AM
Especially since, IIRC, it actually predates C.by spauldo
12/12/2025 at 2:10:42 AM
Yep, my mistake! And it makes a lot more sense.by abetusk
12/12/2025 at 3:28:03 AM
> "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).
by pdpi
12/12/2025 at 9:11:20 AM
> their audience is expected to know what Unix, Elm, Pico areOf 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...
by swiftcoder
12/12/2025 at 3:12:09 AM
Pretty sure dd is disk destroyerby PenguinCoder
12/13/2025 at 10:29:26 AM
> Yacc is called BisonAnd when they named ‘Yet Another Compiler Compiler’ something tells me they weren’t being deadly serious.
by mr_toad
12/12/2025 at 4:51:45 AM
dd = (D)oes what it says it (D)oesby jaredhallen