research + work

My work at NRL and ACIN focuses on improving the reliability of tactical-edge networks, where there is significant data loss, churn, and latency. Particularly, I focus on the the development, implementation, and testing of epidemic protocols to increase the consistency of state information across the network.

ahoy

For my senior design project, I'm developing AHOY, an event-based simulation environment used to compare the effectiveness of different combinations of software agents, sensor models, and network configurations in real-world environments.

Google Code Page: http://ahoy.googlecode.com

naïve bayesian classifier

With Gail Rosen, I implemented a job-queuing system for the NBC website. This resulted in the journal paper NBC: the Naïve Bayes Classification tool webserver for taxonomic classification of metagenomic reads.

phpwatch

I am the lead developer of phpWatch, a free, open-source, web-based service monitoring system written in PHP. It includes features to query web services in a number of different fashions and notify the proper individuals through various means when a service is determined to be offline or malfunctioning. phpWatch has a rich API, allowing developers to create custom query and notificiation methods.

Additional: I published an article on the underlying technology in php|architect in September, 2008. It can be found here.

Demonstration: A working demo can be found here.

Website: phpwatch.net

mips fpga synthesis

With a couple of other students, I synthesized a simplified MIPS datapath on a Spartan-3E FPGA. We only implemented a subset of instructions including ADD, ADDI, JMP, and BEQ. The output was a simple 8-bit LED display.

Details: A wiki page detailing the project can be found here.

mips branch prediction

For a System Architecture course, I developed a history-table branch prediction method for the IF/ID stages of the MIPS pipeline which can greatly reduce the number of flushes needed for conditional jumps.

Details: When a conditional jump instruction enters the IF stage of the pipeline, instead of assuming the branch is not taken, this method uses the history table to lookup if the branch was taken in the past and acts accordingly. Because many conditional branches result in the same jump/no-jump result (e.g. in loops), this can increase the accuracy of preemptive instruction execution.

Schematic: The schematic for implementing such a feature can be found here.