Tracer
Trace artwork directly on your screen. Load any reference image, dial the opacity down, and draw over it on phone or tablet.
Software projects, experiments, and open source contributions. 58 projects.
Trace artwork directly on your screen. Load any reference image, dial the opacity down, and draw over it on phone or tablet.
A 3D cuckoo-clock that lives in your macOS menu bar. Every 30 minutes the doors swing open and a tiny bird reminds you the morning is gone.
An MCP server that hooks Claude into your Logseq graph. Search blocks, draft daily notes, surface TODOs, and run Datalog queries in plain English.
A pizza-dough calculator that works backwards from when you want to eat. Tell it the style, the timing, and the kitchen temperature; it figures out the recipe.
This site. Astro, MDX, Tailwind v4: blog, projects, recipes, photos, and a pin collection, all built statically.
Conversation-starter cards for dinners, parties, and road trips. Swipe through prompts the way you'd shuffle a real deck.
A Logseq plugin that grabs the captions for any YouTube link in a block and pastes the transcript in below it.
A Logseq plugin that wires OpenAI's text models into the editor. Type a prompt in a block, get the completion back in place.
A Bevy plugin for driving a game as a deterministic simulation that an AI agent can step, inspect, snapshot, restore, replay, and branch.
A small 2D platformer rendered with isometric 3D models, written in C99 and built on Sokol and a tiny ECS. Same binary runs natively and in the browser via WebAssembly.
A small Raiden Trad-inspired vertical shooter written in C99, built on Sokol and a tiny ECS. The same binary runs natively and in the browser via WebAssembly.
A monochrome top-down shooter for the original Game Boy, with a browser shell that runs the same ROM on desktop and mobile.
A tiny single-header C99 entity-component-system for small games and embedded targets, with fixed capacities and no allocation.
An interactive map of the countries, US states, and cities I have visited, powered by a small YAML travel log.
An Obsidian plugin that generates live AI writing insights, connections, counter-arguments, and suggested edits while you write.
A Hawaii rainbow tracker that combines weather, rain chances, cloud cover, humidity, and sun angle to forecast when and where to look.
An Obsidian plugin that opens .json, .yaml, and .yml files in a visual tree editor, with inline editing, schema validation, and a CodeMirror source mode.
An Obsidian plugin that opens .csv files in a spreadsheet-like grid with keyboard navigation, range selection, copy/paste, sorting, and debounced auto-save.
An Obsidian plugin that validates note frontmatter against user-defined JSON Schema rules, with tag-driven selectors, a results sidebar, and inline error reporting.
A local-first RSS reader and read-it-later desktop app (Tauri 2 shell, Rust core, React frontend, SQLite with FTS5 search, and a CLI that shares the same business logic).
A tiny Game Boy arcade platformer built with GBDK-2020. You're always bouncing on a pogo stick: steer, stomp cracked blocks, grab the battery, reach the exit.
A cross-platform audiobook player built with Tauri, Rust, and React. Streams from Google Drive, plays offline, syncs progress, and runs on macOS, Windows, Linux, and iOS.
A dead-man's switch for Prometheus / Alertmanager, running on Cloudflare Workers and Durable Objects. Alerts you when your monitoring goes silent.
A web reader for your Calibre library. Cursor pagination and virtualised lists keep it fast on million-book collections; EPUB and PDF readers are built in.
OpenTofu modules for Oracle Cloud's Always Free tier. One `apply` gives you a 4-core ARM box with 24 GB RAM, 200 GB storage, and optional MySQL, S3, monitoring, and budget alerts.
A CLI RSS/Atom feed reader with OPML support, smart caching, full-text search, content extraction, broken link repair, and an interactive TUI.
A CLI, REST API, and MCP server for fast audio transcription on Apple Silicon, built on parakeet-mlx and the Parakeet TDT model.
Unified command-line interface and MCP server for Z.AI services: image generation, OCR, vision, web search, web reader, and Zread code research.
A library of reusable skills (prompts plus references and templates) that any Agent Skills–compatible coding agent can install and use.
An RSVP speed reader where words flash one at a time at a fixed point, so your eyes don't have to track across lines.
An email-signup API that writes straight into a Google Sheet. Cloudflare Turnstile blocks bots, Bun or Workers as the runtime, no separate database to operate.
An infinite-canvas moodboard with sticky notes and images. Pan, zoom, drop things wherever they make sense.
Fetch a URL, get clean Markdown back. Plain HTTP first, Playwright fallback for JS-heavy pages, and quality gates that throw out paywalls and login walls before they reach you.
A unified CLI wrapper that routes coding requests across Gemini, OpenCode, Qwen Code, and Codex with automatic fallback, daily-credit tracking, and a built-in MCP server.
One CLI/MCP front-end for Tavily, Brave, Linkup, and self-hosted SearXNG. Tries free providers first, falls back to paid ones, tracks credits.
A Kubernetes-native uptime monitor. Monitors are CRDs, state lives on the CRD's status subresource, and each check runs in its own throw-away Job pod.
Headless React primitives for building TikTok and Reels-style swipe feeds: a render-prop component and hook with virtualization, gestures, keyboard, and accessibility built in.
A terminal UI for managing dozens of Git repositories at once: status dashboard, batch git operations, GitHub integration, and background fetches.
A high-performance vector database for Bun, Node.js, and the browser. HNSW indexing, Int8 quantization, and pluggable storage backends.
A minimal, modular Entity Component System (ECS) game engine in TypeScript. Browser-first, plugin-driven, and tuned for WebGL, Canvas, and modern web APIs.
Local RAG search for markdown files. SQLite FTS5 keyword search and HNSW vector search fused with Reciprocal Rank Fusion, running fully offline on a local ONNX embedding model.
A lofi coding room with ambient beats, streaming terminal diffs, Codex and Claude-style themes, and keyboard-friendly controls.
An MCP server for Pokémon TCG Pocket. Claude can search the full card pool, find synergies, build 20-card decks, and read the meta.
An MCP server for Raindrop.io, letting Claude (or any MCP client) read, write, and reorganise your bookmarks, collections, tags, and highlights.
An MCP server that exposes 45 Anki tools to Claude. Generate cards from text, audit decks, reschedule failures, and analyse your review history.
A Logseq plugin that exports a page to clean Markdown and bundles every referenced image and asset alongside it. Works as a drop-in for Jekyll, Hugo, Astro, etc.
Semantic search over your own documents, running entirely in the browser. Drop in PDFs, Markdown, or text; embeddings are generated on-device with Transformers.js.
Real-time multiplayer Connect Four with a 3D board. Create a room, share the link, drop pieces.
A collection of professionally-designed business card templates built with Typst, featuring multiple styles from minimalist to luxury.
A gallery of studies and finished pieces across pen and ink, charcoal, watercolor, graphite, and digital work, organized by series with a full-screen lightbox.
My photography portfolio: collections grouped by trip and theme, with EXIF data, GPS pins on a map, and a full-screen lightbox.
A digital display case for my lapel-pin collection. Each pin is photographed, background-removed, and pinned (sorry) to a velvet-style backdrop with notes on where it came from.
My recipes, written in Cooklang and rendered with a custom Astro integration. Ingredients scale, steps are linked, and everything is plain text on disk.
Embed thousands of Wikipedia articles, project them into 3D with UMAP, and fly through the result in the browser. Articles cluster by what they're about, not by what folder they live in.
Chunk long-form audio into manageable segments for easier review, search, and reuse.
A TypeScript parser for Cooklang, the plain-text recipe markup language. Turns .cook files into structured recipe data.
Create and share beautiful digital postcards with custom images, messages, map stamps, and a copyable link.
I had myself body-scanned at a 3D-printing kiosk in San Francisco, then loaded the resulting mesh into a three.js scene so you can spin it around in the browser.