<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Ragib Badaruddin</title><description>Notes on things I&apos;ve built outside work, and what they taught me.</description><link>https://ragib.dev/</link><item><title>Why I built a prayer times app</title><link>https://ragib.dev/writing/why-i-built-a-prayer-times-app/</link><guid isPermaLink="true">https://ragib.dev/writing/why-i-built-a-prayer-times-app/</guid><description>The prayer times app I relied on stopped working on New Year&apos;s Day 2024, and I found out its developer had passed away months earlier. simplesolat started as my attempt to follow in their steps.</description><pubDate>Tue, 29 Sep 2026 21:00:00 GMT</pubDate><category>simplesolat</category><category>react-native</category><category>android</category></item><item><title>Letting my servers fetch their own SSH keys</title><link>https://ragib.dev/writing/keytree-ssh-keys-from-one-file/</link><guid isPermaLink="true">https://ragib.dev/writing/keytree-ssh-keys-from-one-file/</guid><description>For years I copied SSH keys onto every server by hand, and carried my private key from laptop to laptop. A shell script fixed some of that. keytree fixed the rest, by turning the whole thing around.</description><pubDate>Tue, 29 Sep 2026 20:00:00 GMT</pubDate><category>ssh</category><category>homelab</category><category>go</category><category>keytree</category></item><item><title>The leak test that kept me honest</title><link>https://ragib.dev/writing/the-leak-test-that-kept-me-honest/</link><guid isPermaLink="true">https://ragib.dev/writing/the-leak-test-that-kept-me-honest/</guid><description>How Bancuh DNS went from passing every lookup to Google, to resolving everything itself, losing that in a rewrite, and getting it back. Nudged at every step by users running DNS leak tests.</description><pubDate>Tue, 29 Sep 2026 18:00:00 GMT</pubDate><category>dns</category><category>bancuh-dns</category><category>privacy</category><category>unbound</category><category>bind</category></item><item><title>Replacing BIND with my own DNS server</title><link>https://ragib.dev/writing/replacing-bind-with-my-own-dns-server/</link><guid isPermaLink="true">https://ragib.dev/writing/replacing-bind-with-my-own-dns-server/</guid><description>By the end of 2023, BIND was using 2.8 GB of memory to block ads on a 4 GB server. So I wrote a small DNS server in Rust that does the same job in about 100 MB.</description><pubDate>Tue, 29 Sep 2026 12:00:00 GMT</pubDate><category>rust</category><category>dns</category><category>bancuh-dns</category></item><item><title>Most of my outages were my own updates</title><link>https://ragib.dev/writing/what-self-updating-servers-broke/</link><guid isPermaLink="true">https://ragib.dev/writing/what-self-updating-servers-broke/</guid><description>Between 2020 and 2023, almost every Bancuh DNS outage came from the code that updated the servers, not the code that served DNS. A k3s experiment, self-updating servers, the OOM killer, a growing list on a small budget, and a certificate bug my own habits were hiding.</description><pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate><category>dns</category><category>bancuh-dns</category><category>operations</category><category>bind</category></item><item><title>Building an AAC app for my kids</title><link>https://ragib.dev/writing/building-an-aac-app-for-my-kids/</link><guid isPermaLink="true">https://ragib.dev/writing/building-an-aac-app-for-my-kids/</guid><description>When my autistic kids needed a communication app, the good ones cost around USD 200 and the free one had stopped working properly. So I built GibTalk, and their early intervention centre helped shape it.</description><pubDate>Mon, 28 Sep 2026 20:00:00 GMT</pubDate><category>gibtalk</category><category>aac</category><category>autism</category><category>react-native</category></item><item><title>A passing comment, and my first Rust project</title><link>https://ragib.dev/writing/learning-rust-for-a-blocklist-compiler/</link><guid isPermaLink="true">https://ragib.dev/writing/learning-rust-for-a-blocklist-compiler/</guid><description>How a colleague&apos;s offhand remark got me learning Rust, and how rewriting Bancuh DNS&apos;s blocklist compiler let every server build its own list at startup.</description><pubDate>Mon, 28 Sep 2026 18:00:00 GMT</pubDate><category>rust</category><category>dns</category><category>bancuh-dns</category></item><item><title>The user who wouldn&apos;t let me turn it off</title><link>https://ragib.dev/writing/the-user-who-wouldnt-let-me-turn-it-off/</link><guid isPermaLink="true">https://ragib.dev/writing/the-user-who-wouldnt-let-me-turn-it-off/</guid><description>In 2017 I shut down my free adblock DNS to save money. A user in Vietnam tracked me down on Facebook, and over the next few years, his requests shaped much of what Bancuh DNS became.</description><pubDate>Mon, 28 Sep 2026 12:00:00 GMT</pubDate><category>dns</category><category>bancuh-dns</category><category>self-hosting</category></item><item><title>Blocking ads for the whole house: how Bancuh DNS started</title><link>https://ragib.dev/writing/how-bancuh-dns-started/</link><guid isPermaLink="true">https://ragib.dev/writing/how-bancuh-dns-started/</guid><description>In 2015 I was learning web hosting and realised a DNS server could block ads for every device at home. It started on a Raspberry Pi, and eleven years later it&apos;s still running.</description><pubDate>Mon, 28 Sep 2026 00:00:00 GMT</pubDate><category>dns</category><category>bancuh-dns</category><category>raspberry-pi</category><category>self-hosting</category></item></channel></rss>