Self-Hosted Systems
Tailscale, Docker, Omarchy, and a second brain I actually own and run myself.
The Audit Fired Every Sunday. The Sweeper Ate It Every Monday.
My vault audit had been writing perfect reports for 14 weeks. Zero of them survived long enough for me to read. The bug wasn't in the detector — it was in the loop.
Your Other Monitor Is a Billboard
I had a video call where the two dark monitors behind my laptop were doing nothing. So I turned both of them into a branded backdrop with Chromium, Hyprland, and one Claude session.
Every iOS Build Works Over SSH — Until Archive
I develop iOS apps from a Linux desktop over SSH. Every part of the workflow works headless, except the one command I run once per release.
Slack Only Runs Once. My Desk Needs It in Four Places.
I work with multiple clients from one machine. Each one wants Slack, a browser signed into their tools, and a terminal. Slack refuses to run twice — so I taught it to teleport.
Two Voice Daemons Were Fighting Over My Elgato Mic
Claude voice mode wouldn't hear me. The Elgato was fine, the default source was right, and yet nothing was landing. wpctl told me why.
Why Your Hyprland Screen Share Dies When You Switch Workspaces
Sharing a Wayland screen on Hyprland and switching workspaces freezes Google Meet and OBS. The reason is in the portal picker, not the compositor. Here is what actually fixed it.
Debugging an iOS App From My Linux Desktop
Freebo's iOS build was booting to a white screen. The Xcode project lives on my Mac. I fixed it from my Linux desktop over SSH — no screen sharing, no VNC, no Mac in front of me.
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.