<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Mohammed Al-Sarraj</title>
    <description>The latest articles on Forem by Mohammed Al-Sarraj (@mohammed-sarraj).</description>
    <link>https://forem.com/mohammed-sarraj</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3797270%2F7392f276-910c-448d-9632-8c2bbc86f064.jpeg</url>
      <title>Forem: Mohammed Al-Sarraj</title>
      <link>https://forem.com/mohammed-sarraj</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/mohammed-sarraj"/>
    <language>en</language>
    <item>
      <title>How I Built My Personal Site as a Digital Identity Hub (And How You Can Too)</title>
      <dc:creator>Mohammed Al-Sarraj</dc:creator>
      <pubDate>Wed, 15 Apr 2026 14:03:26 +0000</pubDate>
      <link>https://forem.com/mohammed-sarraj/how-i-built-my-personal-site-as-a-digital-identity-hub-and-how-you-can-too-1677</link>
      <guid>https://forem.com/mohammed-sarraj/how-i-built-my-personal-site-as-a-digital-identity-hub-and-how-you-can-too-1677</guid>
      <description>&lt;p&gt;I never imagined a simple, free personal site could be this powerful. My goal wasn't just to get a URL—I wanted to build a "command center" for my entire digital identity. In this guide, I'll walk you through my journey of building &lt;code&gt;Mohammed-Sarraj.github.io&lt;/code&gt;, which has become the anchor connecting all my professional profiles and boosting my visibility in search results. More importantly, I'll show you exactly how you can do the same.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Challenge: A Fragmented Digital Identity
&lt;/h2&gt;

&lt;p&gt;As a software engineer, my online presence was scattered. LinkedIn here, GitHub there, and a few other social profiles. The problem? There was no single point that tied it all together. Anyone searching for my name, &lt;code&gt;Mohammed Al-Sarraj&lt;/code&gt;, would find fragments of my professional picture—never the complete one. I realized I needed one "home address" on the internet, just like my physical address in the real world.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution: Why GitHub Pages is the Perfect Choice
&lt;/h2&gt;

&lt;p&gt;I decided to build my site using &lt;strong&gt;GitHub Pages&lt;/strong&gt;. Why? Three key reasons:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Completely Free&lt;/strong&gt;: No hosting or domain costs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;High Domain Authority&lt;/strong&gt;: Search engines like Google trust GitHub sites deeply.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seamless Integration&lt;/strong&gt;: My code repositories are already on GitHub, making the site a natural extension of my work.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  The Build: Anatomy of a Strong Digital Identity Site (With a Personal Touch)
&lt;/h2&gt;

&lt;p&gt;I wasn't aiming for a complex site—just a simple, effective one that gets the job done. Here are the core elements I focused on, and how you can apply them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Title &amp;amp; Meta Description:&lt;/strong&gt; This is the first thing a search engine sees. I made sure my page title (&lt;code&gt;Mohammed Al-Sarraj — Software Engineer &amp;amp; Full Stack Developer&lt;/code&gt;) included my full name and specialty.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Structured Data (Schema Markup):&lt;/strong&gt; I added &lt;code&gt;JSON-LD&lt;/code&gt; code for &lt;code&gt;Person&lt;/code&gt; and &lt;code&gt;ProfilePage&lt;/code&gt;. This tells Google exactly who I am, what my job is, and which social accounts are officially mine. Think of it as a digital passport for search engines.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Bilingual Content:&lt;/strong&gt; Since I target both Arabic and global audiences, I built the site in both English and Arabic. This doubled my chances of appearing in search results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Internal Linking Network:&lt;/strong&gt; This is the secret sauce! I placed clear links to all my professional profiles (LinkedIn, GitHub) and vice versa. This creates a "web" that tells Google all these trusted accounts belong to the same person—me.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Result: More Than Just a Resume
&lt;/h2&gt;

&lt;p&gt;My site is no longer just a digital CV. It's living proof of my ability to build a product from scratch, and it's a customizable, scalable piece of art. Every update I push to GitHub is instantly reflected. It tells the story of my growth as a developer, and it's been the best investment I've made in my career.&lt;/p&gt;

&lt;h2&gt;
  
  
  Your Turn!
&lt;/h2&gt;

&lt;p&gt;Building your personal site is one of the most powerful steps you can take to control your digital identity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Check out my personal site here: &lt;a href="https://Mohammed-Sarraj.github.io/" rel="noopener noreferrer"&gt;https://Mohammed-Sarraj.github.io/&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;What's the biggest challenge you've faced in building your own site? Share your experience in the comments!&lt;/li&gt;
&lt;li&gt;If you have any questions, feel free to connect with me on LinkedIn.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>tutorial</category>
      <category>career</category>
      <category>github</category>
    </item>
    <item>
      <title>🛠 Fixing Broken Angular Live Reload &amp; EPERM Errors on Windows (For Good)</title>
      <dc:creator>Mohammed Al-Sarraj</dc:creator>
      <pubDate>Sat, 28 Feb 2026 00:24:23 +0000</pubDate>
      <link>https://forem.com/mohammed-sarraj/fixing-broken-angular-live-reload-eperm-errors-on-windows-for-good-335i</link>
      <guid>https://forem.com/mohammed-sarraj/fixing-broken-angular-live-reload-eperm-errors-on-windows-for-good-335i</guid>
      <description>&lt;p&gt;Hello DEV Community 👋&lt;/p&gt;

