dotdorset launch and new tool playtime (django and git)

posted 23rd July 2008 00:57

So, amongst several meetings with fellow dorset web types, we discussed starting a portal to act as a gathering point for people like us. The result of which led to a google group, an upcoming group, a presence on twitter and finally, the portal itself, dotdorset.org.

Because this was a non-paying client project, I took the opportunity to use a selection of tools I hadn't used for anything significant and wanted some more experience with. It's nice to have these projects from time to time, where you can take risks you wouldn't otherwise be able to take with client work. The new tools I used for this project were :

I'm lying when I say Python is new to me. I've had a fear of it for a long time. Upon entering a job some years ago, I was handed two failing projects written using Zope and Plone. This was my first significant experience with Python, and it was so bad that whenever I saw Python code afterwards, it made me shudder.

Django

However, I've been meaning to get over that and give Django a try for some time now. I've noticed quite a few clever people I know trying it out and being happy, and I've also been lucky enough to see Simon Willison present on it (very clever chap who is one of the creators of Django). Also, it's from a publishing background, and some of my clients are in that arena, and earlier parts of my career were spent working for publishing companies.

I had a real easy time getting Django set up on my macbook. However, other people checking out the code to contribute bits and pieces had a lot less fun than I did. I'm still not sure what caused their problems.

Developing in Django was, for the most part, a real pleasure. It became obvious that significant portions of Symfony was either inspired by Django or inspired Django (I suspect the former). This made things alot easier for me, as the learning curve was made somewhat smaller. However, the model layer was a lot more lightweight and easy to work with than Propel (though I like that Propel is so easy to reverse engineer because of the way it generates base classes).

The Django admin interface is a work of genius. I'm going to say no more on this topic, as this is all you need to know.

I was much less impressed with deploying Django into a production environment though. I've become so used to mod_php just working that I was surprised how much messing around with interpreters and locations for egg files and environment variables there was. And then, when we finally deployed live, the whole server ran out of memory and died (still not sure what caused this). I've been recommended mod_wsgi and phusion passenger as possible alternatives for deploying to. I'd really love to hear some more opinions and tips about how to deploy Django well (both from a what servers point of view and also what deployment tool - maybe capistrano ?)

Python

Django is a much nicer introduction to using Python than hacking around Zope was. The concise syntax is nicer to read than PHP, however, I don't think I've really yet understood what it means to be 'Pythonic'. I wonder how much a Python veteran would scream at my code.

Git

Git is a distributed version control system. For the workflow on this project, there were only two remarkable things - it was much faster than svn and it was easier to hold repositories in multiple places. I haven't quite worked out which of the methods I'll use to replace svn:externals yet, though.

Overall, this project as a chance to try out new tools has been a great success. What new tools have you introduced recently, and was it a positive experience ?

« markng.co.uk