<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Karan Vijayakumar — Blog</title>
    <link>https://karanvk.me/blog</link>
    <atom:link href="https://karanvk.me/rss.xml" rel="self" type="application/rss+xml" />
    <description>Technical articles on Kubernetes, infrastructure, machine learning, and software development by Karan Vijayakumar.</description>
    <language>en-us</language>
    <lastBuildDate>Sun, 26 Jul 2026 20:08:40 GMT</lastBuildDate>
    <item>
      <title>Argo CD config management plugins: the escape hatch I keep reaching for</title>
      <link>https://karanvk.me/blog/argocd-cmp-plugins</link>
      <guid isPermaLink="true">https://karanvk.me/blog/argocd-cmp-plugins</guid>
      <pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate>
      <description>Notes from wiring CMP sidecars into a GPU fleet rollout: what plugin.yaml actually does, a SOPS plugin and a CUE plugin that earn their keep, and the ways all of this bites in production.</description>
    </item>
    <item>
      <title>Five nines is a boring number</title>
      <link>https://karanvk.me/blog/five-nines-boring</link>
      <guid isPermaLink="true">https://karanvk.me/blog/five-nines-boring</guid>
      <pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate>
      <description>Five nines is 5.26 minutes of downtime a year, which rules out heroics by arithmetic. Looking back two years later at what actually moved the number, what only looked like reliability work, and why almost all of it came from changing client behavior rather than adding capacity.</description>
    </item>
    <item>
      <title>eBPF on a robot fleet at under 1% CPU</title>
      <link>https://karanvk.me/blog/ebpf-robot-fleet</link>
      <guid isPermaLink="true">https://karanvk.me/blog/ebpf-robot-fleet</guid>
      <pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate>
      <description>Notes on a Rust and Aya agent that captured scheduler, disk, and socket metrics across a fleet of warehouse robots: why devices are the worst observability target, how the CPU budget became a test, and the map that filled up and made everything look wonderful.</description>
    </item>
    <item>
      <title>MIG profiles are a bin-packing problem you solve with types</title>
      <link>https://karanvk.me/blog/mig-bin-packing-cue</link>
      <guid isPermaLink="true">https://karanvk.me/blog/mig-bin-packing-cue</guid>
      <pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate>
      <description>GPU partitioning config is a combinatorial mess where a wrong answer does not crash, it just leaves very expensive silicon idle. Why Helm values files could not hold it, and what happened when I moved the whole thing into CUE constraints.</description>
    </item>
    <item>
      <title>Where Terraform ends and Argo CD begins</title>
      <link>https://karanvk.me/blog/terraform-argocd-boundary</link>
      <guid isPermaLink="true">https://karanvk.me/blog/terraform-argocd-boundary</guid>
      <pubDate>Sat, 09 May 2026 00:00:00 GMT</pubDate>
      <description>Two weeks into a lights-out GitOps rewrite for a GPU fleet, the hard question is not which tool to use, it is which tool owns what. The line I drew, the gray zone where every argument actually happens, and why the bootstrap handoff is a real design decision.</description>
    </item>
    <item>
      <title>Sub-millisecond overhead at 100K req/s: what Tokio taught me about tail latency</title>
      <link>https://karanvk.me/blog/tokio-tail-latency</link>
      <guid isPermaLink="true">https://karanvk.me/blog/tokio-tail-latency</guid>
      <pubDate>Sat, 25 Apr 2026 00:00:00 GMT</pubDate>
      <description>A retrospective on the gRPC gateway I ran at Sales Marker: the p99 budget that shaped every decision, the Tokio habits that held it, and the discovery that our worst tail latency lived in HTTP/2 flow control rather than in our code.</description>
    </item>
    <item>
      <title>The node that lies: cordon, drain, recycle before it corrupts inference</title>
      <link>https://karanvk.me/blog/the-node-that-lies</link>
      <guid isPermaLink="true">https://karanvk.me/blog/the-node-that-lies</guid>
      <pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate>
      <description>A GPU node with intermittent NVLink faults quietly returned wrong inference results for most of a day without ever failing a health check. This is the controller we built so it cannot happen twice: DCGM signals in, a policy engine deciding cordon versus drain versus recycle, checkpoint-aware draining, and the false positives that cost me eleven nodes.</description>
    </item>
    <item>
      <title>Xid 79 and friends: a field guide to dying GPUs</title>
      <link>https://karanvk.me/blog/xid-field-guide</link>
      <guid isPermaLink="true">https://karanvk.me/blog/xid-field-guide</guid>
      <pubDate>Sun, 22 Mar 2026 00:00:00 GMT</pubDate>
      <description>What Xid errors actually are, which ones mean a GPU is about to die and which ones are just an application bug that wakes you up for nothing, how correctable and uncorrectable ECC differ, why row-remap-pending is the canary, and the dcgm-exporter metrics and alert rules I settled on.</description>
    </item>
    <item>
      <title>First month with a 10 MW GPU fleet: everything I had to unlearn</title>
      <link>https://karanvk.me/blog/first-month-gpu-fleet</link>
      <guid isPermaLink="true">https://karanvk.me/blog/first-month-gpu-fleet</guid>
      <pubDate>Sun, 08 Mar 2026 00:00:00 GMT</pubDate>
      <description>Notes from five weeks on an accelerator fleet: why compute measured in megawatts breaks CPU-land instincts, what DCGM and Xid and MIG mean day to day, and the naive question I asked in week one that reframed the whole job.</description>
    </item>
    <item>
      <title>A Prometheus metric walks into Karpenter</title>
      <link>https://karanvk.me/blog/prometheus-karpenter-control-loop</link>
      <guid isPermaLink="true">https://karanvk.me/blog/prometheus-karpenter-control-loop</guid>
      <pubDate>Sat, 21 Feb 2026 00:00:00 GMT</pubDate>
      <description>CPU requests are fiction, so scaling on pending pods is scaling on fiction. Notes on a small controller that fed real Prometheus signals into Karpenter capacity, held 99.99% at 98% utilization, and flapped badly before it did.</description>
    </item>
    <item>
      <title>Leaving Datadog at 2 TB/hour: the bill that made us build our own</title>
      <link>https://karanvk.me/blog/leaving-datadog</link>
      <guid isPermaLink="true">https://karanvk.me/blog/leaving-datadog</guid>
      <pubDate>Sat, 07 Feb 2026 00:00:00 GMT</pubDate>
      <description>The renewal quote that started it, the order we migrated in (Loki, then Mimir, then Tempo), everything that broke on the way, and the honest ledger with hindsight.</description>
    </item>
    <item>
      <title>2025 in review: two thousand vCPUs and one quiet pager</title>
      <link>https://karanvk.me/blog/2025-in-review</link>
      <guid isPermaLink="true">https://karanvk.me/blog/2025-in-review</guid>
      <pubDate>Tue, 30 Dec 2025 00:00:00 GMT</pubDate>
      <description>A year-ender written in an empty Tokyo office: the numbers that held, the two things I shipped that mattered, the failure I did not see coming, and what has been pulling at my curiosity all year.</description>
    </item>
    <item>
      <title>Advent of Code as a performance sport</title>
      <link>https://karanvk.me/blog/advent-of-code-leaderboard</link>
      <guid isPermaLink="true">https://karanvk.me/blog/advent-of-code-leaderboard</guid>
      <pubDate>Sun, 21 Dec 2025 00:00:00 GMT</pubDate>
      <description>Puzzles unlock at 2pm in Tokyo, which makes December a lunch-break sport. Notes on the rig, the day 15 run that finished second globally, and why unreadable code is fine for exactly one month a year.</description>
    </item>
    <item>
      <title>Self-hosting LGTM, one year in: the honest ledger</title>
      <link>https://karanvk.me/blog/lgtm-one-year-ledger</link>
      <guid isPermaLink="true">https://karanvk.me/blog/lgtm-one-year-ledger</guid>
      <pubDate>Sat, 08 Nov 2025 00:00:00 GMT</pubDate>
      <description>A year of running Loki, Mimir and Tempo ourselves at over 2 TB an hour: what the infrastructure actually costs, how much upgrade toil is real, what it feels like to be on call for your own observability, and what I would do differently.</description>
    </item>
    <item>
      <title>Interviewing SREs in Tokyo: what I actually ask</title>
      <link>https://karanvk.me/blog/interviewing-sres-tokyo</link>
      <guid isPermaLink="true">https://karanvk.me/blog/interviewing-sres-tokyo</guid>
      <pubDate>Sat, 20 Sep 2025 00:00:00 GMT</pubDate>
      <description>Two years on the hiring side of an SRE loop in Tokyo: the questions I dropped, the four I kept, and what a candidate correcting themselves twenty minutes late taught me about signal.</description>
    </item>
    <item>
      <title>Teaching deploys to read the SLO first</title>
      <link>https://karanvk.me/blog/slo-gated-deploys</link>
      <guid isPermaLink="true">https://karanvk.me/blog/slo-gated-deploys</guid>
      <pubDate>Sat, 09 Aug 2025 00:00:00 GMT</pubDate>
      <description>A single deploy ate a third of a monthly error budget in fifty minutes. So I wired multi-window burn-rate queries into the pipeline as a promotion gate, plus a watcher that reverts on fast burn. Honest notes on what it catches and where it is still duct tape.</description>
    </item>
    <item>
      <title>98% utilization without paging anyone</title>
      <link>https://karanvk.me/blog/against-headroom</link>
      <guid isPermaLink="true">https://karanvk.me/blog/against-headroom</guid>
      <pubDate>Sat, 28 Jun 2025 00:00:00 GMT</pubDate>
      <description>Idle capacity is organizational anxiety, billed hourly. How priority classes, bin-packing discipline and a predictive capacity loop let us run a 2000 vCPU estate near full without trading away availability.</description>
    </item>
    <item>
      <title>Rust is my infrastructure language and I&apos;m done apologizing for it</title>
      <link>https://karanvk.me/blog/rust-infrastructure-language</link>
      <guid isPermaLink="true">https://karanvk.me/blog/rust-infrastructure-language</guid>
      <pubDate>Sat, 17 May 2025 00:00:00 GMT</pubDate>
      <description>The stock objections to Rust in infrastructure, answered from three systems I actually shipped: a rate limiter, an eBPF agent on a robot fleet, and the gRPC gateway I run today. Including the places I still reach for Go and Python.</description>
    </item>
    <item>
      <title>The router that failed over by itself</title>
      <link>https://karanvk.me/blog/l4-failover</link>
      <guid isPermaLink="true">https://karanvk.me/blog/l4-failover</guid>
      <pubDate>Sat, 05 Apr 2025 00:00:00 GMT</pubDate>
      <description>Why we put a layer-4 router under long-lived gRPC traffic instead of another L7 proxy, and why the routing was the easy part. Health scoring, split-brain protection, failback hysteresis, and the AZ brownout we found out about from a graph at standup.</description>
    </item>
    <item>
      <title>Every exporter is a liability</title>
      <link>https://karanvk.me/blog/exporter-liability</link>
      <guid isPermaLink="true">https://karanvk.me/blog/exporter-liability</guid>
      <pubDate>Sat, 22 Feb 2025 00:00:00 GMT</pubDate>
      <description>An exporter is production code with a scrape target stapled to it, and most teams audit neither half. Notes from running a 50K samples/second metrics pipeline: the cardinality incident, drop rules that actually work, and the quality bar I ended up enforcing.</description>
    </item>
    <item>
      <title>Competitive programming made me a worse engineer, then a better one</title>
      <link>https://karanvk.me/blog/competitive-programming-engineer</link>
      <guid isPermaLink="true">https://karanvk.me/blog/competitive-programming-engineer</guid>
      <pubDate>Sat, 18 Jan 2025 00:00:00 GMT</pubDate>
      <description>Contests gave me habits that broke production code and instincts that now save it. A story about a rate limiter I could not read, and what I kept after I stopped writing like a contestant.</description>
    </item>
    <item>
      <title>Kubernetes Networking Deep Dive: Understanding Service Types</title>
      <link>https://karanvk.me/blog/kubernetes-networking-services</link>
      <guid isPermaLink="true">https://karanvk.me/blog/kubernetes-networking-services</guid>
      <pubDate>Sun, 08 Dec 2024 00:00:00 GMT</pubDate>
      <description>A comprehensive guide to Kubernetes networking and all service types with detailed explanations, use cases, and architecture diagrams.</description>
    </item>
    <item>
      <title>Past, Present, and Future of React State Management</title>
      <link>https://karanvk.me/blog/react-state-management</link>
      <guid isPermaLink="true">https://karanvk.me/blog/react-state-management</guid>
      <pubDate>Sun, 10 Mar 2024 00:00:00 GMT</pubDate>
      <description>A comprehensive look at the evolution of state management in React applications, from Redux to React Server Components.</description>
    </item>
    <item>
      <title>Rust Is The Future of JavaScript Infrastructure</title>
      <link>https://karanvk.me/blog/rust</link>
      <guid isPermaLink="true">https://karanvk.me/blog/rust</guid>
      <pubDate>Tue, 20 Feb 2024 00:00:00 GMT</pubDate>
      <description>Why Rust is taking over the JavaScript tooling ecosystem, and what this means for web developers.</description>
    </item>
    <item>
      <title>Everything I Know About Style Guides, Component Libraries, and Design Systems</title>
      <link>https://karanvk.me/blog/style-guides-component-libraries-design-systems</link>
      <guid isPermaLink="true">https://karanvk.me/blog/style-guides-component-libraries-design-systems</guid>
      <pubDate>Mon, 15 Jan 2024 00:00:00 GMT</pubDate>
      <description>A deep dive into creating scalable design systems and component libraries that help teams build consistent, maintainable, and beautiful user interfaces.</description>
    </item>
    <item>
      <title>Welcome to my new blog!</title>
      <link>https://karanvk.me/blog/hello</link>
      <guid isPermaLink="true">https://karanvk.me/blog/hello</guid>
      <pubDate>Thu, 23 Mar 2023 00:00:00 GMT</pubDate>
      <description>Introducing the new blog - A journey into AI, ML, and software engineering.</description>
    </item>
  </channel>
</rss>