my musings 

Facebook Twitter LinkedIn YouTube E-mail RSS

David Bond’s Portfolio

Welcome to my portfolio. This page shows some of the things I have worked on. It shows projects both personal and professional. Please visit my github account to view some of these projects. I will link to those when appropriate. This page is not a resume, my LinkedIn account is my online resume.

Professional Interests

  • Computer Networking
  • Artificial Intelligence
  • Software Engineering
  • Business
  • Start-Ups

Personal Interests

  • Photography
  • History
  • Genealogy
  • Traveling
  • Economics
  • Finance
  • Running
  • Hiking

Mokon Financial

Fast Facts

  • Written By: David Bond
  • Written In: C++
  • When Written: 2013-2015
  • Uses: Boost, STL, Cereal, Json
  • Purpose: Financial Management

For a while now I have maintained an excel/open office spreadsheet for my personal finances. I’ve never found an online system that fits all of my desires. A spreadsheet can be limited though and so I have undertaken a project to create a C++ program to manage my finances. The code is currently not publicly available but my intentions are to release it as an open source project once I like what I have..

Brocade Vyatta 5400/5600 vRouter

Fast Facts

  • Written By: A team of software engineers including David Bond
  • Written In: C, Perl
  • When Contributed: 2013-2015
  • Uses:VIM, POSIX, Linux (Debian), GIT
  • Purpose: Virtual Router

At Brocade I contributed to the Brocade Vyatta 5400/5600 vRouter as a part of the team from the Vyatta acquisition. More information about these can be seen on the Brocade Page. In particular I focused on Routing (BGP, PIM, OSPF).

Mokon Environment

Fast Facts

  • Written By: David Bond
  • Written In: Bash, etc
  • When Written: 2005-2015
  • Uses: Misc.
  • Purpose: Linux Environment, Aliases, Dotfiles, etc

This is an ongoing project of mine which contains a set of tools I use to manage my Linux environment. It does everything from loading alias and dotfiles to changing gnome to fit my preferences. I am constantly extending it and it can be viewed on GitHub.

Mokon Fitness

Fast Facts

  • Written By: David Bond
  • Written In: C++
  • When Written: 2013-2014
  • Uses: XML, Boost, etc
  • Purpose: Fun & Fitness

There are many fitness related calculators on the web which are a pain to re-run every time you want to see a result. This was my solution. It is a C++ program which takes an xml file with standard statistics and it run calculations on those stats. All its source can be viewed on GitHub.

Mokon Common

Fast Facts

  • Written By: David Bond
  • Written In: C++, etc
  • When Written: 2010-2014
  • Uses: Boost, Autotools, etc
  • Purpose: Reduced code duplication

I was finding that on many of my personal projects I was duplicating code. To prevent this I created common package that can be shared between my programs. Its source can be viewed on GitHub.

IBM System Networking Switch

Fast Facts

  • Written By: A team of software engineers including David Bond
  • Written In: C
  • When Contributed: 2011-2013
  • Uses:VIM, POSIX, Linux, Clearcase/Cleartool
  • Purpose: Network Switching

At IBM I contributed to the IBM System Networking products which includes a variety of switches such as IBM RackSwitch G8000, G8052, G8124E, G8264, G8264T, and G8316 to name a few. More information about these can be seen on the IBM System Networking Page. I in particular contributed in a team built up to deliver a TRILL solution where I was the TRILL protocols subject matter expert.



IBM RackSwitch G8264
A picture of a IBM RackSwitch G8264

 

Mokon Software Project Estimator

Fast Facts

  • Written By: David Bond
  • Written In: C++
  • When Written: 2010
  • Uses: Boost, etc
  • Purpose: Software Engineering

I took a class on software project management and wanted to be able to run some of the formula’s it taught on my projects. This is a package which provides that ability. All its source can be viewed on GitHub.

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: 2006-2011
  • Uses: Eclipse, Ant, Autotools (Automake, Autoconf, Make), SVN, CVS
  • Purpose: Network Testing

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 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 multi-threaded, 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. The tool has since been renamed to INTACT.



Test Monkey Script
A screen shot of the Test Monkey Scripting Utility


Test Monkey Sniffer

A screen shot of the Test Monkey Sniffer

 

TRILL Wireshark Dissector

Fast Facts

  • Written By: David Bond
  • Written In: C
  • When Written: 2013-2014
  • Uses: Wireshark
  • Purpose: Needed TRILL dissector for Wireshark

I was working on TRILL at the IOL and wanted to be able to view TRILL frames in Wireshark. At the time there was no dissector for TRILL so I created on and got it approved on the open source project. I had also created a TRILL-ISIS dissector at the time but for some reason I never submitted it. You can view the dissector on the Wireshark Git Repository of course view the commit history to see changes coming from other people.

Gas Analytics

Fast Facts

  • Written By: David Bond
  • Written In: C#
  • When Written: 2009
  • Uses: XML
  • Purpose: Fun

This was a fun little program I did to analyse my car’s gas usage. I no longer have it up anywhere though. It took a xml file with gas receipts recorded in them and computed a large variety of statistics on them.

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 heuristics being used. The code base for MAI has another domain, STRIPS planning, meaning that given the right heuristics 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 constraint.


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 pre-scripted changes to allow consistency 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 constraint. 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.

All the source code for this project can be viewed on GitHub. Here is a video I used at a conference showing this in action:

Scrabble

Fast Facts

  • Written By: David Bond
  • Written In: Java
  • When Written: 2007
  • Uses:
  • Purpose: Fun

