<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Ashwin Gopalsamy Library</title>
    <link>https://ashwingopalsamy.in/library</link>
    <atom:link href="https://ashwingopalsamy.in/library/feed.xml" rel="self" type="application/rss+xml"/>
    <description>Books, watching, notes, and links</description>
    <language>en</language>
    <item>
      <title>Designing Rate Limiters for Payment Systems</title>
      <link>https://ashwingopalsamy.in/library/notes/designing-rate-limiters-for-payment-systems</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/designing-rate-limiters-for-payment-systems</guid>
      <pubDate>Tue, 07 Apr 2026 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>Rate limiting in payment systems is different from rate limiting in a typical web API. A false positive -- rejecting a legitimate authorization -- is a failed transaction. A customer&apos;s card gets…</description>
    </item>
    <item>
      <title>Understanding ISO 8583 Bitmap Parsing</title>
      <link>https://ashwingopalsamy.in/library/notes/understanding-iso8583-bitmaps</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/understanding-iso8583-bitmaps</guid>
      <pubDate>Wed, 01 Apr 2026 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>Every ISO 8583 message begins with a Message Type Indicator (MTI), followed by one or two bitmaps that declare which data elements are present in the message. What is a Bitmap? A bitmap is a binary…</description>
    </item>
    <item>
      <title>Go Error Wrapping Patterns</title>
      <link>https://ashwingopalsamy.in/library/notes/go-error-wrapping</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-error-wrapping</guid>
      <pubDate>Sat, 28 Mar 2026 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>The pattern is the standard way to add context to errors in Go. But there are nuances worth knowing. Always wrap with context that answers &quot;what were you trying to do?&quot; not &quot;what went wrong?&quot; The…</description>
    </item>
    <item>
      <title>Anatomy of a Supply Chain Attack: LiteLLM on PyPI</title>
      <link>https://ashwingopalsamy.in/library/notes/litellm-supply-chain-attack</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/litellm-supply-chain-attack</guid>
      <pubDate>Wed, 25 Mar 2026 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>On March 24, 2026, Callum McMahon at FutureSearch was testing a Cursor MCP plugin that pulled in litellm as a transitive dependency. Shortly after, his machine became unresponsive. He traced it to a…</description>
    </item>
    <item>
      <title>Consistent Hashing in Distributed Caches</title>
      <link>https://ashwingopalsamy.in/library/notes/consistent-hashing-distributed-caches</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/consistent-hashing-distributed-caches</guid>
      <pubDate>Sun, 15 Mar 2026 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>When you distribute data across multiple cache nodes, the naive approach is modular hashing: . This works until you add or remove a node. The Problem with Modular Hashing If you have 4 nodes and add…</description>
    </item>
    <item>
      <title>Why slog Over zerolog</title>
      <link>https://ashwingopalsamy.in/library/notes/slog-structured-logging</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/slog-structured-logging</guid>
      <pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>Go 1.21 introduced in the standard library. For new projects, I now default to slog over zerolog. The API is cleaner, it is part of the standard library (no dependency), and the handler interface…</description>
    </item>
    <item>
      <title>Why UUIDs Matter for Idempotency</title>
      <link>https://ashwingopalsamy.in/library/notes/uuids-for-idempotency</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/uuids-for-idempotency</guid>
      <pubDate>Fri, 20 Feb 2026 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>In payment processing, processing the same authorization twice is worse than rejecting it. A customer charged twice loses trust immediately. Idempotency keys prevent this. The Problem A client sends…</description>
    </item>
    <item>
      <title>Cloud Native Go</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Mon, 05 Jan 2026 00:00:00 GMT</pubDate>
      <category>books</category>
    </item>
    <item>
      <title>Alex Edwards - Let&apos;s Go</title>
      <link>https://www.alexedwards.net/blog</link>
      <guid isPermaLink="false">https://www.alexedwards.net/blog</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>alexedwards.net</description>
    </item>
    <item>
      <title>Anton Zaides - All Articles</title>
      <link>https://antonz.org/all/</link>
      <guid isPermaLink="false">https://antonz.org/all/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>antonz.org</description>
    </item>
    <item>
      <title>Building Large Technical Projects</title>
      <link>https://mitchellh.com/writing/building-large-technical-projects</link>
      <guid isPermaLink="false">https://mitchellh.com/writing/building-large-technical-projects</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>mitchellh.com</description>
    </item>
    <item>
      <title>Cloudflare Blog</title>
      <link>https://blog.cloudflare.com/</link>
      <guid isPermaLink="false">https://blog.cloudflare.com/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>blog.cloudflare.com</description>
    </item>
    <item>
      <title>Dave Cheney&apos;s Blog</title>
      <link>https://dave.cheney.net/</link>
      <guid isPermaLink="false">https://dave.cheney.net/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>dave.cheney.net</description>
    </item>
    <item>
      <title>Effective Go</title>
      <link>https://go.dev/doc/effective_go</link>
      <guid isPermaLink="false">https://go.dev/doc/effective_go</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>go.dev</description>
    </item>
    <item>
      <title>How I Solved the 1BRC in Go</title>
      <link>https://benhoyt.com/writings/go-1brc/</link>
      <guid isPermaLink="false">https://benhoyt.com/writings/go-1brc/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>benhoyt.com</description>
    </item>
    <item>
      <title>Visualizing Go Concurrency</title>
      <link>https://divan.dev/posts/go_concurrency_visualize/</link>
      <guid isPermaLink="false">https://divan.dev/posts/go_concurrency_visualize/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>divan.dev</description>
    </item>
    <item>
      <title>Go for Industrial Programming</title>
      <link>https://peter.bourgon.org/go-for-industrial-programming/</link>
      <guid isPermaLink="false">https://peter.bourgon.org/go-for-industrial-programming/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>peter.bourgon.org</description>
    </item>
    <item>
      <title>How I Write HTTP Services in Go After 13 Years</title>
      <link>https://grafana.com/blog/how-i-write-http-services-in-go-after-13-years/</link>
      <guid isPermaLink="false">https://grafana.com/blog/how-i-write-http-services-in-go-after-13-years/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>grafana.com</description>
    </item>
    <item>
      <title>The Pragmatic Engineer</title>
      <link>https://blog.pragmaticengineer.com/</link>
      <guid isPermaLink="false">https://blog.pragmaticengineer.com/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>blog.pragmaticengineer.com</description>
    </item>
    <item>
      <title>Uber Engineering Blog</title>
      <link>https://www.uber.com/in/en/blog/engineering/</link>
      <guid isPermaLink="false">https://www.uber.com/in/en/blog/engineering/</guid>
      <pubDate>Thu, 01 Jan 2026 00:00:00 GMT</pubDate>
      <category>articles</category>
      <description>uber.com</description>
    </item>
    <item>
      <title>Go Maps Iteration Order</title>
      <link>https://ashwingopalsamy.in/library/notes/go-maps-iteration-order</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-maps-iteration-order</guid>
      <pubDate>Thu, 25 Dec 2025 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>I was working on a minimal word counter. Read from stdin, normalize the input, increment the value for the keys in a . The output looked sorted. Alphabetically sorted. I ran it again. Same order.…</description>
    </item>
    <item>
      <title>Database Internals</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Thu, 20 Nov 2025 00:00:00 GMT</pubDate>
      <category>books</category>
    </item>
    <item>
      <title>Floating-Point Tolerance Testing in Go</title>
      <link>https://ashwingopalsamy.in/library/notes/go-floating-point-tolerance-testing</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-floating-point-tolerance-testing</guid>
      <pubDate>Sun, 17 Aug 2025 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>Last Tuesday, I was knee-deep in a financial calculation service when my tests started failing. You know that sinking feeling when doesn&apos;t equal ? That was my afternoon. This got me thinking about…</description>
    </item>
    <item>
      <title>Designing Data-Intensive Applications</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Fri, 15 Aug 2025 00:00:00 GMT</pubDate>
      <category>books</category>
    </item>
    <item>
      <title>Runes, Bytes, and Graphemes in Go</title>
      <link>https://ashwingopalsamy.in/library/notes/runes-bytes-and-graphemes-in-go</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/runes-bytes-and-graphemes-in-go</guid>
      <pubDate>Sat, 09 Aug 2025 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>I once ran into this problem while handling names in Tamil and emoji in a Go web app: a string that looked short wasn&apos;t, and reversing it produced gibberish. 1. Bytes Go represents strings as…</description>
    </item>
    <item>
      <title>Go Was Never Bad</title>
      <link>https://ashwingopalsamy.in/library/notes/go-was-never-bad</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-was-never-bad</guid>
      <pubDate>Sat, 21 Jun 2025 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>Every time I see that GitHub repo go-is-not-good making the rounds again, I laugh. It&apos;s always shared by people who mistake language cleverness for engineering. Let me say this clearly: Go is not for…</description>
    </item>
    <item>
      <title>Rookie</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sun, 15 Jun 2025 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>How Goroutine Stacks Grow and Shrink</title>
      <link>https://ashwingopalsamy.in/library/notes/go-goroutine-stack-growth</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-goroutine-stack-growth</guid>
      <pubDate>Sun, 08 Jun 2025 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>If you ask any mid-senior Go dev what makes goroutines lightweight you&apos;ll get the reply: They start with 2 KB of stack instead of 1 MB like OS threads. They&apos;re not wrong. But they&apos;re not thinking…</description>
    </item>
    <item>
      <title>Go Scheduler, Yield Points, and Infinite Loops</title>
      <link>https://ashwingopalsamy.in/library/notes/go-scheduler-infinite-loops</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-scheduler-infinite-loops</guid>
      <pubDate>Sat, 24 May 2025 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>I&apos;ve been reviewing performance-critical code, and I keep coming back to this pattern: versus The runtime implications are fascinating. The GMP Model Go&apos;s scheduler uses a GMP model: Goroutines (G)…</description>
    </item>
    <item>
      <title>Software Architecture: The Hard Parts</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sun, 18 May 2025 00:00:00 GMT</pubDate>
      <category>books</category>
    </item>
    <item>
      <title>Review Your Own PR First</title>
      <link>https://ashwingopalsamy.in/library/notes/review-your-own-pr-first</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/review-your-own-pr-first</guid>
      <pubDate>Wed, 15 Jan 2025 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>Like most developers, I&apos;ve been on both sides of Pull Requests. What I&apos;ve noticed is that the best PRs, the ones that get merged smoothly with minimal back-and-forth, are where the author has already…</description>
    </item>
    <item>
      <title>The comparable Constraint in Go Generics</title>
      <link>https://ashwingopalsamy.in/library/notes/go-generics-comparable-constraint</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-generics-comparable-constraint</guid>
      <pubDate>Wed, 25 Dec 2024 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>While working on a generic function in Go, I once encountered this error: &apos;incomparable types in type set&apos;. It led me to dig deeper into the constraint. With this post, I&apos;ll walk you through what is,…</description>
    </item>
    <item>
      <title>What Happens Before main() in Go</title>
      <link>https://ashwingopalsamy.in/library/notes/go-program-entry-point</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-program-entry-point</guid>
      <pubDate>Fri, 13 Dec 2024 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>When we first start with Go, the function seems almost too simple. But before even begins, the Go runtime orchestrates careful initialization of all imported packages, runs their functions and…</description>
    </item>
    <item>
      <title>The Art of Doing Science and Engineering</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sun, 01 Dec 2024 00:00:00 GMT</pubDate>
      <category>books</category>
    </item>
    <item>
      <title>Go Pointers and Memory Management</title>
      <link>https://ashwingopalsamy.in/library/notes/go-pointers-and-memory-management</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-pointers-and-memory-management</guid>
      <pubDate>Sun, 17 Nov 2024 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>When I first started learning Go, I was intrigued by its approach to memory management. Go handles memory in a way that&apos;s both efficient and safe, but it can be a bit of a black box if you don&apos;t peek…</description>
    </item>
    <item>
      <title>The Office</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Fri, 15 Nov 2024 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Git Practices for Production Codebases</title>
      <link>https://ashwingopalsamy.in/library/notes/git-practices-for-production-codebases</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/git-practices-for-production-codebases</guid>
      <pubDate>Thu, 14 Nov 2024 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>Git is the backbone of every software project. Working in FinTech systems, I&apos;ve learned that Git isn&apos;t just a tool -- it&apos;s a shared language and a safety net. In FinTech and regulated environments,…</description>
    </item>
    <item>
      <title>Go Constants Beyond the Basics</title>
      <link>https://ashwingopalsamy.in/library/notes/go-constants-beyond-basics</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-constants-beyond-basics</guid>
      <pubDate>Wed, 13 Nov 2024 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>When I first got into Go, I thought constants were simple and limited -- just fixed values, nothing fancy. But as I delved deeper, I found they&apos;re quite versatile. Yes, they&apos;re fixed values, but Go…</description>
    </item>
    <item>
      <title>Go&apos;s UTF-8 Identifier Limitation</title>
      <link>https://ashwingopalsamy.in/library/notes/go-utf8-identifier-limitation</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library/notes/go-utf8-identifier-limitation</guid>
      <pubDate>Tue, 12 Nov 2024 00:00:00 GMT</pubDate>
      <category>notes</category>
      <description>I&apos;ve been exploring Go&apos;s UTF-8 support and was curious about how well it handles non-Latin scripts in code. Go source files are UTF-8 encoded by default. You can use Unicode characters in variable…</description>
    </item>
    <item>
      <title>Avatar: The Last Airbender</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sat, 20 Jul 2024 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Learning Go</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Mon, 10 Jun 2024 00:00:00 GMT</pubDate>
      <category>books</category>
    </item>
    <item>
      <title>Chotta Bheem</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Wed, 01 May 2024 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Suits</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sun, 10 Mar 2024 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>The Social Network</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sat, 20 Jan 2024 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>BoJack Horseman</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sat, 14 Oct 2023 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Breaking Bad</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Mon, 14 Aug 2023 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Never Have I Ever</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Thu, 08 Jun 2023 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Ben 10</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sun, 12 Feb 2023 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Vikings</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Fri, 30 Sep 2022 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Money Heist</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Fri, 03 Dec 2021 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Mr. Robot</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Sat, 22 Aug 2020 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>13 Reasons Why</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Fri, 05 Jun 2020 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Silicon Valley</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Fri, 01 May 2020 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Chernobyl</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Mon, 03 Jun 2019 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
    <item>
      <title>Game of Thrones</title>
      <link>https://ashwingopalsamy.in/library</link>
      <guid isPermaLink="true">https://ashwingopalsamy.in/library</guid>
      <pubDate>Mon, 20 May 2019 00:00:00 GMT</pubDate>
      <category>watch</category>
    </item>
  </channel>
</rss>
