Thursday, March 13, 2008

Google Web Tookit is awesome!

So I have used a few "Getting Things Done" (see my previous blog) softwares / applications / services or what ever you want to call them. They are generally pretty good at what they are supposed to do. I liked some of them for their simple design and ease of use and liked a few others for their control. But overall none of the ones I tested met my specific needs.

Basically I want an extremely simple tasks > projects > tags hierarchy. The tags are like the big pieces of the pie. I have a few tags like "Personal", "Work" and "Fun". So all my work related projects should have the "work" tag, similarly all personal projects like buy groceries or clean house or free up space on hard drives should go into the "personal" bin, and so on for other tags. Well you get the picture.

Then projects are high level tasks. You know you have to do several smaller tasks to get it done. But overall you just want to track projects. How much of a project you completed. For example take the case of the high level task such as free up disk space. The smaller tasks involved are
  1. Do some accounting of all the files that are needed now vs need on use basis.
  2. Remove /tmp and unnecessary files.
  3. Tar / BZip all the files that are not needed now and remove them.
Simple. I need to track what % of the task is complete. Another example is when I am playing Need for Speed Most Wanted. Where am I in the blacklist? Each blacklisted player can be a small task of the big task of winning the game. Not only that but I need an RSS feed which will report what % of the project I completed. It will be fun to get the graph later to see the progress over all the projects and individual projects.

Next comes the individual tasks of course. So basically a task is a subset of project and a project is a subset of a tag. I want to maintain that hierarchy.

Google Web Toolkit
Since I did not find any of the GTDs useful I decided to write one myself that I will use locally on my laptop which will maintain the state on a locally run server. Then I will run a RSS server which will give the RSS feed to be used in my blog or somewhere. Initially I thought of writing a simple swing java app. But then I thought why not learn something while I am working on this task? I have been wanting to write an application using Google Web Toolkit, so this may be a good use case :).

I downloaded GWT and installed it. Following the simple introduction page, I am already on my way to creating a professionally looking web app by just coding in java! I have some knowledge of JavaScript but as far as my knowledge regarding CSS or DOM goes, it is close to nothing. Yet here I was happily editing CSS and creating elements for my Getting Things Done project. GWT is extremely cool and easy to use. The documentation is pretty good and easy to follow. Once I understood all the widgets and how they get their look, I simply started coding. I already had a design in mind and just went about implementing it. With in a few hours I have done the "Tags" part. Here is a snapshot of the app.

Google Pages is not for me
I will be going on vacation for the next 3 weeks so I know I won't be able to get much more progress on it. Yet I wanted to show off. I wanted to host it somewhere. Initially I planned on using Google Pages. I have not used it for almost a year. Unfortunately for me Google Pages still does not let me edit HTML in the way that I want. It only lets content creation using the product itself. You can edit HTML but it is very limited (title and body). Moreover all the files that I upload go to just one place. I want a more directory hierarchy to put files from various projects into different directories. Also I wanted some kind of ftp access.

Enter MyHosting247
So I Googled of course and found this really neat web hosting service called MyHosting247. It has a very simple interface and was very responsive (unlike geocities that I used a long time ago). Anyway it has a nice file manager to create directories, upload files and manage your website. Even better it has ftp access. Cool! I created a directory and pushed all my files. Now my app is hosted here. Go give it a try at and see how a few hours with GWT can get a professional looking app. I was only able to complete the Tags tab. The other 2 tabs are just place holders for now. I will complete it after my vacation.

What can you do with the app
You can add new tags with a tag name and description and clicking on the "Add Tag" button. The description can be empty but the tag name cannot be empty. If it is empty, you will see a message indicating the problem.

Also you cannot add a tag name that already exists. Tag names are not case-sensitive. When I try to add "work" again, I get this:

You can of course delete the tags using the "Delete" button. But in my view the most interesting feature of this app is that you can edit tags and descriptions right in the table by clicking on the tag name or description. You simply get a text box with the text and you edit it. Pressing enter updates the table. Here is a snapshot where I am editing the tag "Work" and description of "Personal" by simply clicking on the text.

That's all for now folks. 4 weeks until next update :) when I will complete projects and tasks tabs.