<?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>Getting Obsidian Off iCloud: Self-Hosted, Encrypted Sync with Cloudflare R2</title><link>https://a-hafez.com/blog/obsidian-sync-cloudflare-r2-without-icloud/</link><guid isPermaLink="true">https://a-hafez.com/blog/obsidian-sync-cloudflare-r2-without-icloud/</guid><description>iCloud sync for my Obsidian vault left Windows out, broke on my work laptop when personal iCloud was blocked, and eventually made the app take 50 seconds to launch. Here is the self-hosted, end-to-end-encrypted replacement on Cloudflare R2, and how to build the same thing.</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate></item><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>