Some useful software
These programs were written by Andrew Myers and are
freely available for use, subject to some provisos contained in individual
distributions. These programs are free, but come with absolutely no
To receive notification of updates to any of the software offered here,
please send mail.
- The Condorcet
Internet Voting Service makes it easy to set up
your own secure, anonymous elections across the Internet, using
state-of-the-art algorithms for ranking choices.
- bibweb is a flexible HTML bibliography generator.
building responsive, animated figures into HTML web pages and presentations.
is an Android checklist app that allows dependencies between checklist items to form not
just a tree, but an arbitrary acyclic graph.
a password generator for Unix and Android.
- The Roll language supports complex dice
rolling expressions that support a wide variety of games. It can also compute or approximate
Instant-feedback sliders for talks.
XSokoban is the X version of the classic puzzle game.
- relplot generates
high-quality PostScript plots of relations on
two variables, expressed as equations.
- rcsview displays RCS and CVS files by using
color to indicate which version various text came from. It allows rapid switching between
viewed versions while maintaining the same position in the file, and convenient display of
log messages. It requires Tcl/Tk.
- mvsed is a simple but useful script that allows easy manipulation
of files while applying substitution patterns to the filenames. For example, mvsed makes it
easy to change file extensions, to change filenames from upper- to lowercase, or to move files between one directory structure and another.
- grader is a program for
generating appealing plots of exam scores and other sampled data, using
a posteriori principles to form a hypothesis about the "true"
probability distribution being sampled (or at least a nice excuse for
- splitdefs improves a build process by
avoiding unnecessary builds. One of the annoyances of Unix programming in C or C++ is
excessive rebuilding when using make. One reason for this problem is the natural
desire to organize preprocessor definitions into central configuration files, particularly
when using autoconf. This program addresses the problem by automatically splitting
configuration files into smaller headers, allowing fine-grained dependency analysis and
fewer gratuitous compilations. Splitdefs is easily integrated into a typical build
- join-csv joins multiple CSV spreadsheets
into a single spreadsheet, combining rows that match on some set of keys.
This is version 2.9.3 of the Cornell thesis style document class,
originally written by Sergio Gelato and modified by several others
including me. This version corrects some bugs in previous versions,
relating to line spacing, page number placement, page size and page
centering. It also includes a sample thesis document and a sample Makefile
for building a thesis. [Cornell thesis information]
- ttquot.sty. This package has seen a lot
of use for writing technical documentation and papers. It's very simple: the double
quotation marks (") put their contained text into typewriter font, and underscores
put contained text into italics, except when they occur in math mode or inside
"". Thus, documents written using ttquot are readable both before
and after formatting.
- exam.sty supports writing
examinations. It has reasonably nice formatting, but
the best feature is that it keeps track of how much questions and
parts of questions are worth and makes sure that everything totals up
correctly. The solutions and the exam itself can be written in a single file,
with options controlling which version is generated.
An example exam is
available (and here it is formatted
and as solutions).
supports UTF-8 encoded LaTeX documents, including most commonly used math characters.
Since most text editors now support UTF-8 encodings, this feature allows
more concise, readonable math.
The mappings currently include more than 500 characters:
the most commonly used math symbols, the ISO-Latin-1
characters, and the Greek alphabet. Modern LaTeX distributions do
include some UTF-8 support via
inputenc, but it
currently seems to support only Latin-1 characters. The
utf8math package also comes with
a set of Vim bindings for entering all the
characters; just set the Vim variable encoding to
utf8 (Eclipse has a similar setting).
If you'd like support for additional characters,
make a pull request to the GitHub repo.
makes it easy for authors or editors of a paper to add PDF comments
colored by author, building on the pdfcomments package.
It supports controlling whether comments are visible,
so you can easily toggle between a draft version where comments are
visible and a final version that turns them off.
My research group's standard template for writing papers using LaTeX.
Includes utf8math and authcomments.
A few fun PostScript documents.
Useful software I don't distribute
I wrote the original graphical diff/merge tool, called gdiff, in 1989 when
I was an engineer at Silicon Graphics (SGI). I was inspired by the interactive
textual diff program, sdiff. Since then there have been several
nice descendants that add features like text editing and directory-level merging.
Examples are mgdiff, xxdiff, kdiff3, and meld. Many of them still look very much
like the original gdiff. If you ever see a diff where added lines are shown in
green and deleted lines are shown in red, you're experiencing the color choices
I made for gdiff!