Last week I was in Birmingham (UK) for this year's EuroPython. It's the first time I was at EuroPython and also the first time there was an offline sprint on Pocoo projects. I went there with Georg from the Pocoo Team and Alexander who mainly works on PyPy and MoinMoin.
The first two days we mainly spent sprinting on Zine which will soon have another release with tons of changes. Unfortunately the network connectivity at the Conservatoire where the tutorials, sprints and talks took place was very bad and we also had some troubles finding tables and chairs. Also, the first two days there were quite a lot of students there, practicing their instruments. And after a few minutes you get sick of people playing the scale up and down.
Despite that, we got a lot of changesets into Zine and the next release will come with notification support and a blogger importer because of that.
Birmingham itself is quite boring, I won't talk about the typical English food here, I suppose everybody knows how it tastes :)
Language archeology
One of the most interesting talks was “Language Archeology†by Bruce Eckel. While he's know to be “the Java†or “the C++†guy, he seems to like Python a lot and gave a good overview of the development history of various programming languages and why they work like they do. He painted a pretty scary picture of C++, a language I just recently learned to love. On the other hand he described the Python world as if it was utopia which made me believe he did not use Python long enough. Maybe I also misunderstood him, but I did not remember any criticism at all.
Also what surprised me is that he mentioned garbage collection as a good feature in Python and Java. Many C++ programmers tend to dislike forced garbage collection because they consider explicit resource management using RAII significantly superior.
Also I did not really understand what he meant with “C++ supporting both exceptions and traditional, C-error handlingâ€. I know that many people dislike C++ error handling because it integrates badly into existing code, but that's just how things are. Even in Python you have “traditional†error handling by checking return values of functions and retrieving error descriptions from somewhere else. If you're looking hard enough you will find libraries that feel a lot like C, even in Python. I suppose his talk was targeted towards Python programmers with no C++ background at all, but it was quite confusing what exactly he meant with it.
The Science of Computing
Tony Hoare (the developer of the Quicksort algorithm) held a talk about the differences between science and engineering. From what I recall he declared science being that idealist thing, that should be valid forever and engineering being a short term solution for commercial projects. Scientists are trying to achieve perfection by creating proof-able algorithms and be certain about the result. A software engineer tries to wage the data to create an acceptable, stable result. At the end of the talk he was talking about how to break a software project into smaller parts to be able to analyze them and proof the algorithms. With the help of Moors law and improving tools computer science will once be the reliable form of all engineering professions because what's created does not decay by the forces of nature.
One of the questions from the audience was how to work with the marketing department to get specifications that are implementable. Tony Hoare's answer was that this is the engineers job because neither does the marketing department understand programming nor what the costumer wants.
Lightning Talks and Discussions
What I like the most about any conference are lightning talks and discussions with other attendees. Here a brief overview about some of the most interesting lightning talks or notes from discussions I had with some of the folks there:
Hatta — a distributed Wiki
Hatta by Radomir Dopieralski (aka “the sheepâ€) is a wiki, written in Python with the help of Werkzeug and mercurial that is easy to set up and distributed with the help of the underlaying DVCS (hg). The idea and implementation is pretty cool and I can see a bright future for the project. I suppose we will see more of those in the near future as they are the next logical step with the rise of decentralized tools. (Just waiting for the ideal decentralized bug tracker)
Psyco 2.0 — a JIT from the ashes of PyPy
Christian Tismer revived the Psyco project, the oldest JIT for Python. It was unmaintained for a long time and did not support more recent features of Python such as generators (not so recent, but they were indeed unsupported). He showed a benchmark of the builtin python property class and a pure-python reimplementation to demonstrate how much psyco can speed up property access. On average, there was a 100x improvement for that particular case. There should be a release in -2 days, so it can't take that long.
Nice to see that there is work done on Psyco again because it suddenly stopped when Armin Rigo started working on PyPy which was intended to replace CPython + Psyco. But unlike PyPy, there is some real world benefit in Psyco so any progress on that is welcomed. Also it means that there will be some interesting speed races between Unladen Swallow, CPython + Psyco and IronPython in the near future.
py.test — putting the fun back in testing
Another codespeak (codespeak is the name of the home of PyPy, the py-lib, lxml and other libraries) project that was unmaintained for too long is py.test. Once the great alternative to the builtin Python unittest everybody loved, now the forgotten magical support library in the pylib. However Holger Krekel now took over the maintenance and it could become interesting again. Not only will there be a Python 3 port but also improved support for distributed and multi-python-version testing and probably a less-magic release as a standalone library and without the wird import behavior.
Seems like nose got a contestant again.
SourceForge on Python and back in Action
It was the first time at EuroPython I met Mark Ramm in Person. He is currently the BDFL (seems like they have to work on the “for life†part) of TurboGears and working at SourceForge a website I nearly had forgotten. But during EuroPython they rolled out their latest iteration of the website and I think they are on the right track now. The company behind it recently acquired ohloh, a community open source project I always found interesting. From what Mark told me the focus of SourceForge will probably change (to the better) soon and we can expect the website to become more relevant again.
And probably the coolest thing is that parts of the website are now powered by Python and also Jinja2.
The Importance of Names
Less cool but not less interesting is another thing I learned at EuroPython. People tend to love or hate projects not only based by code quality and documentation, but also by the name. I've heard from multiple people that they did not even had a closer look at Werkzeug, solely based on the name. While I will not rename the library because of that, I learned from that to chose my names more wisely in the future.
Guido on the Moon
My personal highlight of whole EuroPython was the non-working Skype link to Guido van Rossum. Because Guido did not appear there in person (again) they tried to get his video on the projector and his voice out of the loudspeakers. However the network connection was in such a bad state that there was a lag of multiple seconds between him and us. After someone joked if Guido was on Google's secret moon base and no answer came, the guys on the stage decided to go over to questions and answers. However after they finally delivered the audience's question about unittest in the standard library, Guido answered that he wouldn't be able to breath there which made the whole audience laugh hard. Apparently there were not only a few seconds in delay but nearly a minute.
When they finally switched over to asking the questions using the Skype chat and guido started answering, the notebook showed a “battery status low†notification and before someone was able to plug the power chord in, the thing went into power saving mode. (And before anyone asks: yes it was a linux machine)
Pocoo Sprints
Unfortunately we did not have that many people working on Pocoo code, even though there were quite a few people from #pocoo which however also worked on other projects. Ali and Ronny sprinted on Pida (which loves you). But I was very happy to see Michael Foord sprinting on RST support in Zine. His changes will soon land in Zine tip. Also again many thanks to all the patches we've accumulated over the last weeks and over the internet during the sprints. I was able to pull some of them already, many more will follow soon.
Also: I finally got my contributor agreement to CPython code submitted to the PSF. Raymond Hettinger should be happy now :)