Aaron St.John - Portfolio
Home | Portfolio | Resume | Email
Harmonic Entropy
Java - Multi-platform

Harmonic Entropy is a Java application that allows physically disabled children to compose music through an intuitive an accessible interface. All of the functionality of this program can be accessed through simple, one-key shortcuts. Additionally, the program includes a template for an Intellikeys keyboard, a programmable device designed for children and physically disabled users.

For this project, I was the lead designer in a group with three other students. During the course of the six-month project we applied our software engineering skills to design, prototype, implement, and test our program, all while making sure the project was competed on-schedule, and to the client's satisfaction.

Harmonic Entropy - Screenshot

Spamfilter
Java - Multi-platform

Spamfilter is a research project that I led at Central Washington University. The program utilizes genetic programming to evolve decision trees that classify email as either spam or legitimate mail. This is a novel approach that has not been researched heavily.

During the project, I led two other students as we researched spam-filtering methods, proposed new methods, and finally implemented our chosen approach in Java. Our spam filter is able to start from zero knowledge and quickly evolve a decision tree capable of classifying email with approximately 85% accuracy.

Spamfilter - Screenshot

Chess-o-matic
C# - Windows - .NET

Chess-o-matic is a prototype that I designed for a user interface design class and implemented in C# using .Net. The concept was to design a chess game that allowed beginning players to learn the game using a hands on approach. Players can explore different possibilities using a very intuitive interface. The user is able to interact with the program naturally to make moves and explore the game of chess.

Because this program is a user interface prototype, some of the functionality has not been implemented. The project is meant to be a "mock-up" of the user interface that would be used in the final program.

Chess-o-matic - Screenshot

WinIRCLib
C++ - Windows - win32 API

WinIRCLib is a windows library designed to provide an object-oriented interface to the IRC (Internet Relay Chat) protocol. This library handles the TCP/IP connection to an IRC server, parses incoming messages, and composes and sends outgoing messaged originating from the client program. WinIRCLib communicates asynchronously with the host program using Windows' message passing interface.

WinIRCLib is a personal project that I designed to become more familiar with networking code and Internet protocols. It is implemented in C++, and is still being actively developed.

WinIRCLib - Screenshot

Orbitz2
C++ - Windows - win32 API

Orbitz2 is a personal project that I created to explore the Mandelbrot. Orbitz2 is implemented in C++ and uses the win32 API to interact with the GUI. This program uses multi-threading to provide a seamless interface. All rendering and calculations are done in a thread separate from the GUI components. This allows the users to interact with the program even while it is calculating.

Orbitz2 - Screenshot

Supermandel
C++ - Windows - win32 API

Supermandel in a multi-threaded fractal visualization program that I designed for a class on parallel computing. This program breaks up the work area into several 'chunks', and then coordinates several different threads to process these work chunks. By using a multi-threaded approach, each thread can run on a separate processor, so that an extremely accurate snapshot of the Mandelbrot set can be calculated very quickly.

Supermandel - Screenshot

Tridball
Assembly - GameBoy Color

Tridball is a GameBoy Color game that I created for the GBDev2k contest. This game puts a 3d spin on the game of pong. Because the GameBoy's processor does not have support for floating point numbers, division, or multiplication, I needed to design an alternate method to show 3d graphics. I was able to used compressed look-up tables to run the needed calculations quickly while staying under the contest's 32KB limit.

Tridball is written in assembly language for the GameBoy's z80 based CPU. I used emulation to test the game during development, and then tested on the GameBoy hardware using a flash-based cartridge.

Tridball won second place in the GBDev2k contest.

Tridball - Screenshot
Download Tridball source code (.zip, 13 KB)
Download Tridball ROM image (.zip, 87 KB)
(the ROM can be run using a GameBoy emulator such as BGB)

RGBGrafx
Assembly - GameBoy

While a member of the hobbyist GameBoy programming community, I was frustrated by the lack of a basic graphics library. I created RGBGrafx to fill this need. The GameBoy does not have any kind of operating system or built in libraries, so programs must interact with the hardware directly. RGBGrafx acts as an abstraction layer that allows a developer to concentrate on the task at hand, rather than trivial implementation details.

Like Tridball, RGBGrafx was implemented on a PC and tested using emulation, and then tested on the GameBoy hardware. RGBGrafx is implemented in assembly language.

RGBGrafx - Screenshot

Valid XHTML 1.0!