<?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: AbdulKareem Alabi</title>
    <description>The latest articles on DEV Community by AbdulKareem Alabi (@designbyalabi).</description>
    <link>https://dev.to/designbyalabi</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F865546%2F9755947d-cbc8-40d0-a2f4-8509a6d537c6.jpeg</url>
      <title>DEV Community: AbdulKareem Alabi</title>
      <link>https://dev.to/designbyalabi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/designbyalabi"/>
    <language>en</language>
    <item>
      <title>How I Automated My GitHub Contributions Using Bash (And the Hidden Traps I Solved Along the Way)</title>
      <dc:creator>AbdulKareem Alabi</dc:creator>
      <pubDate>Sun, 27 Sep 2026 18:33:54 +0000</pubDate>
      <link>https://dev.to/designbyalabi/how-i-automated-my-github-contributions-using-bash-and-the-hidden-traps-i-solved-along-the-way-c5a</link>
      <guid>https://dev.to/designbyalabi/how-i-automated-my-github-contributions-using-bash-and-the-hidden-traps-i-solved-along-the-way-c5a</guid>
      <description>&lt;p&gt;Building a consistent coding habit is tough, but maintaining that aesthetic green contribution square on GitHub shouldn't feel like a chore so i thought. So Recently, I decided to build a simple local automation script using a Bash shell script and a system cron job to log daily activity. &lt;/p&gt;

&lt;p&gt;It sounded incredibly straightforward: write a script, update a log file, commit it, and let the system run it every hour. But as any developer learns quickly, background system automation loves to throw silent curveballs. Here is exactly what I ran into and how I solved it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Ghost Environment (Cron Path Issues)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When I tested my script manually, it worked flawlessly. But when the system cron job triggered it, absolutely nothing happened. I realized that the background cron manager runs in a completely blank, stripped-down environment. It had no idea what the ~ shortcut meant, and it couldn't even find where the git utility lived.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Fix:&lt;/em&gt; I swapped out all shortcut paths for absolute explicit paths (like /home/myusername/) and explicitly exported the system PATH right inside the script instead.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Passive-Aggressive Passphrase Prompt&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;My GitHub profile was hooked up via secure SSH keys. Every time the background script tried to run, Git would silently halt the script and wait for me to type my private key passphrase. Because cron runs completely invisibly, the script would just hang and timeout which took me a while though to figure this out.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The Fix:&lt;/em&gt; Instead of compromising my laptop's primary SSH security by removing the passphrase, I migrated the project to use a scoped GitHub Personal Access Token (PAT) over &lt;strong&gt;https&lt;/strong&gt; by embedding the scoped token directly into the remote URL configuration, Git could authenticate seamlessly hands-free.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The final script that works&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you are looking to build a resilient local automation script that safely survives background task runners, this is the blueprint that got my setup fully green and automated.&lt;/p&gt;

&lt;p&gt;`#!/bin/bash&lt;/p&gt;

&lt;h1&gt;
  
  
  This is the path to my bash file on my system (yours might be different
&lt;/h1&gt;

&lt;h1&gt;
  
  
  Provide system paths so cron can locate system utilities
&lt;/h1&gt;

&lt;p&gt;export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin&lt;/p&gt;

&lt;h1&gt;
  
  
  Move into the project repository using an absolute path
&lt;/h1&gt;

&lt;p&gt;cd /home/nobleinux/Desktop/auto-commit/ &lt;/p&gt;

&lt;h1&gt;
  
  
  pull first to prevent cloud sync conflicts
&lt;/h1&gt;

&lt;p&gt;/usr/bin/git pull origin main&lt;/p&gt;

&lt;h1&gt;
  
  
  Perform the automated file modifications
&lt;/h1&gt;

&lt;p&gt;echo "Auto commit: $(date)" &amp;gt;&amp;gt; /home/nobleinux/Desktop/auto-commit/local_log.txt&lt;br&gt;
echo " "&lt;/p&gt;

&lt;h1&gt;
  
  
  5. Native Git transaction execution
&lt;/h1&gt;

&lt;p&gt;/usr/bin/git add /home/nobleinux/Desktop/auto-commit/local_log.txt&lt;br&gt;
/usr/bin/git commit -m 'chore: automated background sync update by cron'&lt;br&gt;
/usr/bin/git push origin main&lt;br&gt;
`&lt;/p&gt;

