<?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: Silas</title>
    <description>The latest articles on DEV Community by Silas (@silaslelei).</description>
    <link>https://dev.to/silaslelei</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%2F3716579%2F59e2dceb-c213-4bea-b911-f0a1f02a9dc7.png</url>
      <title>DEV Community: Silas</title>
      <link>https://dev.to/silaslelei</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/silaslelei"/>
    <language>en</language>
    <item>
      <title>Bash, Coffee, and Me: Learning Shell without losing your Mind</title>
      <dc:creator>Silas</dc:creator>
      <pubDate>Mon, 02 Mar 2026 08:42:58 +0000</pubDate>
      <link>https://dev.to/silaslelei/bash-coffee-and-me-learning-shell-without-losing-your-mind-50fj</link>
      <guid>https://dev.to/silaslelei/bash-coffee-and-me-learning-shell-without-losing-your-mind-50fj</guid>
      <description>&lt;p&gt;Its a cold Monday morning and the coffee doesn't seem to have hit the endpoint yet, or maybe it has and gotten a 400-500 HTTP status code response.&lt;br&gt;
As I wait for that to resolve, I find warmth in being bourne again. I am in the bourne again shell, get it?&lt;/p&gt;

&lt;p&gt;Bash has always felt a bit intimidating, and just a bit far out of my reach.  Always looking mean and something too big to wrap my head around.&lt;/p&gt;

&lt;h3&gt;
  
  
  Wait, What is Bash?
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Bash is a command-line interpreter and shell for Unix-like operating systems (Linux, macOS) that allows users to interact with the OS via text-based commands. It serves as the default interface for executing, automating, and scripting system tasks, acting as a bridge between the user and the kernel&lt;/code&gt;.&lt;a href="https://en.wikipedia.org/wiki/Bash_(Unix_shell)" rel="noopener noreferrer"&gt;🔗&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But the problem, I think, was me trying to swallow it whole. Fast forward time to a few days ago, a peer introduced me to a game. Oh how I love games!! &lt;br&gt;
This game gets you started on the essentials of bash. I was well versed with the very basic, or rather the ones I'd use on a daily basis: ls, mkdir, touch and a few others, so those ones didn't really raise my 'spidey senses'.&lt;/p&gt;

&lt;h3&gt;
  
  
  Basics?
&lt;/h3&gt;

&lt;p&gt;So, lets go through what I call 'the very basics':&lt;br&gt;
&lt;code&gt;ls&lt;/code&gt;: lists contents of a directory &lt;br&gt;
&lt;code&gt;mkdir name&lt;/code&gt;: creates a new directory 'name' in the current directory&lt;br&gt;
&lt;code&gt;touch name&lt;/code&gt;: creates a new file 'name' in the current directory&lt;/p&gt;

&lt;p&gt;Most of these commands take overloads or parameters or flags which are placed after the command to add more options or coverage to them.&lt;br&gt;
As we have already seen, ls just outputs the contents of a directory, both files and folders, with barely no distinction.&lt;/p&gt;

&lt;h3&gt;
  
  
  Deep (or shallow) dive into ls
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;ls -l&lt;/code&gt; : This is "long listing". It will give you the contents of the current directory together with more info about each content. You will get an output resembling this:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;drwxr-xr-x 2 ksilas cohort2    4096 Feb 17 13:27 algorithm&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;The first letter d&lt;/code&gt; shows that 'algorithm' is a directory. A file would be denoted with a -&lt;br&gt;
The second batch (position &lt;code&gt;2,3,4&lt;/code&gt;) which are &lt;code&gt;rwx&lt;/code&gt; represent the permission assigned to the user: r-read, w-write, x-execute&lt;br&gt;
The next 3 in position &lt;code&gt;5,6,7&lt;/code&gt; are also permissions for the group the user/file is in.&lt;br&gt;
The &lt;code&gt;last 3&lt;/code&gt; are permissions for others. These permissions apply to users who are not owners and are not not in the user group.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;number&lt;/code&gt; that follows the permission, &lt;code&gt;2&lt;/code&gt;, represents the number of hard links in the directory.&lt;/p&gt;

