My Projects - for play

WatchMyCode - a collaborative code editor based on CRDTs

Animated image showing a collaborative coding interface.

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

Try it outSource

Chip-8 Emulator written in JS/React

Jamis Charles

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

Source

Match-y Match iOS game.

Jamis Charles

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

Source

Project searcher - a Mac Desktop app:

Jamis Charles

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

Source

JS Tracing engine. Helps instrument & visualize code execution paths

Jamis CharlesJamis Charles

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

Try it

Short YouTube tutorials

I made a series of short YouTube videos explaining common JavaScript errors.

TIL: Video Production, OBS Studio, Color Grading, DaVinci Resolve

Visit my channel

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

See my courses on PluralSightWatch redux course preview