Projects
2015-present
fixed_point - C++ Fixed-point Arithmetic Library
This project stemmed from a desire to more accurately control the range and precision of variables used in simulation. It quickly came to consume all spare dev time and become part of an effort to standardize fixed-point arithmetic in the C++ standard library. It consists of a reference implementation and two proposal papers, P0037 and P0381.
2009-present
Crag - Real-time Fractal Landscape Generator
This is a long-term project to simulate planetary bodies down to fine detail in real-time. It's also a place for me to experiment with AI, C++, OpenGL and development skills in general.
Crag is hosted on GitHub and includes downloads for Android and Windows as well as instructions for building on Linux and Raspberry Pi.
A very rough PNaCL prototype for Chrome is available here.
2010
Plasma - Android Eye Candy
Over the 2010 Christmas break, I decided to dabble in development for the Android mobile phone platform. The result is a quirky app that draws pretty colours on the screen. You'll need Android 2.2 to run it. (You also need to change the option in your setting to allow non-market apps to run.)
2007
Rocket - An SVG Demo
Fly through space in a rocket ship powered by Scalable Vector Graphics.
Lottery Number Generator - CA Route to Riches
Callular Automata are simple systems which produce complex results. Because of this, they make pretty good random number generators. I've written a C.A. in C++ which is designed to produce numbers for the Arizona lottery.
I've also written a description of how it works and why I even bothered.
Galleria - Photo Album Bowser
I greatly enjoyed teaching myself PHP (Php: Hypertext Preprocessing). This site is constructed from PHP scripts.
My first PHP project was prompted by the increasing number of photo albums I generated after I moved abroad. A simple script, tentatively named galleria.php, scans a given web folder looking for sub-folders which contain photo albums that were created with gThumb. For each of these albums, it displays a random thumbnail and a link to the album.
You can see it in action on my gallery page. (Hit 'reload' in your browser to see different random thumbnails.)
2006
Web Authoring - (this)
This site is my home on the web. It usually gets a makeover at times when I'm job hunting but it also teaches me how to write web pages, how to write scripts and how things like xml and css work. I like to keep my site simple and standards compliant.
Learning to write web pages is pretty easy compared to programming and every page on the internet provides an example of how it's done. (Just right-click and select the 'View Source' option so see what a page is made of.) A pretty good place to start is W3 Schools although it's a bit heavy on the adverts. Just for you, here's a blank page to get you started!
Until last year, I hosted my site on a home PC running the Apache web server but decided that this was too much hastle for someone who doesn't even have a static IP address. Now I use Apache at home only to test the PHP scripts that hold my web pages together.
When I get the opportunity, I build sites for friends and family.
2003
Loza - Evolving Equations
Loza is a simple algorithm for evolving equations. The equations can be used for a variety of purposes. The wallpaper on this page was generated using a version of Loza written a few years ago in qt. Here's a screenshot of that program in action:
More images can be found in my picture gallery.
2002
Java Mandelbrot Generator
Here is a very simple Mandelbrot generator which I wrote in order to learn the basics of Java applets.
Click on the image to zoom in. If you have one of those trendy mice with more than one button, right-click to zoom out and middle-click to re-center the image. (The source code is currently burried away somewhere in my backups.)
2000
Real-Time Ray Tracing
I have a long history of cornering graphics programmers at parties and talk at them about ray tracers. Read a typical (but largely dated) rant on the subject and marvel at the gawky output from my last ray tracer (for Windows).
1995
Dodgems: Evolved behaviour
Dodgems is a project I wrote at University whilst exploring the wonders of Microsoft Visual C++ (now Visual Studio.NET). The subjects of the simulation are animats (artifical animals) names dodgems. Dodgems have rudimentary sensory and locomotive abilities which are hooked up to a neural network which acts like a brain.
When dodgems collide, they exchange energy. When a dodgem runs out of energy, it dies. When a dodgem dies, it is replaced with a new dodgem. The new dodgem inherits characteristics from two randomly chosen dodgems. In this way, dodgems are encouraged to evolve behaviour which causes them to preserve energy by colliding with other dodgems in the right way.
If have Windows or Wine, you can try Dodgems for yourself.