<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Prasad Ekke</title>
    <link>https://prasadekke.com/blog/</link>
    <atom:link href="https://prasadekke.com/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Writing by Prasad Ekke on distributed systems, cloud infrastructure, performance engineering, and security platforms.</description>
    <language>en</language>
    <lastBuildDate>Tue, 29 Sep 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Channel Semaphore vs x/sync/semaphore: It&apos;s Not About Speed</title>
      <link>https://levelup.gitconnected.com/channel-semaphore-vs-x-sync-semaphore-its-not-about-speed-3b6c334f0b6a</link>
      <guid isPermaLink="true">https://levelup.gitconnected.com/channel-semaphore-vs-x-sync-semaphore-its-not-about-speed-3b6c334f0b6a</guid>
      <pubDate>Tue, 29 Sep 2026 00:00:00 GMT</pubDate>
      <description>Benchmarking chan struct{} against x/sync/semaphore shows the performance folklore is wrong; the differences that matter are semantic.</description>
    </item>
    <item>
      <title>errgroup Cancels Less Than You Think</title>
      <link>https://levelup.gitconnected.com/errgroup-cancels-less-than-you-think-10ee0fabc7b3</link>
      <guid isPermaLink="true">https://levelup.gitconnected.com/errgroup-cancels-less-than-you-think-10ee0fabc7b3</guid>
      <pubDate>Tue, 22 Sep 2026 00:00:00 GMT</pubDate>
      <description>errgroup.WithContext is a tiny API that keeps producing the same bugs. A look at its documented cancellation semantics, which are easy to assume rather than read.</description>
    </item>
    <item>
      <title>goleak Has a 450 Millisecond Attention Span</title>
      <link>https://levelup.gitconnected.com/goleak-has-a-450-millisecond-attention-span-388ef7decf39</link>
      <guid isPermaLink="true">https://levelup.gitconnected.com/goleak-has-a-450-millisecond-attention-span-388ef7decf39</guid>
      <pubDate>Tue, 15 Sep 2026 00:00:00 GMT</pubDate>
      <description>Why a green goleak test suite can coexist with goroutine counts that climb all week in production, and the narrower question goleak actually answers.</description>
    </item>
    <item>
      <title>Your Graceful Shutdown Probably Doesn&apos;t Drain</title>
      <link>https://levelup.gitconnected.com/your-graceful-shutdown-probably-doesnt-drain-691d0aa7fd75</link>
      <guid isPermaLink="true">https://levelup.gitconnected.com/your-graceful-shutdown-probably-doesnt-drain-691d0aa7fd75</guid>
      <pubDate>Wed, 09 Sep 2026 00:00:00 GMT</pubDate>
      <description>srv.Shutdown can return nil while every deploy still spikes 502s. What Go&apos;s Shutdown actually promises, and what it leaves for you to handle.</description>
    </item>
    <item>
      <title>Retries Can Make Outages Worse</title>
      <link>https://levelup.gitconnected.com/retries-can-make-outages-worse-c589e86bcfee</link>
      <guid isPermaLink="true">https://levelup.gitconnected.com/retries-can-make-outages-worse-c589e86bcfee</guid>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <description>Retries are one of the easiest resilience patterns to add and one of the easiest to get wrong, and a badly tuned retry can turn a blip into an outage.</description>
    </item>
    <item>
      <title>The Difference Between a Cache and a Lie</title>
      <link>https://medium.com/gitconnected/the-difference-between-a-cache-and-a-lie-0579ef4789f5</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/the-difference-between-a-cache-and-a-lie-0579ef4789f5</guid>
      <pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate>
      <description>A look at why caches are time-limited promises rather than sources of truth, and how explicit invalidation and failure handling keep them honest.</description>
    </item>
    <item>
      <title>Why I Prefer Boring Caches</title>
      <link>https://medium.com/gitconnected/why-i-prefer-boring-caches-a08c0e11cfea</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/why-i-prefer-boring-caches-a08c0e11cfea</guid>
      <pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate>
      <description>A case for simple, predictable caching strategies that degrade gracefully over clever optimizations that are hard to reason about.</description>
    </item>
    <item>
      <title>Determinism Is a Core Contract in Build Caching</title>
      <link>https://medium.com/gitconnected/determinism-is-a-core-contract-in-build-caching-2c9ede1ec948</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/determinism-is-a-core-contract-in-build-caching-2c9ede1ec948</guid>
      <pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate>
      <description>A practical look at why deterministic build outputs are essential for reliable caching, and the common sources of nondeterminism to watch for.</description>
    </item>
    <item>
      <title>Remote Execution, Explained for People Who Just Run make</title>
      <link>https://medium.com/gitconnected/remote-execution-explained-for-people-who-just-run-make-c5c767893e02</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/remote-execution-explained-for-people-who-just-run-make-c5c767893e02</guid>
      <pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate>
      <description>A practical introduction to remote execution, modeling builds as DAGs of deterministic actions that can be cached and distributed across machines.</description>
    </item>
    <item>
      <title>Go Slice Initialization Gotchas: The Hole-Creating Bug I Keep Seeing</title>
      <link>https://medium.com/gitconnected/go-slice-initialization-gotchas-the-hole-creating-bug-i-keep-seeing-and-a-linter-that-catches-it-9e7e4673cefd</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/go-slice-initialization-gotchas-the-hole-creating-bug-i-keep-seeing-and-a-linter-that-catches-it-9e7e4673cefd</guid>
      <pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate>
      <description>A look at a common Go bug from mixing make() with a non-zero length and append, and the makezero linter that catches it.</description>
    </item>
    <item>
      <title>Why I Always Specify Types for Constants in Go, and Name the Unit Too</title>
      <link>https://medium.com/@prasad.ekke/why-i-always-specify-types-for-constants-in-go-and-name-the-unit-too-ae0f3d298e00</link>
      <guid isPermaLink="true">https://medium.com/@prasad.ekke/why-i-always-specify-types-for-constants-in-go-and-name-the-unit-too-ae0f3d298e00</guid>
      <pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate>
      <description>A practical note on making Go constants explicit, readable, and harder to misuse by naming both the type and the unit.</description>
    </item>
    <item>
      <title>Container-Aware Resource Management in Go: The Problem, Go 1.25&apos;s Fix, and What&apos;s Still Missing</title>
      <link>https://medium.com/@prasad.ekke/container-aware-resource-management-in-go-the-problem-go-1-25s-fix-and-what-s-still-missing-211b2e3aeb76</link>
      <guid isPermaLink="true">https://medium.com/@prasad.ekke/container-aware-resource-management-in-go-the-problem-go-1-25s-fix-and-what-s-still-missing-211b2e3aeb76</guid>
      <pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate>
      <description>A practical look at Go resource management inside containers, the Go 1.25 improvements, and the gaps engineers still need to account for.</description>
    </item>
    <item>
      <title>Profiling a Go Service in Production: pprof in 10 Minutes</title>
      <link>https://medium.com/gitconnected/profiling-a-go-service-in-production-pprof-in-10-minutes-a46174e6ed24</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/profiling-a-go-service-in-production-pprof-in-10-minutes-a46174e6ed24</guid>
      <pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate>
      <description>A practical guide to enabling pprof, collecting CPU and heap profiles, reading flame graphs, and debugging Go services under real load.</description>
    </item>
    <item>
      <title>context.Context Is Not Optional: A Practical Guide to Cancellation in Go Services</title>
      <link>https://medium.com/gitconnected/context-context-is-not-optional-a-practical-guide-to-cancellation-in-go-services-350342cd992a</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/context-context-is-not-optional-a-practical-guide-to-cancellation-in-go-services-350342cd992a</guid>
      <pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate>
      <description>A practical guide to using context.Context as part of service design, cancellation, deadlines, and shutdown behavior in Go.</description>
    </item>
    <item>
      <title>Go Interfaces: Why Less Is Almost Always More</title>
      <link>https://medium.com/gitconnected/go-interfaces-why-less-is-almost-always-more-a7a2cbf3ec34</link>
      <guid isPermaLink="true">https://medium.com/gitconnected/go-interfaces-why-less-is-almost-always-more-a7a2cbf3ec34</guid>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
      <description>A short note on keeping Go interfaces small, behavior-focused, and easier to test and evolve.</description>
    </item>
    <item>
      <title>Three Go Concurrency Mistakes I See in Almost Every Worker Pool</title>
      <link>https://medium.com/@prasad.ekke/three-go-concurrency-mistakes-i-see-in-almost-every-worker-pool-480a7de51c43</link>
      <guid isPermaLink="true">https://medium.com/@prasad.ekke/three-go-concurrency-mistakes-i-see-in-almost-every-worker-pool-480a7de51c43</guid>
      <pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate>
      <description>A practical look at worker-pool mistakes around cancellation, channel ownership, and shutdown paths.</description>
    </item>
  </channel>
</rss>
