<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Ugo Giordano</title><description>Software engineer. Building things with AI, Kubernetes, and too many browser tabs.</description><link>https://ugiordan.dev/</link><item><title>Building an AI-powered browser extension for tab lifecycle management</title><link>https://ugiordan.dev/blog/building-ai-browser-extension/</link><guid isPermaLink="true">https://ugiordan.dev/blog/building-ai-browser-extension/</guid><description>How I built a Chrome extension with a skill-based AI integration that lets any AI agent manage browser tabs through natural language, using a bridge REST API and curl commands.</description><pubDate>Thu, 07 May 2026 00:00:00 GMT</pubDate></item><item><title>Why your operator caches everything in the cluster (5 anti-patterns)</title><link>https://ugiordan.dev/blog/five-informer-antipatterns/</link><guid isPermaLink="true">https://ugiordan.dev/blog/five-informer-antipatterns/</guid><description>The Spark Operator OOMKill was not unique. Here are 5 anti-patterns that cause unfiltered informer caches in controller-runtime operators, including code paths invisible during review.</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Protect your Kubernetes Operator from OOMKill</title><link>https://ugiordan.dev/blog/protect-operator-from-oomkill/</link><guid isPermaLink="true">https://ugiordan.dev/blog/protect-operator-from-oomkill/</guid><description>How an unfiltered informer cache lets any user with edit permissions crash your operator. I found this in the Spark Operator, but the pattern is everywhere.</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item></channel></rss>