<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>devgeist — blog</title><description>Notes from the field — Kafka, Kubernetes, Go, and the systems around them.</description><link>https://devgeist.com/blog/</link><language>en</language><item><title>Kubernetes Steering Wheel</title><link>https://devgeist.com/blog/kubernetes-control-theory-part-1/</link><guid isPermaLink="true">https://devgeist.com/blog/kubernetes-control-theory-part-1/</guid><description>Exploring Kubernetes HPA through control theory: dead time, windup, offset — and why HPA&apos;s math is smarter than it looks.</description><pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate><category>kubernetes</category><category>control-theory</category><category>autoscaling</category><category>hpa</category><author>Myroslav Vivcharyk</author></item><item><title>Why You Probably Shouldn&apos;t Build This</title><link>https://devgeist.com/blog/kafka-ordered-retries-3/</link><guid isPermaLink="true">https://devgeist.com/blog/kafka-ordered-retries-3/</guid><description>The operational cost of maintaining message ordering in Kafka with distributed locks — and when simpler alternatives are the better choice.</description><pubDate>Tue, 24 Mar 2026 00:00:00 GMT</pubDate><category>kafka</category><category>distributed-systems</category><category>go</category><category>architecture</category><author>Myroslav Vivcharyk</author></item><item><title>The Bugs You&apos;ll Find in Production</title><link>https://devgeist.com/blog/kafka-ordered-retries-2/</link><guid isPermaLink="true">https://devgeist.com/blog/kafka-ordered-retries-2/</guid><description>Implementation gaps in Kafka&apos;s ordered retry pattern: the per-key locking edge cases and production bugs the whiteboard diagrams don&apos;t show.</description><pubDate>Tue, 17 Mar 2026 00:00:00 GMT</pubDate><category>kafka</category><category>distributed-systems</category><category>go</category><category>architecture</category><author>Myroslav Vivcharyk</author></item><item><title>When the Retry Topic Breaks Ordering</title><link>https://devgeist.com/blog/kafka-ordered-retries-1/</link><guid isPermaLink="true">https://devgeist.com/blog/kafka-ordered-retries-1/</guid><description>Retry topics keep throughput high but break ordering. Learn why Kafka retries fail for stateful systems and how to maintain message order.</description><pubDate>Tue, 10 Mar 2026 00:00:00 GMT</pubDate><category>kafka</category><category>distributed-systems</category><category>go</category><category>architecture</category><author>Myroslav Vivcharyk</author></item><item><title>The Ghost in the Database</title><link>https://devgeist.com/blog/ghost-in-the-database/</link><guid isPermaLink="true">https://devgeist.com/blog/ghost-in-the-database/</guid><description>A production debugging story: how an empty MySQL table took 20 seconds to query, and what InnoDB&apos;s history list taught me about MVCC and purge operations.</description><pubDate>Tue, 03 Feb 2026 00:00:00 GMT</pubDate><category>mysql</category><category>databases</category><category>performance</category><category>innodb</category><author>Myroslav Vivcharyk</author></item><item><title>When ctx.Done() Isn&apos;t Enough</title><link>https://devgeist.com/blog/go-graceful-shutdown-pattern/</link><guid isPermaLink="true">https://devgeist.com/blog/go-graceful-shutdown-pattern/</guid><description>Master graceful shutdown in Go beyond ctx.Done(). Two-phase shutdown pattern for message queues (SQS, Kafka, RabbitMQ), transactions, and batch jobs.</description><pubDate>Tue, 13 Jan 2026 00:00:00 GMT</pubDate><category>go</category><category>concurrency</category><author>Myroslav Vivcharyk</author></item><item><title>Kafka Consumer Health Checks: Dead or Alive?</title><link>https://devgeist.com/blog/kafka-consumer-health-checks/</link><guid isPermaLink="true">https://devgeist.com/blog/kafka-consumer-health-checks/</guid><description>Stop getting false alerts from Kafka consumers. This guide shows you how to measure progress instead of lag, with a production-ready Go library.</description><pubDate>Sun, 14 Dec 2025 00:00:00 GMT</pubDate><category>kafka</category><category>go</category><category>observability</category><category>distributed-systems</category><author>Myroslav Vivcharyk</author></item><item><title>When Record-and-Replay Breaks</title><link>https://devgeist.com/blog/api-testing-simulations-2/</link><guid isPermaLink="true">https://devgeist.com/blog/api-testing-simulations-2/</guid><description>Real-world API simulation challenges beyond the basics: dynamic data, stateful interactions, and the edge cases that break naive record-and-replay setups.</description><pubDate>Sun, 23 Mar 2025 00:00:00 GMT</pubDate><category>testing</category><category>go</category><category>api</category><category>hoverfly</category><author>Myroslav Vivcharyk</author></item><item><title>Record and Replay</title><link>https://devgeist.com/blog/api-testing-through-simulations/</link><guid isPermaLink="true">https://devgeist.com/blog/api-testing-through-simulations/</guid><description>Why mock when you can simulate? Discover how to capture real API behavior and replay it in your tests to save costs, reduce latency, and improve reliability.</description><pubDate>Sun, 23 Feb 2025 00:00:00 GMT</pubDate><category>testing</category><category>go</category><category>api</category><category>hoverfly</category><author>Myroslav Vivcharyk</author></item></channel></rss>