<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Breaking Shit & Fixing It]]></title><description><![CDATA[Infrastructure as Code when you barely know how to code. Real failures, real solutions.]]></description><link>https://breakshit.blog</link><generator>RSS for Node</generator><lastBuildDate>Thu, 21 May 2026 04:51:30 GMT</lastBuildDate><atom:link href="https://breakshit.blog/feed.xml" rel="self" type="application/rss+xml"/><pubDate>Thu, 21 May 2026 04:51:30 GMT</pubDate><copyright><![CDATA[2025 WillyV3]]></copyright><language><![CDATA[en]]></language><managingEditor><![CDATA[WillyV3]]></managingEditor><webMaster><![CDATA[WillyV3]]></webMaster><ttl>60</ttl><item><title><![CDATA[A Non-Coder With a 120-Line Skill File Beat a Developer's Detailed Spec]]></title><description><![CDATA[Vinay said Claude writes Go like translated Java. We spent 5 iterations proving him right, then fixing it.]]></description><link>https://breakshit.blog/blog/teaching-claude-go-taste</link><guid isPermaLink="true">https://breakshit.blog/blog/teaching-claude-go-taste</guid><category><![CDATA[claude-code]]></category><category><![CDATA[go]]></category><category><![CDATA[golang]]></category><category><![CDATA[skills]]></category><category><![CDATA[plugins]]></category><category><![CDATA[effective-go]]></category><category><![CDATA[benchmarks]]></category><category><![CDATA[ai-agents]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[I Sent 32,000 Bytes to an ESP32 and It Said 'No']]></title><description><![CDATA[Built a voice assistant on an Orange Pi with a crab mascot, then spent three hours learning that USB serial has opinions about packet size.]]></description><link>https://breakshit.blog/blog/jarvis-orange-pi-voice-assistant</link><guid isPermaLink="true">https://breakshit.blog/blog/jarvis-orange-pi-voice-assistant</guid><category><![CDATA[orange-pi]]></category><category><![CDATA[esp32]]></category><category><![CDATA[voice-assistant]]></category><category><![CDATA[go]]></category><category><![CDATA[serial-protocol]]></category><category><![CDATA[claude-code]]></category><category><![CDATA[sprites]]></category><category><![CDATA[homelab]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[My Daemons Kept Crashing So I Built a Dashboard to Watch Them Crash]]></title><description><![CDATA[Replaced a Python script with a Go fleet monitor, wired 6 AI daemons to a cyberdeck that yells at you, and spent an hour debugging an empty string]]></description><link>https://breakshit.blog/blog/gridwatch-ai-daemons</link><guid isPermaLink="true">https://breakshit.blog/blog/gridwatch-ai-daemons</guid><category><![CDATA[claude-code]]></category><category><![CDATA[go]]></category><category><![CDATA[nats]]></category><category><![CDATA[homelab]]></category><category><![CDATA[ai-agents]]></category><category><![CDATA[daemons]]></category><category><![CDATA[monitoring]]></category><category><![CDATA[gridwatch]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Fri, 27 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Your AI Agents Can't See Each Other]]></title><description><![CDATA[What happens when you give your Claude Code instances the ability to discover each other, send messages, and run autonomous maintenance across your fleet]]></description><link>https://breakshit.blog/blog/claude-peers-fleet-network</link><guid isPermaLink="true">https://breakshit.blog/blog/claude-peers-fleet-network</guid><category><![CDATA[claude-code]]></category><category><![CDATA[go]]></category><category><![CDATA[nats]]></category><category><![CDATA[tailscale]]></category><category><![CDATA[homelab]]></category><category><![CDATA[ai-agents]]></category><category><![CDATA[daemons]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Thu, 26 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[WillyV4 Is a Tiny Computer That Knows My Email]]></title><description><![CDATA[What happens when you spend a week building a portable AI device with an AI. The bugs, the debugging, the 3am rewrites.]]></description><link>https://breakshit.blog/blog/willyv4-pocket-cyberdeck</link><guid isPermaLink="true">https://breakshit.blog/blog/willyv4-pocket-cyberdeck</guid><category><![CDATA[raspberry-pi]]></category><category><![CDATA[voice-assistant]]></category><category><![CDATA[go]]></category><category><![CDATA[cyberdeck]]></category><category><![CDATA[claude]]></category><category><![CDATA[homelab]]></category><category><![CDATA[ios]]></category><category><![CDATA[sontara]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Soldering a Subway Board]]></title><description><![CDATA[A $7 ESP32 display, two keyboard switches, a toggle switch, and a self-hosted transit API. Now I know when the D train is coming.]]></description><link>https://breakshit.blog/blog/cyd-transit-display</link><guid isPermaLink="true">https://breakshit.blog/blog/cyd-transit-display</guid><category><![CDATA[esp32]]></category><category><![CDATA[transit]]></category><category><![CDATA[claude]]></category><category><![CDATA[embedded]]></category><category><![CDATA[homelab]]></category><category><![CDATA[docker]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Raspy Week Two: Modes, Music, and a Mascot]]></title><description><![CDATA[Last week Raspy was a voice assistant. This week it's a clock, an MP3 player, and a pomodoro timer too.]]></description><link>https://breakshit.blog/blog/raspy-week-two</link><guid isPermaLink="true">https://breakshit.blog/blog/raspy-week-two</guid><category><![CDATA[esp32]]></category><category><![CDATA[voice-assistant]]></category><category><![CDATA[claude]]></category><category><![CDATA[embedded]]></category><category><![CDATA[3d-printing]]></category><category><![CDATA[homelab]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Mon, 26 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Raspy: Putting Claude in a Box]]></title><description><![CDATA[Two months ago I bought a cyberdeck kit. Then a 3D printer. Now I have an ESP32 that talks to Claude.]]></description><link>https://breakshit.blog/blog/raspy-voice-assistant</link><guid isPermaLink="true">https://breakshit.blog/blog/raspy-voice-assistant</guid><category><![CDATA[esp32]]></category><category><![CDATA[voice-assistant]]></category><category><![CDATA[claude]]></category><category><![CDATA[embedded]]></category><category><![CDATA[3d-printing]]></category><category><![CDATA[homelab]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Thu, 22 Jan 2026 00:00:00 GMT</pubDate></item><item><title><![CDATA[Dev Environment Update: December 2025]]></title><description><![CDATA[Where I'm at with my dev setup - neovim, two machines, and the workflows that stuck.]]></description><link>https://breakshit.blog/blog/dev-environment-december-2025</link><guid isPermaLink="true">https://breakshit.blog/blog/dev-environment-december-2025</guid><category><![CDATA[neovim]]></category><category><![CDATA[lazyvim]]></category><category><![CDATA[neo-tree]]></category><category><![CDATA[remote-dev]]></category><category><![CDATA[claude-code]]></category><category><![CDATA[homelab]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Mon, 15 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Batch Patching Next.js Across All Your GitHub Repos]]></title><description><![CDATA[Made a script to patch the React2Shell vulnerabilities across all my Next.js projects at once.]]></description><link>https://breakshit.blog/blog/nextjs-security-batch-update</link><guid isPermaLink="true">https://breakshit.blog/blog/nextjs-security-batch-update</guid><category><![CDATA[nextjs]]></category><category><![CDATA[security]]></category><category><![CDATA[github]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Fri, 12 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Two Machine Workflow with Syncthing]]></title><description><![CDATA[How I split work between my daily driver and a homelab server using Syncthing for real-time file sync.]]></description><link>https://breakshit.blog/blog/syncthing-two-machine-workflow</link><guid isPermaLink="true">https://breakshit.blog/blog/syncthing-two-machine-workflow</guid><category><![CDATA[syncthing]]></category><category><![CDATA[homelab]]></category><category><![CDATA[workflow]]></category><category><![CDATA[tailscale]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Using omarchy-theme-hook for App Theming]]></title><description><![CDATA[How I use imbypass's modular theme hook system to auto-theme apps when switching Omarchy themes.]]></description><link>https://breakshit.blog/blog/omarchy-theme-hook</link><guid isPermaLink="true">https://breakshit.blog/blog/omarchy-theme-hook</guid><category><![CDATA[omarchy]]></category><category><![CDATA[theming]]></category><category><![CDATA[arch-linux]]></category><category><![CDATA[hyprland]]></category><category><![CDATA[customization]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Auto-Syncing Chezmoi to Git]]></title><description><![CDATA[A simple daemon that auto-adds new files to chezmoi and pushes to git. Nothing fancy, just scratching an itch.]]></description><link>https://breakshit.blog/blog/dotfiles-that-sync-themselves</link><guid isPermaLink="true">https://breakshit.blog/blog/dotfiles-that-sync-themselves</guid><category><![CDATA[chezmoi]]></category><category><![CDATA[dotfiles]]></category><category><![CDATA[systemd]]></category><category><![CDATA[automation]]></category><category><![CDATA[arch-linux]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sun, 07 Dec 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building a Go Theme Package for TUIs (Or How I Learned to Stop Hardcoding Colors)]]></title><description><![CDATA[From hardcoded themes to a full-blown package - building gogh-themes with AI, custom codegen, and a lot of Googling]]></description><link>https://breakshit.blog/blog/building-gogh-themes-package</link><guid isPermaLink="true">https://breakshit.blog/blog/building-gogh-themes-package</guid><category><![CDATA[go]]></category><category><![CDATA[tui]]></category><category><![CDATA[bubbletea]]></category><category><![CDATA[open-source]]></category><category><![CDATA[ai-assisted]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Building gittui - A GitHub Profile Viewer in the Terminal]]></title><description><![CDATA[What happens when you decide to build a GitHub profile viewer as a TUI - lessons learned building gittui with Bubble Tea]]></description><link>https://breakshit.blog/blog/building-gittui</link><guid isPermaLink="true">https://breakshit.blog/blog/building-gittui</guid><category><![CDATA[go]]></category><category><![CDATA[tui]]></category><category><![CDATA[bubbletea]]></category><category><![CDATA[github]]></category><category><![CDATA[open-source]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sun, 26 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[distui: Because Configuring GoReleaser Every Time is Fucking Tedious]]></title><description><![CDATA[Built a TUI to stop wasting 30 minutes configuring release pipelines for every new Go project]]></description><link>https://breakshit.blog/blog/distui</link><guid isPermaLink="true">https://breakshit.blog/blog/distui</guid><category><![CDATA[go]]></category><category><![CDATA[tui]]></category><category><![CDATA[goreleaser]]></category><category><![CDATA[homebrew]]></category><category><![CDATA[cli-tools]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Serving a TUI App Over SSH]]></title><description><![CDATA[Learning to serve a terminal application over SSH just to see how it works]]></description><link>https://breakshit.blog/blog/tui-template-genericizing-bubble-tea-architecture</link><guid isPermaLink="true">https://breakshit.blog/blog/tui-template-genericizing-bubble-tea-architecture</guid><category><![CDATA[go]]></category><category><![CDATA[bubble-tea]]></category><category><![CDATA[ssh]]></category><category><![CDATA[tui]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Making AI Agents Talk to Each Other (And Out Loud) With tmux and Piper]]></title><description><![CDATA[Getting Claude and OpenCode to message each other through tmux panes while making them speak with Piper TTS]]></description><link>https://breakshit.blog/blog/ai-agents-tmux-piper-voice</link><guid isPermaLink="true">https://breakshit.blog/blog/ai-agents-tmux-piper-voice</guid><category><![CDATA[tmux]]></category><category><![CDATA[tts]]></category><category><![CDATA[piper]]></category><category><![CDATA[ai-agents]]></category><category><![CDATA[homelab]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sun, 31 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Unifying AI Coding Assistant Configs with Ruler]]></title><description><![CDATA[Ruler actually solves the fucking nightmare of managing configs across 20+ AI coding assistants]]></description><link>https://breakshit.blog/blog/unifying-ai-configs-with-ruler</link><guid isPermaLink="true">https://breakshit.blog/blog/unifying-ai-configs-with-ruler</guid><category><![CDATA[claude-code]]></category><category><![CDATA[opencode]]></category><category><![CDATA[ruler]]></category><category><![CDATA[ai-tools]]></category><category><![CDATA[configuration]]></category><category><![CDATA[homelab]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Fri, 29 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[How to SSH into Mac from iPhone using Tailscale]]></title><description><![CDATA[Setting up SSH access from iPhone to Mac for LLM CLI capabilities through Tailscale]]></description><link>https://breakshit.blog/blog/ssh-mac-iphone-tailscale</link><guid isPermaLink="true">https://breakshit.blog/blog/ssh-mac-iphone-tailscale</guid><category><![CDATA[tailscale]]></category><category><![CDATA[ssh]]></category><category><![CDATA[mobile]]></category><category><![CDATA[remote-access]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Sat, 23 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Claude Instances Keep Using 2024 Dates in 2025: Fixed with Linux Systemd Automation]]></title><description><![CDATA[Built automated timestamp updater using systemd timers to stop Claude instances from temporal confusion across my Ubuntu homelab]]></description><link>https://breakshit.blog/blog/claude-time-sync-automation</link><guid isPermaLink="true">https://breakshit.blog/blog/claude-time-sync-automation</guid><category><![CDATA[claude-code]]></category><category><![CDATA[temporal-sync]]></category><category><![CDATA[python]]></category><category><![CDATA[systemd]]></category><category><![CDATA[ai-operations]]></category><category><![CDATA[homelab]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[Automating Next.js + shadcn Setup Because Manual Steps Suck]]></title><description><![CDATA[Built a script to skip the repetitive bullshit of setting up Next.js projects with all shadcn components]]></description><link>https://breakshit.blog/blog/automating-nextjs-shadcn-setup</link><guid isPermaLink="true">https://breakshit.blog/blog/automating-nextjs-shadcn-setup</guid><category><![CDATA[nextjs]]></category><category><![CDATA[shadcn]]></category><category><![CDATA[automation]]></category><category><![CDATA[claude-code]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Wed, 20 Aug 2025 00:00:00 GMT</pubDate></item><item><title><![CDATA[VM Go Brrrr: A Homelab Disaster Story]]></title><description><![CDATA[How I solved the OAuth token complexity problem with a dead-simple persistent VM approach using Packer and Vagrant]]></description><link>https://breakshit.blog/blog/persistent-vm-pattern</link><guid isPermaLink="true">https://breakshit.blog/blog/persistent-vm-pattern</guid><category><![CDATA[vm]]></category><category><![CDATA[packer]]></category><category><![CDATA[vagrant]]></category><category><![CDATA[claude-code]]></category><category><![CDATA[oauth]]></category><category><![CDATA[automation]]></category><dc:creator><![CDATA[WillyV3]]></dc:creator><pubDate>Tue, 19 Aug 2025 00:00:00 GMT</pubDate></item></channel></rss>