<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Mahmudul Alam</title>
    <link>https://mahmudul.dev</link>
    <atom:link href="https://mahmudul.dev/rss.xml" rel="self" type="application/rss+xml" />
    <description>Long-form writing and short notes on how things actually work — internals, protocols, and the occasional security postmortem.</description>
    <language>en</language>
    <lastBuildDate>Tue, 25 Aug 2026 00:00:00 GMT</lastBuildDate>
    <item>
      <title>Harness Engineering: The Model Is No Longer the Hard Part</title>
      <link>https://mahmudul.dev/posts/harness-engineering</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/harness-engineering</guid>
      <description>Reliability in agent systems comes from the harness, not the model. What a harness actually does — context, tools, durability, budgets, approval — and why a good one survives a model swap.</description>
      <pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate>
      <category>ai</category>
      <category>agents</category>
      <category>harness-engineering</category>
      <category>architecture</category>
      <category>context-engineering</category>
      <category>backend</category>
      <category>software-engineering</category>
    </item>
    <item>
      <title>How a ‘Dream Freelance Gig’ Tried to Run Malware on My Mac</title>
      <link>https://mahmudul.dev/posts/fake-recruiter-git-hook-malware</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/fake-recruiter-git-hook-malware</guid>
      <description>A fake recruiter sent me a confidential project brief as a Git repo. Hidden in .git/hooks was a dropper that fires the moment you check out a branch.</description>
      <pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate>
      <category>security</category>
      <category>malware</category>
      <category>git</category>
      <category>social-engineering</category>
      <category>freelancing</category>
    </item>
    <item>
      <title>Spec-Driven Development with Claude: A Professional Guide to Consistent AI-Assisted Coding</title>
      <link>https://mahmudul.dev/posts/spec-driven-development-with-claude</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/spec-driven-development-with-claude</guid>
      <description>Spec-driven development with Claude: writing the spec first, structuring the context it reads, and the workflow that makes AI-assisted coding repeatable.</description>
      <pubDate>Sat, 11 Apr 2026 00:00:00 GMT</pubDate>
      <category>claude</category>
      <category>ai</category>
      <category>spec-driven-development</category>
      <category>context-engineering</category>
      <category>developer-productivity</category>
      <category>prompt-engineering</category>
      <category>software-engineering</category>
      <category>best-practices</category>
    </item>
    <item>
      <title>jq: JSON on the Command Line</title>
      <link>https://mahmudul.dev/posts/jq-json-command-line</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/jq-json-command-line</guid>
      <description>A practical guide to jq: piping JSON in, pretty-printing, filtering and reshaping it, with the handful of expressions worth committing to memory.</description>
      <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
      <category>jq</category>
      <category>json</category>
      <category>command-line</category>
      <category>cli</category>
      <category>shell</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Leap Seconds: The One-Second Fix That Broke the Internet</title>
      <link>https://mahmudul.dev/til/leap-seconds</link>
      <guid isPermaLink="true">https://mahmudul.dev/til/leap-seconds</guid>
      <description>Why atomic time and the Earth’s rotation disagree, how the leap second papered over it, and the outages that followed.</description>
      <pubDate>Mon, 02 Feb 2026 00:00:00 GMT</pubDate>
      <category>TIL</category>
      <category>time</category>
      <category>leap-seconds</category>
      <category>programming</category>
    </item>
    <item>
      <title>HTTP, Demystified: How Browsers and Servers Actually Talk</title>
      <link>https://mahmudul.dev/posts/http-demystified</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/http-demystified</guid>
      <description>A working mental model of HTTP: URLs, methods and headers, then caching, cookies, CDNs, HTTP/2 and what HTTPS actually protects.</description>
      <pubDate>Sun, 01 Feb 2026 00:00:00 GMT</pubDate>
      <category>http</category>
      <category>web-development</category>
      <category>backend</category>
      <category>frontend</category>
      <category>networking</category>
      <category>debugging</category>
    </item>
    <item>
      <title>Beware: Marketplace Scammers Distributing Malware Through Fake Development Projects</title>
      <link>https://mahmudul.dev/posts/marketplace-malware-attack</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/marketplace-malware-attack</guid>
      <description>How attackers are using freelance platforms to trick developers into running malicious code that steals data and credentials</description>
      <pubDate>Wed, 21 Jan 2026 00:00:00 GMT</pubDate>
      <category>security</category>
      <category>malware</category>
      <category>social-engineering</category>
      <category>marketplaces</category>
      <category>awareness</category>
    </item>
    <item>
      <title>How Git Actually Works: commits, trees and the object model</title>
      <link>https://mahmudul.dev/posts/how-git-works-under-the-hood</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/how-git-works-under-the-hood</guid>
      <description>How Git stores your code: the object model behind commits, trees and blobs, and what branches, merges and the reflog really are underneath.</description>
      <pubDate>Mon, 22 Dec 2025 00:00:00 GMT</pubDate>
      <category>git</category>
      <category>version-control</category>
      <category>internals</category>
      <category>workflow</category>
      <category>command-line</category>
      <category>development-tools</category>
    </item>
    <item>
      <title>TypeScript Utility Types: From Partial to Awaited</title>
      <link>https://mahmudul.dev/posts/typescript-utility-types</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/typescript-utility-types</guid>
      <description>TypeScript’s utility types with real examples: Partial, Required, Pick, Omit, Record and Awaited, and when each one is the right tool for the job.</description>
      <pubDate>Sun, 23 Nov 2025 00:00:00 GMT</pubDate>
      <category>typescript</category>
      <category>utility-types</category>
      <category>type-safety</category>
      <category>web-development</category>
      <category>frontend</category>
      <category>programming</category>
    </item>
    <item>
      <title>AbortController: The Art of Graceful Cancellation in JavaScript</title>
      <link>https://mahmudul.dev/posts/abort-controller-guide</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/abort-controller-guide</guid>
      <description>Cancelling async work with AbortController: aborting a fetch, wiring up timeouts, cleaning up on unmount, and composing more than one signal.</description>
      <pubDate>Fri, 24 Oct 2025 00:00:00 GMT</pubDate>
      <category>javascript</category>
      <category>async</category>
      <category>cancellation</category>
      <category>fetch</category>
      <category>web-development</category>
      <category>frontend</category>
      <category>performance</category>
    </item>
    <item>
      <title>Demystifying JWT: what a token contains and how it is verified</title>
      <link>https://mahmudul.dev/posts/demystifying-jwt</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/demystifying-jwt</guid>
      <description>What a JSON Web Token actually contains, how signing and verification work, and where JWTs go wrong in real authentication flows.</description>
      <pubDate>Tue, 21 Oct 2025 00:00:00 GMT</pubDate>
      <category>jwt</category>
      <category>authentication</category>
      <category>security</category>
      <category>web-development</category>
    </item>
    <item>
      <title>CSS Specificity Explained in a Fun Way</title>
      <link>https://mahmudul.dev/posts/css-specificity</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/css-specificity</guid>
      <description>A fun, beginner-friendly guide to understanding CSS specificity with practical examples and easy-to-remember rules.</description>
      <pubDate>Mon, 22 Sep 2025 00:00:00 GMT</pubDate>
      <category>css</category>
      <category>frontend</category>
      <category>specificity</category>
      <category>web-development</category>
      <category>beginner-friendly</category>
    </item>
    <item>
      <title>JavaScript Equality, Explained Like a Human</title>
      <link>https://mahmudul.dev/posts/js-equality-myths</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/js-equality-myths</guid>
      <description>When to reach for ===, the few places == genuinely helps, and the coercion rules behind the comparisons that surprise people most.</description>
      <pubDate>Fri, 19 Sep 2025 00:00:00 GMT</pubDate>
      <category>javascript</category>
      <category>equality</category>
      <category>coercion</category>
      <category>basics</category>
      <category>web-development</category>
    </item>
    <item>
      <title>The Secret Life of a Website Visit</title>
      <link>https://mahmudul.dev/posts/secret-life-of-a-website-visit</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/secret-life-of-a-website-visit</guid>
      <description>A fun, story-style walkthrough of what really happens when you type a URL: DNS, TCP, TLS/SSL, HTTP, caching, rendering, CORS, cookies, CDNs, and more.</description>
      <pubDate>Thu, 18 Sep 2025 00:00:00 GMT</pubDate>
      <category>web-development</category>
      <category>networking</category>
      <category>dns</category>
      <category>ssl</category>
      <category>cors</category>
      <category>http</category>
      <category>browser</category>
      <category>cdn</category>
      <category>security</category>
    </item>
    <item>
      <title>Stop putting JWTs in localStorage: a fun, practical guide for frontend apps</title>
      <link>https://mahmudul.dev/posts/secure-jwt-frontend</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/secure-jwt-frontend</guid>
      <description>Storing and refreshing JWTs safely in a frontend app: in-memory access tokens, HttpOnly refresh cookies, rotation, and the CORS and CSRF details.</description>
      <pubDate>Wed, 10 Sep 2025 00:00:00 GMT</pubDate>
      <category>security</category>
      <category>jwt</category>
      <category>frontend</category>
      <category>web-development</category>
      <category>authentication</category>
    </item>
    <item>
      <title>Closures in JavaScript: From Pizza Shops to Caching Superpowers</title>
      <link>https://mahmudul.dev/posts/closures-in-js</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/closures-in-js</guid>
      <description>A fun and practical guide to understanding closures in JavaScript, with real-world use cases like caching, rate limiting, event handling, and more.</description>
      <pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate>
      <category>javascript</category>
      <category>typescript</category>
      <category>closures</category>
      <category>caching</category>
      <category>frontend</category>
      <category>web-development</category>
    </item>
    <item>
      <title>Imperative vs Declarative in JavaScript/TypeScript</title>
      <link>https://mahmudul.dev/posts/imperative-vs-declarative</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/imperative-vs-declarative</guid>
      <description>A fun and practical guide to understanding when to use imperative vs declarative approaches in JS/TS, with lots of real-world examples.</description>
      <pubDate>Sat, 06 Sep 2025 00:00:00 GMT</pubDate>
      <category>javascript</category>
      <category>typescript</category>
      <category>imperative</category>
      <category>declarative</category>
      <category>programming</category>
      <category>best-practices</category>
    </item>
    <item>
      <title>Promise Methods Playbook</title>
      <link>https://mahmudul.dev/posts/promise-methods-playbook</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/promise-methods-playbook</guid>
      <description>A fun, practical guide to JavaScript promise methods — all, allSettled, race, any, resolve/reject, and finally — with examples you’ll actually use.</description>
      <pubDate>Thu, 04 Sep 2025 00:00:00 GMT</pubDate>
      <category>javascript</category>
      <category>async</category>
      <category>promises</category>
      <category>web-development</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Implementing Web3 Wallet Authentication in Express.js</title>
      <link>https://mahmudul.dev/posts/web3-auth-express</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/web3-auth-express</guid>
      <description>Wallet-based authentication in Express.js: verifying an Ethereum signature, issuing a session, and the replay and nonce problems to handle.</description>
      <pubDate>Mon, 01 Sep 2025 00:00:00 GMT</pubDate>
      <category>web3</category>
      <category>authentication</category>
      <category>express</category>
      <category>ethereum</category>
      <category>blockchain</category>
      <category>nodejs</category>
      <category>security</category>
    </item>
    <item>
      <title>Domain-Driven Design in Next.js</title>
      <link>https://mahmudul.dev/posts/domain-driven-design-nextjs</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/domain-driven-design-nextjs</guid>
      <description>Where domain logic belongs in a Next.js app, and how entities, use cases and repositories keep it out of the route handlers and components.</description>
      <pubDate>Wed, 27 Aug 2025 00:00:00 GMT</pubDate>
      <category>ddd</category>
      <category>domain-driven-design</category>
      <category>nextjs</category>
      <category>typescript</category>
      <category>architecture</category>
      <category>software-design</category>
      <category>clean-architecture</category>
    </item>
    <item>
      <title>Stop Using GET Inside Server Actions</title>
      <link>https://mahmudul.dev/posts/stop-using-get-in-server-actions</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/stop-using-get-in-server-actions</guid>
      <description>Why a GET inside a Next.js Server Action adds a round trip, how to fetch in a React Server Component instead, and when a Server Action is the right tool.</description>
      <pubDate>Mon, 25 Aug 2025 00:00:00 GMT</pubDate>
      <category>nextjs</category>
      <category>server-actions</category>
      <category>react-server-components</category>
      <category>performance</category>
      <category>web-development</category>
      <category>react</category>
      <category>optimization</category>
    </item>
    <item>
      <title>Custom Authentication in Next.js Using External Backend</title>
      <link>https://mahmudul.dev/posts/custom-auth-next-js</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/custom-auth-next-js</guid>
      <description>Custom authentication in Next.js against an external backend: access and refresh tokens, silent renewal, and where each token should actually live.</description>
      <pubDate>Wed, 18 Sep 2024 00:00:00 GMT</pubDate>
      <category>nextjs</category>
      <category>authentication</category>
      <category>jwt</category>
      <category>tokens</category>
      <category>security</category>
      <category>web-development</category>
      <category>react</category>
      <category>backend</category>
    </item>
    <item>
      <title>Deleting Local Stale Branches in Git</title>
      <link>https://mahmudul.dev/posts/deleting-local-branches-git</link>
      <guid isPermaLink="true">https://mahmudul.dev/posts/deleting-local-branches-git</guid>
      <description>Cleaning up a Git repository by deleting the local branches whose remotes are gone — one command, plus what is actually safe to remove.</description>
      <pubDate>Wed, 28 Aug 2024 00:00:00 GMT</pubDate>
      <category>git</category>
      <category>version-control</category>
      <category>development-tools</category>
      <category>command-line</category>
      <category>productivity</category>
      <category>workflow</category>
    </item>
    <item>
      <title>Quickly Inspect package.json Scripts</title>
      <link>https://mahmudul.dev/til/quick-inspect-package-json-scripts</link>
      <guid isPermaLink="true">https://mahmudul.dev/til/quick-inspect-package-json-scripts</guid>
      <description>A one-line shell function that prints the scripts block of any package.json, so you stop opening the file to remember a command name.</description>
      <pubDate>Mon, 28 Aug 2023 00:00:00 GMT</pubDate>
      <category>TIL</category>
      <category>bash</category>
      <category>shell</category>
      <category>json</category>
    </item>
  </channel>
</rss>