<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Software Architecture on Ikwuka Okoye</title><link>https://ikwukao.dev/tags/software-architecture/</link><description>Recent content in Software Architecture 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/software-architecture/index.xml" rel="self" type="application/rss+xml"/><item><title>Building Asteroids with Python and Pygame: From Game Idea to Playable System</title><link>https://ikwukao.dev/journal/building-asteroids-with-python-and-pygame/</link><pubDate>Tue, 11 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/building-asteroids-with-python-and-pygame/</guid><description>&lt;h2 id="building-asteroids-with-python-and-pygame-from-game-idea-to-playable-system"&gt;Building Asteroids with Python and Pygame: From Game Idea to Playable System&lt;/h2&gt;
&lt;p&gt;Small games are deceptively useful engineering projects.&lt;/p&gt;
&lt;p&gt;They may contain only a few objects on screen, but those objects introduce many of the same problems found in larger software systems: state management, object lifecycles, input handling, timing, rendering, collision detection, and the need to keep individual components understandable as the codebase grows.&lt;/p&gt;
&lt;p&gt;The Asteroids project was built as an opportunity to explore those problems through a compact interactive system using Python and Pygame.&lt;/p&gt;</description></item><item><title>Building a Static Site Generator in Python: From Markdown to HTML</title><link>https://ikwukao.dev/journal/building-a-static-site-generator-in-python/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/building-a-static-site-generator-in-python/</guid><description>&lt;h2 id="building-a-static-site-generator-in-python-from-markdown-to-html"&gt;Building a Static Site Generator in Python: From Markdown to HTML&lt;/h2&gt;
&lt;p&gt;A static site generator looks simple from the outside.&lt;/p&gt;
&lt;p&gt;You write some Markdown, run a command, and HTML files appear in an output directory.&lt;/p&gt;
&lt;p&gt;The interesting engineering work happens between those two points.&lt;/p&gt;
&lt;p&gt;Building a static site generator from scratch is a useful exercise because it exposes several concepts that are normally hidden behind frameworks and libraries: parsing, intermediate representations, tree structures, rendering, filesystem operations, and deterministic builds.&lt;/p&gt;</description></item><item><title>Designing OpsPilot: Building a Modular DevOps Operations Toolkit</title><link>https://ikwukao.dev/journal/designing-opspilot/</link><pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/designing-opspilot/</guid><description>&lt;h2 id="designing-opspilot-building-a-modular-devops-operations-toolkit"&gt;Designing OpsPilot: Building a Modular DevOps Operations Toolkit&lt;/h2&gt;
&lt;p&gt;As backend systems become more complex, the operational work surrounding them becomes increasingly difficult to ignore.&lt;/p&gt;
&lt;p&gt;Running services, inspecting environments, managing containers, checking infrastructure, and performing repetitive maintenance tasks can quickly turn into a collection of shell commands, scripts, and undocumented procedures.&lt;/p&gt;
&lt;p&gt;That was the problem I wanted to explore with &lt;strong&gt;OpsPilot&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Rather than building another collection of unrelated scripts, I wanted to create a structured operations toolkit that could grow alongside the systems it manages.&lt;/p&gt;</description></item><item><title>Designing a CLI Architecture for PokedexCLI in Go</title><link>https://ikwukao.dev/journal/pokedexcli-architecture/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/pokedexcli-architecture/</guid><description>&lt;h2 id="designing-a-cli-architecture-for-pokedexcli-in-go"&gt;Designing a CLI Architecture for PokedexCLI in Go&lt;/h2&gt;
&lt;p&gt;Building a command-line application can look deceptively simple.&lt;/p&gt;
&lt;p&gt;At first, the requirements for PokedexCLI seem straightforward: accept a command, execute it, call the Pokémon API when necessary, and print the result.&lt;/p&gt;
&lt;p&gt;But even a small CLI becomes difficult to maintain when command handling, application state, networking, caching, and presentation logic are allowed to grow together.&lt;/p&gt;
&lt;p&gt;For PokedexCLI, I wanted to approach the problem as a real software-engineering exercise rather than simply building a collection of commands that happened to work.&lt;/p&gt;</description></item><item><title>Designing the Architecture of an AI Agent</title><link>https://ikwukao.dev/journal/ai-agent-architecture/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/ai-agent-architecture/</guid><description>&lt;h2 id="designing-the-architecture-of-an-ai-agent"&gt;Designing the Architecture of an AI Agent&lt;/h2&gt;
&lt;p&gt;Building an AI agent is very different from building a simple application that sends a prompt to a language model and displays the response.&lt;/p&gt;
&lt;p&gt;A useful agent needs to do more than generate text. It needs to interpret a goal, decide what should happen next, use tools when necessary, maintain enough state to complete the task, observe the result, and recover when something goes wrong.&lt;/p&gt;</description></item><item><title>What Building an AI Agent Taught Me About Backend Engineering</title><link>https://ikwukao.dev/journal/ai-agent-lessons-learned/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/ai-agent-lessons-learned/</guid><description>&lt;h2 id="what-building-an-ai-agent-taught-me-about-backend-engineering"&gt;What Building an AI Agent Taught Me About Backend Engineering&lt;/h2&gt;
&lt;p&gt;Building an AI agent initially appears to be an exercise in working with language models.&lt;/p&gt;
&lt;p&gt;In practice, much of the work quickly becomes familiar backend engineering.&lt;/p&gt;
&lt;p&gt;Requests need validation.&lt;/p&gt;
&lt;p&gt;State needs to be managed.&lt;/p&gt;
&lt;p&gt;External services need timeouts.&lt;/p&gt;
&lt;p&gt;Failures need to be handled.&lt;/p&gt;
&lt;p&gt;Operations need to be observable.&lt;/p&gt;
&lt;p&gt;Components need clear boundaries.&lt;/p&gt;
&lt;p&gt;The language model adds a new dimension, but many of the underlying engineering principles remain the same.&lt;/p&gt;</description></item><item><title>What Building PokedexCLI Taught Me About Backend Engineering in Go</title><link>https://ikwukao.dev/journal/pokedexcli-command-lessons-learned/</link><pubDate>Sun, 09 Aug 2026 00:00:00 +0000</pubDate><guid>https://ikwukao.dev/journal/pokedexcli-command-lessons-learned/</guid><description>&lt;h2 id="what-building-pokedexcli-taught-me-about-backend-engineering-in-go"&gt;What Building PokedexCLI Taught Me About Backend Engineering in Go&lt;/h2&gt;
&lt;p&gt;PokedexCLI began as a relatively small Go application.&lt;/p&gt;
&lt;p&gt;The premise is simple: interact with Pokémon data through a command-line interface.&lt;/p&gt;
&lt;p&gt;But projects do not remain simple merely because their initial requirements are simple.&lt;/p&gt;
&lt;p&gt;As functionality grows, the application has to deal with API communication, pagination, application state, caching, command dispatch, data modeling, errors, and testing.&lt;/p&gt;
&lt;p&gt;That made PokedexCLI valuable as more than a CLI exercise.&lt;/p&gt;</description></item></channel></rss>