What I'm doing right now

  • Looking for a job
  • Creating push-based reactivity engine in TypeScript
  • Designing a linear-functional language
  • Prepping for "surgery" on my laptop - need to replace the fans
  • Setting up my home server
  • Creating this website

Pinned Projects

Newtonian Dance

2026

Generic n-body simulation using Newton's Law of Gravity and other laws.

tech: TS, SolidJS, canvas
concepts:
- structure-of-arrays
- data-oriented-design
- classical-mechanics

Eyes

2026

An implementation of an interactive version of the Picture Language from SICP.

tech: JS, canvas, gifs
concepts:
- SICP Picture-Language
- reactive-programming

Polymede

2024

WASM Compiler/Runtime for the Polymede language I designed - all in about 6 weeks distributed over 2 months. Special implementation constraint: can't use any non-trivial libraries or tooling (zero-dependency bootstrap compiler) 💪

tech: Rust, WebAssembly, JS
concepts:
- Language-design
- Parametric-Polymorphism
- Bidirectional-Type-Checking
- Algebraic-Data-Types
- Closures
- pattern-matching
- Lexing/Top-down-parsing
- IO-Monad & side-effect management
- Graph Memory Machine (GMM) intermediate representation
- tail-calls
- Custom WASM-Bytecode-Serializer
- Hand-rolled copying 2-space GC in ~1000 lines of .wat (Cheney's Algorithm)

Type Inference

2022

Interpreter and a Type inference for a (Polymorphic) Typed Lambda Calculus, and a register machine visualization.

tech: Elm, ElmUI
concepts:
- HM type-inference
- let-polymorphism
- module-system
- parsing-combinators
- register-machine

Stack Machine

2022

Visualization of a stack machine that supports closures, continuations, actor-model.

tech: Elm
concepts:
- incremental stack-machine-simulator
- lexical-environment
- runtime-stack as first-class value
- delimited/undelimited-continuations
- call/cc
- message-passing concurrency
- actor-model-runtime

Combinatorics

2020

Visualizing combinatorial generators and formulas.

tech: React, KaTeX, JS-Generators
concepts:
- low-latency math-formula-rendering
- subsets, multisets, permutations, variations
- lazy-generation with ES6 Iterators