<?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>Posts on Jose Sitanggang</title>
    <link>https://josestg.com/posts/</link>
    <description>Recent content in Posts on Jose Sitanggang</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 27 Aug 2024 21:00:11 +0700</lastBuildDate><atom:link href="https://josestg.com/posts/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Go Concurrency Patterns: Fan-Out and Fan-In</title>
      <link>https://josestg.com/posts/concurrency-patterns/go-concurrency-patterns-fan-out-fan-in/</link>
      <pubDate>Tue, 27 Aug 2024 21:00:11 +0700</pubDate>
      
      <guid>https://josestg.com/posts/concurrency-patterns/go-concurrency-patterns-fan-out-fan-in/</guid>
      <description>A pattern that distributes workloads across workers and leverages parallelism in multicore CPUs.</description>
    </item>
    
    <item>
      <title>Go Concurrency Patterns: Pipeline</title>
      <link>https://josestg.com/posts/concurrency-patterns/go-concurrency-patterns-pipeline/</link>
      <pubDate>Mon, 26 Aug 2024 21:00:11 +0700</pubDate>
      
      <guid>https://josestg.com/posts/concurrency-patterns/go-concurrency-patterns-pipeline/</guid>
      <description>A pattern that processes data in stages, allowing each step to be handled concurrently, optimizing performance and enabling efficient, scalable data pipelines.</description>
    </item>
    
    <item>
      <title>Go Concurrency Patterns: Generator</title>
      <link>https://josestg.com/posts/concurrency-patterns/go-concurrency-patterns-generator/</link>
      <pubDate>Sun, 25 Aug 2024 21:00:11 +0700</pubDate>
      
      <guid>https://josestg.com/posts/concurrency-patterns/go-concurrency-patterns-generator/</guid>
      <description>A pattern that produces values on demand, allowing infinite sequences or large datasets to be generated one element at a time, optimizing memory and enabling lazy evaluation.</description>
    </item>
    
    <item>
      <title>How to Build a Pluggable Library in Go</title>
      <link>https://josestg.com/posts/golang/how-to-build-a-pluggable-library-in-go/</link>
      <pubDate>Thu, 22 Aug 2024 19:20:06 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/how-to-build-a-pluggable-library-in-go/</guid>
      <description>Discover how Go&amp;#39;s buildmode=plugin lets you dynamically extend application functionality and optimize builds by reducing binary size and avoiding unnecessary recompilation.</description>
    </item>
    
    <item>
      <title>How to Test HTTP Outbound in Go Using Just the Standard Library</title>
      <link>https://josestg.com/posts/golang/how-to-test-http-outbound-in-go/</link>
      <pubDate>Mon, 15 Apr 2024 19:19:47 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/how-to-test-http-outbound-in-go/</guid>
      <description>My approach to testing HTTP outbound in Go using just the standard library.</description>
    </item>
    
    <item>
      <title>How to Test Goroutines in Go</title>
      <link>https://josestg.com/posts/golang/how-to-test-goroutines-in-go/</link>
      <pubDate>Tue, 09 Apr 2024 21:19:52 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/how-to-test-goroutines-in-go/</guid>
      <description>Testing goroutines in Go can be challenging because they execute in a random order. Learn how to test goroutines in Go using just the standard library.</description>
    </item>
    
    <item>
      <title>Graceful Shutdown in Go</title>
      <link>https://josestg.com/posts/golang/graceful-shutdown-in-go/</link>
      <pubDate>Thu, 02 Nov 2023 00:35:06 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/graceful-shutdown-in-go/</guid>
      <description>Learn how graceful shutdown ensures your requests stay safe during service updates by following the 12-factor principles</description>
    </item>
    
    <item>
      <title>Practical Design Pattern in Go: Functional Options</title>
      <link>https://josestg.com/posts/design-pattern/functional-options/</link>
      <pubDate>Mon, 30 Oct 2023 23:21:37 +0700</pubDate>
      
      <guid>https://josestg.com/posts/design-pattern/functional-options/</guid>
      <description>Discover flexible object configuration in Go with a functional style</description>
    </item>
    
    <item>
      <title>Practical Design Pattern in Go: Adapter</title>
      <link>https://josestg.com/posts/design-pattern/adapter/</link>
      <pubDate>Sun, 29 Oct 2023 15:36:11 +0700</pubDate>
      
      <guid>https://josestg.com/posts/design-pattern/adapter/</guid>
      <description>Explore the Adapter Pattern in Go with real-world examples to bridge the gap between incompatible interfaces. Perfect for Go enthusiasts and design pattern explorers.</description>
    </item>
    
    <item>
      <title>Namespace in Go</title>
      <link>https://josestg.com/posts/golang/namespace-in-go/</link>
      <pubDate>Sun, 29 Oct 2023 13:50:54 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/namespace-in-go/</guid>
      <description>Discover how to create namespaces in Go, even without built-in support!</description>
    </item>
    
    <item>
      <title>ShadowID: Expose the Auto Increment ID to Public Without Compromising Security</title>
      <link>https://josestg.com/posts/golang/shadowid-expose-the-auto-increment-id-to-public-without-compromising-security/</link>
      <pubDate>Sat, 28 Oct 2023 12:19:58 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/shadowid-expose-the-auto-increment-id-to-public-without-compromising-security/</guid>
      <description>Combine the best of both worlds: the performance of Auto Increment IDs and the security of UUIDs.</description>
    </item>
    
    <item>
      <title>How Can Be Adding a New Item to a Dynamic Array Achieved in Constant Time?</title>
      <link>https://josestg.com/posts/math/how-can-be-adding-a-new-item-to-a-dynamic-array-achieved-in-constant-time/</link>
      <pubDate>Fri, 27 Oct 2023 00:46:55 +0700</pubDate>
      
      <guid>https://josestg.com/posts/math/how-can-be-adding-a-new-item-to-a-dynamic-array-achieved-in-constant-time/</guid>
      <description>In short: It&amp;#39;s a geometric series, and we&amp;#39;ll use amortized analysis to explain it.</description>
    </item>
    
    <item>
      <title>Exploring Internal Implementation of Go Slice</title>
      <link>https://josestg.com/posts/golang/exploring-internal-implementation-of-go-slice/</link>
      <pubDate>Sun, 22 Oct 2023 03:15:57 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/exploring-internal-implementation-of-go-slice/</guid>
      <description>Understanding how slices work in Go on a deeper level, by implementing it in C&#43;&#43;.</description>
    </item>
    
    <item>
      <title>Boosting String and Bytes Conversions Speed by 140x with Zero Allocation in Go</title>
      <link>https://josestg.com/posts/golang/boosting-string-and-bytes-conversions-speed-by-140x-with-zero-allocation-in-go/</link>
      <pubDate>Sat, 21 Oct 2023 03:04:14 +0700</pubDate>
      
      <guid>https://josestg.com/posts/golang/boosting-string-and-bytes-conversions-speed-by-140x-with-zero-allocation-in-go/</guid>
      <description>Enhancing Performance and Memory Efficiency in String to Bytes Conversions and Vice Versa.</description>
    </item>
    
    <item>
      <title>A Simple Proof of XOR Uniqueness</title>
      <link>https://josestg.com/posts/math/a-simple-proof-of-xor-uniqueness/</link>
      <pubDate>Sat, 23 Sep 2023 03:00:03 +0700</pubDate>
      
      <guid>https://josestg.com/posts/math/a-simple-proof-of-xor-uniqueness/</guid>
      <description>When computers are too slow to prove the correctness, mathematics rides to the rescue. That&amp;#39;s why we need math -- even computers could use a little math magic!</description>
    </item>
    
  </channel>
</rss>
