Stories
Slash Boxes
Comments

SoylentNews is people

posted by Fnord666 on Friday August 18 2017, @08:47AM   Printer-friendly
from the delete-all-your-files.-Ok? dept.

Submitted via IRC for TheMightyBuzzard

Try this simple technique to write messages that help users understand the reason for errors.

The first time a user encounters an application's documentation, it's not always with the user manual or online help. Often, that first encounter with documentation is an error message.

Technical writers should be involved in writing error messages. It's an important, although often overlooked, part of the job. After all, error messages are documentation, albeit documentation that's embedded in the code.

[...] An error message should be meaningful. By that, I mean full of meaning not only for a developer, but also for the user of the software. To prevent any panic or confusion, the message should be clear.

A meaningful error message should:

  • be short (you can write in sentence fragments);
  • contain a description, in plain language, of what went wrong; and
  • use wording or a tone that doesn't (whether explicitly or not) blame the user.

Source: https://opensource.com/article/17/8/write-effective-error-messages


Original Submission

This discussion has been archived. No new comments can be posted.
Display Options Threshold/Breakthrough Mark All as Read Mark All as Unread
The Fine Print: The following comments are owned by whoever posted them. We are not responsible for them in any way.
(1)
  • (Score: 3, Informative) by KritonK on Friday August 18 2017, @09:00AM (4 children)

    by KritonK (465) on Friday August 18 2017, @09:00AM (#555778)

    I intentionally specified an invalid URL at their web site, hoping to get an unhelpful 404 error. Instead, I got a very helpful "Unfortunately the page you are looking for no longer exists. We'd love for you to stick around, so visit our homepage to get started OR feel free to try a new search." with a link to said homepage and followed by a site-specific search box.

    They do practice what they preach!

    • (Score: 3, Insightful) by Wootery on Friday August 18 2017, @09:21AM (1 child)

      by Wootery (2341) on Friday August 18 2017, @09:21AM (#555782)

      Technically though the message of their 404 page isn't accurate.

      Unfortunately the page you are looking for no longer exists.

      No, it never existed.

      • (Score: 3, Funny) by kazzie on Friday August 18 2017, @01:41PM

        by kazzie (5309) Subscriber Badge on Friday August 18 2017, @01:41PM (#555871)

        Oh, so you think time flows that way....

        (The Bird/Guide MkII, HHGG Quandary Phase)

    • (Score: 2) by el_oscuro on Friday August 18 2017, @11:46PM (1 child)

      by el_oscuro (1711) on Friday August 18 2017, @11:46PM (#556183)

      That is a pretty good 404 page. However I like Ars better:

      https://arstechnica.com/x/sdjskjed [arstechnica.com]

      --
      SoylentNews is Bacon! [nueskes.com]
      • (Score: 2) by KritonK on Monday August 21 2017, @11:03AM

        by KritonK (465) on Monday August 21 2017, @11:03AM (#556968)

        Actually, the ars technica 404 page is what the article preaches against. A big 404 and an image of a shark, coming at warp speed at you from the moon, isn't very helpful. The opensource.com 404 page follows the principles of the article, explaining what the error is, without blaming the user. (It's our fault, for not having the page you requested, instead of yours, for trying to visit a non-existent page.)

  • (Score: 1, Touché) by Anonymous Coward on Friday August 18 2017, @09:22AM (16 children)

    by Anonymous Coward on Friday August 18 2017, @09:22AM (#555784)

    Ah, the wonders of "This program has performed an illegal operation"...

    Next problem: how get users to read error messages.

    • (Score: 3, Funny) by driverless on Friday August 18 2017, @09:51AM (1 child)

      by driverless (4770) on Friday August 18 2017, @09:51AM (#555798)

      When an error occurs in my program, I've always found that lighting up a giant '?' in the middle of the dashboard is fine as an error message. The experienced user will usually know what's wrong.

      • (Score: 0) by Anonymous Coward on Friday August 18 2017, @09:58AM

        by Anonymous Coward on Friday August 18 2017, @09:58AM (#555803)

        Wherefore your moniker, then?

    • (Score: 4, Insightful) by DannyB on Friday August 18 2017, @03:31PM (8 children)

      by DannyB (5839) Subscriber Badge on Friday August 18 2017, @03:31PM (#555927) Journal

      If you consistently provide error message which are helpful and useful, then users WILL read them.

      Error messages should be actionable. Don't just say "syntax error". Say "missing comma after Aardvark".

      Or better yet, if the program understands that to be the problem, then make it a warning, and try accepting it anyway, if the result would be unambiguous. Use backtracking parse or search to investigate all possible parsings with and without that missing comma after Aardvark. If the users input could have only one possible meaning, then accept it and make the red error a yellow warning instead. (But use words like ERROR and WARNING for users who can't see color.)

      Next, another one of my favorites.

      Exceptions.

      If your (web based) application throws an exception, then in the exception handler, DO NOT display the raw exception to the end user. Rather, log it, with a short unambiguous code like U13AK. Say that an error has occurred, and if you call Tech Support, then BE SURE to mention the code U13AK.

      Provide support people tools to look up the code U13AK and find the complete text of the exception that was thrown. That way the tech support people have the entire exception, but none of that info leaked to the end user.

      Another thing. Write errors with a GOAL of the user NOT calling for tech support. Not only make the error actionable, but make it so that the user is not confused, and able to solve the problem without calling for help. Both for the poor user's sake, AND to reduce tech support costs. When the user has to call tech support, they're already having a bad day, and you're making it worse. If the call gets escalated to my level, then they're really having a bad day and I really try to make sure they are happy when we're done. Not just a lame "are you satisfied with the resolution of this call", but that they're really happy. I don't work in tech support, so I don't have such constraints, stupid scripts and platitudes if a problem gets to my level.

      Now about that unambiguous code like U13AK. Use an alphabet which I call "base34". It is the 10 digits and 24 characters of the alphabet, excluding the letters "o" and "L", which resemble zero and one respectively. Print a base34 code with uppercase, but when an operator or user types it in, accept upper or lower case, and if O or L are typed, interpret them as zero and one. That makes things more pooch screw proof.

      Hope that helps.

      --
      To transfer files: right-click on file, pick Copy. Unplug mouse, plug mouse into other computer. Right-click, paste.
      • (Score: 4, Informative) by bryan on Friday August 18 2017, @05:09PM (2 children)

        by bryan (29) <bryan@pipedot.org> on Friday August 18 2017, @05:09PM (#555980) Homepage Journal

        I'm a fan of Crockford's base62 [crockford.com], which is very similar.

        • (Score: 2) by DannyB on Friday August 18 2017, @08:18PM

          by DannyB (5839) Subscriber Badge on Friday August 18 2017, @08:18PM (#556083) Journal

          +1 Informative - Thanks

          --
          To transfer files: right-click on file, pick Copy. Unplug mouse, plug mouse into other computer. Right-click, paste.
        • (Score: 1, Funny) by Anonymous Coward on Saturday August 19 2017, @12:11AM

          by Anonymous Coward on Saturday August 19 2017, @12:11AM (#556202)

          It's great that he left out 1, I, i, L, l, 0, O and o. However the "3" looks a lot like a "6".

      • (Score: 3, Informative) by frojack on Friday August 18 2017, @06:15PM (1 child)

        by frojack (1554) on Friday August 18 2017, @06:15PM (#556005) Journal

        Provide support people tools to look up the code U13AK and find the complete text of the exception

        This, a thousand times this!

        If you can't be bothered to write a proper error message, then at least tag it with some sort of semi-unique code that researchers or end users can search on the web. Even the lazy programmer would eventually get help from crowd sourced on line error databases.

        Just smack in a UUID with some prefix, and call it a day: KDE-Dolphin-ae04582a-ca27-4e81-9ffb-35aa18244a10 is a lot more useful than 15 occurrences in the code base that have the same "An error has occurred" text.

        Goes for "actual software" as well as the crap agile web-app developers spewed out by lash-ups-Я-us programmers.

        --
        No, you are mistaken. I've always had this sig.
        • (Score: 2) by DannyB on Friday August 18 2017, @08:23PM

          by DannyB (5839) Subscriber Badge on Friday August 18 2017, @08:23PM (#556087) Journal

          I'm not sure, but you seem to be suggesting tagging a certain error with a common error code. That is, many users might get a U13AK error.

          I was thinking that each time the exception is thrown, a new code is generated, and logged with the exception. That way when a user calls with code U13AK, what you are researching is that specific occurrence of the exception. You can look up other occurrences of the same exception by the class and line number that threw the exception.

          This might confuse users. But maybe generate both a common, and a unique error code. So all users who do this particular thing get an ID10T, but the one time it happened right now, the user got a U13AK along with it. It's like ID10T would be associated with the location in the code where the exception is thrown.

          --
          To transfer files: right-click on file, pick Copy. Unplug mouse, plug mouse into other computer. Right-click, paste.
      • (Score: 0) by Anonymous Coward on Friday August 18 2017, @06:57PM

        by Anonymous Coward on Friday August 18 2017, @06:57PM (#556032)

        Error messages should be actionable. Don't just say "syntax error". Say "missing comma after Aardvark".

        The problem with syntax errors is that the actual reason for the error is usually not knowable because the program cannot divine the intentions of the user. All it can really do is look at the current parser state, which is probably completely bogus (the input is already known to be invalid, after all), and try to guess what the user actually meant by it. Computers are notoriously bad at this. Sometimes this works OK, other times it will be completely wrong.

        The parser can explain which part of the input did not match its expectations, and perhaps even what those expectations were. Outside of trivial cases, this will likely require some knowledge of how the parser works for the user to comprehend it.

        Some parsers attempt to re-synchronize after detecting an input error in an attempt to proceed anyway. Again, sometimes this works OK, other times this makes the situation even worse.

      • (Score: 0) by Anonymous Coward on Friday August 18 2017, @10:00PM

        by Anonymous Coward on Friday August 18 2017, @10:00PM (#556142)

        There should be a distinction between anticipated error messages and un-anticipated. For example, if you can detect the PC or application is out of memory, then you can tell the user that the application doesn't have enough computer memory to continue. However, if you go to allocate memory and the allocator API itself returns "unknown error" or the like, then you cannot give a clear description of the problem to the user. The programmer using the API cannot tell either (unless it happens under testing and experiments can be done). The best one can do is guess and suggest: "This application encountered an unanticipated problem while trying to request more computer memory. It's possible your computer's memory is full." Being caused by lack of memory is only a guess. An "unknown error" by a memory allocator could be caused by defective RAM, cosmic rays, defective bus, defective allocator logic (api bug), etc.

      • (Score: 2) by turgid on Sunday August 20 2017, @09:39PM

        by turgid (4318) Subscriber Badge on Sunday August 20 2017, @09:39PM (#556788) Journal

        Exceptions are great fun. The whole point of exceptions is to spew out a stack trace at the unsuspecting luser when the "developer" can't be bothered to check the return codes from function calls in the right place. It's Enterprise(TM) and Professional(TM) and it makes your code look really cool when it dumps stack.

    • (Score: 2) by bob_super on Friday August 18 2017, @05:20PM (3 children)

      by bob_super (1357) on Friday August 18 2017, @05:20PM (#555986)

      In a previous life as an FAE, I dealt with engineers using pretty specialized tools.
      Way too many see the popup with the red cross and five lines of explanation, and close it without reading, before asking me to fix the problem. Many of our error messages were actually pretty detailed and would give you the answer. But the customers didn't realize the tools had progressed since the days of useless "some error occurred" messages.
      But then, there were some clearly-ESL messages which had obviously never been reviewed by a native speaker. With enough experience, you can find out whether the coder was Indian or Chinese, because they don't make the same English mistakes.

      • (Score: 2) by frojack on Friday August 18 2017, @06:17PM (1 child)

        by frojack (1554) on Friday August 18 2017, @06:17PM (#556008) Journal

        Put it all on line, and get google sort it out.

        But you need some unique-ish thing to search.

        --
        No, you are mistaken. I've always had this sig.
        • (Score: 2) by bob_super on Friday August 18 2017, @06:22PM

          by bob_super (1357) on Friday August 18 2017, @06:22PM (#556012)

          Unique error codes, which you can google with the tool name, are pretty good, if someone already had the same problem.
          I tried to lobby to release a database of error codes (where it comes from, why, what to do), but when the tool is over 10GB (now 30) with over 100k files, it's too late to start...

      • (Score: 2) by maxwell demon on Friday August 18 2017, @08:04PM

        by maxwell demon (1608) on Friday August 18 2017, @08:04PM (#556076) Journal

        Maybe if the user clicks OK too quickly to have possibly read the error message, pop up another box with a short quiz about what the error message they just clicked away actually said. :-)

        --
        The Tao of math: The numbers you can count are not the real numbers.
    • (Score: 1, Interesting) by Anonymous Coward on Friday August 18 2017, @07:32PM

      by Anonymous Coward on Friday August 18 2017, @07:32PM (#556053)

      Next problem: how get users to read error messages.

      I actually solved this problem with my users by making up error codes that sound technical. I borrow from the style of actual C library error codes, and sometimes I use error codes straight out of C like ENOENT. Make sure it starts with the letter E, is all caps, and is cryptically just enough like something that could be one or two English words.

      They remember it every single time. The first time I did that was out of sheer frustration. Then, to my complete and utter surprise, users started mentioning this specific EFIZBAZ error code, telling me exactly where the problem was. It was bliss! Except for the fact that without reading TFA, I'm going to bet the author is going to say that what I found is unpossible.

      Give the user a short, clear, concise explanation of what went wrong. The user will never fucking even try to read it!

      Give the user EBINWIDGET. They report it correctly every single fucking time! And I must have 50 different, completely made up error codes like that running around by now!

  • (Score: 2) by mth on Friday August 18 2017, @09:23AM (7 children)

    by mth (2848) on Friday August 18 2017, @09:23AM (#555785) Homepage

    The problem with "Printing failed" as an error message isn't that it isn't clear, but that it's missing details: it doesn't say why the printing failed. Instead of trying to make wild guesses ("Is your printer turned on?") it would be far more useful to spend some development effort to provide more details in the error message.

    For example, the following messages would be far more useful to the user than the suggestions from the article:

    • Printing failed: communication with printer timed out
    • Printing failed: insufficient access privileges
    • Printing failed: unable to accept print job: out of disk space
    • Printing failed: syntax error in document
    • (Score: 1, Funny) by Anonymous Coward on Friday August 18 2017, @09:41AM (1 child)

      by Anonymous Coward on Friday August 18 2017, @09:41AM (#555794)
      lp0 on fire
      • (Score: 3, Interesting) by Anonymous Coward on Friday August 18 2017, @11:50AM

        by Anonymous Coward on Friday August 18 2017, @11:50AM (#555837)

        That was a pretty good error message back in the days.

        There were a couple of types of printers, drum printers and chain printers, that had a revolving drum or chain running at very high rpm. So high that they were able to print a line in the time a normal printer could print a character. Because of the high rpm, they created a lot of paper dust, and had to be cleaned often with isopropyl alcohol.

        Anything running at high rpm generates heat, and both paper dust and alcohol is flammable. In normal operation the paper was moving, and they wouldn't heat the same point continuously for long enough to ignite it.

        These printers had two error lines: Offline and Paper jam. This gives four combination:

        Not offline, no jam: Printing fine.
        Offline, no jam: Printer was set to offline manually.
        Offline, jam: Paper jammed and went offline automatically. Fix the jam and hit the online switch

        And the last combination:

        Paper jam, not offline: The paper is stuck, but the printer is still printing and generating heat, but because the paper cannot move, the temperature increases quickly.

        The console would show the "lp0 on fire" error message and the operator would rush into the printer room, hoping that he could press the offline button before the paper caught fire.

        Modern printers don't do this, but the combination of "the paper is stuck but I'm still printing" is not a valid situation, so the error message has remained. Though Linux changed it to something like "on fire, eh?"

    • (Score: 4, Funny) by DannyB on Friday August 18 2017, @03:37PM (1 child)

      by DannyB (5839) Subscriber Badge on Friday August 18 2017, @03:37PM (#555931) Journal

      Your error message should not merely indicate failure, your program should try to take action to correct the problem.

      Error: unable to format drive A:, formatting drive C: instead.

      --
      To transfer files: right-click on file, pick Copy. Unplug mouse, plug mouse into other computer. Right-click, paste.
      • (Score: 3, Funny) by aristarchus on Friday August 18 2017, @09:09PM

        by aristarchus (2645) on Friday August 18 2017, @09:09PM (#556117) Journal

        Error: unable to format drive A:, formatting drive C: instead.

        That's no Error, it's an act of mercy, a coup d'grace!

    • (Score: 2) by frojack on Friday August 18 2017, @06:26PM

      by frojack (1554) on Friday August 18 2017, @06:26PM (#556016) Journal

      The problem with "Printing failed" as an error message isn't that it isn't clear,

      There are a million ways to fail, and (usually) only one way to succeed.

      Software (if written professionally) takes into account as many of those as possible.
      Every check for proper data/outcome/format/yadda-yadda has a separate error message.

      Often there is no value to the end-user of knowing the exact reason the print failed. Because there's nothing they can do about it anyway.

      So you give clear messages where the user CAN act, and tech support unique ID messages where the user can't fix it.
      Tech support need a unique-ish value to track it to an exact line of code.

      --
      No, you are mistaken. I've always had this sig.
    • (Score: 1) by mobydisk on Friday August 18 2017, @06:43PM

      by mobydisk (5472) on Friday August 18 2017, @06:43PM (#556024)

      YES! I wish I had mod points! The article is completely wrong: it recommends error messages that provide no useful information. The author says that "Printing failed" is bad but "Printing failed. Please check your printer" is good. No! How about "Printer OFFICE14 is offline" or "Paper jam on printer OFFICE14"

      Really, this is about programmers simply not following best practices. If you call a function, and it returns an exception object with a message "Paper jam" why would you write code that says this:
            causeOfError = printer1.Print(document1);
            if (causeOfError != null) Display("Something went wrong.")
      JEEEZ!!! Instead, write:
            if (causeOfError != null) Display("{printer1.name} had error {causeOfError}");

    • (Score: 2) by el_oscuro on Friday August 18 2017, @11:42PM

      by el_oscuro (1711) on Friday August 18 2017, @11:42PM (#556181)

      Just finished nuking systemd from my Kali box, and replacing it with sysinit.

      The reason why? Shitty error handling. I installed Nvidia drivers for cuda support, and they appeared to install OK. After the reboot, no desktop, no SSH, nothing. Eventually I was able to boot into maintenance mode and remove the drivers. After rebooting again, I still couldn't get my desktop and I got:

      systemd.logind failed to start. please run systemctl status systemd.logind for more info.

      Running the systemctl status systemd.logind command:

      "systemd.login failed to start"

      I couldn't even get anything meaningful with stack trace, and google was no help. So I nuked it from orbit just to be sure.

      --
      SoylentNews is Bacon! [nueskes.com]
  • (Score: 1, Funny) by Anonymous Coward on Friday August 18 2017, @09:30AM (5 children)

    by Anonymous Coward on Friday August 18 2017, @09:30AM (#555788)

    "We Have Detected Radiation Coming From Your Keyboard. Please Remain Calm."

    • (Score: 3, Funny) by PiMuNu on Friday August 18 2017, @09:44AM (4 children)

      by PiMuNu (3823) on Friday August 18 2017, @09:44AM (#555795)

      Error: "missile launch sequence abort" could not be executed.

      • (Score: 4, Funny) by maxwell demon on Friday August 18 2017, @09:50AM (2 children)

        by maxwell demon (1608) on Friday August 18 2017, @09:50AM (#555797) Journal

        Error: "missile launch sequence abort" could not be executed, command aborted.

        --
        The Tao of math: The numbers you can count are not the real numbers.
        • (Score: 3, Funny) by PiMuNu on Friday August 18 2017, @10:23AM (1 child)

          by PiMuNu (3823) on Friday August 18 2017, @10:23AM (#555812)

          It looks like you are trying to abort the missile launch sequence. Would you like help?

          • (Score: 5, Funny) by maxwell demon on Friday August 18 2017, @10:51AM

            by maxwell demon (1608) on Friday August 18 2017, @10:51AM (#555826) Journal

            Error trying to abort.
            (A)bort, (R)etry, (I)gnore, (F)ail?

            --
            The Tao of math: The numbers you can count are not the real numbers.
      • (Score: 0) by Anonymous Coward on Friday August 18 2017, @07:02PM

        by Anonymous Coward on Friday August 18 2017, @07:02PM (#556034)

        "For sale: sequence abort, never worn"

  • (Score: 0) by Anonymous Coward on Friday August 18 2017, @09:34AM (10 children)

    by Anonymous Coward on Friday August 18 2017, @09:34AM (#555789)

    printf("something isn't as it should be!\n");

    ???

    • (Score: 0) by Anonymous Coward on Friday August 18 2017, @09:48AM (2 children)

      by Anonymous Coward on Friday August 18 2017, @09:48AM (#555796)

      printf("Should not ever get here - abort\n"); exit(666);

      • (Score: 0) by Anonymous Coward on Friday August 18 2017, @11:53AM (1 child)

        by Anonymous Coward on Friday August 18 2017, @11:53AM (#555838)

        /* Cannot possibly happen */
        while(1) printf("Bugger\n");

        Support ticket 12345:
        User reports that his screen is filled with the word "bugger".

        • (Score: 2) by tangomargarine on Friday August 18 2017, @02:49PM

          by tangomargarine (667) on Friday August 18 2017, @02:49PM (#555902)

          Trivial Updates:
          October 31 - Fixed a bug that would briefly turn you into CDMoyer, output the word "balls" and then log you out.

          --
          "Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
    • (Score: 4, Insightful) by maxwell demon on Friday August 18 2017, @09:53AM (5 children)

      by maxwell demon (1608) on Friday August 18 2017, @09:53AM (#555800) Journal

      No, error messages should go to stderr.

      --
      The Tao of math: The numbers you can count are not the real numbers.
      • (Score: 0) by Anonymous Coward on Friday August 18 2017, @09:58AM (4 children)

        by Anonymous Coward on Friday August 18 2017, @09:58AM (#555802)

        Or written to c:\log.log

        • (Score: 0) by Anonymous Coward on Friday August 18 2017, @10:03AM (3 children)

          by Anonymous Coward on Friday August 18 2017, @10:03AM (#555804)
          Please insert disk in drive C:. Press any key when ready.
          • (Score: 0) by Anonymous Coward on Friday August 18 2017, @10:25AM

            by Anonymous Coward on Friday August 18 2017, @10:25AM (#555814)

            "There has been an undetectable error in your system. Note: "your" system. Microsoft assumes no liability, expressed or implied. You may want to check on your children. NO, I cannot tell you why. There has been an undetectable error in your system."

            I always wondered, how did they know? And it was sad about the children. Microsoft! Ha! Anomoly??

          • (Score: 0) by Anonymous Coward on Friday August 18 2017, @07:44PM

            by Anonymous Coward on Friday August 18 2017, @07:44PM (#556063)

            My favorite, from before USB was a thing:

            No keyboard detected. Press enter to continue.

          • (Score: 2) by maxwell demon on Friday August 18 2017, @08:10PM

            by maxwell demon (1608) on Friday August 18 2017, @08:10PM (#556078) Journal

            "Press any key when ready", the most misleading message of all times: You couldn't press any key; keys like Shift, Ctrl and Alt wouldn't work.

            --
            The Tao of math: The numbers you can count are not the real numbers.
    • (Score: 0) by Anonymous Coward on Friday August 18 2017, @10:08AM

      by Anonymous Coward on Friday August 18 2017, @10:08AM (#555807)

      You forgot to check the error code from your printf() call...

  • (Score: 4, Interesting) by Rich on Friday August 18 2017, @10:21AM (6 children)

    by Rich (945) on Friday August 18 2017, @10:21AM (#555810) Journal

    Page 311 f.: "A good alert box message says what went wrong, why it went wrong, and what the user can do about it. Try to express everything in the user’s vocabulary.". From the First Printing, November 1992.

    In the Microsoft world, a lot of software fails as far as the second sentence is concerned. I (think I) have a deep understanding of how computers work, and how to make them work, but I very rarely get involved with Windows. It baffles me each time I see one of those error messages, where both noun and verb of what just failed seem to be straight out of an advanced level MCSE exam. And if you believe that close boxes have to be on the right, and OK buttons on the left, your mind has been poisoned by the toxic Redmond influence and will probably also write error messages in this MCSE lingo. A lot of Linux developers come from the MS side, so they don't know any better. Yet, a large number of people insist that Gnome 2 had it (and MATE still has it) right - hint: Their main, user facing software was written by Mac and Mac Finder (Classic) veterans.

    Aside from the wording, there's one thing, particularly with newer software, that wants to belong into the "Just Works" class: The developers think they can entirely ignore error messages, because, well, it just works. Except it doesn't. And it certainly doesn't, if any online connection is required. It is immensely frustrating to see a work indicator (spinning wheel or so, and also opposed to a progress indicator, which might even give subtle clues on where something just got stuck) just continue indicating work, without anything happening.

    It is my personal belief that in this case, no action should take more than two seconds, but if it absolutely has to (eg CPU time), for some reason, it needs accurate progress indicating, And if it fails, there should be usable diagnostics hidden under an "Advanced" diagnostics tab in the error messages. E.g. "The network seems to be up, and I could resolve the name, but the cooking recipe server (recipes.cooking.com, at 123.45.6.78) does not respond."

    ps: Oh, you didn't know, what "NIM:HIG" means?! I took that for, like, totally, granted. It's "New Inside Macintosh: Macintosh Human Interface Guidelines", ISBN 0-201-62216-5. Unfortunately even the originating company doesn't adhere to it anymore.

    • (Score: 0) by Anonymous Coward on Friday August 18 2017, @10:36AM (1 child)

      by Anonymous Coward on Friday August 18 2017, @10:36AM (#555818)

      > ps: Oh, you didn't know, what "NIM:HIG" means?! I took that for, like, totally, granted. It's "New Inside Macintosh: Macintosh Human Interface Guidelines", ISBN 0-201-62216-5.

      Nitpick: isn't that "NIM:MHIG"?

      • (Score: 2) by Rich on Friday August 18 2017, @11:09AM

        by Rich (945) on Friday August 18 2017, @11:09AM (#555831) Journal

        Nitpick: isn't that "NIM:MHIG"?

        It should be, heh?! But from the times of lore, there are precursor documents, which lacked the "Macintosh". I have one older book in hardcopy, but I must've misplaced it. There also used to be a detailed description of how to use the text-only file card metaphor from AppleWorks (classic) on the II. IIRC, that was "Apple Human Interface Guidelines" (and the HIG part stuck). Which is long forgotten now, especially since IBM came up with the "let's fake a mouse workflow on text screens" SAA behaviour and MS borrowed from that. It introduced "OK" on left, because (and here you get the reason) that was meant to be the first button to be reached when tab-ing through a form (whereas on a pure mouse workflow, the natural completion of working down a page is in the bottom right corner (or left, with RTL scripts).

        Eventually Apple re-wrote the book for the New Inside Mac series (which still is the best programming documentation ever... seen their present docs on MIDI programming???), so the "Macintosh" also went into the title.

    • (Score: 2) by c0lo on Friday August 18 2017, @11:15AM

      by c0lo (156) Subscriber Badge on Friday August 18 2017, @11:15AM (#555832) Journal

      Unfortunately even the originating company doesn't adhere to it anymore.

      "Glue too old, adherence aborted"

      --
      https://www.youtube.com/watch?v=aoFiw2jMy-0 https://soylentnews.org/~MichaelDavidCrawford
    • (Score: 0) by Anonymous Coward on Friday August 18 2017, @12:34PM

      by Anonymous Coward on Friday August 18 2017, @12:34PM (#555855)

      Microsoft tends to lump several user-visible error messages into one, and shows a couple of options that could maybe be the problem.

      The classic from IE: "The server was not found, or a DNS error occurred". If the server wasn't found, or a DNS error prevented you from getting the IP address of the server, how come I can see the request on the server? Heck, I've even had that error message while having the server code stop at a break point.

      It seems to me that that error message is the one shown for any error between GET / POST and having a complete response.

    • (Score: 0) by Anonymous Coward on Friday August 18 2017, @12:56PM

      by Anonymous Coward on Friday August 18 2017, @12:56PM (#555862)

      Uh, Microsoft normally fails all 3 criteria completely.
      It just says "Error: 0x...."
      You don't even get to know WHAT failed, you can only guess it from context. Certainly not why, and what to do about it? Microsoft themselves obviously don't know at least half the time, at least when one of their updates fails to install. AGAIN.

    • (Score: 0) by Anonymous Coward on Friday August 18 2017, @02:40PM

      by Anonymous Coward on Friday August 18 2017, @02:40PM (#555893)

      Developers of newer moBILE themed soffware also desire to cut localization costs by using abstract text-less icons and as little other text as possible. It's all part of the (cost cutting) plan.

  • (Score: 2, Flamebait) by kaszz on Friday August 18 2017, @10:23AM

    by kaszz (4211) on Friday August 18 2017, @10:23AM (#555811) Journal

    "Your Microsoft executed some bad Gates coding - Please upgrade to BSD or Linux NOW".

    Dumb fuck users - As Suckerberg(tm) would have said himself ;-)

  • (Score: 3, Insightful) by pkrasimirov on Friday August 18 2017, @10:42AM (4 children)

    by pkrasimirov (3358) Subscriber Badge on Friday August 18 2017, @10:42AM (#555820)

    First let's differentiate between logs and developer traces. Log message is something the system tell the user/admin. It should be translated to the appropriate language and has to have these 3 artifacts:
    1. What happened
    2. What's the impact
    3. What should be done to remedy the situation

    Example: "No free space on /tmp/report.tmp. Custom reports cannot be generated. Please free some space, restart the application and retry"

    It is also important to log the above such message once and not spam the user.

    Blame is completely irrelevant.

    Developer traces are for the solely consumption of the said developer or team. It is not produced by default, when turned on it can spam as much as the developer feels need, and it should be comprehensible only for them. It may contain sensitive data such as passwords and credit card numbers. It is for troubleshooting only and it is irreplaceable for systems where a debugger cannot be simply attached.

    The third ones, audit logs, are an entirely different thing and technically not a log. It is a write-only stream to tamper-proof storage with these artefacts: 1) When 2) Who 3) Op (CRUD) 4) old_value 5) new_value. It should run transactional with the main operation. Failure to audit log should lead to failure of the entire transaction.

    One more thing. Nobody cares about the "severity" except for filtering purposes. Compare "[ERROR] Cannot find log config file, will log to console" and "[WARNING] /sbin/init: Unexpected file size change".

    • (Score: 2) by maxwell demon on Friday August 18 2017, @10:58AM (1 child)

      by maxwell demon (1608) on Friday August 18 2017, @10:58AM (#555829) Journal

      The third ones, audit logs, are an entirely different thing and technically not a log.

      I think you want to read about the origin of the term "log".

      It is a write-only stream to tamper-proof storage with these artefacts: 1) When 2) Who 3) Op (CRUD) 4) old_value 5) new_value.

      In other words, a log in the truest sense possible (except that it doesn't contain ship speeds).

      --
      The Tao of math: The numbers you can count are not the real numbers.
    • (Score: 3, Insightful) by romlok on Friday August 18 2017, @12:36PM (1 child)

      by romlok (1241) on Friday August 18 2017, @12:36PM (#555857)

      Blame is completely irrelevant.

      In terms of technical debugging, perhaps, but it's certainly not irrelevant if you want the amicable cooperation of your users. People don't like to be blamed for things, especially when they didn't know better, or (as is often likely with complex computer systems) when it wasn't their fault in anything but the most vague terms.

      Consider if your example error message had been worded thus:

      "You used up all the space on /tmp/report.tmp. Custom reports cannot be generated. Please free some space, restart the application and retry"

      This wording carries the same overall meaning, but puts blame on the user for the lack of space. When a user is encountering errors while trying to get on with their work, they're not going to react kindly or co-operatively to being accused of things by the computer - even (especially!) if it was indeed their fault.

      • (Score: 3, Insightful) by krishnoid on Friday August 18 2017, @08:38PM

        by krishnoid (1156) on Friday August 18 2017, @08:38PM (#556101)

        Besides, I just *asked* the computer to put files there. It should have known better than to fill it up and then complain to me about it.

  • (Score: 4, Interesting) by coolgopher on Friday August 18 2017, @11:01AM (2 children)

    by coolgopher (1157) on Friday August 18 2017, @11:01AM (#555830)

    General failure reading drive A:
    (A)bort, (R)etry, (I)gnore?

    Or, more poetically, https://w2.eff.org/Net_culture/Folklore/Humor/abort_retry_ignore.poem [eff.org]

    • (Score: 3, Informative) by Fnord666 on Friday August 18 2017, @12:17PM (1 child)

      by Fnord666 (652) on Friday August 18 2017, @12:17PM (#555847) Homepage

      General failure reading drive A:
      (A)bort, (R)etry, (I)gnore?

      Or, more poetically, https://w2.eff.org/Net_culture/Folklore/Humor/abort_retry_ignore.poem [eff.org]

      I thought the classic error message was
      Keyboard not found. Press F1 to continue.

      • (Score: 0) by Anonymous Coward on Friday August 18 2017, @06:47PM

        by Anonymous Coward on Friday August 18 2017, @06:47PM (#556027)

        I thought the classic error message was
        Keyboard not found. Press F1 to continue.

        I think this is very elegant. "We don't think you have a keyboard. Once you have fixed that and can push F1, you may continue."

        I had thought the class error message was, "PC Load Paper"

  • (Score: 0) by Anonymous Coward on Friday August 18 2017, @02:27PM (4 children)

    by Anonymous Coward on Friday August 18 2017, @02:27PM (#555887)

    What if the user is at fault?

    • (Score: 1, Funny) by Anonymous Coward on Friday August 18 2017, @03:02PM

      by Anonymous Coward on Friday August 18 2017, @03:02PM (#555907)

      "Critical PEBKAC detected. Contact the returns department with error code: id-10t. You will be provided with an abacus and a box of crayons."

    • (Score: 2) by maxwell demon on Friday August 18 2017, @03:06PM (1 child)

      by maxwell demon (1608) on Friday August 18 2017, @03:06PM (#555912) Journal

      Cannot be the case.

      Don't write "wrong username or password", as that implicitly blames the user. Instead write "This username/password combination is missing from the database."

      SCNR

      --
      The Tao of math: The numbers you can count are not the real numbers.
      • (Score: 2) by bob_super on Friday August 18 2017, @05:36PM

        by bob_super (1357) on Friday August 18 2017, @05:36PM (#555992)

        You want people to try again and focus harder to avoid mistakes?
        Ask the experts [youtube.com].

    • (Score: 2) by Aiwendil on Saturday August 19 2017, @03:49PM

      by Aiwendil (531) on Saturday August 19 2017, @03:49PM (#556383) Journal

      "Unknown user/password combination" - it states just that, the combination is unknown (also covers missinng password database)
      "Unable to log in" - short and sweet, implies computer is at fault (append "please try again" to coax the user into trying again while still implying the fault is computerside)
      "Credentials not accepted" - implies that something failed (apply "please try again" if needed)
      "Credentials not accepted by system" - same as above put alludes system at fault.
      "Unable to synchronize, please retry" - same as above.

      Or my favorite: "Didn't work! Try again?"

  • (Score: 2) by Runaway1956 on Friday August 18 2017, @02:30PM (3 children)

    by Runaway1956 (2926) Subscriber Badge on Friday August 18 2017, @02:30PM (#555889) Journal

    Let's Keep It Simple Stupid. In fact, let's keep it succinct. To hell with clarity.

    "You're fucked."
    Or, maybe,
    "Self destruct initialized", but that was covered in the first posts.
    "Meltdown."

    I mean, is it really necessary to offer hints, or explanations, knowing that no one reads them anyway? Alright, maybe not exactly "no one", but a few geeks aren't statistically significant, are they?

    • (Score: 2) by Runaway1956 on Friday August 18 2017, @02:33PM

      by Runaway1956 (2926) Subscriber Badge on Friday August 18 2017, @02:33PM (#555890) Journal

      Oh, how about, "Your financial credentials failed to email to 20,000 random email accounts. Try again?"

    • (Score: 3, Touché) by tangomargarine on Friday August 18 2017, @02:43PM

      by tangomargarine (667) on Friday August 18 2017, @02:43PM (#555897)

      "An error occurred. Windows will now futilely pretend to check the Internet for solutions to this problem."

      --
      "Is that really true?" "I just spent the last hour telling you to think for yourself! Didn't you hear anything I said?"
    • (Score: 2) by maxwell demon on Friday August 18 2017, @04:17PM

      by maxwell demon (1608) on Friday August 18 2017, @04:17PM (#555951) Journal

      All too long. All you need is a simple

      Oops.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  • (Score: 2) by Azuma Hazuki on Friday August 18 2017, @04:17PM (1 child)

    by Azuma Hazuki (5086) on Friday August 18 2017, @04:17PM (#555953) Journal

    This shouldn't be hard. Say what happened as clearly as possible (and optionally also in geek-speak), why it happened (ditto), and what to do.

    "Error: Printing failed. 8.5 x 11 paper was not detected in paper tray. Please load paper and try printing again" -- much more informative that "PC Load Letter."

    And for a more complex case:

    "Error: Device driver for device nVidia GeForce GTX1060 has crashed.

    Please show your administrator the following: "BUGCHECK 0x000000f7: A driver has overflowed its stack-based buffer: Dump: 0x00000000 0x00f62748 0x23004756 0xDEADBEEF Location of core file at C:\WINDOWS\MEMORY.DMP.

    When you have finished copying this message, please press Return/Enter and Windows will attempt to reboot. If the error recurs, or if Windows is not able to repair itself, please shut the computer down and have a qualified professional perform maintenance."

    --
    I am "that girl" your mother warned you about...
    • (Score: 2) by maxwell demon on Friday August 18 2017, @08:14PM

      by maxwell demon (1608) on Friday August 18 2017, @08:14PM (#556080) Journal

      much more informative that "PC Load Letter."

      But wouldn't fit on the tiny printer display.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  • (Score: 0) by Anonymous Coward on Friday August 18 2017, @07:47PM

    by Anonymous Coward on Friday August 18 2017, @07:47PM (#556066)

    I always liked the log entries on the old AT&T system V system. If the temperature probe registered too high you would get "Core Meltdown Imminent". I always wondered what would happen if one of these machines were used by a nuclear power plant.

  • (Score: 2) by gawdonblue on Friday August 18 2017, @11:56PM

    by gawdonblue (412) on Friday August 18 2017, @11:56PM (#556192)

    Object reference not set to an instance of an object

    FFS

  • (Score: 2) by hendrikboom on Saturday August 19 2017, @01:32AM

    by hendrikboom (1125) Subscriber Badge on Saturday August 19 2017, @01:32AM (#556231) Homepage Journal

    When I was writing an Algol 68 compiler, decades ago, the syntax error messages would have the following style:

    I do not understand "," here.

    And it was in lower-case. It did not shout.

    -- hendrik

  • (Score: 0) by Anonymous Coward on Saturday August 19 2017, @05:49PM

    by Anonymous Coward on Saturday August 19 2017, @05:49PM (#556421)

    "this video cannot be played"

(1)