Portfolio - Software Development

Description Links

TouchGraph LLC - Network Visualization

Since April of 2005, I have been working for TouchGraph LLC, developing a Java Library for visualizing and interacting with a variety of data networks.

The TouchGraph company website provides some free online demos of their software, which I helped to develop.
Online Demos




JP2PSim - A Scalable & Extensible Peer-to-Peer Network Simulator

This project involved the development of a scalable & extensible Peer-to-Peer network simulator in Java. This project was implemented as part of my Master's thesis.
Java Source Code
JP2PSim.zip [159k]
p2pThesis.pdf [2553k]

JGraphEd - A Java Graph Editor and Graph Drawing Framework

This project involved the development of a framework for graph editing and drawing in Java. The application allows the user to create arbitrary graphs, and apply a variety of algorithms to these graphs, such as linear time planarity testing, and linear time embedding of planar graphs on a linear-sized grid.
Online Demo
Java Source Code
JGraphEd.zip [182k]
JGraphEd.pdf [384k]

Genetic Programming Ant Colony Simulator

This project involved simulating an Ant Colony where ants forage for food and return it to their nest. Ants can lay pheromone on their way back to the nest to help other ants find food later. Options were added to the interface to use Genetic Programming to evolve the 'program' or set of instructions for the ants to follow to try to collect the most food.
Online Demo
Java Source Code
Ants.zip [36k]

A Graphical Java Implementation of PQ-Trees

This project involved the implementation of the PQ-Tree data structure with an accompanying graphical user interface which allows the user to visualize the reduction operation on the tree in a step by step manner.
Online Demo
Java Source Code
PQTree.zip [27k]
pqtreereport.pdf [252k]

A Parallel Algorithm for Answering Shortest Path Queries in Planar Graphs

This project involved the implementation of a new parallel shortest path algorithm for planar graphs. The algorithm was refined and extended during the course of the project. The implementation was completed under linux/solaris using the MPI (Message Passing Interface) parallel library. The algorithm was designed to run on either distributed or shared memory parallel computing models.
C++ Source Code
parallelsp.tar.gz [19k]
parallelsp.pdf [184k]

Detection of a Graph Representation of Road Networks from City Map Images

This project involved the design and implementation of a 'Map Detector System' where users can load sample images from files and detect the graph structure of any line patterns within the image. When applied to City Map Images, the resulting graph can be used to perform relevant calculations, such as the shortest path between any two street intersections.
Online Demo
Java Source Code
MapDetector.zip [327k]
mapdetector.pdf [596k]

Virutal Election Booth - A Secure, distributed online voting system

This project involved the implementation of a 'Virtual Election Booth' where voters can securely and confidentially request authentification to vote in an election, receive a list of candidates and submit a vote for a candidate of their choice. This was accomplished through the use of public license cryptography library that provided implementations of algorithms such as RSA public key crytography and Blowfish symmetric key cryptography.
Java Source Code
vElectionBooth.zip [662k]
413FinalReport.pdf [63k]

Distributed Sorting Algorithm

This project involved the implementation of a distributed algorithm for a modified version of a bucket sort. This project makes use of the DC5 simulator provided by Carleton University. The problem statement for the project as provided by the instructor of the disctributed computing course is available from the following url: 401-A4.txt

Sample input data for the system is available here: 401-input.txt
C++ Source Code
401-dc5-sort.zip [63k]