I’m a sucker for tricks. In sports I’m not one of those in-it-to-win-it types. Forget “defense wins championships,” I want to be entertained. I’d much rather see a great show of skill than a plodding win. Give me Ronaldinho’s soccer magic or Federer’s volleys any day over the boring same-old same-old.

As developers we have our own bag of tricks that we try and combine into something special. Lately I’ve been using three Firefox plugins quite a bit.

Firebug is my first line of defense when something goes wrong with a web page. Here’s a screen I stare at all the time. I left the (innocent, honest) error in to show how Firebug alerts you to errors.

Next is Yslow. I don’t use it as much as Firebug (it’s a plugin *for* Firebug) but it’s great for getting a snapshot of how a page is built and loaded. Hmm, we’re always looking at reducing our page load time…

Finally I use Live HTTP Headers a lot to see raw HTTP requests and responses. I thought I knew HTTP pretty well until I began using this tool. Recently we used it to eliminate the browser as the source of error on some problematic if-modified-since headers.

So those are three common tools that anyone can use to do their normal job with a bit of flair. Of course as professional developers we have no choice but to win too :) .

Recently we had a strange problem that defied all normal problem determination and debugging. We just didn’t understand how the code could be doing what it was doing (loading a page of mixed languages). That’s when we remembered the really cool Websphere tracing *built in* to the product. What WAS tracing allows you to do is follow the code path of selected classes as they execute in real time. Any class that is enabled for tracing with the java.util.logging.* classes is fair game.

Once configured and enabled trace information is output to a trace.log file. Here’s a screen snapshot of where to go to in your WAS admin console to enable tracing:

Here’s a shot of some of the classes we were tracing:

So what happened? We discovered that the problem wasn’t in the code at all but in the way we had configured our property files. Simple, easy fix that we would still be scratching our heads over if we hadn’t used WAS tracing.