Declarative caching for AppEngine

May 20, 2010

I really hate when my source files are bloated with lines and lines of code that do not implement any business logic at all. One of the sources of this was certainly code related to caching. Using Google’s Memcache service with the low-level API or via JCache facade is not complicated but it really was [...]

Read the full article →

My first GAE application… for all web developers and testers

May 19, 2010

I’m proud today as my first GAE application is finally publicly available – BugDigger is entering open beta! Combined with a browser extension, BugDigger allows users to easily report an issue in a web application. The process is trivial as BugDigger automatically makes a web page screenshot, collects environment details and recent site usage history. [...]

Read the full article →

Use GAE Appstats to discover unnecessary RPC calls

April 15, 2010

If you play seriously with Google’s App Engine, I guess you regularly scan an average CPU time per URL and other stats in your GAE Dashboard. I tend to do this especially after adding a new feature. Yesterday I added the first cron job to my new app and today was surprised with an average [...]

Read the full article →

Track estimated cost for your AppEngine site with Firefox add-on

April 6, 2010

If you were careful reading Google App Engine documentation, you could have read this: “If you access your site while signed in using an administrator account, App Engine includes per-request statistics in the response headers. The header X-AppEngine-Estimated-CPM-US-Dollars represents an estimate of what 1,000 requests similar to this request would cost in US dollars.” Well, [...]

Read the full article →

Trouble with jQuery form.submit()

March 17, 2010

Argh… I run into an issue with jQuery submitting a form using submit() that took me few hours to resolve. I had a problem submitting a form using a call like $(“#myForm”).submit(). What was driving me nuts was that event listener for “submit” was triggered (no, I didn’t use preventDefault()) but at the end nothing [...]

Read the full article →

Project Lombok annotations for Java

March 15, 2010

Tired of creating getters and setters for your Java POJO’s? Well, I was unti I’ve discovered Project Lombok. It’s definitely a tool worth checking out! The Project Lombok comes with a set of Java annotations that can generate not only getter and setter methods for your beans, but also toString(), equals() and hashCode() methods. It [...]

Read the full article →

Objectify

March 5, 2010

For the last few weeks I was working on a Google App Engine application that should be a kind of hosted version of the LogDigger Server. I quickly gave up of using Grails framework (more on that on another occasion) and decided to use plain Java, although I was still undecided on which persistence API [...]

Read the full article →

Stripes

February 17, 2010

Earlier this week I started working on a Google App Engine application. It’s not very complex so I wanted to use some simple presentation framework. (I believe using Spring would be really beneficial in my case.) After a bit of research on the StackOverflow, I decided to tryout Stripes (“Stripes is a presentation framework for [...]

Read the full article →

Saved by dnsmasq

February 17, 2010

At my home I have a DSL connection that is shared between my Ubuntu desktop machine (which is my main development machine), laptop and kids’ desktop.  For the last several weeks I was experiencing strange problems with Internet connection, mostly affecting my Ubuntu. The problem was looking like a DNS issue – I was using [...]

Read the full article →

Check web site uptime with a simple Google App Engine application

December 9, 2009

I’ve just stumbel upon a simple web site uptime monitor that runs on the Google App Engine infrastructure. It’s still very primitive but it’s able to send notifications by email and Prowl, with more to come. The best thing is you can run this on Google for free. Well… at least if you’re spending Google’s [...]

Read the full article →