-Demonstrations-
I'm more interested in discovering new technologies than producing software applications for end users. Most of the software I develop is in the form of javascript libraries, and I use these demonstrations to showcase what particular libraries (or combinations of libraries) can do.
3D Hero

This is a 3D version of hero. It uses the same rules for movement, but applied in three dimensions. It uses the 3D engine from three.


The movement rules are based on a social game. It is played by a room full of people. Each person chooses someone to be their hero and someone to be their villain (but don't tell them). Then, each person tries to position themselves in the room such that their hero is between them and their villain.

3D Tesla

This is a 3D lightning demo. It uses a similar method for drawing lightning as tesla. Lightning starts around the outside of a sphere and works its way to the centre by sampling a collection of random points around the current point and choosing the one that gets it closest. The position of 3D points on the screen are calculated by the same system used in three.

Box Illusion

I wrote this while waiting for a plane in Sydney Airport. It uses semi-transparent faces drawn in an arbitrary order to give the illusion of solid faces. All external surfaces are white because there are always 2 layers of surfaces drawn overlapping. Interior surfaces only have 1 layer, making them appear grey over the black background.

Button

This is a proof of concept of AJAX. It's a really simple system with a button that is either on or off. Anyone currently on the page gets kept up to date with the button's status. Anyone currently on the page can change the state of the button by clicking on it.

Cell

Each new row of hash characters is based on its preceding row. There are a set of rules for which positions will have a hash and which ones won't.

Dots

Each dot starts in a random position. Then, each dot samples a few possible next positions and chooses the one that puts it such that its x, y values best fit a particular mathematical function.

Fractal Demo

This was the first fractal app I wrote. It uses the first version of the Fractal Framework. Each repetition rotates at different rates so the entire sequence takes a long time to repeat.

Fractal Cubes

This combines the 5th version of the fractal framework with the 3D engine used in three. It required several modifications to the framework, including a linear map to calculation the rotations of shapes.

Fractbox

This uses the 5th version of the fractal framework. Prior to this framework, fractals could only be constructed from repetitions of lines. The 5th fractal framework adds the ability to construct fractals from repetitions of shapes. This is a demonstration of the framework's ability to construct fractals from shapes rather than just lines.

Gravity Demo

This simulates Newton's Law of Gravitation to move particles around in a 2D environment. Collisions of particles result in their combination.
The UP arrow zooms in.
The DOWN arrow zooms out.
The RIGHT arrow increases the size of each particle.
The LEFT arrow decreases the size of each particle.

Heart

This uses colour to analyse functions of 2 variables. The range of z values can be chosen by a scale.

Hero

This models a dynamic system, where each dot is randomly assigned a hero dot and villain dot, then moves to position itself such that its hero is between itself and its villain.


The movement rules are based on a social game. It is played by a room full of people. Each person chooses someone to be their hero and someone to be their villain (but don't tell them). Then, each person tries to position themselves in the room such that their hero is between them and their villain.

Jewels

Blocks fall from the top row until they land on another block or reach the bottom row. If there are consecutive groups of blocks of the same colour containing 4 or more blocks.

Lex

This is a command driven app which evaluates several different mathematical functions. There is a help page with a list of commands. It supports the nesting of functions.

LowRes

This is the 3D fractal framework I made in early 2011 with the canvas line drawing function replaced with the pixelated line drawing function.

Mandelbrot

This shows the region of the complex plane in the Mandelbrot set. There is also a text only version.

Matrix

This is a demo of the matrix feed using only ASCII characters.

Merry

The only application of the 4th version of the fractal framework. It introduced polar coordinates to make it easier to specify fractals. It also uses code from the snow demo.

Message

This is a demonstration of a simple way to send messages through with ajax. The text syncs with the server every few seconds.

Pixbox

This demonstrates the ability to pixelate graphical demos. The line drawing functions of HTML canvas were rewritten to give control over the size of pixels. This is a pixelated version of fractbox. Most of the code from fractbox was reused for this demo.

Pixtree

This is a demo of pixelation of fractals. The 5th version of the fractal framework is used with an alternate line drawing method.

Rave Legacy

Ray Cast Demo

This shows how ray casting works. Each ray is represented graphically, as are the intersections of each ray with objects.

Shadows

This demonstrates real time ray casting. There is a moveable light source in the centre. Obstacles can be placed by clicking in empty space.

Snow

This is a heavily modified version of the second fractal framework. It draws many different snowflakes on the screen, and generates new ones when they move off the screen.

Storm

This uses the 3rd version of the fractal framework to draw lightning, occasionally forking. Sound can be enabled by clicking on the link at the bottom of the page.

Tesla

This was the first app on stevebob.net. It was made by accident when trying to write vines. The lightning effect is achieved by taking several guesses of next positions, and choosing the one that is closest to the cursor.

Three

This was the first 3D app I wrote for HTML canvas. The technique used to calculate 2D positions of 3D points is the same as that which would be used when drawing by hand in perspective. I wrote a similar program to this a while ago in QBasic and then again in C.

Tree Generator

This was an early app. It uses the first version of the fractal framework with random parameters to construct randomly generated trees.

Vines

This uses the second fractal framework to draw vines which randomly spawn flowers which sprout more vines, all of which follow the cursor.

Virtual Canvas

This demonstrates a wrapper for HTML Canvas which allows Virtual Canvases to be created. These may be nested inside a real canvas element, or another virtual canvas element.

Worms

This was the first use of random fractals. It's a very simple program that randomly adds and removes worms.

Heart

This uses colour to analyse functions of 2 variables. The range of z values can be chosen by a scale.