<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>Patterns on Bits, Trades &amp; Systems</title>
    <link>https://blog.turboawesome.win/tags/patterns/</link>
    <description>Recent content in Patterns on Bits, Trades &amp; Systems</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Wed, 10 Jul 2024 09:38:00 +0000</lastBuildDate>
    <atom:link href="https://blog.turboawesome.win/tags/patterns/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>LLM Integration Patterns for Backend Engineers</title>
      <link>https://blog.turboawesome.win/2024/07/llm-integration-patterns-for-backend-engineers/</link>
      <pubDate>Wed, 10 Jul 2024 09:38:00 +0000</pubDate>
      <guid>https://blog.turboawesome.win/2024/07/llm-integration-patterns-for-backend-engineers/</guid>
      <description>Integrating LLMs into backend systems requires engineering discipline that the AI ecosystem tutorials often skip. Structured output, function calling, retry strategy, and testing patterns from production.</description>
    </item>
    <item>
      <title>Building Reliable Pipelines with Go: Retry, Circuit Breaker, and Backoff</title>
      <link>https://blog.turboawesome.win/2021/11/building-reliable-pipelines-with-go-retry-circuit-breaker-and-backoff/</link>
      <pubDate>Wed, 17 Nov 2021 11:41:00 +0000</pubDate>
      <guid>https://blog.turboawesome.win/2021/11/building-reliable-pipelines-with-go-retry-circuit-breaker-and-backoff/</guid>
      <description>Every service that calls another service will eventually face failures. The patterns that contain those failures — retry with backoff, circuit breakers, bulkheads — are not optional for production Go services. Here&amp;#39;s how to implement them correctly.</description>
    </item>
    <item>
      <title>Go 1.18 Generics: Real Use Cases Worth the Complexity</title>
      <link>https://blog.turboawesome.win/2021/04/go-1.18-generics-real-use-cases-worth-the-complexity/</link>
      <pubDate>Wed, 07 Apr 2021 10:29:00 +0000</pubDate>
      <guid>https://blog.turboawesome.win/2021/04/go-1.18-generics-real-use-cases-worth-the-complexity/</guid>
      <description>Go 1.18 shipped generics and the ecosystem immediately split between &amp;#39;finally&amp;#39; and &amp;#39;we didn&amp;#39;t need this.&amp;#39; After using them in production code, here are the cases where generics genuinely simplify things and the cases where they add complexity for no gain.</description>
    </item>
    <item>
      <title>Error Handling in Go: Patterns That Actually Work at Scale</title>
      <link>https://blog.turboawesome.win/2019/09/error-handling-in-go-patterns-that-actually-work-at-scale/</link>
      <pubDate>Wed, 11 Sep 2019 11:58:00 +0000</pubDate>
      <guid>https://blog.turboawesome.win/2019/09/error-handling-in-go-patterns-that-actually-work-at-scale/</guid>
      <description>Go&amp;#39;s error handling is explicit and verbose by design. At scale — hundreds of functions, multiple layers, concurrent operations — the naive patterns break down. These are the patterns that held up.</description>
    </item>
    <item>
      <title>Channels vs Mutexes: When to Use Which in Go</title>
      <link>https://blog.turboawesome.win/2019/08/channels-vs-mutexes-when-to-use-which-in-go/</link>
      <pubDate>Wed, 07 Aug 2019 10:22:00 +0000</pubDate>
      <guid>https://blog.turboawesome.win/2019/08/channels-vs-mutexes-when-to-use-which-in-go/</guid>
      <description>Go&amp;#39;s concurrency slogan is &amp;#39;share memory by communicating.&amp;#39; It&amp;#39;s good advice but incomplete. Some problems are better solved with a mutex than a channel. A decision framework with concrete examples.</description>
    </item>
  </channel>
</rss>
