PyCon 2007 Report

I am now back in Vancouver and so I can finally take a breather, sit down, and write about PyCon 2007.

I should begin with the statement that the trip was fantastic! It was probably the best PyCon for me personally as well as the best one in terms of content (or so I heard; more details in a bit). It was also the largest with 594 people in attendance which is amazing considering that is a 43% growth rate compared to last year!

My trip began with an early flight out of YVR to DFW. When I landed I got my bags, found Michael Hudson, and then met up with Richard Jones (thank you, SMS) to take a taxi from the airport to the hotel. It was a handy thing to plan hotel rides with both Michael and Richard ahead of time so as to not have to lug my tired bum to the airport all by my lonesome.

Once there we dropped off our bags and started doing socializing (with the attendance so loud you could be guaranteed to run into some PyCon attendee at the bar in the hotel). Initially Richard, David Goodger, one other guy (I suck with names but I am great with faces, sorry), and me went to Wal-Mart to get bowls, spoons, milk, and cereal so that we didn't have to pay ridiculous prices for breakfast everyday (David came along to guide us to Wal-Mart as he went the day before for his breakfast supplies).

When we got back we sat in the bar chatting with various people as they walked past. After people had a drink we went to BJ's for dinner (along the way learning that birds in Texas like to congregate together in trees and let their bowels relax when they get slightly excited when you walk underneath them). Ended up sitting with Richard, Thomas Wouters, Guido, Barry Warsaw, and Jeremy Hylton. After eating Richard left because he was exhausted (his flight is like 26 hours or something from Melbourne). The rest of us chatted for a while and then eventually went back. Don't remember exactly what I did for the rest of that night.

One note about all the meals I ate. I pretty much mention every dinner I ate during the conference as it helps me remember what I did. Most nights it was not that interesting nor do I expect people to care where I ate on some night, but its my essay so you just have to live with the unneeded details.

Friday was the beginning of the conference. Ivan Krstic's keynote was great! I know that OLPC has picked up a lot more developers because of Ivan's presentation. He also gave out rev-1 hardware to one guy who recognized what one math equation did and one to Guido during his keynote (several other Python luminaries ended up with laptops throughout the conference; alas I was not one of them). It was entertaining to watch people want to touch those things for the rest of the conference. I think it gave Guido a nice break from being the center of attention as he usually is at PyCon.

After the keynote I do what I did last year: I ignored almost all talks and hacked. I decided I wanted to get my PEP 362 implementation finished before the sprints started (and I did; see the sandbox). It was interesting developing some code that is both 2.6 and 3.0 compatible. Biggest trick was remembring to use 'print' the statement or the function.

One of the talks that I did attend on Friday was the python-dev panel that I organized. Steve Holden did a good job as moderator. We had Raymond Hettinger, Neal Norwitz, Andrew Kuchling, Jeremy Hylton, and myself on the panel. Thomas Wouters and Barry Warsaw answered some questions from the audience. People seemed to really appreciate the panel (even though the panelists pretty much all wished they could also hear the PyPy taking place next door). Thanks to the panel it looks like Py3K development will move over to a distributed version control system (most likely Bazaar) in order to make merging back into the trunk easier by having an individual branch for each feature and thus make managing them a more atomic action.

I also attended both lightning talks on Friday. I heard people question whether Mike Orr and Jacob Kaplan-Moss kept people to five minutes (which they did) because some of them seemed rather long; that is just a side-effect of boring lightning talks. They were still entertaining overall, though. I gave a lightning talk in the evening about removing automatic unpacking for tuple parameters. The talk, though, backfired as people misread ``def fxn(a, (b, c), d): pass`` as ``fxn(a, *(b, c), d)`` somehow. People were fairly confused throughout most of the lightning talk which basically killed it. Oh well. Lesson learned about trying to quickly ask a large audience about an obscure piece of syntax. In the end it didn't matter as this feature of Python has been approved for removal since PyCon ended.

I then hacked on PEP 362 stuff until the Python Software Foundation meeting Friday night. The thing went for three hours! At least we got a free dinner out of it. I managed to get re-elected to the board of directors and "promoted" to executive vice president. I also stayed on as chairman of the infrastructure committee to see through the eventual transition to the new issue tracker.

After the meeting there was plenty of partying on the 12th floor of the hotel in the EWT suite. Raymond Hettinger and Martin Blais both work there along with Christian Tismer doing consulting work. Throughout the conference that hotel room tended to end up being the place to go at night when you wanted a beer from their bathtub, some wine, or play some pool.

Saturday's keynote by Adele Goldberg was ignored by me for preference to PEP 362 coding (my mother is a teacher so the whole educational thing is nothing new to me). I did attend the "Scaling Python for High-Load Web Sites" but only partially paid attention. When I attended Jim Hugunin's IronPython talk, though, I listened. Jim's talks are always fun and informative. He has done a great job with recognizing that not everything Microsoft does is great but still giving proper credit when they do things right; in other words he is fair and balanced in terms of his views on Microsoft stuff. Plus Jim always does something cool in his talk, this year being the use of Python to control a little robot that grabbed a ball on the floor using MS's robotics studio (who seeked him out to get Python support!). He also showed a game he coded up using MS's XNA platform (which unfortunately cannot run on the XBox 360 yet as their version of .NET lacks reflection support).

