Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
How To Avoid The Dreaded “Id10t” Error Message
#1
Most who will read this already know how to make good use of error messages but, in a vein attempt to educate the wider masses on the subject, I will write what some find to be blatantly obvious anyway… You may want to share this little monograph with your friends if you feel they might benefit from it because no one wants to see the id10t error message applied to them. 

Briefly, lets talk about what an error message is, shall we? If you were going to write a small script to do some simple task on your own computer, you may only need to write just a few lines to make it work satisfactorily. You won’t need much because you’re the only person who is going to use it and if anything goes wrong you’re most likely gonna be able to figure it out for yourself. Simple. Now, things tend to get a bit more complicated when you decide to make your little script into something you intend to share with others. Why? Because those end-users may not completely understand what it is doing and if something goes wrong it might not be readily apparent to them where the problem is. They just know it quit in the middle. 

Let’s say someone who has such an issue contacts you for help. You can’t see their screen and you don’t know how their system is setup so essentially you got no info to go on other than them saying your script didn’t work. This sucks. What you are going to have to do is ask them a bunch of questions to figure out what is going on. Unfortunately, some won’t understand enough about the system to give you intelligent answers. Most people who use computers really have no clue how they work and no matter how simplistic your questions may seem to you they’re just going to be mystified. It’s a bad situation for both developer and user.

This situation can be completely avoided if you write your script in such a way that it monitors what it does and checks for errors along the way. If an error is detected, the script could be written to try and fix it itself or, if the error is catastrophic, it could exit with a message letting the user know what happened. Even if the end user doesn’t understand the error message, you will. Therefore, if they contact you for help and convey the contents of that message to you, it would be quite easy to diagnose the problem and help them get the script working. 

This process of testing for faults and either moving on to the next function or stopping with an error is precisely how software is written. Very clever software includes subroutines that correct errors and continue working without the end user ever knowing there was an issue at all. The downside is that the simple little quick and dirty script we started out with is now much larger with many more lines of code. I have a published script that I wrote that has only one line that actually does the work intended but there are 400 more lines to make it user friendly, including an option to display a help screen, do testing and provide error messages. 

So, you should now have a pretty clear understanding of what error messages are. Some are intended to help the end user and others are more for the developers themselves to help them diagnose issues. Really clever messages do both. 

It should be obvious to anyone reading this that relaying the content of error messages to those whom you reach out to for help from when something goes wrong is key but here’s where the id10t error comes in…  I can’t even begin to count the number of times someone has sent me a personal message saying something like, “My computer isn’t working and I got an error message… Can you help me fix it?” Uhh, well, no, not really… I have NO CLUE what’s wrong, now do I? What I have to do at this point is to ask the person to tell me what the error message said and they usually respond with something like,” “I don’t know, It said something about the kernel and then went on blah, blah, blah...” By the way, this is direct quote and not something I just made up… Yeah, this is when the dreaded “id10t” error appears ‘cause now I have to explain to this dim bulb that I can’t help them unless they can tell me exactly what the message is saying. Sometimes, I just blow them off… I know that sounds mean but very often I just don’t have the time nor the inclination to draw information out of them in dribs and drabs.  I’ll write back and say that I don’t know what’s wrong and I can’t help given the amount of malformation I have. You’d be surprised at the number of people who just go away at that point; they don’t offer anymore information, they don’t send a ‘thank you anyway message.’ Nope, they just disappear. 

You can see the exact same story played out in forums all over the web. People just don’t get it. Their id10t error goes unresolved…

You, Dear Reader, are now immune to the dreaded id10t error simply because you are armed with good information. You now know that including the exact text of any and all error messages you receive when experiencing a problem is important to those who are trying to help you. You may have also already surmised that entering error message text into a web search engine will very likely give you results that address your issue specifically and a solution to your problem might readily be found by doing so.
-- Your Fearless Leader!

Reply
#2
I almost fell out of my chair laughing when I saw the title of this thread. Nice attention grabber without being click-baity (is that even a word?)

Also seriousness (?) aside, in programming, writing routines (script) designed to catch input errors and prevent the program from just crashing, then deliver an error message that accurately identifies the problem is called error trapping. Sadly, proper error trapping has become a lost art, especially amongst web site designers (website designer being a kind of programmer). I'm constantly having my flabber gasted by the number of bad website designers who either are too incompetent to properly write error trapping routines, are too lazy, or both!