&lt;p&gt;The next text, &lt;code&gt;ksilas&lt;/code&gt; represent the owner of the file, and &lt;code&gt;cohort2&lt;/code&gt; represents the group in which the file belongs to. By default, the group will be the one the owner belongs to.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;4096&lt;/code&gt; is the size, in bytes, of the file or directory&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Feb 17 13:27&lt;/code&gt; represents the date and time the file/directory was last modified.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;algorithm&lt;/code&gt; would then finally represent the current items with the above stats.&lt;/p&gt;

&lt;h3&gt;
  
  
  Still There?
&lt;/h3&gt;

&lt;p&gt;Already overwhelming, right???😄 Stay with me. I haven't shown you something amazing. We want to find a file with a particular name, and of course the directory.&lt;br&gt;
This is where I shut down😰.&lt;br&gt;
What is &lt;code&gt;grep&lt;/code&gt;, you ask. Well, I actually just went to google that up😅. &lt;code&gt;Global Regular Expression Print&lt;/code&gt;. Basically, it looks for files  or text that match the particular pattern given. Say &lt;code&gt;grep "hello"&lt;/code&gt; will look for texts that contain 'hello'&lt;/p&gt;

&lt;p&gt;But that's not even the problem. What annoyed me was, yes it would list all files that match a pattern, but what I really needed was WHERE the file is. Grep didn't give me that, or at least I didn't know how to ask nicely.&lt;/p&gt;

&lt;h3&gt;
  
  
  FIND the savior
&lt;/h3&gt;

&lt;p&gt;In walks &lt;code&gt;FIND&lt;/code&gt;. I could never ask for more😂🤩.&lt;br&gt;
This is the heart of our discourse today.&lt;br&gt;
Suppose you want to find a FILE with size 100 bytes, and an owner silas, I could imagine your head spinning already.&lt;/p&gt;

&lt;p&gt;But for our Swiss Army knife:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;**find . -type f -size 100c -user silas**&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Let me leave you marvel at the wonders of Bourne Again SHell!! I go away smiling... a happier man.&lt;/p&gt;

&lt;p&gt;But before I go, check out the &lt;a href="https://overthewire.org/wargames/bandit/" rel="noopener noreferrer"&gt;game&lt;/a&gt; I mentioned earlier.&lt;/p&gt;

&lt;p&gt;Bye👋🏻&lt;/p&gt;

</description>
      <category>bash</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to Write Git Commit Messages Like a Pro</title>
      <dc:creator>Silas</dc:creator>
      <pubDate>Wed, 11 Feb 2026 01:34:24 +0000</pubDate>
      <link>https://dev.to/silaslelei/how-to-write-git-commit-messages-like-a-pro-3ep4</link>
      <guid>https://dev.to/silaslelei/how-to-write-git-commit-messages-like-a-pro-3ep4</guid>
      <description>&lt;p&gt;Ever wondered how to write commit messages for Git? Or maybe you’ve written messages that were technically correct but still caused murmurs in your team?&lt;/p&gt;

&lt;p&gt;Well, that ends here and now. We’ve all been victims of this anomaly, and the way forward is simple: improve ourselves and share knowledge.&lt;br&gt;
Let's dive in...&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Git?
&lt;/h3&gt;

&lt;p&gt;Git is a distributed version control system that manages versions of source code or data. Programmers often use it to collaborate on projects efficiently.&lt;/p&gt;

&lt;p&gt;Git lets you work locally, track changes to files, and push those changes to remote repositories like GitHub or Bitbucket for collaboration. &lt;br&gt;
&lt;a href="https://en.wikipedia.org/wiki/Git" rel="noopener noreferrer"&gt;More about git&lt;/a&gt;&lt;br&gt;
&lt;a href="https://git-scm.com/" rel="noopener noreferrer"&gt;Git official&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to commit
&lt;/h3&gt;

&lt;p&gt;A commit is made by running &lt;code&gt;git commit -m "some-message"&lt;/code&gt; with -m flag denoting &lt;em&gt;message&lt;/em&gt; and "some-message" being the details of what you are committing, which is the main point of our article today.&lt;/p&gt;

&lt;p&gt;Commit messages aren’t about long paragraphs, perfect grammar, or capitalization. They are about clarity, brevity, and readability. &lt;/p&gt;

&lt;h3&gt;
  
  
  Common Commit Message Tags
&lt;/h3&gt;

