Category Archives: Web development

The blog post to end all blog posts…

You may have noticed that I’ve not posted anything on here for some time. It’s not that I don’t have anything to say, far from it, lots of exciting things have happened and I’ve been working on quite a diverse range of projects (from iPad games for research to large scale national services). Unfortunately I’ve just been extremely busy and not had time to write anything – our group has shrunk in size but the demand for our services has grown.

The other issue is that the University is currently deciding on the future of this blogging service. It’s used for hundreds of different blogs but there is a cost for running the service (support time and servers etc). At present the service is being reviewed and it may be that it doesn’t continue in its current form. We won’t know for a while yet but it’s not conducive to wanting to add content here at present.

So, for some time, I’ve been taking a slightly different approach with my personal blog where I’ve been posting regular updates of the things I’ve been doing and occasionally posting a longer piece. The ‘update’ blogs posts won’t always mean anything to anyone else but they help me track project progress and the process of continuous improvement in those projects (and personally).

So, for a while at least, I’ll be taking a break from updating this blog.

Django, Python and Cassandra… one year on

Wow, where has the time gone? It’s well over a year since my last blog post which is a reasonable indication of how hectic things have been. Perhaps I should have a New Year’s resolution of blogging more?

Anyway, it’s over a year since I switched to working full time on a new web application written in Python, using the Django framework and back-ended (at least in part) by Cassandra. So, my thoughts on these are perhaps well overdue:

  • Python – I’m really impressed with Python. I’ve done some Python before but it’d always involved Zope or Plone and that affected my opinion of Python itself. Now I’ve been able to spend more time writing Python code outside of Zope/Plone projects I can safely say that I really, really like Python. Python code feels a lot cleaner than Perl or PHP and, although I was initially sceptical of the enforced white-space, I’ve learned to appreciate it.
  • Django – I’ve used other web frameworks but Django definitely feels the most polished, feature-rich and has the best documentation. I’ve also really appreciated the testing support, especially given the scale of the application we’re creating, although I’d prefer it if the tests ran a bit quicker. It’s also well maintained and regularly updated.
  • Cassandra – Coming from a traditional SQL/RDBMS background, working with Cassandra has been interesting. It fits our use case well and in some areas has performed better than the old system using PostgreSQL. We’re still using PostgreSQL where an RDBMS makes sense but Cassandra has come into its own in the areas where we’d suffered with speed problems in the past.

I think the only thing I’ve been disappointed in is the choice of IDEs. I’ve tried a few out over the last year having parted company with Komodo due to not being able to justify the price tag. I started off with Eclipse and there’s a lot to like in Eclipse if it wasn’t for the bugs. Some of the bugs seemed core to Eclipse, such as only deciding to allow a keyboard short cut for commenting code to work on rare occasions. Other problems stemmed from third-party plug-ins so weren’t Eclipse’s fault directly.

After Eclipse I thought about using Komodo Edit but that doesn’t have support for Git so is a non-starter.

I tried PyCharm for a bit but that was too slow for me. I was having to wait for it to catch up with what I was currently trying to do and it was frustrating. It could be a Linux thing but since I only use Linux that was that for PyCharm.

I like the look of Ninja IDE but again the Git support isn’t very good. There’s a third-party plugin that adds support for staging and committing but you have to revert to the command line for pushing or pulling. I’m still playing around with Ninja, although not using it in anger, as I think it has the potential to be really good.

So, I’m currently using Aptana (which is based on Eclipse) and that seems OK albeit with a few of the same issues. Some keyboard short cuts are temperamental but it hasn’t crashed without warning (yet).

I’ll try and devote future blog posts to some of the specifics about the project I’m currently working on. There’s a wealth of technical, legal, usability and design challenges so there should be plenty to talk about. However, at this stage my New Year’s resolution will have to be one of not committing myself to blogging more and I’ll just blog as and when I find the time.

Goodbye camel – using some different technologies

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:-

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:

Site performance graph with a peak that appears to relate to the Facebook Like button implementation

Upcoming changes to cookie laws

As I’m sure most readers are aware, the European e-Privacy directive is due to be implemented in the UK in May and will result in a change in the law relating to cookies (small files stored on your computer’s hard drive). This change is getting increasing coverage on techie mailing lists and even on more mainstream news sites such as the BBC.

The law states that cookies or similar devices must not be used unless the subscriber or user:

  • is provided with clear and comprehensive information about the purposes of the storage of, or access to, that information; and
  • is given the opportunity to refuse the storage of, or access to, that information.

The only exceptions are cookies that are “strictly necessary” for provision of a service. The oft-cited example being session cookies for e-commerce sites etc.

The law will mean that consent must be obtained for all other cookies, including cookies used for Web analytics (such as Google Analytics), personalisation or any other non-essential purpose (e.g. advertisement tracking).

The Information Commissioner’s Office (ICO) is yet to issue clear guidance to developers on how to obtain consent. For example, this could be interpreted as having to implement functionality ensuring that users confirm consent in a web page/pop-up etc when a non-essential cookie is to be set. Alternatively it may be that consent could be implied by browser settings. Obviously any intrusive mechanism of consent is likely to present a barrier to users so developers are awaiting the guidelines from ICO with interest.

The ICO has said that they will give organisations time to adapt and so won’t be in a position to start enforcing the law immediately. So, for now, it’s perhaps just a case of being aware of the impending change and waiting for guidance from the ICO.

Further reading:

Update: 25/05/2011

The law comes in to effect tonight and, although the ICO has now issued guidance, the steps Web developers should be taking remain far from clear. At this time it’s hard to see how a site setting non-essential cookies (such as those used for Web analytics) could comply with the law without intrusive interstitials or pop-ups. These approaches could be seen to dramatically decrease usability and offer a competitive advantage to similar sites operating outside of the European Union.

In an ICO press release today they say that organisations have up to 12 months to comply with the new law.