Anyone who uses unix for long ends up with a ~/bin/ or similar that's full of random scripts they wrote. This page is about stuff in my bin, that hasn't yet found a better home outside it, and in most cases probably never will.

I try to be proactive about submitting programs from my bin to projects that they fit into, and if you use debmirror, dpkg-repack, vidir and vipe from moreutils, or svnpath, debcommit, bts, grep-excuses, or plotchangelog from devscripts; then you've used a program that grew up in my bin. I think there's some useful stuff in there still.

You can browse my bin at


Passed a mount point and a command, it remounts the drive at that point async, runs the command, and then remounts it back sync. Useful with external drives that are mounted sync by default for safety.


This brings up a text editor for writing a blog entry in, then works out a filename for the entry based on its title, writes the file, commits it to git, and updates the blog. Fairly specific to my blogging setup, which uses ikiwiki now; older versions worked with pyblosxom instead.


This is the script that I use for building packages.


This is the script I use for running lintian and other checks on a package I've built. It displays all sorts of useful info in a pager.


This is the script that I use for releasing packages.


This is a script that release calls, which converts a changelog into a news item for a package on its wiki.


Pulls photos off a camera. Either from a DCIM directory of a mounted SD card, or using gphoto2 over USB. The photos are added to a git-annex repo.


I keep my crontabs in git and this handles loading them into cron. Supports some handy features.


Given a list of architectures on command line or stdin, outputs any of the released debian arches not in the list


Prints out the number of days since I was born. Useful for a different perspective.


What I use for tailing logfiles. Determines dynamically what files are available to tail, and tails without wasting the last line on the screen to display a blank line with a cursor on it (which tail normally does, and which sucks on 3 line xterms).


Sshs into a machine and starts a screen session. Auto-reconnects. Goto considered wonderful!


For use in a git-annex repository containing files that are being consumed in some way (eg, videos or podcasts), where I want to keep a copy of the file but get it out of the way when done with it. Moves specified files to some "out" directory located inside the repository, and has git-annex drop their content if possible.


Simple sound recorder. Streams the mic to a fifo and in the background, encodes it to an ogg file. This can be easily started up, and runs until ctrl-C'd. Then the finished ogg file is stashed away in a git-annex repository.


Outputs approximate time of sunrise. If run as sunset, outputs that instead.

It does have to have LAT/LONG hardcoded into it though.


This makes su actually run the the sudo command, if sudo is present. Nice to not have to type the password every time when suing, although I wrote it before I was aware of "sudo su".


Blocks suspend on lid close while a command runs. Useful for eg, listening to a podcast, or keeping the laptop running until a download completes.

Requires some systemd setup documented in comments.