Streams straight from an SMB share, caches albums for offline, layers 57 ambient sounds under a sleep timer, and syncs playback with a friend in the same room.
Software I’ve built.
Self-hosted dashboards, encrypted messaging, iOS and Android apps that don’t phone home, small desktop widgets that do one job — and a multi-tenant SaaS platform that organizations run their finances on. Most of it started as something I wanted to exist and couldn’t buy.
A common thread runs through nearly all of it: it runs on hardware you own, it collects nothing about you, and it says out loud what it can and cannot protect you from.
The open-source work is on GitHub. The private work is written up here without the source.
Private
9 projectsClosed-source projects, written up here without the repository.
Organizations run projects, route expense approvals, track donors, and sync with the accounting stack they already have — twelve integrations deep, with tenant isolation enforced on every request.
Testers click a floating button on your staging app, developers triage in a CRT-green inbox, and Claude writes the fix plan and opens the pull request — with the reporter emailed at every step.
Threads, reactions, GIFs, DMs, polls, and audio calls — running on a Raspberry Pi in your own home. No cloud servers, no subscriptions.
Rsstretto
A self-hosted RSS reader
Started as an experiment in database optimization: a data model for users, feeds, articles and subscriptions that stays lean as it scales.
Notey
A collaborative note-taking app
Real-time shared notes with rich text and todo lists, built because every other collaborative notes app had one quirk too many.
Truthy
A screenshot search engine for dialogue
Frinkiac-style search over True Detective season one: find any line, jump to the frame, and turn it into a meme, a GIF, or a comic strip.
Wardrobe
A clothing inventory that outgrew Airtable
175 tops, 43% of them black. Browse the wardrobe, or let it propose an outfit that surfaces the things you forgot you owned.
podripper
A terminal podcast ripper that files episodes on the NAS
Search iTunes, subscribe to the feed, pull the episodes down, and copy them straight to the NAS — where Boombox picks them up.
Open source
12 repositoriesEverything here is public, MIT-licensed, and documented well enough for someone else to actually run it — including the parts that don’t work yet.
Smashboard
A command center for everything going on in your life
Unread mail, today's meetings, countdowns, todos, habits, bookmarks, GitHub, Slack, breaking news, weather and cameras — one rearrangeable board, multiuser and API-first.
ohf@#k
A self-hosted news, markets, and OSINT dashboard
Indices, futures, crude, retail gas, treasuries and safe havens alongside RSS headlines, Reddit, breaking-news clustering, prediction markets and geopolitical risk panels.
Shh
Self-destructing secret sharing, hosted on your own hardware
Paste a secret, get a link that dies on first view. The server stores ciphertext only and never sees the key — it lives in the URL fragment, which browsers don't send.
Jiffy
GIF search without the walled garden
Searches Giphy and Klipy at once and interleaves the results. One self-contained container — no database, no volumes, nothing to persist.
Lockbox
An offline TOTP/HOTP authenticator for iOS and Android
The same six- and eight-digit 2FA codes as any other authenticator, from an app that contains no networking layer at all. Secrets stay in the Keychain.
TheTrades
Movies, TV, and the people who make them
A universal SwiftUI app built on TMDB, ported to Android in Kotlin. It exists for one feature: every cast member's age when the title came out, shown inline on the cast row.
Wordsy
A self-hosted daily word game
Guess the five-letter word in six tries. No backend, no account, no telemetry — the whole game is a static site in one nginx container.
Omarchy Bar Widgets
Five plugins for the Omarchy desktop shell
shh, Micro.blog, SomaFM, Snippets, and Emoticons — small, single-purpose panels that live in the bar and get out of the way.