<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Jathurchan Selvakumar — Writing</title><description>Jathurchan Selvakumar — Software Engineer &amp; SRE at Google. I build systems that survive failure: distributed systems, observability, and RaftLock, a Raft-based distributed lock in Go.</description><link>https://jat.work/</link><language>en-us</language><item><title>RaftLock: a distributed lock that survives crashes</title><link>https://jat.work/blog/raftlock-a-distributed-lock-that-survives-crashes/</link><guid isPermaLink="true">https://jat.work/blog/raftlock-a-distributed-lock-that-survives-crashes/</guid><description>Why I built a Raft-based distributed lock from scratch in Go — and how its five layers fit together.</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate><category>Distributed Systems</category></item><item><title>Inside RaftLock: the consensus engine</title><link>https://jat.work/blog/raftlock-the-consensus-engine/</link><guid isPermaLink="true">https://jat.work/blog/raftlock-the-consensus-engine/</guid><description>Leader election, log replication, a single-threaded core, and the simulation framework I used to trust it.</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate><category>Distributed Systems</category></item><item><title>Inside RaftLock: a storage engine built for one job</title><link>https://jat.work/blog/raftlock-a-storage-engine-built-for-one-job/</link><guid isPermaLink="true">https://jat.work/blog/raftlock-a-storage-engine-built-for-one-job/</guid><description>Why I wrote a custom append-only log instead of reaching for RocksDB — and how it survives a crash mid-write.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate><category>Distributed Systems</category></item><item><title>Inside RaftLock: the state machine behind the lock</title><link>https://jat.work/blog/raftlock-the-state-machine-behind-the-lock/</link><guid isPermaLink="true">https://jat.work/blog/raftlock-the-state-machine-behind-the-lock/</guid><description>Heaps for expiration and priority, an LRU read cache, and the snapshot detail that channels can&apos;t survive.</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate><category>Distributed Systems</category></item><item><title>Inside RaftLock: the integration layer</title><link>https://jat.work/blog/raftlock-the-integration-layer/</link><guid isPermaLink="true">https://jat.work/blog/raftlock-the-integration-layer/</guid><description>Turning asynchronous Raft replication into a synchronous gRPC reply — and the tracker that makes it work.</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate><category>Distributed Systems</category></item><item><title>Inside RaftLock: a smart client for a hard problem</title><link>https://jat.work/blog/raftlock-a-smart-client-for-a-hard-problem/</link><guid isPermaLink="true">https://jat.work/blog/raftlock-a-smart-client-for-a-hard-problem/</guid><description>Leader discovery, retries with jitter, fencing tokens, and auto-renewal — hiding distributed consensus behind a clean SDK.</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate><category>Distributed Systems</category></item></channel></rss>