Back in my old Commodore 64 days, I did some programming in Basic 8.0 (out of desperation when the "new" 3.5" floppy drives came out and there were no adequate menu programs available; btw, there is a reason it was called Basic so I no longer program). As Joe pointed out, when I tried to share the program with others on a bulletin board (remember those?), the need for error trapping became painfully obvious when people would do things with the program I had known better than to do with it.

Proper error trapping can be very time consuming, easily taking as much time as writing the program itself (possibly even more in the case of a smaller program or script). Making it harder is trying to anticipate what others my do wrong. Since error trapping often gets left to the end of the programming process, it frequently gets skimped on due to ignorance, pure laziness, the remaining budget may not allow much time to spend on error trapping, or the programmer(s) may simply be sick and tired of working on that particular project and wants to just get it done and over with or may be rushed to move on to another project for one or more of multiple reasons.

I had dinner with a friend of mine recently to catch up on each other's lives (not to mention satiate our craving for Thai food) and the topic of bad website programming, including bad error trapping came up. She is a university librarian by trade who, after getting laid off shortly after the '08 crash, went back to school to learn website design (she now has her old job back). I was sharing with her the frustrations I was dealing with when my old, perfectly good local credit union decided to merge with a larger, regional credit union.

In addition to the string of stupid errors in the overall process, the new credit union's website apparently was designed by a team of low IQ monkeys that had to have a string tied from one of their hands to the end of their tail to they could find their tails in the dark. The very first time I tried to log into their website to set up my accounts, after typing in an account number, password, and pin number, I was presented with a page that showed my personal profile, which was riddled with errors, so I started correcting the errors. When I clicked on Continue, I would get an error message saying the system was not available. I tried umpteen times over the next week or two at different times of the day (and night) trying to get through.

It wasn't until I decided to ignore the errors in my profile and plow on through that I discovered that profile screen was not to have any input done on it (the idiots should have not made user input available) and I was finally able to get through ( and found there was another place to correct profile errors). Besides the stupidity of allowing user input on that screen, the magnificent morons used a generic error message instead of programming in the correct one (which would not have not been needed if they hadn't allowed input on that first profile screen). There are other problems with the website but would be going off topic.

Back when I was still using Windows (NT, XP, and 7), I used to habitually black cookies when the popup would appear saying the website wanted to put a cookie on my computer and asking if would I allow it or not. Now some websites do need cookies for passwords, contact infor, etc. such as forums like this or vendor websites but not every cottonpicking website had a valid reason for putting a cookie on my computer and it seems like pretty much all of them wanted to. If I stupidly blocked one that needed to be there, when I tried to do something on the site that needed the cookie, it would throw up an error message that had nothing to do with the problem. Needless to say, the website's tech "help" had no clue what the problem was.

I eventually figured out the problem, and when I would run into it after that, I would just go back and unblock the cookie. Unfortunately, many websites use a third party website to transparently handle certain functions, such as a vendor using another company to handle payments. Unfortunately, the vendor would need its own cookie and would use its own name on the cookie so there was no way to determine which cookie needed to be unblocked (I would have to unblock all cookies to fix that problem, then be plagued with the popups again until I had blocked all the unnecessary cookies again). If the vendor website has been properly error trapped, the name of the blocked cookie would have been identified in the error message (assuming the error message had correctly identified a blocked cookie in the first place).

My friend shared that error trapping was barely mentioned in her classes (these were college level classes) and that most of the web design discussed was for with the use of various templates rather than starting from scratch (btw, this is a very intelligent woman). All I could do was roll my eyes and snort.

The upshot of this diatribe is, if you are going to share your scripts (programs, whatever) with others, please, please properly error trap them (and , if you don't know how, learn how). It will save everyone a lot of grief. Proper error trapping will prevent the program from crashing and can allow it to, not only prevent a crash , but to keep on running and direct the user to make the correct input needed. Gracefully shutting down the program and throwing up an error message should be a last resort for the stupidest of input errors but, even then, needs to to have the correct error message attached to it (one that can be interpreted by the masses, not just a number) and not a generic one that has no bearing on the actual problem (like the error message i kept getting on my credit union's website that claimed the system was not available, which was a lie, instead of telling me not to make inputs on the previous page, which would have been unnecessary had the web designer(s) had his head in the sunlight when he programmed it).
Jeannie

One has to be proactive, not reactive, to ensure the safety of one's data so backup your data! And RAID is NOT a backup!
Reply
#3
Alternatively, if error messages were written in plain English instead of "geek speak" the average user might actually gain a glimmer of understanding. Now I realise that may appear flippant and that I am over simplifying matters, but having some expertise in an unrelated technical field I know it is essential to formulate explanations to non-experts in terms they can understand. Unfortunately computing experts insist on using their own invented terminology and acronyms that give no clue to their meaning.
Cliff Coggin
Mint 19.2 Cinnamon
Reply
#4
ahh , Jeannie ... Basic 3.5" floppy's , BBS , 300 baud Wink those we the days ! Presently working to install ARCH , have cli prompt so far and working on a DM/DE. Errors all over the place ! Google is my friend, leaning lots , and appreciating the DE installers out there. Currently running Mint Cinn. as my main.
Dos 3.2 to Win 10.
Main - Cinnamon 19.2
   Resistance Is Not Futile!
       It's voltage divided by current
