<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Backend on Escalopa</title><link>https://escalopa.com/en/categories/backend/</link><description>Recent content in Backend 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>Tue, 16 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://escalopa.com/en/categories/backend/index.xml" rel="self" type="application/rss+xml"/><item><title>Designing Evolvable REST APIs</title><link>https://escalopa.com/en/posts/designing-evolvable-rest-apis/</link><pubDate>Wed, 10 Jun 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/designing-evolvable-rest-apis/</guid><description>Compatibility comes from additive change, explicit semantics, and a deprecation path clients can observe.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/designing-evolvable-rest-apis/featured.svg"/></item><item><title>gRPC Deadlines and Error Semantics</title><link>https://escalopa.com/en/posts/grpc-deadlines-and-error-semantics/</link><pubDate>Wed, 02 Oct 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/grpc-deadlines-and-error-semantics/</guid><description>Deadlines cross service boundaries; status codes must separate retryable transport conditions from domain outcomes.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/grpc-deadlines-and-error-semantics/featured.svg"/></item><item><title>OpenAPI as an Executable Contract</title><link>https://escalopa.com/en/posts/openapi-as-an-executable-contract/</link><pubDate>Wed, 23 Jul 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/openapi-as-an-executable-contract/</guid><description>Treat the schema as reviewed source code and test implementations and clients against it.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/openapi-as-an-executable-contract/featured.svg"/></item><item><title>Cursor Pagination That Survives Concurrent Writes</title><link>https://escalopa.com/en/posts/cursor-pagination-that-survives-concurrent-writes/</link><pubDate>Fri, 19 Jul 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/cursor-pagination-that-survives-concurrent-writes/</guid><description>A cursor must encode a stable total ordering, not merely an offset into changing rows.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/cursor-pagination-that-survives-concurrent-writes/featured.svg"/></item><item><title>Idempotency Keys for Write APIs</title><link>https://escalopa.com/en/posts/idempotency-keys-for-write-apis/</link><pubDate>Tue, 24 Dec 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/idempotency-keys-for-write-apis/</guid><description>Bind a client key to request identity and persist the decided response for the retry window.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/idempotency-keys-for-write-apis/featured.svg"/></item><item><title>OAuth 2.0 Boundaries for Backend Engineers</title><link>https://escalopa.com/en/posts/oauth-2-0-boundaries-for-backend-engineers/</link><pubDate>Tue, 23 Sep 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/oauth-2-0-boundaries-for-backend-engineers/</guid><description>Validate issuer, audience, signature, expiry, and scopes at the resource boundary.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/oauth-2-0-boundaries-for-backend-engineers/featured.svg"/></item><item><title>Webhooks That Can Be Retried Safely</title><link>https://escalopa.com/en/posts/webhooks-that-can-be-retried-safely/</link><pubDate>Tue, 10 Dec 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/webhooks-that-can-be-retried-safely/</guid><description>Sign payloads, preserve event identity, acknowledge quickly, and make processing replay-safe.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/webhooks-that-can-be-retried-safely/featured.svg"/></item><item><title>Rate Limiting With Token Buckets</title><link>https://escalopa.com/en/posts/rate-limiting-with-token-buckets/</link><pubDate>Sat, 14 Sep 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/rate-limiting-with-token-buckets/</guid><description>Token buckets express sustained rate and burst capacity while keeping admission decisions cheap.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/rate-limiting-with-token-buckets/featured.svg"/></item><item><title>Validating Requests Without Leaking Internals</title><link>https://escalopa.com/en/posts/validating-requests-without-leaking-internals/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/validating-requests-without-leaking-internals/</guid><description>Separate syntactic validation, domain rules, and authorization, then return stable problem details.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/validating-requests-without-leaking-internals/featured.svg"/></item><item><title>API Versioning Without Permanent Forks</title><link>https://escalopa.com/en/posts/api-versioning-without-permanent-forks/</link><pubDate>Fri, 24 Jan 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/api-versioning-without-permanent-forks/</guid><description>Prefer compatible evolution; version only when semantics truly conflict and plan convergence.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/api-versioning-without-permanent-forks/featured.svg"/></item><item><title>Designing Batch Endpoints</title><link>https://escalopa.com/en/posts/designing-batch-endpoints/</link><pubDate>Sun, 10 Nov 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/designing-batch-endpoints/</guid><description>Batch APIs need per-item outcomes, bounded size, deterministic identity, and explicit atomicity.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/designing-batch-endpoints/featured.svg"/></item><item><title>Safe File Upload Pipelines</title><link>https://escalopa.com/en/posts/safe-file-upload-pipelines/</link><pubDate>Tue, 05 Nov 2024 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/safe-file-upload-pipelines/</guid><description>Stream with hard limits, quarantine content, verify type independently, and decouple scanning from trust.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/safe-file-upload-pipelines/featured.svg"/></item><item><title>Integrating Unreliable Third-Party APIs</title><link>https://escalopa.com/en/posts/integrating-unreliable-third-party-apis/</link><pubDate>Mon, 07 Jul 2025 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/integrating-unreliable-third-party-apis/</guid><description>Put timeouts, quotas, translation, idempotency, and observability behind an anti-corruption layer.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/integrating-unreliable-third-party-apis/featured.svg"/></item><item><title>WebSockets With Bounded Resources</title><link>https://escalopa.com/en/posts/websockets-with-bounded-resources/</link><pubDate>Tue, 16 Jun 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/websockets-with-bounded-resources/</guid><description>Every connection needs limits for authentication, queues, heartbeats, fan-out, and shutdown.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/websockets-with-bounded-resources/featured.svg"/></item><item><title>GraphQL N Plus One and DataLoader</title><link>https://escalopa.com/en/posts/graphql-n-plus-one-and-dataloader/</link><pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate><author>ahmed.helaly.dev@google.com (Ahmed Helaly)</author><guid>https://escalopa.com/en/posts/graphql-n-plus-one-and-dataloader/</guid><description>Batching fixes duplicate fetch shape only when caching scope and authorization remain request-local.</description><media:content xmlns:media="http://search.yahoo.com/mrss/" url="https://escalopa.com/en/posts/graphql-n-plus-one-and-dataloader/featured.svg"/></item></channel></rss>