<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Bahaa Zidan</title>
    <link>https://gebna.gg/</link>
    <description>Technical tips, tutorials, workshops, guides, showcases, and editorials written by Bahaa Zidan</description>
    <language>en-us</language>
    <pubDate>Fri, 06 Mar 2026 18:37:41 GMT</pubDate>
    <atom:link href="https://gebna.gg/rss.xml" rel="self" type="application/rss+xml"></atom:link>
    <item>
      <title>The Docs Are Wrong! Here&apos;s How to Implement Presigned URLs using Cloudflare R2 and Workers</title>
      <link>https://gebna.gg/blog/fix-fs-readFile-is-not-implemented-yet</link>
      <guid>https://gebna.gg/blog/fix-fs-readFile-is-not-implemented-yet</guid>
      <description>The Docs Are Wrong! Here&apos;s How to Implement Presigned URLs using Cloudflare R2 and Workers.</description>
      <pubDate>Wed, 24 Dec 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Speed Up Build Time By Changing How You Import</title>
      <link>https://gebna.gg/blog/imports-were-slowing-my-vite-build-by-100-percent</link>
      <guid>https://gebna.gg/blog/imports-were-slowing-my-vite-build-by-100-percent</guid>
      <description>Showcasing the build time improvement one can attain by switching to absolute imports</description>
      <pubDate>Sat, 06 Sep 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Stripe Webhook in Cloudflare Workers</title>
      <link>https://gebna.gg/blog/stripe-webhook-cloudflare-workers</link>
      <guid>https://gebna.gg/blog/stripe-webhook-cloudflare-workers</guid>
      <description>A tip on getting Stripe webhooks to work inside a Cloudflare Worker by using constructEventAsync instead of constructEvent</description>
      <pubDate>Wed, 03 Sep 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Lessons Learned After Writing One Article a Day for 30 Days</title>
      <link>https://gebna.gg/blog/lessons-learned-from-writing-for-30-days</link>
      <guid>https://gebna.gg/blog/lessons-learned-from-writing-for-30-days</guid>
      <description>A retrospective on my journey of writing in the past 30 days.</description>
      <pubDate>Mon, 09 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Timing Attacks</title>
      <link>https://gebna.gg/blog/timing-attack-javascript</link>
      <guid>https://gebna.gg/blog/timing-attack-javascript</guid>
      <description>Exploring timing and enumeration attacks in the context of websites.</description>
      <pubDate>Sun, 08 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>GitHub Flavoured Markdown</title>
      <link>https://gebna.gg/blog/extend-markdown-with-github-flavoured-remark</link>
      <guid>https://gebna.gg/blog/extend-markdown-with-github-flavoured-remark</guid>
      <description>Showcasing GitHub Flavoured Markdown and how to install it on any unified or remark codebase.</description>
      <pubDate>Sat, 07 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Break Long Unbreakable Words With CSS overflow-wrap</title>
      <link>https://gebna.gg/blog/break-long-text-with-css-overflow-wrap-anywhere</link>
      <guid>https://gebna.gg/blog/break-long-text-with-css-overflow-wrap-anywhere</guid>
      <description>A quick explanation and example of the overflow-wrap CSS property.</description>
      <pubDate>Fri, 06 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>The Annoying &quot;/.well-known/appspecific/com.chrome.devtools.json&quot; Request</title>
      <link>https://gebna.gg/blog/annoying-well-known-appspecific-com-chrome-devtools-json-request</link>
      <guid>https://gebna.gg/blog/annoying-well-known-appspecific-com-chrome-devtools-json-request</guid>
      <description>Explaining how to prevent chrome from sending a request to your devserver at &quot;/.well-known/appspecific/com.chrome.devtools.json&quot;?, what is that request?, and how to make use of it ?</description>
      <pubDate>Thu, 05 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Simple Defaults</title>
      <link>https://gebna.gg/blog/simple-defaults</link>
      <guid>https://gebna.gg/blog/simple-defaults</guid>
      <description>This article is part 2 of a series that started with Complex Defaults. I&apos;m yet to give this series a name. But if there&apos;s one thing I&apos;d want you to take away from it, it&apos;s that software engineering can be much simpler and you can become a lot more capable and valuable software engineer if you allow yourself to question all the trends.</description>
      <pubDate>Wed, 04 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Sharp: High Performance Image Conversion &amp; Compression in NodeJS</title>
      <link>https://gebna.gg/blog/high-performance-image-conversion-compression-node-js</link>
      <guid>https://gebna.gg/blog/high-performance-image-conversion-compression-node-js</guid>
      <description>Showcasing Sharp. The typical use case for this high speed Node-API module is to convert large images in common formats to smaller, web-friendly JPEG, PNG, WebP, GIF and AVIF images of varying dimensions.</description>
      <pubDate>Tue, 03 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Client-side Theme Changer Using Tailwind, DaisyUI, and SvelteKit</title>
      <link>https://gebna.gg/blog/client-side-theme-picker-tailwind-daisyui-sveltekit</link>
      <guid>https://gebna.gg/blog/client-side-theme-picker-tailwind-daisyui-sveltekit</guid>
      <description>Implementing a simple multi-theme setup using Tailwind, Daisy, and Svelte</description>
      <pubDate>Mon, 02 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Automatically Sort Your Imports Using This Prettier Plugin</title>
      <link>https://gebna.gg/blog/auto-sort-imports-prettier</link>
      <guid>https://gebna.gg/blog/auto-sort-imports-prettier</guid>
      <description>Showcasing @ianvs/prettier-plugin-sort-imports. An amazing Prettier plugin that lets your formatter order your imports for you.</description>
      <pubDate>Sun, 01 Jun 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>Husky: Easy Commit Hooks With One Tool</title>
      <link>https://gebna.gg/blog/setup-husky-repo</link>
      <guid>https://gebna.gg/blog/setup-husky-repo</guid>
      <description>Showcasing Husky. The best tool for creating git commit hooks in a JavaScript project.</description>
      <pubDate>Sat, 31 May 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>How to Integrate Pagefind in a SvelteKit Project</title>
      <link>https://gebna.gg/blog/pagefind-sveltekit</link>
      <guid>https://gebna.gg/blog/pagefind-sveltekit</guid>
      <description>A simple way to install Pagefind in a SvelteKit project</description>
      <pubDate>Fri, 30 May 2025 00:00:00 GMT</pubDate>
    </item>
    <item>
      <title>No Need for Astro or mdsvex. I Built a Static Blog Only Using SvelteKit</title>
      <link>https://gebna.gg/blog/blog-from-scratch-using-sveltekit</link>
      <guid>https://gebna.gg/blog/blog-from-scratch-using-sveltekit</guid>
      <description>Allow me to show you how simple it is to build a static blog in SvelteKit.</description>
      <pubDate>Thu, 29 May 2025 00:00:00 GMT</pubDate>
    </item>
  </channel>
</rss>
