POP Client

A C pop client written for a networking class. Receives mail from a pop server and writes it to an mbox file in the current directory. If the mbox file does not exist, it will be created. Usage: ./client -h hostname [-d]

TFTP Server

An RFC compliant simple TFTP Server developed for a networking class. Port 6969 is the default port unless otherwise specified. Sanitizes input, can work with multiple files. Not designed to handle multiple connections.


VLC Remote for Android

This was my first very large-scale programming project, a group project where we built a wireless remote control for VLC media player. It skips, plays, pauses, rewinds, views your playlist, and fetches artwork for the movie you're playing. Future development plans include fast forwarding and rewinding, as well as file browsing from your computer. The source code is available online, or you can download the app for your Android phone.
SVN | Official Site | APK

K-Means Image Clustering

This was an algorithms project where the goal was to take an image and cluster it based on RGB values of colors. Some of the code was adapted from Rafael Santos' work, so I can only post some resulting images of the project.
Example 1: 3 clusters | Example 2: 4 clusters | Example 3: 2 clusters

AleXSI: interface for SPASS-XDB

This was one of my favorite projects. Imagine being able to ask a search engine any question in the world and it responds not with a list of websites where you might find the answer, but with an actual answer. That has always been the goal of a certain branch of artificial intelligence and I was lucky enough to work on that. An automated theorem prover takes provided facts, and attempts to prove a theory based on those facts. SPASS-XDB is an automated theorem prover that takes facts about the entire world (or at least the internet), and attempts to prove a proposed theorem or question. The problem is, you've always had to know how to talk to a theorem prover. AleXSI is an intermediate step in natural language input to theorem provers. It is a tool for building questions that you can ask SPASS-XDB. Since there is always ongoing research in this project, you may experience some occasional downtime, if that's the case, try the mirror. If you need some suggestions, click here.
AleXSI | Mirror | SPASS-XDB


Poker Game

A Java game that uses Swing and AWT components to build an interactive video poker GUI. This was originally an in-class project that was completely textual, but during some free time I expanded it to include graphical capabilities, so there are some bugs. Launchers were created by install4j Source | Windows | MacOS


A work-in-progress Java game starring elbert, the blue owl, who must save his forest from the evil lumberjack after he accidentally gets sent to a saw mill.


Memory Experiments

A series of experiments in the virtual memory system of a computer.
  1. Locating program text, bss, heap, and stack sections of the memory.
  2. Determining size of heap memory.
  3. Comparing how physical and virtual memory is allocated.
  4. How fast a single process allocates virtual memory and writes to physical memory.
  5. How fast multiple processes allocate virtual memory and write to physical memory.
  6. How swap space is used when no more memory is available.
Memory Experiment PDF

Monkey Jungle Research

Not exactly computer science. I did some research with Owl Monkeys at the DuMond Conservancy in Miami, FL where I attempted to prove that owl monkey courtship behavior changes with respect to how long the monkeys have been together. The thesis is posted for those with a scientific interest in the results, but for those who think monkeys are just adorable, there are pictures as well.
Paper | Monkeys 1 | Monkeys 2


In addition to my programming work, I also enjoy making digital artwork with Photoshop and Illustrator including websites, invitations, and posters.