<?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: Randy Kipkurui</title>
    <description>The latest articles on DEV Community by Randy Kipkurui (@randykip).</description>
    <link>https://dev.to/randykip</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%2F1624494%2Ff6ae7752-2040-4fc2-8e57-7a4c69196796.png</url>
      <title>DEV Community: Randy Kipkurui</title>
      <link>https://dev.to/randykip</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/randykip"/>
    <language>en</language>
    <item>
      <title>Tired of Running Into "Dependency Hell"? Here's a Shortcut 🩳🍰✂️</title>
      <dc:creator>Randy Kipkurui</dc:creator>
      <pubDate>Tue, 01 Apr 2025 05:59:41 +0000</pubDate>
      <link>https://dev.to/randykip/tired-of-running-into-dependency-hell-heres-a-shortcut-kg4</link>
      <guid>https://dev.to/randykip/tired-of-running-into-dependency-hell-heres-a-shortcut-kg4</guid>
      <description>&lt;p&gt;&lt;strong&gt;Tired of constant dependency headaches every time you clone a project?&lt;/strong&gt; I hit my breaking point just last month, and it was time to take control.&lt;/p&gt;

&lt;p&gt;Here's a &lt;em&gt;lightweight&lt;/em&gt; solution I put into place to avoid 90% of the chaos:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Add a &lt;strong&gt;&lt;code&gt;.nvmrc&lt;/code&gt;&lt;/strong&gt; file to every project (trust me, it’s a game-changer).&lt;/li&gt;
&lt;li&gt;Include a simple &lt;strong&gt;&lt;code&gt;setup.sh&lt;/code&gt;&lt;/strong&gt; script that auto-installs dependencies.&lt;/li&gt;
&lt;li&gt;Feature this in your &lt;strong&gt;README&lt;/strong&gt; for easy access!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I thought about automating this with Make.com, but I got lost in webhook madness 😂🥽. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;However&lt;/strong&gt;, GitHub Actions? Always a win. Here’s how I set it up:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Create a new workflow in &lt;code&gt;.github/workflows/setup.yml&lt;/code&gt; with the following code:&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;Setup Node.js Environment&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;push&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;
  &lt;span class="na"&gt;pull_request&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;branches&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;main&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;setup&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;

    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&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;Checkout code&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/checkout@v2&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;Create .nvmrc file&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;echo "v14.17.0" &amp;gt; .nvmrc&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;Setup Node.js with nvm&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/setup-node@v3&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;node-version-file&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;.nvmrc&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;Create setup.sh script&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;echo '#!/bin/bash' &amp;gt; setup.sh&lt;/span&gt;
        &lt;span class="s"&gt;echo 'if [ -f .nvmrc ]; then' &amp;gt;&amp;gt; setup.sh&lt;/span&gt;
        &lt;span class="s"&gt;echo '  nvm install' &amp;gt;&amp;gt; setup.sh&lt;/span&gt;
        &lt;span class="s"&gt;echo '  nvm use' &amp;gt;&amp;gt; setup.sh&lt;/span&gt;
        &lt;span class="s"&gt;echo 'fi' &amp;gt;&amp;gt; setup.sh&lt;/span&gt;
        &lt;span class="s"&gt;echo 'npm install' &amp;gt;&amp;gt; setup.sh&lt;/span&gt;
        &lt;span class="s"&gt;chmod +x setup.sh&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;Run setup.sh&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;./setup.sh&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;Update README.md&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;echo "## Setup Instructions" &amp;gt;&amp;gt; README.md&lt;/span&gt;
        &lt;span class="s"&gt;echo "1. Ensure you have 'nvm' installed." &amp;gt;&amp;gt; README.md&lt;/span&gt;
        &lt;span class="s"&gt;echo "2. Run 'nvm install' to install the Node version defined in .nvmrc." &amp;gt;&amp;gt; README.md&lt;/span&gt;
        &lt;span class="s"&gt;echo "3. Run './setup.sh' to install dependencies." &amp;gt;&amp;gt; README.md&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;Commit updated README&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;git config --global user.name "GitHub Actions"&lt;/span&gt;
        &lt;span class="s"&gt;git config --global user.email "actions@github.com"&lt;/span&gt;
        &lt;span class="s"&gt;git add README.md&lt;/span&gt;
        &lt;span class="s"&gt;git commit -m "Updated README with setup instructions"&lt;/span&gt;
        &lt;span class="s"&gt;git push&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Boom&lt;/strong&gt; – no more "which Node version?" debates. Clean, simple, and saves hours of frustration. 💡&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Struggling with Your Productivity Stack? Here’s My $0 Solution!</title>
      <dc:creator>Randy Kipkurui</dc:creator>
      <pubDate>Fri, 28 Mar 2025 16:49:18 +0000</pubDate>
      <link>https://dev.to/randykip/struggling-with-your-productivity-stack-heres-my-0-solution-2pc5</link>
      <guid>https://dev.to/randykip/struggling-with-your-productivity-stack-heres-my-0-solution-2pc5</guid>
      <description>&lt;p&gt;Over the last few months, I kept bouncing between Notion, Trello, and half a dozen other "productivity suites." None of them stuck.&lt;/p&gt;

&lt;p&gt;Turns out, I was overcomplicating it. Here’s how I simplified my productivity stack (and kept it under $0):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Created a simple Kanban board using GitHub Projects.&lt;/li&gt;
&lt;li&gt;Used Markdown + VS Code for my notes (no more cluttered apps).&lt;/li&gt;
&lt;li&gt;Integrated everything into one README dashboard.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you feel overwhelmed by tools, try this. It might just save your sanity.&lt;/p&gt;

