James Ashton


I am the IT Manager in the ANU CECS IT Group.

Contact Information



Snail Mail

James Ashton
IT Group
College of Engineering and Computer Science
RSISE Building 115
Australian National University
Canberra, ACT 0200


International: +61 2 6125 8675
Australia: (02) 6125 8675
ANU: 58675


International: +61 2 6125 8645
Australia: (02) 6125 8645
ANU: 58645

Other Activities


X-Face is a file format used to allow a small image to be included with mail items. Typically the image shows the sender's face and is included in the mail headers labelled X-Face: . The leading X- is to avoid interfering with the mail header namespace as suggested by RFC822. I devised the format to contain 48x48x1 (i.e. black and white) images in the minimum possible space. With care in production, dithered images of faces are surprisingly recognisable given their small size (you can judge from the image above). Usually only three or four header lines are required. The compface library contains routines for converting to and from the X-Face format. Several software packages can be make use of the images, often by displaying the face of a mail sender when mail arrives. X-Face was written when colour displays were much less common than they now are. I have received requests to devise a colour version but a couple of factors have slowed me down. Nevertheless I have some ideas about eventually creating a colour X-Face format.


Once an avid Diplomacy player, I've created my own version of the conference map. My version is in the shape of a septagon (seven-sided polygon) instead of the standard rectangle.


I've used rayshade to assist in designing a house. This has led me to create several programmes which build on rayshade's capabilities.


I quickly reached the limit of the C preprocessor when writing input files. I found I needed a fully programmable input language with the ability to use complex calculations, conditionals, loops, etc. My solution has been to create a Rayshade PreProcessor library called rpp. It's just a suite of subroutines which mirror the rayshade primitives. As each routine is called it produces rayshade code on the standard output. Now I just write a C programme which produces rayshade output and I get the full generality of C, not just cpp.

Sun Position

A useful aspect of visualising a home design is the ability to see how the Sun will illuminate it at different times of year. I've written a basic routine (called sun.c) that generates a rayshade light source simulating the Sun given latitude, month and time of day. As written it uses rpp (see above) but it could easily be adapted as required. It does not take into account the equation of time which means that the Sun can appear to be several minutes early or late. This is the same equation of time that causes sun dials to often include correction tables and is unlikely to be an issue in most rayshade applications.

Cylindrical Camera Geometry

Apple's QuickTime Virtual Reality (QTVR) software allows users to pan and zoom around a panoramic image in real time. It requires as input an image with a 360° horizontal field of view and with cylindrical distortion. Since rayshade normally models only a planar camera lens I needed to extend the package to add a cylindrical camera geometry. I've packaged my extensions into a small patch file which can be applied to rayshade 4.0 patchlevel 6. The documentation is as follows. By uncommenting one of the first three lines in the following Rayshade source three different sample images can be generated. Of course planar is the default.
/* planar */
/* cylindrical */
/* spherical */
fov 100
screen 128 128
light 2 point 4 2 5
eyep 1.5 1.1 1.1
lookp 0 0 0
box -1 -1 -1 1 1 1
Planar Geometry Cylindrical Geometry Spherical Geometry

Combining my house design work with the QTVR extensions to rayshade allowed me to create this Virtual Reality House.

LaTeX indxcite package

I've been heavily involved in the typesetting of textbooks. The books all include a separate author index. I needed a way to ensure that when a citation was made using BibTeX that index entries for the cited paper's authors would be generated automatically. I've devised the indxcite package to perform this task. It builds on the harvard and index packages for LaTeX 2e.

The package can be obtained from my local ftp site or from CTAN.


If you've played Netrek you may have seen me playing as Slartibartfast, usually bombing in my trusty scout . I don't play Paradise but I find Hockey fun occasionally.

The link between Australia and the rest of the world, although fibre, is still nearly 300ms long and together with congestion this makes play painful at times. One day, hopefully, the Australian Netrek community will reach critical mass and regular local games will be possible.

Web Development