This is an incomplete list of libraries, tools, and experiments I’ve worked on. Most exist for for personal use or educational purposes. Some are well documented, others are not. All can be found on my GitHub page.
- Malice - Haskell framework that provides abstractions and protocol-specific attacks for intercepting and modifying network traffic. It leverages the power of Haskell’s type system to define an embedded DSL for describing the actions of Eve and Mallory. In effect, it allows a man or woman in the middle to write code that is as close to pure evil as possible.
- hs-arm - Haskell (dis)assembler and analyzer generated from the machine-readable ARMv8.3-A specification.
- routor - Tor controller that allows paths to be chosen on a stream-by-stream basis.
- uttyl - Some useful tty/pty-related hacks.
- bus-data - Code used to reverse engineer a compressed and obfuscated AJAX protocol.
- leftpad.ko - The infamous leftPad() implemented as a kernel module.
- xhb-monad - Monad transformer for xhb server connections.
- xhb-requests - Classes and generated instances for a uniform interface to xhb.
- xhb-event-queue - Monad transformer over xhb-monad for event handling.
- xhb-mapping-state - Monad transformer over xhb-monad for keeping track of key, mod, and pointer mappings.
- chuck-compositions - Some bad music written in the strongly-timed programming language ChucK
- bigword - Library for treating bit arrays with statically known size as heterogeneous Church-encoded vectors.
- bencode - Fast and flexible parsers and builders for BEncoded data.
- mod-n - Integers under a modulus, using GHC’s type-level naturals.
- n-vector - Fixed-length unboxed vectors.
- recall - A typeclass for memoization, based on a paper by Simon Peyton Jones.
- 24-bit - Word24 and Int24 types, build from GHC.Prim.
- git-audio - Allows a developer to record and play back verbal commit messages.