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&amp;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. <a href="http://www.movss.com/~rich/images/fec.png"><img src="http://www.movss.com/~rich/images/fec.png" width="768"></a> --- # 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). <a href="http://www.movss.com/~rich/images/addnet.png"><img src="http://www.movss.com/~rich/images/addnet.png" width="512"></a> ---- # YaraGui (August 2016) http://sigint9.github.io/yaragui/ A GUI for the YARA pattern matching scanner. Built using Qt and Boost in C++. <img src="http://www.movss.com/~rich/images/yaragui.png" width="400"> ---- # 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. <a href="http://www.movss.com/~rich/images/shadertune.png">![ShaderTune](http://www.movss.com/~rich/images/shadertune_small.png)</a> ---- # 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. <img src="http://www.movss.com/~rich/images/bignum.jpg" width="256"> ---- # Pixel Shaders and Computer Graphics https://www.shadertoy.com/user/dila I enjoy writing pixel shaders and experimenting with fractals and procedural geometry. <a href="https://www.shadertoy.com/view/MlsGRS">![Cypher](http://www.movss.com/~rich/images/shader.png)</a> [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