Skip to content

Painfully Learning Zope

My research demands that I write an interface for native speakers to annotate sound files of learner speech. Up until now, my poor annotators had been using an excel sheet I generated via a python script, with one column that pointed to sound files on the web. It worked, and it had nifty features like excel’s builtin autocomplete, but it was easy to run into versioning problems with the halfway-completed excel sheets floating around.

Now, much of our project’s work is done in python, so the powers that be say “hey, write us a web app in python that does this job”. No prob, python has lots of web app frameworks (cherrypy, twisted, django, snakelets, mod_python (and .psp pages) ). And, it was actually a Good Thing, because I’d always wanted to learn web app programming (It’s embarassing, actually. My ivory-tower programming experience has been a lot of working with statistics, machine learning, natural language processing, but I’ve never done things like web programming, database programming, etc; I’ve read php and mod_perl code, but reading is of course much different from writing). So, mod_python and psp it was. They proved to be intuitive enough to get some working teach-myself-how-to-do-this stuff code in a couple hours.

However, project requirements change. “We want you to do it in Zope or Plone” became the new order of the day. Been wrestling learning zope/plone for the past 4 days or so… The architecture has a lot of promise, but in many ways it’s frustratingly immature. It can make things look really slick… but documentation is disappointingly unclear/convoluted. There are many links out there for learning this stuff, but very few good ones.

After much searching, dev shed ended up having a high concentration of good links. I wish I had found this howtoCreating Basic Zope Applications, in particular, 5 days ago.

Zope seems full of inconsistencies. And it’s not very pythonic. Take, for instance, a mishmash of “here”, “this”, and “self” used hodgepodge to fulfil the function of python’s “self”. What’s up with that?