Software Projects
main page

Active Projects

JMDP: A Library for Planning

JMDP is a Java class library for research in AI planning, particularly in Markov Decision Processes. It is the common core of the codebase I am developing in my research here at CMU. For more information on the research itself, see my research page. I haven't formally released JMDP yet, as it is still changing fairly regularly. Anyway interested in using the software should feel free to contact me to get a beta version. Hopefully I'll have more information on it's capabilities available soon.

JIGS: Java Image Gallery System

JIGS is the successor to SWIGS, it provides a powerfull set of tools for organizing pictures and displaying them as static web pages. In particular, it provides support for managing picture meta-information, EXIF extraction, indexing and searching, and the creation of custom web-page renderes. For all the details visit JIGS web page, hosted by

Older Projects

SWIGS: Structured Web Image Gallery System

SWIGS is a system for creating hierarchically organized sets of thumbnail galleries. A Perl script creates the galleries from images arranged in directories and includes information from text files containing annotations. I started developing SWIGS after buying a digital camera and realizing I would need a good way to organize the ridiculous number of pictures I was taking. For more information, see the SWIGS web page.

The Game of Hex (Hexane program)

My Honors Thesis at Whitman College explores efficient algorithms for Hex, a version of the Shannon Switching Game on the vertices of a graph. The program developed (Hexane) uses modifications of conventional search algorithms and several completely new techniques. Hexane is now a large (12k lines of code) java application that demonstrates strong local searching ability. However, I have yet to combine this ability with effective algorithms that use the information to produce strong play. An old version of Hexane is online, and the text of the thesis is available in postscript.

DeathSnake 2000

DeathSnake 2000 is a Java game created by my Software Engineering group at the University of Oregon. It wasn't a bad game: you could control a snake who's goal was to collect food to increase in length, or a spaceship who tried to destroy the food before the snake could get to it. I don't have a version online at the moment, unfortunately, but I could probably dig one up if someone bugged me about it. If you're curious, though, I put the user's guide online.


Fall of my junior year at Whitman College I took a classical mechanics course. The JavaPlanets program was part of our final project. It animates simple n-body problems and allows the data to be recorded to a file. The main purpose of the program was to give a qualitative idea of how different orbital systems behave, but we also used it to model some interesting spring systems. The program is a java application and relies on reading simple data files that specify the characteristics of the bodies to be modeled, the force laws to use, etc. The full applet version contains most of the functionality of the application.

Thee Dimensional Height Maps and Random Palettes

Back in high school I wrote a simple eyecandy program that creates images by plotting different equations with randomly generated palettes. The program was for Windows 95 and used DirectX for the drawing. I don't even know if I still have the source code, but below are a few images generated by the program.

Page created and maintained by Brendan McMahan, last modified 1/30/2003.