For the last few years I’ve been the lead developer on Bristol Online Surveys (BOS). BOS is very well used and popular but it’s also quite old (the core system being launched in 2003 but with many enhancements subsequently built on top) and written in procedural Perl.
I don’t mind admitting that I like Perl but the development life cycle for procedural apps is not exactly pain-free. Some of the most recent changes to BOS have dramatically improved the look and feel and, under the hood, made the surveys more accessible. However, significant changes result in a development and testing process that is long and complicated.
Having done a lot of procedural Perl at work for the last few years (and only doing object-oriented programming with MVC frameworks outside of work), I was keen to adopt a more modern methodology at work. So, two weeks ago I began work on a new project and essentially replaced all the technologies I’d been working with at work in one fell swoop:-
- Procedural Perl replaced with Python and the Django framework. I know there are Perl framworks but Django is in use elsewhere in IT Services R&D/ILRT.
- Komodo IDE replaced with Eclipse
- PostgreSQL…. now with added Cassandra and (probably) MonetDB
- SVN replaced with Git
- RT replaced with Trac
So far, I’ve enjoyed the switch and it’s not been as disruptive as I’d thought it might be (certainly not as disruptive as when I stopped using Windows on the desktop and moved entirely to Linux in 2003). I’d done a bit of Python in the past but am rapidly getting back up to speed. I’ve also found the Django framework fairly intuitive although this was helped by my experiences of other Web frameworks outside of work (for example CakePHP). The NoSQL side of things will probably be a different matter
Outside of work I’ve been doing a number of interesting things which I plan to blog about separately in the near future. Perhaps the most interesting are experiments with Google’s App Engine and trying to stop ‘Facebook Like’ buttons dramatically increasing load times on web pages as illustrated below: