[Updated 2006-08-20 to add links. All (most?) presentations are being posted on the proceedings page]
Last weekend I attended the Vancouver Python Workshop here in town. I love this conference because it's small and local, but attracts a great crowd. There were a few folks I know mainly from the edu-sig mailing list. Guido was there to give the keynote, I got to talk with Ian Bicking a fair bit, and I had never realized that Toby Donaldson is a fellow Vancouverite.
Friday night: Keynotes
Guido (van Rossum, creator of Python, for anyone reading this who is not soaking in Python every day) gave a keynote on the state of the upcoming Python 3000. Since I make an effort to keep up with this there wasn't much in the way of surprises here, but it's always good to hear it from the BDFL's mouth. I'm excited by what's happening in Python lately, both in language changes and in the libraries, and I think Python 3000 will be a move in the right direction when it comes.
Jim Hugunin, initiator of the Numeric extension, Jython (Python on the Java virtual machine), and most recently IronPython (Python on Microsoft's dotNet virtual machine) also gave a keynote. He showed how having Python running in the same runtime as your C# code allows you to have stack traces all the way down, which is an advantage over PyObjC. It also helps to be binding to a language which is garbage collected. In PyObjC they go to lengths to make the runtime behave like garbage-collected Python, but there are still some edge cases that can sneak in and bite you. Of course, Apple's announcement of garbage-collected Objective-C in XCode 3 next year should fix that. Jim's an engaging speaker and seems like a really nice guy. And since both Google ("do no evil") and Microsoft ("evil empire") were represented, balance was maintained in the Force.
After the keynotes there was a reception at the Steamworks brew pub, which is a great place. Staying up late drinking may not be the best way to kick off a conference that starts at 8 am the next day though. I was home by midnight, but I heard from many others that they were out until 3 am. Ouch.
Saturday: Workshop Day One
This was an intense day for me. I was scheduled to give a presentation, but then Paul (Prescod, my friend and co-worker, and one of the conference organizers) asked me to also give a lightning talk and be on a panel discussion. Since I didn't have time to prepare much for these I was a bit nervous. On top of already being nearly sick with stage fright getting ready for the presentation I did prepare for.
Guido hadn't had time for questions after his keynote the night before, so the conference kicked off with a Q&A session for him. After that was the lightning talks, and I gave the first one. Aside from not having time to prepare, I had never given a lightning talk before. I demo'd Drawing Board, the animation tool I've been working on for my kids, which filled my five minutes pretty easily. I got some nice feedback about it too, which is especially gratifying since after I've been working on something for awhile I tend to only see all the problems I know it has, rather than what is good about it. Drawing Board has been a real struggle for me, both in learning PyObjC and the "Cocoa Way" of doing things, and trying to push it into new territory, so I was pleased with how its first public demo was received.
After the lightning talks I attended the beginning of Paul's tutorial for newcomers to Python to try and pick up some tips. After lurking on the edu-sig mailing list, I'm trying to organized some Python classes at my son's school for the kids there. Paul's approach was more towards people already programming in other languages, so I didn't get much there that I could use, but it gave me some things to think about at least.
Ian Bicking's talk on WSGI got extended from one 45-minute slot to two, and I only got so sit in on the first half, because it overlapped with my presentation. I loved his hand-drawn slides and his take on the "Internet is a series of tubes" meme. He's a good presenter and WSGI is important stuff for Python, giving it the kind of basic web framework that Servlets gives to Java, which Python has desperately needed for a long time. Now if I could just wrap my brain around Paste I think I could achieve web enlightenment…
My talk, "OS X, Python, and Kids" went well. I used the whole 45 minutes (not like last time I presented when I went nervously through my presentation in 10 minutes and was then left embarrassed on stage), took some good questions, and people seemed to be engaged. I've posted my slides, with notes based on what I was talking about during the presentation, here (3MB PDF). The feedback from this presentation, where I used several of my projects as examples of what you can accomplish with PyObjC, was very good, at least from the folks who came up to me. A couple of people even sounded like they were on the fence about whether to switch to Macs and I might have given them a push.
After my talk, and lunch, was the panel discussing how to embed C, C++, C#, and other languages in Python. We had Jim Hugunin (IronPython), Tom Weir (using SWIG on a proprietary project), Samuele Pedroni (of PyPy), and me. There was no moderator, and while I've followed the various tools to wrap libraries for Python, and I've used a lot of libraries that are wrapped for Python, I haven't actually done much wrapping myself, so I tried to be a moderator and get the conversation going. SWIG seemed to be used by the most people in the room, and while as a user of SWIG I've struggled with it, since any project that uses it seems to be dependent on a very specific version which you then have to find, download, and install. So I'm not a big SWIG fan. On the other hand, folks who use it for wrapping C code can freeze the version they're using and more or less rely on it, so it works great for them (although I guess debugging is still a bear). I still thing SWIG is part of the problem, not part of the solution.
At the end of day one was a great BBQ at Locarno Beach. Daniela and I took the kids, then we stayed on the beach to watch the final night of the Celebration of Light fireworks. It was Mexico's turn to light up the sky and they did a spectacular job, winning the four-night competition with Italy, China, and the Czech Repulic. So then there was an encore display, and then we tried to get home through the gridlock that follows fireworks in Vancouver. We got home by midnight, washed the sand of the kids, and put them to bed.
Sunday: Workshop Day Two
After two late nights (for me) and early mornings (for weekends) I'm beginning to feel really beat. I'm also coming down from the adrenaline high I was on yesterday, before and after presenting. I was also distracted by trying to implement the Turtle module in the standard library from Tkinter to PyObjC (and simultaneously port my Kutia turtle program from Tkinter to PyObjC). I actually got pretty far with it, but probably need to post some questions on the PyObjC mailing list to get it finished.
Next was Wilson Fowlie's presentation on PyParsing. I had lunch with Wilson and he's a great guy. He shouldn't be so self-deprecating in his presentation because he had great information and it was an interesting topic. Parsing libraries are an area where Python has an excess of riches, and it can be difficult to decide what to use. Wilson made his choice and is happy with it, and makes a pretty convincing case for choosing PyParsing. It would be interesting to see projects such as reStructured Text, PyMarkdown, and PyTextile all built on top of the same basic parsing engine. Next time I have a file type to parse I will give PyParsing a try, based on this Wilson's presentation.
After lunch, James Thiele gave a talk on embedding domain specific languages in Python, mainly revolving around the hooks Python gives you for importing libraries. By using the import hooks you can import code as Python objects which is not Python code. This is pretty cool, especially when coupled with the previous talk on Parsing.
There was a panel discusson on Little Languages, which both Wilson and James were on, but by now fatigue and distraction were taking their toll and I wasn't a very good audience.
After lunch there was a presentation by Leonardo Almeida on Python and Zope in Brazil, which was basically that they are both widely used, in both business and government, but companies that use them don't want to talk about it because they regard Python as their secret weapon.
David Ostrowski gave a talk on teaching with Python in graduate computer science classes, but I didn't really enjoy the presentation. I was too tired and his points about Python were too familiar. I didn't hear anything new, but it all appeared to be new to him. More power to him, I guess.
There were some good lightning talks at the end of the conference, including Brian Quinlan showing a hack he'd whipped up after the earlier talk on importing domain specific languages. He showed how to use the import hooks and the csv module to load comma separated value files as native python datatypes.
To close the conference, Ian Caven gave a great show about how he and a partner built up a successful business using Python (and OS X). They restore movies for DVD release and they use hundreds of Macs running in parallel, with all the processing managed by Python. It's a great story and Ian is a great presenter, so that was a high note to end the conference on.
Looking forward to next time, for sure. Thanks to all the organizers!