A tutorial for writing web applications for Google AppEngine

I have a lot of things to do. More, in fact, than I can remember. This means I need a system to track what it is I need to do. And being the lazy sod that I am, I'm going to write some software to do it. 

So firstly, some quick requirements analysis. I have tasks. Tasks have a description, an urgency, possibly a context in which they can be carried out (at work, at home, at the shops, et al), and potentially a due date. Tasks can have sub tasks, tasks can be cloned, repeated, and delegated.

From this i can deduce I have other entities, namely contexts, a calendar of due tasks, and people I have delegated to. It would be nice if said delegates could also use taskr to track what tasks they have, and be able to delegate back to me.

Which means that this application is social in nature. So, to be buzzword compliant, we should probably have commenting, tags, and stars. Not quite sure what the stars are for. Maybe for making people feel special.

So, let us begin. First steps first, go and download python. Well, you may be able to skip that if you use Linux or OS X. You will need a 2.5 python. You can check like follows

$ python -V
Python 2.5.1 

After that, download the AppEngine SDK. There are versions for OS X, Windows, and Linux. From the mailing list it appears that the Windows MSI installer only works on XP and above, but the Linux  zip file can be used on win2k. Another word of warning, there has been some issues with 64bit versions of python as well. As always, if you have issues, wander onto the mailing list and ask. Or even better, search the mailing list archives. =)

Next, grab yourself a python friendly code editor. I use TextMate, while others use everything from Emacs to Vim. The big things to look for are whitespace awareness and syntax highlighting.

The white space handling is because white space is functional in python. Indenting delimits where blocks of code start and end. This feature has caused more debates on teh interwebs than almost anything else. Well. Maybe I hang out in odd corners of the internet. But still, passions have been inflamed, to say the least. To make your life easy, make sure your editor doesn't insert tabs. Tabs are bad. It is also good if your editor remembers your indent levels, and allows you to drop back by level on each backspace. This saves you from having to count. 

Syntax highlighting is frequently considered a nice to have. Usually by grizzled old green screeners. Do yourself a favour and make sure you choose an editor that does syntax highlighting. It will make you so much quicker over the long term.   

On to Taskr Step 1