&lt;p&gt;Having said that, my techy side loves an automation.&lt;br&gt;
🔥 Your co-devs will swear you’ve unlocked a 36-hour day…&lt;/p&gt;

&lt;p&gt;If you’re like me—techy, busy, and a sucker for smooth workflows—then you’ll love this little time-saver.&lt;/p&gt;

&lt;p&gt;I built this GitHub Issues → Trello Cards automation to cut out the mindless task of manually copying tasks between platforms. It's a small thing that adds up big when you’re juggling projects.&lt;/p&gt;

&lt;p&gt;Here’s the kicker:&lt;br&gt;
You can literally copy this JSON code, drop it in VS Code, import it into Make.com, connect GitHub &amp;amp; Trello, and boom—like magic, every new issue shows up as a Trello card ready to roll.&lt;/p&gt;

&lt;p&gt;Here’s the template:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
    "name": "Create Trello Card from GitHub Issues",
    "flow": [
        {
            "id": 5,
            "module": "github:watchNewIssue",
            "version": 4,
            "metadata": {
                "designer": {
                    "x": 0,
                    "y": 0,
                    "messages": [
                        {
                            "category": "setup",
                            "severity": "error",
                            "message": "Value must not be empty."
                        }
                    ]
                }
            }
        },
        {
            "id": 3,
            "module": "trello:createCard",
            "version": 4,
            "parameters": {},
            "mapper": {
                "dueComplete": false,
                "list_id_select_or_manual": "select"
            },
            "metadata": {
                "designer": {
                    "x": 300,
                    "y": 0,
                    "messages": [
                        {
                            "category": "setup",
                            "severity": "error",
                            "message": "Value must not be empty."
                        }
                    ]
                },
                "restore": {
                    "position": {
                        "mode": "chose",
                        "label": ""
                    },
                    "labels_id": {
                        "mode": "chose",
                        "items": []
                    },
                    "members_id": {
                        "mode": "chose",
                        "items": []
                    },
                    "dueComplete": {
                        "mode": "chose"
                    },
                    "select_or_manual_cardID": {
                        "label": ""
                    },
                    "list_id_select_or_manual": {
                        "label": "Select"
                    }
                },
                "parameters": [
                    {
                        "name": "__IMTCONN__",
                        "type": "account",
                        "label": "Connection",
                        "required": true
                    }
                ],
                "expect": [
                    {
                        "name": "list_id_select_or_manual",
                        "type": "select",
                        "label": "Enter a List ID",
                        "required": true,
                        "validate": {
                            "enum": [
                                "manual",
                                "select"
                            ]
                        }
                    },
                    {
                        "name": "name",
                        "type": "text",
                        "label": "Name",
                        "required": true
                    },
                    {
                        "name": "description",
                        "type": "text",
                        "label": "Description"
                    },
                    {
                        "name": "labels_id",
                        "spec": {
                            "type": "text",
                            "label": "Label ID"
                        },
                        "type": "array",
                        "label": "Labels"
                    },
                    {
                        "name": "position",
                        "type": "select",
                        "label": "Position",
                        "validate": {
                            "enum": [
                                "top",
                                "bottom"
                            ]
                        }
                    },
                    {
                        "name": "due_date",
                        "time": false,
                        "type": "date",
                        "label": "Due date"
                    },
                    {
                        "name": "dueComplete",
                        "type": "boolean",
                        "label": "Due complete",
                        "required": true
                    },
                    {
                        "name": "members_id",
                        "spec": {
                            "type": "text",
                            "label": "Member ID"
                        },
                        "type": "array",
                        "label": "Members"
                    },
                    {
                        "name": "urlSource",
                        "type": "url",
                        "label": "File URL"
                    },
                    {
                        "name": "select_or_manual_cardID",
                        "type": "select",
                        "label": "Copy card",
                        "validate": {
                            "enum": [
                                "manually",
                                "select"
                            ]
                        }
                    },
                    {
                        "name": "board_id",
                        "type": "select",
                        "label": "Board",
                        "required": true
                    },
                    {
                        "name": "list_id",
                        "type": "select",
                        "label": "List",
                        "required": true
                    }
                ]
            }
        }
    ],
    "metadata": {
        "instant": false,
        "version": 1,
        "scenario": {
            "roundtrips": 1,
            "maxErrors": 3,
            "autoCommit": true,
            "autoCommitTriggerLast": true,
            "sequential": false,
            "slots": null,
            "confidential": false,
            "dataloss": false,
            "dlq": false,
            "freshVariables": false
        },
        "designer": {
            "orphans": []
        },
        "zone": "eu2.make.com",
        "notes": []
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And a quick peek at what it looks like in action::&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxon6m25kw4ucjm59y12g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxon6m25kw4ucjm59y12g.png" alt="Make.com screenshot of the GitHub/trello automation above" width="800" height="470"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Question for the community:&lt;br&gt;
What’s one tiny automation you’ve added recently that saved you HOURS (or sanity)?&lt;br&gt;
I’m always hunting for simple wins like this — drop yours below 👇&lt;/p&gt;

&lt;p&gt;P.S. It’s Friday evening where I’m at — &lt;code&gt;Happy Weekend Coding&lt;/code&gt;, folks! 🚀&lt;/p&gt;

</description>
      <category>github</category>
      <category>trello</category>
      <category>kanban</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
