design intelligence

Source Code

Java

DFA Builder

This provides three classes that can be used as a framework for building Finite State Machines (otherwise known as Deterministic Finite Automata) of an arbitrary size. Also included is an example of how the framework classes can be extended to construct DFA's.

Please see "Finite State Machines - Part I" for an introduction to FSMs and Part II for an overview of this package.

Java

NetStumbler File Parser

This pair of classes came about after a late night conversation with a friend of mine. He was having some problems using Java's own file reading classes to parse a NetStumbler ASCII dump file and since I'd not really had the oppurtunity to use my "programming brain" for a while this seemed like a good exercise to start coding in Java again.

PHP

Tag Swarm Graph Class

This PHP class can be used (with some additional work) to generate 'tag swarms' (see an example).

Its essentially a modified 'spring graph' layout algorithm that I transcribed from Java into PHP (see the original applet) - with some alterations specific to the 'tag swarm' concept.

Java

TSP Algorithm Optimisation

This ZIP file contain 6 Java classes - each of which implements an algorithm that solves the Travelling Salesman Problem (note: They do not necessarily provide optimal solutions).

The classes demonstrate the effect that successive 'code design level' optimisations (i.e alterations to code structure rather than language or platform specific optimisations) can have on the performance of an algorithm.

This work was based on chapters in the book "Writing Efficient Programs" by Jon Louis Bentley that I discovered while completing my degree. The original code was written in Pascal so this is (as much as possible) a faithful reproduction of the code in Java.

I'd advise finding a copy of the book since, despite being 20ish years old, its still very relevant to coding practices today.

PHP

Genetic Algorithm Based Colour Scheme Chooser

This PHP source code was produced to accompany a small introduction to the field of Genetic Algorithms. It allows the user to interactively design a colour scheme for a website (or any other purpose) using the principles of Genetic Algorithms. A working example of the source code is also available.