projects

My research and academic projects can be found on the Narrative Intelligence Lab website.


List of Personal Projects


Multi-Socket Server

Language: Java

The Multi-Socket Server or mss package provides an easy way to manage asynchronous input from many different sockets by placing all network events into a queue so that they can be handled one at a time on a single thread.

Current Status: Finished and released version 1.0

Static and Dynamic Data Structures

Language: Java

When you modify a dynamic data structure, its internal state changes. However, when you modify a static data structure, its internal state remains the same and it returns a new instance of the class that reflects the change. Static data structures are useful when every stage of a changing data structure needs to be preserved, such as many forms of Artificial Intelligence search.

Current Status: Finished and released version 1.0

simple-SAT Planner

Language: Common Lisp

simple-SAT is an AI planner that reduces planning problems to boolean satisfiability via a method originally described by Kautz and Selman (1996). simple-SAT is an educational tool; it focuses not on efficiency but readability. It should be easy to understand and modify, and all of the axioms that it produces are in Lisp-style syntax.

Special thanks for Dr. Rob St. Amant for making improvements to the code and including it in his handy Simple Planners code base.

Current Status: Now one of Rob St. Amant's Simple Planners

SoundToClass Tool

Language: Java

Avoid the tedium of importing sound into Java applications and applets by converting them into native Java code. Convert supported audio files into .JAVA files. For example, this sound would get converted into this code! Use this tool as a GUI or from the command line.

Current Status: Finished and released version 1.0

ImageToClass Tool

Language: Java

Avoid the tedium of importing images into Java applications and applets by converting them into native Java code. Convert .GIF, .JPG, and .PNG files into .JAVA files. For example, this image would get converted into this code! Use this tool as a GUI or from the command line.

Current Status: Finished and released version 1.0

Java / Javascript Socket Bridge

Language: Java and Javascript

Gain the benefits of real sockets in JavaScript by including a simple, invisible Java applet in an HTML page.

Note: Due to several updates to both Java and Javascript since I wrote this, the project no longer works in its current form. I am leaving it here simply as a reference due to its great popularity.

Current Status: Out of date, but preserved for posterity

Dinky Bomb Original Server

Language: Ruby / Java / PHP

Dinky Bomb was a cult classic multi-player online Flash game similar to Worms. The game was originally created by Liam O'Donnell and others, and has passed from owner to owner several times since then. Dinky Bomb Delux is now owned by Atari, which has taken the game offline, but one of the sites that I used to develop for in my spare time, GamerParty.com (now defunct), still holds the rights to the original version. When GamerParty aquired the game, there was no working server backend for it. I re-wrote the backend using Ruby and later Java. Sadly, GamerParty.com and its various offshoots are now defunct, and with them went Dinky Bomb.

Current Status: Finished version 3.0 (but the code is proprietary)

The Manly Name Generator

Language: PHP

Need a name for a pet or a character in your latest game? Why not make it a MANLY name? I wrote this in a fit of boredom one night in college. Little did I know that it would be my first endeavor into procedurally generated content. Apparently it is now #1 on Google for the search "manly name generator." The internet is a strange place.

Current Status: Available for use