tmux, a BSD alternative to GNU Screen

I started using tmux today. Its a terminal multiplexer / task switcher for UNIX-likes, very much in the same vein as GNU Screen. However, its a from-scratch implementation, designed to be clean, sane and easy to configure. The more liberal 3-clause BSD license is a plus also, since it means that [...]

Easy private DNS – authoritative and recursive – with Unbound

Lots of people have a small home network. Usually you have a combo box which acts as a router/firewall/file server. Then you have a couple of other machines hooked up, and you share the Internet using NAT. A private DNS server is helpful in this kind of scenario for two reasons:

Recursive resolver [...]

OpenBSD 4.5 is out, solid release, but some package bugs

OpenBSD 4.5 was released the other day. I upgraded one of my servers and workstations to the new release, from 4.4-current and 4.4-release respectively. Mostly, things have gone pretty smoothly, as is usually the case with OpenBSD. The new release has plenty of incremental improvements, with the developers gradually polishing and refining [...]

OpenBSD’s omalloc: Bug and buffer overflow detection

For quite a long time now, OpenBSD has, among numerous exploit mitigation techniques, had a very strict mmap()-based malloc() implementation. Recently re-written by Otto Moerbeek, it is even harsher now. I find that this feature makes OpenBSD one of the best platforms to develop C programs on. If you have a [...]

Automatically fetch and checksum OpenBSD snapshots

I run OpenBSD on all my machines. I think its a great operating system with excellent range of features and all the components fit together nicely. One of my favourite things about OpenBSD is the highly aggressive release schedule. While a stable release is cut every 6 months, Theo is producing complete, [...]

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

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

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

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