<?xml version="1.0" encoding="UTF-8"?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://blog.ludmal.com/</loc>
<lastmod>2026-09-14T09:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog</loc>
<lastmod>2026-09-14T09:00:00.000Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://blog.ludmal.com/contact</loc>
<changefreq>yearly</changefreq>
<priority>0.5</priority>
</url>
<url>
<loc>https://blog.ludmal.com/projects</loc>
<changefreq>monthly</changefreq>
<priority>0.7</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/let-your-coding-agent-own-the-docs</loc>
<lastmod>2026-09-14T09:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/fable-optimized-my-python-endpoint</loc>
<lastmod>2026-06-16T09:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/the-endgame-for-programmers</loc>
<lastmod>2026-06-10T10:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/prompt-looping</loc>
<lastmod>2026-06-09T10:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/cut-token-usage-claude-code</loc>
<lastmod>2026-06-04T10:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/mcp-tunnels-claude-agents-private-servers</loc>
<lastmod>2026-06-03T10:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/three-agent-content-pipeline-microsoft-agent-framework</loc>
<lastmod>2026-05-24T10:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/agents-that-pay-for-themselves</loc>
<lastmod>2026-04-08T16:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/rag-production-observability</loc>
<lastmod>2026-03-05T11:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/the-vibe-coders-dilemma</loc>
<lastmod>2026-03-04T11:35:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/openspec-in-a-monorepo</loc>
<lastmod>2026-02-14T10:15:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/ms-agent-framework-on-azure-production</loc>
<lastmod>2026-01-27T14:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/graphrag-in-dotnet</loc>
<lastmod>2026-01-14T13:20:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/caching-llm-responses</loc>
<lastmod>2026-01-09T15:42:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/vibe-coded-saas-in-a-weekend</loc>
<lastmod>2025-12-22T22:18:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/hidden-cost-of-reranking</loc>
<lastmod>2025-12-08T11:08:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/why-i-stopped-writing-prompts</loc>
<lastmod>2025-11-24T17:20:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/rag-caching-strategies</loc>
<lastmod>2025-11-19T14:50:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/multi-agent-workflow-with-ms-agent-framework-csharp</loc>
<lastmod>2025-11-09T12:05:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/feature-flag-playbook-for-llm-features</loc>
<lastmod>2025-10-27T10:25:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/small-models-big-impact</loc>
<lastmod>2025-10-13T08:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/spec-driven-development-with-openspec</loc>
<lastmod>2025-09-30T11:50:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/from-naive-rag-to-agentic-rag</loc>
<lastmod>2025-09-17T08:45:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/agentic-rag-semantic-kernel</loc>
<lastmod>2025-09-08T16:15:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/vibe-coding-isnt-a-skill-issue</loc>
<lastmod>2025-09-02T20:42:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/microsoft-agent-framework-vs-semantic-kernel</loc>
<lastmod>2025-08-19T09:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/streaming-llm-responses-through-rest-api</loc>
<lastmod>2025-08-08T16:18:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/post-chat-era</loc>
<lastmod>2025-07-29T19:10:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/evaluating-rag-systems-ragas</loc>
<lastmod>2025-07-26T10:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/hybrid-search-in-rag</loc>
<lastmod>2025-07-15T14:32:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/bolting-an-llm-onto-a-legacy-dotnet-app</loc>
<lastmod>2025-06-22T13:50:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/hybrid-search-in-rag-dotnet</loc>
<lastmod>2025-06-18T11:25:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/why-your-rag-pipeline-returns-garbage</loc>
<lastmod>2025-06-04T09:14:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/kernel-memory-dotnet-review</loc>
<lastmod>2025-04-30T15:55:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/naive-vs-advanced-vs-agentic-vs-graphrag-vs-adaptive-rag</loc>
<lastmod>2025-03-12T09:40:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/ef-core-10-features</loc>
<lastmod>2025-02-22T13:10:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/dotnet-10-builtin-validation</loc>
<lastmod>2025-02-19T10:20:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/embeddings-are-not-created-equal</loc>
<lastmod>2025-02-15T14:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/senior-engineer-to-ai-augmented-senior</loc>
<lastmod>2025-02-11T19:45:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/minimal-apis-dotnet-10-changes</loc>
<lastmod>2025-02-08T09:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/native-aot-aspnet-core-dotnet-10</loc>
<lastmod>2025-02-02T11:15:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/dotnet-aspire-production-reality-check</loc>
<lastmod>2025-01-30T16:00:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/server-sent-events-dotnet-10</loc>
<lastmod>2025-01-28T13:45:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/why-your-rag-hallucinates</loc>
<lastmod>2025-01-22T10:08:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/building-mcp-server-dotnet</loc>
<lastmod>2025-01-12T14:20:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/csharp-14-field-keyword-null-conditional</loc>
<lastmod>2024-12-17T17:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/vector-databases-compared-dotnet</loc>
<lastmod>2024-12-02T15:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/chunking-strategies-for-rag</loc>
<lastmod>2024-11-04T11:45:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/designing-ai-features-that-survive</loc>
<lastmod>2024-10-28T09:50:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/reranking-in-rag</loc>
<lastmod>2024-10-09T16:22:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/fastendpoints-vs-minimal-apis-vs-controllers</loc>
<lastmod>2024-09-03T10:15:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/building-first-rag-pipeline-dotnet-semantic-kernel-qdrant</loc>
<lastmod>2024-08-21T13:40:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/linq-performance-dotnet-9-10</loc>
<lastmod>2024-07-23T14:45:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/microservices-modular-monolith-decision</loc>
<lastmod>2024-06-11T11:08:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/structuring-minimal-apis-endpoint-per-feature</loc>
<lastmod>2024-05-14T09:30:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/real-cost-of-async-await-csharp</loc>
<lastmod>2024-04-09T15:22:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://blog.ludmal.com/blog/source-generators-csharp-tutorial</loc>
<lastmod>2024-03-25T10:14:00.000Z</lastmod>
<changefreq>monthly</changefreq>
<priority>0.8</priority>
</url>
</urlset>
