My Projects - for play
WatchMyCode - a collaborative code editor based on CRDTs
WatchMyCode is a collaborative code editor I made for fun and because I didn't like using google docs for code interviews anymore. I vowed to spend a weekend building the "google docs for coding interviews" as a fun learning project. It took me 2 months. But it works really well. Based on Firebase, and uses CRDTs (which I implemented from scratch) to get eventual consistency between the sessions. Try it out at WatchMyCode.com.
TIL: CRDTs, ATs, tombstoning
Chip-8 Emulator written in JS/React
This is an emulator for Chip-8 systems written in JS / React and runs in your browser. I wrote this for a talk at Framework summit https://www.youtube.com/watch?v=y837IMk251g. You can play pong, Space Invaders etc.
TIL: OPCodes, bitwise operators, emulators
Match-y Match iOS game.
iOS matching game. Built with Godot game engine. Live on the app store. Find hidden objects in 10 levels. First 3 levels are free. The rest can be purchased via IAP. I purchased the images, but built everything else. Runs on iPhone, iPad, Mac.
TIL: Game Engines, GameDev principles, obj-c -> C Bindings, in-app-purchases
Project searcher - a Mac Desktop app:
I built a desktop app to provide a more friendly and productive GUI on top of ripgrep and other CLIs I use frequently. Tauri is a Rust-based electron alternative. It gave me an excuse to learn Rust 🦀. Tauri + Rust + TS + vite + react + tailwind + shadcdn + bun.
TIL: Rust, Tauri, libgit C -> Rust bindings
JS Tracing engine. Helps instrument & visualize code execution paths
At work I needed to track the code execution path between 1 broken scenario and 1 working scenario. So I built a CLI that adds instrumentation to the 1st line of every function to capture the callstack and arguments. Took 5-10 hours to hack something together. Works surprisingly well. ASTs for the instrumentation. CodeMirror for displaying the output. Next step would be to show the stacktraces next to the code and visually show the code execution path to be able to jump through the code easily
TIL: ASTs
JS repl for teaching
Explorations with iFrames to sandbox a JS repl. Later paired this with codemirror to get a mobile-friendly, low-friction JS beginner exercises page. Here's the first version based on Klipse (uses eval in same window). Later I re-worked this with codemirror and my iFrame sandbox solution.
TIL: JS sandboxed execution
Short YouTube tutorials
I made a series of short YouTube videos explaining common JavaScript errors.
TIL: Video Production, OBS Studio, Color Grading, DaVinci Resolve
Redux, React, ESLint courses on PluralSight & Thinkster.
I released 3 highly rated courses on PluralSight & Thinkster (ESLint, Redux, React). I also taught web dev as a remote adjunct professor for 2 semesters.
TIL: Video & Audio Production, ScreenFlow, Camtasia, course pacing