<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: devkumar2313</title>
    <description>The latest articles on DEV Community by devkumar2313 (@devkumar2313).</description>
    <link>https://dev.to/devkumar2313</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F530169%2F53c0ee4f-2c01-4961-833f-e6165da933b7.jpg</url>
      <title>DEV Community: devkumar2313</title>
      <link>https://dev.to/devkumar2313</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/devkumar2313"/>
    <language>en</language>
    <item>
      <title>6 Merged PRs, 6 Different Projects, 583 Lines of Code: My Hacktoberfest 2025 Story</title>
      <dc:creator>devkumar2313</dc:creator>
      <pubDate>Sat, 01 Nov 2025 05:48:48 +0000</pubDate>
      <link>https://dev.to/devkumar2313/6-merged-prs-6-different-projects-583-lines-of-code-my-hacktoberfest-2025-story-4ll7</link>
      <guid>https://dev.to/devkumar2313/6-merged-prs-6-different-projects-583-lines-of-code-my-hacktoberfest-2025-story-4ll7</guid>
      <description>&lt;h2&gt;
  
  
  My Hacktoberfest 2025 Journey: 6 Contributions That Shaped My Growth 🚀
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest 2025 has been an incredible journey of learning, collaboration, and growth! I successfully completed the challenge with &lt;strong&gt;6 merged pull requests&lt;/strong&gt; across diverse open-source projects - from fixing CI/CD pipelines to implementing user-facing features. Here's my story of contribution, debugging, and what I learned along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 Overview of My Contributions
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;#&lt;/th&gt;
&lt;th&gt;Project&lt;/th&gt;
&lt;th&gt;Contribution Type&lt;/th&gt;
&lt;th&gt;Impact&lt;/th&gt;
&lt;th&gt;Key Learning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/amcintosh/freshbooks-php-sdk" rel="noopener noreferrer"&gt;FreshBooks PHP SDK&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;CI/CD Enhancement&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;PHP 8.4 support &amp;amp; modernizing workflows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/OpenLake/canonforces" rel="noopener noreferrer"&gt;CanonForces&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Bug Fix&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;YAML syntax &amp;amp; GitHub Actions debugging&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/vatsalsinghkv/easy-fix" rel="noopener noreferrer"&gt;Easy Fix&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Workflow Fix&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Replacing deprecated actions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Rishi713144/Footballer-Predictor" rel="noopener noreferrer"&gt;Footballer Predictor&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Feature Addition&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Dark theme &amp;amp; UI/UX enhancements&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/SalamLang/.github" rel="noopener noreferrer"&gt;SalamLang&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Repository Organization&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Project structure best practices&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/SjxSubham/Leetcode" rel="noopener noreferrer"&gt;Leetcode Solutions&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Algorithm Implementation&lt;/td&gt;
&lt;td&gt;✅ Merged&lt;/td&gt;
&lt;td&gt;Problem-solving &amp;amp; optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Total Impact:&lt;/strong&gt; 583 lines added, 53 lines deleted across 6 repositories 📊&lt;/p&gt;




&lt;h2&gt;
  
  
  📖 Detailed Contribution Stories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Contribution #1: FreshBooks PHP SDK - Adding PHP 8.4 Support 🐘
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/amcintosh/freshbooks-php-sdk/pull/71" rel="noopener noreferrer"&gt;#71&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/amcintosh/freshbooks-php-sdk/issues/69" rel="noopener noreferrer"&gt;#69&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +2 / -2 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The FreshBooks PHP SDK needed to support PHP 8.4 (the latest PHP release) in its CI testing matrix. The project was only testing against PHP 8.0-8.3, which meant potential compatibility issues with the newest version could go undetected.&lt;/p&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;I upgraded the GitHub Actions workflow to include PHP 8.4 in the testing matrix:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Before&lt;/span&gt;
&lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;php&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;8.0&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.1&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.2&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.3&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;dependency-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;prefer-lowest&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;prefer-stable&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# After&lt;/span&gt;
&lt;span class="na"&gt;matrix&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;php&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;8.0&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.1&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.2&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.3&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;8.4&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
  &lt;span class="na"&gt;dependency-version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;prefer-lowest&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;prefer-stable&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Additionally, I modernized the workflow by updating &lt;code&gt;actions/cache&lt;/code&gt; from v2 to v4 for better performance and compatibility.&lt;/p&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Version Matrix Testing:&lt;/strong&gt; How to properly configure CI/CD pipelines to test against multiple language versions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions Best Practices:&lt;/strong&gt; The importance of keeping actions up-to-date&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PHP Ecosystem:&lt;/strong&gt; Understanding PHP's release cycle and backward compatibility considerations&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;This ensures the SDK remains compatible with the latest PHP version, giving developers confidence to upgrade and providing early detection of any PHP 8.4 compatibility issues.&lt;/p&gt;




