Importing a CVS repository to Google Code Subversion

My C BitTorrent implementation, Unworkable, used to be hosted on an anonymous CVS repository I had running on my server at home. This was fine, until I reinstalled the machine from scratch and didn’t feel like setting up the whole anonymous CVS access again. Its a pretty painful process, unfortunately, although there is [...]

Unworkable 0.4 released

I have just tagged, packaged and announced version 0.4 of my BitTorrent implementation, Unworkable.
Here are the release notes:

Implemented sending peer keep-alives.
Trace log now contains timestamps.
Make us more tolerant of intermittent tracker failures.
Added support for Arch Linux.
Fixed an off-by-four bug which could cause segfaults on some platforms.
Fix zero padding in peer id generation.
Overall code reduction and [...]

BitTorrent Strategies: The Beginning

To follow up on my last post on the bittorrent end-game, I’m going to write about a strategy to bootstrap a torrent download. I am talking here about the case where you start a download with no existing data, in other words, from scratch. As I described in one of my earlier articles [...]

BitTorrent Distributed Hash Table (DHT) or Trackerless BitTorrent I

One of the more interesting extensions to the BitTorrent protocol has been the introduction of a distributed hash table implementation. As mentioned in my previous article on the basics of the BitTorrent protocol, traditionally BitTorrent relies upon a centralised “tracker” application – which runs over standard HTTP – in order to facilitate contacting peers [...]

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 [...]