I have an idea for a web application that might enjoy moderate success. And from time to time I try to develop it and it would be already done if it wasn’t that web developing is so painful (reading PLAI and trying to make my own Lisp to conquer the word is far more fun and entretaining… oh damn, I shouldn’t told you my plan… oh well).
My favourite framework so far is (and continues to be, more on that latter): UnCommon Web (UCW). But after reading an article titled Framework Performance (or Django vs. Rails vs. Symfony: Django is fastest on digg) I said: “Hey, let’s give this Django thing a try”.
Let me put it this way. I’ve started reading the tutorial on Django about 21:00hs UTC, on Friday. I took about two hours to read the overview, discard it, come back, take a look at the site, check if it was packaged, decide to download the unstable sources, set my PYTHONPATH, download a couple more things (including PostgreSQL) and do the tutorial. As I was doing it I’ve got more and more excited thinking about my own app.
At about 23:00hs UTC, still Friday. I decided to start implementing my model, I wrote a couple of classes and saw the admin tool start to get shape. I didn’t want to go to sleep but I went. At 01:00hs UTC Saturday my head was on the pillow.
When I woke up I must have hacked for an hour or two while I had breakfast and… well, a long hacking-interrupted breakfast. After that we, Sandra, my wife, and I left the house for downtown Berlin. I have just moved here and in two weeks I haven’t seen anything of the city except my neighborhood. We went there, walking, we had a very nice vegetarian lunch (in a vegetarian restaurant… we are vegetarians).
After that, we went home, and I run to the computer to continue hacking. Now it is 00:39 UTC, Sunday. Only 27hs ago I didn’t know a bit about Django, I only knew the name vaguely. Now I have the complete model implemented (ok, some ubber cool features are not there yet, but, I don’t plan to ship them with the initial version of this app anyway), an awesome administration tool. And I don’t mind a trimmed down phpmyadmin, I mean an awesome administration tool that is very friendly, very good looking and very easy to use. It is so good that I think I haven’t run more than 3 different queries so far (to empty the sessions table, to rename a field in a table and to see if the data was really there).
And that’s not all, I had enough time to implement about a quarter of the critical feature of this application. If in one day I can go from not knowing about the framework to be writting the code that matters, then, I am on the good path. Oh! and I almost forgot. Since I am a fan of TAL, a template system originally invented for Zope, I just didn’t use Django built-in template system. I picked up SimpleTAL , an independ implementation of TAL; that is, another package of which I knew nothing about and that I had to pick up from scratch and integrate with another product to which I was a newbie as well (err… Django, of course).
My all time favourite still is UCW; that’s because UCW is the right way to do it. That is, it is implemented on Lisp (ok, Common Lisp, but it is still a Lisp!) which is beautiful, it uses continuations which makes programming web applications so much non-weby, so much like a normall application with state and a flow. But, it doesn’t still have the easyness of Django. If I had to make a long-time investment it’d be in UCW andLOL (or some other links). LOL adds to UCW what it is mising to be at the level of Ruby On Rails (which by the way, I’ve tried and it dissapointed me).
But now, today, the answer is Django (at least, for the first day… let’s see if tomorrow I don’t find a showstopper: “what do you mean django can’t interface with atom clocks and download newsgroups to my PDA ? I can’t live with that… aggghhh!!!”).
So, why don’t you set appart two hours of your life and give it a try (you should if you are on web development; if you don’t know Python, you might consider setting up some more hours for it first). I mean, I even have time to come to my blog and write a lengthly comment about it (and I am a very slow and unproductive person). If you were wondering, no, the time wasn’t enough to use a spell checker.