&lt;h3&gt;
  
  
  Contribution #2: CanonForces - Fixing Critical YAML Syntax Errors 🔧
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/OpenLake/canonforces/pull/68" rel="noopener noreferrer"&gt;#68&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/OpenLake/canonforces/issues/67" rel="noopener noreferrer"&gt;#67&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +58 / -47 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏆 Labels:&lt;/strong&gt; &lt;code&gt;Easy&lt;/code&gt;, &lt;code&gt;hacktoberfest-accepted&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The CanonForces project had broken GitHub Actions workflows with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Incorrect YAML indentation causing syntax errors&lt;/li&gt;
&lt;li&gt;Hardcoded usernames (&lt;code&gt;@aviralsaxena16&lt;/code&gt;) instead of dynamic references&lt;/li&gt;
&lt;li&gt;Missing error handling for comment creation failures&lt;/li&gt;
&lt;li&gt;Incomplete YAML structure closures&lt;/li&gt;
&lt;/ul&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;I completely refactored two workflow files:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Before - Hardcoded username&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Comment on issue&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;echo "Thanks @aviralsaxena16 for creating this issue!"&lt;/span&gt;

&lt;span class="c1"&gt;# After - Dynamic username extraction&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Comment on issue&lt;/span&gt;
  &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;|&lt;/span&gt;
    &lt;span class="s"&gt;username="${{ github.event.issue.user.login }}"&lt;/span&gt;
    &lt;span class="s"&gt;echo "Thanks @${username} for creating this issue!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Key improvements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Fixed YAML indentation and structure&lt;/li&gt;
&lt;li&gt;Added comprehensive error handling with try-catch blocks&lt;/li&gt;
&lt;li&gt;Implemented dynamic username extraction using GitHub context&lt;/li&gt;
&lt;li&gt;Added proper logging with &lt;code&gt;core.setFailed()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;YAML Syntax Mastery:&lt;/strong&gt; Deep understanding of proper YAML formatting and common pitfalls&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Actions Context:&lt;/strong&gt; How to use &lt;code&gt;github.event&lt;/code&gt; to access PR/issue metadata dynamically&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Error Handling:&lt;/strong&gt; Importance of robust error handling in CI/CD workflows&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Code Review Process:&lt;/strong&gt; Received valuable feedback from maintainers on my approach&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;This fix prevented silent workflow failures and personalized the automated commenting system, improving contributor experience for future participants.&lt;/p&gt;




&lt;h3&gt;
  
  
  Contribution #3: Easy Fix - Replacing Deprecated GitHub Action 🔄
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/vatsalsinghkv/easy-fix/pull/106" rel="noopener noreferrer"&gt;#106&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/vatsalsinghkv/easy-fix/issues/103" rel="noopener noreferrer"&gt;#103&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +5 / -2 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The auto-labeling workflow was completely broken with the error:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Error: Unable to resolve action actions-ecosystem/action-labeler, repository not found
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The project was using a deprecated action that no longer exists, causing CI/CD pipeline failures.&lt;/p&gt;

&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;I replaced the non-existent action with the official GitHub labeler:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Before (Broken)&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Auto-label PR based on status and content&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions-ecosystem/action-labeler@v1&lt;/span&gt;  &lt;span class="c1"&gt;# ❌ Repository not found&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;configuration-path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.github/labeler.yml&lt;/span&gt;

