<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Ayush Hardeniya's CodeNotes]]></title><description><![CDATA[Welcome to CodeNotes, a space where Ayush document his daily tech learnings, code explorations, and deployment experiences.]]></description><link>https://blog.ayushhardeniya.site</link><image><url>https://cdn.hashnode.com/res/hashnode/image/upload/v1749063870979/4e23308b-c4d0-49a9-b10d-9f59fb9704f6.png</url><title>Ayush Hardeniya&apos;s CodeNotes</title><link>https://blog.ayushhardeniya.site</link></image><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 18:07:15 GMT</lastBuildDate><atom:link href="https://blog.ayushhardeniya.site/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[How to Install Kali Linux on a Secondary Drive without affecting Windows & WSL Performance]]></title><description><![CDATA[Current Setup (Mine):
4 disks: In PowerShell run [to check the statuss of disks]
Get-PsDrive -PSProvider FileSystem


C:\ consist of Home (Windows 11)

W:\ consist of WSL (Ubuntu + Debian)

Confirmati]]></description><link>https://blog.ayushhardeniya.site/how-to-install-kali-linux-on-a-secondary-drive-without-affecting-windows-wsl-performance</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/how-to-install-kali-linux-on-a-secondary-drive-without-affecting-windows-wsl-performance</guid><category><![CDATA[Kali Linux]]></category><category><![CDATA[WSL]]></category><category><![CDATA[Kali Linux - Download]]></category><category><![CDATA[cybersecurity]]></category><category><![CDATA[AyushHardeniya]]></category><category><![CDATA[windows 11]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Fri, 27 Mar 2026 07:10:34 GMT</pubDate><enclosure url="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/9b989028-c6b1-4f95-ac62-18da63c2fee2.jpg" length="0" type="image/jpeg"/><content:encoded><![CDATA[<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/4666d793-ea28-4b1d-b114-c2251d656256.png" alt="" style="display:block;margin:0 auto" />

<h2><strong>Current Setup (Mine):</strong></h2>
<p><strong>4 disks</strong>: In <code>PowerShell</code> run [to check the statuss of disks]</p>
<pre><code class="language-shell">Get-PsDrive -PSProvider FileSystem
</code></pre>
<ul>
<li><p>C:\ consist of Home (Windows 11)</p>
</li>
<li><p>W:\ consist of WSL (Ubuntu + Debian)</p>
<ul>
<li>Confirmation:- [<code>PowerShell</code>]</li>
</ul>
</li>
</ul>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/12c5bcdc-c957-41b2-9c26-5a3707a3e015.png" alt="" style="display:block;margin:0 auto" />

<h2>Target Set Up:</h2>
<p>C:\ remains untouched, for future experimental accidents, to avoid any root windows failures</p>
<p>And as there’s <strong>266 GB</strong> of space available in W:\ (<em>in my case</em>), we will set up Kali Linux inside W:\ only, along with WSL running in parallel but inside a VM (VirtualBox) for distributed (limited) machine load, as it operates dynamically, doesn’t immediately occupy the complete 60-80 GB required space of Kali Linux on our local machine.</p>
<hr />
<h3><strong>1. Why won't it interfere with WSL</strong></h3>
<p>WSL and VirtualBox are like two different apps running on the same computer.</p>
<ul>
<li><p><strong>WSL (Ubuntu/Debian):</strong> Lives in a hidden utility VM managed by Windows.</p>
</li>
<li><p><strong>Kali VM:</strong> Lives in a standard folder you created on <code>W:\VMs\</code>.</p>
</li>
</ul>
<p>They use the same "engine" (the Windows Hypervisor Platform), so they can run at the exact same time without fighting for control of your hardware.</p>
<h3>2. "Will it stay in that folder?"</h3>
<p><strong>Yes.</strong> When you extract the Kali image and "Add" it to VirtualBox, everything Kali does - every tool you install, every file you save - stays inside a single large file (usually ending in <code>.vdi</code>) located in <code>W:\VMs\Kali-Linux\</code>.</p>
<ul>
<li><p><strong>No Registry Bloat:</strong> It won't scatter files across your Windows C:\ drive.</p>
</li>
<li><p><strong>Portability:</strong> If you ever get a new laptop, you can literally copy that <code>W:\VMs</code> folder to an external drive, plug it into the new PC, and your Kali setup will be exactly where you left it.</p>
</li>
</ul>
<h3>3. Potential "Troubles" to Watch For (and how to fix them)</h3>
<p>While they won't <em>break</em> each other, they do share your physical resources (RAM and CPU).</p>
<ul>
<li><p><strong>RAM Usage:</strong> If you give Kali 8 GB of RAM and Ubuntu is already using 4 GB, and Windows needs 4 GB... your system might slow down.</p>
<ul>
<li><strong>Fix:</strong> Since you have a Home version of Windows 11, just make sure you don't run too many heavy apps (like <strong>Chrome with 50 tabs</strong>) while both Kali and WSL are active.</li>
</ul>
</li>
<li><p><strong>Network Conflicts:</strong> Sometimes, if you try to run a "Web Server" on Kali and a "Web Server" on WSL using the same port (like port 80), they might clash.</p>
<ul>
<li><strong>Fix:</strong> In VirtualBox, use <strong>"NAT"</strong> mode for networking. This gives Kali its own private internal IP address separate from your Windows/WSL IP.</li>
</ul>
</li>
</ul>
<hr />
<p><strong>Conclusion Glimpse</strong>:</p>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/0942b794-f825-48e7-882d-f6160c2203f3.png" alt="" style="display:block;margin:0 auto" />

<h2>Set Up:</h2>
<p>To ensure VirtualBox and WSL don't fight over your CPU, run this one command in your <strong>PowerShell</strong> (as Administrator) just to be 100% sure the required Windows feature is active:</p>
<pre><code class="language-powershell">dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
</code></pre>
<p>o/p:</p>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/53880b7b-bfce-4f86-b577-fafae41ec022.png" alt="" style="display:block;margin:0 auto" />

<p>So opening PowerShell and running as an administrator:</p>
<p>confirm again-</p>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/dab01e79-ef05-4447-a1c2-921c95cbf9eb.png" alt="" style="display:block;margin:0 auto" />

<p>Now-</p>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/bb93961a-a493-489d-baf9-ece0f9183a5d.png" alt="" style="display:block;margin:0 auto" />

<p>-&gt; Click here for {<a href="https://ayushhardeniya.notion.site/set-up-steps-kali-linux">Set-Up Steps</a>}</p>
<h3>Step-by-Step Execution:</h3>
<ol>
<li><p><strong>Install VirtualBox:</strong> Download the <code>.exe</code> and install it. If it asks for a location, just hit "Next" and let it go to C:\ .</p>
</li>
<li><p><strong>Redirect the Storage:</strong> * Open VirtualBox.</p>
<ul>
<li><p>Go to <strong>File &gt; Preferences &gt; General</strong>.</p>
</li>
<li><p>Set <strong>Default Machine Folder</strong> to <code>W:\VMs</code>.</p>
</li>
</ul>
</li>
<li><p><strong>Setup Kali:</strong></p>
<ul>
<li><p>Manually create the folder <code>W:\VMs\Kali-Linux</code>.</p>
</li>
<li><p>Extract your downloaded Kali <code>.7z</code> file <strong>into</strong> that folder.</p>
</li>
<li><p>In the VirtualBox app, click <strong>Machine &gt; Add</strong> and select the <code>.vbox</code> file from that folder on <strong>W:</strong>.</p>
</li>
</ul>
</li>
</ol>
<pre><code class="language-powershell">For File &gt; Preferences &gt; General, you should set it to:

W:\VMs

Why not W:\VMs\Kali-Linux?

The "Default Machine Folder" is the parent folder where VirtualBox will look for all your virtual machines.

When you set it to W:\VMs, VirtualBox will treat that as the main "garage."

If you decide to install another OS later (like a Windows Server or another Linux flavor), VirtualBox will automatically create a new sub-folder for it inside W:\VMs (e.g., W:\VMs\WindowsServer).

If you pointed it directly to W:\VMs\Kali-Linux, things would get messy because VirtualBox would try to put files for other machines inside your Kali folder.
</code></pre>
<hr />
<h3>The Final Folder Structure on W:\</h3>
<p>Once you are done, your drive will look like this:</p>
<ul>
<li><p><code>W:\WSL\</code> (Your existing Ubuntu/Debian)</p>
</li>
<li><p><code>W:\VMs\</code> (The "Global" VM folder)</p>
<ul>
<li><code>Kali-Linux\</code> (The specific folder where your Kali <code>.vbox</code> and <code>.vdi</code> files live)</li>
</ul>
</li>
</ul>
<hr />
<h3>Quick Recap of the "Add" step:</h3>
<ol>
<li><p>Set the Preference to <code>W:\VMs</code>.</p>
</li>
<li><p>Click <strong>Machine &gt; Add</strong>.</p>
</li>
<li><p>Open <strong>VirtualBox</strong>.</p>
</li>
<li><p>In the top menu, click <strong>Machine</strong> &gt; <strong>Add</strong> (or press <code>Ctrl + A</code>).</p>
</li>
<li><p>A file explorer window will open. Navigate to: <code>W:\VMs\Kali-Linux\kali-linux-2026.1-virtualbox-amd64\</code></p>
</li>
<li><p>Look for a file ending in <code>.vbox</code> (it usually has a blue cube icon and might be named <code>kali-linux-2026.1-virtualbox-amd64.vbox</code>).</p>
</li>
<li><p>Select that file and click <strong>Open</strong>.</p>
</li>
</ol>
<p><strong>Result:</strong> Kali Linux will now appear in the left-hand sidebar of VirtualBox.</p>
<hr />
<h3>2. Quick Hardware Check (For a CS Student's PC)</h3>
<p>Before you hit Start, let's make sure it doesn't lag. Right-click the <strong>Kali</strong> entry in the list and select <strong>Settings</strong>:</p>
<ul>
<li><p><strong>System &gt; Processor:</strong> Give it <strong>2</strong> or <strong>4</strong> cores. (Since you handle competitive programming and open-source projects, you'll want the speed).</p>
</li>
<li><p><strong>System &gt; Motherboard:</strong> Ensure it has at least <strong>2048 MB (2 GB)</strong> of RAM.</p>
</li>
<li><p><strong>Display &gt; Video Memory:</strong> Slide this to the max (<strong>128 MB</strong>). This makes the desktop environment much smoother.</p>
</li>
<li><p><strong>General &gt; Advanced:</strong> Set <strong>Shared Clipboard</strong> to <strong>Bidirectional</strong>. This is a lifesaver for copy-pasting code/commands from Windows.</p>
<img alt="" style="display:block;margin:0 auto" /></li>
</ul>
<hr />
<h3>3. The "Ignition" (First Boot)</h3>
<ol>
<li><p>Click the green <strong>Start</strong> arrow at the top.</p>
</li>
<li><p>A new window will pop up. You’ll see some text scrolling - that’s the Linux kernel waking up.</p>
</li>
<li><p>When you reach the login screen, enter the default credentials:</p>
<ul>
<li><strong>Username:</strong> <code>kali</code> &amp; <strong>Password:</strong> <code>kali</code></li>
</ul>
</li>
</ol>
<p><strong>Result</strong>:</p>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/3d85dcb3-cc29-472d-ba56-ade53a70f5a3.png" alt="" style="display:block;margin:0 auto" />

<hr />
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/581e6a2c-25bd-4e96-a77e-fb02767bc21d.png" alt="" style="display:block;margin:0 auto" />

<hr />
<h3>Welcome to Dragon Mode {<code>Kali-Linux</code>}:</h3>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/78e2149f-54a6-4a25-bc6c-9cdb25856cd9.png" alt="" style="display:block;margin:0 auto" />

<hr />
<hr />
<hr />
<h3>How to Access it in future:</h3>
<h3>1. The Standard Way (GUI)</h3>
<p>Whenever you want to start hacking or practicing your CSE labs:</p>
<ol>
<li><p>Open <strong>VirtualBox</strong> from your Start Menu.</p>
</li>
<li><p>Select <strong>Kali-Linux</strong> from the list on the left.</p>
</li>
<li><p>Click the green <strong>Start</strong> arrow.</p>
</li>
<li><p><strong>To Close it:</strong> Don't just "X" out the window like a browser. Inside Kali, click the <strong>Power icon</strong> (top right) and select <strong>Shut Down</strong>. This ensures your virtual hard drive on <strong>W:</strong> doesn't get corrupted.</p>
</li>
</ol>
<hr />
<h3>2. The "Pro" Way (Save State)</h3>
<p>If you are in the middle of a project (like a ZenYukti task or a DSA problem) and don't want to close your terminals:</p>
<ol>
<li><p>Click the <strong>"X"</strong> on the VirtualBox window i.e) close the VM window.</p>
</li>
<li><p>Select <strong>"Save the machine state"</strong>.</p>
</li>
<li><p><strong>Result:</strong> VirtualBox will freeze Kali exactly where it is and save it to your <strong>W:</strong> drive. Next time you click Start, it will "wake up" in 2 seconds exactly where you left off.</p>
<img src="https://cdn.hashnode.com/uploads/covers/68386d1121b9d74a4a2d7b62/4723355c-6fd5-4835-b2ad-4ea491aa1984.png" alt="" style="display:block;margin:0 auto" /></li>
</ol>
<hr />
<hr />
<hr />
]]></content:encoded></item><item><title><![CDATA[🧠 How I Made a Backdated Git Commit Show on GitHub Contributions]]></title><description><![CDATA[🎯 Goal
I wanted to make a commit on GitHub with a custom past date - specifically, July 1, 2025, at 12:00 PM - to reflect the actual date the work was completed on my GitHub profile.
Sounds easy, right? I thought so too.But here's how it actually we...]]></description><link>https://blog.ayushhardeniya.site/how-i-made-a-backdated-git-commit-show-on-github-contributions</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/how-i-made-a-backdated-git-commit-show-on-github-contributions</guid><category><![CDATA[GitHub]]></category><category><![CDATA[Git]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[AyushHardeniya]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Tue, 01 Jul 2025 20:05:48 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1751400192408/427e2de5-3839-4a69-bce0-1b880fdfb42e.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<h2 id="heading-goal">🎯 Goal</h2>
<p>I wanted to make a commit on GitHub <strong>with a custom past date</strong> - specifically, <strong>July 1, 2025, at 12:00 PM - to reflect the actual date the work was completed</strong> on my GitHub profile.</p>
<p>Sounds easy, right? I thought so too.<br />But here's how it actually went 😅</p>
<hr />
<h2 id="heading-step-1-creating-the-commit-locally">📍Step 1: Creating the Commit Locally</h2>
<p>I made a small change in my project and staged it with:</p>
<pre><code class="lang-bash">$ <span class="hljs-built_in">echo</span> <span class="hljs-string">"Backdated test"</span> &gt;&gt; backdated.txt
$ git add backdated.txt
</code></pre>
<p>To commit with a custom timestamp, I used:</p>
<pre><code class="lang-bash">$ GIT_AUTHOR_DATE=<span class="hljs-string">"2025-07-01T12:00:00"</span> GIT_COMMITTER_DATE=<span class="hljs-string">"2025-07-01T12:00:00"</span> git commit -m <span class="hljs-string">"Backdated commit to July 1, 2025"</span>
</code></pre>
<p>✅ This created a commit with the exact timestamp I wanted.</p>
<hr />
<h2 id="heading-problem-1-bash-commit-command-not-found">❌ Problem 1: <code>bash: commit: command not found</code></h2>
<p>At first, Git Bash wouldn’t recognize the commit command because I broke it across lines incorrectly.</p>
<p><strong>Fix:</strong> Run the full commit command <strong>on a single line</strong>, or use backslashes <strong>with proper spacing</strong>.</p>
<hr />
<h2 id="heading-problem-2-push-rejected">❌ Problem 2: Push Rejected</h2>
<p>When I tried to push to GitHub, it said:</p>
<blockquote>
<p><code>error: failed to push some refs to origin</code></p>
</blockquote>
<p>Turns out, Git wouldn't let me push because my local branch and the remote had different histories.</p>
<p><strong>Fix:</strong> I pulled the latest changes using this:</p>
<pre><code class="lang-bash">$ git pull origin main --allow-unrelated-histories
</code></pre>
<hr />
<h2 id="heading-problem-3-vim-nightmare">❌ Problem 3: Vim Nightmare</h2>
<p>During that pull, Git launched <strong>Vim</strong> to ask for a merge message... and I got stuck inside it.</p>
<p><strong>Fix:</strong> Exited Vim by pressing:</p>
<pre><code class="lang-bash">$ Esc
:wq
Enter
</code></pre>
<p>Classic Git developer moment.</p>
<p>[Screenshot- Vim Window in git Bash terminal]</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751399156897/0feb4d89-c118-4075-b86a-81237489e683.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-final-steps">✅ Final Steps</h2>
<p>After escaping Vim, I added the file again just to be sure, then committed and pushed:</p>
<pre><code class="lang-bash">$ git add backdated.txt

GIT_AUTHOR_DATE=<span class="hljs-string">"2025-07-01T12:00:00"</span> GIT_COMMITTER_DATE=<span class="hljs-string">"2025-07-01T12:00:00"</span> git commit -m <span class="hljs-string">"Backdated push for July 1, 2025"</span>

git push origin main
</code></pre>
<p>This time - everything worked.</p>
<hr />
<h2 id="heading-the-green-square-appears">🟩 The Green Square Appears</h2>
<p>I went to my GitHub profile and hovered over July 1, 2025. Finally saw:</p>
<p>📸 <strong>[Screenshot: GitHub contribution graph showing green square on July 1, 2025]</strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751399330286/a28337e9-488f-411c-9b58-5a2e0acdb131.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-what-i-learned-the-hard-way">💡 What I Learned (the hard way)</h2>
<ul>
<li><p>Backdating commits is possible - but only if you <strong>set the environment variables correctly</strong>.</p>
</li>
<li><p>GitHub counts a commit only if:</p>
<ul>
<li><p>It’s pushed to the default branch (usually <code>main</code>)</p>
</li>
<li><p>It uses a <strong>verified email</strong> linked to your GitHub account</p>
</li>
</ul>
</li>
<li><p>Git can reject pushes if the histories don’t match - <code>--allow-unrelated-histories</code> is your friend</p>
</li>
<li><p>Git Bash doesn’t support <code>Ctrl + V</code> (use <strong>right-click</strong> to paste) (funny…)</p>
</li>
<li><p>Vim will trap you if you’re not prepared</p>
</li>
</ul>
<hr />
<h2 id="heading-final-thoughts">🧘 Final Thoughts</h2>
<p>All of this… just to get <strong>one green square</strong> on the contribution graph.<br />Was it a lot?<br />Yes.<br />Was it worth it?<br />Absolutely. 😄</p>
<p>If you’re ever trying to do the same and getting stuck, just remember - I did too.</p>
<p>~<strong>Ayush Hardeniya</strong></p>
]]></content:encoded></item><item><title><![CDATA[🧠 What I Learned Today: Fixing LinkedIn's Cached OG Image Like a Pro!]]></title><description><![CDATA[Ever pushed a shiny new Open Graph (OG) image on your website, shared it on LinkedIn... and saw the old version still pop up?Yep - same here. Here's how I fixed it in less than 10 minutes, and what I learned in the process.

🚩 Problem
I had just upd...]]></description><link>https://blog.ayushhardeniya.site/what-i-learned-today-fixing-linkedins-cached-og-image-like-a-pro</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/what-i-learned-today-fixing-linkedins-cached-og-image-like-a-pro</guid><category><![CDATA[Web Development]]></category><category><![CDATA[LinkedIn]]></category><category><![CDATA[learning]]></category><category><![CDATA[coding]]></category><category><![CDATA[AyushHardeniya]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Sun, 29 Jun 2025 10:41:50 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1751193595349/4c54e5e1-0629-4af3-af47-b6dce1bc8663.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Ever pushed a shiny new Open Graph (OG) image on your website, shared it on LinkedIn... and saw the <strong>old version still pop up?</strong><br />Yep - same here. Here's how I fixed it in less than 10 minutes, and what I learned in the process.</p>
<hr />
<h2 id="heading-problem">🚩 Problem</h2>
<p>I had just updated the OG image on my personal website. But when I tried sharing the link on LinkedIn, it still showed the <strong>previous version of the image</strong>.<br />At first, I thought maybe I made a mistake while uploading...</p>
<p>🖼️ <strong><em>[Screenshot: Old OG image being shown on LinkedIn]</em></strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751192754123/eb2aa367-07fa-4a36-9b2c-e0dcb5321f88.png" alt="Old OG image being shown on LinkedIn" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-investigating-via-linkedin-post-inspector">🕵️‍♂️ Investigating via LinkedIn Post Inspector</h2>
<p>I headed to <a target="_blank" href="https://www.linkedin.com/post-inspector/">LinkedIn Post Inspector</a> to see what was being cached.</p>
<p>Surprisingly, it showed the <strong>correct updated OG image</strong> - which meant LinkedIn's backend had already crawled and updated the image.</p>
<p>🧩 <strong><em>[Screenshot: Post Inspector showing the updated OG image correctly]</em></strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751192954436/c012eea6-780c-4704-8920-f18afbf20827.png" alt="Post Inspector showing the updated OG image correctly" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-solution-cache-busting-with-v2">🛠️ Solution: Cache Busting with [ <code>?v=2</code> ]</h2>
<p>Turns out, LinkedIn aggressively caches images, even after you update them.</p>
<h3 id="heading-the-fix-a-simple-query-string">🔧 The Fix? A simple query string:</h3>
<pre><code class="lang-bash">&lt;meta property=<span class="hljs-string">"og:image"</span> content=<span class="hljs-string">"https://ayushhardeniya.site/assets/website-pw-1.png?v=2"</span>&gt;
</code></pre>
<p>Just by adding <code>?v=2</code> to the image URL, LinkedIn thinks it's a new resource.<br />I redeployed my website with the updated tag.</p>
<p>🧪 <strong><em>[Screenshot: Code editor showing updated OG tag with</em></strong> <code>?v=2</code>]</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751193073646/40549348-648e-41e9-8b18-e4fb3706bea6.png" alt="Code editor showing updated OG tag with ?v=2" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-the-result-success">✅ The Result: Success!</h2>
<p>Went back to <a target="_blank" href="https://www.linkedin.com/post-inspector/">Post Inspector</a>, ran the URL again, and... <strong>bam!</strong> The updated OG image finally showed up.</p>
<p>🎉 <strong><em>[Screenshot: LinkedIn showing the updated image after purging]</em></strong></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751193152478/273b1286-9814-4dd1-8ed1-31d6854111d7.png" alt="LinkedIn showing the updated image after purging" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-what-i-learned">📚 What I Learned</h2>
<ul>
<li><p>LinkedIn aggressively caches OG images (more than expected).</p>
</li>
<li><p>Adding a simple <code>?v=2</code> or any version number is a clean way to bust cache.</p>
</li>
<li><p>Tools like LinkedIn Post Inspector are gold for debugging social previews.</p>
</li>
<li><p>Don’t forget to redeploy your site after editing meta tags.</p>
</li>
</ul>
<hr />
<h2 id="heading-final-thought">💬 Final Thought</h2>
<p>Small fixes like these often seem trivial, but the clarity they bring to your digital identity is <strong>huge</strong>.<br />It was a 10-minute fix, but I enjoyed learning something new.  </p>
<p>~Ayush Hardeniya</p>
]]></content:encoded></item><item><title><![CDATA[.nojekyll + Canonical Tag: My Simple Fix for Indexing Errors]]></title><description><![CDATA[🗓️ Date: June 27, 2025 | 🕦 Time: 11:30 AM
Two days back, I received a mail from Google Search Console saying that two of my website pages weren’t being indexed. The report showed that both pages were stopped from being crawled due to an error.
📸 [...]]></description><link>https://blog.ayushhardeniya.site/nojekyll-canonical-tag-my-simple-fix-for-indexing-errors</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/nojekyll-canonical-tag-my-simple-fix-for-indexing-errors</guid><category><![CDATA[AyushHardeniya]]></category><category><![CDATA[SEO]]></category><category><![CDATA[Google]]></category><category><![CDATA[indexing]]></category><category><![CDATA[GitHub]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Git]]></category><category><![CDATA[Google Search Console]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Fri, 27 Jun 2025 06:36:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1751005988289/545ae70f-b566-400b-97d5-0b201a9a7b55.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>🗓️ Date: June 27, 2025 | 🕦 Time: 11:30 AM</strong></p>
<p>Two days back, I received a mail from <strong>Google Search Console</strong> saying that <strong>two of my website pages weren’t being indexed</strong>. The report showed that both pages were <strong>stopped from being crawled</strong> due to an error.</p>
<p>📸 <em>[Search Console error message]</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751005138799/fb47e431-32f2-450b-85b5-f26203819df5.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-investigating-the-issue">🔍 Investigating the Issue</h3>
<p>After some research, I discovered that this could be happening due to a <strong>redirecting issue</strong>. To fix it, I added a <strong>canonical URL</strong> to the <code>&lt;head&gt;</code> section of both HTML pages. This helps tell search engines the correct version of a page, avoiding confusion.</p>
<p>📸 <em>[Canonical tag added in HTML]</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751005215010/40fe4ca9-8f2f-4302-a560-37f92cd3263b.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-and-then-i-found-out-about-nojekyll">🤔 And Then I Found Out About <code>.nojekyll</code></h3>
<p>While researching more about indexing issues on GitHub Pages, I came across something new – a file named <code>.nojekyll</code>.</p>
<blockquote>
<p><code>.nojekyll</code> is a special file you add to your GitHub Pages repo to tell GitHub <strong>not to use Jekyll processing</strong>.<br />Why? Because Jekyll, by default, ignores folders that start with an underscore (_), and we don’t want that.</p>
</blockquote>
<p>📸 <em>[Explanation of</em> <code>.nojekyll</code> - Reference image]</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751005268755/ea513791-0306-4d65-a728-f76c72bc4e9e.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-making-the-change-using-git-from-vs-code">💻 Making the Change Using Git (From VS Code)</h3>
<p>Until now, I always created files <strong>manually using the cursor</strong>, but this time, I wanted to do it <strong>via the Git terminal</strong> inside VS Code.</p>
<p>At first, I ran:</p>
<pre><code class="lang-bash">add .nojekyll
</code></pre>
<p>But got an error because the file didn’t exist yet 😅</p>
<p>📸 <em>[Git error for missing file]</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751005474416/21ba249f-efb8-4c22-bec3-848c3fa74404.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-learning-to-create-a-file-via-terminal">💡 Learning to Create a File via Terminal</h3>
<p>Then I Googled it, and finally discovered the correct way to <strong>create a new file using the command line</strong>:</p>
<pre><code class="lang-bash"><span class="hljs-built_in">echo</span> &gt; .nojekyll
</code></pre>
<p>And boom! File created 🎉</p>
<hr />
<h3 id="heading-staging-committing-and-pushing-changes">✅ Staging, Committing, and Pushing Changes</h3>
<p>Once the file was there, I staged the change using:</p>
<pre><code class="lang-bash">git add .nojekyll
</code></pre>
<blockquote>
<p><em>Staging simply tells Git: “Hey! This file exists now. I’m ready to save this change.”</em></p>
</blockquote>
<p>Then committed it:</p>
<pre><code class="lang-bash">git commit -m <span class="hljs-string">"Added .nojekyll to disable jekyll processing"</span>
</code></pre>
<p>And finally pushed to the main branch:</p>
<pre><code class="lang-bash">git push origin main
</code></pre>
<p>📸 <em>[Staging + Commit + Push process]</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751005595418/88d8e02f-70de-4bbc-a0b2-ffe71b459a49.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-re-submitted-to-search-console">🔁 Re-submitted to Search Console</h3>
<p>After the file was live, I went back to Google Search Console and <strong>resubmitted both pages for indexing</strong>.</p>
<p>📸 <em>[Reindexing request]</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751005674034/e20f0422-266a-49ae-8b34-5ec52d302677.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-still-facing-the-issue-here-is-the-solution">Still facing the issue? Here is the solution…</h3>
<p>Final Cleanup &amp; Indexing Success!</p>
<p>After adding the <code>.nojekyll</code> file and canonical URLs, I noticed that the <strong>real issue</strong> was with inconsistent URLs - especially those <strong>missing the trailing slash</strong> (like <code>/about</code> instead of <code>/about/</code>).</p>
<p>🔧 So here’s what I did next:</p>
<ul>
<li><p>✅ <strong>Updated all internal links</strong> (e.g., <code>/about</code> → <code>/about/</code>)</p>
</li>
<li><p>✅ <strong>Fixed URLs in the</strong> <code>sitemap.xml</code> to include trailing slashes</p>
</li>
<li><p>✅ <strong>Set canonical tags</strong> with proper URLs (<a target="_blank" href="https://ayushhardeniya.site/about/"><code>https://ayushhardeniya.site/about/</code></a>)</p>
</li>
<li><p>✅ <strong>Re-submitted URLs and sitemap</strong> in Google Search Console</p>
</li>
</ul>
<p>📸 <em>[Updated Sitemap.xml with trailing slash]</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751034063968/4d8a227d-0334-4fda-921f-73274c254d17.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-final-result">🎉 Final Result?</h3>
<p><strong>Google indexed the pages successfully!</strong><br />And I learned the importance of consistent URL formatting - especially on static site hosts like GitHub Pages.</p>
<p>📸 <em>[Search Console showing indexed page confirmation]</em></p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1751034105922/8a9fca56-4975-4710-b272-64a700e9bf65.png" alt class="image--center mx-auto" /></p>
<p>This was one of those small but <strong>super insightful learning days</strong>, and I’m glad I documented it here!;</p>
<p>~Ayush Hardeniya</p>
]]></content:encoded></item><item><title><![CDATA[GitHub Hygiene Update - (23 Jun 2025)]]></title><description><![CDATA[June 23rd, 2025  
Today’s been super insightful - I finally set up a clean, structured GitHub flow and discovered a few cool things along the way. Here’s everything I explored, fixed, and learned - in a way that might help you too 🚀

🎯 The Goal
I'v...]]></description><link>https://blog.ayushhardeniya.site/github-hygiene-update-23-jun-2025</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/github-hygiene-update-23-jun-2025</guid><category><![CDATA[GitHub]]></category><category><![CDATA[github-actions]]></category><category><![CDATA[Git]]></category><category><![CDATA[Open Source]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Mon, 23 Jun 2025 13:19:20 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1750684430333/5fff1cdd-b5bb-41f4-b504-50f23487f19a.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>June 23rd, 2025  </p>
<p>Today’s been super insightful - I finally set up a clean, structured GitHub flow and discovered a few cool things along the way. Here’s everything I explored, fixed, and learned - in a way that might help you too 🚀</p>
<hr />
<h2 id="heading-the-goal">🎯 The Goal</h2>
<p>I've always worked on the <code>main</code> branch directly. It’s quick, but not the best way to handle updates - especially when you're preparing your repo for open source or GitHub Sponsors.<br />So today, I changed that. Here's what went down...</p>
<hr />
<h2 id="heading-step-by-step-process">🛠️ Step-by-Step Process</h2>
<h3 id="heading-1-created-a-new-branch-no-more-direct-to-main">1. <strong>Created a New Branch (No More Direct-to-Main!)</strong></h3>
<ul>
<li><p>Made a small fix and <strong>created a new branch</strong>: <code>footer-fix</code></p>
</li>
<li><p>Committed changes and opened a <strong>Pull Request</strong> (PR)</p>
</li>
<li><p>Merged it smoothly into <code>main</code> - ✨ first clean PR flow</p>
</li>
</ul>
<p>✅ <strong>Tip</strong>: Avoid pushing directly to <code>main</code>. Create a feature/fix branch, commit there, and raise a PR.<br />This not only keeps your workflow clean but also unlocks GitHub achievement badges!</p>
<hr />
<h3 id="heading-2-unlocked-github-achievements">2. 🏅 <strong>Unlocked GitHub Achievements</strong></h3>
<p>Because I used a new branch and successfully merged it via PR, I unlocked:</p>
<ul>
<li><p><code>YOLO</code> - For creating and merging a PR</p>
</li>
<li><p><code>Pull Shark</code> - For merging a pull request 🎉</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750683576443/8a947c49-68c0-4a74-beb7-71c292525c49.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-3-enabled-discussions-for-the-first-time">3. 💬 <strong>Enabled Discussions for the First Time</strong></h3>
<p>Since my repository is now open for contributions, I wanted a place where:</p>
<ul>
<li><p>Contributors could ask questions</p>
</li>
<li><p>We could talk about ideas, bugs, or plans</p>
</li>
</ul>
<p>So I went to the <strong>Discussions</strong> tab and:</p>
<ul>
<li><p>Created a <strong>General Discussion</strong> section</p>
</li>
<li><p>Started a thread to say hello and invite engagement</p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750683066155/eb0a422d-349e-43bb-90b0-1f6b1211c358.png" alt class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-why-this-matters">🧠 Why This Matters</h2>
<ul>
<li><p>Having a <strong>clean</strong> <code>main</code> branch avoids messy code and builds a habit of professional collaboration</p>
</li>
<li><p>PR-based workflow helps when <strong>multiple contributors</strong> are involved</p>
</li>
<li><p>GitHub Achievements feel rewarding and track your growth</p>
</li>
<li><p><strong>Discussions</strong> open up space for genuine community learning and feedback</p>
</li>
</ul>
<hr />
<h2 id="heading-next-steps">🎯 Next Steps</h2>
<ul>
<li><p>Set up labels like <code>good first issue</code></p>
</li>
<li><p>Invite others to check my repo → raise issues or suggestions</p>
</li>
<li><p>Stay consistent with this hygiene to grow authentically</p>
</li>
<li><p>and much more, looking forward to hear from you…</p>
</li>
</ul>
<hr />
<h2 id="heading-want-to-contribute">🌐 Want to Contribute?</h2>
<p>If you find any bugs or design issues on my site, feel free to contribute!<br />📍 <a target="_blank" href="https://github.com/ayushhardeniya/ayushhardeniya.github.io">Click here to visit the repository</a></p>
<hr />
<p>This was a tiny shift, but it taught me a lot about open-source etiquette, discipline, and creating space for others to collaborate.</p>
<p>More soon. Until then - keep learning and building!  </p>
<p>~ <em>Ayush Hardeniya</em></p>
]]></content:encoded></item><item><title><![CDATA[Building My Google Knowledge Panel - A Simple Guide for Creators & Students]]></title><description><![CDATA[June 9th 2025
🌐 What is a Google Knowledge Panel - and Why It Matters?
Ever searched someone’s name on Google and seen that neat little box on the side with their photo, intro, social links, and more?
That’s called a Knowledge Panel - a structured, ...]]></description><link>https://blog.ayushhardeniya.site/building-my-google-knowledge-panel-a-simple-guide-for-creators-and-students</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/building-my-google-knowledge-panel-a-simple-guide-for-creators-and-students</guid><category><![CDATA[Google]]></category><category><![CDATA[SEO]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Developer]]></category><category><![CDATA[portfolio]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Sun, 08 Jun 2025 18:30:00 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1750311798903/649f52c7-f640-4f9b-b1be-bb384841f0cb.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>June 9th 2025</p>
<p>🌐 What is a Google Knowledge Panel - and Why It Matters?</p>
<p>Ever searched someone’s name on Google and seen that neat little box on the side with their photo, intro, social links, and more?</p>
<p>That’s called a <strong>Knowledge Panel</strong> - a structured, verified identity shown by Google/Gemini. It's how public figures, creators, entrepreneurs, or even students start appearing officially in search results.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750274865815/82d01491-8aad-4b0a-9348-46bd7109e268.png" alt="knowledge panel" class="image--center mx-auto" /></p>
<p>Image Source: <a target="_blank" href="https://www.preferral.com/blog/how-to-update-your-practices-google-knowledge-panel">preferral.com</a></p>
<p>Think of it like your <strong>Google ID card</strong> on the internet.</p>
<p>So recently, I started working toward creating my own - not through ads or tricks, but through a real, structured and transparent process.</p>
<p>Here’s exactly how I did it step-by-step, using <strong>Wikidata</strong> and some smart tweaks - so that you can too.</p>
<hr />
<h2 id="heading-step-1-understanding-the-backend-wikidata">🛠️ Step 1: Understanding the Backend - Wikidata</h2>
<p>Google doesn’t just randomly pick stuff from the internet.<br />It relies on trusted databases like:</p>
<ul>
<li><p><a target="_blank" href="http://Wikidata.org"><strong>Wikidata.org</strong></a> → for structured facts</p>
</li>
<li><p><strong>Wikipedia</strong> → for public notability (for public figures maybe appeared in articles/ magazines)</p>
</li>
<li><p><strong>Google Search Console</strong> → for your website structure</p>
</li>
</ul>
<p>Out of these, <strong>Wikidata</strong> is the most accessible for individuals like us, while I have already done the Google Search Console thing.</p>
<p>Here, I created my <strong>Wikidata profile</strong> from scratch.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750273129086/3f9823ef-b22b-48e9-8daf-b1511cc17dc0.png" alt="Wikidata user window" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-2-creating-my-wikidata-profile">🧩 Step 2: Creating My Wikidata Profile</h2>
<p>Once you’re logged into Wikidata, you can create an item by giving:</p>
<ul>
<li><p>A <strong>Label</strong> → Your full name (e.g., <em>Ayush Hardeniya</em>)</p>
</li>
<li><p>A <strong>Description</strong> → A short, neutral description (e.g., <em>Indian creattor and student</em>)</p>
<p>  etc.</p>
</li>
</ul>
<p>Once saved, Wikidata gives you a unique <strong>Q-ID</strong> (e.g., Q123XXX), which acts like your identity.</p>
<hr />
<h2 id="heading-step-3-adding-statements-to-define-myself">✍️ Step 3: Adding Statements to Define Myself</h2>
<p>These statements are the backbone of your profile.<br />Click on<br />[+ add statement]<br />And-<br />Think of them as <strong>facts about you</strong>, like:</p>
<ul>
<li><p><strong>Date of Birth</strong></p>
</li>
<li><p><strong>Country of Citizenship</strong></p>
</li>
<li><p><strong>Occupations</strong></p>
</li>
<li><p><strong>Official Website</strong></p>
</li>
<li><p><strong>Social Profiles</strong></p>
</li>
<li><p><strong>Profile Picture</strong></p>
</li>
</ul>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750273938766/6b0a8e69-f032-403a-bbe2-34ec245c165b.png" alt="add statement ss" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-4-occupation-website-social-links-with-references">💡 Step 4: Occupation, Website, Social Links - With References</h2>
<p>I added my roles like:</p>
<ul>
<li><p>Developer</p>
</li>
<li><p>Creator</p>
</li>
<li><p>Student</p>
</li>
<li><p>Designer</p>
</li>
</ul>
<p>And for each, I added a <strong>reference</strong>, usually linking to my website or GitHub profile - wherever these roles are actually mentioned.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750273459224/967c2894-c8b8-4114-b164-3265e149ad03.png" alt="Occupation-reference ss" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-step-5-hosting-my-profile-image-on-wikimedia-commons">🖼️ Step 5: Hosting My Profile Image on Wikimedia Commons</h2>
<p>For your profile image to show up across platforms, it needs to be hosted <strong>publicly</strong>.<br />When I tried to add it by direct public link, hosted from drive, it showed an issue.<br />So I uploaded mine to “<strong>Wikimedia Commons”</strong>, which is trusted by Wikidata and Google.<br />To do it, you need to login on Wikimedia common from same account as that of Wikidata.<br />And then you can see like below-</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750273550556/0a184357-ed42-496b-b6ea-c87283726aa2.png" alt="wikimedia commons image hosting ss" /></p>
<p>After adding all required info, you’ll get the public hosted name of your image, like:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750273925144/eee860be-046d-4b68-91e5-dc5db86de5e0.png" alt="final image address wikimedia ss" class="image--center mx-auto" /></p>
<hr />
<h2 id="heading-bonus-small-issues-i-faced-and-fixed">🚧 Bonus: Small Issues I Faced (and Fixed)</h2>
<p>While adding statements, I ran into things like:</p>
<ul>
<li><p>“Should not use 'official website' as a source for DOB”<br />  ➤ Solution: I used just <code>reference URL</code> instead.</p>
</li>
<li><p>“Social profile username should include start time”<br />  ➤ So I added a <code>start time</code> like “YYYY-MM-DD”.</p>
</li>
<li><p>“File name not allowed due to slashes”<br />  ➤ So I renamed and re-uploaded the image on Wikimedia properly.</p>
</li>
<li><p>Or maybe not adding <code>language of work or name</code> In the official website’s statement then it shows an issue generated-</p>
<p>  <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1750274222745/7bf73a57-a717-428c-ae3f-708c8c87bfe2.png" alt="issues ss" class="image--center mx-auto" /></p>
</li>
</ul>
<p>These small bugs taught me a lot - and showed how detailed Wikidata really is.</p>
<hr />
<h2 id="heading-step-6-connecting-everything-back-to-google">🧬 Step 6: Connecting Everything Back to Google</h2>
<p>After my Wikidata profile was ready:</p>
<ol>
<li><p>I submitted my site to <strong>Google Search Console</strong></p>
</li>
<li><p>I embedded my <strong>JSON-LD schema</strong> (structured data for Google)</p>
</li>
<li><p>I added my <strong>Wikidata link</strong> to my website's <code>&lt;head&gt;</code> as <code>&lt;link rel="me" href="..."&gt;</code><br /> The code snippet is-<br /> [<code>&lt;link rel=”me” href=”</code><a target="_blank" href="https://www.wikidata.org/wiki/Q134977227"><code>https://www.wikidata.org/wiki/</code></a><code>QXXXXXXXX" /&gt;</code> ]</p>
</li>
<li><p>I plan to publish this blog on <strong>Medium</strong> too (external mentions help!)</p>
</li>
</ol>
<hr />
<h2 id="heading-whats-next">✅ What’s Next?</h2>
<p>Now that everything is in place, it’s just about giving Google time to crawl it.</p>
<p>Eventually, if enough trusted sources reference you, and Google finds your structure clean, your <strong>Knowledge Panel</strong> starts appearing!<br />I’m excited for mine! 🤪</p>
<hr />
<h2 id="heading-final-thoughts">🙌 Final Thoughts</h2>
<p>I’m still a student, still learning - but this little project taught me a <strong>lot about how digital identity works</strong> behind the scenes.</p>
<p>If you’re a creator, coder, or just curious, I hope this helped you understand how to start <strong>owning your name online</strong>.</p>
<p>Feel free to reach out if you want help doing the same! :)</p>
<p>Or Or Or<br />Just Google My Name- (just rtying to improve Google indexing with more searches from different IP addresses)😉</p>
<p><a target="_blank" href="https://ayushhardeniya.site"><code>Ayush Hardeniya</code></a></p>
]]></content:encoded></item><item><title><![CDATA[What I Learned Today: Basic LINUX Command Line Commands]]></title><description><![CDATA[June 6th, 2025 [8:08 PM]
Hey everyone!
Sometimes, random tasks come your way that turn out to be pretty cool learning moments. Today, I got assigned a simple but interesting task - to explain some basic Linux commands in a fun way.
Honestly, I didn’t...]]></description><link>https://blog.ayushhardeniya.site/what-i-learned-today-basic-linux-command-line-commands</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/what-i-learned-today-basic-linux-command-line-commands</guid><category><![CDATA[Linux]]></category><category><![CDATA[command line]]></category><category><![CDATA[cli]]></category><category><![CDATA[Developer]]></category><category><![CDATA[Beginner Developers]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Fri, 06 Jun 2025 15:02:18 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1749221953437/a7dfc5da-0bfd-42c6-9658-9b2a0164a216.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>June 6th, 2025 [8:08 PM]</p>
<p>Hey everyone!</p>
<p>Sometimes, random tasks come your way that turn out to be pretty cool learning moments. Today, I got assigned a simple but interesting task - to explain some basic Linux commands in a fun way.</p>
<p>Honestly, I didn’t expect to dive this deep, but it gave me a chance to explore Linux command line stuff I’d only heard about before. So here’s a quick recap of what I learned today - nothing too fancy, just the basics that actually make your life easier if you’re starting with Linux.</p>
<hr />
<h3 id="heading-why-linux-command-line">Why Linux Command Line?</h3>
<p>If you’re new to Linux, the command line might look scary - a black screen with lots of text. But once you get the hang of it, it’s like having a superpower. You can do things faster and with way more control than just clicking around.</p>
<p>Today, I learned how some simple commands help you navigate files, create folders, move things around, and find stuff quickly.</p>
<hr />
<h3 id="heading-heres-what-i-learned-with-my-rough-notes">Here’s What I Learned (With My Rough Notes)</h3>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1749221209315/4f30a9f5-74e8-4086-8ab0-538dfd8dc667.png" alt class="image--center mx-auto" /></p>
<hr />
<h3 id="heading-basic-commands-in-a-nutshell">Basic Commands in a Nutshell</h3>
<ul>
<li><p><strong>ls</strong> — Lists everything inside a folder. Think of it like scanning your fridge to see what snacks🍕 you have.</p>
</li>
<li><p><strong>pwd</strong> — Shows where you currently are in the folder system. Because honestly, getting lost in folders🗂 is way too easy!</p>
</li>
<li><p><strong>mkdir</strong> — Makes a new folder, giving your files a fresh new home, helping in organising things.</p>
</li>
<li><p><strong>cd</strong> — Moves you between folders, like teleporting around your kitchen🔪 and bedroom🛏️ (quick &amp; familiar).</p>
</li>
<li><p><strong>rmdir</strong> — Deletes empty folders - kind of like cleaning up empty boxes after you’ve moved stuff<br />  or think of it like nature’s way with male honeybees🐝 after their job is done🤫.</p>
</li>
<li><p><strong>cp</strong> — Copies a file exactly as it is (like making a perfect photocopy of your exam paper - with no weird blurs or ink marks👣).</p>
</li>
<li><p><strong>mv</strong> — Moves or renames files - like tidying up your messy desktop.</p>
</li>
<li><p><strong>uname</strong> — Tells you what system you’re running - your OS introducing itself.</p>
</li>
<li><p><strong>locate</strong> — Finds files anywhere on your system, like having a digital assistant🤖 that knows where everything is.</p>
</li>
</ul>
<hr />
<h3 id="heading-why-this-matters">Why This Matters</h3>
<p>Learning these basic commands is a great first step if you want to get comfortable with Linux. It’s not just about using an OS; it’s about controlling your computer more smartly. Plus, it feels awesome when you realise how powerful simple commands can be.</p>
<hr />
<h3 id="heading-wrapping-up">Wrapping Up</h3>
<p>So that was my quick Linux crash course, thanks to a random task! I’m attaching my handwritten notes - rough but real. If you’re just starting with Linux, try these commands yourself, and you’ll be surprised how fast you can get things done.</p>
<p>Feel free to ask if you wanna know more or share your tips!</p>
<hr />
<p><em>Stay curious and keep learning!</em><br />—- Ayush Hardeniya</p>
]]></content:encoded></item><item><title><![CDATA[Solving PayPal & Ko-fi Integration While Hosting on GitHub with Custom Domain and Setting Up SEO — A Complete Guide]]></title><description><![CDATA[Introduction:Launching my personal website ayushhardeniya.site came with several exciting tasks and equally frustrating roadblocks. From integrating Ko-fi for support payments, configuring PayPal for Indian users, hosting on GitHub Pages using a cust...]]></description><link>https://blog.ayushhardeniya.site/solving-paypal-and-ko-fi-integration-while-hosting-on-github-with-custom-domain-and-setting-up-seo-a-complete-guide</link><guid isPermaLink="true">https://blog.ayushhardeniya.site/solving-paypal-and-ko-fi-integration-while-hosting-on-github-with-custom-domain-and-setting-up-seo-a-complete-guide</guid><category><![CDATA[buymeacoffee]]></category><category><![CDATA[GitHubPages]]></category><category><![CDATA[PayPal]]></category><category><![CDATA[Web Development]]></category><dc:creator><![CDATA[Ayush Hardeniya]]></dc:creator><pubDate>Wed, 04 Jun 2025 14:00:13 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1749050362715/70545f8d-95df-4c37-8eef-24fabc1576ad.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Introduction:</strong><br />Launching my personal website <a target="_blank" href="https://ayushhardeniya.site/">ayushhardeniya.site</a> came with several exciting tasks and equally frustrating roadblocks. From integrating Ko-fi for support payments, configuring PayPal for Indian users, hosting on GitHub Pages using a custom domain, to getting indexed properly by Google Search - I faced real issues, dug into each, and here’s a human-first, complete technical + non-technical guide to help you avoid the same potholes.</p>
<hr />
<h3 id="heading-step-1-hosting-github-repository-on-custom-domain">🌐 Step 1: Hosting GitHub Repository on Custom Domain</h3>
<h4 id="heading-problem">Problem:</h4>
<p>I had an existing GitHub Page live at <code>ayushHardeniya.github.io</code> but wanted my site to show up at <code>https://ayushhardeniya.site</code>.</p>
<h4 id="heading-solution">Solution:</h4>
<ol>
<li><p>Bought domain from a registrar (mine was BigRock).</p>
</li>
<li><p>Went to GitHub Repo &gt; Settings &gt; Pages.</p>
</li>
<li><p>Added <code>ayushhardeniya.site</code> in the <strong>Custom domain</strong> section.</p>
</li>
<li><p>Created a <code>CNAME</code> file in the root of my repo with this line:</p>
</li>
</ol>
<pre><code class="lang-txt">ayushhardeniya.site
</code></pre>
<ol start="5">
<li>In domain DNS settings:</li>
</ol>
<ul>
<li>Added A records pointing to GitHub IPs:</li>
</ul>
<pre><code class="lang-txt">185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
</code></pre>
<ul>
<li>Added a CNAME record pointing to <code>ayushhardeniya.site</code></li>
</ul>
<ol start="6">
<li>Waited until <strong>Enforce HTTPS</strong> became available.</li>
</ol>
<p>📌 <strong>SEO Tip</strong>: Google loves HTTPS. Be sure to enable “Enforce HTTPS” in GitHub Pages once available. It might take some hours.</p>
<hr />
<h3 id="heading-step-2-setting-up-zoho-mail-for-custom-email">📮 Step 2: Setting Up Zoho Mail for Custom Email</h3>
<h4 id="heading-problem-1">Problem:</h4>
<p>Needed to use custom email IDs like <code>connect@ayushhardeniya.site</code>.</p>
<h4 id="heading-solution-1">Solution:</h4>
<ol>
<li><p>Signed up on <a target="_blank" href="https://zoho.com/mail">Zoho</a>.</p>
</li>
<li><p>Added TXT record to verify domain.</p>
</li>
<li><p>Set MX records as given by Zoho.</p>
</li>
<li><p>Created user mailboxes.</p>
</li>
</ol>
<p>💡 Now I have working professional email addresses under my own domain.</p>
<hr />
<h3 id="heading-step-3-integrating-ko-fi-button-amp-paypal-payments">☕ Step 3: Integrating Ko-fi Button &amp; PayPal Payments</h3>
<h4 id="heading-problem-2">Problem:</h4>
<p>Ko-fi kept showing errors:</p>
<blockquote>
<p>"You cannot currently receive payments on your PayPal account..."</p>
</blockquote>
<h4 id="heading-detailed-fix">Detailed Fix:</h4>
<h5 id="heading-fixing-paypal-setup">🧩 Fixing PayPal Setup</h5>
<ol>
<li><p>Went to <a target="_blank" href="https://www.paypal.com/in/home">PayPal Business Setup</a>.</p>
</li>
<li><p>Filled the form under <strong>Account Settings &gt; Business Info</strong>:</p>
</li>
</ol>
<pre><code class="lang-plaintext">Business Type: Individual
PAN: &lt;My PAN Number&gt;
Purpose Code: P0805 (Personal use/Design/IT Services)
Industry Type: Services
CC Statement Name: PAYPAL*AYUSH
</code></pre>
<ol start="3">
<li><p>Matched PayPal name EXACTLY with PAN.</p>
</li>
<li><p>Revisited KYC page: <a target="_blank" href="https://www.paypal.com/in/webapps/mpp/kyc">https://www.paypal.com/in/webapps/mpp/kyc</a></p>
</li>
<li><p>Used desktop browser - mobile submissions were buggy.</p>
</li>
<li><p>Cleared cache, logged out and in again.</p>
</li>
</ol>
<p>📞 Optional but helpful: Contact PayPal support if stuck in loop.</p>
<h5 id="heading-connecting-with-ko-fi">🔄 Connecting with Ko-fi</h5>
<ul>
<li><p>Back to <a target="_blank" href="https://ko-fi.com/manage/payments">Ko-fi Settings</a></p>
</li>
<li><p>Clicked “Check if you're ready to go”</p>
</li>
<li><p>Finally showed: ✅ Connected</p>
</li>
</ul>
<hr />
<h3 id="heading-step-4-setting-up-contact-form-with-google-sheets-integration">📄 Step 4: Setting Up Contact Form with Google Sheets Integration</h3>
<h4 id="heading-problem-3">Problem:</h4>
<p>My site had a contact form, but it failed to submit or redirected with an error.</p>
<h4 id="heading-solution-2">Solution:</h4>
<p>Replaced it with a working Google Sheet-based form using <code>formsubmit.co</code> or [Google Apps Script]. Here's a sample:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">form</span> <span class="hljs-attr">action</span>=<span class="hljs-string">"https://formsubmit.co/your-email@example.com"</span> <span class="hljs-attr">method</span>=<span class="hljs-string">"POST"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"First Name"</span> <span class="hljs-attr">required</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"text"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Last Name"</span> <span class="hljs-attr">required</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">input</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"email"</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Email"</span> <span class="hljs-attr">required</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">textarea</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"Message"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">textarea</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">button</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"submit"</span>&gt;</span>Submit<span class="hljs-tag">&lt;/<span class="hljs-name">button</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">form</span>&gt;</span>
</code></pre>
<p>✅ Simple. No backend. Automatically sends to mail or Google Sheet if configured.</p>
<hr />
<h3 id="heading-step-5-pushing-to-google-search-console-for-seo">📈 Step 5: Pushing to Google Search Console for SEO</h3>
<h4 id="heading-1-domain-verification">1. Domain Verification</h4>
<ul>
<li><p>Go to <a target="_blank" href="https://search.google.com/search-console/about">Google Search Console</a>.</p>
</li>
<li><p>Add new property &gt; Choose domain method.</p>
</li>
<li><p>Added TXT record in DNS:</p>
</li>
</ul>
<pre><code class="lang-txt">TXT @ google-site-verification=xxxxxxxxxxx
</code></pre>
<ul>
<li>Verified successfully.</li>
</ul>
<h4 id="heading-2-sitemap-setup">2. Sitemap Setup</h4>
<ul>
<li>Added sitemap URL:</li>
</ul>
<pre><code class="lang-txt">https://ayushhardeniya.site/sitemap.xml
</code></pre>
<p>✅ Suggestion- You can generate one using <a target="_blank" href="https://www.xml-sitemaps.com/">XML Sitemap Generator</a> and add it to your repo.</p>
<hr />
<h3 id="heading-step-6-optimizing-seo-meta-tags-schema-og">🔍 Step 6: Optimizing SEO (Meta Tags + Schema + OG)</h3>
<h4 id="heading-page-title">Page Title:</h4>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">title</span>&gt;</span>Ayush Hardeniya - Developer, Creator &amp; Explorer<span class="hljs-tag">&lt;/<span class="hljs-name">title</span>&gt;</span>
</code></pre>
<h4 id="heading-meta-description">Meta Description:</h4>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">name</span>=<span class="hljs-string">"description"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"Explore the world of Ayush Hardeniya - a passionate developer, reader, and creator sharing blogs, gallery, values, and more."</span> /&gt;</span>
</code></pre>
<h4 id="heading-meta-open-graph">Meta Open Graph:</h4>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:title"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"Ayush Hardeniya - Official Website"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:description"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"My journey as a developer, reader, explorer &amp; more"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">meta</span> <span class="hljs-attr">property</span>=<span class="hljs-string">"og:image"</span> <span class="hljs-attr">content</span>=<span class="hljs-string">"https://ayushhardeniya.site/preview.png"</span>&gt;</span>
</code></pre>
<h4 id="heading-canonical-url">Canonical URL:</h4>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">link</span> <span class="hljs-attr">rel</span>=<span class="hljs-string">"canonical"</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://ayushhardeniya.site/"</span> /&gt;</span>
</code></pre>
<h4 id="heading-schemaorg-json-ld">Schema.org JSON-LD:</h4>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">script</span> <span class="hljs-attr">type</span>=<span class="hljs-string">"application/ld+json"</span>&gt;</span><span class="javascript">
{
  <span class="hljs-string">"@context"</span>: <span class="hljs-string">"https://schema.org"</span>,
  <span class="hljs-string">"@type"</span>: <span class="hljs-string">"Person"</span>,
  <span class="hljs-string">"name"</span>: <span class="hljs-string">"Ayush Hardeniya"</span>,
  <span class="hljs-string">"url"</span>: <span class="hljs-string">"https://ayushhardeniya.site"</span>,
  <span class="hljs-string">"sameAs"</span>: [
    <span class="hljs-string">"https://github.com/AyushHardeniya"</span>,
    <span class="hljs-string">"https://twitter.com/ayushhardeniya"</span>
  ],
  <span class="hljs-string">"image"</span>: <span class="hljs-string">"https://ayushhardeniya.site/profile.png"</span>,
  <span class="hljs-string">"jobTitle"</span>: <span class="hljs-string">"Developer &amp; Creator"</span>
}
</span><span class="hljs-tag">&lt;/<span class="hljs-name">script</span>&gt;</span>
</code></pre>
<hr />
<h3 id="heading-final-thoughts">🧾 Final Thoughts</h3>
<p>This blog is a real reflection of what I have faced and sorted accordingly and even a student/freelancer/early-stage creator faces when integrating modern tools together. From DNS misconfigurations to payment integration and SEO indexing - this guide covers it all, from my own experiences.</p>
<p>If you’re going through the same, just follow the steps - or hit me up on <a target="_blank" href="https://twitter.com/ayushhardeniya">Twitter</a> or my <a target="_blank" href="https://ayushhardeniya.site/">contact page</a>.</p>
<hr />
<p><strong>Author:</strong> Ayush Hardeniya<br />🌐 <strong>Website:</strong> <a target="_blank" href="https://ayushhardeniya.site/">https://ayushhardeniya.site</a><br />☕️ <strong>Buy Me A Coffee:</strong> <a target="_blank" href="https://ko-fi.com/ayushhardeniya">https://ko-fi.com/ayushhardeniya</a></p>
<hr />
<p>If you liked this blog or found it helpful, do consider sharing it. ❤️</p>
]]></content:encoded></item></channel></rss>