Projects

Stochaskell

Haskell Python C++ Stan TensorFlow Jupyter Docker
A probabilistic programming language embedded in Haskell.

Fragment Shaders

GLSL WebGL
GPU simulations and visualisations submitted to Shadertoy.

PanDiff

JavaScript ES6 Node.js TypeScript Star
Generates prose diffs for multiple document formats.

TeXify

CSS JavaScript Star
Stylesheet for publishing scientific articles on the web.

Tensor

C++ Qt5/QML Star
Cross-platform chatroom client (Windows, Mac, Linux, Android, iOS).

Polya

Python 2 Cython C++
Library for performing statistical inference with Pólya urn models.

Datum

Java 6 ANTLR
Question Answering system, implementing a subset of Prolog (Datalog).

LLJVM

Java 6 C++ LLVM Star
Compiles C source code to Java Virtual Machine (JVM) bytecode.

SUBLEQ CPU

Logisim C JavaScript Star
CPU design and toolchain for a simple computer architecture.

PyZUI

Python 2 PyQt4 Star
Zooming User Interface, optimised for viewing very large images.

PixelStruct

C++ Qt4 OpenGL Star
A tool for visualising 3D scenes reconstructed from photographs.


Posts

Simulating worlds on the GPU

This post delves into the implementation of my procedural earth simulation, written entirely in GLSL fragment shaders. It simulates the complete history of an earth-like planet in a few minutes, with the simulation updating at 60 frames per second.

Shaders of Schrödinger

This is a quick tutorial on implementing a simple quantum mechanics simulator in a GLSL fragment shader. Prior knowledge of physics or GLSL is not required, but some familiarity with differential equations and C/C++ will be helpful. The goal is not to explain any of the physics involved, merely to demystify it by demonstrating how it can be simulated in less than 50 LOC.