Live data from Hacker News

You can't do that because I hate you

bvisness.me

201–210 of 216 posts

Re: You can't do that because I hate you

#201
post #194
post #10

Such a weird rant. Yes, some tools do some things, but not others. Making tools do everything for everyone just bloats them to unmaintainable messes. And it’s a special kind of entitlement to believe that the way _I_ imagine things must be working is the only possible correct interpretation. Reality is messy, there are trade-offs, and a lot of smart people think very hard about what the correct trade-offs should be g…

I think the point is not whether certain tool does things in certain way. It's the lack of thought about how the user interacts with the tool and whether or not the particular way of doing it makes the interaction easier. Too often "technically correct" is considered the best kind of correct even though the resulting interface is infuriatingly unpleasant to use. It's hard to please everyone, but it is useful to remin…

Well, but the cases he mentions are really not “just not being thoughtful”.

I’m old enough to remember that Python 2 in fact had “print ”, and I think also “exit”. Exactly because once upon a time Guido thought about what would feel nice to users. In time it turned out that special casing a handful of special functions introduces pain across everywhere else. Because of its valid syntax in REPL, it’s valid Python. So they removed the special casing for these functions, and added a helpful comment for people who might be confused.

Ditto for wrapping comments in Rust. Doc strings in Rust can have doc-tests in them. Meaning that whatever comment wrapping you do must not break syntax there. I don’t know what feature exactly is needed there that’s currently nightly only, but I’m very sure it’s not just something trivial that nobody has gotten around to yet.

Point being, no, everyone else except _me_ is not some dumb f*ck, who doesn’t do the obviously right thing because they hate me.

Like, that _sometimes_ happens. But these are not those cases, and in my experience it actually happens pretty rarely. I think the default disposition towards seemingly stupid implementations or behaviors should be that people working on the implementation were not sloppy idiots who hate their users, but rather that they had their reasons, and me being put into their shoes would’ve likely done the same.

Re: You can't do that because I hate you

#202
post #64
post #10

Such a weird rant. Yes, some tools do some things, but not others. Making tools do everything for everyone just bloats them to unmaintainable messes. And it’s a special kind of entitlement to believe that the way _I_ imagine things must be working is the only possible correct interpretation. Reality is messy, there are trade-offs, and a lot of smart people think very hard about what the correct trade-offs should be g…

> Reality is messy, there are trade-offs, and a lot of smart people think very hard about what the correct trade-offs should be given a particular situation. This is great and all, but misses the point. If you have made a decision to cut a feature then at least explain why. This then circumvents the 'why don’t you just' mentality. That is the root of the issue in the examples provided. It would be trivial to drop a w…

TBF the Rust comments did address the "why don't you" issues. The problem was that the alternatives were also outdated in and of themselves. It sounds more like a docs issue than a communication issue.

Re: You can't do that because I hate you

#203
post #10

Such a weird rant. Yes, some tools do some things, but not others. Making tools do everything for everyone just bloats them to unmaintainable messes. And it’s a special kind of entitlement to believe that the way _I_ imagine things must be working is the only possible correct interpretation. Reality is messy, there are trade-offs, and a lot of smart people think very hard about what the correct trade-offs should be g…

