Software
I spent most of my free time using, writing, and modifying a variety of free software projects, usually related to Linux, POSIX, C, systems, or graphics.
My values include simplicity, portability, and minimalism. Accordingly, my favorite programming languages are C and Lua.
Here are some software projects I am actively working on or maintaining:
- cproc: A mostly-complete C11/C23 compiler, using QBE as a backend. See here for an old demo you can run in your browser.
- samurai: An alternative implementation of Ninja written in
C99. Used by Alpine Linux as their primary
ninjaimplementation - oasis: A statically linked Linux operating system, focused on lightweight components.
- libtls-bearssl: An implementation of the libtls API (from libressl) using BearSSL instead of libssl.
- dnssec-rr: A collection of tools to add DNSSEC records to your DNS zone.
- x509cert: A library and tool to generate X.509 certificates and certificate requests. Used in the oasis port of OpenBSD’s acme-client.
- swc: A library for writing a small Wayland compositor.
- velox: A tiling window manager based on swc, similar to dwm and xmonad. The first non-weston based tiling Wayland compositor!
- oscmix: A mixer for RME Fireface UCX II audio interfaces with an OSC API.
- pax: A portable implementation of POSIX pax(1)
- wl9: A rio-wayland shim compositor that runs under a unix VM on 9front, allowing for a native-like experience for unix applications.
- upnp-av: A small UPnP MediaServer implementation.
Here are a few one-off projects that were fun experiments or proof-of-concepts:
- nine: Run native plan 9 applications on Linux using
PR_SET_SYSCALL_USER_DISPATCH. - dp9ik: Implementation of 9front’s authentication protocol.
- thr10: Firmware patches for Yamaha THR10 guitar amps.
- blake3-tiny: Minimal public-domain implementation of BLAKE3.
- resample: Public-domain audio resampler.
I also want to share a few projects that I think are great. I highly encourage you to check these out if you haven’t already:
- myrddin: A neat systems-level programming language.
- bearssl: A tiny, yet extremely flexible TLS library.
- musl: A lightweight and correct implementation of libc for Linux.
- qbe: A small compiler backend, similar to LLVM.
- pkgsrc: An operating-system agnostic package manager and repository that integrates well with the rest of system.