Software

I develop quite a few open-source software projects – some because I use them in my work, and some just for fun. You can get directly at most of my code through my github profile page.

Libraries

  • Esky is an auto-update framework for frozen Python applications. It provides a simple API through which apps can find, fetch and install updates, and a bootstrapping mechanism that keeps the app safe in the face of failed or partial updates.
  • PyEnchant is a spellchecking module for Python. It wraps the excellent Enchant spellchecking library and provides a nice "Pythonic" object-oriented interface.
  • FS is a filesystem abstraction for Python, providing uniform access to ordinary filesystems, zipfiles, Amazon S3 and more; spearheaded by Will McGugan.
  • filelike is a Python module for building and manipulating file-like objects. It makes it easy to implement things such as transparent compression or encryption using simple wrapper classes.
  • dexml is a simple Object-XML mapper for Python, loosely inspired by the Django Object-Relational mapper.
  • django-supervisor aims to combine the process-management awesomeness of supervisord with the convenience of Django's mangement scripts.
  • extprot is a compact, efficient, extensible binary protocol for messaging and data serialisation; this module is a Python implementation of a spec from Mauricio Fern├índez
  • XRCWidgets is a rapid GUI development module for Python. It uses the wxPython toolkit and is designed to work well with visual GUI builders such as wxGlade.
  • withrestart is Pythonisation of the restart-based condition system from Common List. It's designed to make error recovery simpler and easier by removing the assumption that unhandled errors must be fatal.
  • threading2 is a drop-in replacement for the standard Python "threading" module, providing extended functionality such as thread priority and CPU affinity.
  • myppy is a framework for building portable python distributions, currently targetting both Linux and Mac OS X.
  • m2wsgi is a WSGI gateway for the Mongrel2 webserver.
  • PySideKick is a collection of helpful utilities for building applications with PySide
  • signedimp is a python import hook for secure loading of cryptographically-signed code.
  • django-paranoid-sessions is a Django plugin that makes login sessions work harder at preventing session-stealing attacks.

Programs

  • proxylet is a lightweight reverse proxy for HTTP, using non-blocking IO courtesy of eventlet. It also features enough smarts to proxy to a subversion HTTP server at an arbitrary location, something which is surprisingly difficult to achieve since subversion uses absolute URLs in its HTTP-based protocol.

Miscellanea

  • withhacks is a suite of building blocks for hacking Python's "with" statement.
  • promise is a set of bytecode hacks to optimize Python code based on staticness assertions.
  • magicsuper backports Python3's zero-argument super() function to Python2, using a little frame-walking trickery.
  • jquery-loadinline is a jQuery plugin that makes links and forms load their contents into an existing page element. Since it automatically applies itself recursively to any loaded content, the overall effect is like a little mini browser window contained within an element of the current page.
  • autoself is a Python module that uses bytecode hackery to automagically insert the "self" argument in method definitions. It's just a technology exercise and should never be used by anyone...
  • wxAnyThread is a simple decorator for use with wxPython, that allows functions and methods to be safely called from any thread. It is basically a convenient wrapper around PostEvent that transparently dispatches the function call to the main thread.