&lt;span class="c1"&gt;# After (Fixed)&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Auto-label PR based on status and content&lt;/span&gt;
  &lt;span class="na"&gt;uses&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;actions/labeler@v5&lt;/span&gt;  &lt;span class="c1"&gt;# ✅ Official GitHub action&lt;/span&gt;
  &lt;span class="na"&gt;with&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;configuration-path&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.github/labeler.yml&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Additional improvements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added required permissions: &lt;code&gt;contents: read&lt;/code&gt; and &lt;code&gt;pull-requests: write&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Updated &lt;code&gt;actions/checkout&lt;/code&gt; from v3 to v4&lt;/li&gt;
&lt;li&gt;Maintained backward compatibility with existing config file&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Action Deprecation:&lt;/strong&gt; How to identify and replace deprecated GitHub Actions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Permissions Management:&lt;/strong&gt; Understanding GitHub Actions permission requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Migration Strategies:&lt;/strong&gt; Best practices for updating CI/CD dependencies&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;Restored the auto-labeling functionality, improving project organization and reducing manual work for maintainers.&lt;/p&gt;




&lt;h3&gt;
  
  
  Contribution #4: Footballer Predictor - Dark Theme &amp;amp; UI Enhancements 🌙⚽
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/Rishi713144/Footballer-Predictor/pull/4" rel="noopener noreferrer"&gt;#4&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/Rishi713144/Footballer-Predictor/issues/1" rel="noopener noreferrer"&gt;#1&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +446 / -1 lines (Largest contribution!)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 1, 2025&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;This was my most substantial contribution! The issue requested:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Adding player name captions below footballer images&lt;/li&gt;
&lt;li&gt;Implementing a dark/light theme toggle with persistence&lt;/li&gt;
&lt;/ol&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;&lt;strong&gt;Feature 1: Player Name Captions&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Before - Simple image array&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;images&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image1.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image2.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;image3.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="c1"&gt;// After - Structured footballer objects&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;footballers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Lionel Messi&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;messi.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Cristiano Ronaldo&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ronaldo.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Neymar Jr&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;neymar.jpg&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Feature 2: Theme Toggle with Persistence&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Theme toggle functionality&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;toggleTheme&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;currentTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;newTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;currentTheme&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dark&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;newTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;updateThemeIcon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Load saved theme on page load&lt;/span&gt;
&lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;DOMContentLoaded&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;savedTheme&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;localStorage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;getItem&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;light&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;documentElement&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;setAttribute&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;data-theme&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;savedTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nf"&gt;updateThemeIcon&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;savedTheme&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;CSS Implementation:&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="c"&gt;/* CSS Custom Properties for theming */&lt;/span&gt;
&lt;span class="nd"&gt;:root&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bg-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--text-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#000000&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--card-bg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#f5f5f5&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;data-theme&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;'dark'&lt;/span&gt;&lt;span class="o"&gt;]&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="py"&gt;--bg-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#1a1a1a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--text-primary&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="py"&gt;--card-bg&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#2d2d2d&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;CSS Custom Properties:&lt;/strong&gt; How to implement maintainable theme systems using CSS variables&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LocalStorage API:&lt;/strong&gt; Persisting user preferences across sessions&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responsive Design:&lt;/strong&gt; Making UI elements work across different screen sizes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Animation Techniques:&lt;/strong&gt; Adding smooth transitions and hover effects&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Data Structures:&lt;/strong&gt; Converting simple arrays to more structured objects for better maintainability&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;Enhanced user experience significantly with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Better visual identification of players&lt;/li&gt;
&lt;li&gt;Reduced eye strain with dark mode option&lt;/li&gt;
&lt;li&gt;Personalized experience with saved preferences&lt;/li&gt;
&lt;li&gt;Improved mobile responsiveness&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Contribution #5: SalamLang - Repository Structure Organization 📁
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/SalamLang/.github/pull/17" rel="noopener noreferrer"&gt;#17&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/SalamLang/.github/issues/16" rel="noopener noreferrer"&gt;#16&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +2 / -1 lines (7 commits)&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 2, 2025&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏆 Labels:&lt;/strong&gt; &lt;code&gt;good first issue&lt;/code&gt;, &lt;code&gt;hacktoberfest&lt;/code&gt;, &lt;code&gt;hacktoberfest-accepted&lt;/code&gt;, &lt;code&gt;tests&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;The repository had linter configuration files scattered in the root directory, making it cluttered and harder to maintain. The goal was to move these configs to a dedicated &lt;code&gt;.github/linters/&lt;/code&gt; directory.&lt;/p&gt;
&lt;h4&gt;
  
  
  My Approach
