Some Problems Shouldn't Be Solved
patrickjamesmcguire.com
patrickjamesmcguire.com
So the case of disabling a button because it shouldn't be pressed given the state of the application/form/whatever is, to me, a good thing.
But, you have to provide clear indications so the user knows how to resolve the situation. Anything else is actively user hostile.
So:
Do prevent the user from entering bad data instead of allowing them to input it and then telling them it's wrong after the fact.
But don't make it impossible for the user to resolve the situation by providing unclear indications or unreasonable hoops that need to be jumped through.
Random aside: notifying the user they've selected a bad password is, to me, a good thing. Actively preventing the user from enter a bad password, though, is a PITA... sometimes I really just don't care about password security (one-time login, low consequence if hacked, etc).
(Relevant xkcd: https://xkcd.com/936/)
I especially get mad at absurdly small (<200 chars) maximum lengths; a response of "but we require special characters" is bull. Increasing the size of the character space increases entropy by O(n^k) (polynomial); increasing the length increases entropy by O(k^n) (exponential). Anyone who's taken an undergrad algorithms course or even AP Comp Sci should understand this.
200 chars? Really? Sure, there shouldn't be arbitrary limits, but...
200 chars?
How doth the little tronodile
Improve his clanking tail,
And pour the glowing hobo bile
On every stainless scale!
How cheerfully he seems to grin,
How neatly spreads his claws,
And welcomes desert rangers in
With gently smiling jaws!
Alas, your password must also contain a number, and it exceeds the maximum allowed length of 24 characters.So. Frustrating. The second is strictly a stronger password than the first.
You realize even the well-regarded bcrypt algorithm only hashes 72 characters, right?
If you're committed to bcrypt, you could make an argument in favour of digesting the password with something like SHA384 first. That reduces entropy, but (a) it's strictly better than straight SHA, which is what a concerning number of people use already, and (b) it means that you're not messing up the user's pattern/mnemonic if they've got one going.
Problem #1: I type often. My fingers know when I've made a mistake and correct it immediately. But on a number only input field I type 456A<del>7 and because the form wasn't letting me type letters I get just 457 instead of 4567. Now I have to correct yet another mistake that was forced on me
Problem #2: Delete almost never works correctly. There's a CC form [xxxx][xxxx][xxxx][xxxx]. I type want to type 123456789... I type 1235<del>4. I now have [1235][4...] instead of [1234][....]
Problem #4: Paste almost never works. I have my info somewhere. I copy 123456789... I paste I get [1234][....][....][....] or I copy 1234-5678-9... and paste and I get an error. "No dashes allowed" or I get some other crap.
Problem #5: Copy rarely works because I can't select all fields since they've been separated.
Problem #6: 95%-99% of the time tab goes to the next place in the form but many custom forms move to the next field automatically so I type a phone number 111-222-3333 and then press tab but because the custom form assumed the moment I typed the last 3 that it would be helpful to automatically go the next field I'm now two fields ahead.
You could possibly fix #2, #4 and #5 but I'd prefer just a blank field, no mucking with the input system. If you want to display some live status while I'm typing just outside the form on whether my input is correct or not yet that's fine but please don't mess up my typing muscle memory.
I'd be really curious if anyone has done any serious testing on these fancy custom input "helpful" forms vs simpler plain text areas.
Yet another is how about just accepting the user's input and checking if it could be what you need. For example when taking a CC card, let me type WWWWXXXXYYYYZZZZ or WWWW XXXX YYYY ZZZZ or WWWW.XXXX.YYYY.ZZZZ or WWWW-XXX-YYYY-ZZZZ or even WWWW XXXX YYYY ZZZZ. Check if you can turn that into 16 digits. If so assume it's correct. Don't force me to do it what's easy for the computer. I might have it in some other format and I want to copy and paste it. Or I might just find it easier to space out because I can then read it and more easily check for mistakes. For example accept a US phone number in XXX-YYY-ZZZZ instead of forcing me to XXXYYYZZZZ
*I am not a UX engineer, YMMV
WHY!?!?!
Me: My tire is going flat on my rental car.
Avis: OK, we'll send someone out to put on a spare.
Me: That's OK. I can change the spare.
Avis: OK, then after that take it to a nearby location and exchange the car.
Me: I've called all the locations within 45 miles and none have an available car.
Avis: OK, we can bring you a new car.
Me: Great.
Avis: I have to warn you however, that you may be charged for the price of the tow.
Me: What tow?
Avis: We have to tow the car too you.
Me: Why?
Avis: That's how we bring you a car.
Me: Can't someone just drive a new car out and take this one back?
Avis: No both cars must hauled.
Me: Why?
Avis: That's just how it's done.
Me: OK, why would I have to pay for it anyway. The tire has been leaking since I got the car.
Avis: Because the car has a good spare. Can we send someone out to change it?
Me: That's not necessary I can change it.
Avis: OK, then after that you can take it to the nearest Avis and exchange it.
Me: I already told you, all the nearby locations are out of cars.
Avis: OK, then we can tow you out a new car and exchange it.
Me: OK.
Avis: But I have to warn you sir that you may be charged for the tow.
Me: Why?
Me and Avis: Because the car has a good spare.
Me: Are you a robot?
Avis: ....
Me: I ask because I really can't tell if I'm speaking to a human.
Avis: Yes sir, I am a human.
The future call center may consist of algos with voice synthesizers, and that one competent human :)
If you think about it, the greyed out sharing button (and indeed most infuriating software stories) essentially follow the Myst pattern, but in reverse. An unwanted change has occurred to the state of the world, and you don't know what DoF triggered it.
The password thing is actually a slightly different class of user abuse, embodied by all forms, which is making the user turn messy thoughts into coherent data, which is the essence of work. This data must satisfy a long list of predicates, an invisible gauntlet of tests. (It's even better when the form resets part of itself on error - like when your password is cleared if you don't enter the captcha correctly.)
These are crimes against the user, and truly need to stop. (Although Myst was a big hit so clearly some people really love the abuse.)
Games (and software!) fail when the connections between elements are too subtle, too complex, or simply too inconsistent, and sorting them out passes from being fun to being work.
You've never played Myst, have you.
Often it would be rather easy to make the check itself a few lines of conditional code or a single SQL query, but then the only response I could give to the user is "you can't do that", plus a link to the requirements document. Instead effort is spent to follow the steps in which a human might check the constraints.
I just got a screen grab from a user asking "What does this mean?" and the error was "Not enough space on disk."
*Facedesk*[0] http://www.cs.bham.ac.uk/~tpc/cwi/Teaching/MASPPapers/EmailA...
Why are there words missing in a way that's not typical of the usual non-native speaker drop-outs? I'm finding this article very difficult to read.
Later, I return to this site and need to offer up the answers to the security questions. No problem... right up until I discover that some @$!#^%!!?! software developer put format guards on the security question answer fields at challenge time (vs. creation time). Yes, it was possible to create an answer to the (stupid) security questions which could not be answered by the website.
So now, my access to this site is literally sitting behind a several-months old developer ticket.
I tried logging into twitch last night and it kept telling me my username/password are invalid, so I think my account is inaccessible again.
He's got a point about it not being clear if "Passwords need 10 characters" means they must be exactly 10 characters long or at least 10 characters long. It is the latter. If you put a password of less than 10 characters in the first password field, when you move on to re-enter the password it will immediately flag the error with the message "Your Password must be at least 10 characters long".
I'm a bit confused, though, by the imaginary dialog between him and two clerks showing how these requirements would work if this were done in person. To reflect the actual form, the dialog should be more like this:
HIM: Here is the password I want. (Hands paper to clerk).
CLERK: Passwords have to have at least one special character from this list. (Gives list to him). Your does not have one of these.
CLERK: Also, passwords can only contain letters, numbers, and characters from the special character list. (Point to the list he just handed over). You have a special character that is not on the list.
HIM: (Replaces the disallowed character with one from the allowed special character list) (Hands new password request to the clerk). OK, try this one!
CLERK: That meets our requirements.
I'm not sure at all where that part of his dialog about question mark being a special character but not a character comes from. The password "Ab345?7890" is accepted by the password checking JavaScript, even though it is exactly 10 characters long and so the ? must be counting as both a special character and as a character.
Don't get me wrong here...I'm not saying these requirements are OK. I find requirements like this annoying, because I use a password manager to generate my passwords. I can easily tell the password manager to include or exclude special characters, but I don't get to pick which special characters it picks from. At a site like the Post Office, which limits the set of special characters, I might have to generate several passwords before I hit one that is acceptable.
As a password manager user, what I really want out of sites is for them to allow long passwords, and place no restrictions on the characters in those long passwords. I will then use 25 character random passwords consisting of digits and lower case letters. That gives me 128 bits of entropy, but if it needs to be manually typed for some reason it is not too bad. I'm OK if they place some character requirements on shorter passwords...but if the password is long enough, let me do what I want.
So yeah, the requirements are annoying. I am just having a hard time believing that the red explanations that appear when the first password field loses focus were not sufficient to enable someone who programs at Google to manage to come up with a password acceptable to the Post Office.
I'd say the Post Office actually did a pretty good job of implementing the form. Most sites just tell you that your password violates the rules, and it is up to you to re-read the full list of rules trying to figure out which ones tripped you. The Post Office form tells you exactly which rules were violated.
* My password is too long
* My password doesn't contain one of their required special characters
* My password contains a special character they don't explicitly supportI now intentionally limit the longest password my password manager will generate to 12 characters now, just to avoid this mess.
https://blog.agilebits.com/2015/03/23/an-open-letter-to-bank...
(edit: fixed typos, not a native english speaker here)
Basically, if I don't use a site every day, or it isn't sensitive like banking information, I don't really even have a password.
I am willing to bet that a lot of people are "Login via email" just like me!
Accept that your site isn't special enough to have a unique password and stop being so fucking arrogant.