(Note: I gave a talk myself on managing dependencies, but I’ve got a separate summary for that).
Arjen is from the smalltalk world, but that’s, well, gotten smaller. There hasn’t been a user group meeting for ages and if there was there were 10 people or so. So the 40 people here impressed him.
Walker is a small webserver that serves a simple interface where you can type python code into and evaluate it. Including docstring inspection and so. Mostly for trying things out locally: there’s no security. So basically a python prompt in your webbrowser.
There’s even a debugger in there, so you can step into your code and also, just like in the regular debugger prompt, into other libraries’ code. Breakpoints, watches, introspection all in a remarkably simple-looking web interface. Pretty cool!
He talked about this subject before, but never got to show how it works: programming with voice recognition. So this time we got to enjoy a live demonstration. Interesting and fun to watch! He showed three things:
I’ve made a simple video of it:
OAI (open archive initative) is a niche standard for library data, very popular in certain library circles.
One item is OAI-PMH, a protocol for metadata harvesting. You’ve got providers and consumers of, basically, XML feeds. Multiple metadata formats, amongst others Dublin Core.
MOAI (Infrae’s OAI server) offers lots of hard-earned wisdom. One server, many feeds. Pure python. It originated at Erasmus university and it was open sourced with help of Delft University of Technology. It became a real product after that. For instance Erasmus’ repository contains 80000 items (if I heard the number correctly).
A recent implementation was at CWI, the centrum voor wiskunde en informatica in Amsterdam where Guido van Rossum invented Python! Finally python came back to CWI.
Kit also showed the integration with their “Silva” CMS. And verily, an author search on “Rossum, G. van” yielded some papers by Guido van Rossum. And some 1995 documents like “python tutorial” and “python reference manual”. So 14 years after he put the documents in there, the first real python implementation at CWI managed to retrieve them.
A programming contest in his case means a team of max 3 people with 1 computer that solves about 8 problems within 5 hours. The goal is to solve as many problems within as little time possible.
This Delft programming contest is one of the regional contests which winners go on to a benelux round and eventually on to a world championship.
They’ve automated much of the process. The current version (of “SZP” as they call it) is written in python and django. It includes “autojudges” that judge the submitted solutions. The solutions are submitted by the participants into a database. The autojudges grab submissions, compile the code in a sandbox. Output is checked and the results are stored in the database.
During contests the system is hammered constantly by submissions and by requests to the homepage with the overview matrix. You need quite some django (query) optimization. The django debugbar is a great help, but it doesn’t help with everything. Even apache can be slow. Caching is a good idea. And by caching he also means memcaching on the server side. Django makes it really easy to integrate with memcached.
The code is available (GPL3) at launchpad (bzr branch lp:szp). The slides are available at bit.ly/mark-szp .
My name is Reinout van Rees and I work a lot with Python (programming language) and Django (website framework). I live in The Netherlands and I'm happily married to Annie van Rees-Kooiman.
Most of my website content is in my weblog. You can keep up to date by subscribing to the automatic feeds (for instance with Google reader):