&lt;p&gt;let me know if this helps you too as well, thank you&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; the path on my own system is different so yours is likely to be as well&lt;/p&gt;

</description>
      <category>shell</category>
      <category>automate</category>
      <category>bash</category>
    </item>
    <item>
      <title>How to style a text using an object and computed property in vue.js</title>
      <dc:creator>AbdulKareem Alabi</dc:creator>
      <pubDate>Sat, 27 Jan 2024 18:47:52 +0000</pubDate>
      <link>https://dev.to/designbyalabi/how-to-style-a-text-using-an-object-and-computed-property-in-vuejs-37gk</link>
      <guid>https://dev.to/designbyalabi/how-to-style-a-text-using-an-object-and-computed-property-in-vuejs-37gk</guid>
      <description>&lt;p&gt;styling in vue.js can be done using many ways, but how to use object for class binding seems a bit challenging because all the value in the object get applied at once, here is an example of what i mean 👇&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;template&amp;gt;
 &amp;lt;label
      &amp;gt;&amp;lt;input
        type="radio"
        name="rating"
        value="Bad"
        v-model="rating"
      /&amp;gt;
      Bad&amp;lt;/label
    &amp;gt;&amp;lt;br /&amp;gt;
    &amp;lt;label
      &amp;gt;&amp;lt;input
        type="radio"
        name="rating"
        value="Okay"
        v-model="rating"
      /&amp;gt;
      Okay&amp;lt;/label
    &amp;gt;&amp;lt;br /&amp;gt;
    &amp;lt;label
      &amp;gt;&amp;lt;input
        type="radio"
        name="rating"
        value="Good"
        v-model="rating"
      /&amp;gt;
      Good&amp;lt;/label
    &amp;gt;
&amp;lt;p :class="{
        bad: 'rating',
        okay: 'rating',
        good: 'rating',}"
&amp;gt;Rate this page: {{ rating }} &amp;lt;/p&amp;gt;

&amp;lt;/template&amp;gt;


&amp;lt;script&amp;gt;
export default {
  data() {
    return {
      rating: "",
    };
  },
};
&amp;lt;/script&amp;gt;

&amp;lt;style&amp;gt;
.bad {
  color: red;
}

.okay {
  color: purple;
}

.good {
  color: green;
}
&amp;lt;/style&amp;gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;the method above will work, but the last value which is green styling will only be applied, but if you inspect in the browser you will see all the object properties was applied, that leaves us with wondering while is other styling not applying when we switch to other rating, so how to fix it is to use computed properties 👇&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;template&amp;gt;
  &amp;lt;div&amp;gt;
    &amp;lt;p :class="activeColor"&amp;gt;Rate this page: {{ rating }}&amp;lt;/p&amp;gt;

    &amp;lt;label
      &amp;gt;&amp;lt;input
        type="radio"
        name="rating"
        value="Bad"
        v-model="rating"
      /&amp;gt;
      Bad&amp;lt;/label
    &amp;gt;&amp;lt;br /&amp;gt;
    &amp;lt;label
      &amp;gt;&amp;lt;input
        type="radio"
        name="rating"
        value="Okay"
        v-model="rating"
      /&amp;gt;
      Okay&amp;lt;/label
    &amp;gt;&amp;lt;br /&amp;gt;
    &amp;lt;label
      &amp;gt;&amp;lt;input
        type="radio"
        name="rating"
        value="Good"
        v-model="rating"
      /&amp;gt;
      Good&amp;lt;/label
    &amp;gt;
  &amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
export default {
  data() {
    return {
      rating: "",
    };
  },
  computed: {
    activeColor() {
      return {
        bad: this.rating === "Bad",
        okay: this.rating === "Okay",
        good: this.rating === "Good",
      };
    },
  },
};
&amp;lt;/script&amp;gt;

&amp;lt;style&amp;gt;
.bad {
  color: red;
}

.okay {
  color: purple;
}

.good {
  color: green;
}
&amp;lt;/style&amp;gt;


&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
    </item>
  </channel>
</rss>
