Projects

I’ve started using github as my main project repository. My repo is here: http://github.com/cdave1

Other Stuff

Here’s selection of private projects and free software I’ve worked on over the years, big and small, in no particular order.

Tango

Link: Blog post
A WYSIWIG interface builder for OpenGL and OpenGLES games. No code available yet.

Sound System

Link: Unavailable – git server link down
Sound System is a C++ sound library for the iPhone OS and OSX, designed primarily for games. The library provides a simple interface for loading and playing a lot of sounds concurrently, via OpenAL and AVAudioPlayer. Supported formats: .wav, .caf, .aiff, .mp3, .m4p, aac.

My long term plan with this library is to make a completely free alternative to FMOD. Very early days…

FTGL ES

Link: http://github.com/cdave1/ftgles
FTGLES is a C++ library for rendering truetype and opentype fonts on mobile operating systems with OpenGL ES 1.1. It’s a port of FTGL.

The code includes several demo iPhone applications, and has support for iOS 4.

Multi Touch Screen (iPhone)

Link: http://github.com/cdave1/multitouchscreen
Multi Touch Screen is an Objective-c++ extension to the EAGLView. It was adapted from TouchScreen in the Oolong Engine. Its main task is to store Cocoa multi touch input in a buffer with the expectation that some other thread will repeatedly collect data from the buffer. This is mainly useful for apps that want to synchronize user input with rendering.

Coin Toy

Link: www.cointoy.com
Coin Toy is an iPhone app that shows money being earned in real time, in the form of coins falling down the screen. There are several versions currently out on the app store.

Sine tables

Link: csin.c
Sine tables vs. math.h sine functions in c. Linux only.

Distributed Game Of Life

Link: DistGameOfLife.tar.gz
Ron Conway’s Game-of-Life, but with a play area that can distributed across a grid of computers. The program creates a set of agents on as many machines as you specify and then runs portions of the game’s “playing area” on each machine. The agents on each machine co-ordinate between themselves to ensure the playing area is updated correctly and consistently. Written on java, with an architecture that is provably free from deadlock and starvation. Tested on a network running over one hundred machines, which is probably at the limit of the program’s usefulness.

10 Simple Algorithms

Link: algorithms.py
10 simple algorithms written in python, with an emphasis on recursion.

Starterbase

Link: www.starterbase.com Unavailable
A sort of database-as-a-service application on the web. Written in PHP and python. Has around 3000 users (as of end of 2007).

Update: I shut the service down at the beginning of 2009. I might get a demo up and running again in future. I will also open-source the code, although it does need cleaning up. Here’s a couple of screenshots of the app in action.



Prolog: Tiny quicksort

Link: qs.prolog
Just a really compact quicksort function written in Prolog.

www.bandyboo.com

Link: Source code
DVD/Games/CD sharing service that never really got off the ground. It uses the Amazon API. You could build up your collection and then share them with other people.

Screenshot:

Peachy – a web based command line tool

Link: Source code
A web application for accessing websites remotely via a command line interface. For example, you could type search -g «query» to search google or del -rss «tag» to get the urls of a tag at del.icio.us as an rss feed. Allowed you to build your own commands and use other’s. Just a fun thing that took a couple of nights.

newstoday.co.nz and sportnow.co.nz

Link: www.newstoday.co.nz, www.sportnow.co.nz
A digg-like news website aimed at New Zealanders. Mainly a way to experiment with artificial intelligence stuff behind the scenes (Bayes filters and Boltzmann machines). Mostly written in python with a php front end, using Totara.

Moviehouse

Link: www.moviehouse.co.nz
Moviehouse was a DVD retail business I started in 2003 and ran on the side for a few years. Allowed me to amass a nice DVD collection and a car. Sold 2005, but it’s still running… was shutdown in August 2008.

Disk Simulator

Link: DiskSim.tar.gz
A hard disk head simulator for two seeking schemas, SST and CSCAN. Written in Java, and mainly used to compare the two schemas under different conditions.

Tetris

Link: Source code
A tetris clone written in C++ using directx.

3D Tetris

Link: Source code, Executable
Modified the tetris above to use 3D blocks. Though the code is obviously quite a lot different.

Totara

