<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Hasan Misbah, Blog</title>
    <link>https://misbah.co/blog</link>
    <description>Notes on revenue-critical code, plugin modernization, founder engineering, and products that last.</description>
    <language>en</language>
    <lastBuildDate>Mon, 13 Jul 2026 00:00:00 GMT</lastBuildDate>
    <atom:link href="https://misbah.co/rss.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Cost cutting is motion, not a strategy</title>
      <link>https://misbah.co/blog/cost-cutting-is-motion-not-a-strategy</link>
      <guid isPermaLink="true">https://misbah.co/blog/cost-cutting-is-motion-not-a-strategy</guid>
      <description>Cutting costs moves the numbers without moving the company forward. The long game is won by people who stay long enough to hold context, and by teams that balance operators with entrepreneurs.</description>
      <pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Store money as integer cents, never a float</title>
      <link>https://misbah.co/blog/store-money-as-integer-cents-never-a-float</link>
      <guid isPermaLink="true">https://misbah.co/blog/store-money-as-integer-cents-never-a-float</guid>
      <description>An opinionated rule for money code: store amounts as integer minor units, never a binary float, and never divide a total to get its parts.</description>
      <pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>The refund path is where I read a codebase&apos;s soul</title>
      <link>https://misbah.co/blog/the-refund-path-is-where-i-read-a-codebases-soul</link>
      <guid isPermaLink="true">https://misbah.co/blog/the-refund-path-is-where-i-read-a-codebases-soul</guid>
      <description>Checkout code is easy. Refunds, proration, and failed webhooks are where I can tell if a payments codebase was built by someone senior.</description>
      <pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>You don&apos;t rewrite a plugin with a big install base, you operate on it awake</title>
      <link>https://misbah.co/blog/you-dont-rewrite-a-plugin-with-a-big-install-base</link>
      <guid isPermaLink="true">https://misbah.co/blog/you-dont-rewrite-a-plugin-with-a-big-install-base</guid>
      <description>How I evolve a WordPress plugin with a large install base without breaking users mid-update: a strangler-fig approach with real PHP and version gates.</description>
      <pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>The first hire who touches your billing should be boring on purpose</title>
      <link>https://misbah.co/blog/the-first-hire-who-touches-your-billing-should-be-boring</link>
      <guid isPermaLink="true">https://misbah.co/blog/the-first-hire-who-touches-your-billing-should-be-boring</guid>
      <description>The engineer who owns revenue early should reach for idempotency, audit logs, and reconciliation by reflex. How to screen for the boring hire, and the danger signals to reject.</description>
      <pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Boring code is a feature you ship to your future self</title>
      <link>https://misbah.co/blog/boring-code-is-a-feature-you-ship-to-your-future-self</link>
      <guid isPermaLink="true">https://misbah.co/blog/boring-code-is-a-feature-you-ship-to-your-future-self</guid>
      <description>The durable choice in code usually looks unimpressive, and that is the point. Why boring code wins on systems that have to last, how to defend the plain version in review, and the discipline of deleting clever code you were proud of.</description>
      <pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Six payments edge cases that bite at 2am</title>
      <link>https://misbah.co/blog/six-payments-edge-cases-that-bite-at-2am</link>
      <guid isPermaLink="true">https://misbah.co/blog/six-payments-edge-cases-that-bite-at-2am</guid>
      <description>Partial refunds, duplicate webhooks, currency rounding, retries, chargebacks, and clock skew: the payments edge cases that page you, with the fix for each.</description>
      <pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Shipping a feature into a five-year-old plugin without a war room</title>
      <link>https://misbah.co/blog/shipping-a-feature-into-a-five-year-old-plugin</link>
      <guid isPermaLink="true">https://misbah.co/blog/shipping-a-feature-into-a-five-year-old-plugin</guid>
      <description>Real tactics for shipping into an old WordPress plugin: feature flags, backward-compatible DB migrations, and staged rollouts across a live install base.</description>
      <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Three questions I ask before writing a line of a founder&apos;s billing code</title>
      <link>https://misbah.co/blog/three-questions-before-i-write-billing-code</link>
      <guid isPermaLink="true">https://misbah.co/blog/three-questions-before-i-write-billing-code</guid>
      <description>A three-question framework founders can steal before building billing: what is the source of truth, what happens when this runs twice, and how will we reconstruct it later. Each one maps to a specific expensive failure.</description>
      <pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Subscriptions are just licensing that also has to bill you on time</title>
      <link>https://misbah.co/blog/subscriptions-are-licensing-that-bills-on-time</link>
      <guid isPermaLink="true">https://misbah.co/blog/subscriptions-are-licensing-that-bills-on-time</guid>
      <description>A subscription is a state machine bolted to a billing clock. Dunning, grace periods, and proration are where it leaks money. Here is how I model each.</description>
      <pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Backward-compatible migrations: the rules I don&apos;t break on an install base</title>
      <link>https://misbah.co/blog/backward-compatible-migrations-on-an-install-base</link>
      <guid isPermaLink="true">https://misbah.co/blog/backward-compatible-migrations-on-an-install-base</guid>
      <description>The migration rules I hold on a live WordPress install base: additive columns only, no destructive deploys, version gates, and a rollback plan.</description>
      <pubDate>Wed, 13 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Build vs buy for billing: when Stripe is enough</title>
      <link>https://misbah.co/blog/build-vs-buy-for-billing</link>
      <guid isPermaLink="true">https://misbah.co/blog/build-vs-buy-for-billing</guid>
      <description>For most early products a hosted processor is enough. It stops being enough at four moments: global tax, usage-based pricing, marketplaces, and provider limits. Here is which layer to own.</description>
      <pubDate>Wed, 06 May 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Why I run uptime checks at the edge, not one server</title>
      <link>https://misbah.co/blog/why-i-run-uptime-checks-at-the-edge</link>
      <guid isPermaLink="true">https://misbah.co/blog/why-i-run-uptime-checks-at-the-edge</guid>
      <description>A single VPS in one region tells you about its own path, not your users&apos;. Here is how I built edge uptime checks on Cloudflare Workers and why.</description>
      <pubDate>Wed, 29 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Supporting a plugin across WordPress versions I can&apos;t control</title>
      <link>https://misbah.co/blog/supporting-a-plugin-across-wordpress-versions</link>
      <guid isPermaLink="true">https://misbah.co/blog/supporting-a-plugin-across-wordpress-versions</guid>
      <description>A compatibility strategy for WordPress and PHP versions you don&apos;t control: function_exists and capability checks, graceful degradation, a support matrix.</description>
      <pubDate>Wed, 22 Apr 2026 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Authentication mistakes I see in early products, and the fix for each</title>
      <link>https://misbah.co/blog/authentication-mistakes-in-early-products</link>
      <guid isPermaLink="true">https://misbah.co/blog/authentication-mistakes-in-early-products</guid>
      <description>The same handful of auth bugs show up in early products every time: session fixation, weak hashing, no rate limiting, and tokens in the wrong place. Here is the concrete fix for each, grounded in real backend work.</description>
      <pubDate>Wed, 15 Apr 2026 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>