Two months ago I wrote about wanting a dynamic framework to work with our application. Since then we have written part of our application in Django (the popular Python Web framework), and I like working with it.
Development in Django is a great experience. Adding a new application is a breeze. Debugging is also easy since if something is broken (in development mode), instead of getting a cryptic 404 or 500 error page, the framework supplies a very detailed picture of what failed, the line in the code (not just the line number, but the actual source code!), and the status of all the variables and the rest of the environment.
Since Django is written in Python it has another interesting strength. It is much easier knowing what’s going on since you have all the source code at your hands and you can change it and it takes effect immediately (unlike “old school” Java,C++ where you are left glaring at the screen thinking why now, why me …). In such environments it is very easy to really know what's going on by adding debug information to the framework source code.
I used this technique last week when I found out with Nir that the application behaves differently in production than in development. It took me five minutes to realize that the development server is actually single threaded … and within an hour I had wrapped Django with another Python Web server (called “Aspen”) so it would serve multiple parallel requests. The part I played as a detective was short due to a minor code change I did within Django that displayed additional information.
In other environments, when you hit a wall, it’s hard and painful. With Django, you have live source code at your hands, nicely written error messages and all related variables. Hitting that wall is so much softer. You bounce right back and have a solution within minutes!
Now that our application includes Django, the next step for me is to gather some time and write a cool feature with the new capabilities. Until then, we will continue to compare the time and effort to solve bugs in the base system and in the application written with the Django Framework.

Comments