Atlanta was interesting. I mean we were in a very corporate, rich downtown: lots of big buildings housing banks and lots of people rolling on chromed 20s. I'd never seen so much chrome. The juxtaposition of Atlanta with Pycon was probably at its most poignant on Saturday night, when apparently the Hyatt hosts an Old School Saturdays dance party in their downstairs ball rooms. That happened to be right next to the Python open spaces. They had some ropes to keep the groups separate. I'm sure mayhem would have ensued if party goers had wandered into the Unladen Swallow open space.
Anyway, back to the conference. Some of the videos and slides are being aggregated online. The talks were great; I'm hoping that selection becomes more comprehensive.
I definitely came away with a bunch of notes, things to try, etc
- Python in the browser (Silverlight) looked cool, but it's not really a viable option for Linux users. Even the latest preview of Moonlight doesn't run the IronPython REPL without errors. (Stable version doesn't run it at all.) Oh well, I'll try back later.
- The GIL on multi-core isn't fixed yet in 3.2 -- and this problem is relevant even when dealing with IO-bound instead of CPU-bound apps. David Beazley's presentation was fantastic. Of course, threading still makes sense for handling IO load, but it's good to have this limitation commonly understood.
- Donovan Preston's talk definitely made me want to check out Eventlet. One of the biggest drawbacks of frameworks like Twisted is that you have to write code in a special way (i.e. using deffereds, or yield) and the implication of this is that you also cannot just take other people's code and include it in your project. That's a huge problem. However, even with Eventlet you do have the drawbacks of it being a non-blocking server. So I was even more excited to learn about Spawning. From what I understood, Spawning combines the power of the async server with actual processes, that make it easy to offload those blocking IO calls -- i.e. your database queries won't pause your entire application.
- The State of Packaging (slides aren't up at time of writing) was a great look at improvements that are being made to the packaging metadata in Python. Tarek Ziadé is to be commended for tackling this problem. And oh what a problem it is!
- The new unittest has some really useful improvements (like multi-line text diffs for assertEqual!). And it's been backported as unittest2 for us folks still stuck on 2.6.
- I will use Dozer! (It's memory profiling WSGI middleware. How simple!)
- I will use repoze.profile! (It's a performance profiling middleware.)
- When I think that I have a problem best solved by Nginx, I will also evaluate HAProxy.
- Apparently people love Munin. They say it's much better than Nagios.