Free OTA TV Anywhere, Using a Box I Already Had

My TV antenna lived behind my TV in the living room. Reception was inconsistent: if someone walked between the antenna and the window, the signal dropped. If I forgot to pull it out and angle it before sitting down, I got nothing. I had an HDHomeRun FLEX DUO from a previous place where I had the antenna setup dialed in. I moved and never got around to setting it up again at the new apartment. The antenna behind the TV was the placeholder that never got fixed. This week I fixed it, and the same day I finished, I used it to watch the FIFA World Cup from an airport lounge and a plane on the way home from a trip, free, with no cable subscription. That felt worth writing up. ...

July 19, 2026 · 7 min · Derek Welty

Self-Hosted Obsidian Sync on a Raspberry Pi with Tailscale

Two spare Pis sitting around. Already running AdGuard, so Pi-hole was off the table. I wanted something actually useful. I’ve been paying $10/month for Obsidian Sync. The vault lives on my hardware anyway — it felt like paying rent on my own stuff. The alternative: run CouchDB on a Pi, point the Self-hosted LiveSync plugin at it, and use Tailscale to make the Pi reachable from anywhere without port forwarding or a public IP. E2E encrypted, zero ongoing cost, fully under my control. ...

June 26, 2026 · 8 min · Derek Welty

DIY Ambilight Part 2: Capture Working, LEDs Are Next!

The splitter finally showed up. This session was about seeing if the signal chain actually worked end to end — Apple TV → splitter → TV + B101 — and getting at least one real captured frame out of it. No LEDs wired yet, just proving the capture side works and figuring out the layout. Getting the B101 to see the signal First step after wiring everything up was setting the EDID so the B101 knows what kind of signal to advertise to the Apple TV: ...

May 3, 2026 · 6 min · Derek Welty

Building a DIY Ambilight on a Raspberry Pi 3 with an Auvidea B101

Correction, October 2026: this post and its summary made the project sound further along than it was. HDMI timing detection worked and the capture device showed up, but VIDIOC_STREAMON failed, so no frame was captured here. Part 2 is where a frame finally came out, at 1080p30. The LEDs are not wired yet either. I saw a FancyLEDs sponsorship on YouTube and figured I could build the same thing myself for less, with hardware I already had — including a B101 capture board from a prior project I never finished. Govee makes something similar but it only works with their own app — useless with an Apple TV or anything else plugged into HDMI. I wanted something source-agnostic, fully local, no subscription. This is a working log: capture pipeline is proven, splitter arrives tomorrow, LEDs not yet wired. ...

May 1, 2026 · 16 min · Derek Welty

TRMNL X BYOS: Self-Hosting the Server Before the Device Arrives

Correction, October 2026. The display arrived and is running, and parts of this post are wrong or no longer used. Part 2 has what ended up on the screen. I’ve left the original below as a record of what I did before the device arrived, so don’t follow it as written. Wrong: the panel is 10.3 inches at 1872 × 1404 with 16 grays, not 7.5 inches. BYOS doesn’t need the Developer Edition (step 1 under “What’s next”). And the server I run is TRMNL’s own byos_fastapi, not the project linked under “The server”. ...

April 23, 2026 · 4 min · Derek Welty

IKEA Varmblixt as a Home Assistant Status Light

I wanted a passive ambient display that tells me something useful without picking up my phone — weather at a glance during the day, a wind-down mode at night, green at 6:30am if it’s worth cycling to work. The IKEA Varmblixt is $30, Zigbee-native, and pairs directly to ZHA without an IKEA hub. Pairing Not obvious. There’s no reset button. To enter pairing mode, power-cycle the lamp 12 times in rapid succession — plug, unplug, plug, unplug… It flashes white 3–4 times when it’s ready. A smart plug makes this way easier than fumbling with the physical outlet. Source ...

April 13, 2026 · 6 min · Derek Welty

Building Molty: A Telegram Assistant with Memory and Scheduled Checks

ChatGPT worked fine for one-off questions, but it was isolated from the systems I actually use: calendar, email, Strava, GitHub, Obsidian, Spotify, and the half-finished project notes scattered across repos. I wanted a small assistant I could run myself, with persistent memory, scheduled checks, and enough tool access to be useful without turning into a full product. So I built Molty. I didn’t type its code or its instruction files; Molty did, and 81 of the first 83 commits in its workspace repo are under its name. But it wasn’t a one-shot prompt: I was in the details the whole way, directing each change. ...

April 8, 2026 · 7 min · Derek Welty

Building a Concert Discovery Tool with Spotify and Venue Scrapers

I kept missing shows I would have gone to. The data was public, but checking it required a weird amount of manual attention: venue calendars, Spotify history, ticket prices, neighborhoods, and a final “would I actually leave the apartment for this?” filter. So I had Molty, my Telegram assistant, build a weekly concert digest. It wrote all of the code on March 29: the Spotify login, a scraper for each venue, and the scoring. My part was taste: where I go, what I’d pay, how far I’d walk, and telling it when a pick was wrong. Every Monday morning it checks SF venues, matches artists against my Spotify library, and sends a ranked list of shows. ...

March 29, 2026 · 6 min · Derek Welty