This webpage lists some of the personal projects I've worked on recently. This is me:
I am 30 years old and started programming computers as a child. I have been programming in C++ for 15 years and have been doing so professionally for 10 years; having worked for companies including Sony Computer Entertainment (R&D) and BAE Systems (AI).
# Forward Error Correction (May 2017)
Convolutional encoder to apply error correction to a stream of bits and decode with the [BCJR algorithm][bcjr]. In tests, my implementation of a rate 1/4 convolutional code was able to recover from 17 non-consecutive bit errors in a 128-bit encoding of a 32-bit block. In the diagram the green nodes are the transmitted bits, the blue nodes are the received bits, and the red nodes are the noise bits that corrupt the transmission.
# Neural Network (April 2017)
Approximately 200 lines of C++ code that trains a neural network to carry out operations on integers by connecting neurons in the input layer to the bits of the input. In the program above, the network will learn to compute the hamming weight of the input (the number of "set" bits).
# YaraGui (August 2016)
A GUI for the YARA pattern matching scanner. Built using Qt and Boost in C++.
# WebChess (June 2015)
# ShaderTune (May 2015)
A tool for analyzing the performance of GLSL shaders. The program was written in C++ and uses the [Khronos reference compiler][glslang] to build a syntax tree from the input source code. The number of operations on each line are counted and hotspots are shown in dark red.
# ShaderCap (May 2015)
A tool to capture GLSL shaders to video. It was written in C++ and uses the Qt library for the GUI. It uses the [VPX library][vpx] for video encoding.
# GLSL Java Parser (April 2015)
A parser grammar for the GLSL language using the [JavaCC][javacc] parser generator, implemented according to the [GLSL specification][glslspec].
# Symbolic Equation Solver (May 2014)
# Big Integer Library (December 2013)
A C++ library for performing arbitrary sized, signed, integer arithmetic. Also implemented are RSA encryption test vectors to prove the correctness and efficiency of the code.
# Pixel Shaders and Computer Graphics
I enjoy writing pixel shaders and experimenting with fractals and procedural geometry.