<?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: that-one-arab</title>
    <description>The latest articles on DEV Community by that-one-arab (@thatonearab).</description>
    <link>https://dev.to/thatonearab</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%2F775119%2F66d5533c-9b4b-4e86-968f-1bedc58b3464.png</url>
      <title>DEV Community: that-one-arab</title>
      <link>https://dev.to/thatonearab</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/thatonearab"/>
    <language>en</language>
    <item>
      <title>The 30-Second Problem That Took Me 3 Weeks to Solve</title>
      <dc:creator>that-one-arab</dc:creator>
      <pubDate>Thu, 11 Sep 2025 04:51:21 +0000</pubDate>
      <link>https://dev.to/thatonearab/the-30-second-problem-that-took-me-3-weeks-to-solve-1odf</link>
      <guid>https://dev.to/thatonearab/the-30-second-problem-that-took-me-3-weeks-to-solve-1odf</guid>
      <description>&lt;p&gt;I have a confession: I spend more time thinking about git branch names than I should&lt;/p&gt;

&lt;p&gt;You know that moment when you're ready to dive into a GitHub issue, fingers on the keyboard, and then... you freeze. What do I call this branch? &lt;code&gt;fix-login&lt;/code&gt;? &lt;code&gt;feature/auth-improvements&lt;/code&gt;? &lt;code&gt;issue-247-whatever&lt;/code&gt;?&lt;/p&gt;

&lt;p&gt;It's such a tiny thing, but it kept breaking my flow. Every. Single. Time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Straw That Broke the Camel's Back
&lt;/h2&gt;

&lt;p&gt;Last month, I caught myself spending 5 minutes on a branch name for a 10-minute fix. I literally opened three different repositories to see how I'd named similar branches before. &lt;/p&gt;

&lt;p&gt;That's when I knew I had a problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  Enter AI (Because Why Not?)
&lt;/h2&gt;

&lt;p&gt;I'd been playing around with different AI APIs for side projects, and it hit me: why not let AI handle this annoying decision?&lt;/p&gt;

&lt;p&gt;The idea was simple: feed a GitHub issue to an AI model, let it generate a clean branch name, and automatically create the branch. No more decision fatigue.&lt;/p&gt;

&lt;p&gt;Three weeks later, &lt;a href="https://github.com/that-one-arab/gbai" rel="noopener noreferrer"&gt;gbai&lt;/a&gt; was born.&lt;/p&gt;

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

&lt;p&gt;Building this taught me something interesting about developer tools: the best ones solve problems you didn't even realize you had.&lt;/p&gt;

&lt;p&gt;I thought I was just building a branch name generator. But what I actually built was a way to eliminate a tiny source of friction that was happening dozens of times per week.&lt;/p&gt;

&lt;p&gt;The tool analyzes your existing branch patterns, works with multiple AI providers (OpenAI, Gemini, Claude, even local Ollama), and handles everything from full GitHub URLs to simple issue numbers.&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;
git checkout &lt;span class="nt"&gt;-b&lt;/span&gt; uhh-what-should-i-call-this

&lt;span class="c"&gt;# After  &lt;/span&gt;
gbai 123
&lt;span class="c"&gt;# Creates: feature/123-add-user-authentication&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The Real Win
&lt;/h2&gt;

&lt;p&gt;It's not just about saving 30 seconds. It's about removing that tiny mental speed bump that pulls you out of the zone.&lt;/p&gt;

&lt;p&gt;Now when I see an issue I want to tackle, I just run &lt;code&gt;gbai 123&lt;/code&gt; and I'm instantly in a properly named branch, ready to code.&lt;/p&gt;

&lt;p&gt;Sometimes the best tools are the ones that make the invisible friction disappear.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;Try it yourself&lt;/strong&gt;: &lt;code&gt;npm install -g gbai&lt;/code&gt;&lt;br&gt;&lt;br&gt;
&lt;strong&gt;Source&lt;/strong&gt;: &lt;a href="https://github.com/that-one-arab/gbai" rel="noopener noreferrer"&gt;github.com/that-one-arab/gbai&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;What tiny friction points in your workflow drive you crazy? I'm always curious about the small things that end up having big impacts.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>cli</category>
      <category>github</category>
      <category>git</category>
      <category>ai</category>
    </item>
    <item>
      <title>We created an online version of the social Mafia game for The MongoDB Atlas Hackathon!</title>
      <dc:creator>that-one-arab</dc:creator>
      <pubDate>Wed, 12 Jan 2022 18:13:27 +0000</pubDate>
      <link>https://dev.to/thatonearab/we-created-an-online-version-of-the-social-mafia-game-for-the-mongodb-atlas-hackathon-gja</link>
      <guid>https://dev.to/thatonearab/we-created-an-online-version-of-the-social-mafia-game-for-the-mongodb-atlas-hackathon-gja</guid>
      <description>&lt;h3&gt;
  
  
  Overview of My Submission
