I was lucky enough to get my hands on a Google App Engine (yep, that thing I won't shut up about) account, so I thought I'd better make something with it. Since it was a special occasion, I decided to drag out one of my silly website ideas which had been lying about for a year or so; an online voting thingy, for college societies and the like. I was inspired by the terribly impressive and frightening perl script that Trinity CSC uses to do proportional representation, you see.
First off, the object database thing which we've heard so much about really is very, very good. Writing things with it is a positive pleasure, and it more or less forces you to store your data in a manner which will allow it to be distributed over multiple machines. This is a huge problem, even the huge problem, for relational databases, by the way. Sooner or later you tend to end up with a really big heavily-used table or set of interdependent tables which flatly refuse to be sharded. Some services, like Flickr, are intrinsically shardable, of course, but some aren't so much, and of course eventually they end up having to pay silly money to IBM or Sun. I'm quite convinced that Sun, in particular, owes its continued existence to really bloody huge databases.
Anyway, the outcome of all of this was that every part of my service should, theoretically, be able to scale close to infinitely, except for the private election option. Giving the site a list of many thousands of users who would be allowed vote in a particular election could be problematic. It's fixable, but would require a bit more work.
And that's not all! You get easy integration with Google accounts, so anyone with GMail can just log into your site without registering, and you don't have to mess around writing your own authentication stuff.
So, in the end, it took about two and a half hours, and consists of 335 lines of Python and 207 lines of HTML. It's by no means feature-complete, but still, I was pleased with how quick it was to get things done. If the web developers of the world can get over their PHP fetish, I can see Google App Engine becoming very big.
Ther are, of course, other considerations. What's performance like? Well... hardly inspiring, I'm afraid:
Not horrible, but not amazing. Of course, for a lot of applications it doesn't really matter, and you can expect that, all going well, it will remain at about that speed no matter how many people are using it. It does more or less rule it out for certain types of site, though of course it's a new service and improvements may yet be made.
And then, there is the whole resource usage issue. 10GB either way a day is more than generous, but, well, what about these things:
We just don't know, at least for the moment.
Anyway, the application is here. Please go and poke at it, so that I can get a better idea of just what a megacycle is when it's at home! Note that it's hardly complete at the moment; it doesn't even have proportional representation! Also, as is traditional, it's really, really ugly. Really. I've outdone myself this time.