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
warranty.
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.
  
- 
    Constrain is a JavaScript package for
    building responsive, animated figures into HTML web pages and presentations.
  
- 
  
  Multilist
  
    is an Android checklist app that allows dependencies between checklist items to form not
    just a tree, but an arbitrary acyclic graph.
  
- 
    MakePassword is
        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
    probability distributions.
  
- 
    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
    smoothing).  [An
    example]
- 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
    process.
- join-csv joins multiple CSV spreadsheets
    into a single spreadsheet, combining rows that match on some set of keys.
    
LaTeX packages
  - cu_thesis.cls. 
     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).
  
- utf8math.sty
  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.
- authcomments.sty
     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.
  
PostScript hacks
A few fun PostScript documents.
Small JavaScript hacks
Other stuff
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!