Wednesday, May 31, 2006


...has been slow this week - I have mocks on Thursday and Friday.

There have been lots of helpful suggestions for a graphics library varying from feature requests (The need to address individual pixels) to heavy duty discussions on the pedagogical aspects of graphics.

I started coding a library at the beginning of the week, but I have since realised that it was far too complex for a 7 year old. The Livewires API looks interesting but is aimed at 12+, maybe 7 year olds are a bit ambitious. Platform independence is another issue: Cairo is all well and good on UNIX, but it has stupid dependencies on Windows - there is a large part of me that wants to use Cairo on *NIX (it even has SVG support, imagine the possibilities!) and fall back on something less impressive for Windows. Or maybe I should create my own distribution of PyCairo for Windows that doesn't depend on GTK.

I have also just realised that sound is going to be an issue - PyGame has excellent support for playing pregenerated sound, but virtually none for synthesized sound, which was what I had envisaged. Some kind of interface to MIDI would be perfect - although maybe too much to hope for. I don't want to have to rely on pre-recorded sound, it's much less interesting.

Anyway, end of winge. There won't be another status update until Sunday at the earliest I'm afraid.

Friday, May 26, 2006

Code Explanations

I've created a page where I will put explanations of my code:

Think of the stuff here as more advanced tutorials that don't fit in with the 7-14 target age range!

Small Update

Andre found a solution to the exiting problem - I had just been setting the wrong variable!

In other news, I have registered an account with which I will be using as an SVN repository - at the moment I don't have any plans to use the wiki apart from the front page: take a look at

CherryPy is Gone!

When I posted my last missive, my version of Crunchy didn't do everything it should have - but I've now got it to a point where everything apart from exiting works (I've decided to drop support for arbitrary local tutorials for now - see below). So I can now say that CherryPy has been eliminated without any major issues.

The problem with exiting seems to be because HTTP/1.1 has persistent connections, so BaseHTTPServer.HandleRequest never actually returns (I don't really understand the intricacies of HTTP very well though - I should go and read the RFC I guess). I've given the code to Andre - maybe he can spot something to help.

I have some ideas about packaging groups of individual tutorials as "courses" - with additional metadata describing the relationships between tutorials (pages) in the course (see Andrew Harrington's post on the edu-sig list - this is what prompted the idea).

Basically, a course would be encapsulated in a directory (could also some kind of archive, say a zip file), and would have an index file that contained any metadata needed in multiple pages. The individual pages would then be referenced by the index (naturally pages could still link to each other). The index could also define some bijection from page "meta-names" to page files.

I will post my ideas on the edu-sig list once they're more mature.

Wednesday, May 24, 2006

Progress so far

I'm a naturally impatient person, so I actually started working on the project on Monday - 48 hours before I actually got confirmation I was in.

So far I've succeeded in removing the dependency on CherryPy using the BaseHTTPServer module from the Python base libraries. This was actually quite fun, because I've written a simple HTTP server in C before, but the Python version is far more elegant. Note that while I have replaced the whole server, it didn't actually mean using much more code - which really goes to show how unnecessary CherryPy is when you're doing something moderatley simple.

I am told that Elementtree is in Python 2.5, so getting rid of it isnt a priority at all (thankfully).

I've sent the code to Andre, so hopefully we'll see something like this in a release soon.


Note: this was written back in 2006 when I was about to become an SoC student, see this post for some updates on what I'm doing now.

Hi, I'm Johannes Woolard, a 19 year old student at the University of Oxford in the UK. I've just heard that I've been accepted into the Google Summer of Code scheme to work for the Python Software Foundation. I'm planning to use this blog to document my progress and experiences along the way.
Briefly, my project involves writing interactive web-based tutorials for 7-14 year olds. I'm being mentored by Andre Roberge (he has a blog too).