<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Writing, by Rohit Swami</title>
    <link>https://rohitswami.com/writing/</link>
    <atom:link href="https://rohitswami.com/writing/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Long reads on software engineering and on the products I build, each with interactive figures.</description>
    <language>en</language>
    <lastBuildDate>Tue, 06 Oct 2026 09:00:00 +0530</lastBuildDate>
    <item>
      <title>A test that always fails isn&#x27;t flaky</title>
      <link>https://rohitswami.com/writing/a-test-that-always-fails-isnt-flaky/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/a-test-that-always-fails-isnt-flaky/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>Testing</category>
      <description>Failure rate ranks the wrong tests. What flakestat measures instead, why its verdicts wait for evidence, and the times it fooled itself before it could fool anyone else.</description>
    </item>
    <item>
      <title>Ten times faster, mostly by doing less</title>
      <link>https://rohitswami.com/writing/ten-times-faster-mostly-by-doing-less/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/ten-times-faster-mostly-by-doing-less/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>Data engineering</category>
      <description>I rebuilt a graph engine from R to Python and Polars, and it got ten times faster on 80% less memory. Very little of that came from changing languages.</description>
    </item>
    <item>
      <title>Push, don&#x27;t poll</title>
      <link>https://rohitswami.com/writing/push-dont-poll/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/push-dont-poll/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>Real-time systems</category>
      <description>Getting a notification from a background job to a browser in under 100 milliseconds is easy once. The hard parts arrive when it has to happen for everyone at once.</description>
    </item>
    <item>
      <title>Spot instances without the 3am page</title>
      <link>https://rohitswami.com/writing/spot-instances-without-the-3am-page/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/spot-instances-without-the-3am-page/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>Cloud infrastructure</category>
      <description>Spare cloud capacity is cheap until it&#x27;s taken back. Interruptions, checkpoints, retries and the spot/on-demand mix behind a batch pipeline bill that came down by 28%.</description>
    </item>
    <item>
      <title>Drawing a graph that&#x27;s too big to draw</title>
      <link>https://rohitswami.com/writing/drawing-a-graph-thats-too-big-to-draw/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/drawing-a-graph-thats-too-big-to-draw/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>Visualisation</category>
      <description>Spatial indexes, label placement, Barnes–Hut, culling, level of detail and a single event listener: the unglamorous techniques that make a huge biological network feel instant.</description>
    </item>
    <item>
      <title>Retrieval is the hard part</title>
      <link>https://rohitswami.com/writing/retrieval-is-the-hard-part/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/retrieval-is-the-hard-part/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>GenAI</category>
      <description>When a RAG system gives a bad answer, the model usually takes the blame. More often it was handed the wrong context. Embeddings, chunking, approximate search, hybrid ranking and reranking, seen from the retrieval side.</description>
    </item>
    <item>
      <title>A dataset is a product</title>
      <link>https://rohitswami.com/writing/a-dataset-is-a-product/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/a-dataset-is-a-product/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>Kaggle</category>
      <description>Five datasets and six notebooks on Kaggle, downloaded nearly 18,000 times and built on in 63 public notebooks. What it takes to make data that strangers can trust, from every NeurIPS paper to two million Indian companies, and the notebooks I built on top of my own datasets.</description>
    </item>
    <item>
      <title>Counting days the way the government does</title>
      <link>https://rohitswami.com/writing/counting-days-the-way-the-government-does/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/counting-days-the-way-the-government-does/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>CitizenDays</category>
      <description>Australia, Canada, the UK, the US and the Schengen area all limit how long you can be away, and no two count a day the same way. How CitizenDays turns trips into days, checks rolling windows without counting day by day, plans trips before they&#x27;re booked, and is a day stricter than one official calculator on purpose.</description>
    </item>
    <item>
      <title>A ledger its own server can&#x27;t read</title>
      <link>https://rohitswami.com/writing/a-ledger-its-own-server-cant-read/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/a-ledger-its-own-server-cant-read/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>ClearOwe</category>
      <description>ClearOwe keeps track of money between people. It works offline, follows you to a new phone and shares a balance by link, while the server in the middle learns almost nothing. Integer money, a parser for how people really talk about debts, sync that doesn&#x27;t trust clocks, and a key that lives after the # in a URL.</description>
    </item>
    <item>
      <title>Marked like the real thing</title>
      <link>https://rohitswami.com/writing/marked-like-the-real-thing/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/marked-like-the-real-thing/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>Part 107 · ASVAB · CitizenOz</category>
      <description>Three exam-prep apps, for the FAA drone licence, the US military&#x27;s enlistment test and the Australian citizenship test, run on one engine. What it takes for practice to predict the real exam honestly: tests shaped like the real one, marked by its rules, a syllabus with no gaps, and a readiness score that&#x27;s hard to flatter.</description>
    </item>
    <item>
      <title>A WhatsApp export is not a file format</title>
      <link>https://rohitswami.com/writing/a-whatsapp-export-is-not-a-file-format/</link>
      <guid isPermaLink="true">https://rohitswami.com/writing/a-whatsapp-export-is-not-a-file-format/</guid>
      <pubDate>Tue, 06 Oct 2026 09:00:00 +0530</pubDate>
      <dc:creator>Rohit Swami</dc:creator>
      <category>YAPD</category>
      <description>YAPD turns an exported chat into a Wrapped-style recap. Reading a format nobody designed, defining what a conversation is, letting a language model quote people without misquoting them, and sealing everything that leaves the device so that not even the server can read it.</description>
    </item>
  </channel>
</rss>
