David Bond's Portfolio

Welcome to my portfolio. This page shows off many of the programming related projects I have participated in, in the past. All source code for these projects is available upon request unless overwise noted.

Test Monkey - The UNH-IOL Protocol Testing Software Package

Fast Facts

  • Written By: A team of software engineers including David Bond
  • Written In: C, Java, Tcl
  • When Written: 2001-Present
  • Uses: Eclipse, Ant, Autotools (Automake, Autoconf, Make)
  • Purpose: To generate and receive arbitrary packets from a network

As a software engineer I have played an active role on a team of seven other engineers working on a system used to generate and receive arbitrary packets from a network. This system runs over a client server based model with the client written in object oriented Java and a server written in C.

I have worked on the client side writing Java in both maintenance and extension roles in the Eclipse IDE. The client itself interacts with a TCL and Expect script interpreter to implement test cases needed for verifying the conformance of networking devices to standards.

On the server side I was the software architect in charge of the C code for the server. I architected and designed a multithreaded, real time, easily extendable, high availability architecture. Additionally, I was in charge of managing the cross platform autotools build process. Part of the architecture of this system consists of a command pattern for receiving protocol messages from the client. I was responsible for implementing a set of commands for the client to connect to a remote socket. During this process I implemented a TCP/IP stack.

Additional information about Test Monkey can be found on the UNH-IOL Test Monkey Page.

Test Monkey Script

A screen shot of the Test Monkey Scripting Utility

Test Monkey Sniffer

A screen shot of the Test Monkey Sniffer

TRILL Nexus

Fast Facts

  • Written By: David Bond
  • Written In: C++
  • When Written: 2010
  • Uses: Autotools (Automake, Autoconf, Make), Boost, STL
  • Purpose: TBA

This is a to be announced product I am working on in my spare time. For those interested it is related to the IETF protocol TRILL.

The MAI Framework - A framework for research in artificial intelligence

Fast Facts

  • Written By: David Bond with a few algorithms coded by Niels Widger
  • Written In: C#
  • When Written: Senior Year College - 1st Year Grad School
  • Uses: XML, .NET, OpenGL, Mono, Visual Studio
  • Purpose: AI Research

I developed this framework for research I have done in AI. While the screenshots I show here have MAI running on in single agent path finding it has a full objected oriented design that decouples the algorithms from the domain and heurisitics being used. The code base for MAI has another domain, STRIPS planning, meaning that given the right heurisitics A* will work on path planning as well as STRIPS planning. The algorithm designer doesn't have to worry about the domain. The framework can be run in batch mode to produce output for graphs or in a visualizer mode to debug or demo the algorithms being developed. Here are a set of pictures with the path planning MAI visualizer.

Dynamic World Path Planning

Here is an example of path finding in a fully visible dynamic world with an added real time constrait.

Dynamic World Path Planning

Along with supporting HOG framework files MAI also can load a specially designed MAI xml format. This format has features such as prescripted changes to allow consitency between batch runs of maps.

Unknown World Path Planning

Here is an example of path finding in an initially unknown static world with an added real time constrait. The map here is an adaption of the War Craft 3 Moonglade map.

Dynamic World Path Planning

The visualizer supports many debugging features for algorithms that show some of the underlying data structures. This is useful for programmers to attain a better understand of how to improve the algorithms being developed.

Monopoly

Fast Facts

  • Written By: Tim April, David Bond, and Niels Widger
  • Written In: Java
  • When Written: Sophomore Year College
  • Uses: Swing
  • Purpose: Class Project

I created this monopoly game as part of an undegradate class, Introduction to Software Design and Development, at the University of New Hampshire. I was mainly responsible for the AI, Cards, Decks, and Deeds, however it was a team effort. I was specifically in charge of programming the Strategic AI, for this game. I had no formal experience in AI at the time of writing this program, so the methods and algorithms used were simply ones that I invented to handle the problem at hand. This is how I described the AI design in my code comments:

This AI works via a variety of methods. First, it attempts to make use look up tables to estimate various probabilites and to estimate what the best choices would be. The tables are calculated at the first instantiation of this class to prevent overload with constant calculation. It also attempts to keep a budget of money it will need. This way it doesn't spend to must money on houses and then suddenly have itself forced into selling them.

While it wasn't perfect, the AI did quite well.

Monopoly Screenshot
Screenshot of the Monopoly Board

UML Diagrams
Screenshot of the Monopoly Board

Probablity Table
One of the lookup tables used

I have included the program here for download. If you are in windows with Java 1.6 installed double clicking on it should open the program. Otherwise open it via the command line useing java -jar Monopoly-v1.0.jar.

