<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Engineering on Muhammad Hassan Raza</title><link>https://mhassan.dev/categories/engineering/</link><description>Recent content in Engineering on Muhammad Hassan Raza</description><generator>Hugo</generator><language>en-US</language><lastBuildDate>Fri, 25 Sep 2026 10:00:00 +0500</lastBuildDate><atom:link href="https://mhassan.dev/categories/engineering/index.xml" rel="self" type="application/rss+xml"/><item><title>Most of My Pull Requests Started as an Annoyance</title><link>https://mhassan.dev/blog/pull-requests-that-started-as-annoyances/</link><pubDate>Wed, 08 Apr 2026 10:00:00 +0500</pubDate><guid>https://mhassan.dev/blog/pull-requests-that-started-as-annoyances/</guid><description>Drive-by fixes in qBittorrent, Dokploy and django-hijack: which ones merged, which didn&amp;#39;t, and what the rejections taught me about scope.</description></item><item><title>The Best Way to Learn a Codebase Is to Break Someone Else's</title><link>https://mhassan.dev/blog/best-way-to-learn-a-codebase/</link><pubDate>Wed, 08 Apr 2026 10:00:00 +0500</pubDate><guid>https://mhassan.dev/blog/best-way-to-learn-a-codebase/</guid><description>What maintainers of kitty, calibre, libtorrent and Fallow taught me in review threads, usually by explaining why my fix was wrong in a way I hadn&amp;#39;t considered.</description></item></channel></rss>