Ben Buxton

On this page you can find a few tidbits of software that I have written in my spare time. It is all released under a free license of some sort, so feel free to modify and distribute.

Most of this software I consider to be no longer under active development, but any correspondence is appreciated and I'll try to update with any bug reports.

I also spend time taking photos., and sometimes write stuff about life.

Get my public key.

Podtool - iPod sync tool

18 May 2006: New version released

Podtool is a Python-based utility for managing tracks between a local music repository and an iPod. In particular, podtool implements correct playcount and ratings synchronisation which is important when using smart playlists.

I wrote this tool to scratch an itch, so it does what I need it to do. Please contribute patches, etc and I'll include those in a future release. Perhaps one day this will become a full blown application (console based iTunes?).

Podtool requires Python v2.4 and libgpod. You also need to install the libgpod python bindings.

Download podtool v1.1(21Kb)

18 May 2006

$ ./ ipod playlist list
| Name              | Items | Tracks |Smart? |
 BBs Nano              694    3688Mb     No 
 Best of the best      386    2003Mb    Yes 
 Fresh                 596    3134Mb    Yes 
 Nano Choice           631    3319Mb    Yes 
 New Ones               40     279Mb    Yes 
 ThreeStar             245    1316Mb    Yes 
 Rate me now!           60     348Mb    Yes 
 Podcasts                2      13Mb     No 
$ ./
usage: [options]  [args]

command is one of:

  sync [meta]                   - Sync iPod and local DB
                                  - meta: Only merge metadata from ipod
  ipod add <files|dirs> [podcast]
                                - Add <files|dirs> to iPod (but not local db)
                                  If [podcast], set as podcast and add to
                                  podcast playlist
  ipod del <notdb|pattern>      - Delete tracks (+files) from iPod.
                                  - notdb: all fcksiles not in local db
                                  - pattern: titles matching regex pattern
  ipod list <pattern>           - List tracks with titles, artist or album
                                  matching given regex pattern
  ipod playlist create  [podcast]
                                - Create a standard playlist called ,
                                  and optionally set it to be the podcast
  ipod playlist list [name]     - Show playlists [details for ]
  ipod playlist add <name> <tracks>
                                - Add <tracks> to playlist <name>. Tracks
                                 must exist on ipod (see 'add') and are
                                  regex matched by title/artist/album
  ipod playlist del <name>      - Delete playlist <name>. Use --del-files
                                  option to also delete files/tracks
  ipod playlist remove <name> <tracks>
                                - Remove tracks matching <tracks> from
                                  playlist <name>. Use --del-files option
                                  to also delete files.tracks
  ipod dump                     - Dump tracks and itdb from iPod. Merges
                                  db info to local db and copies files
  ipod check                    - Check ipod for orphans, dupes, etc
  ipod makemap                  - Create mapping between ipod and local db
  ipod eval                     - Evaluate and save smart playlists
  ipod fixart                   - Repair artwork on iPod (re-extract from mp3s)
  add <files|dirs>              - Add mp3s to local itdb
                                  - <files> to add given files
                                  - <dir> to add dir recursively
  del <files|dirs|pattern>      - Delete tracks from local db (not files)
                                  - <files> are filenames as in db
                                  - <dirs> looks for tracks under <dirs>
                                  - titles matching regex pattern
  list <files|dirs|pattern>       - List info for file, dir or regex "pattern"
  playlist create <name> [podcast]
                                - Create a standard playlist called <name>,
                                  optionally set as podcast playlist
  playlist list [name]          - Show playlists [tracks in it with ]
  playlist rules <name>         - Show rules for smart playlist <name>
  playlist add <name> <tracks>  - Add <tracks> to playlist <name>. Tracks
                                  must exist on ipod (see 'add') and are
                                  regex matched by title/artist/album
  playlist del <name>           - Delete playlist <name>. Use --del-files
                                  option to also delete files/tracks
  playlist remove <name> <tracks>
                                - Remove tracks matching <tracks> from
                                  playlist <name>. Use --del-files option
                                  to also delete files.tracks
  eval                          - Evaluate and save smart playlists
  check                         - Check DB for dangling tracks, dupes, etc
  diff                          - Show tracks which have changed rating,
                                  playcount or playtime on iPod
  update <files|dirs>           - Hunts for tracks in <files|dirs> and
                                  updates database with new info. Useful if
                                  you have a new rip of a track.

  --version             show program's version number and exit
  -h, --help            show this help message and exit
  -m MOUNTPOINT, --mountpoint=MOUNTPOINT
                        iPod is mounted at MOUNTPOINT. Default: /mnt/ipod
  -l LOCALDB, --localdb=LOCALDB
                        Use LOCALDB as local itdb. Default:
  -M MUSICDIR, --musicdir=MUSICDIR
                        Dump tracks to MUSICDIR (for dump command). Default:
  -r RATING, --rating=RATING
                        Add rating to new tracks (add command only)
  --del-files           With local 'del' command, also delete files
  --limit=LIMIT         Limit to  files when adding/syncing/dumping
  -v, --verbose         Verbose output
  -q, --quiet           Quiet, only print errors
  -f, --force           Force overwrites (dump command)
  -n, --dry-run         Dry run, don't actually write anything.

A stint of unemployment left me with a little spare time, and how better to spend it than learning a new coding API? Below are three screensavers I've written that use OpenGL. Pretty screensavers are good justification for splashing out $$ on a nice 3D card.

They are all included in xscreensaver 3.34 and above.


This hack shows prettly little electronic components floating and spinning around the screen. Occasionally you will see LEDs and displays randomly flicker. This hack makes use of light sources and alpha blending for extra 'ooh' value. Unless you have an old burnin-able monitor, you should run it with '-rotate -rotate-speed 0'. Other components can be added relatively easily.


This is a fairly simple GL rendering of a four stroke engine, that uses some alpha blending and light sourcing for extra pretties. It spins and floats around the screen randomly, like any good screensaver should.


This hack is primarily a proof-of-concept. I noticed that no GL screensavers actually create textures out of the desktop, so I created this. It takes a snapshot of the screen, and creates a texture map from it. It then spins it around, mapped onto a simple square. JWZ improved on this with the 'gflux' hack.

Photo Management Software

I have written a web based digital image management system called PhotoShelf. I use it to catalogue and arrange into albums thousands of digital camera images. It runs under Apache, using mod/perl, and makes us of a PostgreSQL backend.

Pleae see the PhotoShelf Home Page for all the information regarding this.

Note - this is old and not maintained any more.

System Loadmeter


Loadmeter is a Linux/Solaris system resource monitor that uses very little memory, and is written using raw Xlib. It has numerous features, all described in the README file.

Version 1.20 (released on 17/9/98) includes support for Solaris.

Download Loadmeter 1.20 (23k)

Alternatively, if you have Debian you can just run apt-get install loadmeter.

OSS Audio mixer


This is a simple audio mixer for OSS based sound systems. It is very small (both physically and in footprint), although it is an incomplete project, yet still almost fully functional. It's supplied as a single C file, and only relies on Xlib.

Download mixer (23k)
PHP To-Do list

To-Do is a web-based todo list application. It is designed to be lean, professional looking and themeable. The interface is very intuitive and requires no special installation beyond untarring. Further information is in the README file.

Last update, 25 August 2005.

Download To-Do v1.3(11k)


Copyright © 2001-2003 Ben Buxton bb at cactii dot net
. . . . . . . . . . . . . . . . . . . . .