How not to produce a useful error message

how bout the old Windows “Illegal Operation” messages, scaring old people half to death that the feds would come knocking! Had a tough time getting grandma to try using her PC again after one of these :grin:

image

3 Likes

I love this whole thread! :rofl: Some of these, like the “Something Happened,” it’s hard to believe they’re real! LOL!

2 Likes

One of the old Winamp devs put a guru meditation in as the error window if a plugin crashed. possibly the modern skin plugin.

Opera blogs used to show a guru meditation error and an ASCII Buddha if the page was down.

Here is a message from my win10 PC.

3 Likes

I remember that very well!!!

4 Likes

The best fictional error is from StrongBad’s emails:
myl4d2addons_flagrant system error_thumb

Since the original version requires flash, here is the next best thing:

2 Likes

I remember the IMFart error from the AOL software.

2 Likes

As a programmer I would on occasion write code in which a decision could lead down one of several paths. Some of these paths were logically impossible as earlier decisions prevented the execution from ever reaching them. Nevertheless I still inserted error messages along the lines “Impossible error – cannot reach this point.” Frankly, this was so long ago I don’t recall if they ever popped up.

On a related topic, my favorite line of code was a call to an operating system function to abort the program. If the call worked the program stopped running and if the call failed the program stopped running.

2 Likes

I did that, too, and occasionally they might get triggered - usually by a serious data error resulting in a stored value that was logically impossible for the field that held it (no data typing). For example, the systems I worked on encoded negative numbers as very large positive numbers, so if a calculation went completely bananas and produced an impossibly large result, it would be interpreted by the OS as a negative number, potentially invalidating any test on the value of the field holding it.

The biggest danger in programming this sort of code was the assumption that you knew the format or values of the data you were processing, so in any chain of tests we always had a “bucket at the bottom” error message to catch any “impossible” states. Because occasionally the impossible could happen.

1 Like

Certainly possible. In my case I was using a language, Fortran 66, which by today’s standards probably had weak data typing.

1 Like

I was working in Assembler, with lengthy forays into machine code for patches between release dates. The ability to write in binary to any area of memory by address rather than data name effectively bypassed any concept of typing. Required care when coding, but made debugging easier.

1 Like

We’re showing our age!

1 Like
2 Likes

Well played sir, well played. :wink: Bonus points for the xkcd comic. It was so easy to write bad code under those conditions I’m amazed that anything worked.

These days I get “Catastrophic failure” Messages in Visual Studio…

1 Like

In my former employer I was frequently requested to do code reviews because it is something that I did well. I tended to use them as a teaching opportunity when finding something I didn’t like. One of the things I always tried to teach people was to make the error message (or exception message in Java terms) give the developer information they would wish they had if they were the one assigned to investigate an error that they couldn’t reproduce. It takes more effort to do it, but it’s much handier than “error occurred.”

Which would you rather investigate as a developer:
a) error occurred
b) unexpected value for size
c) unexpected value for size(42)
d) unexpected value for size(42) in buildSpace(mode=upscale,model=treehouse)

I have also become a huge fan of a small FIFO of recent trace data, aka a “flight recorder” that can be dumped when things go wrong. It doesn’t need to do too much, but if it can show recently invoked functions of the code it can give someone a hope of finding and fixing a bug.

Unfortunately designing for failure takes even more effort to do and most programmers wrongly (and lazily) believe their code will never break.

4 Likes

I was just reminded of the Task Failed Successfully Error from windows XP.

I always tried to put in meaningful error messages, even for those “impossible” results, such as “whoops, that shouldn’t have happened”… :smiley: (including the name of the procedure/method and what it was doing).

I used to program Assembler (Z80, 6502, 68000 and x86). A few years ago, I worked for an advertising agency that also ran the eShops for several well known clothing brands. I joined as a freelancer to look at the corporate website for one of these brands. Then they asked me to look at their eShop code, because (with 4 front end servers on a load balancer and a mySQL server on the backend) it would collapse when the PayPal newsletter came out and more than 200 users started to look at the site! The db admin would have to restart the database every 2 minutes during the rush.

I had a look at the code and the database design. The problem was, most of the programmers were not database specialists, they were fresh out of uni, they could write good, readable code. Readable for humans. They had no idea of how the database worked or the underlying processors on the servers. They’d just tried slapping more and more indexes onto the tables, until the indexes were almost bigger than the dataset. It worked fine (<0.5 seconds to load) when they were testing, but as soon as there was load, the pages would take over a minute to load and the database server would bomb out.

I dropped most of the indexes and re-ordered the WHERE clauses in the key statements. I then went through their PHP code and re-ordered some of the IF statements (checking positive instead of negative), it makes a marginal difference on a single user machine, but those changes made a huge difference on the production servers.

When the next PayPal newsletter came out, the site was coping with over 200 users per server with response times of under 0.5 seconds.

My code was still easily readable, but was also easily readable for the computer. Understanding the underlying hardware, the operating system, the language and the database and how they all work together is very important, especially when it comes to heavy loads. That aspect seems to be missing from modern courses.

I held a workshop on optimization and after a week at the company, they offered me a full-time gig.

1 Like

As someone familiar with the Monty Python sketch “Four Yorkshiremen” (known in some places as “Four Millionaires”), I feel like the next post ought to start something like “When I were a lad…” :wink::joy:

A fax server (GFI Fax Server at the time) or fax server component (some random 3rd party I don’t remember) once gave the best error message ever:

“The Fax Server is toast! Game over, man, game over!”

No indication of what wrong. And, IIRC, you just open the program again and everything works fine. My boss and future boss were laughing their asses off when they saw it. Some time later, I was able to witness it myself working on that piece of junk.

2 Likes

Actually I AM a Yorkshireman.