Adjustable LCDs

Space Engineers mod that allows scaling and translation of LCD blocks

Space Engineers mods are quite constrained in what APIs they have access to, so some features required a bit of fudging and/or ingenuity to implement. Animations, for example, were difficult as the UI options available didn’t allow for specifying a keyframe sequence.

charlt

Diagram/chart/graph generator

Give it a yaml or lua file and it will generate a chart for you. I created this project since I couldn’t find any existing commandline app for this and I wanted something I could integrate into my LaTeX workflow easily

cronch

Serialize/Deserialize lib based on lenses

Mostly a toy project to experiment with C++20’s concepts support, but it does work docs

dotloy

Dotfiles deployment tool + template engine

Pretty basic rust tool I wrote the MVP of in 6 hours. I use it to make my dotfiles easier to deploy on new systems and across os’s. It also has a home-made handlebars like template engine that accounts for about half of the time spent on the MVP.

fsmark

Tool to help you shelve your file paths

This is a tool that provides “bookmarking” of filesystem paths. You give it a long path and a short name to refer to it by and then you can later ask it to give you the long path from the short name.

Originally this project used SQLite but once I became more experienced I realised this was stupid so now it uses JSON.

libfprint

Fingerprint authentication library for Linux. Contributed driver & sigfm

If you use Linux with a fingerprint scanner you almost certainly use this library. Implemented a driver for the goodix 5110 sensor (branch)

Lights Out!

Rimworld mod that manages powerdraw

I added Biotech (new DLC) support to this mod (PR). Rimworld mods modify or replace existing functions at runtime by directly modifying the C# IL. This means that adding support for Biotech required analysis of the existing game code using a decompiler and discresion in picking what to patch.

ltexa

Parser for LaTeX logs using megaparsec

I created this project to get a better understanding of megaparsec and so I could actually diagnose issues with my LaTeX documents

malloy

High level HTTP + WebSocket library

I implemented several parts of this library from 2021 to 2022. Contributions include TLS support (PR) and clang support (PR))

This library wraps boost.beast.

Marked Imports

Tool to add source package above imports

This tool adds the name of the source package as a comment above each import (or group of imports). It also groups imports by source package.

It uses megaparsec for parsing and optparse-applicative for argument handling.

neovide

Neovim frontend

Contributed a couple improvements such as blend support.

neovim

Text editor, fork of vim

I fixed a bug with the UI RPC API PR

Sugarmoon

Syntactic sugar for Lua

This is a transpiler for a super-set of Lua with syntactic sugar. It includes a full Lua parser implemented with lpeg. It has both a tokeniser and code generator with an AST using tables.

TypeSum

Utilities for working with enums, aimed at sumtypes

This came about because I was working on a compiler in Rust for a DSL (you can read about some of that experience on my blog), and as part of that I needed to define a lot of sum types, like, easily a few dozen. I had a declarative macro but it was somewhat limited due to the constraints of declarative macros in Rust. So I wrote a more robust solution that uses attribute macros. docs