<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Munir Hassan</title><description>Designing systems that last, and teams that can own them. Notes on platform architecture, engineering leadership and the trade-offs in between.</description><link>https://munirhassan.com/</link><item><title>Tech debt snowballs, then it avalanches</title><link>https://munirhassan.com/2026/10/06/tech-debt-snowballs-then-it-avalanches/</link><guid isPermaLink="true">https://munirhassan.com/2026/10/06/tech-debt-snowballs-then-it-avalanches/</guid><description>Technical debt rarely fails slowly. It grows quietly for months, then one day nothing can move until it&apos;s fixed. How to spot the snowball, why you don&apos;t get to choose the avalanche day, and what a lead can do before it arrives.</description><pubDate>Tue, 06 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Deep Work, read as a lead engineer</title><link>https://munirhassan.com/2026/10/03/deep-work-read-as-a-lead-engineer/</link><guid isPermaLink="true">https://munirhassan.com/2026/10/03/deep-work-read-as-a-lead-engineer/</guid><description>Cal Newport&apos;s Deep Work argues that focus is getting rarer just as it becomes more valuable. Three ideas I&apos;m taking from it, and the tension it doesn&apos;t resolve for anyone who leads a team.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Don&apos;t build business logic on an expiry notification</title><link>https://munirhassan.com/2026/10/03/dont-build-business-logic-on-an-expiry-notification/</link><guid isPermaLink="true">https://munirhassan.com/2026/10/03/dont-build-business-logic-on-an-expiry-notification/</guid><description>A background process that was going to be triggered by a cache telling us a key had expired. Why that&apos;s fragile, the queue-and-scheduler design we chose instead, and why we deliberately stopped short of a full event-driven rebuild.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Last write wins, and the customer loses</title><link>https://munirhassan.com/2026/10/03/last-write-wins-and-the-customer-loses/</link><guid isPermaLink="true">https://munirhassan.com/2026/10/03/last-write-wins-and-the-customer-loses/</guid><description>A multi-tab bug that looked like a one-off defect turned out to be a design assumption the product had outgrown. Why I argued for fixing the model, not just the bug, and how to raise that kind of risk.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Release risk usually isn&apos;t in the code</title><link>https://munirhassan.com/2026/10/03/release-risk-usually-isnt-in-the-code/</link><guid isPermaLink="true">https://munirhassan.com/2026/10/03/release-risk-usually-isnt-in-the-code/</guid><description>Most release risk I&apos;ve dealt with wasn&apos;t a software defect. It was environment differences, unclear ownership of manual steps, late changes and rollback plans nobody had tried. What I learned preparing a high-risk platform migration.</description><pubDate>Sat, 03 Oct 2026 00:00:00 GMT</pubDate></item><item><title>Being right is not the job</title><link>https://munirhassan.com/2026/09/27/being-right-is-not-the-job/</link><guid isPermaLink="true">https://munirhassan.com/2026/09/27/being-right-is-not-the-job/</guid><description>Cong Wang&apos;s essay on why he stopped arguing, a 2,500-year-old line from Lao Tzu, and what changes when you&apos;re the one who has to make technical decisions stick.</description><pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Moving my blog off WordPress with an AI agent: what I delegated, and what I didn&apos;t</title><link>https://munirhassan.com/2026/09/27/what-i-delegated-to-an-ai-agent/</link><guid isPermaLink="true">https://munirhassan.com/2026/09/27/what-i-delegated-to-an-ai-agent/</guid><description>I migrated this site from WordPress to a static site in one afternoon, working with an AI agent. The speed was impressive. The more useful lessons were about where the agent stopped and I had to decide.</description><pubDate>Sun, 27 Sep 2026 00:00:00 GMT</pubDate></item><item><title>Sitecore Headless: a listing component using placeholders</title><link>https://munirhassan.com/2023/07/24/sitecore-headless-listing-component-using-placeholder/</link><guid isPermaLink="true">https://munirhassan.com/2023/07/24/sitecore-headless-listing-component-using-placeholder/</guid><description>We need two JSON Rendering components: one for the list items and one for the container that holds the list. For example: MessageListItem, MessageListCard. The Next.js code for the…</description><pubDate>Mon, 24 Jul 2023 14:53:00 GMT</pubDate></item><item><title>Sitecore Headless with Next.js: convert a string into a Sitecore data type</title><link>https://munirhassan.com/2023/07/24/sitecore-headless-next-js-convert-a-string-into-a-sitecore-data-type/</link><guid isPermaLink="true">https://munirhassan.com/2023/07/24/sitecore-headless-next-js-convert-a-string-into-a-sitecore-data-type/</guid><description>In Next.js, we can convert a string into a Sitecore data type. Sitecore typically stores data in fields with specific data types such as Single Line Text, Rich Text, Date, Boolean,…</description><pubDate>Mon, 24 Jul 2023 14:33:37 GMT</pubDate></item><item><title>Sitecore EXM: Couldn&apos;t lock the item</title><link>https://munirhassan.com/2023/03/28/sitecore-exm-couldnt-lock-the-item/</link><guid isPermaLink="true">https://munirhassan.com/2023/03/28/sitecore-exm-couldnt-lock-the-item/</guid><description>Recently we encountered a warning message &quot;Couldn&apos;t lock the item LHSImage RHSCopy 2&quot; when we changed an image in a custom email and clicked Save. We have several custom Sitecore…</description><pubDate>Tue, 28 Mar 2023 12:14:14 GMT</pubDate></item><item><title>Facebook Conversions API</title><link>https://munirhassan.com/2023/03/28/facebook-conversion-api/</link><guid isPermaLink="true">https://munirhassan.com/2023/03/28/facebook-conversion-api/</guid><description>Introduction In January 2020, Google made clear its intention to stop supporting third party cookies in Chrome. Third party cookies have been the backbone of the display and native…</description><pubDate>Tue, 28 Mar 2023 12:12:01 GMT</pubDate></item><item><title>PowerShell scripts to get Sitecore User information</title><link>https://munirhassan.com/2021/10/17/powershell-scrips-to-get-sitecore-user-information/</link><guid isPermaLink="true">https://munirhassan.com/2021/10/17/powershell-scrips-to-get-sitecore-user-information/</guid><description>Sometimes we might need to get Sitecore user information in detail. The information isn’t always in the same place, so different scripts are handy for extracting different details.…</description><pubDate>Sun, 17 Oct 2021 20:31:10 GMT</pubDate></item><item><title>Email dispatch issue in Sitecore EXM</title><link>https://munirhassan.com/2021/09/30/email-dispatch-issue-sitecore-exm/</link><guid isPermaLink="true">https://munirhassan.com/2021/09/30/email-dispatch-issue-sitecore-exm/</guid><description>Recently we faced an interesting Sitecore EXM issue. We can create an email with a name up to 100 characters long. The default maxLength is 100 . Once we create the email, we can…</description><pubDate>Thu, 30 Sep 2021 19:20:31 GMT</pubDate></item><item><title>Dialogflow Custom Payload for Facebook Messenger</title><link>https://munirhassan.com/2021/08/15/dialogflow-custom-payload-for-facebook-messenger/</link><guid isPermaLink="true">https://munirhassan.com/2021/08/15/dialogflow-custom-payload-for-facebook-messenger/</guid><description>We are developing a chatbot for one of our clients. The chatbot is for Facebook Messenger, and in the back end we are using Google Cloud Dialogflow. Dialogflow is a natural…</description><pubDate>Sun, 15 Aug 2021 12:40:01 GMT</pubDate></item><item><title>On Sitecore item publish, update a single record in the index</title><link>https://munirhassan.com/2021/08/14/on-sitecore-publish-update-a-single-record-in-the-index/</link><guid isPermaLink="true">https://munirhassan.com/2021/08/14/on-sitecore-publish-update-a-single-record-in-the-index/</guid><description>Recently we faced an interesting problem. We were updating a Sitecore item field, but after publishing, the change was not reflected in the search results, which come from the…</description><pubDate>Sat, 14 Aug 2021 11:50:29 GMT</pubDate></item><item><title>Send alert when Sitecore running jobs get stuck</title><link>https://munirhassan.com/2021/05/11/send-alert-when-sitecore-running-jobs-get-stuck/</link><guid isPermaLink="true">https://munirhassan.com/2021/05/11/send-alert-when-sitecore-running-jobs-get-stuck/</guid><description>Recently we faced an issue in production where a Sitecore job hung. It blocked other jobs, and all our search index rebuild jobs were stuck in the queue. End users were not getting…</description><pubDate>Tue, 11 May 2021 22:20:53 GMT</pubDate></item><item><title>Programmatically resume paused emails in Sitecore EXM</title><link>https://munirhassan.com/2021/04/28/programatically-resume-paused-email-sitecore-exm/</link><guid isPermaLink="true">https://munirhassan.com/2021/04/28/programatically-resume-paused-email-sitecore-exm/</guid><description>When an email campaign is dispatched, it moves through a number of states (Draft, Queuing, Sending, and Sent). If an error occurs during dispatch and the IIS server is interrupted,…</description><pubDate>Wed, 28 Apr 2021 21:35:44 GMT</pubDate></item><item><title>A common Sitecore 9 Experience Profile error</title><link>https://munirhassan.com/2021/03/30/sitecore-9-experience-profile-error/</link><guid isPermaLink="true">https://munirhassan.com/2021/03/30/sitecore-9-experience-profile-error/</guid><description>Recently I set up Sitecore 9.1 (scaled) for our UAT environment. When I opened the Experience Profile from the Launchpad, I got an error and no data was displayed in the dashboard.…</description><pubDate>Tue, 30 Mar 2021 13:01:07 GMT</pubDate></item><item><title>Remove Sitecore users in bulk</title><link>https://munirhassan.com/2021/03/29/remove-sitecore-users-from-the-core-database/</link><guid isPermaLink="true">https://munirhassan.com/2021/03/29/remove-sitecore-users-from-the-core-database/</guid><description>Sometimes we need to clear out old users, or all users in a specific domain. We can do this from the Sitecore User Manager by removing them one by one, but with a large number of…</description><pubDate>Mon, 29 Mar 2021 14:47:56 GMT</pubDate></item><item><title>Filter users by domain in Sitecore User Manager</title><link>https://munirhassan.com/2021/03/28/filter-user-by-domain-in-sitecore-user-manager/</link><guid isPermaLink="true">https://munirhassan.com/2021/03/28/filter-user-by-domain-in-sitecore-user-manager/</guid><description>Recently we ran into an issue with the Sitecore User Manager. We have more than 500k users, so finding a specific user was troublesome. We thought that if we could filter users by…</description><pubDate>Sun, 28 Mar 2021 11:10:33 GMT</pubDate></item><item><title>Dependency Inversion Principle and the Dependency Injection Pattern</title><link>https://munirhassan.com/2021/03/28/dependency-inversion-principle-and-the-dependency-injection-pattern/</link><guid isPermaLink="true">https://munirhassan.com/2021/03/28/dependency-inversion-principle-and-the-dependency-injection-pattern/</guid><description>Introduction Every day we write lots of code that is tightly coupled, and as complexity grows that code eventually deteriorates into spaghetti code, which violates the Dependency…</description><pubDate>Sun, 28 Mar 2021 10:37:22 GMT</pubDate></item><item><title>Unsubscribe email in Sitecore EXM</title><link>https://munirhassan.com/2021/03/21/programmatically-unsubscribe-in-sitecore-exm/</link><guid isPermaLink="true">https://munirhassan.com/2021/03/21/programmatically-unsubscribe-in-sitecore-exm/</guid><description>Sometimes you need to unsubscribe a contact programmatically. For example, you have a legacy third party email management system and whenever a user unsubscribes from an email in…</description><pubDate>Sun, 21 Mar 2021 09:49:26 GMT</pubDate></item></channel></rss>