<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Prem Poddar, writing</title><description>Posts and guides about the apps I build.</description><link>https://prempoddar.is-a.dev/</link><item><title>Keeping a Mac awake with the lid closed, without leaving it broken</title><link>https://prempoddar.is-a.dev/writing/caffeinatecat-lid-closed/</link><guid isPermaLink="true">https://prempoddar.is-a.dev/writing/caffeinatecat-lid-closed/</guid><description>Why lid-closed mode needs root, how CaffeinateCat asks for it once for exactly two commands, and the five separate things that make sure your Mac can always sleep again.</description><pubDate>Tue, 03 Nov 2026 12:06:00 GMT</pubDate></item><item><title>How OAF opens almost any file, and saves without breaking it</title><link>https://prempoddar.is-a.dev/writing/oaf-one-app-every-file/</link><guid isPermaLink="true">https://prempoddar.is-a.dev/writing/oaf-one-app-every-file/</guid><description>Detecting file types from their bytes instead of their names, a spreadsheet engine with loop detection, and why OAF patches Word and Excel files instead of rewriting them.</description><pubDate>Tue, 03 Nov 2026 12:05:00 GMT</pubDate></item><item><title>An arrow that admits when it doesn&apos;t know</title><link>https://prempoddar.is-a.dev/writing/loadstone-honest-arrow/</link><guid isPermaLink="true">https://prempoddar.is-a.dev/writing/loadstone-honest-arrow/</guid><description>How Loadstone turns noisy GPS into a pin with an honest radius, keeps a compass arrow steady without making it slow, and fits a place on Earth into seven silly words.</description><pubDate>Tue, 03 Nov 2026 12:04:00 GMT</pubDate></item><item><title>Searching 16,000 packages in 3 ms per keystroke</title><link>https://prempoddar.is-a.dev/writing/brewlight-homebrew-search/</link><guid isPermaLink="true">https://prempoddar.is-a.dev/writing/brewlight-homebrew-search/</guid><description>How Brewlight&apos;s search works, from byte buffers shaped so every kind of match is one memmem call, to a ranking packed into a single integer, to opening instantly by not asking brew.</description><pubDate>Tue, 03 Nov 2026 12:03:00 GMT</pubDate></item><item><title>Eight phones, one song, the same millisecond</title><link>https://prempoddar.is-a.dev/writing/duet-music-in-sync/</link><guid isPermaLink="true">https://prempoddar.is-a.dev/writing/duet-music-in-sync/</guid><description>How Duet finds other phones with six words and no server, estimates another phone&apos;s clock the way NTP does, and keeps playback in step by easing speed instead of jumping.</description><pubDate>Tue, 03 Nov 2026 12:02:00 GMT</pubDate></item><item><title>A messenger where the phones are the network</title><link>https://prempoddar.is-a.dev/writing/librechat-mesh-messaging/</link><guid isPermaLink="true">https://prempoddar.is-a.dev/writing/librechat-mesh-messaging/</guid><description>How LibreChat floods messages across a Bluetooth mesh, holds them for a day when there&apos;s no path yet, and starts Signal-style encrypted chats with no server to hand out keys.</description><pubDate>Tue, 03 Nov 2026 12:01:00 GMT</pubDate></item><item><title>A chat server that fits in your pocket</title><link>https://prempoddar.is-a.dev/writing/campfire-phone-hosted-chat/</link><guid isPermaLink="true">https://prempoddar.is-a.dev/writing/campfire-phone-hosted-chat/</guid><description>How Campfire runs a Ktor server on one phone for everyone nearby, keeps every chat rule in one class that never touches a socket, and stops a pasted link from probing your router.</description><pubDate>Tue, 03 Nov 2026 12:00:00 GMT</pubDate></item></channel></rss>