Portfolio

Here's some software I've written.

ClAV

This is a “Cluster algebra visualizer” (link). It's a collection of programs to explore mathematical objects called "Quivers" (which encode cluster algebras) that were a major part of my thesis. (They're a type of graph with some more structure.)

These programs are all written in C, and have been used by a handful of other people at this point across quite a few Linux distros (and Mac).

libmath

libmath (link) is the library of IEEE-754 floating-point functions (sin, exp, &c) that I wrote for inclusion into the standard library of the Myrddin language Myrddin describes itself as:

Myrddin does not aim to explore the forefront of type theory or compiler technology. It does not focus on guaranteeing perfect safety. It is satisfied to be a practical, small language.
and libmath attempts to adhere to that. The algorithms are chosen for readability, and references are provided for those who want to know more about the background. I mostly followed a series of papers by Ping Tak Peter Tang, with the technique of “Highly Accurate Tables” of Gal and Bachelis.

These functions were written as part of Myrddin's Summer of Cod program. In order to show the accuracy, I also wrote fpmath-consensus, which allows comparing various implementations of floating-point functions.

sispare & sispare-qt

These are my “Simple Spaced Repetition” programs. They use a variation of the Leitner system for remembering things that can be expressed as flash cards.

Sispare-qt (link), in C++ and Qt, is probably the program you want to use. Sispare (link) is the prototype CLI version in Myrddin with libtermdraw.

fgc-section-5

Section 5 of my thesis is a constructive algorithm to realize the cluster ensemble structure. One of the claims of this algorithm is “it can be implemented in software,” so I provide a reference implementation, including tests against more tedious calculation methods.

YAKMO

Yet Another Kernel for Math Operations” (link). In support of fgc-section-5, I wrote a small computer algebra system to handle laurent polynomials. Under very (very) specific circumstances, it outperforms Mathematica in computations of Lusztig's calculus.

LLF

A “Lua LaTeX Formatter” or “LaTeX-Like Formula”, I forget which (link).

LaTeX formatters are hard, because just parsing LaTeX is Turing complete. (See the BaSiX article here.)

However, LaTeX is really a language that needs reflowing. Therefore, I wrote llf, which will reflow LaTeX as long as no \catcode-trickery is used. It can be used stand-alone, or easily hooked up to text editors that support piping.

As of my degree, llf has been safely tested without incident on at least one thesis.