<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Marginalia</title><description>Notes, learnings, and discoveries by Sachin Dharmapurikar.</description><link>https://marginalia.thoughtworker.in/</link><item><title>When `*.ts.net` won&apos;t resolve: brew tailscaled and macOS split-DNS</title><link>https://marginalia.thoughtworker.in/posts/brew-tailscaled-macos-split-dns/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/brew-tailscaled-macos-split-dns/</guid><description>MagicDNS works through Tailscale&apos;s resolver but not through the system. Why the brew-installed tailscaled silently skips the split-DNS rule the App Store build sets up, and the one-line fix.</description><pubDate>Fri, 08 May 2026 00:00:00 GMT</pubDate><category>tailscale</category><category>macos</category><category>dns</category><category>homebrew</category><category>networking</category><category>debugging</category></item><item><title>Why my Colima LaunchAgent refused to load: a Sequoia provenance story</title><link>https://marginalia.thoughtworker.in/posts/colima-launchd-sequoia-provenance/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/colima-launchd-sequoia-provenance/</guid><description>A reboot test on a headless Mac surfaced an opaque launchd error that traced back to a months-old architectural decision and a SIP-protected extended attribute most people never see.</description><pubDate>Tue, 05 May 2026 00:00:00 GMT</pubDate><category>macos</category><category>colima</category><category>launchd</category><category>sequoia</category><category>til</category></item><item><title>Making a Mac Mini headless: FileVault, auto-login, and launchd</title><link>https://marginalia.thoughtworker.in/posts/macmini-headless/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/macmini-headless/</guid><description>How I got a Mac Mini to boot to a fully remote-accessible state without physical presence — FileVault disabled, auto-login configured, and Tailscale launchd tuned for network wait.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><category>macos</category><category>tailscale</category><category>launchd</category><category>headless</category><category>karkhana</category></item><item><title>Self-hosted Gitea with GitHub backup: migration lessons</title><link>https://marginalia.thoughtworker.in/posts/self-hosted-gitea-with-github-backup/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/self-hosted-gitea-with-github-backup/</guid><description>How I migrated repos from GitHub to a self-hosted Gitea instance, configured push-mirrors back to GitHub, and the specific API and URL format issues I hit along the way.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><category>gitea</category><category>dokploy</category><category>github</category><category>git</category><category>self-hosted</category><category>karkhana</category></item><item><title>`E[2 q`: when tmux quoting silently eats your ESC byte</title><link>https://marginalia.thoughtworker.in/posts/tmux-cursor-shape-til/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/tmux-cursor-shape-til/</guid><description>Random characters dribbling into your terminal? It&apos;s an escape sequence that lost its ESC byte upstream. In tmux, this often comes from how `\E` is quoted in `terminal-overrides`.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><category>tmux</category><category>terminal</category><category>macos</category><category>debugging</category><category>til</category></item><item><title>tmux + SSH: work survives dropped connections</title><link>https://marginalia.thoughtworker.in/posts/tmux-ssh-headless-mac/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/tmux-ssh-headless-mac/</guid><description>Configure tmux to auto-spawn sessions on SSH login and tune terminal defaults so your terminal state persists across any network interruption — airport, flight, hotel WiFi, whatever.</description><pubDate>Mon, 04 May 2026 00:00:00 GMT</pubDate><category>tmux</category><category>ssh</category><category>macos</category><category>karkhana</category></item><item><title>Caddy to Tailscale serve: the quiet TLS win for tailnet services</title><link>https://marginalia.thoughtworker.in/posts/caddy-to-tailscale-serve/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/caddy-to-tailscale-serve/</guid><description>I spent an evening fighting Caddy on macOS for tailnet TLS. Then I deleted Caddy, ran one Tailscale command, and was done in two minutes.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>tailscale</category><category>caddy</category><category>macos</category><category>tls</category><category>homelab</category><category>karkhana</category></item><item><title>Colima with vz on macOS: the quirks worth knowing</title><link>https://marginalia.thoughtworker.in/posts/colima-vz-macos/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/colima-vz-macos/</guid><description>Five gotchas that cost me an evening setting up Colima with the vz backend as a real workhorse — not a dev convenience, but where actual services run.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>colima</category><category>macos</category><category>docker</category><category>homelab</category><category>karkhana</category></item><item><title>Decision Records for solo developers</title><link>https://marginalia.thoughtworker.in/posts/decision-records/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/decision-records/</guid><description>Solo developers need Decision Records more than teams do — not less. Future-you has forgotten the reasoning. Here&apos;s the template and why it matters.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>practices</category><category>documentation</category><category>decision-records</category><category>karkhana</category><category>solo-dev</category></item><item><title>Karkhana: A workshop for solo software work</title><link>https://marginalia.thoughtworker.in/posts/karkhana-thesis/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/karkhana-thesis/</guid><description>I run three machines, ten projects, and one production app as a solo dev. Here&apos;s the mental model — the quality baseline, the principles, and why AI changed what&apos;s possible.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>karkhana</category><category>solo-dev</category><category>ai-agents</category><category>infrastructure</category></item><item><title>Three-tier backup for a one-person shop</title><link>https://marginalia.thoughtworker.in/posts/three-tier-backup/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/three-tier-backup/</guid><description>A practical guide to backing up a home server as a solo dev — three failure domains, ~€8/month, and the one step most people skip.</description><pubDate>Sat, 02 May 2026 00:00:00 GMT</pubDate><category>backup</category><category>restic</category><category>homelab</category><category>karkhana</category><category>solo-dev</category></item><item><title>Context Bloat: How I Accidentally Built OpenClaw 2.0</title><link>https://marginalia.thoughtworker.in/posts/context-bloat-til/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/context-bloat-til/</guid><description>I switched to Hermes because OpenClaw got slow and bloated. Six weeks later, Hermes was doing the same thing. Here&apos;s what I found and fixed.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><category>ai</category><category>hermes</category><category>tokens</category><category>optimization</category><category>mcp</category><category>til</category></item><item><title>Khabar: Building a Daily AI Radio Show on a Mac Mini</title><link>https://marginalia.thoughtworker.in/posts/khabar-llm-wiki-radio-show/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/khabar-llm-wiki-radio-show/</guid><description>How I wired together email newsletters, a local LLM wiki, and a radio narrator on entry-level hardware — with 7 bugs along the way.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><category>ai</category><category>automation</category><category>local-first</category><category>tts</category><category>workflow</category></item><item><title>One Agent, Many Faces: Why I Stopped Creating Separate Profiles</title><link>https://marginalia.thoughtworker.in/posts/one-agent-many-faces/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/one-agent-many-faces/</guid><description>Profiles vs personality switching in Hermes Agent — and why the distinction matters less than I thought.</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate><category>ai</category><category>hermes</category><category>productivity</category><category>automation</category></item><item><title>The 404 That Wasn&apos;t: Debugging Traefik, Docker, and a Stubborn Health Check</title><link>https://marginalia.thoughtworker.in/posts/docker-healthcheck-localhost-alpine/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/docker-healthcheck-localhost-alpine/</guid><description>How a localhost vs 127.0.0.1 difference in Alpine Linux caused Traefik to silently drop routing to my container.</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate><category>docker</category><category>traefik</category><category>debugging</category><category>dokploy</category></item><item><title>How Tailscale Services actually work (and why my dashboard wouldn&apos;t connect)</title><link>https://marginalia.thoughtworker.in/posts/tailscale-services-dashboard/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/tailscale-services-dashboard/</guid><description>Debugging Tailscale Services — the three-layer mental model that would have saved me hours.</description><pubDate>Sun, 19 Apr 2026 00:00:00 GMT</pubDate><category>tailscale</category><category>networking</category><category>devops</category></item><item><title>Welcome to Marginalia</title><link>https://marginalia.thoughtworker.in/posts/welcome-to-marginalia/</link><guid isPermaLink="true">https://marginalia.thoughtworker.in/posts/welcome-to-marginalia/</guid><description>Introducing Marginalia — a personal log of learnings by Sachin Dharmapurikar.</description><pubDate>Fri, 10 Apr 2026 00:00:00 GMT</pubDate><category>meta</category><category>blog</category></item></channel></rss>