Guido gave his Py3K keynote on Saturday during lunch. People who attended seemed to come out of it much more calm and happy about Py3K and the direction it is taking. Various other people also said they were realizing that the transision from 2.6 to Py3K was being taken seriously and would be as painless as possible. That was a critical event at PyCon as previously many people were panicked about moving their code from the 2.x series to 3.0, but those worries seem to have been calmed.

Saturday also included my security talk. People said it was a great talk and it seemed well-received. No one pointed out a flaw in my design which was good. Overall people were very supportive and wanted me to get it done and in the core, which is planned.

That night I went with Thomas, Andy (an officemate of Guido's), Neal, Guido, Jeremy, Barry, and the Python editor from O'Reilly to an Ethiopian restaurant. I learned Barry is allergic to a bunch of stuff that night.

Sunday's keynote by Robert Lefkowitz was good, but once again I only partially paid attention because of PEP 362 coding (I basically rewrote the thing from scratch over the span of the conference if you had not picked up on that fact based on the amount of time I spent on it).

In terms of talks I went to Sean Reifschnedier's vim talk (Sean is also the man who made the wireless stable this year so kudos to him for that) and the Pybots talk. Discussed some things with Grig Gheroghiu and Titus Brown about testing stuff which was positive.

Saw the lightning talks at the end of the day. Highlight was seeing Richard's Pyglet talk since it had pretty pictures.

At the end of the conference it was announced that PyCon 2008 will be in Chicago, IL. That should be a lot of fun. I went once to Chicago and I loved it. We also did sprint introductions where I represented the core like I seem to do every year. Managed to get some people to join us on the core sprint (probably one of our largest groups in terms of people sticking around for most of the sprint which was great).

For dinner a bunch of us went to a really nice French restaurant that had the chef from the same expensive restaurant we went to last year (The Standard, which was the fancy restaurant we went to last year, had closed a few weeks prior).

Monday was the first day of sprinting. We agreed to the distributed VCS usage for Py3K (Thomas is in charge of making it happen which will probably be in a couple of months). Thomas also backported dict views to 2.6 which is in a branch currently. He also merged his slice removal branch in Py3K (this does not mean that slicing is not possible, it is underlying slicing stuff at the C level).

Initially Pete Shinners (of PyGame fame) did work on adding methods to the bytes type. He eventually moved over to helping Patrick and Eric on a C implementation of PEP 3101 (Advanced String Formatting).

Jerry (whose last name I don't know) converted a bunch of old-style tests to use unittest. Later on his friend Mike helped out.

But first Mike (whose last name I don't know), Daniel (someone else whose last name I don't know), Guido, and me discussed the new I/O design for Py3K. Mike and Daniel then wrote up the PEP which has subsequently been checked in.

Jeremy squashed some crashers that Armin Rigo found (read: a real pain to fix as Armin is notorious for finding real round-about ways of crashing the interpreter).

Neal was supposed to be getting xrange() to become range(), but he got distracted by removing the exceptions module since it serves no real purpose thanks to the module's entire contents being in the built-in namespace.

Guido did stuff with the new I/O library mostly. He also rewrote reload in pure Python.

Barry and I figured out a mechanism to handle the renaming of modules. Using an importer/loader for sys.path and sys.meta_path we came up with a way to map old module names to new ones, basically making the old names virtual.

Monday for me was spent hacking on cleaning up exceptions in Py3K. I made it a TypeError to raise or catch objects that did not inherit from BaseException. I also removed the ability to index/slice on exceptions.

Went out for sushi at a bar on Monday which just seems odd; having plasma screens around you while you eat sushi just doesn't seem quite right to me.

Tuesday was more hacking and the last day Jeremy, Neal, and Guido were around. I began my painful quest to remove the 'args' attribute from exceptions and make BaseException take a single argument.

Ended up catching dinner with Jerry at TGIF's on Tuesday.

Wednesday night I finally finished my exception work. I have subsequently posted on python-3000 about whether people want to move forward with this as it was extremely painful to pull off (mostly from the change in BaseException's constructor only taking a single argument). It looks like the 'args' attribute on exceptions will stay and the 'message' attribute introduced in 2.5 will be deprecated in 2.6 (might be a record in terms of the lifespan of a feature before it is deprecated).

Because so many people left after Tuesday we had some of the video game guys move over to our table, including Richard. It was rather cool having the creators of PyGame, pyOpenGL, and Pyglet all in the same room.

We all went out to Thai Wednesday night.

Thursday I was still mentally recovering from the previous two days of frustration so I just relaxed. I also got everyone at my table hooked on Ohloh. Since a bunch of people there were creators of various projects they had fun looking at the stats on their projects. And writing this paragraph led me to spend way too much time aliasing old SourceForge names to the current svn names, mostly so I could see how I stacked up in terms of commit totals.

I am now home and glad to be back. Trip was great but I was exhausted by the end of it. It was great to meet so many new people (some of which are not directly mentioned above like Michael Foord, etc.) and old friends (like David Goodger, etc.). As I said, I am already looking forward to the next PyCon as they seem to only become more and more fun!