Code
I’m mk12
on GitHub. Here’s some of the code I’ve written.
Active projects
- SICP Study: I’m reading Structure and Interpretation of Computer Programs and making a website for it with study notes and solutions to the exercises. My goal is to make this the absolute best resource for SICP online.
- VS Code: Better Git Line Blame: I got fed up with GitLens and decided to make my own git blame VS Code extension that’s efficient and minimal.
- AoC Solutions: Every December I participate in the Advent of Code. Lately I’ve been using it to learn array languages like BQN and Uiua.
Other projects
Studies
- Schemer: I own all the Schemer books. I’ve read Little, Seasoned, and Reasoned, but haven’t yet started Prover or Typer.
- Semaphores: I started reading The Little Book of Sempahores and solving the problems in C. I’m in Chapter 5, about halfway through the book.
- Analysis I: I’m formalizing Analysis I by Terence Tao. I started with Lean but later switched to Coq. I’m on Chapter 3 with a long way still to go.
- Notes4U: My high school notes on chemistry, physics, and math. They still get a surprising amount of traffic. I still use them as a test bed for static site generator ideas like using Pandoc Lua filters or MathML rendering.
Tools
- Web Math Demo: A tool for comparing web math typesetting solutions.
- Sim: A command line tool that manages binaries in
$XDG_BIN_HOME
. - Morse: A command line tool for Morse code translation.
- Minster: Westmister chimes you can run as a cron job.
Games
- MyCraft: A Minecraft clone in Java using LWJGL.
- Furious Fowls: An Angry Birds clone in Processing, with WIP p5.js rewrite.
- Mini Pinions: A Tiny Wings clone in Clojure using Quil.
Plugins
- Fish FZF: A Fish plugin for FZF that packs almost everything into a single “do what I mean” shortcut for navigating directories and opening files.
- Vim Meta: A plugin that brings readline/Emacs/VS Code shortcuts to Vim.
- Base16 Solarized Scheme: Almost everyone does Solarized wrong, and the Base16 theming system is no exception. I tried to fix it.
Languages
- Eva: A simple Scheme interpreter written in C.
- Lam: A lambda calculus language implemented in Haskell.
- Rel2SQL: An unfinished attempt to convert relational calculus to SQL.
Formal methods
- TCMC Path: Code for the MiSE’19 paper I coauthored, “Extracting counterexamples from transitive-closure-based model checking” [PDF].
- George: I contributed to the George program used in SE 212: Logic and Computation at the University of Waterloo, and implemented its web UI.
- Zeldalloy: I had some fun solving Zelda puzzles in Alloy.
Visualizations
- Luminosity: A simple ray tracer written in Haskell.
- Lindenmayer: A web app that renders L-system fractal curves to SVG.
- Chaos: A fractal plotter for Julia, Mandelbrot, and Tricorn sets.
- LLVM Life: Conway’s Game of Life in the terminal, written in LLVM IR.
Professional work
I designed the FIDL versioning system used in Fuchsia.
When I interned at Snowflake I implemented the time and binary data types.