<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Saten&apos;s Base</title><description>Saten&apos;s personal base for notes on software engineering, learning, games, and everyday discoveries.</description><link>https://saten.website/</link><item><title>My First Contribution to the Javalin Community</title><link>https://saten.website/en/blog/my-first-javalin-contribution/</link><guid isPermaLink="true">https://saten.website/en/blog/my-first-javalin-contribution/</guid><description>How an API design question became a proposal for nested route scopes</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Spring Boot vs Hertz: Framework-Managed vs Explicit Complexity</title><link>https://saten.website/en/blog/spring-boot-vs-hertz/</link><guid isPermaLink="true">https://saten.website/en/blog/spring-boot-vs-hertz/</guid><description>Two Web frameworks built around very different design philosophies</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Running Modern Middleware on an Offline RHEL 7 Server</title><link>https://saten.website/en/blog/modern-middleware-on-offline-rhel7/</link><guid isPermaLink="true">https://saten.website/en/blog/modern-middleware-on-offline-rhel7/</guid><description>Building PostgreSQL and Redis in a local CentOS 7 container</description><pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate></item><item><title>Repost — Private Network Access / Local Network Access</title><link>https://saten.website/en/blog/private-network-access-local-network-access/</link><guid isPermaLink="true">https://saten.website/en/blog/private-network-access-local-network-access/</guid><description>How Google Chrome&apos;s security model reshaped a cross-network deployment</description><pubDate>Mon, 20 Apr 2026 00:00:00 GMT</pubDate></item><item><title>A Hidden AFTER_COMMIT Event-Nesting Bug</title><link>https://saten.website/en/blog/after-commit-event-nesting-ai-coding-bug/</link><guid isPermaLink="true">https://saten.website/en/blog/after-commit-event-nesting-ai-coding-bug/</guid><description>A subtle transaction-event bug introduced during an AI-assisted refactor</description><pubDate>Tue, 14 Apr 2026 00:00:00 GMT</pubDate></item><item><title>When an Async Task Cannot Catch a Synchronous Request</title><link>https://saten.website/en/blog/async-task-vs-sync-request/</link><guid isPermaLink="true">https://saten.website/en/blog/async-task-vs-sync-request/</guid><description>Why an empty Redis set needs a sentinel</description><pubDate>Mon, 30 Mar 2026 00:00:00 GMT</pubDate></item><item><title>A Slightly Embarrassing Reverse-Proxy Incident</title><link>https://saten.website/en/blog/reverse-proxy-production-incident/</link><guid isPermaLink="true">https://saten.website/en/blog/reverse-proxy-production-incident/</guid><description>A production incident that ended without serious damage</description><pubDate>Fri, 13 Mar 2026 00:00:00 GMT</pubDate></item><item><title>This Is a Roguelike, Baby: My Time with MEWGENICS</title><link>https://saten.website/en/blog/mewgenics-review/</link><guid isPermaLink="true">https://saten.website/en/blog/mewgenics-review/</guid><description>Can Edmund McMillen&apos;s new game recapture the magic of Isaac?</description><pubDate>Thu, 12 Feb 2026 00:00:00 GMT</pubDate></item><item><title>Mixing Java and Kotlin: A Small Build Failure</title><link>https://saten.website/en/blog/mixing-java-and-kotlin/</link><guid isPermaLink="true">https://saten.website/en/blog/mixing-java-and-kotlin/</guid><description>A lesson about Java and Kotlin compilation order in Maven</description><pubDate>Tue, 10 Feb 2026 00:00:00 GMT</pubDate></item><item><title>The First Version of This Blog Is Done</title><link>https://saten.website/en/blog/building-this-blog/</link><guid isPermaLink="true">https://saten.website/en/blog/building-this-blog/</guid><description>A quick note about the initial build</description><pubDate>Mon, 09 Feb 2026 00:00:00 GMT</pubDate></item></channel></rss>