Yes/No/Cancel causes Aspirin sales to soar

(martin.kleppmann.com)

57 points | by ankitg12 3 hours ago

13 comments

  • Grombobulous 48 minutes ago
    I’ve always loved how TextEdit’s “don’t save” button is actually a red button that says “delete” for unsaved text files.

    There’s no ambiguity there. The user is very well-informed that they’re about to quit and lose the document they were working on.

    • frollogaston 7 minutes ago
      "Delete" is the wrong verb, suggests I'm deleting the file, which I'm not. Sure you could say, well you're deleting the unsaved changes, but this isn't what it means on any other computer or even in other Mac apps.

      The same update (Lion?) ruined saving overall. Apple has insisted that apps should never have a "save as." You can hold opt to do it anyway, but it silently overwrites the original too. Wtf. Apple might've hoped this catches on, but for good reasons, no 3P app does it this way, so now even within a Mac there are two ways to save stuff. I get they want me to duplicate the file first, but nah.

    • hbn 20 minutes ago
      The example of Pages from the article has actually since been changed to do the same thing.

      Red "Delete" on the far left, then on the far right a gray/neutral "Cancel" button, and an orange (the app's primary color) "Save"

  • thefourthchime 1 hour ago
    One of the most influential books I ever read was About Face by Alan Cooper. What he said about this bad modal dialogue is that you should simply not ask the user, and let them undo later.

    This was heresy at the time, but turned out to be the native user flow for iOS later on. And now it's common in web apps.

    https://www.amazon.com/dp/1118766571?lv=shuf&channelId=500&p...

    • delichon 10 minutes ago
      I once heard Cooper talk at a conference. He said that he was indeed the father of Visual Basic, in the sense that he had a little participation at the inception but most of the work was done by someone else. I think you can draw a line between that kind of self deprecation and the ego level required to look through someone else's eyes and design good UI.
    • bluGill 55 minutes ago
      Remember in 1990 (the pictures are from around then) there wasn't unlimited fast disk space. There was a good chance you were saving to a floppy disk which not only was slow, but might not be in the drive all the time. At least in 1990 you could assume a hard drive - but you couldn't safely assume there was enough free space on the drive to save anything, since 40mb drives filled fast.

      35 years latter we live in a different world where you can assume an unlimited fast data connection to a data center. Saving and allowing undo is possible today.

    • TheJoeMan 57 minutes ago
      In the world of 2TB SSD’s, it does seem silly to risk inadvertently deleting an important ~2kb word document.
      • SoftTalker 32 minutes ago
        It took me quite a while to get used to the "save continuously, keep revision history" of Google Docs, but in that context I've gotten used to it. For something like code, or image edits, etc. I still prefer explicit "Save" or "Save As..." operations that I control, because quite often I get myself boxed into something that I just want to throw away and start over.
      • giantrobot 10 minutes ago
        Well we're rapidly approaching a world going back to 256GB (or smaller) SSDs because VC money is being used to buy up all semiconductor and HDD output by AI hyperscalers. Everything will end up cloud storage, you'll own nothing and like it.

        Also the minimum Word document is far larger than 2KB. IIRC it's about 10x that size for an empty Word document (docx).

  • chuckadams 1 hour ago
    My favorite is apps that offer a way to cancel a long-running operation, where clicking "cancel" on the confirm dialog cancels the cancellation.
    • KineticLensman 14 minutes ago
      Sydney Padua's awesome, mostly true, steampunk graphic novel "The Thrilling Adventures of Lovelace and Babbage" jokes about the error messages that might have produced by the difference engine. One example occurs when a character tries to stop a sequence that may or may not destroy a precious manuscript:

      Annulation lever activated!

      Do you wish to continue?

      Engage STOP lever to continue. Engage CONTINUE lever to stop.

      Time remaining 5..4..3...

  • f1shy 17 minutes ago
    This is more or less the reason why bool is not recommended as a type, instead use a enums which add semantic value
    • QuantumNomad_ 2 minutes ago

          enum DoesUserWantToSave {
            Yes,
            No,
            Cancel,
          }
      
      :p
  • SubiculumCode 34 minutes ago
    1. LibreOffice's recover files dialogue series of steps is frustrating like this.

    2. Still better than "Yes, Ask me Later" dialogues that are so insulting to users.

    • dspillett 10 minutes ago
      Q: Do you think Microsoft¹ understands and respects the idea of consent? A: Yes / Ask Again Later

      --------

      [1] Or the BBC, or whoever, a great many are guilty of this sort of thing.

    • delichon 16 minutes ago
      I agree that such forced choices are insulting. It's about the same as also including a disabled "No" button with hover text that reads "disabled because fuck you".
  • superxpro12 40 minutes ago
    We added a clause in our coding standard to make all booleans reference the positive frame of reference only. This happened after I got fed up with dealing with too many if !(!not_has_missing_field) operators. Just.... make everything positive: if (is_field_present)
    • dspillett 14 minutes ago
      I try to keep to that, but sometimes the flag is turning on a negative feature, disabling that which is the default and will remain so for compatibility reasons.

      Sometimes it is worth the effort of going through and changing the logic elsewhere to keep the boolean positive, sometimes that would be too much effort to retest at the time.

      Another option I like, when I have a config object interpreting things so I'm reading doing `if (config.IsWhateverThatThingIsEnabled)` then I can just have paired properties to pick from when I want to check IsEnabled or IsDisabled.

      I've come across code where there is an overide for an option to disable something and the naming plus the logical not really make you think about what is happening…

          if (!OverrideDisabledOptionToBlockAction) {}
    • delichon 30 minutes ago
      Agree. And I've been flagging double negatives in PRs for years (e.g. `not undead`). It makes me feel like the Ned Flanders of programmers.

      But RuboCop detects `!!something`, and I actually like that idiom, because I prefer to convert into true boolean types before passing them to a method, since it makes the intention clear in the code.

  • tdeck 43 minutes ago
    A program I occasionally use has a "Don't close" button in that dialog. Of course I'm more used to "Don't save", so I often hit it and then am surprised when the program stays open.
  • ccvannorman 1 hour ago
    I thought this was going to be about a marketing success example for Aspirin! ... Although, I guess in a roundabout way it was.
  • teeray 1 hour ago
    (A)bort? (R)etry? (F)ail?
    • Dwedit 1 hour ago
      Rip John C. Dvorak, writer of the Abort/Retry/Fail column from PC Magazine.

      On a different note, never underestimate the value of a modal dialog that gives you a chance to retry an IO operation that failed. Loose USB cables and network shares over Wifi can make those happen a lot more often.

      • roryirvine 50 minutes ago
        And it came from the days of floppy disks, so we often needed the chance to put the correct disk back in the right drive!
        • doubled112 40 minutes ago
          When the game comes on 14 floppy disks, sometimes you forget how to count in the excitement.
          • collingreen 22 minutes ago
            Keeping one of the disks from the pile was peak bff/sibling rivalry antics. It's like keeping out one of the pieces of the puzzle so nobody can finish it but you.
    • adiabatichottub 34 minutes ago
      As I remember, standard operating procedure was to retry 4 or 5 times, then turn off the computer and walk away in frustration.
  • tobadzistsini 43 minutes ago
    Not understanding the aspirin reference.
    • dragonwriter 32 minutes ago
      Aspirin had (though this is increasingly dated) unique cultural currency as a headache medicine for quite a while after it stopped being the overwhelmingly dominant first-line OTC remedy.
    • CPLX 39 minutes ago
      Pretty sure "causes Aspirin sales to soar" is an attempt at cleverly saying "gives people headaches"
      • cr3ative 28 minutes ago
        Thanks, I also found this unclear.
  • sb057 1 hour ago
    An active "yes/no/cancel" prompt is a paragon of usability compared to the modern standard of constant yes, except for when it fails with a silent no.
    • SoftTalker 39 minutes ago
      "Maybe later..."
      • WalterGR 23 minutes ago
        “Maybe later” and variants annoyed me to no end until I realized that the implication is that you’re not making an indelible choice. As with anything, it can be overused, but I personally enjoy not having to think about whether I can change my mind later.
  • flobosg 1 hour ago
    (2007)
    • SoftTalker 56 minutes ago
      For a site about usability, I was going to gripe about the tiny font, low contrast, and unresponsive layout until I saw that. It does look more suitable at 1024x768.
    • shaftoe444 1 hour ago
      Good year
      • baxtr 1 hour ago
        Every year was better before 2020!
  • 1970-01-01 31 minutes ago
    Great title. Great topic. The tiny details are all here, including the 4th option (X), the Abort/Retry/Fail link, and they even have RSS! Subscribed.