• Paul (unregistered)
    Comment held for moderation.
  • Gotta Love Know-It-Alls (unregistered)

    CVS is just more honest than SourceSafe, where with every five-minute check-in or check-out process, you could swear it was cursing you under its breath.

  • The IUnknown coder (unregistered)

    That pales on comparison to an error message I accidentally left in my Beta product....

    "Something's f***ked, please call tech support"

    of course, I spelled it all out without the wimpy asterisks....

  • (cs)

    Well....

    I also got a call once from Tec-Support since I left an Error Message in my Code telling the User "You should not get here...." (Only was possible due to some seriously messed up configuration)

    But the Hotline was quite confused by that message ;)

  • (cs) in reply to The IUnknown coder
    The IUnknown coder:

    "Something's f***ked, please call tech support"

    So what was running through your head after realising that?

    Um... Did I just... Oops...
  • Malfist (unregistered)

    Someone explain this one

  • (cs) in reply to Malfist
    Malfist:
    Someone explain this one

    It's just a silly canned error message.

  • Tofino (unregistered) in reply to rdrunner
    rdrunner:
    Well....

    I also got a call once from Tec-Support since I left an Error Message in my Code telling the User "You should not get here...." (Only was possible due to some seriously messed up configuration)

    But the Hotline was quite confused by that message ;)

    It's always great fun explaining to the boss/coworkers why your "THIS SHOULD NEVER HAPPEN" error condition popped up and stopped a production process. It's even greater fun when you are the boss.

  • (cs) in reply to Tofino

    I got away, but only since another Department was responsible for the configuration ;)

  • John Cowan (unregistered)
    Comment held for moderation.
  • Rob (unregistered)

    The nice thing is that, when the authentication is accepted, CVS responds with

    "I LOVE YOU"

    Makes me feel all warm and happy inside.

  • Anon (unregistered) in reply to Malfist
    Malfist:
    Someone explain this one
    This actually demonstrates something I hate about Java's exception set up: it's nearly impossible to give the user a useful error message. So instead you wind up just dumping the exception on them in the hopes that someone, somewhere, can figure out what's causing it.

    This is a great example of it, the connection was refused for some reason. There's actually no way to know that from the program (unless you want to parse error messages) as the program just sees an "IOException" which really means nothing.

    It could be the connection was refused, it could be that the network adapter is down, it could be no route to host, it could be that the connection timed out, there's absolutely no way to know. In some frameworks it could even be a misspelled domain name - this should be an "UnknownHostException" but most programmers don't realize that, since URL.openConnection() only says it throws IOException, so they just catch IOException.

    In any case, Java error reporting almost always winds up being "dump the message to the user" so some exception somewhere gave an error message "I HATE YOU" and it bubbled up in meaningless Exception objects until finally it just got dumped to the user since there was really no better way to handle it.

    Java abhors useful error messages.

  • (cs) in reply to Malfist
    Malfist:
    Someone explain this one
    The string "I HATE YOU" is part of the actual CVS protocol. This is precisely what the server sent, the client merely displayed it. Not really a WTF, any more than it was the first time.
  • Ronald Bruintjes (unregistered) in reply to The IUnknown coder
    The IUnknown coder:
    That pales on comparison to an error message I accidentally left in my Beta product....

    "Something's f***ked, please call tech support"

    of course, I spelled it all out without the wimpy asterisks....

    That has to be a winner... it certainly beats the message a co-worker of mine once left in a system: "Please enter something sensible". The customer was not amused when he got the message after entering what he thought was quite sensible.

  • Jimbo (unregistered)

    Haha, This reminds me of those late night 'been up coding for 30 hours to get the project done' nights. For some reason the first place my insanity crops up is error messages.
    I remember the day when my code spit out an error message: "This needs more cowbell." (I believe it was a "I can't imagine a situation where this error would ever be thrown but I'll handle it just in case" error.)

  • Dustin (unregistered)

    I got ahead of the team on a web project. We had a solid design patern in place, though, so I made a mock-up that I figured would be close to what the designers were going to create.

    The page was to be a bit of a hub and link to related articles. But that data didn't exist yet. Thus, I coded:

    <a href="xxx">xxx</a>

    This wasn't a big deal, but then IE 4 came out mid-dev cycle and it got clever and slapped on the www. and .com and presto! A working url! Woot!

  • fraggle (unregistered) in reply to Anon
    Anon:
    Malfist:
    Someone explain this one
    This actually demonstrates something I hate about Java's exception set up: it's nearly impossible to give the user a useful error message. So instead you wind up just dumping the exception on them in the hopes that someone, somewhere, can figure out what's causing it.

    This is a great example of it, the connection was refused for some reason. There's actually no way to know that from the program (unless you want to parse error messages) as the program just sees an "IOException" which really means nothing.

    It could be the connection was refused, it could be that the network adapter is down, it could be no route to host, it could be that the connection timed out, there's absolutely no way to know. In some frameworks it could even be a misspelled domain name - this should be an "UnknownHostException" but most programmers don't realize that, since URL.openConnection() only says it throws IOException, so they just catch IOException.

    In any case, Java error reporting almost always winds up being "dump the message to the user" so some exception somewhere gave an error message "I HATE YOU" and it bubbled up in meaningless Exception objects until finally it just got dumped to the user since there was really no better way to handle it.

    Java abhors useful error messages.

    No, sorry, you're wrong. This is nothing to do with Java, it's a result of the design of the CVS protocol, which is a WTF in itself. In the CVS protocol, after sending a username and password to authenticate, the server responds with either "I LOVE YOU" (authentication succeeded) or "I HATE YOU" (authentication failed). The eclipse plugin is apparently displaying the raw network response instead of a useful message.

  • The Dude (unregistered) in reply to Anon
    Anon :
    It could be the connection was refused, it could be that the network adapter is down, it could be no route to host, it could be that the connection timed out, there's absolutely no way to know. In some frameworks it could even be a misspelled domain name - this should be an "UnknownHostException" but most programmers don't realize that, since URL.openConnection() only says it throws IOException, so they just catch IOException.

    Nice. Blame the language for a programmer's laziness. Isn't UnknownHostException a subclass of IOException? Couldn't the programmer could have caught UnknownHostException and said something nice "You are dump and spelled the hostname wrong." ?

  • Geheimdienst (unregistered) in reply to Anon
    Anon:
    This actually demonstrates something I hate about Java's exception set up: it's nearly impossible to give the user a useful error message.
    Well, exceptions have a string for that. You can retrieve it with getMessage(). There's even a getLocalizedMessage(). (If the string is set to something unhelpful or nothing at all, that's a screwup on the part of the code throwing the exception, not on the part of Java.)
    Anon:
    So instead you wind up just dumping the exception on them in the hopes that someone, somewhere, can figure out what's causing it.
    The constructors of most exceptions optionally take a cause, which means you can put an exception into the other. You can throw a LateForWorkException with its cause set to an object of type CouldntFindTheDamnCarKeysException (which you just caught from a library, for example).
    Anon:
    This is a great example of it, the connection was refused for some reason. There's actually no way to know that from the program (unless you want to parse error messages) as the program just sees an "IOException" which really means nothing.

    It could be the connection was refused, it could be that the network adapter is down, it could be no route to host,

    IOException hat tons of subclasses, e.g. SocketException, which has a subclass NoRouteToHostException. You just have to catch it. If you do only "catch (IOException e)", you of course won't see anything specific.

    Anon:
    In any case, Java error reporting almost always winds up being "dump the message to the user"
    Yes ... if the programmer feels he can do something about the exception (retrying or something), he'll do it. If not, you display a message to the user. And that's what the message strings in the Exception objects are for. Where would you get the error message if not from the exception? Use a global string like "An error occurred"?
  • Anon (unregistered) in reply to The Dude
    The Dude:
    Anon :
    It could be the connection was refused, it could be that the network adapter is down, it could be no route to host, it could be that the connection timed out, there's absolutely no way to know. In some frameworks it could even be a misspelled domain name - this should be an "UnknownHostException" but most programmers don't realize that, since URL.openConnection() only says it throws IOException, so they just catch IOException.

    Nice. Blame the language for a programmer's laziness. Isn't UnknownHostException a subclass of IOException? Couldn't the programmer could have caught UnknownHostException and said something nice "You are dump and spelled the hostname wrong." ?

    Congratulations, you managed to response to ONE part of my complaint (one of very few conditions when Java gives the programmers useful information) while ignoring everything else.

    Take this example. The user has saved attempted to save a file. You get an I/O exception. What caused it? Was it:

    Incorrect file system permissions?[1] File system is out of space? File locked by another process? Hardware failure? (Disk removed, for example.) Network failure? (For network mapped drives.)

    Another fun example is network I/O. Was the I/O exception caused by:

    No route to host? Connection timed out? Connection refused? Connection reset by peer?

    All of those are represented by IOException with no way to differentiate between them. (Especially because the error results will be different on different platforms.)

    There's a reason almost all error messages by Java programs boil down to "something bad happened" with an option to view the stack trace. You have to pray that the underlying exception gave a useful error message, because there's no way it can be synthesized otherwise.

    [1] Before anyone suggests it, the results from File.can{Read,Write,Execute}() are completely bogus. canWrite() on the current user's "My Documents" under Windows always returns false, for example.

  • s (unregistered)

    Yeah. I tend to be quite creative in various "shouldntHappen()" exceptions - usually ones accessible only by hacking attempts (say, the guy prepares a special POST content to trigger an SQL injection and gets "Error: Nice try but no banana", "Sorry, but this variable is protected against hacking", "You don't want this value to be negative. Really." and such.

  • (cs) in reply to Paul

    Bah. CVS doesn't have to tell me. It finds new ways to show me how much it hates me every day.

  • Chris (unregistered)

    I know this is a bit rude and I'm sorry, but did anyone else really prefer the Pop-up Potpourri layout to Error'd?

    Sometimes I ended up giggling my head off at Potpourri, and that's why I kept coming back. That never happens with Error'd, because you just get a smidgeon of programmer miscalculation and it's often not really very funny on its own. (There were always some duds, but they still somehow worked when they were surrounded by stupidity.)

    Can we... have it put back the way it was, please?

  • Franz Kafka (unregistered) in reply to Anon
    Anon:

    Take this example. The user has saved attempted to save a file. You get an I/O exception. What caused it? Was it:

    Incorrect file system permissions?[1] File system is out of space? File locked by another process? Hardware failure? (Disk removed, for example.) Network failure? (For network mapped drives.)

    Another fun example is network I/O. Was the I/O exception caused by:

    No route to host? Connection timed out? Connection refused? Connection reset by peer?

    All of those are represented by IOException with no way to differentiate between them. (Especially because the error results will be different on different platforms.)

    There's a reason almost all error messages by Java programs boil down to "something bad happened" with an option to view the stack trace. You have to pray that the underlying exception gave a useful error message, because there's no way it can be synthesized otherwise.

    [1] Before anyone suggests it, the results from File.can{Read,Write,Execute}() are completely bogus. canWrite() on the current user's "My Documents" under Windows always returns false, for example.

    The IOException is actually a subclass of IOException. If you care, then catch the specific exception. Otherwise, STFU and GBTW.

    I haven't messed with File based stuff, but a lot of the permissions errors are FileNotfound errors.

  • (cs) in reply to Chris
    Chris:
    I know this is a bit rude and I'm sorry, but did anyone else really prefer the Pop-up Potpourri layout to Error'd?

    Sometimes I ended up giggling my head off at Potpourri, and that's why I kept coming back. That never happens with Error'd, because you just get a smidgeon of programmer miscalculation and it's often not really very funny on its own. (There were always some duds, but they still somehow worked when they were surrounded by stupidity.)

    Can we... have it put back the way it was, please?

    /me wholeheartedly agrees with the whole above post BTW...the link to the pop-up potpourri list is http://worsethanfailure.com/series/Pop-up_Potpourri.aspx

  • pm (unregistered)
    Comment held for moderation.
  • John (unregistered)

    Reminds me of when I forgot to change a "the test worked" message before checkin... my coworker was awful surprised the next day when she clicked a button and got a popup message saying simply:

    fuck you

    Man, was my face red when she asked me about it.

    Much safer to use something like 'foo.' (Or even a useful message, imagine that!)

  • Anonymous Coward (unregistered) in reply to The Dude
    "You are dump and spelled the hostname wrong."

    You are dumb and spelled 'dumb' wrong.

  • Something Sensible... (unregistered) in reply to Ronald Bruintjes

    I wrote a "how to use CVS" guide for the company.... I used the example for tags of SOMETHING_SENSIBLE_1_NAME_checkin

    Guess how many tags in the suppository are "SOMETHING_SENSIBLE_..."?

  • dave_v (unregistered)

    That just reminds me of this one accident in my previous company, where we had a "data server", which was a perlish abstraction for SQL. WTF for itself. But someday, our Sysadmin was out at a customer to fix a problem with said data server. Luckily, you could access it with telnet. Only problem: Customer is watching our sysadmin test that thing, when he mistyped something and the response was

                  "WHAT THE FUCK ARE YOU DOING?" 

    Customer was certainly not amused.

  • Rich (unregistered) in reply to Jimbo
    I remember the day when my code spit out an error message: "This needs more cowbell."

    Heh. I just got through watching Deja Vu. One of those "now that's 2 hours I'll never get back" type of movies. One of the only redeeming parts was when they needed to up the juice on their machinery and one guy said "we need more cowbell". I giggled, i quickly decided it wasn't worth explaining to my wife, she was born in Taiwan and i usually get dirty looks when i try to explain bad SNL to her.

  • (cs) in reply to The IUnknown coder
    The IUnknown coder:
    That pales on comparison to an error message I accidentally left in my Beta product....

    "Something's f***ked, please call tech support"

    of course, I spelled it all out without the wimpy asterisks....

    What the Fuck?

    You can type "f u c k" into a production program that other people might see. But you can't annonymously type in on a forum that used to be titled "thedailywtf?"

    Just last night I tired to click a link on one of the lousy php forums. The link didn't work. Took me a while to realize that silverfishlongboard turned into silverfithingyboard.

  • Russ (unregistered)

    The real wtf is that www.thedailywtf.com no longer directs here. Way to go alex.

  • (cs) in reply to Russ

    At least that error means something. Better than the time my friend forgot to take out a debug statement that made a pop-up saying "FURBY!FURBY!FURBY!FURBY!FURBY!"

  • (cs) in reply to Russ
    Russ:
    The real wtf is that www.thedailywtf.com no longer directs here. Way to go alex.

    Speak for yourself. I just got to the site by going to "www.thedailywtf.com"

  • Chris (unregistered) in reply to The IUnknown coder
    The IUnknown coder:
    That pales on comparison to an error message I accidentally left in my Beta product....

    "Something's f***ked, please call tech support"

    of course, I spelled it all out without the wimpy asterisks....

    Yeah, I did one of those too, except it was up on stage being demo'd as part of an Apple OpenDoc presentation at a WWDC.

    My boss shrunk, but apparently it was quite the hit =-)

  • Beavis (unregistered) in reply to Anon
    Malfist:
    Java abhors useful error messages.

    Why would you blame Java, when you should really be blaming the lazy ass programmers who are too lazy to implement proper error messages?

  • (cs) in reply to Beavis
    Beavis:
    Malfist:
    Java abhors useful error messages.

    Why would you blame Java, when you should really be blaming the lazy ass programmers who are too lazy to implement proper error messages?

    Perhaps the quoted author uses a language that allows him/her to be lazy (not a good thing), and needs an excuse to slander Java. Java's exceptions are fine if you actually know where to look and don't expect a "getDetailedMessageBecauseIAmLazyAndWantSomethingElseToDoAllTheWorkForMe()" method.

  • (cs) in reply to Geheimdienst
    Geheimdienst:
    Anon:
    This actually demonstrates something I hate about Java's exception set up: it's nearly impossible to give the user a useful error message.
    Well, exceptions have a string for that. You can retrieve it with getMessage(). There's even a getLocalizedMessage(). (If the string is set to something unhelpful or nothing at all, that's a screwup on the part of the code throwing the exception, not on the part of Java.)

    I don't know Java well enough to know if it differentiates between different errors with sufficient precision, but in general...

    If you are using exceptions, and have to parse a message that was passed up in the exception to find out what went wrong, the code throwing the exception is already screwed up.

    Actually I will take that further... if you're parsing error messages at all to find out what happened, you should be looking for a better way. (Sometimes there isn't one, for instance on a system boundary. But look for one.)

    Actually, it now occurs to me that you might have meant that to mean that getMessage can be displayed as an error message to the user. If that's what you meant, then never mind. (Although, this post today is a great example of why even this is often a bad idea, even if it is the least bad.)

  • (cs) in reply to Beavis
    Beavis:
    Malfist:
    Java abhors useful error messages.

    Why would you blame Java, when you should really be blaming the lazy ass programmers who are too lazy to implement proper error messages?

    From what I'm reading, he's saying that it's Java libraries themselves that are lacking in the good-error department.

  • (cs)

    I once found an error message in a program I was helping to work the failure out of: "You suck."

  • (cs) in reply to asuffield
    asuffield:
    Not really a WTF

    Oh, I beg to differ. "authentication fails" is failure, "I HATE YOU" is worse than failure.

  • (cs) in reply to Anon
    Anon:

    There's a reason almost all error messages by Java programs boil down to "something bad happened" with an option to view the stack trace. You have to pray that the underlying exception gave a useful error message, because there's no way it can be synthesized otherwise.

    Considering the nice and usefull Segmentation Fault core dumped messages I used to get back when C was still a man's language, I think Java is very verbose. ;)

    Seriously, it can be very frustrating with deeply nested exceptions. Quite often you could be miles from the cause. However, it does at least give an indication.

    I can imagine that in some cases it is even dificult to give a reasonable error message. Windows and unix have very diffrent file systems which aren't 100% compatible. If you want to be system independent this might give a bit of a headache with trying to figure out what is wrong. I do think it's possible, but I can imagine someone not wanting to bother.

    Actually when Java first came out someone just learning to program asked me for help with their code. After having 'learned' that Java has no pointers I sort of started fuming when I got a NullPointerException. I still think its stupid. Java doesn't have pointers. It could just have said variable is not initialised, or something. Yes, under the hood it might be a null pointer, but for the programmer that is completely irrelevant. Didn't look at Java again for years. Oh, ok, I was also upset about the hard typing, which is fine for others but not for me. And the c style syntax which made me think I knew what I was doing, when in fact, I didn't (which never stops me from...well anything really).

  • anonymouse (unregistered)

    Oh come on, Java's exception handling isn't that bad. In your IOException case there's a whole bunch of subclasses that will tell you what happened. For example:

    try {
       ...something networky...
    } catch (UnknownHostException uhe) {
       // show user nice message
    } catch (NoRouteToHostException nrthe) {
       // show user nice message
    } catch (ConnectionException ce) {
       // show user nice message
    } catch (IOException ioe) {
       // something else
    }
    

    You're talking through your hat if you think Java has no way of telling the programmer the exact cause of the error.

  • Anon (unregistered)

    Surprized no one mentioned the old classic in RSX11M...

    Type in "Fuck you" and the console and it replied

    Fuck you too!

    Then logged you off

  • Thijs (unregistered)

    A friend of mine once used "Unknown error. Hit any user to continue." as a 'you can't get here' message. Months later he was called by a user who said: "I tried it, but it didn't work!"

  • (cs) in reply to anonymouse
    anonymouse:
    Oh come on, Java's exception handling isn't that bad. In your IOException case there's a whole bunch of subclasses that will tell you what happened. For example:
    try {
       ...something networky...
    } catch (UnknownHostException uhe) {
       // show user nice message
    } catch (NoRouteToHostException nrthe) {
       // show user nice message
    } catch (ConnectionException ce) {
       // show user nice message
    } catch (IOException ioe) {
       // something else
    }
    

    You're talking through your hat if you think Java has no way of telling the programmer the exact cause of the error.

    Actually I was going to write some sample code along the lines of that but I decided to be lazy and let someone else do the work :)

  • (cs)

    I've allways loved to use "Incompetent user".

    Just haven't had the guts to leave it in to go live (yet?)

  • Chris (unregistered)

    I used to work for a firm that writes warehouse automation software. They had a classic complicator, who inevitably went off to work for a bank where crap code is king, but not before he'd embarassed us in front of a client. How did he manage this? By implementing some new screens based on a library of nice "widgets", that followed our in house interface guidelines and included a menu item for online help. While showing these new screens to a client, one of our managers selected the online help to be informed that:

    "Some systems include online help. This one doesn't."

    The brown stuff made contact with the rotating thing, and the complicator got a complete bollocking.

  • (cs) in reply to TheJasper
    TheJasper:
    Actually when Java first came out someone just learning to program asked me for help with their code. After having 'learned' that Java has no pointers I sort of started fuming when I got a NullPointerException. I still think its stupid. Java doesn't have pointers. It could just have said variable is not initialised, or something.

    Not initialized isn't the proper warning; you can explicitly set a reference to null.

    Should be called a NullReferenceException. It's not a major WTF, but it is an example of one of the little inconsistencies around Java.

Leave a comment on “Classics Week: I Hate You”

Log In or post as a guest

Replying to comment #:

« Return to Article