<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by Joel Hanson on Medium]]></title>
        <description><![CDATA[Stories by Joel Hanson on Medium]]></description>
        <link>https://medium.com/@joel-hanson?source=rss-906309768f3a------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*S3GaPmseHdlgni_69MTkQA.jpeg</url>
            <title>Stories by Joel Hanson on Medium</title>
            <link>https://medium.com/@joel-hanson?source=rss-906309768f3a------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 21 Jul 2026 16:59:48 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@joel-hanson/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[What If Your Kafka Sent Half the Data Over the Network?]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://joel-hanson.medium.com/what-if-your-kafka-sent-half-the-data-over-the-network-f97d1030e7f8?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*Z3c9mcVLI-OECXcH" width="3999"></a></p><p class="medium-feed-snippet">Originally published at https://joel-hanson.github.io/posts/26-shrink-kafka-integer-payloads-with-bijou64/</p><p class="medium-feed-link"><a href="https://joel-hanson.medium.com/what-if-your-kafka-sent-half-the-data-over-the-network-f97d1030e7f8?source=rss-906309768f3a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://joel-hanson.medium.com/what-if-your-kafka-sent-half-the-data-over-the-network-f97d1030e7f8?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/f97d1030e7f8</guid>
            <category><![CDATA[java]]></category>
            <category><![CDATA[kafka]]></category>
            <category><![CDATA[data]]></category>
            <category><![CDATA[big-data]]></category>
            <category><![CDATA[distributed-systems]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Mon, 08 Jun 2026 11:06:08 GMT</pubDate>
            <atom:updated>2026-06-09T05:16:57.756Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Aesthetic Habit Tracker: A Challenge Grid That Lives in Your Browser]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://joel-hanson.medium.com/aesthetic-habit-tracker-a-challenge-grid-that-lives-in-your-browser-49fb6301a512?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/1*Ng74SYRYU9JJs8Blg4d9fQ.png" width="3420"></a></p><p class="medium-feed-snippet">Originally published at https://joel-hanson.github.io/posts/28-aesthetic-habit-tracker-challenge-grid-on-github-pages/</p><p class="medium-feed-link"><a href="https://joel-hanson.medium.com/aesthetic-habit-tracker-a-challenge-grid-that-lives-in-your-browser-49fb6301a512?source=rss-906309768f3a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://joel-hanson.medium.com/aesthetic-habit-tracker-a-challenge-grid-that-lives-in-your-browser-49fb6301a512?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/49fb6301a512</guid>
            <category><![CDATA[habits]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[self-improvement]]></category>
            <category><![CDATA[claude]]></category>
            <category><![CDATA[vibe-coding]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Sun, 07 Jun 2026 06:40:09 GMT</pubDate>
            <atom:updated>2026-06-08T11:06:52.681Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[From Prompt to Home Screen: Shipping Nursing Tracker with GitHub Pages]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://joel-hanson.medium.com/from-prompt-to-home-screen-shipping-nursing-tracker-with-github-pages-82375c5fcb14?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*tiaDRumcBRNITHaG" width="4073"></a></p><p class="medium-feed-snippet">Originally published at https://joel-hanson.github.io/posts/27-from-prompt-to-home-screen-booby-tracker-on-github-pages/</p><p class="medium-feed-link"><a href="https://joel-hanson.medium.com/from-prompt-to-home-screen-shipping-nursing-tracker-with-github-pages-82375c5fcb14?source=rss-906309768f3a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://joel-hanson.medium.com/from-prompt-to-home-screen-shipping-nursing-tracker-with-github-pages-82375c5fcb14?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/82375c5fcb14</guid>
            <category><![CDATA[vibe-coding]]></category>
            <category><![CDATA[html]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[writing-prompts]]></category>
            <category><![CDATA[claude]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Sun, 07 Jun 2026 06:09:24 GMT</pubDate>
            <atom:updated>2026-06-07T06:33:52.339Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[From Celery to Restate: Rethinking Async Tasks in Django]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://joel-hanson.medium.com/from-celery-to-restate-rethinking-async-tasks-in-django-d2c229a37258?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*wmIjQ0gEpKbtLRRa" width="6192"></a></p><p class="medium-feed-snippet">Exploring the transition from Celery to Restate for async task processing in Django applications, with practical examples and real-world&#x2026;</p><p class="medium-feed-link"><a href="https://joel-hanson.medium.com/from-celery-to-restate-rethinking-async-tasks-in-django-d2c229a37258?source=rss-906309768f3a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://joel-hanson.medium.com/from-celery-to-restate-rethinking-async-tasks-in-django-d2c229a37258?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/d2c229a37258</guid>
            <category><![CDATA[celery]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[asynchronous]]></category>
            <category><![CDATA[django]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Fri, 19 Dec 2025 10:52:15 GMT</pubDate>
            <atom:updated>2025-12-19T10:52:15.609Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Adding Durable Execution to Flask Applications with Restate]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://joel-hanson.medium.com/adding-durable-execution-to-flask-applications-with-restate-562b105c0a21?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*-axH0AzNkzclmfdy" width="3606"></a></p><p class="medium-feed-snippet">Learn how to enhance your Flask applications with Restate for reliable, fault-tolerant operations without changing your core application&#x2026;</p><p class="medium-feed-link"><a href="https://joel-hanson.medium.com/adding-durable-execution-to-flask-applications-with-restate-562b105c0a21?source=rss-906309768f3a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://joel-hanson.medium.com/adding-durable-execution-to-flask-applications-with-restate-562b105c0a21?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/562b105c0a21</guid>
            <category><![CDATA[flask]]></category>
            <category><![CDATA[microservices]]></category>
            <category><![CDATA[backend]]></category>
            <category><![CDATA[python]]></category>
            <category><![CDATA[restate]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Thu, 18 Dec 2025 17:12:52 GMT</pubDate>
            <atom:updated>2025-12-18T17:12:52.136Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Introducing ContextLayer: Transform Any REST API into an MCP Server in Minutes]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://joel-hanson.medium.com/introducing-contextlayer-transform-any-rest-api-into-an-mcp-server-in-minutes-0396b52cd63b?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*OAIoDJzNGi0z5DOk" width="4824"></a></p><p class="medium-feed-snippet">Discover ContextLayer&#x200A;&#x2014;&#x200A;the bridge that transforms any REST API into a Model Context Protocol (MCP) server, enabling AI assistants like&#x2026;</p><p class="medium-feed-link"><a href="https://joel-hanson.medium.com/introducing-contextlayer-transform-any-rest-api-into-an-mcp-server-in-minutes-0396b52cd63b?source=rss-906309768f3a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://joel-hanson.medium.com/introducing-contextlayer-transform-any-rest-api-into-an-mcp-server-in-minutes-0396b52cd63b?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/0396b52cd63b</guid>
            <category><![CDATA[llm]]></category>
            <category><![CDATA[claude]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[mcp-server]]></category>
            <category><![CDATA[openai]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Thu, 04 Dec 2025 16:55:19 GMT</pubDate>
            <atom:updated>2025-12-18T17:13:14.709Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Apache Kafka + SSE: The Open-Source Connector for Seamless Event Streaming]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://joel-hanson.medium.com/apache-kafka-sse-the-open-source-connector-for-seamless-event-streaming-c41ca250086b?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*h9ud1JeJd2HIpRyM" width="6000"></a></p><p class="medium-feed-snippet">Stream Wikipedia changes, GitHub events, and financial data into Kafka with this zero-code SSE connector&#x200A;&#x2014;&#x200A;just configure and go!</p><p class="medium-feed-link"><a href="https://joel-hanson.medium.com/apache-kafka-sse-the-open-source-connector-for-seamless-event-streaming-c41ca250086b?source=rss-906309768f3a------2">Continue reading on Medium »</a></p></div>]]></description>
            <link>https://joel-hanson.medium.com/apache-kafka-sse-the-open-source-connector-for-seamless-event-streaming-c41ca250086b?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/c41ca250086b</guid>
            <category><![CDATA[connection]]></category>
            <category><![CDATA[kafka]]></category>
            <category><![CDATA[server-sent-events]]></category>
            <category><![CDATA[java]]></category>
            <category><![CDATA[event-stream]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Wed, 27 Aug 2025 17:31:02 GMT</pubDate>
            <atom:updated>2025-08-27T17:31:02.383Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Convert Django REST Framework APIs into AI‑Ready MCP Tools in 5 Minutes]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://generativeai.pub/convert-django-rest-framework-apis-into-ai-ready-mcp-tools-in-5-minutes-ce90675bc022?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*25N66OZ0w5rxlB1G" width="5184"></a></p><p class="medium-feed-snippet">Turn your Django REST Framework project into an MCP server instantly. Let AI assistants like Claude, VS Code, and Warp use your APIs&#x2026;</p><p class="medium-feed-link"><a href="https://generativeai.pub/convert-django-rest-framework-apis-into-ai-ready-mcp-tools-in-5-minutes-ce90675bc022?source=rss-906309768f3a------2">Continue reading on Generative AI »</a></p></div>]]></description>
            <link>https://generativeai.pub/convert-django-rest-framework-apis-into-ai-ready-mcp-tools-in-5-minutes-ce90675bc022?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/ce90675bc022</guid>
            <category><![CDATA[claude]]></category>
            <category><![CDATA[ai]]></category>
            <category><![CDATA[django]]></category>
            <category><![CDATA[mcp-server]]></category>
            <category><![CDATA[api]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Sun, 03 Aug 2025 10:57:11 GMT</pubDate>
            <atom:updated>2025-08-28T08:53:07.241Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Turn GitHub into Your Free Data Platform: Building APIs with GitHub Actions]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://faun.pub/turn-github-into-your-free-data-platform-building-apis-with-github-actions-c99f9a151ad6?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/2600/0*1w-aduLPu_dZsaw_" width="5225"></a></p><p class="medium-feed-snippet">Learn how to turn GitHub into a free, serverless data platform with GitHub Actions, Pages, and APIs powered by your repo.</p><p class="medium-feed-link"><a href="https://faun.pub/turn-github-into-your-free-data-platform-building-apis-with-github-actions-c99f9a151ad6?source=rss-906309768f3a------2">Continue reading on FAUN.dev()  »</a></p></div>]]></description>
            <link>https://faun.pub/turn-github-into-your-free-data-platform-building-apis-with-github-actions-c99f9a151ad6?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/c99f9a151ad6</guid>
            <category><![CDATA[automation]]></category>
            <category><![CDATA[free]]></category>
            <category><![CDATA[data-engineering]]></category>
            <category><![CDATA[api]]></category>
            <category><![CDATA[github]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Tue, 29 Jul 2025 16:26:52 GMT</pubDate>
            <atom:updated>2025-09-07T12:15:08.379Z</atom:updated>
        </item>
        <item>
            <title><![CDATA[Tracking Antarctic Icebergs in Real Time with NASA Data and Python]]></title>
            <description><![CDATA[<div class="medium-feed-item"><p class="medium-feed-image"><a href="https://medium.com/analytics-vidhya/tracking-antarctic-giants-building-a-real-time-iceberg-monitor-with-nasa-data-36db7a586865?source=rss-906309768f3a------2"><img src="https://cdn-images-1.medium.com/max/1746/0*BYxyjaNiT0TVVx33.png" width="1746"></a></p><p class="medium-feed-snippet">Ever wondered where those massive icebergs the size of cities are drifting? I built a system to track them in real-time using NASA&#x2026;</p><p class="medium-feed-link"><a href="https://medium.com/analytics-vidhya/tracking-antarctic-giants-building-a-real-time-iceberg-monitor-with-nasa-data-36db7a586865?source=rss-906309768f3a------2">Continue reading on Analytics Vidhya »</a></p></div>]]></description>
            <link>https://medium.com/analytics-vidhya/tracking-antarctic-giants-building-a-real-time-iceberg-monitor-with-nasa-data-36db7a586865?source=rss-906309768f3a------2</link>
            <guid isPermaLink="false">https://medium.com/p/36db7a586865</guid>
            <category><![CDATA[python]]></category>
            <category><![CDATA[data-science]]></category>
            <category><![CDATA[github]]></category>
            <category><![CDATA[web-development]]></category>
            <category><![CDATA[nasa]]></category>
            <dc:creator><![CDATA[Joel Hanson]]></dc:creator>
            <pubDate>Sat, 26 Jul 2025 10:49:07 GMT</pubDate>
            <atom:updated>2025-08-04T15:51:43.860Z</atom:updated>
        </item>
    </channel>
</rss>