.@ Tony Finch's homepage

my work web page (including lots of stuff about email, especially in Cambridge University)
my blog (in which I mostly write about things I'm working on)
my list of links (wildly weird and wonderful)

A bit about me

I am a Unix system developer from Cambridge. I work at the University of Cambridge Computing Service, helping to look after the central email servers. I am occasionally a FreeBSD committer and an inactive Apache httpd developer. I'm not looking for a job (I'm quite happy with my current one), but you can look at my CV. I am very happily married to Rachel (who also works for the University).

I have some small pages about my name, my email address, and what I look like.

These pages are mostly about what I do when I'm in front of a computer. At other times I may be ringing (usually with the Guild) or in a pub with some friends or just reading something or other. I don't drive; instead I go in for multi-modal travel (or just blag a lift from Rachel).

My PGP key fingerprint is:

pub  1024D/84C71B6E 2002-05-03 Tony Finch <dot@dotat.at>
     Key fingerprint = 199C F25B 2679 6D04 63C5  2159 FFC0 F14C 84C7 1B6E
uid                            Tony Finch <fanf@FreeBSD.org>
uid                            Tony Finch <fanf@apache.org>
uid                            Tony Finch <fanf2@cam.ac.uk>
sub  2048g/FD101E8B 2002-05-03

Some of my stuff

As well as the bits and pieces below you should have a look at my work web page, especially if you are interested in talks that I have given and documents and software I have written to support Cambridge University's central email services.


I have a directory containing various bits of code not all of which is mentioned in this section. There are also some links to stuff I have done on other web sites.

Selog - a library which unifies error reporting, activity logging, and debug tracing. It allows programmers to give their users flexible control over which messages are written and where they are written to.

Unifdef - my improved version of the old BSD unifdef(1) program is now shipped by all the BSDs and is used by the Linux-2.6 build system. It has a manual page, and a script for removing every #if from a program.

Linked lists - a nice doubly-linked split-ring list implementation in C, plus a singly-linked list implementation which is a strict subset of it.

Conway's Game of Life - I have a description of the evolution of my nice little implementation and various unfinished experiments.

Maybe I'll finish cobj at some point.

You can find out about my Perl html filtering proxy at the htmlf page.

If you use FreeBSD-3 and you have lots of IP addresses configured on a machine then you may find the NETALIAS patch useful. (I need to update it to work with KAME for FreeBSD-4.)

I was one of the winners of the 1998/9 International Obfuscated C Code Competition.


As well as my LiveJournal, I have a directory containing various documents which include the following:

Simon Tatham has a description of his really nice mergesort algorithm for linked lists which sorts in place with O(1) overhead and only uses forward links. In October 2005 I wrote another description of the algorithm which I think is easier to understand.

I realised recently that Exim is Turing-equivalent so I decided to write a little demo which includes an informal description of how to translate a Turing machine into an Exim configuration, and an example configuration that implements combinator reduction like my IOCCC winner mentioned above.

I had an idea at the end of September 2002 for a new Open Source copyright licence, called the Open Source Meta-Licence, which is both amusing and has a reasonably sane rationale.

I have a small page about TCP_CORK vs. TCP_NOPUSH.

In early 2001 I wrote a piece on the aesthetics of programming, inspired by a thread about programming books on FoRK and a book by Edward R. Tufte, and because I received a few appreciative responses I thought I would publish it somewhere more permanent and easy to find.

I wrote some CVS guidelines for use within Demon Internet which I believe are also useful in the wider world, so I got permission to publish them more widely.

I suggested on comp.std.c an extension to C so that it could support arrays of an incomplete type. The other readers didn't think it would be much use...

You can look at my bookmarks which are few but useful and organised. Or you can look at my web log, which is less useful and less organised.

Thanks to Ian Jackson for hosting these pages on chiark.

Tony Finch is <dot@dotat.at>

$dotat: doc/web/homepage.html,v 1.108 2011/01/17 10:55:25 fanf2 Exp $