Download Monopoly

MSIM

Fast Facts

  • Written By: David
  • Written In: Java
  • When Written: Sophomore Year College
  • Uses: Assembly Language
  • Purpose: Fun

MSIM is a program I made in my spare time for fun. Technically we had an assignment in my CS 520, Assembly Language Programming and Machine Organization class, and I decided to expand upon it. The teacher in this class had his own assembelly langauge and the final project was a simulator that ran the machine code. The in-class project was done in C but I did the one in my spare time in Java with an OO design. It iterates through a binary file in a fetch execute cycle until program termination. This version of the simulator has the added bonus of being able to step through the code, add break points to the code, and of course graphically displaying the execution of the code.

MSimulator
Screenshot of 'MSim'

To run this program you need an object file, which can be selected at runtime. You can download an object file to toy with this program. Like my last program this can be run in windows by double clicking on it, or via the command line.

Download 'MSim'

Websites

I have worked on a number of websites throughout the years. Here are some of them and where I was involved with them.
Website Type Techology Contribution
Mokon.Net Personal Blog and Website XHTML, C#, MYSQL, JavaScript, XML, LINQ, RSS, AJAX, and CSS. Formerly PHP and Java. Sole Developer/Content Provider
AmandaAndDavid2011.com Personal Wedding Website XHTML, C#, CSS Sole Developer/Content Provider
IPv6ReadyLogo.org IPv6 Forum Ready Logo Website XHTML, MYSQL, JavaScript, PHP, and CSS. Sole Developer, Site Maintenance
GameReplays.org Gaming Community Website Staff(Content Provider)
HeavenGames.com Gaming Community Website Staff(Content Provider)

Publications

Refereed Conference Publications

  • Bond, David. Widger, Niels. Ruml, Wheeler. Sun, Xiaoxun. Koenig, Sven. “Real-Time Search in Dynamic Worlds,” International Symposium on Combinatorial Search (SoCS-10), 2010.

Un-Refereed Papers

  • Bond, David. Widger, Niels. "Dynamic Real Time Search" CS 980, Computer Science Department, University of New Hampshire, Durham, NH, December 2009.
  • Bond, David. "Backward Real Time Heuristic Search in Grid World Pathfinding" CS 830, Computer Science Department, University of New Hampshire, Durham, NH, May 2009.
  • Bond, David. "Open Shortest Path First Guide" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, July 2008.

Books

  • Bond, David. "The Way of the Expert: Age of Empires III" United States of America: CafePress, 2006.

Test Suites

  • Bond, David. "TRILL Conformance Test Suite" Bridge Functions Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, June 2010.
  • Bond, David. "TRILL Interoperability Test Suite" Bridge Functions Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, December 2009.
  • Bond, David. "Internet Group Management Protocol Snooping Interoperability Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, July 2008.
  • Bond, David. Schwendimann, Greg. Winters, Timothy. "Internet Group Management Protocol Version 3 Multi-System Interoperability Test Suite" IPv4 Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, March 2007.
  • Bond, David. Kistruck, James. "Internet Group Management Protocol Version 3 Conformance Test Suite" IPv4 Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, October 2007.

Standards Contributions

  • Perlman, R., Eastlake, D., Dutt, D., Gai, S., and A. Ghanwani, "RBridges: Base Protocol Specification", IETF. Work in Progress (Approved to become RFC), March 2010.

Test Suite Contributions

  • UNH-IOL. "Port-Based Network Access Control 802.1X Interoperability Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2010.
  • UNH-IOL. "Intermediate System to Intermediate System Operations Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2009.
  • UNH-IOL. "Open Shortest Path First NSSA Option Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2009.
  • UNH-IOL. "Border Gateway Protocol 4 Operations Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2009.
  • UNH-IOL. "Protocol Independent Multicast – Sparse Mode Operations Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2009.
  • UNH-IOL. "Label Distribution Protocol Interoperability Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2009.
  • UNH-IOL. "Application Security Interoperability Test Suite" IPv4 Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2008.
  • UNH-IOL. "Open Shortest Path First Operations Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2008.
  • UNH-IOL. "Protocol Independent Multicast – Sparse Mode Interoperability Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2008.
  • UNH-IOL. "Routing Information Protocol Version 2 Multi-System Interoperability Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2008.
  • UNH-IOL. "Routing Information Protocol Over IPv6 Multi-System Interoperability Test Suite" Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2008.
  • UNH-IOL. "Distance Vector Multicast Routing Protocol Operations Test Suite" IPv4 Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2007.