&lt;/h4&gt;

&lt;p&gt;Reorganized the project structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Before&lt;/span&gt;
&lt;span class="nb"&gt;.&lt;/span&gt;
├── .markdownlint.json
├── .yamllint.yaml
└── .pre-commit-config.yaml

&lt;span class="c"&gt;# After&lt;/span&gt;
&lt;span class="nb"&gt;.&lt;/span&gt;
├── .github/
│   └── linters/
│       ├── .markdownlint.json
│       └── .yamllint.yaml
└── .pre-commit-config.yaml
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Updated &lt;code&gt;.pre-commit-config.yaml&lt;/code&gt; to reference new locations:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="c1"&gt;# Markdownlint&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/igorshubovych/markdownlint-cli&lt;/span&gt;
  &lt;span class="na"&gt;rev&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v0.41.0&lt;/span&gt;
  &lt;span class="na"&gt;hooks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;markdownlint&lt;/span&gt;
      &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;--config&lt;/span&gt;&lt;span class="pi"&gt;,&lt;/span&gt; &lt;span class="nv"&gt;.github/linters/.markdownlint.json&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;

&lt;span class="c1"&gt;# Yamllint&lt;/span&gt;
&lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;repo&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;https://github.com/adrienverge/yamllint&lt;/span&gt;
  &lt;span class="na"&gt;rev&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;v1.35.1&lt;/span&gt;
  &lt;span class="na"&gt;hooks&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;yamllint&lt;/span&gt;
      &lt;span class="na"&gt;args&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="pi"&gt;[&lt;/span&gt;&lt;span class="nv"&gt;--config-file=.github/linters/.yamllint.yaml&lt;/span&gt;&lt;span class="pi"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Project Organization:&lt;/strong&gt; Best practices for structuring configuration files&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre-commit Hooks:&lt;/strong&gt; How to configure and update pre-commit hook paths&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Git Operations:&lt;/strong&gt; Moving files while preserving history&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Testing Methodology:&lt;/strong&gt; Verifying configuration changes don't break functionality&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Cleaner repository root directory&lt;/li&gt;
&lt;li&gt;Better organization following GitHub conventions&lt;/li&gt;
&lt;li&gt;Easier maintenance and discovery of configuration files&lt;/li&gt;
&lt;li&gt;Consistent with patterns used in main Salam repository&lt;/li&gt;
&lt;/ul&gt;




&lt;h3&gt;
  
  
  Contribution #6: Leetcode Solutions - Zigzag Conversion Algorithm 🧩
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;🔗 PR Link:&lt;/strong&gt; &lt;a href="https://github.com/SjxSubham/Leetcode/pull/39" rel="noopener noreferrer"&gt;#39&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏷️ Issue:&lt;/strong&gt; &lt;a href="https://github.com/SjxSubham/Leetcode/issues/38" rel="noopener noreferrer"&gt;#38&lt;/a&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;📊 Changes:&lt;/strong&gt; +70 / -0 lines&lt;br&gt;&lt;br&gt;
&lt;strong&gt;⏱️ Merged:&lt;/strong&gt; October 2, 2025&lt;br&gt;&lt;br&gt;
&lt;strong&gt;🏆 Labels:&lt;/strong&gt; &lt;code&gt;hacktoberest-accepted&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  The Challenge
&lt;/h4&gt;

&lt;p&gt;Implement LeetCode Problem #6 - Zigzag Conversion in C++:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Problem:&lt;/strong&gt; Convert a string to a zigzag pattern across a specified number of rows and read it line by line.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Input: s = "PAYPALISHIRING", numRows = 3
Output: "PAHNAPLSIIGYIR"

Explanation:
P   A   H   N
A P L S I I G
Y   I   R
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  My Approach &amp;amp; Intuition
&lt;/h4&gt;

&lt;p&gt;The key insight was to simulate the zigzag writing process:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight cpp"&gt;&lt;code&gt;&lt;span class="k"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Solution&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nl"&gt;public:&lt;/span&gt;
    &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;convert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;numRows&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="c1"&gt;// Edge cases&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;length&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Create a row for each line in the zigzag&lt;/span&gt;
        &lt;span class="n"&gt;vector&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;numRows&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;direction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

        &lt;span class="c1"&gt;// Fill rows with characters&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;char&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;currRow&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="c1"&gt;// Change direction at top and bottom&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;numRows&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; 
                &lt;span class="n"&gt;direction&lt;/span&gt; &lt;span class="o"&gt;*=&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

            &lt;span class="n"&gt;currRow&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;direction&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;

        &lt;span class="c1"&gt;// Concatenate all rows&lt;/span&gt;
        &lt;span class="n"&gt;string&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;string&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt; &lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="n"&gt;rows&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;row&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Algorithm Breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Edge Case Handling:&lt;/strong&gt; If only 1 row or rows &amp;gt;= string length, return original string&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Row Simulation:&lt;/strong&gt; Use vector of strings to represent each row&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Direction Tracking:&lt;/strong&gt; Use multiplier (-1 or +1) to track up/down movement&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Character Placement:&lt;/strong&gt; Place each character in current row and update direction at boundaries&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Result Construction:&lt;/strong&gt; Concatenate all rows to form final string&lt;/li&gt;
&lt;/ol&gt;

&lt;h4&gt;
  
  
  What I Learned
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Algorithm Design:&lt;/strong&gt; Breaking down complex patterns into simple state machines&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Space Complexity:&lt;/strong&gt; Trading memory for cleaner code (O(n) space for O(n) time)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;C++ STL:&lt;/strong&gt; Effective use of &lt;code&gt;vector&amp;lt;string&amp;gt;&lt;/code&gt; for dynamic data structures&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Problem-Solving Process:&lt;/strong&gt; Visualizing the problem helps identify the solution pattern&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Impact
&lt;/h4&gt;

&lt;p&gt;Contributed a well-documented, efficient solution to help other learners understand the zigzag pattern problem, complete with approach explanation and intuition.&lt;/p&gt;




&lt;h2&gt;
  
  
  💡 Overall Lessons Learned
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Technical Skills Acquired
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. &lt;strong&gt;GitHub Actions &amp;amp; CI/CD Mastery&lt;/strong&gt; 🔄
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Configuring multi-version test matrices&lt;/li&gt;
&lt;li&gt;Understanding action versioning and deprecation&lt;/li&gt;
&lt;li&gt;Working with GitHub context variables (&lt;code&gt;github.event&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Implementing proper error handling in workflows&lt;/li&gt;
&lt;li&gt;Setting appropriate permissions for actions&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  2. &lt;strong&gt;YAML Proficiency&lt;/strong&gt; 📝
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Mastering YAML syntax and indentation rules&lt;/li&gt;
&lt;li&gt;Debugging complex YAML parsing errors&lt;/li&gt;
&lt;li&gt;Structuring workflow files for maintainability&lt;/li&gt;
&lt;li&gt;Using YAML validators effectively&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  3. &lt;strong&gt;Frontend Development&lt;/strong&gt; 🎨
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Implementing CSS custom properties for theming&lt;/li&gt;
&lt;li&gt;Using LocalStorage API for state persistence&lt;/li&gt;
&lt;li&gt;Creating responsive designs with modern CSS&lt;/li&gt;
&lt;li&gt;Building smooth animations and transitions&lt;/li&gt;
&lt;li&gt;Understanding accessibility considerations (color contrast, focus states)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  4. &lt;strong&gt;Algorithm Implementation&lt;/strong&gt; 🧠
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Simulating physical patterns in code&lt;/li&gt;
&lt;li&gt;Optimizing space-time complexity trade-offs&lt;/li&gt;
&lt;li&gt;Writing clean, documented algorithmic solutions&lt;/li&gt;
&lt;li&gt;Using appropriate data structures (vectors, strings)&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  5. &lt;strong&gt;Project Organization&lt;/strong&gt; 📁
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;Following repository structure best practices&lt;/li&gt;
&lt;li&gt;Organizing configuration files logically&lt;/li&gt;
&lt;li&gt;Maintaining consistency across projects&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🚧 Challenges I Overcame
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Challenge 1: Understanding Large Codebases Quickly ⏱️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Each project had different structures, conventions, and tooling. I had limited time to understand context before contributing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Started with &lt;code&gt;README.md&lt;/code&gt; and &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; files&lt;/li&gt;
&lt;li&gt;Examined existing PRs to understand coding style&lt;/li&gt;
&lt;li&gt;Used GitHub's code search to find similar patterns&lt;/li&gt;
&lt;li&gt;Asked clarifying questions in issue comments&lt;/li&gt;
&lt;li&gt;Focused on well-scoped, beginner-friendly issues first&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenge 2: Debugging CI/CD Without Local Environment 🔧
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; GitHub Actions workflows can't be easily tested locally, making debugging iterative and time-consuming.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Used online YAML validators before pushing&lt;/li&gt;
&lt;li&gt;Studied GitHub Actions documentation thoroughly&lt;/li&gt;
&lt;li&gt;Looked at similar workflows in other repositories&lt;/li&gt;
&lt;li&gt;Made small, incremental changes with clear commit messages&lt;/li&gt;
&lt;li&gt;Learned from workflow run logs and error messages&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenge 3: Handling Different Tech Stacks 🔄
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Projects used various languages and frameworks: PHP, JavaScript, C++, YAML, Python workflows.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Focused on transferable concepts (logic, patterns, best practices)&lt;/li&gt;
&lt;li&gt;Read official documentation for unfamiliar technologies&lt;/li&gt;
&lt;li&gt;Used language-agnostic problem-solving approaches&lt;/li&gt;
&lt;li&gt;Embraced learning opportunities in new domains&lt;/li&gt;
&lt;li&gt;Applied knowledge from one project to others&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Challenge 4: Balancing Quality and Speed ⚖️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;The Problem:&lt;/strong&gt; Hacktoberfest has deadlines, but maintainers expect quality contributions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How I Solved It:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prioritized smaller, well-defined issues first&lt;/li&gt;
&lt;li&gt;Wrote comprehensive PR descriptions to reduce back-and-forth&lt;/li&gt;
&lt;li&gt;Self-reviewed code before submitting&lt;/li&gt;
&lt;li&gt;Added tests or verification steps where possible&lt;/li&gt;
&lt;li&gt;Valued quality over quantity (6 meaningful PRs vs. rushing for more)&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🙏 Thank You
&lt;/h2&gt;

&lt;p&gt;I want to express my gratitude to:&lt;/p&gt;

&lt;h3&gt;
  
  
  Maintainers 👨‍💻👩‍💻
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/amcintosh" rel="noopener noreferrer"&gt;@amcintosh&lt;/a&gt;&lt;/strong&gt; - For maintaining FreshBooks PHP SDK and quick merge&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/aviralsaxena16" rel="noopener noreferrer"&gt;@aviralsaxena16&lt;/a&gt;&lt;/strong&gt; - For reviewing CanonForces fixes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/vatsalsinghkv" rel="noopener noreferrer"&gt;@vatsalsinghkv&lt;/a&gt;&lt;/strong&gt; - For the Easy Fix project and welcoming environment&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/Rishi713144" rel="noopener noreferrer"&gt;@Rishi713144&lt;/a&gt;&lt;/strong&gt; - For the opportunity to add major features to Footballer Predictor&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/jbampton" rel="noopener noreferrer"&gt;@jbampton&lt;/a&gt;&lt;/strong&gt; - For leading SalamLang and the warm community&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://github.com/SjxSubham" rel="noopener noreferrer"&gt;@SjxSubham&lt;/a&gt;&lt;/strong&gt; - For maintaining the Leetcode solutions repository&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Special Thanks 🌟
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Hacktoberfest Team&lt;/strong&gt; - For organizing this incredible event year after year&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GitHub&lt;/strong&gt; - For providing the platform that makes open source collaboration possible&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DigitalOcean&lt;/strong&gt; - For sponsoring and supporting Hacktoberfest&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;The Open Source Community&lt;/strong&gt; - For building amazing projects and welcoming newcomers&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  💬 Let's Connect!
&lt;/h2&gt;

&lt;p&gt;I'd love to hear about your Hacktoberfest experience or answer questions about mine!&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a href="https://github.com/devkumar2313" rel="noopener noreferrer"&gt;@devkumar2313&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;DEV.to:&lt;/strong&gt; &lt;em&gt;[&lt;a href="https://dev.to/devkumar2313"&gt;https://dev.to/devkumar2313&lt;/a&gt;]&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LinkedIn:&lt;/strong&gt; &lt;em&gt;[&lt;a href="http://www.linkedin.com/in/devkumarpal74" rel="noopener noreferrer"&gt;www.linkedin.com/in/devkumarpal74&lt;/a&gt;]&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  🎉 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest 2025 taught me that &lt;strong&gt;open source is not just about code—it's about community, learning, and making an impact&lt;/strong&gt;. Every merged PR represents hours of learning, debugging, and collaboration. It represents someone taking the time to review my work and trust me to improve their project.&lt;/p&gt;

&lt;p&gt;To anyone considering participating in future Hacktoberfests: &lt;strong&gt;Do it!&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;You don't need to be an expert. You don't need years of experience. You just need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Curiosity 🔍&lt;/li&gt;
&lt;li&gt;Willingness to learn 📚&lt;/li&gt;
&lt;li&gt;Patience with yourself and others 🤝&lt;/li&gt;
&lt;li&gt;Respect for maintainers' time ⏰&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The worst that can happen? Your PR doesn't get merged. The best? You learn something new, make connections, and contribute to tools used by thousands of developers worldwide.&lt;/p&gt;

&lt;p&gt;**My 6 PRs are now part of:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;An accounting SDK used by businesses&lt;/li&gt;
&lt;li&gt;A competitive programming platform&lt;/li&gt;
&lt;li&gt;A language accessibility project&lt;/li&gt;
&lt;li&gt;Educational resources for developers**&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's pretty cool. 🚀&lt;/p&gt;




&lt;h3&gt;
  
  
  🏷️ Tags
&lt;/h3&gt;

&lt;h1&gt;
  
  
  Hacktoberfest #Hacktoberfest2025 #OpenSource #GitHub #GitHubActions #FirstContribution #DevJourney #100DaysOfCode #CodeNewbie #WebDev #PHP #JavaScript #CPP #YAML #CSS #DarkMode #CI CD #Algorithms #LearningInPublic #TechBlog
&lt;/h1&gt;




&lt;p&gt;&lt;strong&gt;💖 If this post helped or inspired you, please consider:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐ Starring the repositories I contributed to&lt;/li&gt;
&lt;li&gt;👏 Giving this post a reaction&lt;/li&gt;
&lt;li&gt;🔖 Bookmarking for your own Hacktoberfest journey&lt;/li&gt;
&lt;li&gt;💬 Sharing your experience in the comments&lt;/li&gt;
&lt;li&gt;🔄 Sharing this post with fellow developers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Happy coding, and see you in the open-source community! 🚀✨&lt;/strong&gt;&lt;/p&gt;




&lt;p&gt;&lt;em&gt;This post is part of the &lt;a href="https://dev.to/challenges/hacktoberfest"&gt;DEV.to Hacktoberfest Writing Challenge&lt;/a&gt; - Contribution Chronicles track.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>github</category>
      <category>devchallenge</category>
    </item>
  </channel>
</rss>
