the further adventures of

Mike Pirnat

a leaf on the wind

« Previous Page

10/365: Opposites Alike; Sconces and Shadows

Between work, packing for CodeMash, driving to CodeMash, and getting settled in, I count myself lucky to have managed to get a nice lunch break with Chris and Cory today. Chris had never been to El Tango before, and Cory and I hadn't been since the summer, so it seemed like a natural choice. Once we ordered, my eyes realized that it's a target-rich environment for the 365 project, and, well, here we are.

I'm tired enough that I couldn't decide which of these I liked best, so you get a double feature today.

Read and Post Comments

9/365: Practice Makes Perfect

9/365: Dry Run

Shot this today while getting ready to do a dry run of my CodeMash talk, "A Few of My Favorite (Python) Things". All of my most trusted weapons are ready--my MacBook, Keynote, my remote, and an iced, unsweetened green tea lemonade from the Starbucks down the hall.

The talk went well, and I got good feedback for some last-minute fine-tuning, but overall things are in pretty good shape.

Attention CodeMash attendees: as a special bonus, drop me a line after my talk on Friday--if you can correctly identify all of the movie references it contained, you'll win a Super Secret Prize! Oh, the excitement!

Read and Post Comments

Memories of PyCon

Shiny
Shiny
Originally uploaded by mikepirnat

About two weeks ago, Jesse Noller was soliciting favorite PyCon memories. I started jotting down a few, then suddenly realized I had written quite a bit more than I'd expected, so I'm turning it into that rarest of creatures in my online life, a full-blown blog post! In more or less chronological order (I make no guarantees about wibbley-wobbly, timey-wimeyness that may occur), here are just a sampling of my favorite memories of PyCon.

PyCon 2005 was the first time in my career that I'd been able to attend a developer conference, and it was on the flight back that I realized that Python might in fact be my programming language soul mate. I'm pretty sure Alex Martelli's epic two-part talk grew my brain by a size or two.

A convention of vacuum salesmen loudly occupied the main convention space while I sprinted with the TurboGears folks in 2006. I still kind of wish we'd crashed the "Vacuum Assassination" breakout session to see what it was.

I had a fun evening of dinner and drinks that year with a gaggle of Python folks: Mark Ramm, Kevin Dangoor, Dave Stanek, Bill Zingler, Ian Bicking, Jacob Kaplan-Moss... We all got a good laugh at the guy who parked his BMW underneath a veritable rainstorm of incontinent birds. Alas, we never did carry out our plans to streak at a Ruby conference.

I had breakfast with Ned Batchelder outside the main hall the morning of my Dateutil talk(2007?). He was so very gracious and welcoming that I was able to put aside my anxiety about my upcoming talk; the experience has really inspired me to be more social at PyCon and to make a point of meeting the people that I regularly read and admire on the Planet Python feed.

I brought my DSLR to PyCon 2008 and shot a lot of photos, a number of which ended up being incorporated into the banner montage on the PyCon website. I think about six or seven of the images on the PyCon blog banner (before the recent redesign) were mine, and it made me smile every time I saw them there. (I was actually in the banner for a couple of years, which felt kind of awesome.) It's nice to know that even if you aren't hacking on the standard library, or working on other well-known Python packages, you can still make meaningful contributions to the Python community in a host of other ways.

Tarek Ziade gave me a one-on-one tour of his Atomisator over lunch at PyCon in 2009, and then we talked about life and family and French wine... I felt very fortunate to have been given an hour of his time. His generosity and openness were truly inspiring.

Speaking at the TiP BoF in 2010... I didn't have my laptop with, so I didn't have any slides to add Testing Goat pictures to (long story). I invited Gary Bernhardt to portray a goat, and to my amazement, and to the significant amusement of all present, he did. I love the good-natured sense of humor that pervades the community.

At the 2011 TiP BoF, I showed off an extremely evil use of Mock to work around horrible legacy code, and it earned me a personal reprimand from Titus Brown (another of my Python heroes). I'm not sure if the ire was sincere or just extremely droll, but either way--achievement unlocked: scolded by someone whose work I admire!

Formally launching my hobby site How Old Is My Kid at the 2011 lightning talks--in front of an appreciative crowd of over a thousand Pythonistas--was definitely one of the top thrills of my life.

