Below is a sample of some of the projects I’ve made available over the years.
For a full list, see my Github profile. Please
don’t judge too harshly from some of the older material there.
A random text generator. Learns a markov chain from a sample corpus and then
spits out gibberish via a random walk. Implemented in Haskell. One neat thing
about the implementation is that it uses Dependent Types to represent the size
(N) of the N-grams used in the representation. This means you can read in the
type parameter at runtime, and the program still typechecks!
Haskell NIST Beacon
The NIST Randomness Beacon is a free API for acquiring blocks of truly random
information. The bits are generated through an interesting quantun measurement
process. You can learn more about the project
here. My project is less awesome: it’s a Haskell
interface to the beacon, so you can grab blocks of data to use as seed data for
random number generators in your programs!
Yet another Haskell library for interfacing with an API. This time the Weather
Underground API. Lets you fetch weather info from you Haskell programs.
An implementation of
std::span in C++17 as described in paper
Needs to be updated to reflect the final wording voted into C++20.
A collection of soft computing primitives for C++. Includes:
- Genetic algorithms
- Fuzzy sets and fuzzy numbers
- An implementation of differential evolution
I expect to add more to this as time permits, though lately it has been quite
A C++ meta-library for representing systems of units. It’s good enough to
represent the entirity of SI, except Degrees Celcius (use Kelvin.) The resulting
types you define are to be used with the
quantity type, and the unit metadata
is tracked through the various arithmetic operations, all at compile time. There
is zero runtime overhead imposed.
The code portion of my Master’s thesis. SLHS is an implementation of Subjective
Logic in Literate Haskell. It uses a special evaluator monad to separate out the
construction of complex Subjective Logic expressions from their evaluation on
frames of data (similar to expression templates, if you have a C++
background). Subjective Logic is an emergent generalization of probabilistic
logic that allows one to represent uncertainty in a simple and concise
manner. To my knowledge, SLHS was the first complete (at the time!) realization
of Subjective Logic. Alongside the code library, my work included example
calculations, as well as correctness and termination proofs for the operators.