This webpage lists some of the personal projects I've worked on recently. This is me:
![Me](http://www.movss.com/~rich/images/me.png)
Quick facts:
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)
https://github.com/sigint9/bitml/blob/master/main.cpp
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)
http://sigint9.github.io/yaragui/
A GUI for the YARA pattern matching scanner. Built using Qt and Boost in C++.
----
# WebChess (June 2015)
http://www.movss.com/~rich/chess/
Client-side Java chess engine. Play against the computer AI in your browser. The engine was compiled to JavaScript from Java using the [GWT framework][gwt].
![WebChess](http://www.movss.com/~rich/images/chess.png)
----
# ShaderTune (May 2015)
https://github.com/sigint9/shadertune
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.
![ShaderTune](http://www.movss.com/~rich/images/shadertune_small.png)
----
# ShaderCap (May 2015)
http://sigint9.github.io/shadercap/
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.
![ShaderCap](http://www.movss.com/~rich/images/shadercap.png)
----
# GLSL Java Parser (April 2015)
https://github.com/sigint9/glslparser/blob/master/glsl.jj
A parser grammar for the GLSL language using the [JavaCC][javacc] parser generator, implemented according to the [GLSL specification][glslspec].
![OpenGL Logo](http://www.movss.com/~rich/images/opengl.jpg)
----
# Symbolic Equation Solver (May 2014)
http://www.movss.com/~rich/jsolve/
Client-side symbolic equation solver written in Java and compiled to JavaScript using the [GWT framework][gwt]. The input equation is parsed into a tree, then tree manipulations are performed to rearrange and solve the equation. I documented the solving algorithm and made slides for a presentation which can be found [here][jsolve].
![JSolve](http://www.movss.com/~rich/images/jsolve.png)
----
# Big Integer Library (December 2013)
https://github.com/sigint9/bignum
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
https://www.shadertoy.com/user/dila
I enjoy writing pixel shaders and experimenting with fractals and procedural geometry.
![Cypher](http://www.movss.com/~rich/images/shader.png)
[me]:http://www.movss.com/~rich/me.png
[bcjr]:https://en.wikipedia.org/wiki/BCJR_algorithm
[gwt]:http://www.gwtproject.org/
[glslang]:https://www.khronos.org/opengles/sdk/tools/Reference-Compiler/
[vpx]:http://www.webmproject.org/
[glslspec]:https://www.opengl.org/registry/doc/GLSLangSpec.4.40.pdf
[javacc]:https://javacc.java.net/
[jsolve]:http://www.movss.com/~rich/jsolve.pdf
[polysynth]:https://github.com/sigint9/polysynth