&lt;p&gt;If you develop Angular applications on Windows, you’ve probably faced at least one of these frustrating issues:&lt;/p&gt;

&lt;p&gt;Live Reload randomly stops working — you save a file, but the browser doesn’t refresh.&lt;/p&gt;

&lt;p&gt;The dreaded EPERM error — the .angular/cache directory gets locked and crashes your build.&lt;/p&gt;

&lt;p&gt;These problems are usually caused by Windows file system behavior and file watcher limitations.&lt;/p&gt;

&lt;p&gt;As a Full-Stack Engineer who values a smooth Developer Experience (DX), I got tired of manually deleting the cache and restarting the server.&lt;/p&gt;

&lt;p&gt;So I built a lightweight automation script to handle it for me.&lt;/p&gt;

&lt;p&gt;💡 The Solution: Angular Auto Runner&lt;/p&gt;

&lt;p&gt;A simple Batch script (Run-Project.bat) that you drop into your project root.&lt;/p&gt;

&lt;p&gt;Double-click it — and your Angular environment is clean, verified, and running safely.&lt;/p&gt;

&lt;p&gt;🔎 What the Script Does&lt;br&gt;
🧹 1. Cleans Angular Cache&lt;/p&gt;

&lt;p&gt;Force-deletes .angular/cache before launch to eliminate common EPERM lock issues.&lt;/p&gt;

&lt;p&gt;📦 2. Verifies Dependencies&lt;/p&gt;

&lt;p&gt;Checks if node_modules exists.&lt;br&gt;
If missing (e.g., fresh clone), it automatically runs npm install.&lt;/p&gt;

&lt;p&gt;⚡ 3. Forces Reliable Live Reload&lt;/p&gt;

&lt;p&gt;Runs:&lt;/p&gt;

&lt;p&gt;ng serve --hmr --poll 2000 --open&lt;/p&gt;

&lt;p&gt;The --poll 2000 flag forces Angular to check file changes every 2 seconds — a reliable workaround for Windows file watcher instability.&lt;/p&gt;

&lt;p&gt;💻 The Script&lt;br&gt;
&lt;a class="mentioned-user" href="https://dev.to/echo"&gt;@echo&lt;/a&gt; off&lt;br&gt;
title Angular Auto Runner - Windows Fix&lt;br&gt;
color 0A&lt;/p&gt;

&lt;p&gt;echo ===================================================&lt;br&gt;
echo      Angular Ultimate Runner (Windows Fix)&lt;br&gt;
echo ===================================================&lt;br&gt;
echo.&lt;/p&gt;

&lt;p&gt;:: 1. Clean Angular Cache&lt;br&gt;
echo [1/3] Cleaning Angular Cache...&lt;br&gt;
if exist ".angular\cache" (&lt;br&gt;
    rmdir /s /q ".angular\cache"&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;:: 2. Check Dependencies&lt;br&gt;
echo [2/3] Checking dependencies...&lt;br&gt;
if not exist "node_modules" (&lt;br&gt;
    echo [!] node_modules not found. Installing dependencies...&lt;br&gt;
    call npm install&lt;br&gt;
)&lt;/p&gt;

&lt;p&gt;:: 3. Launch Angular with Polling + HMR&lt;br&gt;
echo [3/3] Launching Angular...&lt;br&gt;
echo Mode: HMR + Polling (Windows Safe Mode)&lt;br&gt;
echo ===================================================&lt;br&gt;
call ng serve --hmr --poll 2000 --open&lt;/p&gt;

&lt;p&gt;echo.&lt;br&gt;
echo [!] Server stopped.&lt;br&gt;
pause&lt;br&gt;
📂 Get the Script&lt;/p&gt;

&lt;p&gt;You can grab the file and full documentation from my GitHub repository:&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://github.com/Mohammed-Sarraj/angular-auto-runner" rel="noopener noreferrer"&gt;Angular Auto Runner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're developing Angular on Windows, this might save you from a lot of unnecessary restarts and debugging headaches.&lt;/p&gt;

&lt;p&gt;If you use a different approach or have other Windows-specific Angular fixes, I’d love to hear them in the comments.&lt;/p&gt;

&lt;p&gt;Happy coding 🚀&lt;/p&gt;

</description>
      <category>angular</category>
      <category>windows</category>
      <category>automation</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
