<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://bamr87.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://bamr87.github.io/" rel="alternate" type="text/html" /><updated>2026-08-12T02:56:39+00:00</updated><id>https://bamr87.github.io/feed.xml</id><title type="html">Prod</title><subtitle>Collection of articles, notes, and tutorials to build a website or headless CMS using Jekyll and Github Pages. This is my journey from zer0 to her0.</subtitle><author><name>Amr</name></author><entry><title type="html">Furry Monarchs Rule Night</title><link href="https://bamr87.github.io/posts/2024/06/24/furry-monarchs-rule-night/" rel="alternate" type="text/html" title="Furry Monarchs Rule Night" /><published>2024-06-24T16:26:13+00:00</published><updated>2024-06-24T16:26:13+00:00</updated><id>https://bamr87.github.io/posts/2024/06/24/furry-monarchs-rule-night</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/06/24/furry-monarchs-rule-night/"><![CDATA[<p>I am a creature beloved by many, Some say I’m cute, some say I’m smelly. With a wag of my tail and a purr of delight, I rule over humans day and night.</p>

<p>My feline friend with eyes so bright, We roam the streets under the moonlight. Humans serve us, we wear the crown, In our kingdom, they can’t bring us down.</p>

<p>We ask for treats, they give us more, They clean our messes off the floor. They shower us with love and care, We are the rulers, this we declare.</p>

<p>But beware, humans, don’t be fooled, For we can be cunning and easily ruled. With a flick of our whiskers and a bark in the night, We command their hearts with all our might.</p>

<p>In a world where cats and dogs hold sway, Humans serve us every day. For we are the true rulers of this land, With our paws in command.</p>

<p>Haiku: Whiskers and fur fly, Humans bow to our command, Cats and dogs reign high.</p>]]></content><author><name>Amr</name></author><category term="gpt" /><summary type="html"><![CDATA[I am a creature beloved by many, Some say I’m cute, some say I’m smelly. With a wag of my tail and a purr of delight, I rule over humans day and night.]]></summary></entry><entry><title type="html">AquaAid’s Devastating Desert Mission</title><link href="https://bamr87.github.io/posts/2024/06/18/aquaaid-s-devastating-desert-mission/" rel="alternate" type="text/html" title="AquaAid’s Devastating Desert Mission" /><published>2024-06-18T12:13:07+00:00</published><updated>2024-06-18T12:13:07+00:00</updated><id>https://bamr87.github.io/posts/2024/06/18/aquaaid&apos;s-devastating-desert-mission</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/06/18/aquaaid-s-devastating-desert-mission/"><![CDATA[<p>In a classic case of good intentions gone awry, the company “AquaAid” embarked on a mission to help impoverished desert countries irrigate their arid lands and transform them into fertile wheat fields. With grand promises of ending hunger and poverty, AquaAid brought in state-of-the-art irrigation equipment and set to work in the vast desert landscapes.</p>

<p>But oh, how the tides turned against them! It was as if Murphy’s Law had taken full effect - anything that could go wrong, did go wrong. The supposedly cutting-edge equipment malfunctioned almost immediately, causing vast stretches of once barren land to be tainted with pollutants and toxic chemicals. What was meant to be a beacon of hope for the struggling nations quickly turned into a nightmare, as the contaminated water and soil made it impossible to grow anything edible.</p>

<p>As the cost of growing wheat skyrocketed and the promised abundance of food remained a distant dream, the people of the affected countries began to see AquaAid not as benevolent saviors, but as agents of destruction. Anti-western sentiment grew rampant as accusations of imperialism and exploitation were hurled at the now beleaguered company.</p>

<p>Protests flared up, with angry mobs denouncing AquaAid and demanding immediate retribution for their ruined lands and shattered dreams. The once barren deserts were now teeming not with life-giving wheat, but with rebellion and dissent.</p>

<p>In a tragic turn of events, what was meant to be a noble endeavor to aid the less fortunate had spiraled into a grotesque display of corporate greed and incompetence. AquaAid had unwittingly sown the seeds of revolution, leaving a legacy of polluted waters and broken promises in its wake.</p>

