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.
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.
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.
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)
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.
> 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).
— This comment brought to you via Firefox, which obviously from its name, is a web browser.
>>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!
I'm charmed by the lack of truth in this beautiful sentence. Top of mind for me, at least.
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".
It is an unavoidable reality that knowing something's name gives you very, very little information about what that something is. That's what sentences are for.
but then:
> Our field deserves better than a zoo of random nouns masquerading as professional nomenclature
Okay? So is this professional nomenclature or the work of community builders?
I think: everyone should code, it should not be an elitist profession, we don't need to all accommodate busy professionals, i'm fine with corporate users having to say my stupid package name at work.
> Your fun has externalities. Every person who encounters your “fun” name pays a small tax. Across the industry, these taxes compound into significant waste
Someone please get this guy a bong rip.
Is it though? How are you going to differentiate between 10 different variations of http-request-validator repos on GitHub? I think both have their downsides, but making the name super generic sounding is arguably worse. What I don't like about names like zephyr is that they're purely marketing-driven; people end up picking a zephyr over a http-request-validator purely because the name is sounds "cool" to them, even though http-request-validator might actually be the better library. And don't even get me started on people naming their projects random Japanese words.. it's like the equivalent of nicknames that Thai people use, which are just random English words like Ice Cream or Thank You.
Maybe the happy medium is, like you said, names that contain a hint as to what they do, like Actix (actor model). But TBH you kind of still have to look it up to know what it does, there's no way you're just going to infer that. Maybe later on it helps you remember what it was for though.
I worked in finance – we gave our models names that endeared us to them. My favorite is a coworker naming his model "beefhammer".
My subjective view is that names should be exotic, flamboyant, unique and generally wild when it comes to tools. sticking your company's name as a prefix into everything (or the flagship product's) is confusing and only hurts you.
But before those silly names came up, every company used their own three letter abbrevations for their tooling, which was not much better. They had descriptive names, but using the abbrevations only didn't help, and you needed a company wide dictionary. Like "We’re using CMT2 for configuration management, which feeds into CCM for the CLI, and then WSM handles our WebSocket connections, PM manages permissions, all through AJQ for our job queue."
- 'Microservices' sketch by Krazam
It was and perhaps still is, a solid competitor to Photoshop, but any unfamiliar grownup is, quite reasonably, going to never ever ever trust anything to do serious work with a name like that.
The adjustable wrench is named straightforwardly, but most English speakers know it as the monkey wrench. In some European languages its name translates to "French wrench" or "the French" (as in: French person), in others it's "English wrench" even though those two were originally just variants of the adjustable wrench.
Point is, all those goofy names are brands that may or may not stick around for longer and the terms for what they actually do are more descriptive.
My favourite example: BlueJeans. A videoconferencing platform. Why is it named like that? We might never know, but most likely partly to stand out, but there's a clear distinction between the brand name and the more descriptive terms used to tell what it does.
I'm creating a dotfiles to remote SSH session tool in shell. At first, I wanted to call it "sship", but that name was already taken. Something like "ssh-dotfiles-carrier" felt too long for a command, and abbreviating it to "sdc" would lose the meaning.
So yes, I eventually named it "shitt-p" (character of Hitman Reborn!), since I wanted it to relate to "sh"...
Krazam has excellently parodied this unserious naming indulgence of programmers[1]. "See, Bingo knows everyone's name-O. So we get the user ID from there." Racoon, Wingman, EKS (Entropy Chaos Service), RGS, Barbie Doll, Ringo-2.
And I would go further, the extremely shortened names in Linux and other places is problematic too, given that most terminals now allow name completion on tab.
It’s about that time that everything needed a website with a domain and all the domains were gobbled up by squatters. Also people were inventing new words looking for the fewest possible syllables for SEO and marketing.
"names conveyed purpose or origin.": no they don't. If I use the authors example of the two people talking: as if saying "BASIC" instead of "Cobra" explained the meaning anything better to a person who never used BASIC.
I've been programming for 15 years+ and never used basic due to my age and I never know, until today, that BASIC stands for "Beginner’s All-purpose Symbolic Instruction Code".
Why? Because I don't need to know and it doesn't make the usage of BASIC anything different.
Amiga famously had a custom ASIC called "Fat Gary" https://en.wikipedia.org/wiki/Amiga_custom_chips
I really could go on about this. Names are only useful for distinct identification. They need to be distinct within their domain. Otherwise they're just an index into a list.
I also think they overestimate how distinct terminology is in other fields. Even their example of the I-beam is also known as an H beam or an RSJ depending on who you're talking to. I don't find it hard to imagine a mechanic referring to one of their specialty tools by the name of its manufacturer, either.
Regardless, the battle was lost before it started. There has never been good consistent descriptive naming as standard in computing; there was no plot to lose.
(Also, I wouldn't say `awk` or even `grep` are good examples (as the OP admits) -- they were definitely chosen for whimsky, with, if not actually backronyms, still acronyms deisgned for whimsy).
And another part of it is that so many people now have dreams of commercializing their product, so you need a "brand" name. (I guarantee the namers of the tools had no designs on commecializing grep or awk). (I have little sympathy for this one, but it's the world).
I do agree with OP it is a problem for accessibility. Newcomers who haven't already memorized the mangagerie have a lot to figure out; some people's brains work differently than others and it's easier or harder for some people to remember these arbitrary names naturally; I'd guess it can be especially hard for non-native English speakers, but maybe it's all Greek (ha!) to them anyway, so.
When i have tried to name things plain though, I often have trouble -- we want something clear, but also relatively short (especially if it's going to be in namespace or other identifier names and be typed a lot!) -- and not already taken in popular consciousness or the package managers we'll need etc, and often I have trouble finding such!
(The joke here is: look up how many _major_ software projects have been named Phoenix at some point. It's a lot.)
Oh, it's the graphical terminal program (alternative to 'gnome-terminal'). Well, um, ok.
However, I will concede, after more digging as to why (as it rankled), that there was a "have to choose a unique name" issue there (even leaving aside trademark issues). I'm resigned (so I suppose signed up) to deal with residual issues that crop up going forward.
I love to mock '*ly.com' names for almost certainly doomed enterprises, but I get that at least it wasn't already taken.
I remember working on a ruby project and running into some problem with our env setup tool and just hitting "could not find nokogiri" (or an error to that effect) over and over and getting a little mad that I had to read this cutesypoo not-at-all descriptive name over and over while failing to get a danged website to run.
---
To be sure, there are in-the-know parts of all the package names I just listed: what does JSON stand for? What does CSV stand for. What is the ISO and what is 8601? I guess the idea there is the descriptiveness ends at the edge of the language; the package name is too short a field to explain Javascript Object Notation, Comma Separated Values, or the ~~International Standards Organization~~ ok actually it's from "isos" meaning "same" date format.
Yes and no. The Navy has or had a lot of code in JOVIAL, Jules's Own Version of the International Algorithmic Language. SNOBOL goes a long way back.
in my company, we have a tool whose technical name was four word long, and has just as much cognitive load as any technical name.
one of my biggest contribution to that project was to Name it.i gave it a simple name, with zero relation to tech or any software
and suddenly our PMs, Managers, Users can pronounce it and can actually type it correctly and of course recall it's name flawlessly.
so, at least from my experience, having a small, easy to pronounce name is more important than having technical name.
Moreover having a name with all of the qualities is definitely desirable, but there are many projects in world and not that great names. and many Great names (looking at you, Vue.js) are either already taken or beyond my naming skills
> -- Phil Karlton
- https://skeptics.stackexchange.com/questions/19836/has-phil-...
Well if they work for a drug company they will say “Let’s call this phlogistotheremone but sell it under the name Zyphyrax so that doctors and patients will refer to the same medication by different names.”
Odd? Modern? I started working professionally in 2005 and everything had silly names. The DNS server was named athena instead of c302r5s1 or whatever building/room/rack/position name. I once rebooted a server that had an uptime of 12 years, so it had been running since 1993... it indeed had a silly name. Everything had silly names, usually types of things had a theme.
>Same thing applies to other fields like chemical engineering, where people there maintain even stricter discipline. IUPAC nomenclature ensures that 2,2,4-trimethylpentane describes exactly one molecule. 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.
How about piranha? aqua regia? Up/Down/Strange/Charm quarks? Gluons? Like a third of the elements named after people or places.
Curium, Einsteinium, Fermium, Mendelevium, Nobelium, Lawrencium, Rutherfordium, Seaborgium, Bohrium, Meitnerium, Roentgenium, Copernicium, Flerovium, Oganesson -- I guess none of these people were named Steve, but you get the point
These tendencies are OLD and EVERYWHERE. IUPAC names are just a convenient way to serialize data.
- runtypes - https://github.com/runtypes/runtypes
- zod - https://zod.dev/
- ajv - https://ajv.js.org/
AJV and runtypes use the naming convention that the article suggestions. It's named is derived from how it's used. Zod on the other hand seems to come from left field.
Personally, I built a simple caster called "ShallowCaster" before choosing to move to a library as things got move complex but I think a problem is that as competition increases the "generic" naming becomes more difficult to find.
I suppose an option is to include the author name for each package such as "json casting from google" or "@google/json-casting" this way all packages can use the descriptive naming while not conflicting
[0]https://huggingface.co/blog/ProCreations/transformers-are-ge...
so many times I download something and the filename has nothing to do with the file or it's too much of an abbreviation so when I go to look for the file it's hard to find or if I come across one of these files I have no idea what it actually contains
So we ended up with “auth service” instead of something like “Galactus”. The problem of course is that “auth service” isn’t searchable in our monorepo and it was a nightmare to find or discuss any info or references to the service itself. Now imagine if docker was called “container manager”. Good luck googling that and disentangling it from all the search results.
The value of a name doesn’t come from it being self-explanatory but rather from it being a pseudo-unique identifier. The small cognitive tax of remembering it serves as a shared bookmark between people that you can refer to when discussing or speaking to others about it - whether we’re talking about docker, Linux, or another person.
I would rather have fantasy names than wrong names.
The "Zephyr" that I knew about was a notification system for workstation clusters on a LAN, written at the MIT Athena project. You'd announce something on it, and the info would spread through the network as if by a gentle breeze. See: https://en.wikipedia.org/wiki/Zephyr_(protocol)
I do recall there was an experimental study in the 1980s (Hartwell, Landauer, and Gigliotti iirc) showing that this naming stuff doesn't matter. This exact same debate was going on back then. The study refuted Don Norman's "The Truth about Unix" paper which claimed that Unix commands ("rm", "mv", etc.) were too hard to remember.
“Butterfly valve” is the name for a type of widget.
There are many instances of “butterfly valve”, some of which will have strange brand names.
Just like there are many “web frameworks”, each with weird and wonderful names (“Django”, “Rails”, “Spring” etc.)
We’re really not that different.
I realize this isn't chemistry, but aren't there like 15 elements that are named after people (Curium, Einsteinium, etc) another handful named after places (Americium, Tennessine, etc).
Also, a bunch are named after Norse and Greek gods like Thorium, Titanium, Plutonium.
The article also goes to talk about the Hoover Dam, but it's not like the government is immune to this either. We just had Operation Warp Speed which doesn't tell you anything about what that program did
Boring names are also very generic, by definition, and thus often harder to remember. Especially when there are 10 other similar tools. Is it sql-validator, sql-schema-validator, schema-validate, db-validator, or god knows what else?
Edit: I am in favor of better “sub titles” / descriptive slugs / and so on. As well as names that are a hybrid of creative and descriptive. Sqlalchemy is a good example.
Why isn’t there a command line utility called “whatisthis” with a standard protocol that allows tools to give a brief description of what they are?
It could be extended to package managers as well. E.g “pip whatisthis foo_baz”.
Shit we should create this…
'pedes
Glook
Fitznik
Plops
Gyralight
I wanted a new tower defence game: So I made one
Oh and https://lerc.itch.io/namesarehardpart5The examples given for real world things The Golden Gate Bridge and The Hoover Dam, are instances of things. Things that the class of which they belong is old enough that Dam and Bridge are not new words.
If you are making new things you need a new name. Software is inherently new because computers have been in wide use for only a few decades. Instances of software rarely even get names, just numbers, with project names or nicknames attached. I'd be willing to bet both The Golden Gate Bridge and the Hoover dam had project names or nicknames.
The naming culture is beyond salvation. It crossed the line when things went from 'We invented this word to name our thing.' to 'We fused the concept of breakfast muffins in cat pictures meme to the previous application of the open source tool to name our abstract thing more accurately. That's why it's called 7Mermaids.'
I remember when Yahoo had to spend a fortune on commercials asking "Do you Yahoo?!" It seems that old business lesson was completely forgotten.
This so isn't important, but this just isn't true at least in chemistry. Plenty of molecules have names that aren't IUPAC based, but instead are based on prefixes/suffixes that are common to the field (more in pharmacological chemistry but not just!)
What is it with a number of blogs recently that have turned off normal right-click behavior, and probably related, the scroll behavior is awful.
This is one, and as soon as I scroll on my work high powered Macbook and it's not smooth, I'm out.
We have an internal name and our product name. Internal names start as something that describes the project/repo/tool. Then within 18 months the name no longer makes sense so we rename it to some random name - state names, lake names, presidents, mountains, etc. It's just a placeholder.
The public facing product name is a compromise of marketing, trademark, and what gets approved by the CEO. Even the company name might change in startup world. No joke: the startup next door had to change their name because it was too masculine, and they realized more than half their projected market was women.
If your name is "The Database Company", but at some point find you'd rather do Blockchain and then later AI, the name might be an obstacle.
If you call yourself "Gworp" in the first place, you'll have no such problem.
(Though in not sure if "Mt Gox" aka "Magic: The Gathering Online Exchange" would be a positive or negative example for that)
Would it be better if it was this:
> We’re using ConfigurationManager for configuration management, which feeds into CLI for the CLI, and then WebSocketHandler handles our WebSocket connections, PermissionManager manages permissions, all through JobQueue for our job queue
I think the author makes the opposite point of intended)
The most idiomatic name, lsp-mode, was taken by another package. Stallman wanted to find another name but no one seemed to care as much as he did. I think one name he suggested in its place at one point was "code-parse" or something like that.
But I do share his pain with onboarding when I joined Humungous Entertainment the tools or systems were called Sputm, Phlegm, Mucus, SPIT. There might have been a Bile. :-)
So at my last job, we called our monolith anubis. It always brought joy when someone asked for an explanation.
EDIT: I just noticed that the marketing angle is mentioned in the article.
I welcome Splorg, Chizzel, Rapunzel, Brap, Titoid, and Chungus - I don't care as long as it's good.
That's why you find most of software engineering department in Computer Science Faculty or School, not in the Faculty of Engineering.
And I am sure there are other "Bay Bridges" in the world too.
They can't all use the same name. If you want to build a better alternative to an existing solution, you need to choose a different name, this leads to names being arbitrary.
Just call it "subsonicfeishin" or something at least!
"Chatgpt... Mc... CODEX!"
It's nuts.
> Every obscure name is a transaction cost levied on every developer who encounters it.
It’s not a mental burden, it’s a cognitive tax. Moreover it’s a transaction cost? Levied on people? Which loads their RAM?
Where’s the simple everyday English?
> Name your library after what it does. Use compound terms. Embrace verbosity if necessary. http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.
- Starts with lowercase.
- Means nothing.
- Good player.
A descriptive name is terrible if you're slightly off. Or if the library gets repurposed. Or if the project doesn't turn out how you expected but it's still helpful. With everything going on, a nonsense name forces people to learn about it instead of having them guess at it from a three word description that might be misleading.
The author probably never had a project where something got named the oscilloscope-controller but there's no oscilloscope in sight, but we used to have one and then we tweaked a few things and now it runs something else and but the name was everywhere.
And all of these are abstract concepts. Getting data from point A to point B. FIFO? It's an acronym. Pipe? Doesn't really suggest it can buffer data. Buffer? Queue? Both sound like they might slow down data. Precise technical names would be good, but then the chances the purpose changes goes up!
Typical docs sentence:
> What does “keg-only” mean? It means the formula is installed only into the Cellar and is not linked into the default prefix.
App Store, Mail, Photos, Music, Books, Podcasts etc.
One area of the sciences does partly use names like this, and that is biology. Biologists do sometimes name a species after a famous person, as in the louse Strigiphilus garylarsoni:
I hope this goes no further.
For example Zola and Hugo, static site generators - great, unique words that has no other meaning to me but the generator. The only other Hugo I know is a character in Bob's Burgers. But choosing random dictionary words like Avocado or Spice or whatever makes it completely transparent against my existing knowledge and now I have the mental lookup issue the author describes.
The other day a HN user was commenting "NAT, aka IP masquerading... (proceeds to keep re-using the term)". IME no one in the industry says "IP masquerading" unless your entire org and vendors are on Linux. Just call it NAT, we know what you mean. This a Linuxism and should be avoided!
Let's hit up Britannica.com on the word:
> a party at which people wear masks and often costumes
> a way of appearing or behaving that is not true or real
> to pretend to be someone or something else
I guess? I guess we are "pretending to be the peer IP when actually we are the LAN IP". But to me it's just nonsense. It's capital T Translating one IP to another for the sake of routing, drop the weird social implications.
- Forth
- Grep
- CVS (I'm not an American but you can relate)
- Clang
Altough MS products can be as opaque if not more. And let's not talk about IBM...
I'm not sure how the author came to this conclusion.
At any rate, programmers aren't any worse about this than mathematicians. Just replace [fictional name] with some foreign word or philosophical term that's justified with the most insane mental gymnastics you've ever heard of. Given some historical native speaker of Latin, do you think they're going to know what a matrix is for? No, because the word means "uterus". There is no connection to "tabular shorthand of linear transformations."
I think it's clear the author is writing this to vent frustration, but I think they've misidentified the actual problem:
> http-request-validator is infinitely superior to “zephyr” when someone is scanning dependencies at 2 AM debugging a production incident.
My jaw hit the floor reading this. The idea there are people out there debugging codebases without knowing something as foundational as the dependencies is beyond absurd to me. That's insane and horrifying, overshadowing pretty much the entire blog post. Does anyone else live like this? How do you tolerate these conditions? Why would you tolerate these conditions?
- everything in interfaces should be useful, decorative icons are bad
- presentation slides should not use animations
- now fun name are forbidden too apparently
What the fuck?
> No chemist wakes up and decides to call it “Steve” because Steve is a funny name
Do you want to enter the discussion on how physicists named quarks?
Ummmmm...
https://en.wikipedia.org/wiki/List_of_chemical_compounds_wit...
"You sure 'bout dat? You sure 'bout dat?"
My favorite: there's a protein called "sonic hedgehog" that's essential to animal embryonic development. (All of the "hedgehog" family proteins would cause fruit flies to take on a spiky appearance when mutated, hence the name.) When chemists synthesized a drug that suppresses SHH protein's action, they named it "robotnikinin".
By far the worst aspect of the nerd ecosystem is the odd belief that pops up every so often that names should matter. In every ecosystem, there is usually some odd idea that it is only in their world that people abuse this.
Just skim through that list of things that are unexpectedly named after people. Sure, you can get upset about Shell's sort not having any relation to shells. Or Bloom's filter not having a phase where the data "blooms" into use. But you would have the same issue with French drains. Or how gaslighting has nothing to do with lighting things on fire using gas and the affect that will have.
Honestly, I think this would be a fun list to just keep going. Akin to the old Chuck Norris joke generators.
Really? Have you specced a microprocessor lately? Seen what pharmaceuticals are called? How polymer compound materials get named?
> (...) Every person who encounters your “fun” name pays a small tax. Across the industry, these taxes compound into significant waste
Devs who build FOSS utilities owe you, or the industry, absolutely nothing. As someone who lists Noam Chomsky under "Some works I recommend engaging with", you sure seem to think capitalists are entitled to people's free work, to the point where you start making demands.
Quickly: name the AVX2 instructions that the compiler emits for math calculations
For example, naming some application modules strictly after what they do is super tedious, and uses words that are already reserved, therefore creating ambiguous nomenclature. Maybe I have various sort of permissions in my system but naming that particular permission system some greek god name creates a clear and shared meaning across the team (both business and technical), and mind you that that's what communication is all about - a shared meaning. Nothing else.
P.S. (I'm deliberately not going into discussion about bad things with that approach)
I would not mind the command names whose etymology was complex or inspired, if the README files would do a better job of giving context and function. Even though I have a wide set of wheelhouses in computer systems, I frequently encounter README files that still leaves me saying "Huh?". I shouldn't have to google three levels down before I get a clue.
Uhm yeah. That's like saying "if stab myself to death now I can't die of dementia in old age!"
Edit: look, it's here! https://news.ycombinator.com/item?id=46237390
Me: slowly backs away in disgust
What does chef do? Garden? Pig? Burp?
Nonsense.
Laravel works better than Rails-but-PHP. Ruby on Rails beats Opinionated-One-Person-Stack-Using-Ruby and I'm fine with the name Ruby as well.
I shall name my next product larmn in honour of OP.
I disagree for public/open-source software, because: So many kinds of software actually have good names. Yes they use mythical names but with the similar function or relatedness.
Meanwhile, I agree for internal names, because: So many (legacy) code I worked with had terrible naming. This goes beyond only the names themselves but also their capitalization or consistency. I kid you not, in a $FAANG company I saw "SpidermanActivity" and "BatmanActivity" on a system that is used by Tier-1 services' on-calls.
> (Although this thing was not a Tier-1 service, it was not also completely Tier-2 either, as it was actively supporting operations of Tier-1 services, depending on the incident, a downtime could cause significant problems...)
Imagine you are trying to make sense of a large system, which has maybe tens of dependencies and as much of dependents, you are also trying to remember which API was Spiderman and how it related to the business at all...
More on the naming conventions, the horrible case of acronyms (which spans outside of software engineering) and PMs creating polls/surveys for "fun names for our new shiny thing that does X but we don't wanna call it that".
Going even lower-levels, engineers themselves are not careful. I had way too many CDK stacks named with not only varying dash vs underscore differences, but also with subtle "case-sensitivity" differences.
Each year, I am solving issues of Java devs' issues. Some of being "but it works on my machine" type of problems. And significant percentage of that is most developers use a Mac & macOS. Hence the filesystem is case-insensitive by default. But the deployment target & CI being a Linux, filesystem is case-sensitive. As you can see here, The camel-case combined with inattentiveness can simply cause many hours of waste.
> It's a plague.
Yes, there is an AI slop, but there is also human sloppiness too. I am quite happy with LLMs/GenAI that it is able to catch and capture these and less prone to make such sloppiness in the first place. (As it being a "predictive-text engine", next word suggestion is a clone of existing copy of historically occurring words)
At the same time, amount of "hallucinations" for various acronyms are staggering. Obviously I cannot expect otherwise. Even as a human, if I am missing the context, I would be either confused or plug-in something I already know...
This is better? Is this Highlander, there can only be one of each thing? What about variations of those tools... cman2? confman? cfigmgr? Naming projects, and hence tools, is often just as much about namespacing as meaning. There _will_ be more than one of most non-trivial tools/projects, and not every configuration manager can be called "confman" (if that's even really a "good" name").
And part of it _is_ connecting utility to an "appelation": calling "your MIT-licensed file parser with 45 GitHub stars" just "parser" practically gaurantees you'll never get that 50th star, because there are already a bunch of "parser" projects and there is no reason for someone to ever find yours.
"Each one demands tribute: a few seconds of mental processing to decode the semantic cipher. Those seconds accumulate into minutes and effort, then career-spanning mountains of wasted cognitive effort."
No they don't, because you're _not_ doing that processing every time. Just like "grep" makes perfect sense _now_ because you've used it forever, once you're working on a project then something like "cobra" immediately maps to "the cli library". It might take a secon the first couple times, but humans are good at this internalizing kind of abstraction, and programmers are damn amazing at it.
The unix tools example is really terrible. "I used grep to examine the confs in etc and then cat to combine them before processing with sed and awk and tarballed the output to be curl'ed to the webdav server." Those are only intuitive because you know them already. "sed" for "stream editor"? Come on, it's not called that because it's a good name. Why not strmed, or even streameditor?. Simple, actually intuitive. It's because 'sed' was the bare minimum to be a short as possible while being unique and just memorable enough. Awk is an even better counter-example to the article's claim: it's just names, makes no sense! Has literally _nothing_ to do with what it does.
"the Golden Gate Bridge tells you it spans the Golden Gate strait."
Umm, no it doesn't tell you that. Does the Brooklyn Bridge span the Brooklyn strait? George Washinton Bridge? Bridges are not exclusively named by that which they span, and software is not exclusively named after exactly what it does.
pascal, eiffel, ada, C, APL, dylan
C post increment
See sharp
- the purpose will change
Your "silicon-valley-bank-integrator" tool will eventually need to be updated to do something else.
Or your "login-page-config-service" tool may eventually do more than just logins.
Using gibberish or mythological names gives a nice memorable name that doesn't lead (or mislead) you to believe it does a particular thing which may or may not be correct anymore.
>Reserve the creative names for end-user products where branding matters. For infrastructure, tools, and libraries, choose clarity. Every time.
Ah yes the software I am giving away for free must go easy on the minds of the poor VCs and business drones who are extracting value from it.
> 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.
This happens every day. In every scientific field there is a technical name and then the name everyone remembers. Nobody will understand if I speak about ENSG00000164690, but if I say it's the Sonic HedgeHog gene then it starts to make sense, because funny names are memorable.
> awk (Aho, Weinberger, Kernighan; the creators’ initials)
I'd like to see anyone try to defend how using the creator's initials in a tool name describe its function. Unless you researched the tool's history, there is no way to know that.
Yet another "why the tools I use are the best and the tools you use suck", with a weird focus on naming instead of function.
Rule of thumb, disregard every post that uses the phrase "context switching"