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.


  1. I use PyCharm and very happy with it. Also tried Eclipse and Komodo, those are very slooooow compared to PyCharm and they are far away from PyCharm in terms of features and “smartness”. I found that in some conditions it becomes slow, but restart helps, you know, it’s Java 🙂

  2. Hi Vladimir, I tried PyCharm but as I said in the post it was far too slow for me so I found the opposite to you. Also, the text displayed really poorly on my system during the trial of PyCharm and put me off buying it or using it further.

  3. Hi Kieren,

    Sorry, I meant how you integrated Django with Cassandra.
    Did you used pycassa or something else?


Comments are closed.