Work

Projects

A selection of things I've built, contributed to, or am currently working on. Source code available on request.

vaultctl

A filesystem-only CLI and web viewer for Obsidian vaults. Search notes, manage tags, check vault health, read and write frontmatter. Built to replace a broken MCP server with something that actually works. TypeScript monorepo, 157 tests, JSON output by default.

TypeScriptCLIObsidiannpm

gemini-jobs

Schedule AI prompts as cron jobs using Gemini CLI's headless mode. Write bash scripts, schedule them with crontab, get timestamped logs. Includes a runner that bridges cron's minimal environment, built-in templates, log rotation, and a doctor command. Published to npm.

TypeScriptCLIGemininpm

TTRPG Engine

A setting-agnostic tabletop RPG engine powered by Claude. Write your world as JSON, plug it in, play via CLI or web. Streaming narrative, tool-driven state management, ElevenLabs TTS. Ships with a demo one-shot (The Sunken Flagon). 82 tests.

TypeScriptClaude APID&DTTS

Dia Home

A Chrome extension that replaces the new tab page in Dia browser with a searchable grid of pinned bookmarks. Keyboard navigation, right-click context menus, search engine toggle, cross-device sync. Vanilla JS, no build step, no dependencies.

Chrome ExtensionManifest V3Vanilla JS

paranoia

A font tester for tattoo design. 80+ fonts across 9 categories, live controls for weight, size, spacing, and case. SVG export with embedded fonts for tattoo artists, stencil mode, shortlist and side-by-side comparison. Single HTML file.

Vanilla JSGoogle FontsSVG

NetSuite Suitelets

Internal analytics tools built as single-file SuiteScript 2.1 Suitelets. Data Auditor for project health across Jira, Tempo, and NetSuite. Financial Workbook for revenue reconciliation. Time Auditor for contribution tracking. AI analysis via N/llm. All ES5.

SuiteScriptNetSuiteES5

test01

A 2D pixel-art life sim in Godot 4.5. 320x180 viewport at 4x integer scale, event bus architecture, GDScript throughout. Building it with my wife. Early foundations.

GodotGDScriptPixel Art

testinginproduction.co

This site. Next.js 16, TypeScript, Tailwind CSS v4, MDX blog. Dark-only, statically generated, deployed on Vercel.

Next.jsTypeScriptTailwind CSSMDX