Running the Python table at the Atlanta Linux Fest this past weekend was a really incredible experience.
First, there was the great feeling that the pillars of the Python community were standing behind me as I stepped forward to represent my favorite programming language. It was Andrew Kuchling who noticed that exhibitor tables at the Fest were free for non-profits like the Python Software Foundation, and Steve Holden who forwarded me a heads-up since I live in Atlanta (the Fest had not yet made it on to my radar). The inimitable Aahz personally shipped me the promotional kit, including a huge “Python” banner and stacks of brochures, that he himself had just used at OSCON 2009. And, completing the loop, it was Andrew who followed up to ask if there were any last things that I needed, and sent me a pile of over one hundred Python stickers that wound up being very popular at the Fest. (I returned home with exactly one, which is sitting next to me on my desk as I type this!)
Here are some lessons that I learned from the experience:
Reserve a table.
When I got the email saying that the PSF could have an exhibitor table for free, and asking whether anyone was available to run it, I somehow assumed that my affirmative reply would spur some busy PSF staffer into sending an email, on official nonprofit letterhead, reserving a table for us at the event.
You can imagine my dawning panic as I arrived at the Fest — amidst these torrential Atlanta downpours, and with my arms full of Python advocacy paraphernalia — and started looking for the table reserved for Python. It was, I think, after my second full tour of the room that it started to dawn on me that it must have been my responsibility to reserve the table on the PSF's behalf.
I stashed the Python materials safely next to a flower pot that provided adequate camouflage, and returned to the front desk. And, here, that wonderful camaraderie kicked in that, at its best, blossoms between even the most distant contingents of the Open Source world. When I explained the problem to a Linux Fest volunteer, and he found the organizer obviously too busy to address the problem, he made a unilateral decision to grant me a booth himself and we set out immediately in search of an extra table. A few minutes later, I was ensconced in a prize position in the exhibit hall, and was figuring out how to hang the Python banner.
Enjoy the glory that is the Python banner.
Seriously. Take a look at the picture that opens this blog entry. The banner was larger than every other banner in the room. Well, okay, there was one group, the OpenNMS folks, who might actually have had a banner that matched ours in size, but the word “Python” was certainly the biggest single word in the entire room. It attracted attention, and started many of the conversations that made running the table such fun.
Bring string.
I was actually pulling out into my driveway, and consulting my mental what-to-bring list, when I realized that my spool of string was still sitting in my garage. Thank goodness I stopped the car and ran back inside; without that string, and Josh Kidd's ability to push thumb tacks into concrete walls, the Python banner would have had to hang limply beneath our table instead.
You will find yourself, first and foremost, encouraging and rallying other Python programmers.
This surprised me. I had somehow imagined that most of my conversations would be with strangers to Python, whose skepticism would need to be slowly chipped away as I ranted on about the wonders of my favorite language. But many people had already run into Python, liked what they saw, and now wanted to learn more about the language. The locals were happy to be invited to our Atlanta Python Meetup, and others listened carefully as I described how I myself had slowly learned how to follow what was happening in the Python community.
And several people didn't even have anything to say. They just paused on their way by, saw the pile of stickers, and smiled appreciatively as they grabbed several on their way to the next booth.
Have people with different Python experiences manning your booth.
It was great to have several other Python Atlanta folks help with the table through the day. In particular, Josh Kidd spent several hours with me, and fielded the many questions that came up when people saw the Plone labels and bumper stickers that Josh had brought from the ifPeople offices.
Greet people.
Walking up to an exhibitor table, I find, can be an awkward experience. Sometimes the exhibitor fails to acknowledge me, which makes me feel like I am interrupting. Or they stare expectantly, and make it my job to start the conversation.
My foundational goal with everyone who approached the table was to create a space in which they felt welcomed, but not required to say anything if they didn't want to. Soon, with a bit of practice, words like these were coming easily to my lips: “Hi, I'm Brandon Rhodes; I organize the Python Atlanta user's group, and make my living programming in Python. Let me know if you have any questions!”
Bring a monitor.
As you can see in the image above, I connected the monitor to my laptop and pointed it at the audience, expecting that I would regale them with a steady stream of impromptu Python scripts and rapid prototypes built using the many powerful libraries and frameworks available in Python.
But, its greatest value turned out to be as a web browser: instead of telling someone where to find the Python tutorial, or vaguely gesturing as I tried to describe matplotlib, I could drag a Firefox window on to the monitor and just show them the web site. Better yet, they now knew what the sites looked like and would hopefully recognize them again if they went and looked after the conference.
That's not to say that there weren't a few times that I got to give Python demonstrations. As shown in the video clip linked to at the top of this page, I got to demonstrate several basic algorithms — including depth-first and breadth-first tree searches — for some friendly Georgia Tech students. Another group who approached (they looked older, like grad students or post-docs) included someone who had used Python, but who had found it tricky to write a loop that would correctly delete items from a list while iterating across it. They stayed glued to the screen for what must have been fifteen minutes while I used the question as a jumping-off point for demonstrating Python list indexing, how deleting an element during iteration causes you to skip the next one, how iteration is usually not even necessary thanks to built-in list methods like remove(), and, finally, about list comprehensions and filters. It was actually the wide array of built-in list methods, and how the dir() command will list them interactively, that seemed to most impress them.
The biggest thing to repeatedly emphasize while showing people little impromptu Python scripts, I found, is not simply the clean syntax and powerful features. What actually surprised the experienced programmers the most, once I remembered to point it out to them, was that with Python — as famously Eric Raymond famously observed — you can write working code nearly as fast as you can type. Their eyes would grow wider as I made change after change to my script, without so much as an error ever appearing on the screen. Being able to display this in action easily justified having carried the monitor in from the parking lot and, later, carrying it back out through the rain.
Bring a users-group sign-up sheet.
It was about an hour into the Linux Fest that someone first asked if they could write their email address down and get information about our Python Atlanta Meetup. I was caught off guard; in this age of Internet connectedness and URLs, it had not even occurred to me that someone wound want to physically share personal information with me!
I grabbed a yellow pad and, by judiciously adding “Name”, “Email”, and “Interest” headings, turned it into a sign-up sheet for the Python Atlanta Meetup. While I had not even thought about having a physical sign-up sheet, it's sitting next to me right now with nineteen names and addresses on it, whom I will be welcoming to the Python Atlanta Meetup mailing list tomorrow.
I hope these notes and thoughts help anyone else who winds up with a booth at some future event, and helps you create the warm and welcoming atmosphere for which we should all hope the Python community remains famous.