<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Dakshin</title>
    <link>https://www.dakshin.cc/</link>
    <description>Recent content on Dakshin</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Sat, 26 Sep 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://www.dakshin.cc/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Salesforce SMTS Interview Experience</title>
      <link>https://www.dakshin.cc/blogs/salesforce-smts-interview-experience/</link>
      <pubDate>Sat, 26 Sep 2026 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/salesforce-smts-interview-experience/</guid>
      <description>&lt;p&gt;I recently cleared the interview process for a &lt;strong&gt;Senior Member of Technical Staff (SMTS)&lt;/strong&gt; role at &lt;strong&gt;Salesforce&lt;/strong&gt;. To help others preparing for senior engineering roles, I’m sharing my complete experience here.&lt;/p&gt;&#xA;&lt;p&gt;The loop heavily evaluated &lt;strong&gt;DSA&lt;/strong&gt;, Low-Level Design (&lt;strong&gt;LLD&lt;/strong&gt;), High-Level Design (&lt;strong&gt;HLD&lt;/strong&gt;), and deep-dives into my past work experiences. Overall, the rounds were rigorous but collaborative, practical, and grounded in real-world problem-solving.&lt;/p&gt;&#xA;&lt;h2 id=&#34;the-interview-loop&#34;&gt;The Interview Loop&lt;/h2&gt;&#xA;&lt;p&gt;The entire process was fast-paced, taking around 2–3 weeks from start to finish. The loop was a mix of virtual and on-site stages, and each round was an elimination round.&lt;/p&gt;</description>
    </item>
    <item>
      <title>How Kafka and Nginx Move Data Faster: The Magic of Zero Copy</title>
      <link>https://www.dakshin.cc/blogs/how-kafka-and-nginx-move-data-faster---the-magic-of-zero-copy/</link>
      <pubDate>Tue, 19 May 2026 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/how-kafka-and-nginx-move-data-faster---the-magic-of-zero-copy/</guid>
      <description>&lt;p&gt;Ever wonder how tools like Kafka, Nginx, Netty manage to saturate a 10Gbps network link while barely breaking a sweat on CPU usage?&lt;/p&gt;&#xA;&lt;p&gt;It’s not just efficient indexing. It’s because they understand a fundamental truth: The fastest way to move data is to never touch it.&lt;/p&gt;&#xA;&lt;h3 id=&#34;the-slow-way-traditional-copy&#34;&gt;The Slow Way: Traditional Copy&lt;/h3&gt;&#xA;&lt;p&gt;In a standard Java application, moving a file to a socket looks like this:&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Disk → Kernel Buffer: The OS reads data from the disk.&lt;/li&gt;&#xA;&lt;li&gt;Kernel Buffer → User Buffer: The OS copies data into your application&amp;rsquo;s memory (the byte[] array).&lt;/li&gt;&#xA;&lt;li&gt;User Buffer → Socket Buffer: Your app writes that array back to the OS.&lt;/li&gt;&#xA;&lt;li&gt;Socket Buffer → NIC: The OS moves it to the network card.&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;&lt;em&gt;4 context switches&lt;/em&gt;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Stop Debugging in the Dark: The &#34;Day Zero&#34; Observability Checklist</title>
      <link>https://www.dakshin.cc/blogs/stop-debugging-in-the-dark---the-day-zero-observability-checklist/</link>
      <pubDate>Mon, 20 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/stop-debugging-in-the-dark---the-day-zero-observability-checklist/</guid>
      <description>&lt;p&gt;&lt;p class=&#34;text-center&#34;&gt;&#xA;  &lt;img src=&#34;https://www.dakshin.cc/blogs/day_zero_observability.png&#34; alt=&#34;Day Zero Observability&#34; class=&#34;img-fluid&#34;  /&gt;&#xA;  &#xA;&lt;/p&gt;&lt;/p&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;I recently read a fascinating post by &lt;strong&gt;Picnic Engineering&lt;/strong&gt; titled &amp;ldquo;&lt;a href=&#34;https://blog.picnic.nl/bringing-observability-to-the-workstation-3d3233ef3a14&#34;&gt;Bringing Observability to the Workstation&lt;/a&gt;.&amp;rdquo; It’s a great reminder that &amp;ldquo;clean code&amp;rdquo; isn&amp;rsquo;t enough if you have zero visibility into your production environment.&lt;/p&gt;&lt;/blockquote&gt;&#xA;&lt;p&gt;In our fast-paced industry, we often prioritize shipping features over building insights. We tell ourselves we’ll add monitoring &amp;ldquo;later,&amp;rdquo; only to find ourselves blind when the first production incident occurs.&lt;/p&gt;&#xA;&lt;p&gt;Waiting for a bug to happen before setting up observability is a high-stakes gamble. It is always better to establish a &amp;ldquo;bare minimum&amp;rdquo; layer from the start.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Kafka Under the Hood: A Visual Guide to KRaft and Internal Architecture (2026)</title>
      <link>https://www.dakshin.cc/blogs/kafka-under-the-hood---a-visual-guide-to-kraft-and-internal-architecture-2026/</link>
      <pubDate>Sun, 15 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/kafka-under-the-hood---a-visual-guide-to-kraft-and-internal-architecture-2026/</guid>
      <description>&lt;p&gt;&lt;strong&gt;Stop configuring ZooKeeper.&lt;/strong&gt; Seriously. In 2026, Apache Kafka is a leaner, meaner beast, managed entirely within its own ecosystem via &lt;strong&gt;KRaft&lt;/strong&gt;. But while the architecture has simplified on the surface, the &amp;lsquo;under-the-hood&amp;rsquo; mechanics of how the Control Plane (the brains) and the Data Plane (the muscle) actually collaborate are more critical than ever.&lt;/p&gt;&#xA;&lt;p&gt;The diagram below is your modern source of truth for the Kafka lifecycle.&lt;/p&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.dakshin.cc/blogs/kafka_kraft_architecture.png&#34;&gt;&lt;p class=&#34;text-center&#34;&gt;&#xA;  &lt;img src=&#34;https://www.dakshin.cc/blogs/kafka_kraft_architecture.png&#34; alt=&#34;Modern Kafka Architecture&#34; class=&#34;img-fluid&#34;  /&gt;&#xA;  &#xA;&lt;/p&gt;</description>
    </item>
    <item>
      <title>Under the Hood: Redis Enterprise Cluster</title>
      <link>https://www.dakshin.cc/blogs/under-the-hood---redis-enterprise-cluster/</link>
      <pubDate>Tue, 10 Feb 2026 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/under-the-hood---redis-enterprise-cluster/</guid>
      <description>&lt;p&gt;The power of Redis lies in its simplicity. &lt;strong&gt;&lt;em&gt;One thread, one event loop, zero locks&lt;/em&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Single-threaded execution eliminates the &amp;ldquo;lock contention&amp;rdquo; that slows down traditional databases.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;Limitation&lt;/strong&gt;: A single process can only utilise one CPU core. On a 64-core server, 98% of your hardware sits idle.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h4 id=&#34;redis-core-design&#34;&gt;Redis Core Design&lt;/h4&gt;&#xA;&lt;p&gt;&lt;a href=&#34;https://www.dakshin.cc/blogs/redis_core_design.png&#34;&gt;&lt;p class=&#34;text-center&#34;&gt;&#xA;  &lt;img src=&#34;https://www.dakshin.cc/blogs/redis_core_design.png&#34; alt=&#34;Redis Core Design&#34; class=&#34;img-fluid&#34;  /&gt;&#xA;  &#xA;&lt;/p&gt;&lt;/a&gt;&lt;/p&gt;&#xA;&lt;p&gt;To scale, Redis Enterprise doesn&amp;rsquo;t make the engine &amp;ldquo;bigger&amp;rdquo;; it makes the fleet smarter.&lt;/p&gt;&#xA;&lt;h2 id=&#34;key-design-decisions&#34;&gt;Key Design Decisions&lt;/h2&gt;&#xA;&lt;h3 id=&#34;1-one-core-to-many-multi-tenancy&#34;&gt;1. One Core to Many (Multi-Tenancy)&lt;/h3&gt;&#xA;&lt;p&gt;Instead of one massive process, Enterprise runs multiple Redis Cores (shards) on a single node.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Kafka - Achieving Exactly-Once Semantics (EOS)</title>
      <link>https://www.dakshin.cc/blogs/apache-kafka---achieving-exactly-once-semantics-eos/</link>
      <pubDate>Fri, 14 Nov 2025 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/apache-kafka---achieving-exactly-once-semantics-eos/</guid>
      <description>&lt;p&gt;In distributed systems, message delivery guarantees are one of the most critical design considerations. Every pipeline must answer a deceptively simple question: how many times will this message be processed?&lt;/p&gt;&#xA;&lt;p&gt;Traditionally, systems have offered two guarantees:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt; &lt;strong&gt;At-most-once delivery&lt;/strong&gt;: Messages are processed zero or one time. This avoids duplicates but risks data loss if failures occur.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt; &lt;strong&gt;At-least-once delivery&lt;/strong&gt;: Messages are processed one or more times. This ensures reliability but introduces duplicates that downstream systems must handle.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;In domains like payments, fraud detection, and compliance auditing, duplicates or lost events can have severe consequences.&lt;/p&gt;</description>
    </item>
    <item>
      <title>PostgreSQL Under Load - Part 2: Vacuum, Analyze, and Index</title>
      <link>https://www.dakshin.cc/blogs/postgresql-under-load-part-2/</link>
      <pubDate>Fri, 10 Oct 2025 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/postgresql-under-load-part-2/</guid>
      <description>&lt;p&gt;In Part 1, we tackled partitioning — the first step to keeping Postgres performant under heavy write loads. &lt;em&gt;Partitioning solved routing, not cleanup.&lt;/em&gt;&lt;/p&gt;&#xA;&lt;p&gt;Postgres uses &lt;strong&gt;MVCC (Multi-Version Concurrency Control)&lt;/strong&gt; to handle concurrent reads and writes. It’s brilliant, but it comes with a caveat: every update leaves behind dead tuples, every delete lingers until vacuumed, and every index quietly bloats over time.&lt;/p&gt;&#xA;&lt;p&gt;This post dives into the &lt;em&gt;cleanup side of scaling&lt;/em&gt;:&lt;/p&gt;</description>
    </item>
    <item>
      <title>PostgreSQL Under Load - Part 1: Partition Like a Pro</title>
      <link>https://www.dakshin.cc/blogs/postgresql-under-load-part-1/</link>
      <pubDate>Sat, 20 Sep 2025 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/postgresql-under-load-part-1/</guid>
      <description>&lt;p&gt;This post is split into two parts for brevity.&lt;/p&gt;&#xA;&lt;ol&gt;&#xA;&lt;li&gt;Part 1: Partition like a Pro&lt;/li&gt;&#xA;&lt;li&gt;Part 2: Vacuum, Analyze and Index&lt;/li&gt;&#xA;&lt;/ol&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s start by setting the scene.&lt;/p&gt;&#xA;&lt;p&gt;You&amp;rsquo;ve got a backend service humming in production - maybe its ingesting user events, transaction logs, or IoT metrics. Everything&amp;rsquo;s smooth until one day, your dashboards light up:&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt;  &lt;strong&gt;Insert latency spikes&lt;/strong&gt; from 10ms to 500ms.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt;  &lt;strong&gt;CPU usage climbs&lt;/strong&gt;, even though your queries haven&amp;rsquo;t changes.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt;  &lt;strong&gt;Auto-vacuum falls behind&lt;/strong&gt;, and your disk usage balloons overnight.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt;  A simple SELECT query takes 3 seconds.&#xA;&lt;em&gt;&lt;strong&gt;Three. Whole. Seconds.&lt;/strong&gt;&lt;/em&gt;&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;blockquote&gt;&#xA;&lt;p&gt;You check the table: &lt;em&gt;400 million rows&lt;/em&gt; ; No analytics - just trying to write fast and read fresh. But Postgres is groaning under the weight of your workload. It&amp;rsquo;s a &lt;strong&gt;write-heavy, recent-data problem&lt;/strong&gt; &amp;ndash; and Postgres can absolutely handle it, only if you treat it right.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Apache Kafka - The Architecture to Handle Billions of Events Per Day</title>
      <link>https://www.dakshin.cc/blogs/apache-kafka---the-architecture-to-handle-billions-of-events-per-day/</link>
      <pubDate>Wed, 20 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/apache-kafka---the-architecture-to-handle-billions-of-events-per-day/</guid>
      <description>&lt;p&gt;The modern digital world operates on an unprecedented volume of data. Every click, transaction, sensor reading, and user interaction is an &lt;strong&gt;event&lt;/strong&gt;, and the systems designed to process them must handle this stream in real-time, reliably, and at massive scale.&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;The Scale Challenge&lt;/strong&gt;&lt;/p&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt; &lt;strong&gt;LinkedIn&lt;/strong&gt;, Kafka’s creator, processes over &lt;strong&gt;7 trillion messages per day&lt;/strong&gt;.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt; &lt;strong&gt;Uber&lt;/strong&gt; handles trillions of messages and multiple petabytes of data daily,  from calculating ETAs to driver-rider matching.&lt;/li&gt;&#xA;&lt;li&gt;&lt;strong&gt;•&lt;/strong&gt; &lt;strong&gt;FinTech&lt;/strong&gt; companies handle over a &lt;strong&gt;billion events every day&lt;/strong&gt; to process transactions and real-time monitoring.&#xA;In this deep dive, we will move past the basic definitions of Kafka and explore the specific &lt;strong&gt;architectural patterns&lt;/strong&gt; and configuration &lt;strong&gt;tuning strategies&lt;/strong&gt; that allow Kafka to manage billions of events per day.&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;h3 id=&#34;the-three-pillars-of-kafka-scalability&#34;&gt;The Three Pillars of Kafka Scalability&lt;/h3&gt;&#xA;&lt;p&gt;Kafka&amp;rsquo;s remarkable scaling ability is rooted in a design philosophy that treats data not as records in a database, but as an &lt;strong&gt;immutable, distributed commit log&lt;/strong&gt;. This simple, yet powerful, concept allows it to sustain immense throughput.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inside the JVM - Profiling &amp; Diagnosing Memory Leaks in Java</title>
      <link>https://www.dakshin.cc/blogs/inside-the-jvm---profiling--diagnosing-memory-leaks-in-java/</link>
      <pubDate>Fri, 15 Aug 2025 00:00:00 +0000</pubDate>
      <guid>https://www.dakshin.cc/blogs/inside-the-jvm---profiling--diagnosing-memory-leaks-in-java/</guid>
      <description>&lt;p&gt;A few months back, while working on a backend service that used Drools for rule evaluation, I noticed something odd - JVM heap usage kept climbing, GC metrics were off, and eventually, the service crashed with an OutOfMemoryError. Profiling the JVM with VisualVM and Java Flight Recorder, and analyzing a heap dump revealed a memory leak tied to rule engine objects.&lt;/p&gt;&#xA;&lt;p&gt;The root cause? A Drool&amp;rsquo;s Session resource that wasn&amp;rsquo;t closed properly. That one oversight let to retained references, bloated heap and a production outage.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
