I regularly use these computer programs for my work:
- git, for keeping track of all my files,
and synchronising them between my computers at home and school.
bazaar is probably better.
- JabRef, for keeping track of
the articles I read.
- R, for calculations and processing
data.
- rsync, for synchronizing all of my PDFs. (Because they are big, I
prefer not to put them in git.)
- and other standard programs like FireFox, latex, evince, xpdf and vim.
Here are some computer programs I have worked on:
- wdiff is a program for
comparing documents. I added support for formatting output in HTML with
this patch.
- Docdiff
is a program for comparing versions of text documents. It works pretty
well with latex documents. However, the standard version reports unimportant
formatting changes which croud out important changes. I wrote
one patch to ignore whitespace changes and
second patch to make this behaviour
an option called --wordwrap. (Hopefully at least the first patch will
be incorporated into the standard version...) A
third patch fixes a bug in the
first patch that broke the --context option.
- I have been working on several improvements to
R, the free statistical computing
program. These include:
- tests.zip, some tests for comparing
different BFGS implementations. The script compares three
implementations: my own (see below), GSL's, and R's.
- multimin.zip, an R wrapper for
the GNU Scientific Library's function optimization code.
Included in the
R gsl package.
- Deriv.R, a fresh implementation of
symbolic differentiation, written completely in R. Advantages over
existing code include: easy to add custom rules, output is
executable, can expand out functions calls. This file needs
Simplify.R, which does some crude symbolic
simplification. It turns out there is a new interface to YACAS
(Yet Another Computer Algebra System) called
Ryacas that does
an excellent job of differentiation, among other things.
- relist.R, an inverse operator to unlist.
Together, unlist and relist allow functions to internally view
their parameters as being complex data structures, while other
functions only see a vector interface. For example, likelihood
functions might have mean and covariance matrix parameters that
would most conveniently be represented as a list containing
a vector and a matrix. Using unlist and relist allows the likelihood
function to be implemented conveniently, but with an interface
compatible with optim. Included in R.
- bfgs.zip, an implemention of the
Broyden-Fletcher-Goldfarb-Shanno (BFGS) algorithm for smooth
function minimization. It supports box constraints, and uses the
More-Thuente linesearch algorithm. I like to think the code is
easy to understand.
- An implementation and
overview of the Krusell and Smith (1998)
quasiaggregation algorithm for computing equilibria of economies with
idiosyncratic and aggregate shocks. I wrote this in a combination of
R and Fortran with Nirav Mehta.
- GNU Parted is a
popular hard disk partitioning tool that I wrote with Lennert Buytenhek. I am
no longer involved with the project.
- Connect 4 - a simple connect 4 game,
that is reasonably hard for me to beat.
- Linux on the SGI Origin 200. I spent a couple
of months on an SGI internship trying to polish Linux's rather flakey
SGI Origin 200 support. This is a compilation of all of my contributions.
The Origin 200 is a 64-bit MIPS multi-processor cache-coherent Non Uniform
Memory Architecture machine.
My webpage style is based on the
Localize design.
The Open Source Web Design
website has lots
of attractive free designs that are well structured, so they are easy to modify.