Django and Google App engine
Update: prove.com.au layout has been fixed!
So Mark finally got bothered to whip up a wordpress blog for us. Nice one....
As he seems to have a list with things he'll never get around to doing, I might as well get one up as well.
- Fix layout on prove.com.au
I never said it had to be a long list...
So I started playing with Django and Google's App Engine. I'll try and explain my first thoughts individually and then a little about what i think of them combined.
Django
I genuinely like Django. If I had to describe it in a single word it would be 'concise'. They really do take the DRY (don't repeat yourself) principle seriously. It's auto admin system is incredibly powerful and can be setup with very little effort. The Model Template View architecture is clear and well implemented. The model stack is exceptionally powerful and is able to sync the database automatically making migrations a piece of cake. The template language is very simple and can be picked up in minutes (given you are already familiar with HTML). Lastly, its routing and URL handling is incredibly advanced, and has a very cool generic view system which allows you to setup simple view actions automatically.
My only concern is that it's current popularity is overshadowed by some other frameworks such as its red cousin ruby on rails. This may not sound like a valid argument to some, but it does make a massive difference when considering active discussion and plugins. Hopefully this should rapidly change over the next few years.
Google App Engine
First the good. I think app engine is revolutionary. Instead of having to worry about a distributed system with load balancing, I can now consider my hardware stack a giant auto-elastic server with virtually unlimited resources. Google is also very genrous with the free quota, for any normal app, you will not go anywhere near the limits set per day.
However with the good must alas come the bad and there are too many to list here. To keep it in one sentence, Google App Engine is good for one app, Google search. You must use either Python or Java, you must know Datastore/GQL, no GQL results beyond 1000 rows (sound familiar?). App engine currently have some limits that seriously scare me. I hope they will lift this over time.
With your powers combined, I am....
Not quite captain planet. The problem comes down to the model stack. Django uses SQL, App Engine uses Datastore/GQL which to me is a huge issue. By putting your app on App Engine, you instantly lose your django admin system, sessions and will likely have to refactor your entire model layer to accommodate. Given Django's DRY principle (Fat models, skinny views), this would probably mean ~50% of your codebase.
In conclusion, I think I'm going to keep playing with Django, but give app engine a rest.... for now.