Blog

Creating a Neovim Plugin with Treesitter

Building Fluoride - code navigation plugin powered by Treesitter and LSP.

Building an LLM Router

Intelligently distributing requests across language model providers.

Operating Systems Development with xv6

Extending xv6-riscv and learning about kernel development.

CLI Tools I Actually Use

Building an audio source switcher for macOS and the philosophy of simple tools.

Memory Management in Rust

Building the Memory app and understanding Rust's ownership model.

Automated Server Setup with TypeScript

CS 450 project on configuration management and automated server setup.

Neural Networks from Scratch

Building a neural network engine with NumPy and CS 499 independent study.

Building a Parser Generator

Creating strings - a parser generator for custom parsers from grammar definitions.

My Journey into Functional Programming

Building a Brainfuck interpreter in Haskell and how it changed my thinking.

Building Observability Infrastructure

Log processing with ClickHouse and building evenscribe-collector.

The Nand2tetris Experience

Building a computer from NAND gates up through hardware, assembler, VM, compiler, and OS.

Building a CPU Emulator from Scratch

NES emulator project and understanding the 6502 CPU and PPU.

Why I Built My Own Programming Language

Creating Wave language in Rust and the challenges of language design.

From Regex Engines to Automata Theory

Building t_rex regex engine in TypeScript using Thompson's construction.

Building a JSON Parser in Haskell

My first foray into Haskell using parser combinators to parse JSON.