I agree with the rant, but not the examples. It pisses me off when programmers add "features" which forces users to deal with them. For example, pipenv always prints a message when you activate an environment (I don't know if it's still the case because I don't use it anymore). I had to migrate a cronjob which ran a Python script and sent an error email if anything got printed to stderr. This is a pretty standard Uni…

>if you are doing anything beyond just solving the problem

It's a rant so I won't take it TOO literally, but: The opposite extreme of this philosophy is why we have stuff like Blender pre-2.7 and GIMP. There is some use to polishing up a proper looking UI and ensuring familiar UX. Especially if your audience is non-developers.

But yes, I understand. configs and CLIs should be as "dumb" as possible. Proper line breaks for readability and maybe color if needed, but there's nothing more frustrating than debugging what comes down to a bare basic command.

Re: You can't do that because I hate you

#204
post #145
post #132

Earlier quoted context omitted.

> then became universally relied upon but somehow never enabled by default. Often it's not that universal; especially for older software there's a lot of variety in how people use it, and changing defaults can be hugely confusing for existing users. A lot of these (alleged) "don't suck" buttons are probably more subjective than you might think. The HDMI thing may be a security-related, or maybe there are is another r…

This is the chesterton's fence. Don't remove the barrier until you understood why the barrier was there first.

agreed. It's one of the most painful parts of legacy code, especially when left 10 years ago by an engineer who has long departed the company that just says "DO NOT CHANGE" (or something to that effect). A beginner sees incompetency, while an expert can already imagine the war stories, the politics, the potential crunch and desperation, and the weeks of demonic bugs fought to warrant such a comment.

(Or you know, you dig a bit and find a thinly documented fix to that issue from 5 years ago).

Re: You can't do that because I hate you

#205
post #104
post #101

I have a similar pet peeve in software, what I refer to as ‘Don’t Suck’ Buttons. A ‘Don’t Suck’ Button is a setting, turned off by default and usually hidden in a corner of the UI or configuration file, which fixes a common issue that new users experience, and/or turns on the behavior that everyone wants from the product in the first place. The best examples of ‘Don’t Suck’ Buttons involve settings with no obvious di…

One common reason these exist is because a lot of people got used to the state where the "Dont Suck" button didn't exist, and for those users changing their workflow would be even more annoying. I do agree it's not a great state of affairs, though.

Obligatory: https://xkcd.com/1172/

Legacy code if fun. Almost as fun as the ways people get around such cruft.

Re: You can't do that because I hate you

#206
post #194

Earlier quoted context omitted.

I think the point is not whether certain tool does things in certain way. It's the lack of thought about how the user interacts with the tool and whether or not the particular way of doing it makes the interaction easier. Too often "technically correct" is considered the best kind of correct even though the resulting interface is infuriatingly unpleasant to use. It's hard to please everyone, but it is useful to remin…

Well, but the cases he mentions are really not “just not being thoughtful”. I’m old enough to remember that Python 2 in fact had “print ”, and I think also “exit”. Exactly because once upon a time Guido thought about what would feel nice to users. In time it turned out that special casing a handful of special functions introduces pain across everywhere else. Because of its valid syntax in REPL, it’s valid Python. So…

> So they removed the special casing for these functions, and added a helpful comment for people who might be confused.

Technically correct. But: what happens is that when you start python, it outputs:

Type "help", "copyright", "credits" or "license" for more information.

But when you type "license", you get this:

Type license() to see the full license text

Why that happens? Because "license" is a special object that has string representation as presented above and to actually read the license, you need to call it and not just request string representation. Technically it's all clean and correct. But guess what - the user does not care. Your design is not the user's problem, the usability is the user's problem. And the usability of this kind of solution is terrible. I know why it's done, I know how it's done, I can appreciate the technical beauty of it - and it still pisses me off. They clearly knew about this case, they themselves told me to use "license" and when I did it, they say "nah bro, you forgot the parens, you idiot, try again, har har har!" It's not a huge deal, but when it happens to you thousands of times, it eventually starts to piss you off. Avoiding this kind of thing is not easy - it may actually require departing from the nice and clean design you envisioned internally, and that may be annoying to a programmer - but as a user, I much prefer that this is how it would be done. I know there are reasons, in many cases I know exactly what the reasons are, because I've been guilty myself, but that doesn't help - the whole point is, as a user, it makes my life harder. So, in our development as a software engineers, once we learn how to build technically correct things, we also need to start thinking past that - how to build things that people would enjoy using.

Re: You can't do that because I hate you

#207

Earlier quoted context omitted.

Writing code should be part of the OS as fundamentally as web browsing. You should get a cursor to write code, have a tree worth of files and have a button to publish the application as a single clickable program. Anything else is a tribute to the rant.

Ah yes, and when I write a new language all os vendors should be forced to integrate it, or I should be blocked from inventing a new language. None of this installing code that others wrote. If I want to write a language my only option should be writing an os from the kernel up.

Give it the appropriate file extension and the os downloads relevant programs and makes it work.

Re: You can't do that because I hate you

#208
post #64

Earlier quoted context omitted.

> Reality is messy, there are trade-offs, and a lot of smart people think very hard about what the correct trade-offs should be given a particular situation. This is great and all, but misses the point. If you have made a decision to cut a feature then at least explain why. This then circumvents the 'why don’t you just' mentality. That is the root of the issue in the examples provided. It would be trivial to drop a w…

TBF the Rust comments did address the "why don't you" issues. The problem was that the alternatives were also outdated in and of themselves. It sounds more like a docs issue than a communication issue.

So what you're saying is that it was still a communication issue. I'd view it that way if what I was told was either wrong or very out of date. Docs are how you communicate.

Re: You can't do that because I hate you

#209
post #208

Earlier quoted context omitted.

TBF the Rust comments did address the "why don't you" issues. The problem was that the alternatives were also outdated in and of themselves. It sounds more like a docs issue than a communication issue.

So what you're saying is that it was still a communication issue. I'd view it that way if what I was told was either wrong or very out of date. Docs are how you communicate.

Communication on one end. I don't agree with the dev comments, but I didn't see anything off putting about thr way the CLI comments were phrased. Most of the author's post seemed to be about the smug attitude (so, the former).
Post reply on HN