Coding

Apps, experiments, and practical tools I build to solve real problems — for myself, for communities I care about, and for clients. A working inventory that grows as I add screenshots and demos.

Most of these aren’t public yet. If you’d like to try one out or learn more about any project below, let me know!
Status: Live Active development Prototype Backburner Commit counts hint at time & attention spent.
Tags: Platform Language Framework / tool

Community & communication

👋Hangs

Jun 2026In dev

Coordination-light social network: people post what they’re already doing and others join with one tap — no RSVP, no organizing. Magic-link login, SMS reminders, and phone invites.

19 commitsWebNext.jsSupabaseVisit

🎙️RunMeets

Jun 2026Prototype

AI-assisted live workshop facilitation: records and diarizes a room, keeps a running summary and action ledger, and clusters discussion into idea cards on a shared, editable board.

47 commitsWebTypeScriptSwiftVisit

Discourse plugins

Reusable plugins and services that extend the Discourse community platform.

📅Events & Calendar

Apr 2026Live

A ground-up reimagining of Discourse events: where the official plugin bolts events onto ordinary forum topics, this makes an event a real content type — with calendar rendering, RSVP and waitlists, imports, reminders, and venues wired to the Places plugin.

297 commitsDiscourseRubyEmber

📌Places / POIs

May 2026Live

Adds a first-class, map-able Place content type — replacing brittle shared Google Maps lists — that also serves as event venues.

102 commitsDiscourseRubyEmber

🕸️Relationship Graph

May 2026In dev

Builds a typed relationship graph over a Discourse community — people, categories, groups, events, and places — with a 2D visualization and a neighbors API.

56 commitsDiscourseRubyEmber

🔀Activity Views

May 2026Live

Serves an /activity route that merges categories, chat channels, and topics into a single interleaved activity feed for a community.

27 commitsDiscourseRubyEmber

🧭Owned Sidebar

Jun 2026In dev

Replaces the Discourse sidebar with a fully JSON-configurable block layout, including a collapsible chat-navigator tree, DMs, and threads.

15 commitsDiscourseRubyEmber

🎨Showcase

Jun 2026In dev

A member project-showcase surface with tags, sandboxed iframe embeds, an approval workflow, voting, and search.

13 commitsDiscourseRubyEmber

Also: Telegram Bridge, Agent Plaza Provisioner, Agent Village Commons, Chat Channel Categories, Topic From Form, and a set of theme components.

BigRigTravels

A live truck-camera and streaming system for a long-running trucking broadcast.

🌐Interactive Website

Sep 2024Live

The dynamic side of the site: a live driver-position map with local tile caching, an elevation and route profile, an RV stats widget, upcoming and current trip listings, a live / YouTube go-live indicator, the embedded truck-camera viewer, and route and trip-planning tools.

174 commitsWebPHPWordPressVisit

📺Stream Overlay

Oct 2024Live

The live broadcast overlay: shows the truck’s current position (city and street), passing road signs, live weather, and subscriber-milestone celebrations, with a newer server-side renderer that rasterizes the overlay to WebP. Delivered as raster images for use in any livestreaming app, now driven by the custom BRT Broadcaster.

73 commitsWebPHPNode

📹BRT Broadcaster

Dec 2025Live

A fully custom livestreaming app built for long-haul drives: broadcasts simultaneous live video and interval stills with independent controls, live bitrate and focus adjustment, and continuous position logging that feeds the site’s live map and overlays.

102 commitsAndroidKotlinCameraX

Personal & productivity tools

🤖Personal Assistant

Dec 2025In dev

A native Mac AI assistant that proactively checks in through the day: context-aware chat, task integration, long-term memory, and hybrid local/cloud model routing.

113 commitsmacOSSwift

🗣️LogAssistant

Apr 2026In dev

Voice-logging system: record notes, background-upload, transcribe and summarize server-side, then review with high-speed playback, full-text search, and a Claude-backed chat assistant over your notes.

71 commitsAndroidKotlinPythonNode

📊ActivityAI

Dec 2025Backburner

Personal productivity analytics: imports computer-activity data, sessionizes it into blocks, and uses an LLM to classify and report how your time was actually spent.

19 commitsWebJavaScriptSQLite

💸APISee

Apr 2026Live

Local-first cost tracker for API usage: syncs cloud billing, prices calls in real time, warns before you blow a budget, and exposes it all over MCP and a menubar dashboard.

11 commitsmacOSRustTauri

📖CookIndex

Jan 2026Prototype

Search your physical cookbook collection by ingredient: OCR-ingests each book’s index pages so you can find which book has the recipe you need.

WebPHPAlpine.js

🔍ygrepUI

Jan 2026In dev

A desktop control panel for the ygrep code-search CLI: manage indexed folders, rebuild text and semantic indexes, and run per-folder file-watch jobs.

macOSRustTauri

📄WPConverter

Apr 2026Usable

A drag-and-drop Mac app that converts legacy WordPerfect (.wpd) documents to plain text, decoding the old multi-byte formatting codes.

2 commitsmacOSSwift

