<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Go on Escalopa</title><link>https://escalopa.com/en/tags/go/</link><description>Recent content in Go on Escalopa</description><generator>Hugo -- gohugo.io</generator><language>en</language><managingEditor>ahmed.helaly.dev@google.com (Ahmed Helaly)</managingEditor><webMaster>ahmed.helaly.dev@google.com (Ahmed Helaly)</webMaster><copyright>© 2026 Ahmed Helaly</copyright><lastBuildDate>Sun, 28 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://escalopa.com/en/tags/go/index.xml" rel="self" type="application/rss+xml"/><item><title>Designing Bounded Worker Pools in Go</title><link>https://escalopa.com/en/posts/designing-bounded-worker-pools-in-go/</link><pubDate>Fri, 26 Dec 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/designing-bounded-worker-pools-in-go/</guid><description>Bound concurrency at the admission point so overload becomes visible and controllable.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/designing-bounded-worker-pools-in-go/featured.svg"/></item><item><title>Cancellation That Actually Propagates in Go</title><link>https://escalopa.com/en/posts/cancellation-that-actually-propagates-in-go/</link><pubDate>Wed, 10 Sep 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/cancellation-that-actually-propagates-in-go/</guid><description>A context is useful only when every blocking boundary observes it and cleanup has a clear owner.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/cancellation-that-actually-propagates-in-go/featured.svg"/></item><item><title>Error Chains You Can Operate in Go</title><link>https://escalopa.com/en/posts/error-chains-you-can-operate-in-go/</link><pubDate>Sun, 14 Jul 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/error-chains-you-can-operate-in-go/</guid><description>Wrap errors for diagnosis, classify them for policy, and never make callers parse prose.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/error-chains-you-can-operate-in-go/featured.svg"/></item><item><title>Graceful Shutdown Without Dropping Requests</title><link>https://escalopa.com/en/posts/graceful-shutdown-without-dropping-requests/</link><pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/graceful-shutdown-without-dropping-requests/</guid><description>Shutdown is a protocol: stop admission, drain in-flight work, flush state, then release dependencies.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/graceful-shutdown-without-dropping-requests/featured.svg"/></item><item><title>Choosing Pointers and Values in Go APIs</title><link>https://escalopa.com/en/posts/choosing-pointers-and-values-in-go-apis/</link><pubDate>Sun, 01 Sep 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/choosing-pointers-and-values-in-go-apis/</guid><description>Choose receiver and parameter semantics from ownership, mutability, and copy cost rather than habit.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/choosing-pointers-and-values-in-go-apis/featured.svg"/></item><item><title>Making Go HTTP Clients Production Ready</title><link>https://escalopa.com/en/posts/making-go-http-clients-production-ready/</link><pubDate>Sun, 28 Jun 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/making-go-http-clients-production-ready/</guid><description>Timeouts, connection reuse, response draining, and retry policy belong in the client design.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/making-go-http-clients-production-ready/featured.svg"/></item><item><title>Table-Driven Tests That Stay Readable</title><link>https://escalopa.com/en/posts/table-driven-tests-that-stay-readable/</link><pubDate>Sat, 06 Jun 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/table-driven-tests-that-stay-readable/</guid><description>A good table captures behavior dimensions without hiding the arrange-act-assert story.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/table-driven-tests-that-stay-readable/featured.svg"/></item><item><title>Race-Free In-Memory Caches in Go</title><link>https://escalopa.com/en/posts/race-free-in-memory-caches-in-go/</link><pubDate>Thu, 31 Jul 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/race-free-in-memory-caches-in-go/</guid><description>Correct cache synchronization must cover compound operations, expiry, and loader duplication.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/race-free-in-memory-caches-in-go/featured.svg"/></item><item><title>When Channels Are the Wrong Abstraction</title><link>https://escalopa.com/en/posts/when-channels-are-the-wrong-abstraction/</link><pubDate>Wed, 20 Nov 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/when-channels-are-the-wrong-abstraction/</guid><description>Use channels for ownership transfer and coordination, not as a universal replacement for locks.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/when-channels-are-the-wrong-abstraction/featured.svg"/></item><item><title>Building Backpressure Into Go Pipelines</title><link>https://escalopa.com/en/posts/building-backpressure-into-go-pipelines/</link><pubDate>Sat, 05 Oct 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/building-backpressure-into-go-pipelines/</guid><description>A pipeline without bounded queues and cancellation is an outage amplifier.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/building-backpressure-into-go-pipelines/featured.svg"/></item><item><title>Profiling Go Services With pprof</title><link>https://escalopa.com/en/posts/profiling-go-services-with-pprof/</link><pubDate>Tue, 12 Aug 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/profiling-go-services-with-pprof/</guid><description>Profile the constrained resource under representative load before changing code.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/profiling-go-services-with-pprof/featured.svg"/></item><item><title>Reducing Allocations in Hot Go Paths</title><link>https://escalopa.com/en/posts/reducing-allocations-in-hot-go-paths/</link><pubDate>Thu, 12 Dec 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/reducing-allocations-in-hot-go-paths/</guid><description>Allocation work starts with profiles and escape analysis, then targets lifetime and representation.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/reducing-allocations-in-hot-go-paths/featured.svg"/></item><item><title>Safe Configuration Loading in Go</title><link>https://escalopa.com/en/posts/safe-configuration-loading-in-go/</link><pubDate>Thu, 07 May 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/safe-configuration-loading-in-go/</guid><description>Parse once, validate completely, expose immutable typed configuration, and fail before serving traffic.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/safe-configuration-loading-in-go/featured.svg"/></item><item><title>Functional Options Without API Confusion</title><link>https://escalopa.com/en/posts/functional-options-without-api-confusion/</link><pubDate>Thu, 23 Oct 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/functional-options-without-api-confusion/</guid><description>Options help optional construction only when defaults, validation, and option interaction remain obvious.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/functional-options-without-api-confusion/featured.svg"/></item><item><title>Interfaces at the Point of Use</title><link>https://escalopa.com/en/posts/interfaces-at-the-point-of-use/</link><pubDate>Sun, 25 Jan 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/interfaces-at-the-point-of-use/</guid><description>Small consumer-owned interfaces reduce coupling and make tests describe real dependencies.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/interfaces-at-the-point-of-use/featured.svg"/></item><item><title>Structured Concurrency Patterns in Go</title><link>https://escalopa.com/en/posts/structured-concurrency-patterns-in-go/</link><pubDate>Sat, 07 Dec 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/structured-concurrency-patterns-in-go/</guid><description>Child goroutines should share cancellation, error propagation, and a bounded lifetime with their parent.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/structured-concurrency-patterns-in-go/featured.svg"/></item><item><title>Avoiding Goroutine Leaks</title><link>https://escalopa.com/en/posts/avoiding-goroutine-leaks/</link><pubDate>Sun, 20 Oct 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/avoiding-goroutine-leaks/</guid><description>Every goroutine needs an exit condition that remains reachable when downstream work stops.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/avoiding-goroutine-leaks/featured.svg"/></item><item><title>Benchmarking Go Code Without Lying to Yourself</title><link>https://escalopa.com/en/posts/benchmarking-go-code-without-lying-to-yourself/</link><pubDate>Fri, 16 Aug 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/benchmarking-go-code-without-lying-to-yourself/</guid><description>Benchmarks need stable inputs, allocation reporting, multiple runs, and a comparison tied to user impact.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/benchmarking-go-code-without-lying-to-yourself/featured.svg"/></item><item><title>Designing Stable Go Packages</title><link>https://escalopa.com/en/posts/designing-stable-go-packages/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/designing-stable-go-packages/</guid><description>A package is stable when its responsibilities, exported surface, and dependency direction are narrow.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/designing-stable-go-packages/featured.svg"/></item><item><title>Building a Generic TTL Cache in Go</title><link>https://escalopa.com/en/posts/building-a-generic-ttl-cache-in-go/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/building-a-generic-ttl-cache-in-go/</guid><description>Generics can remove unsafe casts while explicit synchronization and expiry semantics preserve correctness.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/building-a-generic-ttl-cache-in-go/featured.svg"/></item></channel></rss>