Holger Krekel gave a lightning talk on rlcompleter2. The rule for its use is just keeping hitting tab. I asked if he hit tab often enough if it would bring up the source code. He hadn't planned to demo that, but he did it on the file. Very cool.
After yesterday's great lightning talks, I was looking forward to today's talks as well. They didn't disappoint. Ka-Ping talked about creating antigravity in his dorm room. Awesome.Some really cool Python and hardware hacks from Peter Kropf as he went on a two-month motorcycle road trip across North America. Wai Yip Tung's MindRetrieve does cool personal web history search using PyLucene. Looked kind of like Google Desktop's search of your web history, except that it's cross-platform and focuses just on web history search.Someone whose name I didn't catch (sorry!) showed us the Canary Database, which does neat work for libraries and also uses PyLucene. Made me pretty sorry that I missed the PyLucene talk earlier today.And plenty more...
A group of us went to dinner at Logan Tavern last night. Guido van Rossum, David Ascher, Jeremy Hylton, Will Robinson, Chris DiBona, Barry Warsaw, Matt Blecker, and myself. We sat at a big round table which normally helps for discussion in a group, but the noise level was pretty high.
The conversation was quite interesting. It started with a query about whether a well-known Python app should be hosted by the Apache Software Foundation (ASF) or the Python Software Foundation (PSF). On one hand, the ASF is better structured and ready to accept new hunks of software. It has guidelines, procedures, and all the various "stuff" to process incoming software and to get the associated development group integrated with the rest of the ASF. It also provides version control and distribution points and all the other bits for running a project. The PSF doesn't have any of this. It only manages Python, and it does that on SourceForge rather than a PSF infrastructure. So what to do with …
Although I'm admittedly biased, I really enjoyed Greg's talk this morning on "Python at Google." He covered the wide spectrum of Python use at Google and left plenty of time for questions at the end.
Some of Greg's talk (and many of the questions) focused on Google's use of SWIG to Pythonize our C++ libraries in a fairly hands-free way. As Greg aptly put it, "SWIG is pretty underrated." Questions from the audience focused on SWIG performance and robustness, especially when confronted with heavily templatized C++. People also mentioned alternatives like Boost.Python and PyCXX. One audience member who had used all three systems commented that Boost had been great for supporting templates, but that its generated .so files were 10x bigger than equivalent ones from SWIG. Still, I'd like to learn more about these systems.
Greg's actually standing in a small knot of people about 20 feet in front of me, still engaged in some heated, SWIG-related debat…
Another day past. Lots of interaction, and lots of greets with some peeps that I haven't seen for (in some cases) five years or more. An interesting aspect to the conference is what happens *outside* the conference. Stop and consider... we have a big schedule of talks. Great. But count heads. People aren't going to all the talks.
This is where PyCon shines. They have defined some "open spaces" where people can define some loose talks, presentations, or light tutorials. A very unstructured system that "fills in the blanks". They get up in front and yammer on for five minutes. Lest you think I'm going funky on people with the word "yammer"... yes, I got up and yammered about EZT. Not sure that I was any more successful about escaping the "yammer" marking.
So that big group that might not have a chance to talk? Well... they do. There were lots of avenues. Heck, we got a venture capital talk from a VC guy during the lightning talks. Is tha…
I spent much of the afternoon at the lightning talks that Greg mentioned, and they were great fun. The two things that struck me most were: The fact that one or two people can hole themselves up for a while, churn out a bunch of Python code, and generate some pretty cool hacks (a userspace NFS fileserver, a really neat threaded email viewer, etc. etc.)The incredible warmth of the community. Person A might not care too much about web stuff, but he or she is still genuinely excited and supportive when Person B gets up to give a 5 minute lightning talk on his/her Python web templating library. After the lightning talks, I went to three more heavy-duty, guts-of-the-language type talks. Two were by Alex Martelli, and the third was from Mike Fletcher.
Alex's first talk centered on descriptors, decorators, and metaclasses. It seemed like a great 1-hour talk that had been squeezed into 20 minutes; if (like me) you didn't know much about descriptors before the talk, then it probably …
Sitting in the Lightning Talks session right now. There is some very cool stuff. Ka-Ping's screen scrape and navigation stuff is very slick. It is neat for poking around a site and a page. It basically keeps a context of where you are, and you can nav forward/backward. It even has bits for submitting forms and whatnot. I pointed out my friend's module, Beautiful Soup, to him to check out.
Richard Jones showed off some funky Ducks game that came out of a "code up a game in 48 hours" competition. He also briefly demoed PyPI ("pippy"), a new Python software repository which supports upload.
There was also a userspace NFS daemon. Woah!
Lightning talks are always so much fun because of the random nature. People pull out all their neat little bits to demo. Stuff that isn't "big enough" to turn into big, official projects. Lightning talks give you a way to look behind the curtain to see all the stuff that is really going on out there.
Jeremy beat me to the punch again in describing today's keynote. Here are some quick highlights from my point of view: @decorators are here to stay, and Guido thinks that knee-jerk reactions against Perl-like syntax is silly. (That's where the quote in the title comes from).Python's popularity has grown over the past year (the Jolt award, complimentary articles and studies, 30% higher traffic on python.org).Python 3000 is coming someday (probably). But Guido's committed to a slow growth policy. He really wants to avoid pulling a Perl 6.The discussion of static type checking was interesting. Guido's current thought (presented as "strawman syntax" and "strawman semantics") looks like convenient shorthand for user-dictated runtime type checking: def foo(a: int, b: list[int]) -> list[str]: ...means: def foo(a, b): a = __typecheck__(a, int) b = __typecheck__(b, list[int]) r = __original_foo(a, b) return __typecheck__(r, list[str])He acknowledge…
We arrived at Guido's keynote in time for him to explain why he had a beard. He started it because he wanted to shave a few minutes off his schedule during a beta crunch, but he kept it because he liked having his co-workers call him professor.
There was a brief discussion about decorators -- why @prefix syntax won and why there are no class decorators. I thought the choice was obvious given the candidates last year, although I didn't mind the C# syntax either.
Signs of Python's popularity: InfoWorld survey shows python use grew to 14% from 8% the year before. Burton Group wrote a report in "P languages" that recommended the use of Python. Python won a Jolt productivity award -- the runners up honor. We discussed what to make of the 14% statistic a few months ago; based on an gross estimate of the number of programmers survyed, it seems like there are 750,000 to 1 million Python programmers. (Some other back-of-the-envelope estimates come up with the same result.)
I went to five more talks in the late afternoon and early evening. (Didn't think it was possible, but I'm almost Pythoned out!) Of the talks from the afternoon, these stand out:
Design Patterns and Python OOP: Objects by Design Alex Martelli
Although the content was pretty redundant with some recent reading and discussion of design patterns I've been doing at work and at home, it was fun to see the Python in a Nutshell author speak in person. He went over some patterns like Strategy, State, and NullObject, showing how to implement them in Python. He gave the standard pitch for preferring composition to inheritance. In one twist, he made a distinction between two types of composition in Python: holding, which basically means public exposure of a contained object and its methods/attributes. (outer.contained.Foo()) wrapping, which means exposing the desired functionality of the contained object through wrappers, and keeping the contained object itself private (outer.Foo(), w…
The first day has passed. We're moving from a bunch of cool talks to another set of cool talks. With this little break called "sun missing."
Unfortunately, I had to miss the last half of the day. Saw the cool webapp talks (mentioned before), but then needed to skip out. Met up with Will for dinner and discussion, then joined by DiBona. I'm gonna smack Jeremy when I see him for his lack of cell phonage.
Tomorrow is looking shiny. Better weather. PSF Members Meeting. And a set of smoochin' talks. The database track in the afternoon looks very good. Tho I'm thinking that I gotta see my buddy Ted Leung's talk about Chandler.
The sprinters gave brief reports on their work at a session just before lunch today. This session was a last minute addition to the schedule, and I arrived most of the way through Ted Leung's talk on the Chandler sprint. I mentioned the distutils sprint in a previous post.
What is a sprint? A sprint is a focused development session, in which developers pair in a room and focus on building a particular subsystem. A sprint is organized with a coach leading the session. The coach sets the agenda, tracks activities, and keeps the development moving. The developers work in pairs using XP's pair programming approach.Barry Warsaw talked about the Mailman 3 sprint. He recommends SQLObject as an object-relational mapping that allows you to write your classes in idiomatic Python. SQLObject generates SQL code automatically.
There were several Zope-related sprints. Jim Fulton reported on some ZODB and Zope work. Tim Peters and Christian Theune added blob support to ZODB and ZEO. Zope had …
This was an interesting talk by Michelle Levesque. She wanted to write a Python webapp and went to get one for her project. Surely, there is one available.
Actually... there isn't one. Kinda too bad. There are about 40 instead. Then she faced the dilemma of "which to choose?" And that's when she started the "web-off". Have a big comparison among some of the big players to see what works best.
The talk briefly described four of the seven approaches that she is looking at. She has more details on the results so far, along with a blog of results as she goes.
Very interesting talk. Personally, I don't use any of those as they generally mix the HTML output and the Python code too much.
The only early afternoon talk that made a strong impression on me was John Hunter's showcase of matplotlib. I'd heard of the package, and I'd seen some of its basic output. But John showed some really neat interactive features using IPython and pylab (part of matplotlib) that got me very excited about the prospect of using matplotlib for data exploration in the way that I currently muddle through with R.
A matplotlib graph supports interactive zooming, panning, and zoom-on-region via clicking and dragging. It also provides the basic features you'd expect (logarithmic axes of arbitrary bases, lots of eye candy if you want to take the time, etc.). Something worth checking out when I get home.
Ted Leung is hosting a set of detailed notes on PyCon presentations. Lots of attendees are contributing to these notes using SubEthaEdit. It will probably generate a lot more detail than a few Googlers.
I went to three talks in the morning session, which were loosely centered around the theme of testing and extreme programming:
Extreme Programming with Python in the Classroom Michael Weigend
Michael's students in Germany used Python to create an English text editor for grade school students and a chat room program. They used XP concepts like user stories, big visible charts, test-driven development, and small iterations. One interesting bit of teaching methodology: Michael taught his students simple GUI programming techniques by just giving them pieces of working source code and letting them explore. I thought this was great, because it mirrors the way most kids learn to use computers in general (start using this thing, and see what happens). GUI code is especially well-suited to this, due to the visual feedback, and Python sweetens the deal, since the visual feedback is so immediate.
py.test and the py lib Holger Krekel
PyTest was started because the unittest module was "unpl…
Python's package index now supports uploads.Richard Jones reported on the new feature during the sprint summary session just before lunch. The first package I've found that has been uploaded to python.org is Roundup. You can use the new distutils upload command or use the web interface to upload files for an existing package. There are more details about the upload feature in Richard's blog and in the other links above.
Uploads are probably the more impressive result to come out of the PyCon sprints in the last three years. The four days before PyCon were devoted to sprints. I arrived on Tuesday afternoon and found two rooms packed with people writing code -- at least 50 people. PyCon provides space and network connectivity for people to meet and work on programming projects.
I wonder how the new package database is going to support mirrors. I also don't know if it supports package dependencies.
The sprint reports session has several short talks. I'll write mo…
My full braindump on the IronPython keynote looks very similar to Jeremy's, so I'll just highlight the points that stuck out to me as a first-time PyCon attendee and relative Python newbie:
The Peedy demo where he interactively called other .NET components to control an animated character from the Python interpreter was silly but impressive.He made the whole IronPython concept seem incredibly sensible with one rhetorical question: Why not leverage 100s of man-years of VM development?IronPython is markedly faster on PyStone than CPython.Calling C# code from Python and vice-versa seemed as easy as you could hope it to be.It was very impressive to see the multi-language debugger seamlessly expose an exception stack trace that started in C# and crossed over into Python. Such a debugging environment is way, way better than the world of CPython + SWIG + gdb.
Be sure to read Jeremy's notes, they're a little meatier:
Jim Hugunin of Microsoft spoke on IronPyton (python compiling to the .net clr). Originally shown one year ago at PyCon and polished for OSCON 2004 (released under the CPL) Jim had disappeared into Redmond for a while, settled into work for a bit, then after a bit of time, released 0.6, now under their shared source initiative. . Depends on .net 2.0, which is unfortunate, as 2.0 is under-deployed and somewhat alpha.
Showed a short demo which exposed the immediacy of the python console, which is a pretty neat thing to demo with, and considering the !Immediacy of Visual Studio, this was a nice technology for people to have on Windows.
Showed python invoking xaml layouts, which was very nice. Some numbers:
About 70% faster than 2.2/2.3 cpython on xp. 2.0 framework version 80% faster than cpython (running 2.4).
Showed python calling c# and c# calling python methods. Very cool stuff. The software is .7, so it's still super-al…
The talks are scheduled for 30 minute sessions, but the speakers have to save five minutes at the end for room changing. If you throw in Q&A, then your talk might be just 20 minutes or less. That's like 10 slides (unless you're Stas Bekman, of course).
This isn't necessarily bad. Look at the fun and info that you can get out of lightning talks. Sometimes long talks aren't the best: you can end up with filler.
Whatever... I'm looking forward to the early afternoon talks covering webapps in Python.
The news from this morning's keynote is: IronPython released (at last). The running joke in Jim Hugunin's talk was pretending that it had only been two months since he joined Microsoft. In fact, it took about eight months to work out how to do an open source release once he got to Microsoft.
The new plan is to release every two weeks until there is a 1.0 release. There are one-and-a-half engineers working on IronPython. Jim is spending half his time evangelizing dynamic languages and Python within Microsoft. The hope is that the next version of CLR will have better support for dynamic languages (although it's not at all clear to me what that means).
The talk was basically the same as the talk he gave at Lightweight Languages in December, but stretched out to an hour. There was time for more demos and more technical detail.
Jim claims two advantages for Python running on .NET: It provides easy access to .NET libraries, and it leverages a substantial engineering effort on the …
It's the wee hours of the morning. PyCon 2005 begins in a mere eight hours. Or maybe seven if you're scary aggressive.
Sprints have been happening the the past few days, apparently. I wanted to arrive soon enough to participate, but the timing just didn't work out for me :-( But the rabble is gathering nonetheless. I'm here with my co-Googlers: Jeremy, Chris, and Will. After arriving tonite, I hooked up with Chris and Will for some cheap, but excellent, mediterranean food. Stupid thing is that Jeremy and Guido called us to meet up about 3 minutes after we left. Grr. Tommorow night!
The sessions are looking excellent. I need to start figuring out my winding path thru them over the next few days. Find the cool. Find the geeky. Figure out how to nap in the afternoon if I'm gonna wake for those dang keynotes! (oh wait, I'm giving one on Friday... d'oh!)
In any case... this is just the beginning. I'm hoping that we can use this space to track all of the gr…