I believe Kevin Price had mentioned it once or twice last semester, but it really hit me when Dr. Ragade himself told me (as I turned in my final project during finals week, last semester) to start thinking ahead of time for a CECS 550 ("Software Engineering") project. He was right, and the ground was hit running in the first week of this semester. I had been thinking about things and looking for something that might be challenging, but most likely would be "easy". The idea was to find a "real" project with an actual customer and actual deliverables (to do actual life-cycle analyses and software metrics work with). One of the things that had been on my mind, as I was working on this year's E-Expo website, was how badly the entirety of the Speed School Student Council's website needed rewriting and modernizing. That's when I decided to go ahead and mention it to comrade-in-arms (fellow CECS 550 student) Tony Harper who is the current Director of Administration as a possible project for the class. He was excited by it (the website is the DoA's responsibility, and he knew it needed doing), and agreed to work on it with me. This makes the project work, as Tony can act both as the Project Manager for the project as well as the "Client" (both metaphorically, as in the Extreme Programming methodology, and literally).

The original plan was to do it just as it has been done before (and as the E-Expo site was done): PHP code with MySQL databases. I have become extremely tired of PHP over the years, and have this general feeling that in PHP I "keep making the same mistakes over and over again". A lot of that feeling comes from my work maintaining a large, dynamic PHP website for my Fraternity, which used semi-reasonable coding practices for PHP when the work was begun, but was obsolesced (and hacked, I believe) several years later. I think about all of my work that went into that website that isn't there anymore, and most likely under the next few administrations won't ever be there again...

So the week before school started I was looking into some reasonably well-kept PHP CMS engine to use as the backend. I figured that I didn't want to write everything from scratch this time around, so I spent a fair amount of time evaluating options like Mambo, Joomla, phpwebcms, Drupal (my current blog engine; I've had a fair amount of experience with), Nucleus (my previous blog engine; again, I've had a fair amount of experience with), and Phorum (a forum install of choice for me; as seen on the current Speed Council page), and others. Nothing really exciting...

I had seen the hype of Ruby on Rails, but hadn't really been that excited by it. I've had some bad experiences with MVC frameworks in the past (of them, Fusebox for ColdFusion was the worst, probably), and the whole scaffolding system really put me off (seriously, if you need tools to write a bunch of boilerplate every time, then you are probably automating at the wrong level). I'm also not that fond of Ruby itself, and unlike most I had heard of Ruby prior to the Rails hype. I've always been a bit of a language hound, and I sniffed around Ruby back in the day when it was really tough to find a tutorial written in English (Ruby is Japanese). (If you want a good English tutorial, by the way, I can recommend whytheluckystiff's Poignant Guide to Ruby.).

In comes Digg, the useless newsbot of doom, with a not so useless piece mentioning the "Snakes and Rubies Conference". Right time, right place, the Conference post piques my interest in a competitor to Ruby On Rails, the Django Framework for Python. Some recent work I had done in Python had opened my eyes to that language (it is a mongrel language, not pure functional nor pure object-oriented, but a much cuter one the PHP is) and that the indentation obsession wasn't as bad as I had once believed. Django jumped out at me as something new and smarter and different. When I watched the Conference video and started reading some of the comments/emails of Adrian Holovarty, it sounded like he had some shared web development philosophy. (He is also a much better public speaker than Rails' David Hansson, but that isn't important.)

In the two weeks now that I've been working with Django I've been pretty happy with it. I wrote most of a Trac-like Issue Tracker pretty quickly (a few hours on a Saturday; the hardest part was deciding to migrate to the "magic-removal" branch (which removes a few rails-like magic features, and some odd namespace wrangling) as the magic was giving me a headache), and we are already using it for the project. I would point to the publically-accessible view of the Issue Tracker on our current Test Server, but I don't have permission to do that just yet.