<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Knourian Blog</title><link>https://www.knourian.ir/en/posts/</link><description>Knourian Blog</description><language>en</language><atom:link xmlns:atom="http://www.w3.org/2005/Atom" href="https://www.knourian.ir/en/feed.xml" rel="self" type="application/rss+xml"/><item><title>Minimal CQRS: separate code paths, keep one application and one database</title><link>https://www.knourian.ir/en/posts/minimal-cqrs-one-application-one-database/</link><guid isPermaLink="true">https://www.knourian.ir/en/posts/minimal-cqrs-one-application-one-database/</guid><pubDate>Thu, 03 Sep 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>architecture</category><category>architecture</category><category>cqrs</category><category>cqs</category><category>dotnet</category><category>csharp</category><description>CQRS can start with separate command and query paths in one application using one database. The boundary is about responsibilities before infrastructure.</description></item><item><title>CQS and commands: make the application understand intent</title><link>https://www.knourian.ir/en/posts/cqs-commands-make-intent-explicit/</link><guid isPermaLink="true">https://www.knourian.ir/en/posts/cqs-commands-make-intent-explicit/</guid><pubDate>Wed, 26 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>architecture</category><category>architecture</category><category>cqrs</category><category>cqs</category><category>dotnet</category><category>csharp</category><description>A behavior-focused command tells the application what a user wants to do, so validation, authorization, and business rules have one clear home.</description></item><item><title>When CRUD stops describing the work</title><link>https://www.knourian.ir/en/posts/when-crud-stops-describing-the-work/</link><guid isPermaLink="true">https://www.knourian.ir/en/posts/when-crud-stops-describing-the-work/</guid><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>architecture</category><category>architecture</category><category>cqrs</category><category>cqs</category><category>dotnet</category><category>csharp</category><description>CRUD works for simple data. It starts to fail when updates hide business intent and reads need a different model.</description></item><item><title>Async, concurrency, and parallelism are different</title><link>https://www.knourian.ir/en/posts/async-concurrency-parallelism/</link><guid isPermaLink="true">https://www.knourian.ir/en/posts/async-concurrency-parallelism/</guid><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>software-development</category><category>csharp</category><category>dotnet</category><category>async</category><category>concurrency</category><category>parallelism</category><description>Async avoids blocked waits, concurrency coordinates overlapping work, and parallelism uses multiple CPU cores.</description></item><item><title>Why async programming exists</title><link>https://www.knourian.ir/en/posts/why-async-programming-exists/</link><guid isPermaLink="true">https://www.knourian.ir/en/posts/why-async-programming-exists/</guid><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>software-development</category><category>csharp</category><category>dotnet</category><category>async</category><description>Async programming keeps an application useful while it waits for I/O.</description></item><item><title>Three Ways to Clean Up Local Git Branches</title><link>https://www.knourian.ir/en/posts/prune-gone-branches/</link><guid isPermaLink="true">https://www.knourian.ir/en/posts/prune-gone-branches/</guid><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>git</category><category>developer-productivity</category><category>workflow</category><description>Keep local Git branches under control with targeted pruning, merged-branch cleanup, or a full local reset.</description></item><item><title>Building This Blog Without Building a CMS</title><link>https://www.knourian.ir/en/posts/building-this-blog/</link><guid isPermaLink="true">https://www.knourian.ir/en/posts/building-this-blog/</guid><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate><author>Knourian</author><category>engineering</category><category>typescript</category><category>static-site</category><category>web-development</category><description>How this bilingual static blog turns Markdown and editable HTML into a small, deployable site without a database or frontend framework.</description></item></channel></rss>