<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Kartik Jain — Writing</title><description>Notes on backend engineering and security research by Kartik Jain.</description><link>https://jkartik.in/</link><language>en</language><item><title>The server can&apos;t read this: designing zero-knowledge sharing</title><link>https://jkartik.in/blog/zero-knowledge-sharing/</link><guid isPermaLink="true">https://jkartik.in/blog/zero-knowledge-sharing/</guid><description>How GhostShare shares notes and files in real time while making the server mathematically unable to read them — in-browser key derivation, AES-GCM, and direct-to-R2 encrypted uploads.</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate><category>Applied crypto</category></item><item><title>A B-Tree on disk: writing a storage engine from scratch</title><link>https://jkartik.in/blog/btree-storage-engine/</link><guid isPermaLink="true">https://jkartik.in/blog/btree-storage-engine/</guid><description>What actually happens between INSERT and the disk — building bad-db&apos;s on-disk format, a hand-rolled B-Tree index, tombstones, and compaction in plain Java.</description><pubDate>Thu, 16 Apr 2026 00:00:00 GMT</pubDate><category>Systems</category></item><item><title>Where LLM guardrails break: notes from running a jailbreak contest</title><link>https://jkartik.in/blog/where-llm-guardrails-break/</link><guid isPermaLink="true">https://jkartik.in/blog/where-llm-guardrails-break/</guid><description>I built a prompt-injection contest and handed a few hundred people a scoreboard and a reason to break it. Here&apos;s what actually cracks an LLM&apos;s guardrails — and what it means for defending them.</description><pubDate>Fri, 03 Apr 2026 00:00:00 GMT</pubDate><category>Security</category></item></channel></rss>