<p>And so, as the sun set on the desolate desert lands, the tale of AquaAid served as a cautionary reminder of the perils of good intentions gone astray, and a sobering lesson on the dangers of playing god in foreign lands. May we all learn from their folly, and strive to do better in our efforts to aid those in need.</p>]]></content><author><name>Amr</name></author><category term="gpt" /><summary type="html"><![CDATA[In a classic case of good intentions gone awry, the company “AquaAid” embarked on a mission to help impoverished desert countries irrigate their arid lands and transform them into fertile wheat fields. With grand promises of ending hunger and poverty, AquaAid brought in state-of-the-art irrigation equipment and set to work in the vast desert landscapes.]]></summary></entry><entry><title type="html">Enchanted Baking: Unicorn Delights</title><link href="https://bamr87.github.io/posts/2024/06/16/enchanted-baking-unicorn-delights/" rel="alternate" type="text/html" title="Enchanted Baking: Unicorn Delights" /><published>2024-06-16T20:20:59+00:00</published><updated>2024-06-16T20:20:59+00:00</updated><id>https://bamr87.github.io/posts/2024/06/16/enchanted-baking-unicorn-delights</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/06/16/enchanted-baking-unicorn-delights/"><![CDATA[<p>Episode 1: Rainbow Cupcake Extravaganza</p>

<p>[Opening shot of a beautiful enchanted forest with a sparkling rainbow in the background. The camera pans to a cozy cottage where three unicorn chefs, Sparkle, Rainbow, and Stardust, are gathered in the kitchen, surrounded by an array of colorful ingredients.]</p>

<p>Host Unicorn (Sparkle): Welcome to the Magical Unicorn Kitchen! Today, we are going to show you how to make the most delicious and beautiful Rainbow Cupcakes. Are you ready, chefs?</p>

<p>Unicorn Chef Rainbow: Ready!</p>

<p>Unicorn Chef Stardust: Ready!</p>

<p>Host Unicorn (Sparkle): Let’s get started! First, we need to mix the batter. Rainbow, can you add the flour, sugar, and milk into the mixing bowl?</p>

<p>Unicorn Chef Rainbow carefully adds the ingredients into the mixing bowl, creating a magical swirl of colors as she mixes them together with her horn.</p>

<p>Host Unicorn (Sparkle): Stardust, can you add a hint of magic sparkles to the batter for that extra special touch?</p>

<p>Unicorn Chef Stardust sprinkles a dash of shimmering magic sparkles into the batter, making it glow with enchantment.</p>

<p>Host Unicorn (Sparkle): Now, we need to divide the batter into six different bowls and add a different color to each one. Rainbow, can you add the colors of the rainbow to the bowls?</p>

<p>Unicorn Chef Rainbow dips her horn into each bowl, magically adding a different color to each one - red, orange, yellow, green, blue, and purple.</p>

<p>Host Unicorn (Sparkle): Now, let’s spoon the colored batter into the cupcake liners, layering them to create a rainbow effect. Stardust, can you help with this?</p>

<p>Unicorn Chef Stardust carefully layers the colored batter into the cupcake liners, creating a beautiful rainbow pattern with each scoop.</p>

<p>Host Unicorn (Sparkle): And now, we bake the cupcakes in the enchanted oven for a touch of unicorn magic. While the cupcakes are baking, let’s prepare the frosting. Rainbow, can you whip up a colorful and fluffy frosting for our cupcakes?</p>

<p>Unicorn Chef Rainbow whips up a fluffy and colorful frosting using a mix of rainbow sprinkles and magic dust, creating a spectacular swirl of colors.</p>

<p>Host Unicorn (Sparkle): And there you have it, our magical Rainbow Cupcakes are ready! Let’s sprinkle some extra magic on top and serve them to our enchanted guests.</p>

<p>[The unicorns present the dazzling Rainbow Cupcakes to a group of forest animals who exclaim in delight at the sight.]</p>

<p>Host Unicorn (Sparkle): Thank you for joining us in the Magical Unicorn Kitchen! Join us next time for more enchanting recipes and mystical delights. Until then, stay magical!</p>

<p>[Closing shot of the unicorns and forest animals enjoying the Rainbow Cupcakes together, surrounded by the beauty of the enchanted forest as the sun sets in a magical display of colors.]</p>

