PDF:  I have simple bash scripts to convert PDFs, e.g. from JSTOR, of journal articles in the primary Economics literature (e.g. AER, etc) into compact forms for printing. For instance, for AER, it strips the JSTOR header page, expands each page (reduces margins), compresses the document into two-per-side format, and shifts even and odd doubled pages to optimise for double-sided printing. The result is four article pages per sheet (two per side) but large enough font to be very readable. Ask me if you want them; they work on Unix, Linux, and probably OS-X.

2006: I have now made a more useful tool to assess where the content is in an arbitrary PDF document and, taking into account also where the bounding box is, arrange it for optimal two-per-side two-sided printing. This is scripted in Matlab, but the algorithm is clear in the code. I am also compiling a list of magic pstops incantations produced by this code for different journals.

I have worked on software in Matlab for projecting star fields / star positions (keywords: Matlab, astronomy, pointing) for determining precise pointing of digitized video frames. This toolbox includes a celestial database and projects the astral component of the night sky for a given location and time. It then uses least squares fitting to determine where a video image was looking.

Do you wish your colleagues were using Matlab instead of IDL? (Or vice versa!?) I believe that IDL has astonishingly primitive plotting, inflexible variable types, and a nearly inconceivable lack of built in utilities. Matlab 5 comes with code to write MAT file format files from C. I have written a tool to write Matlab-format files from within IDL (keywords: converting from IDL to Matlab MAT file convert from IDL to Matlab writing MAT file format from IDL). This may be more convenient than using the "idl2matlab" software, which requires starting up a Matlab kernel each time it's used. My software is juvenile [2002] -- please let me know if you use it, and tell me if you extend its functionality -- but it works perfectly and I would like to help others not waste their time starting from scratch! There are just two files: cpblwritemat.c and The latter is ugly (presumably there is a proper way?!), and a lovely example of why I sometimes loathe IDL. If you use these files, also email me for the most up to date versions.

[2000] I have worked on developing a sensible set of tools for writing my PhD dissertation, with the goal of having others in our field use a common LaTeX bibliography database (BibTeX) of all the sprites papers and presentations, and in improving some default behaviours of LaTeX in the thesis.sty style. Please see my LaTeX page for advice on theses and BibTeX (and PDF.)

[2008] I have spent much time dealing with tables and making scripts to format regression table output into LaTeX using various features. A bunch of what I've learned about tables is in cpblTables.sty

Some other customisations for thesis, beamer, etc are in cpblRef.sty Questions:

I use a lot of open source (freedom, not freebie!) software.

iClicker (i>clicker) with Linux

See my struggles with this.

perl camel
I write horrible Perl; you can ask me for:

[2004+] I wrote a simple community photo / contact info / interests etc directory for Green College at UBC. It allows the individuals to update the information and photos themselves, so requires no maintenance.  It seems well used.  It is also fully controls a majordomo email list, so it acts as a self-serve email list for which you can look up info/photos of any subscriber. It has a number of other features, such as showing a randomly-ordered facebook with people's names visible by mouse rollover: nice for learning faces in your community. The interface is passworded, but just ask if you want to see it or have the code. It requires PHP and MySQL.

Python logo + +
An interface to the statistical software, Stata, and between it and LaTeX. I do almost all my Stata analysis and programming in Python. This is motivated partly by some custom repetitive statistical tasks I needed, partly to save the hassle of compiling multiple regression outputs into one table, partly 'cause I could not stand to start programming in Stata's own language. Much of what I can now do is captured in my pystata [zip] package. As an example, running the demo a few in a row will

You can see the sample output, also in the git repository, though it doesn't demo many available options.
The form of the actual latex table is also quite customisable without actually changing the underlying .tex table file that corresponds to each table of results. The preview tex file (corresponding to the pdf, above) that incorporates all the tables gives examples and a wide range of choices for formats in case you want to tweak how things look in your your final document. (See the cpbl-tables>/a> repository)
This code is set up to run under GNU/linux or UNIX with Stata installed, though mostly it has facility to sense Windows or cygwin as well.
This package has evolved towards reading Stata log files directly and extracting regression results, covariance matrices, etc into numpy and pandas forms in Python, and various tools to generate LaTeX from those. It also generates the Stata code that produces those log files.

Python logo
[2006+] I now write most things in Python. Great for manipulating data.. etc
python scripts are online:

Some other stuff, not yet documented or put online:

For my dissertation I worked on some code for simulation of electromagnetic fields' interaction with the lower ionosphere and resultant optical emissions. Some literate-programming source code (using noweb) is online, and you can ask me (or the VLF group at Stanford) for more details if you like.
There are three parts to the codes:



If I were a C.S. prof, all my courses would be design courses of real, open source projects. One could make a major contribution to the world every term! Here are some of the many things I have wished for as a unix user: (Possibly out of date, thankfully!)


G.I.S. in Matlab

I've not bothered to learn a real GIS software, and am used to having the control of a scripting language. Sometimes it's really slow to plot, or awkward, to use Matlab's Mapping Toolbox, but I have been doing a lot of that. Finding the outlines (not convex hull) of a group of contiguous polygons...

I used to have mild RSI from typing too much. As everyone says, treating this in time is invaluable to your livelihood and happiness. Here is information, graphics, etc on RSI.