Wednesday, September 30, 2009

My PyCon 2010 Talk

My talk is tentatively titled "Python's Dusty Corners."* It will be a brief overview of all the features in python that you don't need to know about right up until the moment you do. The list includes how comparisons work, descriptors, iterators, context managers, namespaces, else clauses on for/while loops (suggested by Hettinger), and whatever else you can suggest in the comments (please do!). The narrative of the talk is that these are features that you don't need and/or shouldn't use in your day-to-day code but that you need to keep in the back of your mind because other people's code and the stdlib do use them. As Alex Martelli pointed out in his wonderful talk Abstractions as Leverage you can't successfully function at one level of abstraction if you don't know what is going on at the next level down. This talk is a whirlwind tour of the next level down.

I'm honored to be an invited speaker this year. This just means the program committee has pre-approved any talk I give instead of going through the normal program committee proposal process. I had some stem-winding conversations with friends about what this means and what purpose it serves. Firstly it is a flattering inducement to get prior popular speakers to speak again, and possibly no more than that. Secondly it gives speakers a chance to do a talk that might not make it through the normal approval process. I knew a person in college** who's motto was "There is a fine line between being The Man and being That Guy." Imagine a Venn diagram with barely overlapping circles labeled "Good Ideas" and "Bad Ideas;" Being "The Man" is the thin overlap between the two, and committees are very good at avoiding any idea that is anywhere close to the "Bad ideas" region, let alone one that that is actually in it. Having invited speakers is a way for the committee to include those ideas with minimal risk by inviting people who have a proven track record and hoping they don't screw up.

That said my talk is pretty safe and certainly would have made it through the normal process. I would love to give a talk I thought was in the dangerous "The Man" zone but I haven't the foggiest idea of what that talk would be. Err, I have some idea but none long enough to be a proper talk. For lightning talks I'll be preparing "I love graphs" (I do, and I have the graphs to prove it), "The Physics of Bowling Balls" (waaay more interesting than you would guess), and my always-threatened-never-done talk "PyAsshole: Simulating a partial information, non-trump, drinking card game in Python."

* As much as I liked the title I proposed on twitter It wouldn't help the conference (or me, or anyone really) to have a talk titled "Strange Python Shit" on the program.
** He looked suspiciously similar to me, but with hair down to his shoulders and an eyebrow ring (lay off, it was the early 90s).


Jack Diederich said...

A general set of rules for the card game of Asshole can be seen here. That page coyly renames the game as "President" which is what I will do for my lightning talk. People who know what I'm talking about won't care about the name change, but keeping the common name might turn some people off (first do no harm).

The actual game play is much less interesting and skillful than people attribute to it. Maybe this is surprising (when I modeled dominoes I was surprised how simple the strategy was). I think it appears skillful because of the drinking nature: to actually follow through with good strategy is rare because the social aspect dwarfs technical play. Anyway, there are only two ways to play and they are unexciting: play to win (become president which has a strong advantage) or play to not lose (being asshole has a strong disadvantage). Staying in the middle is easy so most people don't have to worry about min/max strategy - and most people rationally not caring is what keeps the game mostly social.

Catherine said...

It saves the Program Committee work, too. With so many talks to sort through and agonizing decisions to make, it saves a little time to have a few acceptance decisions pre-made.

I look forward to yours! Thanks!

Onno said...

I needed __main__.__dict__['function']() but __main__ is not available (why? all other modules/classes/etc are!). You need to import __main__ (why?) before you can use it ... I ended up using sys.modules['__main__'].__dict__['function']() because import __main__ didn't "feel good"...

Brion said...

french doors | healthy chicken recipes | top seo services

bedroom mirror | duplex rent | months

grilled pork chops | real estate agents | Chinese calendar

weekend rentals | interior decorator | butter chicken recipe