Errors

My check engine light came on today. (A couple weeks after I had it serviced…) I happened to be right near the dealership where I always have my car serviced, so I stopped in to see if my car was about to blow up, or if I could safely drive to Boston and back. She told me that as long as the light was on solid and not blinking, it was safe to keep driving.

Which got me thinking that the light was extraordinarily unhelpful. Rather than a message saying, “You’re low on oil,” I just had a glowing light indicating that something, somewhere, was wrong. I wanted to know this not only to know how to fix it, but also to know the magnitude of the problem. Do I need to change a belt in the next 5,000 miles, or am I minutes away from destroying my engine or setting the car on fire?

But as I was driving along thinking about how nice it’d be to have a small little LCD giving me more helpful advice (“Low oil. Call for service. OK to keep driving.”), I started thinking about how spectacularly unhelpful most messages of that sort are when computers give them.

Take Java. I’ve been dealing with Tomcat, a (the?) Java application server, a lot lately. Unlike the unnecessarily terse light telling me to check my engine, Java throws enormously verbose answers. But not a wonderful verbosity that tells you exactly what’s wrong and how to fix it. Fifty lines of output including a full stack trace, and yet none of it actually pertains to the problem. If Java were my car, I’d get a message like, “SEVERE Error at Java.Vehicle at Java.Car at Java.Toyota at Java.Highlander at Java.Axle at Java.Wheel,” and then list nearby components including the fender and front passenger’s side door, to indicate that my tire pressure had fallen from 35 psi to 34 psi. And it would be triggered on very rotation of the wheel. And yet utterly fail to ever mention tires or tire pressure.

But why is there no middle ground? Why are error messages either spectacularly vague, or incredibly helpful?

Leave a Reply

Your email address will not be published. Required fields are marked *