This is the Californian Ideology in a blog post. The implication that title and intro mean to imply is working for companies that build products that are not evil and hostile to their users.
But the call to action is to.. embed logic in the programs to pluralize properly (in English).
It's possible to write evil software that pluralizes words. It's possible to write beneficial software that does not pluralize words. This blog post is about the color of the bikeshed next to the torment nexus.
I am baffled why you are inserting good and evil into this. He just seems to want to work at companies that value craft and attention to detail. It just like the jobs quote about the back of the furniture also being attractive.
I miss when Californian ideology was of the “information wants to be free” and “connecting the people of the world will end tyranny” variety :-( .
Something really changed after the first dotcom bubble. Maybe it was my own youthful naïveté (as someone living in Sacramento desperately wishing I lived in that much cooler city to the west). Maybe it was the last drops of that wave Hunter S Thompson talked about breaking.
What happened: the ideology came into contact with the broader world of unscrupulous actors and human weakness.
We really do have access to all the world's information to a first degree. We also have access to all the world's propaganda, advertising, trolling, and algorithmic optimization of content.
"Information wants to be free" was always a pretty marginal part of the California Ideology[0].
The main difference between now and thirty years ago, is that now they're only "anti-statist" when the state tries to control them personally. They're pro-state when it's being inflicted on their perceived enemies or underlings.
I was honestly expecting the link to be somebody's quixotic rant about software that does "good" in the world rather than serves ads and I was pleasantly surprised to see something I can actually relate to.
Ironically, I could see the author's logic being used as a justifcation to build more "evil" features:
> Talk to me like I’m used to. Be familiar, be approachable. I want to feel like you care about helping me. Not “me” as in “all the prospective 99,99,999 users”, but “me” specifically. Users shouldn’t feel like they’ve been dropped into a cookie cutter template - a cold, hard reminder that this is clunky, soulless machinery removed from their world.
In other words, the author wants a personalized experience. A personalized news feed. An experience that is tailored to them. (Isn't that what everyone is complaining ruined Facebook, insta, youtube, etc?)
I don't think that's what the author actually wants. I think it's just poor framing / unclear writing.
If the idea is "I want to work at a company that cares about its craft" -- the example they picked to illustrate that point is just odd. Whether or not a company uses a combined singular/plural form like "Uploading File(s)" is not a very good indicator of whether that company values its craft, IMO.
What I do, is have two different formats in the translation tokens.
As an example, this app[0], is currently only localized in English, but I still use tokens, whenever I do apps, so the base localization[1] has stuff like this:
1) You projected that anticipated focus into the title. Not wrongly. But I for example did not. My slant was more about innovation. The title doesn't inherently imply or contain either one.
2) The small, practical thing the post is actually about does address at least part of what you wanted to hear, because declaring "Loading 1 item(s)" IS hostile to users.
Some guy writes a whimsical blog post about wanting to work at a company that takes pride in their work and the top comment criticizes the blog post because they didn’t specify explicitly in their 300 word post that the company has to not be evil too.
Outside of engineers there is a whole raft of people on a team that should pick up and push back on this sort of copy problem at all phases of building a product.
Apart from people who just weren’t good, what I found in a few decades is that most people will pay attention to details if given the incentive and time.
What companies seem to want is developers who do everything perfectly despite having someone yelling at them to move fast. Also: the person yelling also doesn’t care about the details until someone else points it out to them.
It seems like a douchey post but it’s not. Just browsing the internet makes me regularly question how difficult it is keeping the tech industry full of people that give a shit. Software ate the world and along with it came a contingent that don’t care enough about it. The choppy first page load, the non-smooth scrolling, the ads janking in, shifting layout and content in unpredictable ways, and finally the bombarding of intrusive ads and popups where the dev didn’t even take a few minutes to construct a sensible UI compromise (yes, we need to show ads, but can we show the ads without anal fucking the user’s eyes? Yes possibly).
So yes, we have a real IDGAF issue in tech, and I can’t imagine this getting better because Gen Z all have a casual drug dealer “this just my side hustle” attitude, and Millennials will not a give a fuck because they are still pissed about the GFC and the cost of housing. The Leetcode people don’t give a fuck because they are burnt out on Leetcode and their entire identity is based on salary and very little to do with quality of their actual work.
There’s literally … and I mean this, there’s literally no one left to care.
They don't have intrusive ads because programmers "DGAF". They have intrusive ads because they need to juice their clickthrough metrics with dark patterns.
Same with all the bad performance. Sometimes this may be a mistake but almost always it's because the site is firing up 50 prerender tracking scripts.
The author is trying to imply that if everyone focused a little more on making the computer feel like your robot friend, the industry would quit producing shit software. But the reality is the industry creates shit software because it is running an ad-supported malware business model.
The essence of this post is about craftsmanship, value, and caring about what you're doing. It's really hard to put this into words. There's certainly a gradient and trade-offs to be made. In most businesses, the priority is to make money. This is not bad. Business owners deserve to make money for their efforts.
It's always been the case that "bean counters" will optimize to increase profits. If you want a superior product, you have to pay for it. Particle board furniture sold at Walmart certainly wont last nearly the same way as hand-crafted pieces by Gomer Bolstrood. The contrast is dramatic. Mass produced disposable products vs one-of-a-kind products built with a high attention to detail.
The idea of paying more for quality doesn't seem to apply to software. Maybe I'm romanticizing the past, but I believe it did once. I believe that the software developers of yore cared more about their craft than most of the ones employed today. I think they had to. If a product didn't sell, it was pulled from the shelves. It would be dropped by distributors.
Somewhere along the way it's become more important to prioritize minimal time to market, and minimal viable products. People who care about software quality still exist, but they are slowly being squeezed out by others who don't. Profit, growth, and market share have become more important than providing real value to users.
I think most big tech companies started with a tech centered culture and gradually moved towards a finance/PM centered culture, which makes sense, especially after they went IPO.
From what I recall, David Cutler was quoted in "Showstoppers" about DEC having an engineering culture when he joined but he got discontented after a few years (when his team shipped VMS) because it was too bloated.
Microsoft could be a bit different though. I remember reading from a book that Bill Gates wanted to have PMs control projects, which caused a lot of conflict. I do not remember the timeline, but it must be before Win NT.
So the best bet is to go in early, stay for 5-10 years until the environment starts to rot and you can exercise all of your options, profit, and then jump to the next. The more senior you are, the more control you have, the happier you are. David Cutler is a great example. He did stay in Microsoft but he managed to be a hand-on.
Similarly in software. When a software product is well crafted/engineered, it has less defects, it is easier to understand and modify, saving a lot of time and effort. I do not see that anymore. I see a lot of smart young engineers but they are managed in a way in which the craft doesn't matter and what matters is how many story points you do.
agreed. we interact with so many different types of software and I presume like me, we designate a confidence score of how things will work out because there's so many unknown quantities out there. Those little thoughts you have while an app/page is doing what it's doing, wondering whether it even works as it says in the first place.
I place value on grammar but appreciate in the web today that surely around half of English words in it are ESL (while ignoring AI). And that's fine, it's a human thing- not everyone was taught English or has known it a long time, or has dyslexia etc etc.
I guess in the end, allow end users to have full confidence in you in all ways possible.
outside of instiutions of granduer and programming greats like bell labs, eriksson, and so forth, no, programming has been TERRIBLE and has gotten a lot better.
Version control, documentation, language capabilities are all better than they were 10 or 20 years ago
Fewer people are writing horrible applications in VBx and Access, more people are writing things with good fundementals.
So - in many ways it's easier than ever to write "good" software.
The real world is full of tradeoffs and I’ve seen people try to get minutia like this correct in convoluted contexts which actually broke the core application logic.
Given the limited time we can spend on things, supporting proper plurality falls below some of my other UI priorities like proper accessibility settings.
I don’t think plurality is bad, just low in the stack rank of things that matter.
Every code path is an opportunity for a bug that escapes validation. Plus this particular example doesn't work with i18n. It would be more complicated in that case.
You'll have to look up the way i18n frameworks work, but no the "(s)" is not worse. It is far better because it's a simple string that the framework can substitute without embedded business logic trying to manipulate the individual characters in a way that only works in one language.
Yeah, I'm with you. I've worked on several i18n frameworks, including ones for AAA game titles at Microsoft.
You can make pluralization work but the "(s)" is going to tend to work better.
And localization isn't just an opportunity for development bugs, localizers get things wrong too. Some non-English speakers mentioned to me that some translations are so bad, it's better to use the English version anyways.
Huh? "(s)", itself, only works in one language! Other languages (and even English, sometimes) don't always pluralize by appending lettters to the end of words, so the parenthesized suffix thing very regularly doesn't even work.
And who exactly is talking about "embedding" business logic in the i18n framework? Every serious framework I've used has supported placeholders, so at the application level you just select between singular and plural form and then the translation framework can handle arranging the words.
e.g. `items.length == 1 ? _t("%d item", items.length) : _t("%d items", items.length)` and then within your translation files you can specify translations that rearrange the phrase, like "<noun> %d" for languages where they are reversed.
(though usually of course, you would use much longer phrases, so that the translation is done in-context.)
Even English. Counting the top 5 winners of a competition, there's 5th place, 4th place, 3th place, 2th place, and of course, the winner... first place!
I agree; there's probably higher value UI work, or something that should be more important to you above this. Examples: Have you ever run your app at 500% in high contrast with no mouse or with a screen reader? What's the happy path for most popular workflows? How many layers bury them with options and edge cases? What language support are you missing?
I’d like to think I do pluralization right, but sometimes it’s just that bit too time consuming because of an awkward internationalization issue or something so I don’t. There’s only so much polishing you can (or should) do before you ship. If I found that my team suddenly had a lot of time for cleaning up this kind of thing, I’d start worrying about job security tbh.
Proverbs become eerie the longer you live. Almost like, woah, that one sentence was actually universally true? Well hot damn!
Keep neglecting these small things and you’ll see the level of unconstrained shit you will have unleashed onto the world. With enough of us doing so, we can take part in the great collective festival of mass garbage accumulation (aggregate all the paper cuts). The few neurotic types that lament over this are actually, believe it or not, the closest thing to a sewage system for the accumulation. As of 2025, shame as a utility, is a weak tool.
The modern website needs to be in MOMA with no explanation, just a small title that reads ‘Despair’ (Perhaps even ‘Futility’, or the more modern ‘There was an attempt’).
A trivial, superficial fact is assumed to be indicative of a much more substantial concern. For Van Halen, the candy dish indicated adherence to contract terms; here, pluralization indicates the integrity and values of an entire company.
It’s a cute idea that suggests an easy way to understand something complex. But there’s no free lunch. If you want a free lunch, you’re asking to be taken for a ride.
Van Halen was playing giant stadium shows that were massive logistical and coordination challenges and used this contract language as a canary for more important aspects like the scafolding setup. If they didn't read the catering closely, did they also skim the electrical schematics? Their concerts were perfect scenarios for heavy-weight process, defined procedures and scientific management. A lot of software is punk rock DIY; get something of value out there asap and then iterate. If you don't release until your pluralization is perfect you've waited too long.
I think we're in agreement, just highlighting these are very different approaches to essentially management at different phases of the project lifecycle. Van Halen probably didn't have that rider in their contract at their first show.
This is the excuse Van Halen used much later after to explain his extreme princess behavior.
I have never bought it.
If you want to make sure the venue is set up right you probably need to send an electrician to check on it before your tour arrives. The M&M thing may show if the venue operator read your contract not if they bothered fulfilling the parts that would be expensive (upgrading a building's electrical is expensive, making an intern pick the brown M&Ms out is not).
It probably didn't even prove that the venue operator read your contract. More likely the first time Eddie stormed out after seeing a brown M&M word would get around to everyone that "Eddie will flip his shit if there's a brown M&M so get rid of them. Yes, Seriously."
> If they didn't read the catering closely, did they also skim the electrical schematics?
This is dumb pop-psych stuff, like the "make interview candidates wait then reject them if they don't know the other candidates' names" type hiring "tricks". It's barely different than judging someone based on their handshake grip strength, imo.
Perhaps these companies prioritized the work properly, and determined that electrical work and scaffolding- both things that could kill people- were more important than M&Ms.
> If you don't release until your pluralization is perfect you've waited too long.
But I put making sure the pluralization was perfect in there to see if you're the kind of people who pay attention to detail! ;P
> This is dumb pop-psych stuff, like the "make interview candidates wait then reject them if they don't know the other candidates' names" type hiring "tricks". It's barely different than judging someone based on their handshake grip strength, imo.
Wait, what?
How are these related? One thing is putting a canary clause in a contract between companies to check if they actually read all the clauses (which had to be followed due to technical requirements that could make a stage collapse, for example), and another is your example.
Why are people in this sub-thread (including the grand-parent that started it) try to read between the lines of what David Lee Roth said? It's pretty clear and a solid way of doing businesses. Could they be just lying to justify their rock-star attitude back in the day? I highly doubt so.
My sister has worked as the operations manager for a large concert venue for several years and she has some great stories about contract riders. She regularly needs clarification on whether she needs to provide what preposterous thing they ask for. I think Lady Gaga asked for a goat, which ended up being in there to verify she read the whole thing, so no goat procurement was necessary. However, Sharon Osbourne (i.e., Ozzy's wife) didn't want to see walls. My sister needed to have production hang up curtains everywhere in the dressing room. Some of these people have become completely detached from reality.
As a result of this, over the course of her career, my sister has accumulated the weirdest contact list I could imagine. If I needed a bouncy house, chainsaw juggler, Russian interpreter, and a blimp, she could probably set that up in 30 minutes without ever needing to search online.
Missed opportunity to procure a goat. When I’m doing project management like this, if I ever have a minute to come up for air between getting all the essentials in place, I will absolutely prioritize little things like that for my own amusement and, hopefully, that of the client. I would at least have gone as far as lining up a supplier, getting a quote, and letting the client know we’re locked and loaded with a goat if they really want to pull the trigger.
Not for me. Exccessive customer obsession puts me off as customer. Don't try to read too much into me. Don't try to sell too much. Don't try to please me too much. Don't think about me too much.
Instead, think about the stuff you are offering. Treat it as if you are building it for yourself, and not for selling. Build it the way your like most. Sound as if you don't care about selling. Be proud of it. Get off of the sales pitch and pleasing talk.
Stay equal with your customer regarding who should please whom. It's an exchange of value between equals. No need of one pleasing the other too much. Customer need not have the upper hand. They should be just as desperate to buy, as you are for selling.
If selling is seen as a win for the seller, then it should always be a loss for the buyer, which is not true. Once you stop seeing it as win, you will stop this overreaction.
I feel like I'd agree with your comment if it was in reply to an entirely different article.
As in: I agree with your sentiment and ideas. Out of context, you're bang on correct.
But I don't think paying attention to details (like pluralization) is an indication of obsession with the customer, at least not for me. It's about caring about the craft.
When I'm building something for my own use, I care about every aspect of it. I care about the unseen parts. I care about the process. It brings me satisfaction. And when I'm buying something, I like to know that the person who made it cared as much about their craft as I do.
I don't consider than pandering. It's respect: Respect for the craft, for the craftsperson, and for the end recipient/customer.
But maybe I missed something. What was it about the original post that felt like excessive customer obsession? Genuinely curious and open to being mistaken here.
"When I'm building something for my own use, I care about every aspect of it. I care about the unseen parts. I care about the process. It brings me satisfaction. And when I'm buying something, I like to know that the person who made it cared as much about their craft as I do.
I don't consider than pandering. It's respect: Respect for the craft, for the craftsperson, and for the end recipient/customer."
Sorry if my comment sounded out of context, but it is a very thin veil between craftmanship and salesmanship. Everything that you do to get the sale can also be seen as craftsmanship. The difference is about who is the user? Any feature that you put out just for the sake of pleasing someone should be an anti pattern. If your post is aligned with this, then I stand corrected
Btw, passion displayed in your post is great, but sometimes, it could mean excess for you and your team.
Full transparency: I make my living as a marketer. So it's entirely possible that I may not have the objectivity to tell the difference between craft and salesmanship.
But it's possible we're in agreement. So here's my take:
(1) If I'm trying to make something as good as possible, that's craftsmanship.
(2) If I'm adding features because I think it will help the product sell, I could see how that would be salesmanship. I don't think it's inherently wrong if it truly makes the product better, but it's dangerous territory, because the driving force isn't my own taste or expertise, but rather my perception of what people want. We've all seen great products turn to garbage because of this process going wayward.
(3) Even with the best of intentions, however, there is always a trade-off. Take carpentry for example. The more time I put into working on a cabinet, the better the cabinet may be. But the cost goes up too, because time is valuable. So a cabinet that is otherwise better in every way but costs 5X more should be at least 5X better in some way. I think what you're alluding to when you talk about excess, and please correct me if I'm misunderstanding you, is it's easy to spend so much time and money on a project that it becomes 5X more expensive but is only marginally better. For example, I'm a fan of traditionally-built furniture (in my neck of the woods, almost only offered by the Amish or Mennonite communities), but IKEA flat-packed furniture costs a fraction. Is it worth it? Sometimes it is, sometimes it's not. Depends on context, how I plan on using the furniture, how long I need it to last, how much money I have, etc.
Did that capture what you're saying? Or am I completely off track?
> Instead, think about the stuff you are offering.
This is exactly what the author is doing. Paying attention to detail. Not upselling you anything. He is not getting any direct ROI for doing that.
I recently hired a contractor to clean ducts in my house. He was really nice guy, while his partner was working, he chatted with me about how their carpet cleaning service could make my carpets look like new, and even pointed out a few spots in the kitchen where grout cleaning might help. He was a great salesperson and very personable but when they finished the duct cleaning, they left a bit of debris behind. It wasn’t a big deal, but was enough to make me forget all the upselling he did before. Just goes to show that a little attention to detail can make a big difference. Next time I might shop around or may hire them again only if they give me a much better price.
Holy moly, and I thought French (my mother tongue) was complicated due to conjugation. I'm fascinated by what possible context could call for this many variations on how you spell/pronounce a number.
Any chance you know of a good article on this? (I could ask ChatGPT, but I'm trying to let go of that crutch.)
I'm not a linguist so I can't send any articles that explain the origins of this mess. But here are actual examples of usage:
dwa ptaki (two birds)
dwoje ludzi (two persons)
dwie dziewczyny (two girls)
idę z dwiema dziewczynami (I'm walking with two girls)
dałem kwiaty dwom dziewczynom (I gave flowers to two girls)
kanapa dla dwojga (a sofa for two - gender unspecified)
dałem śniadanie dwojgu (I served breakfast for two others)
dwójka to słaba ocena (two is a poor grade)
dwie dwójki to razem czwórka (two twos are four altogether)
dostałem dwójkę z Fizyki (I got a two in physics)
z dwójką przyjaciół poszliśmy do klubu (we went to the club with two friends)
w autobusie dwójce siedział pijany facet (there was a drunk fella on bus number two)
O, dwójko, nie wracaj już do mojego dziennika (Oh, two, don’t come back to my gradebook again)
Of course I don't consciously think about when to use the right conjugation. I just know it by heart and it's second nature but I can only give coherent rules to some of them.
> I'm not a linguist so I can't send any articles that explain the origins of this mess.
It's probably because Polish, unlike English and most Western European languages, has a case system (where nouns are modified to indicate their function, i.e subject, object, instrument, etc).
That's a pretty common feature in grammatically conservative Indo-European languages. Other living Indo-European languages, like Lithuanian, are even more conservative and have preserved nearly the entire case system of their ancestor.
Same argument applies. You, as the developer, always know in what context the text appears. Whether it's "dwa zdjęcia przesłane" or "dodano tagi do dwóch zdjęć".
As a child in the 80s I read a programming book (can't remember the name anymore unfortunately) where the reader was encouraged to write software that is always friendly and human when it comes to communicating with the user. For example, 'Please input a number:' instead of 'Input a number:'. But also exactly the thing the writer talks about in the article; do not be lazy when it comes to pluralization.
I get nostalgic remembering that era in computing.
When you interacted with a 'computer' once or twice a week, perhaps... seeing "please" is ... neat? A 'wow' factor ("wow! It knows English!")?
Peppering input fields and forms and folksy welcoming language scattered thoughout might be useful now and then, but for systems where people are using it repeatedly hourly/daily/weekly... it's (at best) clutter and noise.
The article makes sense for me.
I see it like the broken windows policy of software development. If you allow sloppiness in the small places, the places where you allow it will grow, until your code base is riddled with it. The fight for code quality is also a fight against damaging bugs and against exploitable vulnerabilities.
One big problem with the fight is that industry is incentivized to cut corners. '(Fast, Cheap, Good)..pick two' often results in managers picking fast and cheap. In some ways,they seem legally obligated to fast and cheap due to fiduciary responsibility to the stockholders. That's only if you look at the potential profit and risks from a very short term. Alas, that is what most of the world's businesses do at the moment. To paraphrase Dom from the Fast and the Furious, "We live our lives one business quarter at a time". Eventually Dom discovers the futility of that during the course of the series. Hopefully we will too, before we crash.
Glad the snippet is == 1, this problem drives me extra insane when it doesn't handle the zero case. Not only has my upload failed for some mysterious reason, I have successfully uploaded zero item!
Man I'm so far away from being concerned about this...just like, we still need to fix duplicate icons that mean different things, phrases like "Are you sure to delete?", mis-aligned text/inputs EVERYWHERE...
If this is your biggest concern at a company (regarding the UI at least), you are miles ahead of us. Congrats
For non-technical users, the user interface is the program. To them, there's nothing beneath the shell. My last boss didn't like Macs because his PowerPoint presentations rendered differently on them compared to Windows. There are millions of real people with consequential positions in important organisations who think like this.
Getting your program to render the same on different platforms takes a lot of work the user will never see, and that goes double if you actually want it to behave the same. There are some very deep problems you have to work through, like what behaving the same and rendering the same even mean. Same window decorations? Same menu layout? Same dialog boxes? How are you doing font rendering? How much do you embrace platform defaults versus steamrolling over them in the name of uniformity?
>You can’t have your UI disrespecting [...] and I care too much!
I think it just highlights that people care about different things. I've seen the "(s)" placeholder for decades in computer UIs and it's never bothered me. On the other hand, blog article characteristics that bug me are titles consisting of a non-descriptive teaser with ellipsis (...) that doesn't describe the main point and not having a publication date at the top.
But I'm not going to complain about blog articles that "disrespect" readers that way because apparently, it's ok with some writers and some readers.
Likewise, someone using the Comic Sans font enrages some folks but it never bothers me. On the other hand, displaying big numbers without any thousands separators is very annoying.
I code a lot of utilities for myself and I always avoid the "(s)" problem by re-ordering the text. Instead of:
Uploading 3 image(s)
The UI is:
Number of images uploaded: 3
That looks ok for all quantities and doesn't require tedious ternary logic everywhere :
Number of images uploaded: 0
Number of images uploaded: 1
Number of images uploaded: 2
The plural version does not and as you pointed out, there's a solution in English that works. But, I'm curious if there are any languages were that type of solution doesn't work.
“이/가” is the Korean version of this. It depends on the sound of the word that precedes.
I still remember seeing it when I first started using Windows 95. As a kid, I was amused that it didn’t know which one to use. Really, I didn’t even know that I was making that choice (and couldn’t say what the rule was).
So: The author wants to work for a company with resources.
Unfortunately, details take time and time takes money.
For a business's survival, the company's relative positioning in the market, access to sales and marketing channels, financing are much stronger concerns.
I literally couldn't care less. You can call it '1th of April' for all that i care if the actual functionality you offer is clean and fast I'll gladly accept!
I get where the author is coming from, but having grown up in the 80's, I always thought "1 item(s)" looked slightly _more_ professional since it followed the way printed documents were usually produced.
I'd say there are about 100 thousand variables that correlate more closely with if a company is a good place to work at than pluralizing some frontend stuff.
I love projects where I can "sweat the details" and refine not just wording but typography, padding, visual alignment, layout, edge cases, colors, workflow, etc. And where the back-end, QA, doc teams are similarly able to hone their work to perfection.
But I know that this isn't always Pareto optimal. Sometimes your user, customer, and business are better off if you swallow your pride and deliver an imperfect solution now instead of a better solution in the future, and knowing when and where to strike that balance is a sign of maturity, not disrespect.
As a software product manager, UX is one of the areas I’m inclined to spend more time and money than strictly necessary. Details and polish matter. Users can tell the difference, even if it’s subconsciously.
I know this is besides the point but translation libraries are perfect for this even if you aren't creating a multilingual site. You define your singular/plural forms in one place.
There's an old proverb that the best time to add i18n support is today. It takes a bit of extra effort to build new stuff with it in mind, but that little bit of extra effort today goes a long way (and builds good habits) versus the large projects to add it tomorrow when it becomes tech debt and needs a full audit of every possible way a string might be formed for display to a user, because you just got a client/customer who needs it tomorrow.
I wouldn't want to be part of a company that uses a ternary to make an English only i18n thing. Please use a proper i18n framework that supports proper pluralization, as the Polish example highlights.
Keep in mind English is a super weird language, it's three languages in a trenchcoat with stuff like 'beef' coming from French and 'meat' from Germanic.
I feel the same way about wasteful software. I've spent most of my career working for people who would rather I sit idle and do nothing at all than "waste" valuable programmer time trying to optimize our software. We have websites that load slowly, downloading gigabytes of unused and useless scripts that nobody has the courage to remove because nobody remembers why it was put there in the first place.
There's so, so many different reasons in the real world as to why/how details like that end up in front of the customer.
Is OP happy to work for Satan as long as he appears grammatically accurate, polite and concise?
Alternatively, OP is a nightmare to work with because every single other role in the company has to do things in exactly the way the engineers want, otherwise they're careless morons.
”Nontheistic Satanism, as exemplified by LaVeyan Satanism (practiced by the Church of Satan and First Satanic Church) and The Satanic Temple, holds that Satan does not exist as a literal anthropomorphic entity, but rather as a symbol of a cosmos which Satanists perceive to be permeated and motivated by a force that has been given many names by humans over the course of time. In this religion, "Satan" is not viewed or depicted as a hubristic, irrational, and fraudulent creature, but rather is revered with Prometheus-like attributes, symbolizing liberty and individual empowerment. To adherents, he also serves as a conceptual framework and an external metaphorical projection of the Satanist's highest personal potential.”
You see, Satan is not just a biblical figure, but also the average IT company.
With such a clear vision of the "company I want to be a part of", maybe you should walk the walk and establish such a company? Perhaps then you will find out that what actually floats to the top is what we've got, rather than what we want. Or perhaps you will be the next GOAT.
I didn't mean that to be demeaning at all. I seriously urge you to implement that vision even as a bootstrapped side project to your main gig. If you want to "build something (you're) proud to sign (your) name on", chances are whatever you build will display that authenticity, which will either resonate with customers or not. People love authenticity, perhaps customers not so much. The market can be brutal and just because something is "better" or more genuine does not necessarily equate to revenue. You have already started a big part of your story, explaining why your vision is "better". Go ahead and implement something incorporating that vision, explaining its advantages to the market. At the end of the day, you will at the very least feel true to your self. A job may not give you that.
While I don’t think proper pluralization is indicative of anything outside of real world time constraints, I am a fan of these kinds of tacit signals.
Last week, my wife and I toured a school for our daughter. The school gave us these pretty notebooks with a blackwing pencil, saying that they “take writing seriously here.” I noticed that the students, however, did not use blackwings but cheap low quality yellow pencils. This signal prompted me to pay closer attention, and I found half a dozen things that affirmed the bad feeling I had about the place.
It’s a simple rule, but in the era where everyone is trying to sell me, I use Bill Hamilton’s Say Mean Do rule from his “Saints and Psychopaths” about finding real spiritual mentors. Broadly: saints say what they mean and do what they say. Unfortunately it’s probably just as hard to find tech companies who are honest as it is to find a true spiritual mentor. B2B SaaS sales cycle is usually just checkbox hunting and CYA.
> a cold, hard reminder that this is clunky, soulless machinery
This is where my view differs fundamentally. If I get another "let's set up your account!" text in a soulless, cold software, I am throwing my laptop out the next window.
It's a machine. It needs to communicate information to me. A large part of the AI boom is that we can now pretend that it's not a machine by using enough compute power to probably solve every problem ever, just to say "Of course -- you're so right!".
We made sure to write software so inefficiently and badly that you can barely tell how powerful modern computers are.
Just another little layer, one more branch, one more step between the user and the hardware -- just buy more ram. Buy a better CPU. They now have double the cores, you hear?
Always thought you kinda have to do this to create a product that can even be translated considering languages like French where plurals take many forms.
That was my first thought as well, but interfaces that take care of pluralization with an i18n framework can handle all of these.
It just takes longer and is at the expense of another feature. In truth, it mostly takes more skill - once you have that skill, it's another 5 minutes. There are a few edge cases, but you largely have the necessary context to translate a string. You have to translate the string in its entirety instead of relying on composition of translated chunks. (This is already best practice.)
This is the Californian Ideology in a blog post. The implication that title and intro mean to imply is working for companies that build products that are not evil and hostile to their users.
But the call to action is to.. embed logic in the programs to pluralize properly (in English).
It's possible to write evil software that pluralizes words. It's possible to write beneficial software that does not pluralize words. This blog post is about the color of the bikeshed next to the torment nexus.
I am baffled why you are inserting good and evil into this. He just seems to want to work at companies that value craft and attention to detail. It just like the jobs quote about the back of the furniture also being attractive.
Ironically, your comment probably exemplifies the “Californian Ideology” the parent comment is criticizing.
“Why would you consider good or evil when talking about how you want to spend the overwhelming majority of your productive life”.
I miss when Californian ideology was of the “information wants to be free” and “connecting the people of the world will end tyranny” variety :-( .
Something really changed after the first dotcom bubble. Maybe it was my own youthful naïveté (as someone living in Sacramento desperately wishing I lived in that much cooler city to the west). Maybe it was the last drops of that wave Hunter S Thompson talked about breaking.
What happened: the ideology came into contact with the broader world of unscrupulous actors and human weakness.
We really do have access to all the world's information to a first degree. We also have access to all the world's propaganda, advertising, trolling, and algorithmic optimization of content.
"Information wants to be free" was always a pretty marginal part of the California Ideology[0].
The main difference between now and thirty years ago, is that now they're only "anti-statist" when the state tries to control them personally. They're pro-state when it's being inflicted on their perceived enemies or underlings.
[0] https://en.wikipedia.org/wiki/The_Californian_Ideology
Right? Why would anyone muddy work with morality in this day and age? Morality is so 2010s.
I was honestly expecting the link to be somebody's quixotic rant about software that does "good" in the world rather than serves ads and I was pleasantly surprised to see something I can actually relate to.
Haha trust me, I have thoughts on that too!
Ironically, I could see the author's logic being used as a justifcation to build more "evil" features:
> Talk to me like I’m used to. Be familiar, be approachable. I want to feel like you care about helping me. Not “me” as in “all the prospective 99,99,999 users”, but “me” specifically. Users shouldn’t feel like they’ve been dropped into a cookie cutter template - a cold, hard reminder that this is clunky, soulless machinery removed from their world.
In other words, the author wants a personalized experience. A personalized news feed. An experience that is tailored to them. (Isn't that what everyone is complaining ruined Facebook, insta, youtube, etc?)
I don't think that's what the author actually wants. I think it's just poor framing / unclear writing.
If the idea is "I want to work at a company that cares about its craft" -- the example they picked to illustrate that point is just odd. Whether or not a company uses a combined singular/plural form like "Uploading File(s)" is not a very good indicator of whether that company values its craft, IMO.
Personalization != using appropriate common language to express what is happening to the user.
What I do, is have two different formats in the translation tokens.
As an example, this app[0], is currently only localized in English, but I still use tokens, whenever I do apps, so the base localization[1] has stuff like this:
Which is actually composed in this dependency[2].It's not perfect, but is pretty flexible.
Silly stuff, I know, and the app is not exactly a viral sensation, but the folks that use it, like it.
[0] https://apps.apple.com/us/app/nacc/id452299196
[1] https://github.com/LittleGreenViper/NACC/blob/master/Sources...
[2] https://github.com/LittleGreenViper/LGV_UICleantime/blob/mas...
1) You projected that anticipated focus into the title. Not wrongly. But I for example did not. My slant was more about innovation. The title doesn't inherently imply or contain either one.
2) The small, practical thing the post is actually about does address at least part of what you wanted to hear, because declaring "Loading 1 item(s)" IS hostile to users.
I read this comment in Zizek, complete with cocaine sniffles and wild hand gestures. 10/10 would recommend.
(author) I can assure you my intentions were much less sinister (and simpler ;))
Some guy writes a whimsical blog post about wanting to work at a company that takes pride in their work and the top comment criticizes the blog post because they didn’t specify explicitly in their 300 word post that the company has to not be evil too.
Jesus, we’re fucked aren’t we?
We want to hire engineers who really pay attention to details and great product experience but it’s quite rare in practice. Hiring is super hard.
Just checked your profile out. Turns out I've interacted with Umesh on LinkedIn before on Runnable.
Small world. Nice work, all the best!
Outside of engineers there is a whole raft of people on a team that should pick up and push back on this sort of copy problem at all phases of building a product.
holds hand up as one of those people
high fives ;)
Apart from people who just weren’t good, what I found in a few decades is that most people will pay attention to details if given the incentive and time.
What companies seem to want is developers who do everything perfectly despite having someone yelling at them to move fast. Also: the person yelling also doesn’t care about the details until someone else points it out to them.
There's no good or evil here.
Have attention to quality. Do whatever it is that you're doing well.
It seems like a douchey post but it’s not. Just browsing the internet makes me regularly question how difficult it is keeping the tech industry full of people that give a shit. Software ate the world and along with it came a contingent that don’t care enough about it. The choppy first page load, the non-smooth scrolling, the ads janking in, shifting layout and content in unpredictable ways, and finally the bombarding of intrusive ads and popups where the dev didn’t even take a few minutes to construct a sensible UI compromise (yes, we need to show ads, but can we show the ads without anal fucking the user’s eyes? Yes possibly).
So yes, we have a real IDGAF issue in tech, and I can’t imagine this getting better because Gen Z all have a casual drug dealer “this just my side hustle” attitude, and Millennials will not a give a fuck because they are still pissed about the GFC and the cost of housing. The Leetcode people don’t give a fuck because they are burnt out on Leetcode and their entire identity is based on salary and very little to do with quality of their actual work.
There’s literally … and I mean this, there’s literally no one left to care.
They don't have intrusive ads because programmers "DGAF". They have intrusive ads because they need to juice their clickthrough metrics with dark patterns.
Same with all the bad performance. Sometimes this may be a mistake but almost always it's because the site is firing up 50 prerender tracking scripts.
The author is trying to imply that if everyone focused a little more on making the computer feel like your robot friend, the industry would quit producing shit software. But the reality is the industry creates shit software because it is running an ad-supported malware business model.
The essence of this post is about craftsmanship, value, and caring about what you're doing. It's really hard to put this into words. There's certainly a gradient and trade-offs to be made. In most businesses, the priority is to make money. This is not bad. Business owners deserve to make money for their efforts.
It's always been the case that "bean counters" will optimize to increase profits. If you want a superior product, you have to pay for it. Particle board furniture sold at Walmart certainly wont last nearly the same way as hand-crafted pieces by Gomer Bolstrood. The contrast is dramatic. Mass produced disposable products vs one-of-a-kind products built with a high attention to detail.
The idea of paying more for quality doesn't seem to apply to software. Maybe I'm romanticizing the past, but I believe it did once. I believe that the software developers of yore cared more about their craft than most of the ones employed today. I think they had to. If a product didn't sell, it was pulled from the shelves. It would be dropped by distributors.
Somewhere along the way it's become more important to prioritize minimal time to market, and minimal viable products. People who care about software quality still exist, but they are slowly being squeezed out by others who don't. Profit, growth, and market share have become more important than providing real value to users.
I think most big tech companies started with a tech centered culture and gradually moved towards a finance/PM centered culture, which makes sense, especially after they went IPO.
From what I recall, David Cutler was quoted in "Showstoppers" about DEC having an engineering culture when he joined but he got discontented after a few years (when his team shipped VMS) because it was too bloated.
Microsoft could be a bit different though. I remember reading from a book that Bill Gates wanted to have PMs control projects, which caused a lot of conflict. I do not remember the timeline, but it must be before Win NT.
So the best bet is to go in early, stay for 5-10 years until the environment starts to rot and you can exercise all of your options, profit, and then jump to the next. The more senior you are, the more control you have, the happier you are. David Cutler is a great example. He did stay in Microsoft but he managed to be a hand-on.
"Quality is Free" was repeated over and over by my college professor back in the 80s. I guess he was fan if this guy. https://archive.org/details/qualityisfree00cros.
Similarly in software. When a software product is well crafted/engineered, it has less defects, it is easier to understand and modify, saving a lot of time and effort. I do not see that anymore. I see a lot of smart young engineers but they are managed in a way in which the craft doesn't matter and what matters is how many story points you do.
agreed. we interact with so many different types of software and I presume like me, we designate a confidence score of how things will work out because there's so many unknown quantities out there. Those little thoughts you have while an app/page is doing what it's doing, wondering whether it even works as it says in the first place.
I place value on grammar but appreciate in the web today that surely around half of English words in it are ESL (while ignoring AI). And that's fine, it's a human thing- not everyone was taught English or has known it a long time, or has dyslexia etc etc.
I guess in the end, allow end users to have full confidence in you in all ways possible.
Said better than I could. Thank you!
outside of instiutions of granduer and programming greats like bell labs, eriksson, and so forth, no, programming has been TERRIBLE and has gotten a lot better.
Version control, documentation, language capabilities are all better than they were 10 or 20 years ago
Fewer people are writing horrible applications in VBx and Access, more people are writing things with good fundementals.
So - in many ways it's easier than ever to write "good" software.
I’d say overreaction.
The real world is full of tradeoffs and I’ve seen people try to get minutia like this correct in convoluted contexts which actually broke the core application logic.
Given the limited time we can spend on things, supporting proper plurality falls below some of my other UI priorities like proper accessibility settings.
I don’t think plurality is bad, just low in the stack rank of things that matter.
If pluralisation of a status message in the UI is breaking core application logic then you've got bigger problems than the pluralisation code.
Every code path is an opportunity for a bug that escapes validation. Plus this particular example doesn't work with i18n. It would be more complicated in that case.
The (s) alternative that the article is arguing against is even worse for i18n, so what's your point?
You'll have to look up the way i18n frameworks work, but no the "(s)" is not worse. It is far better because it's a simple string that the framework can substitute without embedded business logic trying to manipulate the individual characters in a way that only works in one language.
Yeah, I'm with you. I've worked on several i18n frameworks, including ones for AAA game titles at Microsoft.
You can make pluralization work but the "(s)" is going to tend to work better.
And localization isn't just an opportunity for development bugs, localizers get things wrong too. Some non-English speakers mentioned to me that some translations are so bad, it's better to use the English version anyways.
Huh? "(s)", itself, only works in one language! Other languages (and even English, sometimes) don't always pluralize by appending lettters to the end of words, so the parenthesized suffix thing very regularly doesn't even work.
And who exactly is talking about "embedding" business logic in the i18n framework? Every serious framework I've used has supported placeholders, so at the application level you just select between singular and plural form and then the translation framework can handle arranging the words.
e.g. `items.length == 1 ? _t("%d item", items.length) : _t("%d items", items.length)` and then within your translation files you can specify translations that rearrange the phrase, like "<noun> %d" for languages where they are reversed.
(though usually of course, you would use much longer phrases, so that the translation is done in-context.)
Many languages have very complicated pluralization rules. For example, Russian has different plural forms for numbers ending in 2.
That doesn't prevent a good translation framework from working properly, but it proves why the sample code in your example & the OP would not work.
https://www.unicode.org/cldr/charts/43/supplemental/language...
Even English. Counting the top 5 winners of a competition, there's 5th place, 4th place, 3th place, 2th place, and of course, the winner... first place!
No, wait.
Your example is still hard-coding just the two plural categories of English "one" and "other".
These days many i18n frameworks do need to embed some business logic, even if it is mostly fun things like the CLDR plural categories: https://www.unicode.org/cldr/charts/48/supplemental/language...
Mozilla's Fluent, for example is designed for maximal i18n support of plural selectors and other such things i18n needs: https://projectfluent.org/
Especially once you get into i18n this becomes increasingly more complex for various reasons like different formats for translation programs etc.
I agree; there's probably higher value UI work, or something that should be more important to you above this. Examples: Have you ever run your app at 500% in high contrast with no mouse or with a screen reader? What's the happy path for most popular workflows? How many layers bury them with options and edge cases? What language support are you missing?
I’d like to think I do pluralization right, but sometimes it’s just that bit too time consuming because of an awkward internationalization issue or something so I don’t. There’s only so much polishing you can (or should) do before you ship. If I found that my team suddenly had a lot of time for cleaning up this kind of thing, I’d start worrying about job security tbh.
Sure, not every edge case deserves top billing, but when the little things stack up, they subtly signal whether anyone cared. It's a vibe thing
Death by a thousand paper cuts
Proverbs become eerie the longer you live. Almost like, woah, that one sentence was actually universally true? Well hot damn!
Keep neglecting these small things and you’ll see the level of unconstrained shit you will have unleashed onto the world. With enough of us doing so, we can take part in the great collective festival of mass garbage accumulation (aggregate all the paper cuts). The few neurotic types that lament over this are actually, believe it or not, the closest thing to a sewage system for the accumulation. As of 2025, shame as a utility, is a weak tool.
The modern website needs to be in MOMA with no explanation, just a small title that reads ‘Despair’ (Perhaps even ‘Futility’, or the more modern ‘There was an attempt’).
"As of 2025, shame as a utility, is a weak tool"
This is going on a t-shirt
This is the brown m&m theory. https://www.smithsonianmag.com/arts-culture/why-did-van-hale...
A trivial, superficial fact is assumed to be indicative of a much more substantial concern. For Van Halen, the candy dish indicated adherence to contract terms; here, pluralization indicates the integrity and values of an entire company.
It’s a cute idea that suggests an easy way to understand something complex. But there’s no free lunch. If you want a free lunch, you’re asking to be taken for a ride.
Van Halen was playing giant stadium shows that were massive logistical and coordination challenges and used this contract language as a canary for more important aspects like the scafolding setup. If they didn't read the catering closely, did they also skim the electrical schematics? Their concerts were perfect scenarios for heavy-weight process, defined procedures and scientific management. A lot of software is punk rock DIY; get something of value out there asap and then iterate. If you don't release until your pluralization is perfect you've waited too long.
I think we're in agreement, just highlighting these are very different approaches to essentially management at different phases of the project lifecycle. Van Halen probably didn't have that rider in their contract at their first show.
This is the excuse Van Halen used much later after to explain his extreme princess behavior.
I have never bought it.
If you want to make sure the venue is set up right you probably need to send an electrician to check on it before your tour arrives. The M&M thing may show if the venue operator read your contract not if they bothered fulfilling the parts that would be expensive (upgrading a building's electrical is expensive, making an intern pick the brown M&Ms out is not).
It probably didn't even prove that the venue operator read your contract. More likely the first time Eddie stormed out after seeing a brown M&M word would get around to everyone that "Eddie will flip his shit if there's a brown M&M so get rid of them. Yes, Seriously."
> If they didn't read the catering closely, did they also skim the electrical schematics?
This is dumb pop-psych stuff, like the "make interview candidates wait then reject them if they don't know the other candidates' names" type hiring "tricks". It's barely different than judging someone based on their handshake grip strength, imo.
Perhaps these companies prioritized the work properly, and determined that electrical work and scaffolding- both things that could kill people- were more important than M&Ms.
> If you don't release until your pluralization is perfect you've waited too long.
But I put making sure the pluralization was perfect in there to see if you're the kind of people who pay attention to detail! ;P
> This is dumb pop-psych stuff, like the "make interview candidates wait then reject them if they don't know the other candidates' names" type hiring "tricks". It's barely different than judging someone based on their handshake grip strength, imo.
Wait, what? How are these related? One thing is putting a canary clause in a contract between companies to check if they actually read all the clauses (which had to be followed due to technical requirements that could make a stage collapse, for example), and another is your example.
Why are people in this sub-thread (including the grand-parent that started it) try to read between the lines of what David Lee Roth said? It's pretty clear and a solid way of doing businesses. Could they be just lying to justify their rock-star attitude back in the day? I highly doubt so.
My sister has worked as the operations manager for a large concert venue for several years and she has some great stories about contract riders. She regularly needs clarification on whether she needs to provide what preposterous thing they ask for. I think Lady Gaga asked for a goat, which ended up being in there to verify she read the whole thing, so no goat procurement was necessary. However, Sharon Osbourne (i.e., Ozzy's wife) didn't want to see walls. My sister needed to have production hang up curtains everywhere in the dressing room. Some of these people have become completely detached from reality.
As a result of this, over the course of her career, my sister has accumulated the weirdest contact list I could imagine. If I needed a bouncy house, chainsaw juggler, Russian interpreter, and a blimp, she could probably set that up in 30 minutes without ever needing to search online.
Missed opportunity to procure a goat. When I’m doing project management like this, if I ever have a minute to come up for air between getting all the essentials in place, I will absolutely prioritize little things like that for my own amusement and, hopefully, that of the client. I would at least have gone as far as lining up a supplier, getting a quote, and letting the client know we’re locked and loaded with a goat if they really want to pull the trigger.
Not for me. Exccessive customer obsession puts me off as customer. Don't try to read too much into me. Don't try to sell too much. Don't try to please me too much. Don't think about me too much.
Instead, think about the stuff you are offering. Treat it as if you are building it for yourself, and not for selling. Build it the way your like most. Sound as if you don't care about selling. Be proud of it. Get off of the sales pitch and pleasing talk.
Stay equal with your customer regarding who should please whom. It's an exchange of value between equals. No need of one pleasing the other too much. Customer need not have the upper hand. They should be just as desperate to buy, as you are for selling.
If selling is seen as a win for the seller, then it should always be a loss for the buyer, which is not true. Once you stop seeing it as win, you will stop this overreaction.
I feel like I'd agree with your comment if it was in reply to an entirely different article.
As in: I agree with your sentiment and ideas. Out of context, you're bang on correct.
But I don't think paying attention to details (like pluralization) is an indication of obsession with the customer, at least not for me. It's about caring about the craft.
When I'm building something for my own use, I care about every aspect of it. I care about the unseen parts. I care about the process. It brings me satisfaction. And when I'm buying something, I like to know that the person who made it cared as much about their craft as I do.
I don't consider than pandering. It's respect: Respect for the craft, for the craftsperson, and for the end recipient/customer.
But maybe I missed something. What was it about the original post that felt like excessive customer obsession? Genuinely curious and open to being mistaken here.
"When I'm building something for my own use, I care about every aspect of it. I care about the unseen parts. I care about the process. It brings me satisfaction. And when I'm buying something, I like to know that the person who made it cared as much about their craft as I do.
I don't consider than pandering. It's respect: Respect for the craft, for the craftsperson, and for the end recipient/customer."
This was my intention. Thank you!
Sorry if my comment sounded out of context, but it is a very thin veil between craftmanship and salesmanship. Everything that you do to get the sale can also be seen as craftsmanship. The difference is about who is the user? Any feature that you put out just for the sake of pleasing someone should be an anti pattern. If your post is aligned with this, then I stand corrected
Btw, passion displayed in your post is great, but sometimes, it could mean excess for you and your team.
Full transparency: I make my living as a marketer. So it's entirely possible that I may not have the objectivity to tell the difference between craft and salesmanship.
But it's possible we're in agreement. So here's my take:
(1) If I'm trying to make something as good as possible, that's craftsmanship.
(2) If I'm adding features because I think it will help the product sell, I could see how that would be salesmanship. I don't think it's inherently wrong if it truly makes the product better, but it's dangerous territory, because the driving force isn't my own taste or expertise, but rather my perception of what people want. We've all seen great products turn to garbage because of this process going wayward.
(3) Even with the best of intentions, however, there is always a trade-off. Take carpentry for example. The more time I put into working on a cabinet, the better the cabinet may be. But the cost goes up too, because time is valuable. So a cabinet that is otherwise better in every way but costs 5X more should be at least 5X better in some way. I think what you're alluding to when you talk about excess, and please correct me if I'm misunderstanding you, is it's easy to spend so much time and money on a project that it becomes 5X more expensive but is only marginally better. For example, I'm a fan of traditionally-built furniture (in my neck of the woods, almost only offered by the Amish or Mennonite communities), but IKEA flat-packed furniture costs a fraction. Is it worth it? Sometimes it is, sometimes it's not. Depends on context, how I plan on using the furniture, how long I need it to last, how much money I have, etc.
Did that capture what you're saying? Or am I completely off track?
> Instead, think about the stuff you are offering.
This is exactly what the author is doing. Paying attention to detail. Not upselling you anything. He is not getting any direct ROI for doing that.
I recently hired a contractor to clean ducts in my house. He was really nice guy, while his partner was working, he chatted with me about how their carpet cleaning service could make my carpets look like new, and even pointed out a few spots in the kitchen where grout cleaning might help. He was a great salesperson and very personable but when they finished the duct cleaning, they left a bit of debris behind. It wasn’t a big deal, but was enough to make me forget all the upselling he did before. Just goes to show that a little attention to detail can make a big difference. Next time I might shop around or may hire them again only if they give me a much better price.
Still, I think the original article was less about salesmanship and more about craftsmanship
Number "two" in Polish (depending on context): dwa, dwoje, dwie, dwóch, dwiema, dwom, dwojga, dwojgu, dwójka, dwójki, dwójkę, dwójką, dwójce, dwójko
So that's just my mother tongue. It think your problem is a bit more complex than (s).
this post is 30+ years old and demonstrates the naïveté of the OP
https://perldoc.perl.org/Locale::Maketext::TPJ13#A-Localizat...
Holy moly, and I thought French (my mother tongue) was complicated due to conjugation. I'm fascinated by what possible context could call for this many variations on how you spell/pronounce a number.
Any chance you know of a good article on this? (I could ask ChatGPT, but I'm trying to let go of that crutch.)
I'm not a linguist so I can't send any articles that explain the origins of this mess. But here are actual examples of usage:
dwa ptaki (two birds)
dwoje ludzi (two persons)
dwie dziewczyny (two girls)
idę z dwiema dziewczynami (I'm walking with two girls)
dałem kwiaty dwom dziewczynom (I gave flowers to two girls)
kanapa dla dwojga (a sofa for two - gender unspecified)
dałem śniadanie dwojgu (I served breakfast for two others)
dwójka to słaba ocena (two is a poor grade)
dwie dwójki to razem czwórka (two twos are four altogether)
dostałem dwójkę z Fizyki (I got a two in physics)
z dwójką przyjaciół poszliśmy do klubu (we went to the club with two friends)
w autobusie dwójce siedział pijany facet (there was a drunk fella on bus number two)
O, dwójko, nie wracaj już do mojego dziennika (Oh, two, don’t come back to my gradebook again)
Of course I don't consciously think about when to use the right conjugation. I just know it by heart and it's second nature but I can only give coherent rules to some of them.
> I'm not a linguist so I can't send any articles that explain the origins of this mess.
It's probably because Polish, unlike English and most Western European languages, has a case system (where nouns are modified to indicate their function, i.e subject, object, instrument, etc).
That's a pretty common feature in grammatically conservative Indo-European languages. Other living Indo-European languages, like Lithuanian, are even more conservative and have preserved nearly the entire case system of their ancestor.
Goes even further for languages with dual (like my native Slovenian) - on top of singular and plural
ena ptica (one bird), dve ptici (two birds), tri ptice (three birds)
As well as 6 grammatical cases and 3 genders. And a number of special cases
This is amazing. Thanks for taking the time to share this!
I think it's more about inclination of the words that can't be replaced with a number.
In English, it's easy:
But: How does Polish go about that?1 plik wysłany
2 pliki wysłane
12 plików wysłanych
21 plików wysłanych
BUT
22 or 23 or 24 pliki wysłane
BUT again
25 plików wysłanych
16'777'221 plików wysłanych
Is it still "16'777'222 pliki wysłane"?
yeah, the last digit matters. But sometimes the second last as well because of teen numbers:
22 pliki wysłane
12 plków wysłanych
I'd be happy with "Files scanned: {0 or 1 or 100}" too ;)
Same argument applies. You, as the developer, always know in what context the text appears. Whether it's "dwa zdjęcia przesłane" or "dodano tagi do dwóch zdjęć".
> You, as the developer, always know
Definetely not "always".
Any language is like this. There shouldn't be too difficult to say "two files have been uploaded" even in Polish.
Could not agree more.
As a child in the 80s I read a programming book (can't remember the name anymore unfortunately) where the reader was encouraged to write software that is always friendly and human when it comes to communicating with the user. For example, 'Please input a number:' instead of 'Input a number:'. But also exactly the thing the writer talks about in the article; do not be lazy when it comes to pluralization.
I get nostalgic remembering that era in computing.
When you interacted with a 'computer' once or twice a week, perhaps... seeing "please" is ... neat? A 'wow' factor ("wow! It knows English!")?
Peppering input fields and forms and folksy welcoming language scattered thoughout might be useful now and then, but for systems where people are using it repeatedly hourly/daily/weekly... it's (at best) clutter and noise.
The article makes sense for me. I see it like the broken windows policy of software development. If you allow sloppiness in the small places, the places where you allow it will grow, until your code base is riddled with it. The fight for code quality is also a fight against damaging bugs and against exploitable vulnerabilities.
One big problem with the fight is that industry is incentivized to cut corners. '(Fast, Cheap, Good)..pick two' often results in managers picking fast and cheap. In some ways,they seem legally obligated to fast and cheap due to fiduciary responsibility to the stockholders. That's only if you look at the potential profit and risks from a very short term. Alas, that is what most of the world's businesses do at the moment. To paraphrase Dom from the Fast and the Furious, "We live our lives one business quarter at a time". Eventually Dom discovers the futility of that during the course of the series. Hopefully we will too, before we crash.
Thank you so much for the laugh!
> Hopefully we will too, before we crash.
I think LLMs are helping us to bolt rocket engines to cars.
Thank you, well said!
the broken windows theory that was shown to be flawed? :)
Qt has provided a solution for this since its early days: https://doc.qt.io/qt-6/i18n-source-translation.html#handle-p...
Glad the snippet is == 1, this problem drives me extra insane when it doesn't handle the zero case. Not only has my upload failed for some mysterious reason, I have successfully uploaded zero item!
Man I'm so far away from being concerned about this...just like, we still need to fix duplicate icons that mean different things, phrases like "Are you sure to delete?", mis-aligned text/inputs EVERYWHERE...
If this is your biggest concern at a company (regarding the UI at least), you are miles ahead of us. Congrats
Haha, one can dream! ;)
For non-technical users, the user interface is the program. To them, there's nothing beneath the shell. My last boss didn't like Macs because his PowerPoint presentations rendered differently on them compared to Windows. There are millions of real people with consequential positions in important organisations who think like this.
Getting your program to render the same on different platforms takes a lot of work the user will never see, and that goes double if you actually want it to behave the same. There are some very deep problems you have to work through, like what behaving the same and rendering the same even mean. Same window decorations? Same menu layout? Same dialog boxes? How are you doing font rendering? How much do you embrace platform defaults versus steamrolling over them in the name of uniformity?
You're not wrong, but making these sorts of arguments was the start of me being managed out of that company.
>You can’t have your UI disrespecting [...] and I care too much!
I think it just highlights that people care about different things. I've seen the "(s)" placeholder for decades in computer UIs and it's never bothered me. On the other hand, blog article characteristics that bug me are titles consisting of a non-descriptive teaser with ellipsis (...) that doesn't describe the main point and not having a publication date at the top.
But I'm not going to complain about blog articles that "disrespect" readers that way because apparently, it's ok with some writers and some readers.
Likewise, someone using the Comic Sans font enrages some folks but it never bothers me. On the other hand, displaying big numbers without any thousands separators is very annoying.
I code a lot of utilities for myself and I always avoid the "(s)" problem by re-ordering the text. Instead of:
The UI is: That looks ok for all quantities and doesn't require tedious ternary logic everywhere :I'd be curious if that holds for all languages.
The plural version does not and as you pointed out, there's a solution in English that works. But, I'm curious if there are any languages were that type of solution doesn't work.
https://perldoc.perl.org/Locale::Maketext::TPJ13#A-Localizat...
“이/가” is the Korean version of this. It depends on the sound of the word that precedes.
I still remember seeing it when I first started using Windows 95. As a kid, I was amused that it didn’t know which one to use. Really, I didn’t even know that I was making that choice (and couldn’t say what the rule was).
If anyone is interested about it, this page explains https://www.90daykorean.com/i-ga-grammar/
Haha, interesting!
So: The author wants to work for a company with resources.
Unfortunately, details take time and time takes money.
For a business's survival, the company's relative positioning in the market, access to sales and marketing channels, financing are much stronger concerns.
This is a designer longing for endless tinkering.
I literally couldn't care less. You can call it '1th of April' for all that i care if the actual functionality you offer is clean and fast I'll gladly accept!
I get where the author is coming from, but having grown up in the 80's, I always thought "1 item(s)" looked slightly _more_ professional since it followed the way printed documents were usually produced.
There's an npm package for that! https://www.npmjs.com/package/pluralize
I'd say there are about 100 thousand variables that correlate more closely with if a company is a good place to work at than pluralizing some frontend stuff.
given the image in the post is specifically of the azure portal, the following is a very real notification message from the same:
Deleting load balancer '[object Object]'
Please don't get me started on Azure!
It's a tradeoff.
I love projects where I can "sweat the details" and refine not just wording but typography, padding, visual alignment, layout, edge cases, colors, workflow, etc. And where the back-end, QA, doc teams are similarly able to hone their work to perfection.
But I know that this isn't always Pareto optimal. Sometimes your user, customer, and business are better off if you swallow your pride and deliver an imperfect solution now instead of a better solution in the future, and knowing when and where to strike that balance is a sign of maturity, not disrespect.
As a software product manager, UX is one of the areas I’m inclined to spend more time and money than strictly necessary. Details and polish matter. Users can tell the difference, even if it’s subconsciously.
Agreed! But I suspect several of these decisions are not intentionally made and are "...meh, whatever".
I know this is besides the point but translation libraries are perfect for this even if you aren't creating a multilingual site. You define your singular/plural forms in one place.
There's an old proverb that the best time to add i18n support is today. It takes a bit of extra effort to build new stuff with it in mind, but that little bit of extra effort today goes a long way (and builds good habits) versus the large projects to add it tomorrow when it becomes tech debt and needs a full audit of every possible way a string might be formed for display to a user, because you just got a client/customer who needs it tomorrow.
I wouldn't want to be part of a company that uses a ternary to make an English only i18n thing. Please use a proper i18n framework that supports proper pluralization, as the Polish example highlights.
Keep in mind English is a super weird language, it's three languages in a trenchcoat with stuff like 'beef' coming from French and 'meat' from Germanic.
I feel the same way about wasteful software. I've spent most of my career working for people who would rather I sit idle and do nothing at all than "waste" valuable programmer time trying to optimize our software. We have websites that load slowly, downloading gigabytes of unused and useless scripts that nobody has the courage to remove because nobody remembers why it was put there in the first place.
I wonder if the blog author has ever had to write automated tests for what they propose..
Sure it’s doable, but trivial things are now non-trivial.
Ignoring i8n is also a significant issue.
Tests? What tests? ;)
Seriously though, "Files deleted: {0 or 1 or 1000}" would also work :)
There's so, so many different reasons in the real world as to why/how details like that end up in front of the customer.
Is OP happy to work for Satan as long as he appears grammatically accurate, polite and concise?
Alternatively, OP is a nightmare to work with because every single other role in the company has to do things in exactly the way the engineers want, otherwise they're careless morons.
OP is not being literal. Satire and the interpretation of it are important for a healthy and nuanced world view and discourse.
Sorry, I'm being dumb then. Could you please spell out what I'm supposed to take away from the article? I really can't see any satire in here.
Satan is very underappreciated as an employer.
I'm sure he pays well too!
To quote Wikipedia:
”Nontheistic Satanism, as exemplified by LaVeyan Satanism (practiced by the Church of Satan and First Satanic Church) and The Satanic Temple, holds that Satan does not exist as a literal anthropomorphic entity, but rather as a symbol of a cosmos which Satanists perceive to be permeated and motivated by a force that has been given many names by humans over the course of time. In this religion, "Satan" is not viewed or depicted as a hubristic, irrational, and fraudulent creature, but rather is revered with Prometheus-like attributes, symbolizing liberty and individual empowerment. To adherents, he also serves as a conceptual framework and an external metaphorical projection of the Satanist's highest personal potential.”
You see, Satan is not just a biblical figure, but also the average IT company.
Doesn't he always barter for your soul?
I'd guess he barters for soul(s).
With such a clear vision of the "company I want to be a part of", maybe you should walk the walk and establish such a company? Perhaps then you will find out that what actually floats to the top is what we've got, rather than what we want. Or perhaps you will be the next GOAT.
Ouch. Unfortunately I don't think I will.
I'll probably always be hired by someone else to build a shared vision and aspire to do it as well as I possibly can :)
I didn't mean that to be demeaning at all. I seriously urge you to implement that vision even as a bootstrapped side project to your main gig. If you want to "build something (you're) proud to sign (your) name on", chances are whatever you build will display that authenticity, which will either resonate with customers or not. People love authenticity, perhaps customers not so much. The market can be brutal and just because something is "better" or more genuine does not necessarily equate to revenue. You have already started a big part of your story, explaining why your vision is "better". Go ahead and implement something incorporating that vision, explaining its advantages to the market. At the end of the day, you will at the very least feel true to your self. A job may not give you that.
While I don’t think proper pluralization is indicative of anything outside of real world time constraints, I am a fan of these kinds of tacit signals.
Last week, my wife and I toured a school for our daughter. The school gave us these pretty notebooks with a blackwing pencil, saying that they “take writing seriously here.” I noticed that the students, however, did not use blackwings but cheap low quality yellow pencils. This signal prompted me to pay closer attention, and I found half a dozen things that affirmed the bad feeling I had about the place.
It’s a simple rule, but in the era where everyone is trying to sell me, I use Bill Hamilton’s Say Mean Do rule from his “Saints and Psychopaths” about finding real spiritual mentors. Broadly: saints say what they mean and do what they say. Unfortunately it’s probably just as hard to find tech companies who are honest as it is to find a true spiritual mentor. B2B SaaS sales cycle is usually just checkbox hunting and CYA.
The quiet tragedy of "almost good" software
> a cold, hard reminder that this is clunky, soulless machinery
This is where my view differs fundamentally. If I get another "let's set up your account!" text in a soulless, cold software, I am throwing my laptop out the next window.
It's a machine. It needs to communicate information to me. A large part of the AI boom is that we can now pretend that it's not a machine by using enough compute power to probably solve every problem ever, just to say "Of course -- you're so right!".
We made sure to write software so inefficiently and badly that you can barely tell how powerful modern computers are.
Just another little layer, one more branch, one more step between the user and the hardware -- just buy more ram. Buy a better CPU. They now have double the cores, you hear?
Sometimes devs go too far with that, e.g. with timestamps, like "2 days ago". Just give me ISO timestamps I'm dying.
Wait before author finds out there're languages with more forms than singular and plural...
+1! I really appreciated this post(s)
Touche ;)
Always thought you kinda have to do this to create a product that can even be translated considering languages like French where plurals take many forms.
That was my first thought as well, but interfaces that take care of pluralization with an i18n framework can handle all of these.
It just takes longer and is at the expense of another feature. In truth, it mostly takes more skill - once you have that skill, it's another 5 minutes. There are a few edge cases, but you largely have the necessary context to translate a string. You have to translate the string in its entirety instead of relying on composition of translated chunks. (This is already best practice.)
False title.
Open to suggestions to make it better!