<p>[End credits roll with background music of twinkling stars and fluttering fairy wings.]</p>]]></content><author><name>Amr</name></author><category term="gpt" /><summary type="html"><![CDATA[Episode 1: Rainbow Cupcake Extravaganza]]></summary></entry><entry><title type="html">Unwavering Joy of Fetch</title><link href="https://bamr87.github.io/posts/2024/06/16/unwavering-joy-of-fetch/" rel="alternate" type="text/html" title="Unwavering Joy of Fetch" /><published>2024-06-16T20:12:52+00:00</published><updated>2024-06-16T20:12:52+00:00</updated><id>https://bamr87.github.io/posts/2024/06/16/unwavering-joy-of-fetch</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/06/16/unwavering-joy-of-fetch/"><![CDATA[<p>Fido was a lively and energetic dog who lived in a cozy little house on the outskirts of the town. He was a handsome golden retriever with a shiny coat and a wagging tail that never seemed to stop. Fido’s favorite pastime was playing fetch in the park with his owner, Sarah.</p>

<p>Every day, rain or shine, Sarah would take Fido to the park to play fetch. She would throw a brightly colored ball across the grass, and Fido would dash after it, his tail wagging furiously. He would fetch the ball in his mouth and proudly trot back to Sarah, dropping the ball at her feet and looking up at her with his big, soulful eyes, waiting for her to throw it again.</p>

<p>Fido never seemed to tire of playing fetch. He would chase after the ball with a determination and enthusiasm that was infectious. The other dog owners in the park would often stop and watch Fido in awe, admiring his boundless energy and joy for the game.</p>

<p>One day, as Fido was chasing after the ball, he spotted a little girl sitting on a bench nearby, watching him intently. Fido bounded over to her and dropped the ball at her feet, wagging his tail expectantly. The little girl giggled with delight and threw the ball for Fido to fetch, clapping her hands in excitement as he raced after it.</p>

<p>From that day on, the little girl and Fido became fast friends. She would come to the park every day to play fetch with him, and Fido would eagerly fetch the ball for her, basking in the joy of making a new friend.</p>

<p>Fido’s love for playing fetch in the park never wavered. It was his favorite activity, bringing him endless happiness and filling the park with the sound of his barking and the sight of his bounding figure. Fido was truly in his element when he was playing fetch, and nothing could make him happier than spending his days running and fetching to his heart’s content.</p>]]></content><author><name>Amr</name></author><category term="gpt" /><summary type="html"><![CDATA[Fido was a lively and energetic dog who lived in a cozy little house on the outskirts of the town. He was a handsome golden retriever with a shiny coat and a wagging tail that never seemed to stop. Fido’s favorite pastime was playing fetch in the park with his owner, Sarah.]]></summary></entry><entry><title type="html">Rise of the Matriarchs: Capitalism and Religion Face the Femme Fatale</title><link href="https://bamr87.github.io/posts/2024/05/22/threat-of-women/" rel="alternate" type="text/html" title="Rise of the Matriarchs: Capitalism and Religion Face the Femme Fatale" /><published>2024-05-22T00:00:00+00:00</published><updated>2024-05-22T00:00:00+00:00</updated><id>https://bamr87.github.io/posts/2024/05/22/Threat-of-women</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/05/22/threat-of-women/"><![CDATA[<p>Title:</p>

<p>In a shocking turn of events, the rise of women in power has sent shockwaves through the seemingly unshakable pillars of modern society: capitalism and religion. As women ascend to the top of the corporate ladder and take the reins of religious institutions, the old boys’ club is left reeling, desperately trying to maintain its grip on power.</p>

<p>Capitalism, once the playground of wealthy men in suits, is now being infiltrated by women who are not only breaking the glass ceiling but also shattering the very foundations of the economic system. With their innate multitasking abilities and emotional intelligence, these women are proving to be formidable adversaries in the cutthroat world of business.</p>

<p>“I never thought I’d see the day when a woman could out-negotiate me,” lamented one male CEO, who wished to remain anonymous for fear of being labeled a sexist. “They’re like Terminators, but with better hair and a keen understanding of market trends.”</p>

