<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>Abdelrahman Hafez</title><description>Backend engineer in Amsterdam and Mongoose core maintainer building Node.js, TypeScript, MongoDB, and Cloudflare systems.</description><link>https://a-hafez.com/</link><item><title>Self-Hosting Shottr Screenshots on Your Own Domain with Cloudflare</title><link>https://a-hafez.com/blog/self-hosting-shottr-screenshots-on-cloudflare/</link><guid isPermaLink="true">https://a-hafez.com/blog/self-hosting-shottr-screenshots-on-cloudflare/</guid><description>How I replaced Shottr&apos;s cloud uploads with a Cloudflare Worker and R2 so screenshots live on my own domain behind unguessable URLs. Full build, with every gotcha.</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate></item><item><title>This New Mongoose Feature Can Improve Your MongoDB Write Operations Up to 2.6x</title><link>https://a-hafez.com/blog/mongoose-bulksave-mongodb-writes/</link><guid isPermaLink="true">https://a-hafez.com/blog/mongoose-bulksave-mongodb-writes/</guid><description>How Model.bulkSave() leverages MongoDB&apos;s bulkWrite to reduce network roundtrips and significantly improve write performance.</description><pubDate>Thu, 18 Nov 2021 00:00:00 GMT</pubDate></item><item><title>Software Performance: A Pragmatic Guide</title><link>https://a-hafez.com/blog/software-performance-pragmatic-guide/</link><guid isPermaLink="true">https://a-hafez.com/blog/software-performance-pragmatic-guide/</guid><description>A practical approach to performance optimization. Focus your energy where it matters: I/O bottlenecks, not micro-optimizations.</description><pubDate>Fri, 09 Jul 2021 00:00:00 GMT</pubDate></item><item><title>Is Optional Chaining Really a Good Addition to JavaScript?</title><link>https://a-hafez.com/blog/optional-chaining-good-addition/</link><guid isPermaLink="true">https://a-hafez.com/blog/optional-chaining-good-addition/</guid><description>Optional chaining is convenient, but if used carelessly it silences errors that should be caught early. Here&apos;s when to use it and when not to.</description><pubDate>Thu, 24 Oct 2019 00:00:00 GMT</pubDate></item></channel></rss>