Hello, World!

Welcome to my sample page. If you're here you probably got a link from my résumé. I have mainly been a developer for console video games. I can't show you the code I wrote for my employers. I don't have it and if I did I don't think they'd like it. I do have some personal projects which you can see here on the web.

Graph

I wrote a very simple Javascript graphing utility which you can see here. I didn't write it for any particular reason, I just felt like it one day. I think it looks neat.

The sample data is a random walk. The value starts at 50 and is interpreted as the chance that the value goes down in the next step. If it doesn't go down it goes up. There is no clamping to make sure that the value is between 0 and 100. If it exceeded the bounds it would run away. That's very unlikely though. I've never seen it happen.

Flock

This is a WebGL flocking demonstration. I wrote it as a prototype for a contract job I did once. It's basically an implementation of the classic Boids.

If it all looks like nonsense then you might want to check if WebGL is working at all in your browser by looking at the samples here. I mention because when I set out to put this together it wasn't working on my laptop at home, although it did work on my phone.

Rigid Body

Here is another one I wrote for fun. It's a simple rigid body simulation with a sphere bouncing inside a rectangular room. You can use your keyboard to move the camera around, push the sphere, freeze time, and turn the gravity on and off. I originally wrote it in C++ for the old fixed pipeline OpenGL. I ported it to work with emscripten, also for fun.

This is a toy. Collision resolution is done by backing up to the time of the collision, figuring out the response, and then restarting the simulation at that time. Real simulations usually generate a series of constraints over a short timestep and then solve for them all at once. I have made no attempt to ensure numerical stability.

The same caveat about WebGL applies as for Flock. Unlike the previous two samples this is not web native so you can't just “View Source”. The source is available here.

Writing Contract

My wife is a member of a writing group and they wanted to keep each other accountable even in the times between meetings. I wrote this simple software to allow them to promise some certain level of performance and then track their progress. It may be a bit confusing because it was tailored specifically for its four users.

It's a basic LAMP CRUD application like you used to see everywhere before people started using things like NodeJS and Ruby on Rails to make their CRUD. The source is here.