Reply
#5
(01-14-2020, 05:06 AM)rick forges Wrote: ahh , Jeannie ...  Basic 3.5" floppy's , BBS , 300 baud Wink those we the days ! Presently working to install ARCH , have cli prompt so far and working on a DM/DE. Errors all over the place !  Google is my friend, leaning lots , and appreciating the DE installers out there. Currently running Mint Cinn. as my main.

Wow! 300 baud, Man I had one of those in my Packard Bell 386! Those were the Days....  Big Grin

I Did a ARCH BTW install on this box 2 months ago. I installed Cinnamon DE on it  and so far it is doing great!
Shocked me that it booted the first time to a prompt! That part was easy, the rest was hard, hours of typing as I am a hunter & picker typer and disclexit to boot!
My Packard Bell 486 had a 33.6 baud that was the best... Lol
LLAP
**********************************************************
Taglines of the BBS Days:
Today is the tomorrow you worried about yesterday. 
  Everybody remember where we parked. - Kirk
    Not everything in life is a 1 or a 0.
       Experience enables you to recognise a mistake when you make it again...
Reply
#6
(01-13-2020, 10:08 PM)cliffcoggin Wrote: Alternatively, if error messages were written in plain English instead of "geek speak" the average user might actually gain a glimmer of understanding.

Error messages on windows are like that, trying to not sound "complicated", which causes them to be useless.

Just knowing if something went wrong is nice, but to actually fix the problem, you need to know what went wrong.
My website - My git repos

"Things are only impossible until they’re not." - Captain Jean-Luc Picard
Reply
#7
I think at least part of the time the error message could be useful to both new and advanced for instance:

error a script has aborted at line 47

that would let the new person know it was a script and the advanced know where the problem is, yes I realize they can't all be able to give information to both sides but when they can it would be nice to slowly move someone up the experience ladder.
Reply
#8
(01-14-2020, 09:45 PM)spudnuts Wrote: I think at least part of the time the error message could be useful to both new and advanced for instance:

error a script has aborted at line 47

that would let the new person know it was a script and the advanced know where the problem is, yes I realize they can't all be able to give information to both sides but when they can it would be nice to slowly move someone up the experience ladder.

That assumes the error message is correct. Often times, it isn't correct due lousy error trapping.
Jeannie

One has to be proactive, not reactive, to ensure the safety of one's data so backup your data! And RAID is NOT a backup!
Reply
#9
Small follow up:

Generally it is really hard to know for what reason a program or script failed, therefore an error message should tell the user what operation went wrong.

As an example imagine a program that keeps something in memory. If an operation corrupted this data, you will not know until a different operation tries to access it. And even then, the program might not notice and happily do more operations on the corrupted data, until something fails, which might be directly after the access or even minutes or hours later.

What would an error message in this case be? The first idea most people would have, something like "Aborted due to corrupted memory", is not realistic, because the program has no idea whether the memory is corrupted, just that one operation failed, which might have been caused by a number of different things. So a realistic error message would look like this: "program: file.c:47: function: Assertion 'variable == 0' failed." or "ERROR: Operation fancy_function() failed with error code 2.".
My website - My git repos

"Things are only impossible until they’re not." - Captain Jean-Luc Picard
Reply
#10
(01-15-2020, 01:31 PM)leon.p Wrote: Small follow up:

Generally it is really hard to know for what reason a program or script failed, therefore an error message should tell the user what operation went wrong.

As an example imagine a program that keeps something in memory. If an operation corrupted this data, you will not know until a different operation tries to access it. And even then, the program might not notice and happily do more operations on the corrupted data, until something fails, which might be directly after the access or even minutes or hours later.

What would an error message in this case be? The first idea most people would have, something like "Aborted due to corrupted memory", is not realistic, because the program has no idea whether the memory is corrupted, just that one operation failed, which might have been caused by a number of different things. So a realistic error message would look like this: "program: file.c:47: function: Assertion 'variable == 0' failed." or "ERROR: Operation fancy_function() failed with error code 2.".

That would be far more informative to a tech (even though it would be meaningless to a lay person) than some generic error message that has nothing to do with the real problem and is thus useless to everyone.
Jeannie

One has to be proactive, not reactive, to ensure the safety of one's data so backup your data! And RAID is NOT a backup!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)