Link: Source
Totara is a framework I wrote to allow me to quickly put php-based websites together. It had all the things you need to do it – user management, an ORM layer, eCommerce libraries, security and more. It went through 4 versions over the years, and I used it to power a lot of the sites listed here. It’s been superseded by other web-app frameworks that now have significant contributors in wider programmer community. I missed the boat a little bit. Lesson learned: when you have something good that you won’t be able to make money off directly, then you should open source it as soon as possible.

Sokoban Game plus Solver

Link: Source code
Sokoban game (interface code was written by someone else), with a solver using various search algorithms and heuristics to solve the game without hogging all of your CPU.

Simple Bayes Classifier

Link: Source code listing
A compact naive Bayes classifier written in python with some training and testing files.

Dynamic Decision Tree

Link: Source code listing
A python program that can take classification information (in the source code, hepatitis symptoms) and then create a decision tree to predict the outcome of future scenarios.

nachos – Operating System

Link: Source code listing
Nachos is a bunch of header files from the University of California that provide a blueprint for creating an operating system from scratch. I introduced concurrency control structures, multi-threading, user-level programs (in c), and a file system using the same inode structure used by unix-based operating systems. The code is in C++ and only appears to run under BSD.

Some haskell data structures

Link: Source code listing
A Haskell implementation of a polymorphic queue and stack, as well as breadth first and depth first search algorithm implementations for searching through graphs. Oh yeah, both search algorithms use the stack and queue.

Not too exciting unless you’re an algorithms geek, but I guess it shows how compact Haskell code is. Haskell is awesome.

Genetic Programming with jgap

Link: Source code listing. Requires jgap
Some sample programs for generating classification programs using jgap, which uses the technique of genetic programming to generate the programs. It’s a very interesting field and something I want to really explore further at some point. My sample programs are only designed for simple regression analysis and AB classification tasks.

A perceptron implementation in python

Link: Source code listing
A perceptron that is used for classification of a set of images of noughts and crosses. The perceptron must be initially trained to get the weightings correct before it can be used to classify unseen data – see the README in the .tar.gz for more.

N puzzle solver

Link: Source code
A python program that generates a random N puzzle and then solves it, showing the cycles, states and steps used to find the solution. Uses a number of common heuristics and search algorithms.

Unfinished java grep clone

Link: Source code listing
A java program that mimics grep. I didn’t get far with it – it doesn’t have any of the posix bells and whistles and it can’t be used to check files. It does basic regex parsing well enough, however.

www.vendory.com

Link: Source code
Vendory was an eCommerce platform that was intended for SMEs. I had big plans for it, but I decided to abandon the project when I realised that I wasn’t really interested in selling eCommerce software (which is really quite hard in New Zealand). Written in php – the source code in the above tar file is missing some eye candy.

www.tagworldcup.com

Link: Source code
A ridiculous get-rich-quick scheme that failed miserably. You could buy keywords on the website for $100, and once you did you would “own” that keyword forever. We attempted to piggyback on the tagging craze that was happening at the time, as well as the soccer world cup (hence the name, tagworldcup).

Tiny Register Machine Interpreter

Link: Source code listing
For language geeks only. This is a prolog interpreter for register machine programs. It will take a register machine program listing, interpret it, and then return the result in the second register as per convention.

K Nearest Neighbour

Link: Source code listing
A very short python program implementing the k-nearest-neighbour classification algorithm.

www.webdepot.co.nz

WebDepot was a rapid website design and development company.

www.comet.co.nz

Link: Source code
Online DVD Rental concept along the lines of Netflix. Got to the “beta” stage before being shut down due to the insane running costs.


There’s a gallery of screenshots here.

UniTutor

Link: Image
Unitutor was a tutor-student matching business a friend and I ran for two years while at university. It did okay. I don’t have the source code anymore.

The Daily Business Review

Link: Website Archive
Started in my first year of varsity in 1999. Ran pretty well, but apparently I was using the name of a semi-famous magazine in the USA. Their lawyers fedexed an overnight cease-and-desist letter to me. I didn’t know any better, so I shut it down…

RMSys

A payroll program I wrote in Java at uni. Included its own webserver because I didn’t have the hardware to run java server pages at the time. I couldn’t find a working version or any screenshots, but here is some surprisingly well-commented sample code and a hilarious .plan file.

Leave a Reply