<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>zavarella.dev</title><description>Thoughts and opinions on platform engineering, infrastructure, and building software at scale — by Michael Zavarella.</description><link>https://zavarella.dev/</link><item><title>Cloud Resource Tagging</title><link>https://zavarella.dev/blog/2025/11/24/cloud-resource-tagging/</link><guid isPermaLink="true">https://zavarella.dev/blog/2025/11/24/cloud-resource-tagging/</guid><description>The question isn&apos;t whether your infrastructure will get complex, it&apos;s whether you&apos;ll be able to understand it when it does.</description><pubDate>Mon, 24 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Implementing LTI 1.3 OIDC Flow in TypeScript</title><link>https://zavarella.dev/blog/2025/11/03/lti13-oidc/</link><guid isPermaLink="true">https://zavarella.dev/blog/2025/11/03/lti13-oidc/</guid><description>LTI 1.3 replaced OAuth 1.0 with OpenID Connection and JWT-based authentication. If you&apos;re building a Tool Provider, this guide walks through the complete implementation in TypeScript.</description><pubDate>Mon, 03 Nov 2025 00:00:00 GMT</pubDate></item><item><title>Hidden Systems Aren&apos;t Complex, They&apos;re Just Hidden</title><link>https://zavarella.dev/blog/2025/10/29/hidden-systems/</link><guid isPermaLink="true">https://zavarella.dev/blog/2025/10/29/hidden-systems/</guid><description>If you&apos;re the person who knows how the system works, you have the responsibility to make it knowable.</description><pubDate>Wed, 29 Oct 2025 00:00:00 GMT</pubDate></item><item><title>The Strangler Fig Pattern: Migrating Core Systems Without Breaking Production</title><link>https://zavarella.dev/blog/2025/10/23/strangler-fig/</link><guid isPermaLink="true">https://zavarella.dev/blog/2025/10/23/strangler-fig/</guid><description>Wrap the old, build the new, route traffic gradually, retire incrementally.</description><pubDate>Thu, 23 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Building an Interview</title><link>https://zavarella.dev/blog/2025/10/03/building-an-interview/</link><guid isPermaLink="true">https://zavarella.dev/blog/2025/10/03/building-an-interview/</guid><description>The mega-corps optimize for false negatives because they can. Small companies face catastrophic risk from false positives. The interview process that works for one can fail disastrously for the other.</description><pubDate>Fri, 03 Oct 2025 00:00:00 GMT</pubDate></item><item><title>Set Up Billing Alarms Please</title><link>https://zavarella.dev/blog/2025/09/25/billing-alarms/</link><guid isPermaLink="true">https://zavarella.dev/blog/2025/09/25/billing-alarms/</guid><description>You and I both don&apos;t want to see you get smacked with a wild AWS bill. Well, I get a chuckle out of it sometimes</description><pubDate>Thu, 25 Sep 2025 00:00:00 GMT</pubDate></item><item><title>A vs An</title><link>https://zavarella.dev/blog/2025/09/17/a-vs-an/</link><guid isPermaLink="true">https://zavarella.dev/blog/2025/09/17/a-vs-an/</guid><description>I get frustrated when &quot;a&quot; and &quot;an&quot; get misused in writing</description><pubDate>Wed, 17 Sep 2025 00:00:00 GMT</pubDate></item><item><title>nohup vs &amp;</title><link>https://zavarella.dev/blog/2019/10/30/fire-and-forget/</link><guid isPermaLink="true">https://zavarella.dev/blog/2019/10/30/fire-and-forget/</guid><description>A guide to running long-running processes in SSH sessions using &amp;, nohup, and disown to prevent hangup signals from terminating your commands.</description><pubDate>Wed, 30 Oct 2019 14:00:00 GMT</pubDate></item><item><title>Another Useful If Macro</title><link>https://zavarella.dev/blog/2017/06/22/another-if-macro/</link><guid isPermaLink="true">https://zavarella.dev/blog/2017/06/22/another-if-macro/</guid><description>Creating custom if-seq and if-pred macros in Clojure for more flexible conditional logic with automatic binding and predicate testing.</description><pubDate>Thu, 22 Jun 2017 15:44:00 GMT</pubDate></item><item><title>Clojure @</title><link>https://zavarella.dev/blog/2017/02/17/clojure-deref/</link><guid isPermaLink="true">https://zavarella.dev/blog/2017/02/17/clojure-deref/</guid><description>A quick guide to understanding the @ symbol (deref) in Clojure and why dereferencing is necessary for atoms, refs, and other reference types.</description><pubDate>Fri, 17 Feb 2017 02:22:00 GMT</pubDate></item><item><title>Queues in Clojure</title><link>https://zavarella.dev/blog/2017/02/07/queues-in-clojure/</link><guid isPermaLink="true">https://zavarella.dev/blog/2017/02/07/queues-in-clojure/</guid><description>Understanding FIFO queues in Clojure using PersistentQueue, with practical examples of queue operations and custom queue creation.</description><pubDate>Tue, 07 Feb 2017 22:00:00 GMT</pubDate></item><item><title>An Introduction to Map, Filter, Reduce</title><link>https://zavarella.dev/blog/2017/01/19/map-vs-reduce/</link><guid isPermaLink="true">https://zavarella.dev/blog/2017/01/19/map-vs-reduce/</guid><description>A comprehensive guide to higher order functions in functional programming, covering map, filter, and reduce with practical Clojure examples.</description><pubDate>Thu, 19 Jan 2017 03:23:00 GMT</pubDate></item></channel></rss>