Python Programming, news on the Voidspace Python Projects and all things techie.

Functional Testing of Desktop Applications Video

The video of my PyCon talking on testing GUI applications is up. The talk went well, with a surprisingly high number of attendees for what I expected to be a 'niche' subject.

Functional Testing of Desktop Applications (45mins) Many advocates of unit testing believe that testing desktop (GUI) applications is so difficult as to not be worth it. Not only is it possible, but 'functional testing' (testing an application from the point of view of the user) is an important part of an agile development process.

The talk is also available as a series of articles if you prefer to read than watch.

The video quality is great, well worth watching.

My lightning talk (Metaclasses in Five Minutes) is also on video; 11 minutes into this video of Friday's lightning talks.

As many others have said, kudos to the awesome video team who got a huge number of the talks up within days of the conference finishing. A lot of excellent stuff if you haven't already taken a look. The tutorials aren't posted yet, hopefully they'll follow soon.

PyCon 2009: Language summit

As I start to write this blog entry I'm one of the last few sprinters left in Chicago in the aftermath of the PyCon 2009 international Python conference. In fact it is only moments before I have to catch the shuttle bus to the airport, so the rest of this entry will have to be composed from home (and quite a long time later after I recover as it happens). I've been away from home now for eight days, the longest I've been away from my wife in the five years we've been married.

The conference was awesome, and part of the reason I was away for so long was that I gave an IronPython tutorial on the Wednesday before the conference followed by the Python Language Summit on the Thursday.

I took the IronPython tutorial with my colleague Jonathan Hartley. We had 15 people, which is more than we expected but still just less than the number who attended when we gave the IronPython tutorial at PyCon UK 2008 which is 1/3 the size of PyCon. It went very well; the network worked flawlessly which was a bonus as the tutorial worked through creating a Twitter client in IronPython. Hopefully a video will appear at some point and I'll also turn the tutorial into a series of articles as it is a great introduction to IronPython for Python developers.

The conference started this year with a VM summit for developers of dynamic language VMs. This was where google made the announcement about Unladen Swallow; the branch of CPython that will attempt to gain substantial performance improvements by using the LLVM to add a JIT, remove the GIL and switch away from reference counting for garbage collection. They aim to do all this whilst remaining binary compatible with the existing CPython implementation. In order to be compatible with existing extensions they will have to simulate the GIL for third-party extensions; presumably with a new-API for extensions that want to take advantage of the new capabilities. There are many hurdles for the team to get past (including making the Python basic data structures threadsafe if they remove the GIL), but it is exciting and is inspiring the PyPy team to race them for major performance improvements. We'll see how far they get, but this isn't vaporware - Unladen Swallow is already serving YouTube traffic! (In fact a native Kindle app written in Python and built on Unladen Swallow was just released.)

Allison Randall was at the VM summit representing the Parrot VM, which recently released version 1.0. She is pushing forward the development of Pynie - Python on Parrot. The good news is that they are going to target Python 3 immediately. It would be ironic (although unlikely) if Python 3 on Parrot was completed before Perl 6 on Parrot...

I wasn't at the VM summit, but I was at the language summit. Various topics were discussed, including how to goad and entice developers into switching to Python 3 (2.7 may or may not be the last release in the 2.X series), how the main Python project can make life easier for the alternative implementations of Python, plus a discussion of the future direction of packaging in Python.

Tarek Ziade is making real progress on the various issues around packaging and he has real momentum. As for the discussion around alternative implementations; the most concrete decision was to give checkin privileges to key contributors to the major implementations so that the Python tests can be improved and made more useful. For example, both IronPython and Jython have identical modifications to several Python tests that currently depend on reference counting and deterministic finalization. The goal is to get to the point where IronPython, Jython, and PyPy (etc) don't have to maintain their own (different) versions of the Python tests.

As the IronPython team are currently unable to contribute their test changes back to CPython I was given commit privileges on behalf of IronPython (although as a result of the summit they are pushing heavily to get this approved by the Microsoft lawyers). I promise to only use these new powers for good, bwuahahahaha...

As part of this the Unladen Swallow guys are intending to contribute their benchmarks to core Python, so that we can have a standard set of benchmarks for measuring the performance of Python implementations. The discussion around this is happening on the previously unused stdlib-sig mailing list.

IronPython in Action is Available!

Nearly two and a half years after I started work on it IronPython in Action is finally available. I can prove it too:

IronPython in Action is the first book (in English anyway...) on IronPython. It is written by myself and my colleague Christian Muirhead , with a foreword by Jim Hugunin (the original creator of IronPython). The technical editor is Dino Viehland, core IronPython developer.

Two of the chapters are available for free download:

IronPython in Action is available from:

The book is already in stock with Manning, but it will still be a few days before it arrives with Amazon. You can find a full table of contents at About IronPython in Action. Every dead tree version of the book comes with a free e-book (pdf).

Soon I'll write up a blog post explaining why it took so long and what it is like writing a book. Reading through the book is a strange experience, but there really is some good stuff in there. For more details on the subjects covered in the book see the IronPython in Action Website, or read what other people are saying about it.

Archives