Projects
Active Projects
Embedded GUI Toolkit — A reusable UI toolkit for ESP32-based embedded devices written in Rust. Features dirty-rect rendering to avoid overdraw on slow SPI displays, a scene graph that works with Rust's ownership model, and a small set of primitive widgets. See the embedded Rust series on the blog for details.
PureImage — A pure JavaScript implementation of the HTML Canvas 2D API that runs server-side (Node.js). Useful for generating images, processing graphics, or running Canvas-based code in environments without a browser. Used in a number of server-side rendering pipelines.
Archived Projects
Building a Web Browser in Rust — An 8-part blog series and accompanying code covering how to build a web browser from scratch in 100% Rust. Covers HTML parsing, CSS layout, the box model, text rendering, and basic JavaScript execution. A deep dive into how browsers actually work, motivated by my T-Deck project.
PixelEater — A drawing application with a focus on pixel art and small-scale illustration. Built as an experiment in building a creative tool entirely from scratch in JavaScript, without relying on Canvas libraries.
MeowLang — A toy programming language built using the Ohm grammar framework. A learning project that turned into a reasonably complete expression of how to use Ohm for real language tooling: parsing, AST construction, and interpretation.
Flying Saucer — A pure Java CSS 2.1 HTML renderer. I started this project 20+ years ago and it has become an open source project with an active community. Though old, it’s still used in some PDF generation pipelines where a pure-Java solution is required. I'm no longer the primary maintainer but the project continues, and it even has it’s own Wikipedia page!
IdealOS — An exploration of what a modern operating system UI could look like if designed today with no legacy constraints. More of a design document and prototype than a shipping product, but the ideas have influenced my thinking about desktop application design.
Older projects — CAD experiments, desktop utilities, and various one-off tools — live in my GitHub repositories. Some are documented, some are not. Explore at your own risk.