Self-Hosted Systems
Tailscale, Docker, Omarchy, and a second brain I actually own and run myself.
My Music Player Lives in the Status Bar
I got tired of opening Spotify just to start a focus mix. So I rebuilt my player as a 40-pixel-tall Waybar widget backed by a headless mpv daemon — one click to lock in, no window required.
My Self-Hosted ChatGPT Lives on My Tailnet Now
OpenWebUI in Docker, OpenRouter as the model gateway, Tailscale for the network. Cheaper than ChatGPT Plus, every model on tap, and the route my MacBook actually uses to get there is not the obvious one.
I Killed My ChatGPT Plus Subscription. The Replacement Took Fifteen Minutes.
One Docker container, an OpenRouter key, and a Tailscale tunnel. Same interface, 300 models instead of one, accessible from anywhere I sign into Tailscale.
The Docker Bind That UFW Quietly Killed
Standing up a private ChatGPT for a marketing client over Tailscale should have been a one-shot Docker run. It wasn't — until I stopped binding to the tailnet IP and let tailscale serve do the talking.
I Unsubscribed From Everything With Two Scripts and an RFC
An agent ranked 500 emails, two small TypeScript files did the dirty work, and a header from RFC 8058 made the whole thing one-click.
Ninety Days, Three Rocks, and an AI That Pushes Back
The 12 Week Year has one load-bearing ritual: a Sunday accountability meeting with a peer. Most people don't have a peer. I gave the seat to a slash command.
Consolidate Multiple Google Workspace Accounts Into One Master Email
How to set up a God Account: pull all your work emails into one inbox and send from any of them—without forwarding them all away.
The Eight-Line Service That Killed Email-to-Self
A tiny systemd user service turns my MacBook and my phone into capture devices for my Obsidian vault. Send a file from anywhere on my devices, and it materializes in the inbox a second later.
I Loaded My Second Brain Into NotebookLM and Asked For a Podcast About Me
NotebookLM's Audio Overview is great. NotebookLM driven from a CLI in your terminal, fed your own Obsidian vault, with a custom focus prompt — that's a different category of useful.
When RustDesk Got Stuck, I Drove Hyprland From My Phone
RustDesk hung on a screen-select prompt I couldn't click. So I SSH'd into my desktop from my iPhone over Tailscale and clicked it with ydotool.
A WWDC for Arch Linux
How I rigged tmux, Playwright, Hyprland, and a fake microphone into a single command that runs a live product demo end to end.
My Desktop Ran the AI, My MacBook Ran Me
I left the house mid-session, opened my laptop at a coworking space, and kept working in the same shell on the same desktop. No port forwarding, no cloud VM, no SSH tunnel. Here is the setup.
My Vacations Are Objects Now
I turned every trip on my calendar into a data type. Then I let it research itself.
I Asked for a Book and Deployed a Library
A book recommendation turned into four Docker containers and a self-hosted reading server accessible from my iPad.
Who Killed My PC?
I came home on Easter Sunday and my PC was off. No note. No warning. I investigated like a crime scene.
Eight Timers and a SoundCloud Link
Not all of my automations are serious. The newest one plays Big Bootie Mix at my roommate.
Death by USB: How a Loose Pin Killed My Motherboard and Took My AI Assistant Offline
A USB microphone, a piece of metal debris, and an instant short circuit. My motherboard died, and with it, the AI personal assistant system I had been building for months.
My Phone Doesn't Know Where Its Data Goes
I built a pipeline where anything I capture on my iPhone silently lands on my Linux desktop and gets processed before I set the phone down.