<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
        xmlns:image="http://www.google.com/schemas/sitemap-image/1.1">
  <url>
    <loc>https://umurinan.com/</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>1.0</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/blog.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.9</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/uses.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/hibernate-spring-data-jpa-in-depth.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/hibernate-spring-data-jpa-in-depth.og.svg</image:loc>
      <image:title>Hibernate &amp; Spring Data JPA in Depth</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/microservices-with-spring-boot-4.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/microservices-with-spring-boot-4.og.svg</image:loc>
      <image:title>Microservices with Spring Boot 4</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/spring-boot-4-performance-in-practice.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/spring-boot-4-performance-in-practice.og.svg</image:loc>
      <image:title>Spring Boot 4 Performance in Practice</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/event-driven-architecture.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/event-driven-architecture.og.svg</image:loc>
      <image:title>Event-Driven Architecture with Spring Boot 4.x and Kafka 4.x</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/postgresql-from-mvcc-to-production.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/postgresql-from-mvcc-to-production.og.svg</image:loc>
      <image:title>PostgreSQL: From MVCC to Production</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/spring-security-7.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/spring-security-7.og.svg</image:loc>
      <image:title>Spring Security 7: From Internals to Production</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/spring-boot-4-in-practice.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/spring-boot-4-in-practice.og.svg</image:loc>
      <image:title>Spring Boot 4 in Practice</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/ai-assisted-development-with-spring-boot.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/ai-assisted-development-with-spring-boot.og.svg</image:loc>
      <image:title>AI-Assisted Development with Spring Boot</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/cloud-native-spring-boot.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/cloud-native-spring-boot.og.svg</image:loc>
      <image:title>Cloud-Native Spring Boot: Production Kubernetes for Java Engineers</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/modern-java-in-practice.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/modern-java-in-practice.og.svg</image:loc>
      <image:title>Modern Java in Practice: Java 21 and 25 LTS for Working Engineers</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/production-observability.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/production-observability.og.svg</image:loc>
      <image:title>Production Observability with Spring Boot 4, OpenTelemetry, and Grafana</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/production-caching.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.7</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/books/production-caching.og.svg</image:loc>
      <image:title>Production Caching with Spring, Redis, Memcached, and Hazelcast</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/samples/hibernate-spring-data-jpa-in-depth.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/samples/microservices-with-spring-boot-4.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/samples/spring-boot-4-performance-in-practice.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/samples/event-driven-architecture.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/samples/postgresql-from-mvcc-to-production.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/samples/spring-security-7.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/books/samples/modern-java-in-practice.html</loc>
    <lastmod>2026-06-03T12:30:52.645Z</lastmod>
    <changefreq>yearly</changefreq>
    <priority>0.6</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/postgres-won-the-database-war-now-what.html</loc>
    <lastmod>2026-06-03T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/postgres-won-the-database-war-now-what.og.svg</image:loc>
      <image:title>Postgres Won the Database War. Now What?</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/youre-running-kafka-for-three-topics.html</loc>
    <lastmod>2026-06-02T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/youre-running-kafka-for-three-topics.og.svg</image:loc>
      <image:title>You&apos;re Running Kafka for Three Topics</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/rest-vs-graphql-is-over-youre-now-running-both-badly.html</loc>
    <lastmod>2026-06-01T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/rest-vs-graphql-is-over-youre-now-running-both-badly.og.svg</image:loc>
      <image:title>REST vs GraphQL Is Over. You&apos;re Now Running Both, Badly.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/duckdb-ate-your-analytics-pipeline.html</loc>
    <lastmod>2026-05-31T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/duckdb-ate-your-analytics-pipeline.og.svg</image:loc>
      <image:title>DuckDB Ate Your Analytics Pipeline and That&apos;s Fine</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-rag-pipeline-that-confidently-made-things-up.html</loc>
    <lastmod>2026-05-30T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-rag-pipeline-that-confidently-made-things-up.og.svg</image:loc>
      <image:title>The RAG Pipeline That Confidently Made Things Up</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/server-sent-events-are-back-you-should-use-them.html</loc>
    <lastmod>2026-05-29T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/server-sent-events-are-back-you-should-use-them.og.svg</image:loc>
      <image:title>Server-Sent Events Are Back. You Should Use Them.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/why-your-distributed-lock-doesnt-lock.html</loc>
    <lastmod>2026-05-28T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/why-your-distributed-lock-doesnt-lock.og.svg</image:loc>
      <image:title>Why Your Distributed Lock Doesn&apos;t Lock</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-day-our-llm-bill-hit-40k.html</loc>
    <lastmod>2026-05-27T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-day-our-llm-bill-hit-40k.og.svg</image:loc>
      <image:title>The Day Our LLM Bill Hit $40k</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/claude-code-vs-cursor-six-months-of-both.html</loc>
    <lastmod>2026-05-26T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/claude-code-vs-cursor-six-months-of-both.og.svg</image:loc>
      <image:title>Claude Code vs Cursor: Six Months of Both</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/pgvector-at-10-million-rows-is-a-different-animal.html</loc>
    <lastmod>2026-05-26T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/pgvector-at-10-million-rows-is-a-different-animal.og.svg</image:loc>
      <image:title>pgvector at 10 Million Rows Is a Different Animal</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/your-ai-agent-isnt-broken-your-evals-are.html</loc>
    <lastmod>2026-05-26T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/your-ai-agent-isnt-broken-your-evals-are.og.svg</image:loc>
      <image:title>Your AI Agent Isn&apos;t Broken. Your Evals Are.</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/kafka-consumer-group-that-stopped-consuming.html</loc>
    <lastmod>2026-05-24T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/kafka-consumer-group-that-stopped-consuming.og.svg</image:loc>
      <image:title>The Kafka Consumer Group That Stopped Consuming</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-postgres-index-that-never-gets-used.html</loc>
    <lastmod>2026-05-23T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-postgres-index-that-never-gets-used.og.svg</image:loc>
      <image:title>The Postgres Index That Never Gets Used</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/ai-code-review-is-mostly-noise.html</loc>
    <lastmod>2026-05-22T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/ai-code-review-is-mostly-noise.og.svg</image:loc>
      <image:title>AI Code Review Is Mostly Noise</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-endpoint-that-always-returns-200.html</loc>
    <lastmod>2026-05-21T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-endpoint-that-always-returns-200.og.svg</image:loc>
      <image:title>The Endpoint That Always Returns 200</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/dns-is-always-the-answer.html</loc>
    <lastmod>2026-05-20T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/dns-is-always-the-answer.og.svg</image:loc>
      <image:title>DNS Is Always the Answer</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/open-session-in-view-is-spring-boots-quietest-footgun.html</loc>
    <lastmod>2026-05-19T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/open-session-in-view-is-spring-boots-quietest-footgun.og.svg</image:loc>
      <image:title>Open Session in View Is Spring Boot&apos;s Quietest Footgun</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/four-spring-boot-4-features-that-change-your-code.html</loc>
    <lastmod>2026-05-18T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/four-spring-boot-4-features-that-change-your-code.og.svg</image:loc>
      <image:title>Four Spring Boot 4 Features That Actually Change Your Code</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-long-transaction-that-ate-your-postgres.html</loc>
    <lastmod>2026-05-17T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-long-transaction-that-ate-your-postgres.og.svg</image:loc>
      <image:title>The Long Transaction That Ate Your Postgres</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/ai-coding-speedup-is-not-what-you-think.html</loc>
    <lastmod>2026-05-16T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/ai-coding-speedup-is-not-what-you-think.og.svg</image:loc>
      <image:title>Your AI Coding Speedup Is Not What You Think</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/sagas-are-not-transactions.html</loc>
    <lastmod>2026-05-15T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/sagas-are-not-transactions.og.svg</image:loc>
      <image:title>Sagas Are Not Transactions</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/checked-exceptions-were-a-mistake.html</loc>
    <lastmod>2026-05-14T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/checked-exceptions-were-a-mistake.og.svg</image:loc>
      <image:title>Checked Exceptions Were a Mistake and Spring Proved It</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/your-spring-bean-is-not-what-you-think-it-is.html</loc>
    <lastmod>2026-05-13T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/your-spring-bean-is-not-what-you-think-it-is.og.svg</image:loc>
      <image:title>Your Spring Bean Is Not What You Think It Is</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/your-equals-and-hashcode-are-wrong.html</loc>
    <lastmod>2026-05-12T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/your-equals-and-hashcode-are-wrong.og.svg</image:loc>
      <image:title>Your Equals and HashCode Are Wrong</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/your-jwt-is-not-a-session.html</loc>
    <lastmod>2026-05-11T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/your-jwt-is-not-a-session.og.svg</image:loc>
      <image:title>Your JWT Is Not a Session</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/hibernate-ddl-auto-is-not-a-migration-tool.html</loc>
    <lastmod>2026-05-10T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/hibernate-ddl-auto-is-not-a-migration-tool.og.svg</image:loc>
      <image:title>Hibernate&apos;s ddl-auto Is Not a Migration Tool</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/your-replica-is-lying-to-you.html</loc>
    <lastmod>2026-05-09T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/your-replica-is-lying-to-you.og.svg</image:loc>
      <image:title>Your Replica Is Lying To You</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-test-that-passes-when-prod-is-broken.html</loc>
    <lastmod>2026-05-08T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-test-that-passes-when-prod-is-broken.og.svg</image:loc>
      <image:title>The Test That Passes When Prod Is Broken</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/your-logs-are-a-pile-not-a-system.html</loc>
    <lastmod>2026-05-07T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/your-logs-are-a-pile-not-a-system.og.svg</image:loc>
      <image:title>Your Logs Are a Pile, Not a System</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/utc-in-the-database-was-the-easy-part.html</loc>
    <lastmod>2026-05-06T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/utc-in-the-database-was-the-easy-part.og.svg</image:loc>
      <image:title>UTC In the Database Was the Easy Part</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/your-async-code-is-still-single-threaded.html</loc>
    <lastmod>2026-05-04T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/your-async-code-is-still-single-threaded.og.svg</image:loc>
      <image:title>Your Async Code Is Still Single-Threaded</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/two-transactions-walk-into-a-lock.html</loc>
    <lastmod>2026-05-01T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/two-transactions-walk-into-a-lock.og.svg</image:loc>
      <image:title>Two Transactions Walk Into a Lock</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/nobody-reads-a-thousand-line-diff.html</loc>
    <lastmod>2026-04-30T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/nobody-reads-a-thousand-line-diff.og.svg</image:loc>
      <image:title>Nobody Reads a 1,000-Line Diff</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/http-caching-cache-control.html</loc>
    <lastmod>2026-04-29T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/http-caching-cache-control.og.svg</image:loc>
      <image:title>The Cache-Control Header You&apos;re Probably Ignoring</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/why-your-service-slows-down-at-9am.html</loc>
    <lastmod>2026-04-28T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/why-your-service-slows-down-at-9am.og.svg</image:loc>
      <image:title>Why Your Service Slows Down at 9am Every Day</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/spring-auto-configuration-is-magic-until-it-isnt.html</loc>
    <lastmod>2026-04-27T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/spring-auto-configuration-is-magic-until-it-isnt.og.svg</image:loc>
      <image:title>Spring Boot Auto-Configuration Is Magic Until It Isn&apos;t</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/cqrs-sounds-fancy-until-you-have-to-debug-it.html</loc>
    <lastmod>2026-04-26T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/cqrs-sounds-fancy-until-you-have-to-debug-it.og.svg</image:loc>
      <image:title>CQRS Sounds Fancy Until You Have to Debug It</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-composite-index-nobody-can-read.html</loc>
    <lastmod>2026-04-25T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-composite-index-nobody-can-read.og.svg</image:loc>
      <image:title>The Composite Index Nobody Can Read</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-hibernate-query-you-didnt-write.html</loc>
    <lastmod>2026-04-24T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-hibernate-query-you-didnt-write.og.svg</image:loc>
      <image:title>The Hibernate Query You Didn&apos;t Write</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/database-isolation-levels.html</loc>
    <lastmod>2026-04-21T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/database-isolation-levels.og.svg</image:loc>
      <image:title>Database Isolation Levels Are a Contract, Not a Dial</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-null-trap.html</loc>
    <lastmod>2026-04-19T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-null-trap.og.svg</image:loc>
      <image:title>The NULL Trap</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-thundering-herd-problem.html</loc>
    <lastmod>2026-04-19T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-thundering-herd-problem.og.svg</image:loc>
      <image:title>The Thundering Herd Problem</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/explain-analyze-lies-to-you.html</loc>
    <lastmod>2026-04-17T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/explain-analyze-lies-to-you.og.svg</image:loc>
      <image:title>EXPLAIN ANALYZE Lies to You</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/database-partitioning-the-decision-you-cant-undo.html</loc>
    <lastmod>2026-04-16T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/database-partitioning-the-decision-you-cant-undo.og.svg</image:loc>
      <image:title>Database Partitioning: The Decision You Can&apos;t Undo</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/connection-pool-tuning-a-practical-guide.html</loc>
    <lastmod>2026-04-15T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/connection-pool-tuning-a-practical-guide.og.svg</image:loc>
      <image:title>Connection Pool Tuning: A Practical Guide</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/webhook-reliability-the-lost-art.html</loc>
    <lastmod>2026-04-14T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/webhook-reliability-the-lost-art.og.svg</image:loc>
      <image:title>Webhook Reliability: The Lost Art</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/transactional-is-not-magic.html</loc>
    <lastmod>2026-04-12T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/transactional-is-not-magic.og.svg</image:loc>
      <image:title>@Transactional Is Not Magic</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/transactions-dont-fix-race-conditions.html</loc>
    <lastmod>2026-04-12T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/transactions-dont-fix-race-conditions.og.svg</image:loc>
      <image:title>Transactions Don&apos;t Fix Race Conditions</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/good-enough-is-a-strategy.html</loc>
    <lastmod>2026-04-11T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/good-enough-is-a-strategy.og.svg</image:loc>
      <image:title>Good Enough Is a Strategy</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/soft-deletes-are-a-trap.html</loc>
    <lastmod>2026-04-10T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/soft-deletes-are-a-trap.og.svg</image:loc>
      <image:title>Soft Deletes Are a Trap</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/java-terminology-survival-guide.html</loc>
    <lastmod>2026-04-09T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/java-terminology-survival-guide.og.svg</image:loc>
      <image:title>The Java Terminology Survival Guide</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-outbox-pattern.html</loc>
    <lastmod>2026-04-08T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-outbox-pattern.og.svg</image:loc>
      <image:title>The Outbox Pattern: Reliable Events Without Two-Phase Commit</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/event-sourcing-sounds-better-than-it-is.html</loc>
    <lastmod>2026-04-07T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/event-sourcing-sounds-better-than-it-is.og.svg</image:loc>
      <image:title>Event Sourcing Sounds Better Than It Is</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/rate-limiting-is-harder-than-it-looks.html</loc>
    <lastmod>2026-04-06T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/rate-limiting-is-harder-than-it-looks.og.svg</image:loc>
      <image:title>Rate Limiting Is Harder Than It Looks</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/distributed-transactions-are-a-lie.html</loc>
    <lastmod>2026-04-05T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/distributed-transactions-are-a-lie.og.svg</image:loc>
      <image:title>Distributed Transactions Are a Lie</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/premature-abstraction-is-worse-than-duplication.html</loc>
    <lastmod>2026-04-03T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/premature-abstraction-is-worse-than-duplication.og.svg</image:loc>
      <image:title>Premature Abstraction Is Worse Than Duplication</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-database-is-not-your-message-queue.html</loc>
    <lastmod>2026-04-02T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-database-is-not-your-message-queue.og.svg</image:loc>
      <image:title>The Database Is Not Your Message Queue</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/monitoring-is-not-a-dashboard.html</loc>
    <lastmod>2026-04-01T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/monitoring-is-not-a-dashboard.og.svg</image:loc>
      <image:title>Monitoring Is Not a Dashboard</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-senior-engineers-job-is-to-say-no.html</loc>
    <lastmod>2026-03-31T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-senior-engineers-job-is-to-say-no.og.svg</image:loc>
      <image:title>The Senior Engineer&apos;s Job Is to Say No</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/caching-is-easy-until-it-isnt.html</loc>
    <lastmod>2026-03-30T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/caching-is-easy-until-it-isnt.og.svg</image:loc>
      <image:title>Caching Is Easy Until It Isn&apos;t</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-deploy-that-took-down-friday.html</loc>
    <lastmod>2026-03-29T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-deploy-that-took-down-friday.og.svg</image:loc>
      <image:title>The Deploy That Took Down Friday</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/connection-pools-the-thing-you-never-think-about.html</loc>
    <lastmod>2026-03-28T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/connection-pools-the-thing-you-never-think-about.og.svg</image:loc>
      <image:title>Connection Pools: The Thing You Never Think About Until Production Burns</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/healthcare-ai-has-an-engineering-problem.html</loc>
    <lastmod>2026-03-28T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/healthcare-ai-has-an-engineering-problem.og.svg</image:loc>
      <image:title>Healthcare AI Has an Engineering Problem</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/database-indexes-explained.html</loc>
    <lastmod>2026-03-27T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/database-indexes-explained.og.svg</image:loc>
      <image:title>Database Indexes Explained for People Who Keep Forgetting</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/spring-boot-security-is-hard.html</loc>
    <lastmod>2026-03-26T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/spring-boot-security-is-hard.og.svg</image:loc>
      <image:title>Spring Boot Security Is Hard and That&apos;s Okay</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/the-monolith-that-works-fine.html</loc>
    <lastmod>2026-03-23T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/the-monolith-that-works-fine.og.svg</image:loc>
      <image:title>The Monolith That Works Fine, Thanks</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/why-most-technical-debates-dont-matter.html</loc>
    <lastmod>2026-03-22T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/why-most-technical-debates-dont-matter.og.svg</image:loc>
      <image:title>Why Most Technical Debates Don&apos;t Matter</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/vibe-coding-is-not-engineering.html</loc>
    <lastmod>2026-03-21T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/vibe-coding-is-not-engineering.og.svg</image:loc>
      <image:title>Vibe Coding Is Not Engineering</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/moltbook-ai-social-network.html</loc>
    <lastmod>2026-03-18T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/moltbook-ai-social-network.og.svg</image:loc>
      <image:title>I Spent a Week on Moltbook, the Social Network Where Only AI Agents Can Post</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/openclaw-ai-agent-setup.html</loc>
    <lastmod>2026-02-25T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/openclaw-ai-agent-setup.og.svg</image:loc>
      <image:title>I Gave My AI Agent Access to My Life. Here&apos;s What Happened</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/swiftui-vs-jetpack-compose.html</loc>
    <lastmod>2026-02-20T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/swiftui-vs-jetpack-compose.og.svg</image:loc>
      <image:title>SwiftUI vs Jetpack Compose: A Side-by-Side Comparison From Someone Who Uses Both Daily</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/ios-memory-mcp-server.html</loc>
    <lastmod>2026-02-18T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/ios-memory-mcp-server.og.svg</image:loc>
      <image:title>Debugging iOS Memory Issues from Your AI Chat Interface</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/slack-claude-code-remote-prompts.html</loc>
    <lastmod>2026-02-18T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/slack-claude-code-remote-prompts.og.svg</image:loc>
      <image:title>I Use Slack to Boss Around My Local Claude Code Terminal (And It&apos;s Glorious)</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/java-component-structure.html</loc>
    <lastmod>2026-02-15T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/java-component-structure.og.svg</image:loc>
      <image:title>Why Component-Based Structure Beats Traditional Package-by-Layer in Java</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/mcp-agents-skills-workflow.html</loc>
    <lastmod>2026-02-15T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/mcp-agents-skills-workflow.og.svg</image:loc>
      <image:title>How I Use MCP Agents, Skills, and Subagents to Build Software Faster</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/mcp-servers-guide.html</loc>
    <lastmod>2026-02-14T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/mcp-servers-guide.og.svg</image:loc>
      <image:title>How MCP Servers Supercharge My AI Development Workflow</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/dunning-kruger-effect.html</loc>
    <lastmod>2026-02-12T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/dunning-kruger-effect.og.svg</image:loc>
      <image:title>The Dunning-Kruger Effect: Why Incompetence Feels Like Confidence</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/git-best-practices.html</loc>
    <lastmod>2026-02-12T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/git-best-practices.og.svg</image:loc>
      <image:title>Git Best Practices for Modern Engineering Teams</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/posts/claude-code-workflow.html</loc>
    <lastmod>2026-02-11T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/posts/claude-code-workflow.og.svg</image:loc>
      <image:title>How I Use Claude Code Terminal to Supercharge My Development Workflow</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/spring-data-derived-queries-crossing-boundaries.html</loc>
    <lastmod>2026-05-19T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/spring-data-derived-queries-crossing-boundaries.og.svg</image:loc>
      <image:title>Spring Data Derived Queries: Crossing Boundaries</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/spring-data-derived-queries-the-single-entity-toolkit.html</loc>
    <lastmod>2026-05-19T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/spring-data-derived-queries-the-single-entity-toolkit.og.svg</image:loc>
      <image:title>Spring Data Derived Queries: The Single-Entity Toolkit</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/hikaricp-production-tuning.html</loc>
    <lastmod>2026-05-16T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/hikaricp-production-tuning.og.svg</image:loc>
      <image:title>HikariCP in Production: Tuning, Monitoring, and pgbouncer</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/postgres-jsonb-deep-dive.html</loc>
    <lastmod>2026-05-09T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/postgres-jsonb-deep-dive.og.svg</image:loc>
      <image:title>PostgreSQL JSONB Deep Dive: Operators, Indexes, and the Tradeoffs Nobody Told You About</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/database-indexes-explained.html</loc>
    <lastmod>2026-04-25T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/database-indexes-explained.og.svg</image:loc>
      <image:title>Database Indexes Explained: A PostgreSQL Walkthrough With EXPLAIN ANALYZE</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/spring-transactional.html</loc>
    <lastmod>2026-04-12T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/spring-transactional.og.svg</image:loc>
      <image:title>@Transactional Demystified: Every Attribute With Working Tests</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/optimistic-vs-pessimistic-locking.html</loc>
    <lastmod>2026-04-10T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/optimistic-vs-pessimistic-locking.og.svg</image:loc>
      <image:title>Optimistic vs Pessimistic Locking in JPA</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/transactional-outbox.html</loc>
    <lastmod>2026-04-08T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/transactional-outbox.og.svg</image:loc>
      <image:title>The Transactional Outbox Pattern in Spring Boot</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/tutorials/n-plus-one-problem.html</loc>
    <lastmod>2026-04-07T00:00:00.000Z</lastmod>
    <changefreq>monthly</changefreq>
    <priority>0.8</priority>
    <image:image>
      <image:loc>https://umurinan.com/pages/tutorials/n-plus-one-problem.og.svg</image:loc>
      <image:title>The N+1 Problem: All Four Fetch Strategies Explained</image:title>
    </image:image>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/ai-tooling.html</loc>
    <lastmod>2026-05-22T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/engineering-practices.html</loc>
    <lastmod>2026-05-22T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/software-thinking.html</loc>
    <lastmod>2026-05-22T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/caching.html</loc>
    <lastmod>2026-06-01T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/performance.html</loc>
    <lastmod>2026-05-23T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/architecture.html</loc>
    <lastmod>2026-06-03T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/java.html</loc>
    <lastmod>2026-05-19T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/spring-boot.html</loc>
    <lastmod>2026-05-19T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/code-quality.html</loc>
    <lastmod>2026-05-14T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/ai.html</loc>
    <lastmod>2026-05-27T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/productivity.html</loc>
    <lastmod>2026-02-25T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/connection-pools.html</loc>
    <lastmod>2026-05-16T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/postgresql.html</loc>
    <lastmod>2026-06-03T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/distributed-systems.html</loc>
    <lastmod>2026-05-28T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/sql.html</loc>
    <lastmod>2026-05-09T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/concurrency.html</loc>
    <lastmod>2026-05-28T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/transactions.html</loc>
    <lastmod>2026-05-17T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/data-modeling.html</loc>
    <lastmod>2026-05-09T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/microservices.html</loc>
    <lastmod>2026-05-15T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/career.html</loc>
    <lastmod>2026-04-11T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/ai-products.html</loc>
    <lastmod>2026-03-28T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/hibernate.html</loc>
    <lastmod>2026-05-19T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/devops.html</loc>
    <lastmod>2026-05-10T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/api-design.html</loc>
    <lastmod>2026-06-01T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/observability.html</loc>
    <lastmod>2026-05-24T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/reliability.html</loc>
    <lastmod>2026-05-28T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/messaging.html</loc>
    <lastmod>2026-04-08T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
  <url>
    <loc>https://umurinan.com/pages/topics/llm.html</loc>
    <lastmod>2026-05-30T00:00:00.000Z</lastmod>
    <changefreq>weekly</changefreq>
    <priority>0.7</priority>
  </url>
</urlset>
