My programs and hacks

For the most recent versions of the programs listed belows and others, take a look at my blog Zero Tau.

MetaPost Wiki

MetaPost is a language for drawing diagrams, which is especially handy for repetitive technical drawings. I've put some practical information about it on my MetaPost wiki, together with some of my hacks.

Supermemo collection: alpha bravo charlie

If you want to learn the Police alphabet, try online Supermemo with alpha bravo charlie collection.

Beagle search through all printed documents

Here's a simple but useful script that saves every printed on the disk in the pdf format. If you use Beagle to index them, you will be able to do instant search through all the documents you've printed. Really useful for somebody like me, who regularly prints and reads lots of online papers and then wants to search through them. Create a directory ~/printed, and save this script somewhere in your PATH before /usr/bin.

#!/bin/bash

# if lpr is invoked with filenames
for file in "$@" ; do
    if test -f "$file" ; then
	basename=$(basename $file)
	tempname=$(tempfile -d ~/printed -s "-$basename.pdf")
	echo "Converting $file to $tempname"
	nice ps2pdf $file $tempname
    fi
done 

# if lpr reads its data from the standard input
if test -z "$@" ; then
    tempname=$(tempfile -d ~/printed)
    tee $tempname | /usr/bin/lpr "$@"
    nice ps2pdf $tempname $tempname.pdf
    rm $tempname
else
    exec /usr/bin/lpr "$@"
fi
Yes, this script is a hack, and I'm sure it can be improved a lot. Tell me if you have any ideas.

Tapir

Tapir is a simple disambiguating text-entry system for disabled people. It is intended to use with a gaze tracker, however, you can try it with normal mouse.

Zero Tau: most recent scripts

FVWM utilities

I've written small extensions for FVWM and Emacs. Although most of them are not of a publishable quality yet, I have put the few exceptions on my FVWM page.

Org-mouse for planning

Org-mouse.el is an Emacs mode provides a better mouse support for org-mode, a versatile Emacs mode for note taking and project planning (illustrated tutorial). It implements mouse-controlled subtree expansion/collapse and context menus. It also uses a script timeparser.py to provide automatic date/time extraction from selected English text.

Org-autoclock

Org-autoclock is an Emacs package that enhances org-mode, a versatile Emacs mode for note taking and project planning. It scans your org files looking for links to local files and directories (file:/local/file/example/). If you are editing a file whose name starts with /local/file/example/, then this package will assume that you are working on the project described by the headline in your org file containing the link file:/local/file/example and start org-clocking it.

Other org-mode stuff

My system of scripts that incorporate Google Calendar or any other iCalendar-based calendarv

Emacs-desktop integration: recently used files

The following elisp code adds every file open in emacs to the XML file ~/.recentlyused, which is used by GNOME and KDE for displaying the list of recently visited documents. You need to download my python script addtorecent.py as well.
  (defun local-add-file-to-recent ()
    (when buffer-file-name
      (start-process "addtorecent.py" nil "addtorecent.py" 
	  	     (concat "file://" buffer-file-name) "text/plain")))

  (add-hook 'find-file-hook 'local-add-file-to-recent)

Using beagle from emacs

Here's a hack to use beagle from emacs:

  (defun beagle ()
    (interactive)
    (let ((locate-command "locate-beagle"))
      (call-interactively 'locate)))
where locate-beagle is a shell script:
  beagle-query $@ | sed 's!^.*file://!!' 

DBUS support for Gaim

As part of Google Summer of Code 2005, I added DBUS support to Gaim, an open source instant messenger program. DBUS is a standard for vendor-independent interprocess communication developed for use with desktop applications in mind.

Greasemonkey scripts

Greasemonkey is a Firefox extension that allows you to easily inject javascript into webpages to customize their look and/or behaviour. In comparison to extensions, Greasemonkey scripts are standalone javascript files; they are smaller and easier to install. Thousands of useful scripts are available at userscripts.org.

Firefox search plugin for

Download a Firefox search plugin for the Collection of Computer Science Bibliographies (CCSB).

Recycling calendar for Cambridge

I've made simple but useful recycling calendars for those who live in Cambridge.