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.)
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.
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.
A pair of monad transformers in Haskell which provide a convenient API for breadth-first and priority based search algorithms.
A parser combinator library in Haskell similar to Parsec but supporting a few additional operations and coming with fewer “batteries included”
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.
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.
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.
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.
A Haskell library for automatic differentiation. It uses fairly conventional algorithms but has a fairly unconventional API.
SQLite bindings for Haskell. My contribition is a module which allows developers to register custom SQLite functions.
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.
Since I usually use Ruby on Rails for paid work it’s a little embarrassing to have a portfolio that doesn’t mention it.