the further adventures of

Mike Pirnat

a leaf on the wind

« Previous Post Next Post »

PyCon 2007 (Part Three)

Since I was unable to attend the sprints, my PyCon experience wrapped up on Sunday. Here are my highlights and thoughts on the third day...

Robert M. Lefkowitz (r0ml), the fourth and final keynote speaker for PyCon 2007, completely and utterly amazed me. As the talk began, I thought we were in for 90 minutes off dreary academia, but my first impression was almost immediately dispelled by the fascinating rhetorical journey through the meaning of "computer literacy" and, at a more fundamental level, the idea of literacy itself. This talk raised many interesting questions, such as: where is the canon of programming? is it better to express algorithms in code or English? why aren't the keywords of programming languages localized? how do we read code aloud? A great counterpoint to the OLPC talk was this question--how many underprivileged Brazilian kids with OLPC machines who press the "view code" button are going to know enough English to be able to (re)program them? Best quote of the talk: "Great programmers break the rules elegantly; bad programmers break the rules without realizing it." Sprinkled throughout were references to so many interesting books that I think my Amazon wishlist just grew two sizes. This talk had people buzzing about it all day, and during the closing remarks we heard that there is interest in having that same talk professionally recorded and uploaded to YouTube. Mind-blowingly good.

Sadly, however, this talk, coupled with being out too late the night before, and a general lack of sleep, left me pretty fuzzy-headed for the rest of the day. I was barely conscious during the "Easy Creation of Interactive Tutorials" presentation, which I could tell looked really neat but which I couldn't summon the energy to fully pay attention to. What I got out of it amounted to this entry in my notes: "crunchy turns simple HTML + Python code into coolness." Yessir, I sure was insightful,

Luckily, I was a little more alive for Kevin Dangoor's "Wonderful World of Widgets on the Web" talk, which discussed ToscaWidgets, the subproject that recently exploded out of TurboGears. In case anyone hasn't noticed, user are demanding nicer and more graphical interfaces on their web applications, and ToscaWidgets seems to do a good job of being a fairly declarative Python encapsulation of the HTML, CSS, and JavaScript necessary to render the widget to the web. Kevin demoed a TinyMCE widget, showed us how to hook up a FormEncode validator to a widget to get automatic error handling and type conversion, illustrated nice graceful degradation capabilities in a ratings widget (for users who don't have JavaScript) and more. As a nice bonus, widgets are easy to add to the Cheeseshop so that they can be easy_installed at a moment's notice. I think it's great that this package is being factored out of the core TurboGears code and released into the wild for other projects to take advantage of; it's a prime example of the "rising tide floats all boats" philosophy that I really admire about TG.

Titus Brown's "Testing Tools for Programmers" talk discussed a collection of simple, easy-to--use tools that he developed that work nicely in concert with one another: twill does functional web testing (really lacking only JavaScript support); wsgi_intercept lets twill talk directly to WSGI apps, allowing you to use the same twill script to test both the WSGI app itself and the complete web stack with a live server; scotch (a pun on WSGI's whisky-like pronunciation) lets you record and replay WSGI data and generate twill scripts; and figleaf is a code coverage recording tool that can combine coverage from multiple runs and emit a unioned result for your perusal. There's still a great need for documentation on these tools, but they're otherwise ready to make your life a lot less sucky. And he remains eminently quotabe--on testing and WSGI,"You have no excuse. Test your web apps. If you're not using WSGI, there's something else wrong with you," and in reference to starting a "testing-in-python" mailing list, "[I wanted to] get some cross-talk happening in the testing community like there isn't in the web community." Good stuff; you can check it out yourself.

I had some familiarity with trac before, but I still found new stuff to love in the "Software Development With Trac" presentation, specifically the bitten plugin, which glues in a dashboard of continuous integration results, stats and graphs about lines of code over time, passing and failing tests, and more--you can click on a failing test and jump right to the relevant source code! This killer feature pushed me off the fence, and I'm now very excited about trying to bring trac into my office.

Not tremendously excited by any of the late afternoon sessions, I went to an open space talk led by Gary Bernhardt of our local ClePy group. Gary's been working on a thing so far called RESTdb, which is a RESTful database application queried via HTTP verbs instead of SQL. Like SQLObject and SQLAlchemy, RESTdb is very delcarative, creating the database from the Python code. But unlike a relational database, the client knows nothing of the database schema, just the names of resources that it wants to access. The project is only two weeks old so far, but it can already do many interesting things, and can easily support 10,000 local machine queries per second. Some challenges of a RESTful database include the impossbility of the client to introspect the database at all, and that you don't do joins (since it's not a relational database), so you have to think a little differently. The room wrapped up its allotted time with a great discussion of what REST is and isn't, and a good time seemed to be had by all.

Highlights of the final round of lightning talks included a very cool demo of pyglet, a pure-Python "to the metal" game engine that's programmable via XML documents; a demonstration of how to solve the Rubik's cubes that we all received in the Big Piles o' Swag (including solving it behind your back!); some talk about a bizarre and interesting alternate Python implementation called RPython that specially compiles your Python code to make it much, much faster, but which also stands a good chance of hurting your brain in doing so ("it's like writing C in Python" and "you can take drugs or write RPython"); some stuff that I couldn't quite follow about xerblin; and the worst and best ways to do document tree conversion (which I wasn't able to take any notes on as I was already running late to pick up the waiting cab).

I managed to score a few more T-shirts today, and I put in an order for a medium Python zip-up sweatshirt (which had sold out nearly instantaneously on Friday). I think that brings the T-shirt total up to at least eight or nine; I'll have to get a final count when I get home and start unpacking. I expect it'll be like opening a series of Russian nesting dolls...

Sadly, there are no results yet for the photo contest--hopefully I'll hear about the results in a day or two. I don't want to toot my own horn too much, but of what was submitted to flickr in time for the contest deadline, most of it fell into one of a few categories: photos of the OLPC laptop, photos of speakers speaking, photos of acquaintances in the hall or meeting rooms, and photos of meeting rooms or hallways with random crowds milling about. I posted a couple of uncorrected candids from the hotel bar of Dave Stanek and Gary Bernhardt poring over a laptop that (I think) really captured the collaborative and fun spirit of PyCon. But we'll see what the judges think... I will post the rest of my photos to my flickr account once I get home and have a chance to offload them from the camera.

Now I'm on the plane, killing time, and being That Guy With The Laptop Out, which is something I'm enjoying because I never get the opportunity when I'm traveling elsewhere. Really, I'm making up for a damaged headphone earpiece that's preventing me from chilling with my iPod for the duration of the flight. I get in around 11 PM, then it's straight to bed so that I can be in early at work for a two-day training session.

As always, the Python community continues to impress me with its warmth, openness, and welcoming nature. It's amazing to be surrounded by almost 600 strangers (I think the final number was 593!) and feel right at home; and it's really rewarding to be able to turn PyCon acquaintances into good friends. I can't wait for next year!

blog comments powered by Disqus

« Previous Post Next Post »