Moving Blog From WordPress to Octopress

I moved this blog frmo WordPress to a static site powered by Octopress and hosted on S3. Why? First, it’s more secure as there’s no need to maintain web hosting system, update WordPress, plugins, etc. In addition, cost of serving static web site from S3 should be much lower than web hosting account.

Using feedback.js to Submit Issue Report With a Screenshot to BugDigger

BugDigger tools help you report web site issues more efficiently automatically attaching screenshots, page URL’s and other contextual data to your bug reports. BugDigger users generally need a browser add-on for this purpose but recently released REST (and JavaScript) APIs open some new possibilities. Until BugDigger provides own widget, I thought it would be a nice exercise to use feedback.js for form and screenshot capturing and then submit all data to BugDigger.

ELMAH for Java, Eclipse JET as a Template Engine, Etc

Wow… it’s been a while since my previous post. I’m still around but this has been a very busy year for me.

Working on a .NET project recently, I learned about ELMAH (Error Logging Modules and Handlers). My first though was “How is it possible I didn’t make a similar UI as an extension for LogDigger Connector to offer equivalent features in Java?”

Fixing Strange NoClassDefFoundError on App Engine

On Friday morning (Mar 25, 2011) Google’s AppEngine had a “nice” surprise for me… Two of my applications running on HR datastore started throwing NoClassDefFoundError out of nowhere. Interestingly, the same application was running fine on the MS datastore. I filled a production issue report, posted to the google-appengine group, etc. but no one had a clue. It looked like my case was isolated and there were no similar complains. I was trying re-deploying the applications, switching to older app version but no luck. I was getting desperate. Then, on Saturday morning, as it was epidemic, exactly the same exception happened to the application running on MS datastore. All these applications were based on the same code base. It became obvious that my applications were affected by some Google’s internal update (possibly upgrading for announced SDK 1.4.3) but that it’s not a wide spread issue. So, it was something I have to deal with…

Cleaning Up Expired Sessions From App Engine Datastore

If you have enabled sessions for your GAE application, you probably already know that sessions are persisted in datastore. But, do you know that expired sessions are not deleted automatically? If you don’t take care of expired session, they’ll slowly eat your storage quota.

Fortunately, Google has provided a Java servlet that deletes expires session (although 100 per invocation) but for some strange reason this is not documented. Here’s what do you need to do…

Quick Start With FitNesse and Selenium

Several months ago I used Selenium for web application testing, writing all my tests in Java. That was a nice experience except that writing tests in Java is somewhat verbose. So, after reading nice things about FitNesse I decided to give it a try. My idea was to stay with Selenium’s engine for running tests but to keep all test scripts nicely organized as wiki pages on a FitNesse server. I’ve found an excellent post by Gojko Adzic about connecting FitNesse and Selenium but it was a bit advanced for me. The other documentation I’ve found was also weak in that sense. I needed more like a beginner’s guide but no luck. So, here’s my version of it…