One day while on vacation I was playing scrabble against some friends and loosing. That night I decided to program a simple brute force Scrabble solver and I stayed up until 3 AM hacking it together using a spell check dictionary I had on my computer. The next day the computer was able to beat whomever it played against and I upgraded it with the official scrabble dictionary downloaded from the library’s wifi connection. All the source is in Github

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 undergradate 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 probabilities and to estimate what the best choices would be. The tables are calculated at the first instantiate 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.



Screenshot of the Monopoly Board
Screenshot of the Monopoly Board.


Monopoly UML

The UML diagram for the Monopoly program.


Probability 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 using 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 assembly language 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’.

Falcon HFx Mobile Price Advisor

Fast Facts

  • Written By: David
  • Written In: Java
  • When Written: 2010-2011
  • Uses: Android SDK
  • Purpose: Mobile pricing

This was from some contract work I did. It was an android application front end for strategic pricing.



MSimulator
Picture of Falcon HFx Mobile Price Advisor.

 

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 Technology Contribution
Mokon.Net Personal Blog and Website WordPress, Formerly XHTML, C#, MYSQL, JavaScript, XML, LINQ, RSS, AJAX, and CSS, and before that 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.

Standards Contributions (Author)

  • Bond, David, Manral, Vishwas. “RBridges: Operations, Administration, and Maintenance (OAM) Support”, IETF. Work in Progress, March. 2012.
  • Li, Y., Bond, David, Manral, Vishwas. “OAM tool for RBridges: Multi-destination Ping”, IETF. Work in Progress, October. 2011.
  • Senevirthne, Tissa. Bond, David. Perlman, Radia. Etal. “Requirements for Operations, Administration and Maintenance in TRILL”, IETF. RFC 6905. March, 2013.

Standards Contributions (Acknowledged)

  • Perlman, R., Eastlake, D., Dutt, D., Gai, S., and A. Ghanwani, “RBridges: Base Protocol Specification”, IETF. RFC 6325, July 2011.
  • Eastlake, D., R. Perlman, A. Ghanwani, D. Dutt, V. Manral, “RBridges: Adjacency”, IETF. RFC 6327, July 2011.
  • Perlman, R., Eastlake, D., Li, Y., Banerjee, A., Fangwei, H., “RBridges: Appointed Forwarders”, IETF. RFC 6439, November 2011.
  • Perlman, R., Eastlake, D., and A. Ghanwani, “RBridges: Multilevel TRILL”, IETF. Work in Progress, March 2011.

White Papers

  • Bond, D., “TRILL Deployment Nears”, Bridge Functions Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, September 2010.

Books

  • Bond, David. “The Way of the Expert: Age of Empires III” United States of America: CafePress, 2006.
  • Bond, David “The Genealogy of Our Family” United States of America: LuLu, 2014.

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.

Test Suite Contributions

  • UNH-IOL. “IEEE 802.1AE-2006 & 802.1X-2010 MACsec Conformance Test Suite” Routing Consortium, InterOperability Laboratory, University of New Hampshire, Durham, NH, 2010.
  • 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.

Speaking Engagements

Contributed Talks

  • Real Time Search in Dynamic Worlds, International Symposium on Combinatorial Search (SoCS-10), Atlanta GA

Presentations

  • Real Time D* Lite: Initial Results, UNH CS 980, October 15th, 2009
  • Backward Real Time Heuristic Search in Grid World Pathfinding, UNH CS 830, May 13th, 2009
  • Multicast & You, UNH CS 595, September 23rd, 2008
  • C to D, UNH CS 595, October 11th, 2008
  • LINQ, UNH CS 595, December 4th, 2008
  • Transparent Interconnection of Lots of Links (TRILL): An Overview and Research Opportunities
  • UNH CS ACM, March 11th, 2010
  • UNH CS 980, February 24th, 2010
  • UNH IOL, January 21st, 2010
  • TRILL & Perspectives on Standardization Efforts, UNH CS 925, November 19th, 2010

Events Organized

  • IOL Tour, IEEE Computer Society NH Chapter, February 22nd 2011
  • IOL Tour, IEEE Computer Society Boston Chapter, August 21st 2010
  • TRILL Interoperability Plugfest: UNH IOL, August 3rd – August 5th 2010
  • TRILL: An Overview and Research Opportunities, UNH ACM, March 11th 2010
  • Introduction to Make, UNH ACM, March 4th 2010
  • Silver Tech Presentation, UNH ACM, October 26th 2009
  • The Serious Game Industry, Muzzy Lane Software, UNH ACM, September 29th 2009
  • IOL Tour, IEEE Computer Society Boston Chapter, June 13th 2009

Awards

  • IOL Star for Meritorious Service, January 2009, August 2009
  • UNH CEPS Graduate Fellowship, 2009
  • National Prime Users Group Scholarship, 2008
  • S. Robert Levine and Craig R. Benson Scholarship, 2006, 2008
  • The National Science & Mathematics Access to Retain Talent Grant, 2007-2008
  • Wagner-Hosser Scholarship, 2005-2008
  • DAR Geraldine Olmstead Scholarship, 2005-2008
  • John B. and Martha M.W. Zocchi Scholarship, 2007
  • Fred G. and Gertrude A. Howell Scholarship, 2007
  • William H. Greenough Scholarship, 2007
  • Phyllis F. Hazen Scholarship, 2005-2006
  • New Hampshire Charitable Foundation Scholarship, 2005-2006
  • McIninch Scholarship, 2005
  • Gwen and George Eckman 60th Anniversary Scholarship, 2005
  • Certificate of Educational Development National, 2003
  • Charles W. Phillips Award, 2001
  • Candia Militia History Award, 2001

Leave a Reply

Your email address will not be published. Required fields are marked *