<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Networking on Ikwuka Okoye</title><link>https://ikwukao.dev/tags/networking/</link><description>Recent content in Networking on Ikwuka Okoye</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Tue, 11 Aug 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://ikwukao.dev/tags/networking/index.xml" rel="self" type="application/rss+xml"/><item><title>Building a Concurrent TCP Server in Go: Connections, Deadlines, and Graceful Shutdown</title><link>https://ikwukao.dev/journal/concurrent-tcp-server-go/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/concurrent-tcp-server-go/</guid><description>&lt;h2 id="building-a-concurrent-tcp-server-in-go-connections-deadlines-and-graceful-shutdown"&gt;Building a Concurrent TCP Server in Go: Connections, Deadlines, and Graceful Shutdown&lt;/h2&gt;
&lt;p&gt;TCP makes it possible to build extremely simple network services.&lt;/p&gt;
&lt;p&gt;Open a listener. Accept a connection. Read bytes. Process them.&lt;/p&gt;
&lt;p&gt;The complexity appears when the server has to do this for many clients at the same time while remaining responsive when clients become slow, disappear unexpectedly, or send data indefinitely.&lt;/p&gt;
&lt;p&gt;That was one of the core engineering problems behind &lt;strong&gt;Strata-Log&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Building a High-Throughput TCP Server in Go</title><link>https://ikwukao.dev/journal/strata-log-tcp/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/strata-log-tcp/</guid><description>&lt;p&gt;When building a high-throughput backend service, it is easy to focus on the application protocol and overlook the network boundary underneath it.&lt;/p&gt;
&lt;p&gt;Strata-Log takes the opposite approach.&lt;/p&gt;
&lt;p&gt;The project uses raw TCP connections as its ingestion layer, making connection handling, timeouts, concurrency, and shutdown behavior explicit.&lt;/p&gt;
&lt;p&gt;That creates a useful engineering environment for understanding what actually happens between a client sending data and a backend processing it.&lt;/p&gt;
&lt;h2 id="why-raw-tcp"&gt;Why Raw TCP?&lt;/h2&gt;
&lt;p&gt;Higher-level protocols and frameworks are valuable because they provide useful abstractions.&lt;/p&gt;</description></item><item><title>Building a Reliable REST API Client in Go for PokedexCLI</title><link>https://ikwukao.dev/journal/pokedexcli-api-client/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/pokedexcli-api-client/</guid><description>&lt;h2 id="building-a-reliable-rest-api-client-in-go-for-pokedexcli"&gt;Building a Reliable REST API Client in Go for PokedexCLI&lt;/h2&gt;
&lt;p&gt;A command-line application becomes considerably more interesting when it has to communicate with a remote service.&lt;/p&gt;
&lt;p&gt;PokedexCLI does not contain all of its data locally. Much of the information the application needs comes from the Pokémon API, which means the application has to deal with HTTP requests, JSON responses, network failures, pagination, and external service boundaries.&lt;/p&gt;
&lt;p&gt;Rather than allowing every command to construct its own HTTP requests, I treated API communication as a dedicated responsibility.&lt;/p&gt;</description></item></channel></rss>