David Sansome

[email protected]

C++, Qt


Clementine is a modern music player and library organiser for Linux, Windows and Mac OS X.


A cross-platform strategy game demo written in C++ and OpenGL. Features Cg shaders for bloom and reflections, procedural terrain generation and scripting hooks for game events and AI.

Baarbarity was my first OpenGL project. The game was originally written with hooks for QtScript (based on ECMAScript), but I later worked on bindings for other languages including Perl and Python.

Titan terror fishtank

A computer graphics coursework. The task was to create a scene based on a Gerry Anderson creation. This project features Stingray's Titan Terrorfish in a fishtank.

Features GLSL shaders for bloom, water surface reflections, fish animation, underwater wobble effect and stencil shadow volumes. Uses SDL and works on Windows, Mac and Linux.


A cross-platform IDE and interpreter for the esoteric programming language Funge. Features an OpenGL code editor capable of displaying code in any number of dimensions.

GLSL Raytracer

A raytracer implemented on the GPU in a single GLSL fragment shader. Supports spheres and triangles with colours, reflections and shadows. Achieves 30fps at 800x600 on a GeForce 8800.

Most of this GLSL raytracer was written in one evening as the result of a friend saying "I bet you can't write a GLSL raytracer in one evening".

GTK-Qt Theme Engine

The GTK-Qt Theme Engine is a plugin for GTK that allows GTK applications to use Qt widget styles. Aimed primarily at KDE users, this plugin provides a way to unify the look and feel of the Linux desktop.

The theme engine was written originally in 2003 and became the default GTK theme on all major KDE distributions. However the project has since been discontinued in favour of better more maintainable approaches to cross-desktop theming.



A mapping and statistical service for the browser-based strategy game Travian. Travianalytics fetches data through the game's API daily and presents a Google Maps interface onto the in-game world.

Although the backend is written mostly in Perl there is a C++ component that generates map tiles. Almost 20GB of player data is stored in PostgreSQL.

Python, Google App Engine

Noogle Goatbook

Noogle Goatbook is an open-source replacement for the discontinued Google Notebook. Notes are encrypted with AES-256 in Javascript on the client, so that neither the password nor the plaintext is ever sent to the server.


One of the first robots created for Google Wave, Rickrolley will add an embedded YouTube player to a wave and annoy the other participants by re-adding it if it is removed.