I've given three formal talks at PyCon (2006, 2007, 2011), and each of them has been an increasingly wonderful experience, but the stand-out has to be my 2011 talk. I'd been stressing about it for months, and, more worried than I'd ever been about any of my previous talks, tinkered on the presentation right down to the last minutes before I went on stage. Everything clicked, the audience got it--laughing and wincing at all the right places!--and the only thing more amazing than the love and appreciation from the crowd was the bizarre sensation of my phone, set on vibrate so that it wouldn't accidentally make any noises to distract me, and placed in my pants pocket, going crazy with Twitter notifications while I spoke, and for hours thereafter. Keeping my composure while my pocket was vibrating uncontrollably was harder than giving my talk!

Taping down power strips before the 2011 tutorials led to meeting new friends, catching up with others, a delightful dinner and conversation with Guido and the inner cadre of PyCon organizers... but most importantly to a feeling of pride throughout the conference--PyCon was part mine in a real and tangible way.

The best thing about PyCon is the feeling, upon arrival, of being home, of being with one's own kind. Forgotten memories come flooding back, friendships are instantly renewed, new ones are quickly forged, and the whole thing just feels right. At PyCon, we are all the "cool kids". And if we put our minds to it, we can do anything.

Read and Post Comments

Why Convore?

Earlier today, David Stanek was grousing about Convore and wondering why he needed "another place to look for communications". I promised him an answer that couldn't fit into 140 characters, and this is it.

I was initially a skeptic as well and had more or less the same reaction. I've got IRC and Jabber for chat rooms; I've got email lists and message boards for slower-speed, more permanent discussions; and I've got Twitter for a real-time firehose. Why do I need one more thing?

The answer, at least to me, is that Convore is a little bit of all of these things, and it ends up being greater than the sum of its parts. After giving Convore an open-minded try at PyCon, I found that it was a really comfortable and natural fit as a back-channel for the event.

It's topical: Twitter is great at being a firehose of information, but it's lousy for being able to subdivide that firehose into easily sippable streams. At PyCon, Convore users created a topic for every talk within moments of it starting, allowing commentary and discussion to stay relevant and focused.

It's persistent: Unlike IRC (which only persists in logs) and Twitter (which only persists in the Library of Congress), the Convore discussions will stick around and are easily discoverable (though admittedly some better search would help here). A couple of the benefits--and I'm sure there are others--come readily to mind:

  1. As a conference speaker, I could go into the Convore discussion after my talk and not only see what the back-channel had to say about it, I could answer questions and interact with people who were interested in what I had to say.

  2. I can come back to it much, much later. We're starting to show PyCon videos at work during lunch, and we can use the Convore data to help decide which talks were the most interesting or that are worth prioritizing.

  3. People who weren't able to attend can review the discussion and participate after the fact. Maybe it means finding an interesting new project, or maybe it means networking with other developers--it's there and it's available.

It's low-friction: I can log in via Twitter (so I don't have to create yet another identity). I don't need a client to make it tolerable (even "New Twitter" hasn't figured this out yet). It works great on my laptop, as well as on the iPad (and presumably other tablets as well).

It's civil: If I were to star in a Ballmeresque dance video about Convore, the riff would be "civility, civility, civility, civility." At least in what I saw at PyCon, the Convore discussions never got nasty or crossed too far over any lines; even when the speaker from DropBox went way, way over time on his keynote address, the back-channel didn't get nasty--and in fact it eventually turned sympathetic (after all, how many times have you delivered a keynote speech in front of 1400 people?). This was a very stark contrast to the year that Ian Bicking put the #pycon IRC channel up on the big screen and things got somewhat ugly.

I don't think that Convore replaces email lists. Those seem well-suited to lengthy, back-and-forth discussion among the communities they represent. I don't use it for trying to organize our podcast (although there's an argument to be made that it's an impossible task no matter what medium we use), and I wouldn't use it for organizing a user group or conference.

I don't think that Convore replaces IRC or Jabber; sometimes I just want to shoot the breeze or have a more ephemeral conversation.

I don't think that Convore replaces Twitter; Twitter's great at being a big, asychronous party with all my favorite people in it. Sometimes I want to be distracted by all the shiny toys that people find.

