Coding Portfolio

Until recently my CV contained the URL for my GitHub profile, but I realised that since these days I’m putting my projects in a wider range of places a single profile no longer serves as a very good portfolio, so I’m writing one here. (I was tempted to put it on gopher but I felt doing so would cause too many potential employers to not bother reading it.)

My own projects

Habitat

A work-in-progress Secure Scuttlebutt client for Haiku in C++. It is currently able to exchange messages with other clients but the user interface is still almost entirely still to do.

Varroa

An abstract strategy game with a hex grid for 2-3 players, implemented in rust, with AI powered by burn, and displayed on-screen using SDL2. In the future I will add the ability for humans to play, but in the meantime we can watch the AI play itself and (theoretically) improve over time using deep double Q-learning.

monad-deferrable

A pair of monad transformers in Haskell which provide a convenient API for breadth-first and priority based search algorithms.

Phaser

A parser combinator library in Haskell similar to Parsec but supporting a few additional operations and coming with fewer “batteries included”

jllgp2

An experiment with linear genetic programming in Rust. So far it’s not successful but I still have ideas about how future versions may yield more interesting results.

Logtime

A tool I once used to record my time use at work in order to later fill out timesheets. It currently requires some attention to get it working with up-to-date versions of its dependencies, and I would like to improve the quality of the code in the database module.

hfnn

A neural network library written from scratch in Haskell. There’s nothing significantly wrong with it for small architectures but it has no GPU support and having since gained a deeper understanding of the mathematical basis of deep learning I would no longer name some of the functions the way I did.

discretedistributions

A Haskell library for modeling discrete finite probability distributions. This is a fairly standard example in explainers on what monads are in Haskell but I’ve added several useful functions not found in similar libraries.

backpropagate

A Haskell library for automatic differentiation. It uses fairly conventional algorithms but has a fairly unconventional API.

Other Contributions

sqlite-simple

SQLite bindings for Haskell. My contribition is a module which allows developers to register custom SQLite functions.

Yi Editor

A text editor written in Haskell. My main contribition is a set of commands for switching between open files when using the vim-style keymap.

Future Goals

Since I usually use Ruby on Rails for paid work it’s a little embarrassing to have a portfolio that doesn’t mention it.