Hi. The blog you’re reading, and all of its user and content-creation functionality, is entirely written using Google App Engine (Python), with Django. In this post I write about why I decided to write my own web applications to replace every web service I use, and why I decided to do this using Google App Engine.

When I heard that Google had released a service designed for developers to create neat Python and Java-based applications for web, hosted on Google’s servers, I was quite excited to see what I could build with it. It’s no secret that I <3 Google products – I’m an avid user of almost all they have come out with, including the Google Web Toolkit (GWT), designed for translating Java programs into Javascript applications for the web (by the way, this product is fantastic, and I recommend it to any web programmers comfortable with Java).

To start myself off and to learn the technology, I decided, quite ambitiously, to make an “online community for book-nerds”  , where users could search for books, and then rate, favorite, and discuss any of a huge selection of books. This would create a database full of useful information which I could use to rank books, in a way similar to the top 250 films on IMDB (something I’ve always wanted available for books). The application linked to Amazon.com’s catalogue list to provide a store full of titles, and had unique profiles for each user, including profile photos, and personal information. The idea was that of a typical online social application, based on the premise that people often struggle to find out what to read next (reading is a large investment of time), and it’s difficult to find a simple website that helps with that (despite the success of imdb.com for films). Eventually, once I had already written the majority of the base code for my app, I actually found a website that deals with this, though not as effectively as I would like, but that is certainly useful, and is equipped with a vast array of interesting (though sometimes extraneous) functions – Library Thing.

As I built my application, I grew more familiar with the Google App Engine technology (after a short but steep learning curve, it gets fairly easy to include almost any popular function currently on the web – even if it’s method sometimes includes a workaround Google’s somewhat testy constraints). When I was finished creating some very decent functionality for my book-community idea, I decided that for any online web application that I use, I’m going design for myself a replacement on Google App Engine. For an almost obsessive internet-user like myself, with much of my computing done in the cloud, it sounded like a very daunting task. A list of the web applications I currently use include (but are not limited to), ‘GMail’,'Facebook’, ‘Google Chat’, ‘WordPress’, and ‘Google Docs’. That’s quite an intimidating list, but I figured GMail and Google Chat may be quite simple to do at least . That night I fell asleep with my notebook on my bed, as usual, except that I had unknowingly of course, forgotten to put the lid back on my pen. When I woke up with blue ink-marks all over my duvet, I knew it was time to move my obsessive note-making onto the web. I searched around, but I couldn’t find anything similar to Google Docs that was more tailored to taking quick notes. There was the discontinued Google Notebook that I used to use, but that didn’t quite suffice either. There were many to-do-list applications, but very few that were capable of storing notes in an easy and accessible way. I knew what I had to do. Thus, PyThoughts was born (note: this project has been discontinued – sorry. ;) ).

For PyThoughts, I figure the thing I’ve worked hardest on so far has been making the information very accessible, meaning that I can log on and very quickly retrieve the data I’m looking for. That requires folders, with fast-loading content, and AJAXian functions to add, edit, delete, or move information. I plan to use this blog to make available some of the methods I used to include this functionality, so that those who are starting to write their own apps on GAE can bypass some of the learning curve. For example, in a future post I will provide an easy walk-through for any one wanting to include AJAX functions using Google App Engine.