But as a conference back-channel, it was stellar, and I'm looking forward to using it more in that context. Your mileage, of course, may vary.

Read and Post Comments

Video and Slides from my PyCon 2011 Talks

I've been hoping that the PyCon folks would have uploaded presentation slides by now, since they did such a good and thorough job of collecting them from all the speakers, but it's been a couple of weeks now with no sign of them, so I've given up and finally created an account on SlideShare. I'm really pleased, though, by the speed at which the A/V crew got all of the conference videos uploaded to pycon.blip.tv.

While I'd originally only planned a single talk for PyCon, I ended up giving three.

Exhibition of Atrocity

My main talk, a confessional of my sins against Python and suggestions for avoiding them. It seemed to be well-received; I'm glad that I put as much work into the final polishing as I did, working pretty much right up to the very last minutes before I had to go onstage.

I wasn't able to dig up the URL for the highly inspirational rage comic in time to get it into the video or slides, but I did manage to eventually find it--I first encountered it on imgur.

Video

Slides

Win at Parenting with Python

I whipped this up on the plane trip from Cleveland on the off-chance I could get into a round of lightning talks. Basically I thought it would be fun to formally announce a personal project in front of 1400 people, an experience that I am only just beginning to comprehend.

Video

My bit starts about 30 minutes in...

Slides

Mock in Production Code