Also — smaller tools & exporters: iMessageExport, telegram-export, otter-date-extractor, yt-subscription-dl, video-maint, and a Substack‑to‑WordPress feed importer.

Health & habits

Slow Your Scroll

Jul 2026In dev

Turns an infinite feed into a finite one: selected social feeds quietly wind down so they feel finished instead of endless. A local VPN gently injects latency past a scroll threshold, never a hard error.

25 commitsAndroidiOSKotlin

Alarm Face

Jun 2026In dev

Native alarm clock that fires reliable OS-level alarms and gates dismissal behind on-device face detection — you have to actually look awake to turn it off.

8 commitsiOSAndroidMediaPipe

🧘MeditationTree

Jun 2026Live

A calm, scrolling recommender that guides you to meditation practices matching your temperament and goals, driven entirely by editable metadata.

4 commitsWebJavaScriptGoogle SheetsVisit

Music

🎤Karaoke Any Song

Dec 2025Live

Self-hosted AI karaoke: pulls any song, separates the vocals, transcribes word-level timing, and serves a player with real-time lyric highlighting and a synced video mode.

12 commitsWebPythonDemucsWhisper

🎶SingingTutor

Sep 2025Prototype

A practice tool for singers: organize warmups and songs across local files, YouTube, and Spotify into a simple three-playlist workflow.

11 commitsWebJavaScript

🎵Singing Events Organizer

Mar 2026Prototype

A custom app for invite-only singing-event coordination: contacts, scheduling, tokenized participant responses, performer intake, payment tracking, and reminder batching. Built for a client.

8 commitsWebPHPLaravel

Maps, places & data

👨‍🍳ChefLines

Feb 2026In dev

A knowledge graph of 20 years of SF Bay Area dining: chunks a 12,000-article archive, extracts people, places, and roles with an LLM, resolves them into a canonical database, and visualizes the lineage.

9 commitsCLIPythonTypeScript

🗺️Keap Maps

Feb 2026Live

A store-locator map I built for Keap Candles on spec — separate Stockists and customer-Recommendations views with local map-tile caching for speed. They ended up linking to it from a newsletter.

16 commitsWebPHPLeafletVisit

🍸RS Roadtrips

Jan 2026Prototype

Built for my gin company, Redwood Shire Gin: a “Grove to Glass” road-trip directory of partner wineries, bars, and shops, with a filterable list and an interactive map with detail views.

15 commitsWebPHPLeaflet

Photography tools

📷Personalized AI Photo Culling

Jul 2026In dev

Learns your personal taste from your existing Lightroom library and ranks new shoots by predicted preference, writing results back as Lightroom metadata. Unlike most AI cullers, it isn’t limited to people, portrait, or event work — it handles landscape, wildlife, product, and any subject.

CLIPythonPyTorch

🖼️immich-dng-extended

Jul 2026Live

An extension for the Immich photo server that adds RAW/DNG decoding it can’t do out of the box (Lightroom HDR/pano merges, newer phone RAW), by building patched image libraries with self-verification and automatic rollback. Open source.

4 commitsImmichBashDocker

Calendars & feeds

🗓️Better-Cal

Jul 2026In dev

A self-hosted calendar built to fully replace Google Calendar — everything GCal does day-to-day, plus an activity log with undo, email-to-event ingest with real RSVP replies, natural-language quick-add, and an agent-native API.

116 commitsWebPHPPreact

🌊TideCal

Aug 2025Live

Generates subscribable calendars of NOAA high/low tide events with height and daylight filters, plus optional sunrise/sunset events.

10 commitsWebPHPNOAA APIVisit

🌦️WeatherCal

Feb 2026Live

Generates subscribable weather-forecast calendars (with air quality) for any location, ready to add to Google, Apple, or Outlook.

WebPHPOpen-MeteoVisit

Games

🦖Isla Nublar Brawl

Jul 2026Playable

An unofficial fan-made dinosaur-island parody beat-’em-up: a canvas side-scroller with original arcade art, combat, and sound. Pure browser, no backend.

7 commitsWebJavaScriptCanvas

Browser userscripts

Small Tampermonkey scripts that add features to sites I use.

🏠Airbnb Per-Person Pricing

Jan 2026In use

Adds per-person-per-night pricing across Airbnb and VRBO listings, search cards, and map pins — for comparing group-travel value at a glance.

UserscriptJavaScript

🥾AllTrails Calorie Estimator

Jan 2026In use

Estimates calorie burn for a hike from its distance and elevation gain, with pack-weight and rucking support.

UserscriptJavaScript

▶️YouTube Playlist Autoclean

Jan 2026In use

Automatically removes each video from a playlist once you finish watching it, so your queue stays current.

UserscriptJavaScript

By the numbers

49projects across 11 categories
~1,500commits and counting
18live & in use
Building since2024
13Discourse projects
8native apps
4maps projects

Languages · projects using each

13 JavaScript
11 PHP
9 Ruby
7 Python
3 Swift
3 Kotlin
2 TypeScript
2 Rust
1 Bash

Platforms · projects on each

19 Web
13 Discourse
5 CLI
4 macOS
4 Android
3 Userscripts
2 iOS