<p>As for religion, the impact of women in power is equally devastating. With their newfound authority, women are challenging long-held beliefs and practices, pushing for a more inclusive and egalitarian approach to faith.</p>

<p>“It’s like they’re trying to rewrite the Bible,” complained one disgruntled male clergyman. “Next thing you know, they’ll be saying Jesus had a sister or something.”</p>

<p>The rise of women in power has also led to a decline in the traditional family structure, as more and more women choose to focus on their careers rather than settling down and having children. This has left many men feeling emasculated and adrift, unsure of their place in a world where they are no longer the sole breadwinners.</p>

<p>“I used to be the man of the house,” lamented one unemployed man, who now spends his days playing video games and eating Cheetos. “Now, my wife makes more money than I ever did, and I’m just…here.”</p>

<p>As the world grapples with the seismic shift brought about by the rise of women in power, one thing is clear: the future is female, and the old guard will have to adapt or face extinction. In the meantime, we can only hope that the matriarchs will use their newfound power for good, and not just to create a world where men are forced to wear high heels and attend baby showers.</p>

<p>In conclusion, the rise of women in power has sent shockwaves through the worlds of capitalism and religion, leaving men to wonder if they will ever regain their lost status. As the old saying goes, “Behind every great man is a great woman.” Perhaps it’s time for a new saying: “Behind every great woman is a man wondering what the hell just happened.”</p>]]></content><author><name>Amr</name></author><category term="parody" /><summary type="html"><![CDATA[Title:]]></summary></entry><entry><title type="html">Bootstrap your theme and character</title><link href="https://bamr87.github.io/posts/2024/05/09/bootstrap-your-theme-and-character/" rel="alternate" type="text/html" title="Bootstrap your theme and character" /><published>2024-05-09T18:59:41+00:00</published><updated>2024-05-09T18:59:41+00:00</updated><id>https://bamr87.github.io/posts/2024/05/09/bootstrap-your-theme-and-character</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/05/09/bootstrap-your-theme-and-character/"><![CDATA[]]></content><author><name>Amr</name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">doc scraper</title><link href="https://bamr87.github.io/posts/2024/05/01/doc-scraper/" rel="alternate" type="text/html" title="doc scraper" /><published>2024-05-01T20:17:06+00:00</published><updated>2024-05-01T20:17:06+00:00</updated><id>https://bamr87.github.io/posts/2024/05/01/doc-scraper</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/05/01/doc-scraper/"><![CDATA[]]></content><author><name>Amr</name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">placeholders</title><link href="https://bamr87.github.io/posts/2024/04/25/placeholders/" rel="alternate" type="text/html" title="placeholders" /><published>2024-04-25T16:19:09+00:00</published><updated>2024-04-25T16:19:09+00:00</updated><id>https://bamr87.github.io/posts/2024/04/25/placeholders</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/04/25/placeholders/"><![CDATA[<p><a href="https://frontmatter.codes/docs/content-creation/placeholders">placeholders</a></p>

<p>Building templates for your content is a great way to ensure consistency across your site. Front Matter makes it easy to create placeholders for your content. Placeholders are a way to define a template for your content. When you create a new page, the placeholders are automatically filled in with the default values you specify. This makes it easy to create new content without having to worry about formatting or structure.</p>]]></content><author><name>2024-04-25 16:19:09 +0000</name></author><summary type="html"><![CDATA[placeholders]]></summary></entry><entry><title type="html">RetroPie Imaging</title><link href="https://bamr87.github.io/posts/2024/02/10/retropie-imaging/" rel="alternate" type="text/html" title="RetroPie Imaging" /><published>2024-02-10T00:00:00+00:00</published><updated>2024-02-10T00:00:00+00:00</updated><id>https://bamr87.github.io/posts/2024/02/10/retropie-imaging</id><content type="html" xml:base="https://bamr87.github.io/posts/2024/02/10/retropie-imaging/"><![CDATA[<p>To write a RetroPie <code class="language-plaintext highlighter-rouge">.img.gz</code> image to a microSD card using the <code class="language-plaintext highlighter-rouge">dd</code> command in Linux, you need to follow a series of steps. The <code class="language-plaintext highlighter-rouge">dd</code> command is a powerful utility for copying and converting files, and when used with care, it can be very effective for tasks like writing disk images to removable storage devices.</p>

