Hacker News new | ask | show | jobs
by unimpressive 2624 days ago
Ted Nelson was banging this drum as far back as 1974 with the concept of Cybercrud as discussed in Computer Lib/Dream Machines: New Freedoms Through Computer Screens. If you go back and actually read that book, you'll realize that basically everything he says about computers then is applicable to computers now when it comes to lies told to users. As an example, he points out that 'computer people' will routinely tell users that something can't be done when the reality is it's entirely possible but the software won't do it.

That we don't seem to have made much progress in 50 years is pretty disappointing.

3 comments

> tell users that something can't be done when the reality is it's entirely possible but the software won't do it

As we digitize increasingly "serious" systems, this is increasing a logistical crisis in addition to a social issue. Variations that would have been trivially handled by even the least helpful of bureaucrats becomes outright impossible to submit to computer systems, often with no channel for appeal or remedy.

The story of Ellis Island screeners changing the spelling of names is infamous, but in that story at least the immigrants ended up with coherent paperwork and a usable name. Today, people with PII that doesn't match software formats are increasingly out of luck. If your name includes 'é', ASCII systems will flatly refuse to accept that. You can enter 'e', but when down the line the ASCII field gets compared to some UTF-8 record of your name, they might well be ruled different people. If you live in Apartment C, you'll suddenly and unhappily learn how many computer systems treat apartment number as a strictly numeric field. And god forbid your apartment has a name, or your street number has a decimal - there isn't even a graceful conversion for those values.

Robust design is the first step here: many systems could easily be adjusted to fail in 1% of the cases as they currently do. But human-focused design on a much larger scale can't be avoided either; when these standardizations _do_ inevitably fail, there needs to be some way of conceding that the system, and not the data, is wrong. As @patio11 put it years ago, "anything someone tells you is their name is — by definition — an appropriate identifier for them".

> tell users that something can't be done when the reality is it's entirely possible but the software won't do it

This bit really stands out to me, and it bothers me to no end when I encounter it in the wild.

It even afflicts FLOSS software! Without meaning to single out any one project in particular, a concrete example that's fresh on my mind is KDE's Dolphin. Lately "sudo dolphin" results in the flat-out lie that "Executing Dolphin as root is not possible.", rather than a much more informative statement such as "Doing this would make an entire class of otherwise impossible exploits possible, so the maintainer has made a personal judgment call to disallow this behavior."

I think all software everywhere ought to conform to KDE's Human Interface Guidelines of "simple by default, powerful when needed" but would also like to see something added along the lines of:

* Don't lie to users - be as transparent as reasonably possible.

* Don't make value judgments or be (needlessly) authoritarian - software should restrict itself to doing its job and doing it well.

Another (historical) example that comes to mind: https://github.com/tpope/heroku-fucking-console

> he points out that 'computer people' will routinely tell users that something can't be done when the reality is it's entirely possible but the software won't do it

This is not the full equation though. Usually, "it can't be done for the price that users want to pay and the reality is it's entirely possible but I will not do it for free for you".