PyCon 2012 is the 3rd PyCon that I have attended. This year I honestly didn't know what to expect. After attending the first year my team and I abandoned our proprietary web framework and began using Django. Then after the second year we automated our server configuration and application deployment processes. This year I was not sure what the next big thing for us would be.
This year I attended 3 of the 4 tutorial sessions.
The first day, the only tutorial I attended was "The Real Time Web with Co-Routines" with John Anderson. The content in this session was great. We essentially walked through a real-time chat web application using backbone.js, handlebars.js, socketio, and gevent. Due to an unfortunate release schedule most of the examples were broken for the duration of the tutorial. Luckily we were still able to see some real time web using coroutines in a demo app that was a real time web based chat client. This was somewhat hands on, I think a lot less than it was intended due to the bad timing of the release bug.
Day two I attended both tutorial sessions, the first of which was "Optimize Performance and Scalability with Parallelism and Concurrency" with Bob Hancock. This was an excellent talk, not so much an on-hands tutorial like I expected, more of an extended lecture. Not that that is a bad thing, there was a ton of information and it was all very thorough and extremely interesting. There were tons of low level details about how system calls work on POSIX systems. To sum up (maybe oversimplify is a better description for what I'm about to do) the talk, Bob had a program that opened a 60 GB file and searched each record for a given string.
There were a few different approaches that he used, the first was brute force which consisted of opening the file, looping over the records and using Python's "in" operator to search the record for the string, the next swapped the "in" operator for a regex. Some other methods included generators, threads, multi processes, futures, coroutines, gevent, and non-blocking io. All of his examples are on this github repo.
For the second half of the final tutorial day I attended "Devops for Python: Doing more with less" by Noah Kantrowitz. This was a very hands-on tutorial about managing virtual servers (specifically on EC2) using Chef and Fabric. This was actually pretty amazing. I do have some experience using EC2, Chef and Fabric, but I was impressed with how easy Chef makes working with EC2. Using Chef's "knife" command, we had a new Ubuntu EC2 instance running with only 6 (local) commands. Then, creating a second identical Ubuntu EC2 instance was only one additional command.
In Noah's talk, he walked through some of the common Chef terminology, did a quick crash course in Ruby syntax (which is used by Chef), then a crash course in Fabric. Mixed in between the lecture crash course parts of this tutorial we did small labs. The first lab was to get an EC2 instance up and running, the second lab was to write a sample apache Chef recipe, and the final lab was to write a Fabric script to start "chef-client" on each both Ubuntu machines.
That is the quick recap of the tutorials. I've got some more write-ups in the queue about the rest of PyCon 2012 this year, so stay tuned for those.