Right, time to put these time based categories (a.k.a. Events) to some use...
I have one remaining mid-sized application built with PHP which is still actively supported and developed.
A few months back, after having had one too many bad experiences with the brain-damaged undesign which calls itself PHP, I sat down, opened my text editor and created a models.py file, just out of curiosity. After a few hours, I had about 20 Django Models defined, which were more or less equivalent to the PHP application's database structure. After taking a bit of time to customise the django.contrib.admin application, I had quite a pleasant interface to use to play around with the object model.
So, for the past few months, any time PHP has pissed me off, I've added a little bit to this proto-port of a Django application, and kept the model definitions up to date with changes to the database structure and any new features added.
In the last few weeks, a number of things have happened which have brought the light at the end of the PHP tunnel into view:
- I started tracking Django's SVN trunk again, as I tend to do a few months after each major release. Among the other excellent new features, trunk contains a new
DecimalField field for models which takes care of any concerns I had about using floats for financial information.
- I finally got a few hours together to sit down and actually make some PDFs with ReportLab instead of just reading the documentation. It's far, far better than the PHP PDF classes I'm using to generate invoices and quotes.
- When I had another chunk of hours free, and armed with Django's newforms, I tackled the core functionality behind one of the most complex screens in the application. It took me less than 100 lines of code to do something which took days the first time round with PHP.
So I've ported a good chunk of the easy bits, I've all but ported the core of one of the hard bits (and there are a few), I have a better means of creating PDFs, financials can be stored with no loss of accuracy - why not go the whole way?
I'm currently working on the next major release of the PHP application, which is scheduled for deployment this weekend. I'm going to make this my start point for getting serious about leaving PHP behind for good.
I have 5 months and 2 weeks, a full-time job, a wife and daughter to distract me with their special brand of awesomeness and a PHP application to support in the meantime - can I do it? Stay tuned.