Distributed "Anonymising" Proxy Network

Tracker Homepage

This assignment is part of the Networking course at the University of Copenhagen. The assignment consists of implementing a peer that will participate in a web-proxy network (that is notionally anonymising). Requests are accepted from a browser by a peer and that peer will then forward the request to another peer in the network. Eventually the request will be routed to the destination server and the response passed back to the browser through the proxy network.

To facilitate distribution of peer addresses a 'tracker' has been provided. This tracker allows each peer to register itself and retrieve a list of other peers. The tracker is written in Python and runs on Google App Engine. The tracker website provides documentation on how a peer should interact with the tracker.

The second part of the assignment consists of adding encryption to the exchanges between peers as well as signing and verifying exchanges with the tracker.


Open Source Projects

The Transterpreter

Transterpreter logo

The Transterpreter is a LGPL licensed open source virtual machine for the concurrent language occam-pi. The Transterpreter, developed to support my PhD work, enables the use of occam-pi in embedded systems such as small robotics platforms, as the virtual machine requires only 10-16 KB of flash memory. Due to the portability of the virtual machine it has also become instrumental in the teaching of occam-pi, as it enabled students to use it on platforms such as the Mac OS X and Windows, where this was not possible before.

The Transterpreter has now been integrated into the KRoC project and current and future development of the codebase will happen within that framework.



WiiRemote image

WiiRow is an application which makes it easy to control FrontRow on the Mac using a WiiRemote.

WiiRow is written in PyObjC (a set of most excellent Python bindings for Objective-C, the Cocoa libraries and other related libraries.) WiiRow uses the DarwiinRemote framework to access the WiiRemote and EyeTunes for possible integration with iTunes. WiiRow also hooks into some more low-level services in Mac OS X using ctypes in order to detect when the user is idle (ie., not generating HID input) and in order to put the computer to sleep. WiiRow is pure Python; the only non-Python code in WiiRow is that provided by existing frameworks.

While WiiRow is primarily intended for controlling FrontRow it sends the expected keypresses to background applications making it possible (while perhaps a bit difficult) to control other applications such as iTunes and VLC which only require simple input.



screenshot the Horizon app

BuildGrowler is a small OS X application, written in Python using PyObjC, which interfaces with Growl in order to display BuildBot status messages. As it allows the user to connect to password protected BuildBot, BuildGrowler also integrates with the OS X Keychain application in order to store passwords.



screenshot the Horizon app

Horizon is a small OS X application that I tried to write while on a tilting train in Switzerland. I didn't finish it for the reason that I started it: the tilting of the train makes me feel extremely queasy. The idea was that I wanted to see if an artificial horizon on the Mac (using the built-in accelerometer) would make it possible for me to use my laptop while on tilting trains without going green...

The application uses the sudden motion sensor found in newer Mac laptops through the Unimotion library. Horizon is written in Python using PyObjC. The interface to Unimotion is done using using ctypes. The horizon is overlaid on the screen using PyOpenGL.


Commercial Projects


screenshot of indiconews.com

indiconews.com, is a social news website where all the content is user generated. indiconews.com empowers the masses by making it easy to both publish and find the news that matters. The site has been developed by Tauri-Tec Ltd, a company for which I do consulting work.

My role on the indiconews.com project has been as a technology consultant, helping drive the decisions which have enabled Tauri-Tec to implement a successful social news site using Python and a number of related technologies.

I have also worked on ensuring that the performance of the site is satisfactory from a users point of view, and have been investigating and implementing various optimisations on the site.

Other Projects


screenshot of the wishlist

My wishlist was an experiment in writing a multi-lingual Pylons app. It is currently a work in progress, and thus the aesthetics are not all they could be, nor is the backend very nice to work with. Due to my only modest language skills I am also somewhat slow in putting in translations for everything that I'm wanting.

The wishlist is a Pylons app (so written in Python), it uses some custom hackery to make the language URLs work correctly but is otherwise a quite standard Pylons/SQLAlchemy/Mako application. The wishlist application either displays the language requested by the users browser (so that a user visiting with, for example, a French copy of a browser automatically gets the French language version of the site), unless this has been overridden by adding the correct language code to the URL (which is what the three top right links do). In Firefox you can experiment with this by changing the languages setting in the content part of the preferences.

The sourcecode for the wishlist application is not publicly available at this time.

The Cloninator

The Cloninator with open preferences

I wrote the Cloninator, an OS X GUI application, as I needed a one click backup solution for my Mac based laptops. At the time I wrote the Cloninator, rsync had acquired good support for copying HFS+ filesystems (which present several problems due to ACLs, resource forks etc) and so it seemed sensible to wrap this tool up in an easy to use interface.

The Cloninator is written in PyObjC, and has a tastefully animated GUI with built-in entertainment during the backup. The actual backup is done using a (only very slightly) patched rsync 3.X binary, and uses ctypes for some of the interfacing with low-level OS X routines required for the backing up.

The sourcecode for the Cloninator is not publicly available at this time.



screenshot of q2central.com

Q2Central.com was, in the heyday of Quake II (Quake II on Wikipedia), a premier community site for Quake II players. While the site no longer sees the traffic of yore, the hard-core of the community still use and abuse the sites forums for nostalgic Quake II banter and rantings about how no game will ever live up to past glories.

While never a Quake II player myself, I once spent a serious amount of time administering the site, writing PHP based add-ons to the site, writing league game statistics software (for parsing Quake II logs and outputting interesting numbers) and other such things. These days I just make sure that the site ticks over, which it pretty much does by itself. Perhaps one day Quake II will see a revival and the site can get a revamp!

Copyright © 2009–2017 Christian Lyder Jacobsen | last updated: 2011-05-05 20:27:54