&lt;/h3&gt;

&lt;p&gt;I have always been a huge fan of the Mafia game, and it's one of my favourite games to play with family and friends.&lt;br&gt;
Usually we play in a 5 or 6 players setting, that means that one player needs to be the game master so they can manage&lt;br&gt;
and coordinate the game for the other players.&lt;br&gt;
One day I got an idea, why not make the whole process automated, without the need for a game master, so the extra player could join in the game?&lt;br&gt;
And so we did!&lt;br&gt;
Let me introduce you to Mafia, the online multiplayer Mafia based game. Built using React, Node.js, Express, socket.io and MongoDB!&lt;br&gt;
One player creates a room and the other players can join the same room, after the agreed on amount of players join the game would start and the rest is automated for you to experience the best Mafia game!&lt;br&gt;
It features a total of 11 roles, with 7 being Town roles, and 4 being Mafia roles. An algorithm assigns teams and roles automatically by detecting the amount of players, while&lt;br&gt;
still making sure the roles and teams assignments are random every game&lt;br&gt;
The game manages the day discussions, voting and night cycles for you, and gives you feedback on the actions you choose.&lt;br&gt;
The minimum players limit is 4 and while there is no max limit, we recommend 16 as to not experience issues with the game's server 🥵.&lt;br&gt;
The game is mobile-first responsive to ensure a solid and error-free experience on portable devices.&lt;br&gt;
What are you waiting for? Get some friends, then start playing immediately by &lt;a href="//projects.b2b-iys.muhammed-aldulaimi.com"&gt;visiting this link!&lt;/a&gt; 😄&lt;/p&gt;

&lt;h3&gt;
  
  
  Submission Category:
&lt;/h3&gt;

&lt;p&gt;Choose Your Own Adventure&lt;/p&gt;

&lt;h3&gt;
  
  
  Link to Code
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://github.com/that-one-arab/mafia-game"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Additional Resources / Info
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--W0u-fBZr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwi42viwntlxleopwxx0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--W0u-fBZr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwi42viwntlxleopwxx0.png" alt="Main Menu" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vHVWhpC3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/onjyg4feqn2me0dmurh2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vHVWhpC3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/onjyg4feqn2me0dmurh2.png" alt="Create Game" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yps-nSkO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m15l64nkanqmgykv3orx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yps-nSkO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m15l64nkanqmgykv3orx.png" alt="Lobby" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6JjOXND7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xsv5nwbj3c7hbywc9k8p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6JjOXND7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xsv5nwbj3c7hbywc9k8p.png" alt="Mafia Killed" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rcHMvPbD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v1ml32wfwyxpi627yk4n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rcHMvPbD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/v1ml32wfwyxpi627yk4n.png" alt="Player died" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NwIKAwpB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htsrow5paee6pmhvr4vq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NwIKAwpB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/htsrow5paee6pmhvr4vq.png" alt="Results" width="880" height="429"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack:
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;  &lt;a href="https://reactjs.org/"&gt;ReactJS&lt;/a&gt; - A frontend library/framework for building UI&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://nodejs.org/en/"&gt;NodeJS&lt;/a&gt; - A javascript runtime environment&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://expressjs.com/"&gt;ExpressJS&lt;/a&gt; - A back end web application framework for Node.js&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://socket.io/"&gt;SocketIO&lt;/a&gt; - a library that enables real-time, bidirectional and event-based communication between the browser and the server&lt;/li&gt;
&lt;li&gt;  &lt;a href="https://www.mongodb.com/"&gt;MongoDB&lt;/a&gt; - cross-platform document-oriented database&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Collaborators:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://dev.to/awsnafea"&gt;Aws Nafea&lt;/a&gt;&lt;/p&gt;

</description>
      <category>atlashackathon</category>
    </item>
  </channel>
</rss>