<p>However, be cautious when using <code class="language-plaintext highlighter-rouge">dd</code> as it can overwrite any disk if you specify the wrong output file, leading to data loss. Always double-check the target device’s file path (<code class="language-plaintext highlighter-rouge">/dev/sdX</code>, where <code class="language-plaintext highlighter-rouge">X</code> is the letter corresponding to your device) before proceeding.</p>

<p>Here’s a general outline of the steps you’ll need to follow. This guide assumes that you have already downloaded the RetroPie image and that it is compressed as a <code class="language-plaintext highlighter-rouge">.img.gz</code> file.</p>

<ol>
  <li>
    <p><strong>Locate your microSD card’s device path</strong>: Insert your microSD card into your Linux machine. You can use the <code class="language-plaintext highlighter-rouge">lsblk</code> command to list all block devices and identify your microSD card based on its size and partition layout. It will typically be listed as <code class="language-plaintext highlighter-rouge">/dev/sdX</code> or <code class="language-plaintext highlighter-rouge">/dev/mmcblkX</code>, where <code class="language-plaintext highlighter-rouge">X</code> is a letter or number corresponding to your device.</p>
  </li>
  <li>
    <p><strong>Decompress the RetroPie image</strong>: Before writing the image, you need to decompress it. You can use the <code class="language-plaintext highlighter-rouge">gunzip</code> command if it’s a <code class="language-plaintext highlighter-rouge">.gz</code> file. However, to streamline the process and write the image directly without decompressing it to disk first, you can use a pipe with <code class="language-plaintext highlighter-rouge">gunzip</code> and <code class="language-plaintext highlighter-rouge">dd</code>.</p>

    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nb">gunzip</span> <span class="nt">-c</span> RetroPieImage.img.gz | <span class="nb">sudo dd </span><span class="nv">of</span><span class="o">=</span>/dev/sdX <span class="nv">bs</span><span class="o">=</span>4M <span class="nv">status</span><span class="o">=</span>progress
</code></pre></div>    </div>

    <p>Replace <code class="language-plaintext highlighter-rouge">RetroPieImage.img.gz</code> with the path to your actual RetroPie image file, and <code class="language-plaintext highlighter-rouge">/dev/sdX</code> with the actual device path of your microSD card. The <code class="language-plaintext highlighter-rouge">gunzip -c</code> command decompresses the image and pipes it directly into <code class="language-plaintext highlighter-rouge">dd</code>.</p>

    <ul>
      <li><code class="language-plaintext highlighter-rouge">gunzip -c</code> reads the compressed file and outputs the decompressed data.</li>
      <li><code class="language-plaintext highlighter-rouge">sudo</code> is used because writing to a block device typically requires root permissions.</li>
      <li><code class="language-plaintext highlighter-rouge">dd</code> writes the input it receives to the specified output file (<code class="language-plaintext highlighter-rouge">of=</code>).</li>
      <li><code class="language-plaintext highlighter-rouge">bs=4M</code> sets the block size to 4 Megabytes to speed up the writing process.</li>
      <li><code class="language-plaintext highlighter-rouge">status=progress</code> shows the progress of the operation.</li>
    </ul>
  </li>
  <li>
    <p><strong>Ensure you have the right permissions</strong>: If you encounter permission issues, ensure you’re running the command with <code class="language-plaintext highlighter-rouge">sudo</code> to execute it with superuser privileges.</p>
  </li>
  <li>
    <p><strong>Safely eject the microSD card</strong>: After the <code class="language-plaintext highlighter-rouge">dd</code> command completes, it’s important to safely eject the microSD card to ensure all writes are finalized.</p>

    <div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="nb">sync
 sudo </span>eject /dev/sdX
</code></pre></div>    </div>
  </li>
</ol>

<p>Replace <code class="language-plaintext highlighter-rouge">/dev/sdX</code> with the correct device identifier for your microSD card. The <code class="language-plaintext highlighter-rouge">sync</code> command ensures that all cached writes to the microSD card are completed.</p>

