Software
I develop several 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 public 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.
- 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.
- 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.
- FS is a filesystem abstraction for Python, providing uniform access to ordinary filesystems, zipfiles, Amazon S3 and more; spearheaded by Will McGugan.
- 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.
- plipy is a framework for building portable linux python distributions, along with a prebuilt distribution constructed using the framework.
- 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.
- A collection of useful Django snippets I have written.
- 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.