Zope 3 sprint
I spent most of a week in Melbourne for the 2nd Australian Zope Sprint. I've been lurking on the zope3-dev mailing list for a long time, but never really spent any effort to get familiar with Zope 3, let alone get involved. It's been on the infamous mental TODO list...
The first three days of the event were a tutorial on Zope 3 by Jim Fulton, with regular "hands-on" sessions. Probably the pace could've been a little faster, but I thought the tutorial was very good, and Jim is (unsurprisingly) very familiar with the material, and makes a good teacher. As someone who currently earns money developing on Zope 2, Zope 3 looks really really nice. Trading multiple inheritance madness for interfaces and adapters looks like it's paid off really well.
The next three days were the sprint. I volunteered to work on object location events with Mike, but that quickly turned into working on adding "subscription" adapters to Zope's component system, because it turned out to be a necessary prerequisite. Jim had planned to implement partial adapters for some time, and thought that was what we needed, but after some discussion it became clear that there were two different behaviours, and we decided to call the one we needed "subscription adapters". Partial adapters can wait until another day, but hopefully some of our work can be reused for that.
We got to the point where we had largely implemented the ability to use subscription multiadapters to replace the IAddNotifiable interface — so that code can register an interest in, say, "object moved" events for a specific instance, or maybe all objects of a certain type, by registering a subscription adapter from (SomeObjectType, IObjectMovedEvent) to ISubscription. The previous scheme required that an object implemented IAddNotifiable, which doesn't help much if a third-party object, like a catalog, wants to know about events on an object. Unfortunately, we didn't get as far as converting any existing uses to the new infrastructure. I hope to get around to finishing that soon.
Every night we went out for dinner at a cafe or restaurant somewhere. Usually we'd go to somewhere on or near Lygon St, which was packed with Italian restaurants and was the closest place. Eating out with people is always enjoyable; it's a pity I can't really afford to do it all the time. It suits lazy people that enjoy eating (like me) very well :) It's also a very pleasant way to spend some time with interesting people you meet at conferences like these. I find pubs and bars tend to be too noisy to allow groups of more than 3 or 4 to talk meaningfully. Thinking of people, it's good to have finally met Anthony, who is a fellow Australian Twisted hacker... if you're going to PyCon, make sure you see his talk on shtoom titled "Scripting Language My Arse".
Post Linux.conf.au, I was nicely energised for random projects. I mucked about with glade a bit (with no actual results — yet), and played with D-BUS's python bindings, which are written in Pyrex, so I got an excuse to learn that, too. Unfortunately, starting lots of cool mini-projects isn't the same as finishing them. I need to find some motivation to sit down and do that at some point. Wanting to port small(ish) projects like pyDHCPd and archd to Twisted [Memo to the universe: Python probably doesn't need yet another networking framework. Please look around before writing your own] gives me more things to start, rather than more time to finish what I've already started. Hopefully I'll manage to finish a few things soon.
Blah. The current situation is pretty demotivating, but it should all be resolved, one way or another, soon. Life goes on.