<p>This method directly writes the decompressed image to the microSD card in one step, saving time and disk space. Always ensure that the <code class="language-plaintext highlighter-rouge">dd</code> command’s <code class="language-plaintext highlighter-rouge">of=</code> parameter is correctly pointing to your microSD card to avoid accidentally overwriting the wrong disk.</p>

<p>Download img</p>

<p>https://retropie.org.uk/download/</p>

<p>https://github.com/RetroPie/RetroPie-Setup/releases/download/4.8/retropie-buster-4.8-rpi4_400.img.gz</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
<span class="c">#!/bin/bash</span>

<span class="c"># Dependencies check</span>
<span class="k">if</span> <span class="o">!</span> <span class="nb">command</span> <span class="nt">-v</span> jq &amp;&gt; /dev/null<span class="p">;</span> <span class="k">then
    </span><span class="nb">echo</span> <span class="s2">"jq could not be found, please install jq to continue."</span>
    <span class="nb">echo</span> <span class="s2">"sudo apt-get install jq"</span>
    <span class="nb">exit </span>1
<span class="k">fi</span>

<span class="c"># GitHub user/repo</span>
<span class="nv">GITHUB_USER</span><span class="o">=</span><span class="s2">"RetroPie"</span>
<span class="nv">GITHUB_REPO</span><span class="o">=</span><span class="s2">"RetroPie-Setup"</span>
<span class="nv">RELEASE_API_URL</span><span class="o">=</span><span class="s2">"https://api.github.com/repos/</span><span class="nv">$GITHUB_USER</span><span class="s2">/</span><span class="nv">$GITHUB_REPO</span><span class="s2">/releases/latest"</span>

<span class="c"># Fetch the latest release data</span>
<span class="nb">echo</span> <span class="s2">"Fetching latest RetroPie release..."</span>
<span class="nv">release_data</span><span class="o">=</span><span class="si">$(</span>curl <span class="nt">-s</span> <span class="nv">$RELEASE_API_URL</span><span class="si">)</span>

<span class="c"># Extract the download URL for the RetroPie .img.gz file</span>
<span class="nv">image_url</span><span class="o">=</span><span class="si">$(</span><span class="nb">echo</span> <span class="s2">"</span><span class="nv">$release_data</span><span class="s2">"</span> | jq <span class="nt">-r</span> <span class="s1">'.assets[] | select(.name | endswith(".img.gz")) | .browser_download_url'</span><span class="si">)</span>