&lt;p&gt;Using standard tags makes Git history clear and helps your team understand the purpose of each change.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;feat&lt;/code&gt;:&lt;br&gt;
when the commit adds or changes functionality in a way that matters to users e.g &lt;code&gt;feat: add GitHub OAuth login&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;fix&lt;/code&gt;:&lt;br&gt;
when the commit fixes a bug that existed e.g &lt;code&gt;fix: handle API rate limits&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;docs&lt;/code&gt;:&lt;br&gt;
when only the documentation changes (no code behavior changes). e.g &lt;code&gt;docs: update README with setup instructions&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;style&lt;/code&gt;:&lt;br&gt;
Code style or formatting changes that do not affect logic or behavior. e.g &lt;code&gt;style: fix indentation&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;refactor&lt;/code&gt;:&lt;br&gt;
Code changes that improve structure or readability without changing behavior. e.g &lt;code&gt;refactor: simplify GitHub client logic&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;test&lt;/code&gt;:&lt;br&gt;
Adds, updates, or fixes tests only. e.g &lt;code&gt;test: add unit tests for login&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;chore&lt;/code&gt;:&lt;br&gt;
Maintenance tasks that don’t affect application behavior&lt;br&gt;
(dependencies, configs, scripts). e.g &lt;code&gt;chore: update GitHub Actions workflow&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;revert&lt;/code&gt;:&lt;br&gt;
Reverts a previous commit e.g &lt;code&gt;revert: undo login feature&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;perf&lt;/code&gt;:&lt;br&gt;
Changes that improve performance e.g &lt;code&gt;perf: optimize database queries&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;build&lt;/code&gt;:&lt;br&gt;
Changes that affect the build system or external dependencies. e.g &lt;code&gt;build: update dependencies&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is also good practice to write your commits in the present tense. Instead of "feat: added login functionality", do "feat: add login functionality" &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"That's how dad did it, that's how America does it, and it's worked out pretty well so far"&lt;br&gt;
 ~Iron Man 2008&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This sets the base for linear and standard collaboration works and i hope you are a better commiter now that you've come this far.&lt;/p&gt;

&lt;p&gt;Like my boss would say, leave with a quote to appear smart, i will leave you with this:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Git commit messages are how we communicate to our future selves."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Happy committing, and may your Git history be forever clean and understandable.&lt;/p&gt;

&lt;p&gt;Bye 👋&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>github</category>
      <category>git</category>
      <category>programming</category>
    </item>
    <item>
      <title>Survival Mode: Week 1 at Zone01 Kisumu ✅</title>
      <dc:creator>Silas</dc:creator>
      <pubDate>Tue, 20 Jan 2026 05:44:28 +0000</pubDate>
      <link>https://dev.to/silaslelei/survival-mode-week-1-at-zone01-kisumu-3pd8</link>
      <guid>https://dev.to/silaslelei/survival-mode-week-1-at-zone01-kisumu-3pd8</guid>
      <description>&lt;p&gt;The first week is officially in the books. To say it was a "challenge" would be an understatement—it was a full-on baptism by fire.&lt;/p&gt;

&lt;p&gt;If there was ever a moment to throw in the towel, this was it. The learning curve was vertical, the bugs were relentless, and the caffeine was mandatory. But we made it through. We might have a few "mental bruises" and syntax-induced scars, but we’re still standing.&lt;/p&gt;

&lt;p&gt;I’m finally starting to find my rhythm at Zone01 Kisumu. The road ahead looks intense, but if Week 1 taught me anything, it's that the grind is where the growth happens.&lt;/p&gt;

&lt;p&gt;Keep it locked. 🚀&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Sabbatical... 😂</title>
      <dc:creator>Silas</dc:creator>
      <pubDate>Sat, 17 Jan 2026 13:36:05 +0000</pubDate>
      <link>https://dev.to/silaslelei/sabbatical-2h4b</link>
      <guid>https://dev.to/silaslelei/sabbatical-2h4b</guid>
      <description>&lt;p&gt;So yesterday, I wrote a test on golang after about 300 days of not touching code. &lt;br&gt;
I was very confident about acing the test and I had nothing to worry about. &lt;br&gt;
Well... 😂&lt;br&gt;
Let's just say, iron rusts when left outside. &lt;br&gt;
Dust accumulates when stuff is undisturbed. &lt;/p&gt;

&lt;p&gt;So here I am, back again, to writing code. May the codes be with me... And y'all 💪&lt;/p&gt;

</description>
      <category>go</category>
      <category>zone01kisumu</category>
    </item>
  </channel>
</rss>
