Decoupled Python GUI Construction, or BitTorrent visualisation

While in general I appreciate very simple, no-nonsense user interfaces for applications that work efficiently on the console and so can be used via SSH, there are times when increased visualisation is very useful. Specifically with regard to my BitTorrent client, Unworkable, the default user interface is exceedingly simple. Inspired by the ubiquitous scp program [...]

Unworkable 0.3 released

I have just tagged, packaged and announced version 0.3 of my BitTorrent implementation, Unworkable. My goal with Unworkable is to make releases frequently – hopefully twice a month or so – with incremental improvements each release. The hope is that each release should be of a higher quality than the last. Therefore I try to [...]

Porting software from OpenBSD to Windows

Just committed the bits for Unworkable to build under Windows, using Cygwin. The code changes were pretty minimal – specifically, Cygwin lacks getaddrinfo() – however this was a relatively simple matter of bundling the KAME implementation (which is BSD licensed) in the source tree and building and linking with that if it wasn’t found. The [...]

Porting software from OpenBSD to Linux II

I wrote the other day about porting software to Linux. I talked about some of the differences between the platforms in terms of the implementation of some well-known C library functions, and hinted at some other incompatibilities. Well, now I’m going to write about some of the other issues I encountered. There are a number [...]

Faster BitTorrent, or, SHA1 is slow

This weekend I have been concentrating on improving the performance of my BitTorrent implementation. I somewhat believe in the mantra “premature optimisation is the root of all evil”, or at least, I’m not too worried about making everything super fast the first time around. Asynchronous network programs are complicated enough to write that I expected [...]