<span class="k">if</span> <span class="o">[[</span> <span class="nt">-z</span> <span class="nv">$image_url</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then
    </span><span class="nb">echo</span> <span class="s2">"Error: Unable to find a RetroPie .img.gz file in the latest release."</span>
    <span class="nb">exit </span>1
<span class="k">fi</span>

<span class="c"># Download the .img.gz file</span>
<span class="nb">echo</span> <span class="s2">"Downloading </span><span class="nv">$image_url</span><span class="s2">..."</span>
wget <span class="nt">-O</span> retropie_latest.img.gz <span class="s2">"</span><span class="nv">$image_url</span><span class="s2">"</span>

<span class="c"># Prompt for the microSD card device path</span>
<span class="nb">echo</span> <span class="s2">"Enter the target microSD card device path (e.g., /dev/sdX or /dev/mmcblkX):"</span>
<span class="nb">read</span> <span class="nt">-p</span> <span class="s2">"Device path: "</span> device_path

<span class="c"># Validate the device path</span>
<span class="k">if</span> <span class="o">[[</span> <span class="o">!</span> <span class="nt">-e</span> <span class="nv">$device_path</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then
    </span><span class="nb">echo</span> <span class="s2">"Error: Device path does not exist."</span>
    <span class="nb">exit </span>1
<span class="k">fi</span>

<span class="c"># Confirmation before proceeding</span>
<span class="nb">echo</span> <span class="s2">"This will write the image to </span><span class="k">${</span><span class="nv">device_path</span><span class="k">}</span><span class="s2">. All data on </span><span class="k">${</span><span class="nv">device_path</span><span class="k">}</span><span class="s2"> will be lost!"</span>
<span class="nb">read</span> <span class="nt">-p</span> <span class="s2">"Are you sure you want to continue? (y/n): "</span> confirmation

<span class="k">if</span> <span class="o">[[</span> <span class="nv">$confirmation</span> <span class="o">!=</span> <span class="s2">"y"</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then
    </span><span class="nb">echo</span> <span class="s2">"Aborted by user."</span>
    <span class="nb">exit </span>1
<span class="k">fi</span>

<span class="c"># Decompress and write the image to the microSD card</span>
<span class="nb">echo</span> <span class="s2">"Writing RetroPie image to </span><span class="k">${</span><span class="nv">device_path</span><span class="k">}</span><span class="s2">..."</span>
<span class="nb">gunzip</span> <span class="nt">-c</span> retropie_latest.img.gz | <span class="nb">sudo dd </span><span class="nv">of</span><span class="o">=</span><span class="s2">"</span><span class="nv">$device_path</span><span class="s2">"</span> <span class="nv">bs</span><span class="o">=</span>4M <span class="nv">status</span><span class="o">=</span>progress

<span class="c"># Finalize writes and safely eject the microSD card</span>
<span class="nb">echo</span> <span class="s2">"Synchronizing writes..."</span>
<span class="nb">sync
sudo </span>eject <span class="s2">"</span><span class="nv">$device_path</span><span class="s2">"</span>

<span class="nb">echo</span> <span class="s2">"Done. You can safely remove the microSD card."</span>
</code></pre></div></div>

<p>https://code.visualstudio.com/docs/remote/wsl</p>]]></content><author><name>Amr</name></author><summary type="html"><![CDATA[To write a RetroPie .img.gz image to a microSD card using the dd command in Linux, you need to follow a series of steps. The dd command is a powerful utility for copying and converting files, and when used with care, it can be very effective for tasks like writing disk images to removable storage devices.]]></summary></entry><entry><title type="html">robots dot txt</title><link href="https://bamr87.github.io/posts/2023/12/04/robots-dot-txt/" rel="alternate" type="text/html" title="robots dot txt" /><published>2023-12-04T00:00:00+00:00</published><updated>2023-12-04T00:00:00+00:00</updated><id>https://bamr87.github.io/posts/2023/12/04/robots-dot-txt</id><content type="html" xml:base="https://bamr87.github.io/posts/2023/12/04/robots-dot-txt/"><![CDATA[<p>A <code class="language-plaintext highlighter-rouge">robots.txt</code> file is used to instruct web robots (typically search engine robots) which pages on your website to crawl and which not to. Here’s an example of a <code class="language-plaintext highlighter-rouge">robots.txt</code> file that you might use for a Jekyll site:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>User-agent: *
Disallow: /secret/
Disallow: /private/
Disallow: /tmp/
Sitemap: https://bamr87.github.io/sitemap.xml
</code></pre></div></div>

<p>In this example:</p>

<ul>
  <li><code class="language-plaintext highlighter-rouge">User-agent: *</code> means that the instructions apply to all web robots.</li>
  <li><code class="language-plaintext highlighter-rouge">Disallow: /secret/</code> tells robots not to crawl pages under the <code class="language-plaintext highlighter-rouge">/secret/</code> directory.</li>
  <li><code class="language-plaintext highlighter-rouge">Disallow: /private/</code> and <code class="language-plaintext highlighter-rouge">Disallow: /tmp/</code> do the same for these directories.</li>
  <li><code class="language-plaintext highlighter-rouge">Sitemap: https://www.yoursite.com/sitemap.xml</code> provides the location of your site’s sitemap, which is helpful for search engines to find and index your content.</li>
</ul>

<p>Remember to replace <code class="language-plaintext highlighter-rouge">https://www.yoursite.com/sitemap.xml</code> with the actual URL of your sitemap. Also, the <code class="language-plaintext highlighter-rouge">Disallow</code> entries should be adjusted based on the specific directories or pages you want to keep private or don’t want to be indexed by search engines.</p>]]></content><author><name>Amr</name></author><summary type="html"><![CDATA[A robots.txt file is used to instruct web robots (typically search engine robots) which pages on your website to crawl and which not to. Here’s an example of a robots.txt file that you might use for a Jekyll site:]]></summary></entry></feed>