<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Reza Bina — Writing</title><description>Essays on privacy, on-device software, and the craft of building independent iOS apps.</description><link>https://reza-bina.com/</link><language>en-gb</language><item><title>How an iPhone app redacts a document without a server</title><link>https://reza-bina.com/writing/how-veil-redacts-a-document-on-device/</link><guid isPermaLink="true">https://reza-bina.com/writing/how-veil-redacts-a-document-on-device/</guid><description>Camera scan to encrypted vault: the on-device pipeline of an iPhone app that finds and removes the personal details in documents before you share them.</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate><category>On-device ML</category><category>Privacy</category><category>Architecture</category></item><item><title>The state machine that runs both my apps</title><link>https://reza-bina.com/writing/the-state-machine-that-runs-both-my-apps/</link><guid isPermaLink="true">https://reza-bina.com/writing/the-state-machine-that-runs-both-my-apps/</guid><description>How the same pure reducer runs a German-numbers game and an on-device redaction tool — choosing the pattern, building it, wiring async work into it, and extending it without the machine fighting back.</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate><category>Architecture</category><category>Swift Concurrency</category></item><item><title>How I moved ZumNum from Combine to Swift Concurrency</title><link>https://reza-bina.com/writing/the-state-machine-i-didnt-know-i-had/</link><guid isPermaLink="true">https://reza-bina.com/writing/the-state-machine-i-didnt-know-i-had/</guid><description>I spent a year building my German-numbers app on Combine, then deleted it in an afternoon. The move to async/await mattered, but the swap alone wouldn&apos;t have fixed the double-tap bug that started it. Here&apos;s what did.</description><pubDate>Mon, 27 Jul 2026 18:00:00 GMT</pubDate><category>Swift Concurrency</category><category>Combine</category><category>Architecture</category></item><item><title>A model is probabilistic. A checksum is a fact.</title><link>https://reza-bina.com/writing/a-model-is-probabilistic-a-checksum-is-a-fact/</link><guid isPermaLink="true">https://reza-bina.com/writing/a-model-is-probabilistic-a-checksum-is-a-fact/</guid><description>How Veil finds personal data in a document and actually removes it — an on-device NER model, a stack of deterministic validators, and the unglamorous work of cleaning up what the model gets wrong.</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate><category>On-device ML</category><category>Privacy</category></item><item><title>Why I build apps that can&apos;t see your data</title><link>https://reza-bina.com/writing/why-i-build-apps-that-cant-see-your-data/</link><guid isPermaLink="true">https://reza-bina.com/writing/why-i-build-apps-that-cant-see-your-data/</guid><description>The case for on-device software — and why &apos;we never see your data&apos; should be architectural, not a privacy-policy promise.</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate><category>Privacy</category><category>On-device</category></item></channel></rss>