1 Opensource Projects I've worked on/am working on
1.1 Flashcards
A bunch of Anki Flashcards from self studied materials and prior classes I've taken. Generated using typ2anki.
1.2 Nix-Btm
btm
btm
but for nix processes. A simple tui I wrote to play around with the ratatui and sysinfo crates.
1.3 Espresso Sytems
At Espresso Systems, we've open sourced a bunch of the repositories I've contributed to, including:
-
HotShot, a consensus and DA solution for our decentralized sequencer. My contributions include:
- A Libp2p networking backend
- A testing harness for consensus including some pretty nifty procedural macros and type-foo
- Consensus implementations including pipelined HotStuff
- Nix infra for HotShot
- An asyncronous task abstraction/harness for controlling and communication between tasks. This includes some pretty slick
Future
Future
andStream
Stream
implementations.pin_project
pin_project
and I are now very good friends : D
- A Netlink fork that exposes infra for adding custom qdiscs. I used this to mess with the network on an AWS cluster and locally on my 5950x desktop in a automated way. I would enter a separate network namespace, link it to the main network namespace, then add a heap of qdiscs to limit memory bandwidth, add in articial latency, drop packets, etc. This was all done directly with syscalls wrapepd by Rust code instead of using
ip link
ip link
andns
ns
. - This and this crate
1.4 DAWN
DAWN is a WIP Nix implementation of the debug adapter protocol. Aka "Debug Adapter with Nix"
1.5 RISCV Asm Lsp
A (very WIP) language server for RISC-V assembly. Uses a TreeSitter parser and built with tower-lsp.
1.6 Nixpkgs
I maintain a couple of Rust packages in NixPkgs.
1.7 Neovim
My personal vim "distro" , assembled with Nix and nix2vim. Comes with all the bells and whistles common in most IDEs. I gave a talk at vimconf about it.
1.8 Flake Generator
A cli using skim + rnix to parse nix flakes into an AST and then modify that AST. Good for generating nix best practice boilerplate code.
This was really an opportunity for me to play with Rust Analyzer's syntax tree library Rowan.
1.9 AOC
I try to run through Advent of Code every year as an excuse to learn a new language. I've done most of 2020, some of 2019 and 2018. This year (2022) will probably be in Idris.
1.10 This Blog
My blog has had several iterations:
- I hosted a version written with vuejs, but got tired of maintaining the host after someone broke into some of the services I was hosting (presumably due to a cve I didn't patch quickly enough)
- I moved to Hugo + github pages
- I swapped out Hugo for Hakyll because I like Haskell.
- Typst recently added a HTML backend, and I much prefer typst to markdown (it's just way more powerful). So, my blog's current iteration is in typst using Typsite.
The core idea at each point was to maintain a markdown archive of thoughts.
1.11 Kernel Tutorial
A Kernel Hello world tied to blog post, explains how to use nix to do kernel dev in Rust.
1.12 Flakes
My flake config. Aka an exercise in code obfuscation. My system configs for my various computers running NixOS.
1.13 Alienware Lights
A SysV-style daemon and corresponding user-facing library for controlling the lights on the Alienware 15 R3 laptop.
1.14 Deepfrier
Deepfrier is a Python script for deepfry-ing screenshots using imagemagik and tesseractocr
1.15 MIT Master's Thesis
My Master's thesis discusses security on a tagged architectures.
1.16 BeaverDocs
BeaverDocs was a undergrad group project to create proof of concept peer to peer collaborative text editor. My contributions were to the RGATreeSplit CRDT implementation used internally to represent text operations.
1.17 DuckeeGO
DuckeeGO was a undergrad group project where I worked in group to create proof of concept concolic execution engine for golang. My contributions were on augmentations to the golang AST.