Subtitled "It's Better Than Fixing Your Busted Old Shit", this talk for the Testing BoF came together at the last minute. Despite mortally offending Titus Brown with the awfulness of the code--it's like "the Aristocrats" but in Python--I had a lot of fun with this one. I'm choosing not to share the slides, though, for a variety of reasons--the language is fairly blue, the code samples really need more context than what's provided in the slides, and it's full of inappropriately appropriated pictures of goats. (It's a TiP BoF thing.) In short... You kind of had to be there.

Read and Post Comments

Speaking at PyCon 2011

PyCon 2011, Atlanta, March 9-17

My PyCon talk--Exhibition of Atrocity1--was accepted and will be part of the "Extreme PyCon" track! This is great news for my ego, but lousy news for my sleep schedule as it's one more sharp object to juggle. In the end, I hope that it's great news for you--if it's even half the talk I want it to be, it should be a lot of fun and valuable too.

I'm going to be spending the coming month tracking down examples of my sins against Python from the past eleven years. The vast majority of these will be from my day job, and will have to be vetted and possibly altered to make sure I don't give away any "secret sauce" of our IP. Variable names may be changed to protect the innocent.

As a safeguard against being too-redacted by TPTB, I'd like to invite you to suggest things you've seen in the open source world that are particularly gnarly or horrific that would be worth highlighting. Maybe a standard library module that reminded you too much of looking C'thulu in the face, or that brilliantly evil hack in your favorite project that's both epic and blood-curdling. I don't get to peer into the deep innards of much of the community's code very often, so I'd greatly appreciate a little extra perspective. Note that I'm not looking to slam any projects or developers--this is a safe place where I'd like to be able to say "OMGWTF!" about code with a healthy smile and without any ego getting in the way.

Most importantly, though, my plea to you is this: if, in any way, I have ever wronged you with code, let me know! I've worked up the nerve to suggest this talk, so you won't hurt my feelings. Let me have it with both barrels; we will all be better for it.

I'm excited to be part of what is shaping up to be the most epic PyCon in recent memory. There are so many great-looking talks that I'm scared of actually seeing the schedule and trying to sort out what I'm going to be attending. Normally the hardest part of PyCon is that there's just too much awesome stuff to see or do it all, but this year really takes the cake--even choosing tutorial sessions was agony!

Anyway, I look forward to seeing you (and spending half an hour embarassing myself) at PyCon 2011.


  1. With apologies to Gary Numan and Joy Division.  

Read and Post Comments

Reflections on CodeMash 2011

I spent most of last week at CodeMash in Sandusky, Ohio. I felt a little foolhardy setting out on the drive during the worst part of a snowstorm, but there was no way I wanted to be late and miss out on anything.

Now in its fifth year, CodeMash is a language-agnostic, polyglot-friendly software development conference that aims to expand participants' minds by opening them to new platforms and technologies that they hadn't been exposed to. There's a lot of .NET and Java, a fair amount of Ruby, a mix of web and desktop and mobile (iOS, Android, and even Windows Phone 7 were well-represented), and if you look hard enough there are even some Python talks. There seemed to be a lot of interest in Scala as well. All are welcome--the official anti-discrimination statement even covers your choice OS and text editor!

CodeMash features a "Precompiler" day much like the PyCon tutorial days, with four-hour sessions that allow deep dives and intense focus.

In the morning, I attended the introductory iOS development session, a fast-paced "type-along" that walks through the creation of a simple iPhone app and some basic tricks. I've been a Mac user for years, but since I'm mostly focused on Python and the web, I've never even cracked open Xcode, nor really spent more than a few moments glancing at Objective C code, so this was a pretty rewarding experience for me. I will say, however, that spending four hours in Objective C makes me really appreciate exactly how much Python has spoiled me--Python is so clean and readable, and Objective C is a twisted nightmare by comparison. (You have to wrap square brackets around method calls? Seriously??) But the session was fun, so I had a great time and learned a lot.

I spent the afternoon in Jim Weirich's excellent "Git Immersion" session. The first hour was a Powerpoint-driven thought experiment that began with the question, "How would you build a version control system?" Starting with the idea of taking a snapshot/backup of the codebase, Jim carefully layered on one concept after another, gradually and organically building up the pieces until we had arrived at a beautiful, powerful, and elegant system, and suddenly we understood git, in a natural, logical, "of course that's how it should be" way. Really a profound moment. Even rebase made sense! The next portion of the class was a self-paced series of exercises that I enjoyed working through, occasionally sharing my lightbulb moments with my neighbors. Lots of "aha!" and "oh, that's cool" murmurs. The session wrapped up with a quick discussion of some of the more advanced features like bisect and reflog, and I walked out feeling great, really turned on and excited to use this powerful tool.

The next couple of days were, quite honestly, a little bit of a letdown after the engrossing Precompiler activities. I got the feeling that there was the same content-to-talk ratio regardless of the length of the talk. Then again, it's possible that I just picked a bunch of losers, which seems consistent with my experiences picking checkout lines. The keynotes were kind of lackluster as well, though apparently I missed the good one while escaping the long lunch line for other arrangements.

The stand-out talks that I attended were Jon Stahl's "Agile From the Top Down" (about how your senior management should be doing Agile too), Joe Nuxoll's "Rules for Good UX Design" (which ought to be required if you're building, well, anything), Richard Harding's "Celery: Harnessing the Power of RabbitMQ" (a welcome burst of manic energy and humor at the end of a draining three days of learning), and Gary Bernhardt's "A Modern Open Source Development Environment" (Gary's talks are always a treat).

The "Mobile Smackdown" session was a fun idea as well; three devs--representing iPhone, Windows Phone 7, and Android--gave competetive walkthroughs of building a basic Twitter client in 15 minutes. While the iPhone's Objective C code was clearly the ugliest looking code, I noted with some interest that it looked like the Windows Phone 7 dev hardcoded some things that the iPhone didn't, and that the Android guy didn't quite get done in time. (In fairness to the iPhone, The giant pile of Windows Phone 7 XML also made me want to puke pretty badly.) Plans are already afoot for holding a three-way simultaneous coding duel in the plenary space next year.

CodeMash also seems to be a pretty swell place for social interaction--open spaces were buzzing, folks were meeting, and (I hear) that parties were pretty crazy. I had great fun playing mini-golf and Guitar Hero with coworkers. I mostly stayed away from the late-night party scene, opting on Tuesday night to write show notes for From Python Import Podcast and on Wednesday and Thursday to take in the band and awesome jam session. We were graced by the awesome presence of The Womack Family Band, who did a phenomenal job of not only kicking ass, but incorporating musically-oriented conferencegoers into the act--witness Matt "Snowdog" Gibberman playing drums on "Back in the USSR"! I was pretty happy to pick up their CD and get autographs.

Overall, CodeMash was great, well worth the treacherous, snowy drive, and though I wish I could have done even more Precompiler sessions, I'm already looking forward to next year.

Read and Post Comments

« Previous Page