<?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: Bernard Bado</title>
    <description>The latest articles on DEV Community by Bernard Bado (@codewithbernard).</description>
    <link>https://dev.to/codewithbernard</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%2F674249%2Fda90ef81-0b85-4b0d-9fa8-cc53b9c11984.png</url>
      <title>DEV Community: Bernard Bado</title>
      <link>https://dev.to/codewithbernard</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/codewithbernard"/>
    <language>en</language>
    <item>
      <title>I Turned ChatGPT Into Monthly Recurring Revenue</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Sun, 02 Apr 2023 01:43:30 +0000</pubDate>
      <link>https://dev.to/codewithbernard/i-turned-chatgpt-into-monthly-recurring-revenue-572c</link>
      <guid>https://dev.to/codewithbernard/i-turned-chatgpt-into-monthly-recurring-revenue-572c</guid>
      <description>&lt;p&gt;&lt;a href="https://medium.com/the-side-hustle-club/i-turned-chatgpt-into-monthly-recurring-revenue-de029daad52b?source=rss-b970c961c4e1------2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p9wnQ2WW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2600/1%2AwZcY8UsYW1B32bBTjjP2pA.jpeg" alt="Woman suprised by the fact that I turned Chat GPT into MRR" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ChatGPT is great! There is no doubt about that.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;But what’s even better is passive income.&lt;/p&gt;

&lt;p&gt;Combine these 2 bad boys together and you have a killer combination.&lt;/p&gt;

&lt;p&gt;This is exactly what I did. And today, I’ll explain:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What I did do to turn ChatGPT into MRR&lt;/li&gt;
&lt;li&gt;How I did it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And if you’ll stick around till the end, I’ll tell you how to do the same thing.&lt;/p&gt;

&lt;h1&gt;
  
  
  Using ChatGPT to Build My Own Product
&lt;/h1&gt;

&lt;p&gt;Long story short, I built a web-based text editor that is powered by ChatGPT.&lt;/p&gt;

&lt;p&gt;You can see how it works by looking at the video below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--l1PRrlFG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/utrep8wqtf13k8j9yoa5.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--l1PRrlFG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/utrep8wqtf13k8j9yoa5.gif" alt="Monkey Writer Showcase" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;AI chat on the left is monitoring what you’re writing.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;You can ask it a question.&lt;/li&gt;
&lt;li&gt;You can tell it to do something.&lt;/li&gt;
&lt;li&gt;It always takes into account what you’ve already written.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The way I’m making money out of this product is by charging a monthly subscription fee.&lt;/p&gt;

&lt;p&gt;The amount varies based on the plan that the user picks.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hjw2EJEh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jb7ish5wdcjzu3413fb.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hjw2EJEh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/1jb7ish5wdcjzu3413fb.gif" alt="Monkey Writer Pricing" width="880" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;That’s all there is to it.&lt;/p&gt;

&lt;p&gt;In the next section, we’ll go more into technical depth.&lt;/p&gt;

&lt;p&gt;We'll see how ChatGPT can be integrated into pretty much anything.&lt;/p&gt;

&lt;h1&gt;
  
  
  How The Magic Behind This Works
&lt;/h1&gt;

&lt;p&gt;All you need is access to OpenAI API.&lt;/p&gt;

&lt;p&gt;Then, you'll do this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an account&lt;/li&gt;
&lt;li&gt;Request access to API&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;No need to worry, they give access to pretty much anyone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To explain what the Chat GPT API is, I crafted this masterpiece of a diagram.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x6IZG6-K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tb7d0s9xeyxwepmr3j9g.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x6IZG6-K--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tb7d0s9xeyxwepmr3j9g.jpg" alt="How Chat GPT API works" width="880" height="378"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The upper flow is how the majority of people are using ChatGPT.&lt;/p&gt;

&lt;p&gt;The bottom flow is how you can turn Chat GPT into passive income.&lt;/p&gt;

&lt;h1&gt;
  
  
  Build Your Own Product With ChatGPT
&lt;/h1&gt;

&lt;p&gt;The only missing piece is to build something that you can integrate ChatGPT into.&lt;/p&gt;

&lt;p&gt;This can be:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Website&lt;/li&gt;
&lt;li&gt;Mobile app&lt;/li&gt;
&lt;li&gt;Desktop app&lt;/li&gt;
&lt;li&gt;Any other software type&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you know how to code you can do the same thing I did, and build a product yourself.&lt;/p&gt;

&lt;p&gt;If you don’t know how to code, you have following options.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 1: Hire
&lt;/h2&gt;

&lt;p&gt;The best option for someone who has plenty of capital hidden under the mattress. Or in a bank for that matter.&lt;/p&gt;

&lt;p&gt;To hire good talent, I’d highly recommend &lt;a href="https://upwork.com/"&gt;Upwork&lt;/a&gt;. After all, that’s where I started my freelancing career.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 2: Partner Up
&lt;/h2&gt;

&lt;p&gt;If you don’t have a lot of money lying around, you can still outsource development work.&lt;/p&gt;

&lt;p&gt;You can do this by partnering up with developers on &lt;a href="https://www.indiehackers.com/"&gt;Indie Hackers&lt;/a&gt;.&lt;/p&gt;

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

&lt;p&gt;The important thing to note here is that you need to bring something to the table.&lt;/p&gt;

&lt;p&gt;Maybe you’re good at marketing, maybe you’re a designer, maybe you’re a killer at sales. Whatever it is, identify it, and mention it so people are interested in partnering up with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Option 3: Learn
&lt;/h2&gt;

&lt;p&gt;If you don’t have the money or any other asset, you still have the last option.&lt;/p&gt;

&lt;p&gt;You can learn to code and build the thing yourself.&lt;/p&gt;

&lt;h1&gt;
  
  
  Final Thought
&lt;/h1&gt;

&lt;p&gt;Starting to chase monthly recurring revenue was one of the smartest business decisions I have ever made.&lt;/p&gt;

&lt;p&gt;In this story, I shared the secrets I've gathered.&lt;/p&gt;

&lt;p&gt;So, what are you waiting for? Take action now and start building your own product.&lt;/p&gt;

&lt;p&gt;Trust me, it’s worth it!&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>saas</category>
      <category>business</category>
      <category>sidehustle</category>
    </item>
    <item>
      <title>I Built Copy.ai Clone Over the Weekend</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Tue, 28 Feb 2023 07:16:36 +0000</pubDate>
      <link>https://dev.to/codewithbernard/i-built-copyai-clone-over-the-weekend-53aj</link>
      <guid>https://dev.to/codewithbernard/i-built-copyai-clone-over-the-weekend-53aj</guid>
      <description>&lt;h4&gt;
  
  
  Achieving the Impossible in a Short Timeframe!
&lt;/h4&gt;

&lt;p&gt;Let me clear the air right from the start. This isn’t one of those videos when a guy builds a site that looks like another site (except it doesn’t work).&lt;/p&gt;

&lt;p&gt;This is the exact opposite.&lt;/p&gt;

&lt;p&gt;In this story, I’ll tell you how I build an AI writing tool, that works like Copy.ai. But it looks completely different. And if you don’t believe me, let me give you a bit of a spoiler.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7dSXTZo3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AL2Sl9OYnRlLpXXuFor3cpg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7dSXTZo3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AL2Sl9OYnRlLpXXuFor3cpg.gif" alt="" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;How my AI writing tools work&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;But first, let me explain why I did it.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I’m bullish on AI-generated content
&lt;/h3&gt;

&lt;p&gt;This may come as a big surprise coming from a Medium author, but I like AI writing tools. I think they can help a lot.&lt;/p&gt;

&lt;p&gt;They can automate a whole bunch of boring tasks.&lt;/p&gt;

&lt;p&gt;Coming up with headlines, writing emails, brainstorming ideas, etc. A good AI writing tool can help with all these tedious tasks.&lt;/p&gt;

&lt;p&gt;In my case, I’m trying to use AI writing for all my boring tasks, so I have more time to focus on writing that I truly enjoy — my Medium stories.&lt;/p&gt;

&lt;p&gt;Needless to say, AI writing tools are great when used correctly.&lt;/p&gt;

&lt;p&gt;But if you’re just blatantly generating a text, posting it on social media, and hoping to get your account to blow up, you’re barking at the wrong tree.&lt;/p&gt;

&lt;p&gt;AI can assist you in generating the content, but it won’t do it for you. At least not in a quality way.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I don’t like other AI writing tools
&lt;/h3&gt;

&lt;p&gt;Now that I express my “love” for these tools, let’s address the big question.&lt;/p&gt;

&lt;p&gt;Why did I decide to build my own? Why can’t I just pick one of the million AI writing tools out there?&lt;/p&gt;

&lt;p&gt;The truth is, I don’t like any of them. They’re either expensive as hell, or their user interface looks like my granda build it.&lt;/p&gt;

&lt;p&gt;That’s the reason I decided to build my own. Because of my frustration and pain points, I knew exactly what I wanted to build.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I wanted to:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Build a tool with a clean user interface.&lt;/li&gt;
&lt;li&gt;Build a tool that won’t bankrupt its users.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With these 2 things in mind, &lt;a href="https://monkeywriter.me/"&gt;Monkey Writer&lt;/a&gt; was born. Yes, that’s the silly name I chose for my tool.&lt;/p&gt;

&lt;h3&gt;
  
  
  How my tool works
&lt;/h3&gt;

&lt;p&gt;The main feature of Monkey Writer is the rich text editor.&lt;/p&gt;

&lt;p&gt;You can write and format your text like in any other editor. But on top of that, you have the left panel, which is packed with AI writing tools.&lt;/p&gt;

&lt;p&gt;If you get stuck on your writing, you just pick an AI tool of your choice, and the generated text appears in the editor.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7dSXTZo3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AL2Sl9OYnRlLpXXuFor3cpg.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7dSXTZo3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn-images-1.medium.com/max/1024/1%2AL2Sl9OYnRlLpXXuFor3cpg.gif" alt="" width="880" height="495"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;The magic behind my tool&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;As you can see, nothing fancy but it does the job quite nicely. Also, it does pretty much everything like other AI tools out there.&lt;/p&gt;

&lt;p&gt;And it only took me one week of work to build it.&lt;/p&gt;

&lt;h3&gt;
  
  
  How I Built It
&lt;/h3&gt;

&lt;p&gt;Let’s get technical now. In particular, let’s see how I was able to build this in just a couple of days.&lt;/p&gt;

&lt;p&gt;First of all, I’m a Web developer by trade. I’ve been doing this for many years now. So building another product was nothing new for me (This is a custom-coded website built using &lt;a href="https://nextjs.org/"&gt;NextJS&lt;/a&gt; and hosted on &lt;a href="https://vercel.com/"&gt;Vercel&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Second of all, &lt;a href="https://openai.com/"&gt;GPT&lt;/a&gt; is doing pretty much all the heavy lifting for me. All I needed to do was to build a nice clean interface. Which wasn’t so hard to do (for me).&lt;/p&gt;

&lt;p&gt;Lastly, I’ve been playing around with GPT models way before ChatGPT was even in the idea phase. So it’s safe for me to say I knew a thing or two about prompt engineering.&lt;/p&gt;

&lt;p&gt;When you combine these 3 things together, you got yourself an AI writing tool. It’s basically how all the other tools work. And as you can see, it’s not rocket science to build one.&lt;/p&gt;

&lt;h3&gt;
  
  
  Last Words
&lt;/h3&gt;

&lt;p&gt;The AI-generated text took over the world with the introduction of ChatGPT. I don’t think it’s just a craze. I think the AI content is here, and it’s here to stay.&lt;/p&gt;

&lt;p&gt;I don’t think it’s evil. But I think it can be when not used correctly and abused by people.&lt;/p&gt;

&lt;p&gt;That’s why you should always stick to your morals. And if you decide to use AI-generated content, always be clear and disclose it to your readers.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;PS: Let me know what you think about&lt;/em&gt;&lt;/strong&gt; &lt;a href="https://monkeywriter.me/"&gt;&lt;strong&gt;&lt;em&gt;my tool&lt;/em&gt;&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;&lt;em&gt;.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>programming</category>
      <category>gpt3</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Finding Your Ideal Customer Is Pain in the Ass</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Wed, 18 Jan 2023 13:11:30 +0000</pubDate>
      <link>https://dev.to/codewithbernard/finding-your-ideal-customer-is-pain-in-the-ass-57ik</link>
      <guid>https://dev.to/codewithbernard/finding-your-ideal-customer-is-pain-in-the-ass-57ik</guid>
      <description>&lt;p&gt;Couple of days ago, my product went viral on Reddit. &lt;/p&gt;

&lt;p&gt;It received over 50,000 views. And many people started bombarding me with messages.&lt;/p&gt;

&lt;p&gt;They wanted to try the product.&lt;/p&gt;

&lt;p&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%2Foxvih9cisi6f99fqvf50.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%2Foxvih9cisi6f99fqvf50.png" alt="Viral Reddit Post" width="800" height="469"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But despite all this buzz, I only got few sign ups and zero paying customers.&lt;/p&gt;

&lt;p&gt;Here are the reasons why!&lt;/p&gt;

&lt;h2&gt;
  
  
  The Product
&lt;/h2&gt;

&lt;p&gt;My product is still in the early stages. &lt;/p&gt;

&lt;p&gt;I only started working on it 7 days ago. And it only has one core feature.&lt;/p&gt;

&lt;p&gt;It's still a cool product, but it doesn't evoke a lot of trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Customer
&lt;/h2&gt;

&lt;p&gt;I got a lot of messages.&lt;/p&gt;

&lt;p&gt;People were interested. They wanted to test the product. But they didn't understand it.&lt;/p&gt;

&lt;p&gt;To put it as simply as I can, they didn't fit my customer profile. &lt;/p&gt;

&lt;p&gt;My product is beneficial for development teams, but I received messages mostly from solo developers learning their craft.&lt;/p&gt;

&lt;p&gt;They still wanted to try it out, but I could alredy see it won't help them in any way.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Only Thing That Matters
&lt;/h2&gt;

&lt;p&gt;At the end of the day, only one thing matters.&lt;/p&gt;

&lt;p&gt;Are you getting new customers?&lt;/p&gt;

&lt;p&gt;All the buzz around your product. All the virality. All the good comments.&lt;/p&gt;

&lt;p&gt;It's just a fluff. And it won't help you that much.&lt;/p&gt;

&lt;p&gt;From my Reddit post, I got a nice virality spike. But that was about it.&lt;/p&gt;

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

&lt;p&gt;Don't get me wrong. I'm still very glad for all the eyeballs I got.&lt;/p&gt;

&lt;p&gt;I received some nice feedback. And a lot of positive comments about my product.&lt;/p&gt;

&lt;p&gt;But the most important thing I learned is that Reddit might not be the best platform to find the customers for my product.&lt;/p&gt;

&lt;p&gt;And here's why.&lt;/p&gt;

&lt;p&gt;My product is &lt;a href="http://whisprai.com" rel="noopener noreferrer"&gt;AI code-review assistant&lt;/a&gt;. It helps software teams to run more effective code-reviews.&lt;/p&gt;

&lt;p&gt;But it's only beneficial for a team.&lt;/p&gt;

&lt;p&gt;In order to get a new customer, I need to get in front of someone who can make executive decision, and purchase this product for their team.&lt;/p&gt;

&lt;p&gt;And as it turned out, I didn't find these people on Reddit. At least not yet. &lt;/p&gt;

</description>
      <category>networking</category>
      <category>performance</category>
      <category>devops</category>
    </item>
    <item>
      <title>I Tested How Good Is ChatGPT When Describing Code</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Tue, 17 Jan 2023 16:09:08 +0000</pubDate>
      <link>https://dev.to/codewithbernard/i-tested-how-good-is-chatgpt-when-describing-code-ljf</link>
      <guid>https://dev.to/codewithbernard/i-tested-how-good-is-chatgpt-when-describing-code-ljf</guid>
      <description>&lt;p&gt;A bunch of people is now using ChatGPT to write the code for them.&lt;/p&gt;

&lt;p&gt;But I don't really care. I already know how to code.&lt;/p&gt;

&lt;p&gt;So what do I do? The exact opposite. I'm using ChatGPT to explain complex blocks of code to me.&lt;/p&gt;

&lt;p&gt;And today, I decided to push it to the limit. I decided to test Chat GPT and see how well it understands the code of various languages and complexities.&lt;/p&gt;

&lt;p&gt;Ready to see the results?&lt;/p&gt;

&lt;h2&gt;
  
  
  ChatGPT Explaining Complex Code
&lt;/h2&gt;

&lt;p&gt;Let's start from the easiest code snippet and work our way to the top.&lt;/p&gt;

&lt;p&gt;I started with a simple React component.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;useEffect&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;react&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;Props&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;initialCount&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;step&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kr"&gt;interface&lt;/span&gt; &lt;span class="nx"&gt;State&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kr"&gt;number&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;ComplexComponent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;React&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;FC&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;Props&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;initialCount&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;step&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="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;useState&lt;/span&gt;&lt;span class="o"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nx"&gt;State&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;initialCount&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;

  &lt;span class="nf"&gt;useEffect&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="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Count: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&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;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&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;handleIncrement&lt;/span&gt; &lt;span class="o"&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="nf"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prevState&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;prevState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;step&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;handleDecrement&lt;/span&gt; &lt;span class="o"&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="nf"&gt;setState&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;prevState&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;count&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;prevState&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;
    &lt;span class="p"&gt;}));&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Count: &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;state&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleIncrement&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Increment&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt; &lt;span class="na"&gt;onClick&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;handleDecrement&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;Decrement&lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;button&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="p"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="nt"&gt;div&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
  &lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nx"&gt;ComplexComponent&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Explanation by ChatGPT&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This code is a React functional component that takes in two props, &lt;code&gt;initialCount&lt;/code&gt; and &lt;code&gt;step&lt;/code&gt;, and uses the state hook &lt;code&gt;useState&lt;/code&gt; and the effect hook &lt;code&gt;useEffect&lt;/code&gt; to create a simple counter that increments and decrements based on the value of &lt;code&gt;step&lt;/code&gt; and updates the document title to show the current count.&lt;/p&gt;

&lt;p&gt;The component has two buttons, &lt;code&gt;Increment&lt;/code&gt; and &lt;code&gt;Decrement&lt;/code&gt;, which when clicked, will call the corresponding event handlers which will change the count state.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  MUI Input
&lt;/h3&gt;

&lt;p&gt;Let's step up our game a bit. Let's try to give it a source code for &lt;code&gt;Input&lt;/code&gt; component of the famous material UI library.&lt;/p&gt;

&lt;p&gt;The source code is quite big in size, around 400 lines of code.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Here's how ChatGPT explained it&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This code is a React functional component called &lt;code&gt;InputUnstyled&lt;/code&gt; that renders an input field and supports various props for customizing its behavior and appearance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Python One-liner
&lt;/h3&gt;

&lt;p&gt;So far, the model is doing qutie good. It can handle a lot of code. But can it also handle messy code?&lt;/p&gt;

&lt;p&gt;For example, let's take a look at the following code. I have no idea what's happenig there.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nf"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;))(&lt;/span&gt;&lt;span class="k"&gt;lambda&lt;/span&gt; &lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;fizz&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="ow"&gt;not&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;buzz&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="ow"&gt;or&lt;/span&gt; &lt;span class="nf"&gt;f&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;f&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;ChatGPT didn't even flinch&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This code is a lambda function that creates a recursive function that prints numbers from 1 to 100, but for multiples of 3 it will print "fizz" instead of the number and for multiples of 5 it will print "buzz" instead of the number.&lt;/p&gt;

&lt;p&gt;If the number is both a multiple of 3 and 5 it will print "fizzbuzz" instead of the number. The recursive function will call itself until n &amp;gt; 100, then it returns None.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Something Crazy Now
&lt;/h3&gt;

&lt;p&gt;Okay. So far, it's doing pretty good. But now, I wanted to try something crazy.&lt;/p&gt;

&lt;p&gt;I literally searched for crazy Github gists. And this is what I found.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;#!/usr/bin/env bash

${BASH_VERSION+shopt -s extglob lastpipe}

function doCompat {
    if [[ ${!KSH_VERSION} == .sh.version ]]; then
        builtin pids 2&amp;gt;/dev/null
        {
            eval function BASHPID.get "{ $(&amp;lt;/dev/fd/$(($? + 3))) || exit 1; }"
        } &amp;lt;&amp;lt;-"3" 3&amp;lt;&amp;amp;0- &amp;lt;&amp;lt;-\4 4&amp;lt;&amp;amp;0-
        .sh.value=$(pids -f '%(pid)d')
3
        read -r .sh.value _ &amp;lt;/proc/self/stat
4
    elif ! ${BASHPID+false}; then
        : # test for mksh or Bash
    else
        return 1
    fi
}

function let2 {
    typeset IFS=,
    printf %s $(($*))
    ((_))
}

function f {
    if [[ -p /dev/fd/0 ]]; then
        { (( $(&amp;lt;/dev/fd/0) )) &amp;amp;&amp;amp; f || return 1; } &amp;lt;&amp;lt;&amp;lt;"$(( $(&amp;lt;"$1") - 1 ))"
    elif [[ -f /dev/fd/0 ]]; then
        { let2 "$(&amp;lt;/dev/fd/0) - 1" || kill -"$BASHPID"; } | f || return 1
    else
        echo 'unexpected input. (shouldnt happen).' &amp;gt;&amp;amp;2
        return 1
    fi
}

function main {
    if doCompat; then
        if [[ $1 == +([[:digit:]]) ]]; then
            set -m
            f &amp;lt;&amp;lt;&amp;lt;"$1"
        else
            echo 'First arg must be a digit.' &amp;gt;&amp;amp;2
            exit 1
        fi
    else
        echo 'Requires Bash, A recent ksh93, or mksh &amp;gt;= R41' &amp;gt;&amp;amp;2
        exit 1
    fi
}

FUNCNEST=10
main "$@"

# vim: set fenc=utf-8 ff=unix ft=sh:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;As you might guess, ChatGPT didn't hesitated.&lt;/em&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This code is a Bash script which contains several functions, including the &lt;code&gt;doCompat&lt;/code&gt;, &lt;code&gt;let2&lt;/code&gt;, &lt;code&gt;f&lt;/code&gt; and &lt;code&gt;main&lt;/code&gt; functions.&lt;/p&gt;

&lt;p&gt;The script appears to check the type of shell that is running it and check for certain parameters passed to it. The script will exit with an error message if the shell is not compatible or if the first argument passed to it is not a digit.&lt;/p&gt;

&lt;p&gt;If the shell is compatible and the first argument is a digit, it will execute the function &lt;code&gt;f&lt;/code&gt; and pass the first argument to it. The function &lt;code&gt;f&lt;/code&gt; appears to do some operations on the input, such as decrementing it and read it from a file descriptor.&lt;/p&gt;

&lt;p&gt;The script also uses process ids, file descriptor and input/output redirection.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  I'm Not Surprised
&lt;/h2&gt;

&lt;p&gt;The power of AI is uncanny. It can write the code, but it can also help to understand the code.&lt;/p&gt;

&lt;p&gt;I'm not surprised how good it performed on these various examples. And it's because of the simple fact.&lt;/p&gt;

&lt;p&gt;I use GPT model to help me with code reviews each day.&lt;/p&gt;

&lt;p&gt;In fact, I built a GitHub bot that automatically writes helpful description so I can review the code much faster.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Frdrab06vb421oe9szylg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Frdrab06vb421oe9szylg.png" alt="AI Code Reviews"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In case you want to try it our yourself, here's &lt;a href="http://whisprai.com" rel="noopener noreferrer"&gt;the official website&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>codereview</category>
      <category>news</category>
    </item>
    <item>
      <title>ChatGPT Is Helping Me Do Code Reviews</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Wed, 11 Jan 2023 13:02:40 +0000</pubDate>
      <link>https://dev.to/codewithbernard/chatgpt-is-helping-me-do-code-reviews-3a0o</link>
      <guid>https://dev.to/codewithbernard/chatgpt-is-helping-me-do-code-reviews-3a0o</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Update&lt;/strong&gt;: Since the release of this post, I built the exact tool that I'm describing in this post. If you wish to try it out, you can do so by creating account on &lt;a href="http://whisprai.com" rel="noopener noreferrer"&gt;the official site&lt;/a&gt;. And now, back to the original post.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I have a confession to make.&lt;/p&gt;

&lt;p&gt;I'm not a big fan of doing code review. Especially not those big ones.&lt;/p&gt;

&lt;p&gt;But lately, I've had a great idea. The idea was to ask GPT model for help.&lt;/p&gt;

&lt;p&gt;And I can proudly say, the help I received.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F9xhmgk4rwnw45dqp7uje.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F9xhmgk4rwnw45dqp7uje.png" alt="Pull GPT helping me with code reviews"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My Problem With Code Reviews
&lt;/h2&gt;

&lt;p&gt;What I really hate about code reviews is looking at a completely new file with undocumented code.&lt;/p&gt;

&lt;p&gt;I have no idea what is going on there.&lt;/p&gt;

&lt;p&gt;And this is exactly where GPT model comes into play.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2Fzsynz2h9m1cevz02q56o.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2Fzsynz2h9m1cevz02q56o.png" alt="Pull GPT overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;I built a simple Github bot that do the following:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Analyze new pull requests&lt;/li&gt;
&lt;li&gt;Process newly added files&lt;/li&gt;
&lt;li&gt;Write brief description of the code&lt;/li&gt;
&lt;li&gt;Add description as a comment to pull request&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I tested this whole flow on one of my projects, and I was very satisfied with the result.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.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%2F19p3qpmmxpjhaa8wwouh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.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%2F19p3qpmmxpjhaa8wwouh.png" alt="Pull GPT in action"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Here's a brief description that the model wrote.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;This code is a React functional component that renders an affiliate ad using a combination of React hooks and DOM manipulation.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The component uses the &lt;code&gt;useAffiliateAssets&lt;/code&gt; hook to fetch assets for the ad, useMediaQuery to determine the device type, then it renders the ad using &lt;code&gt;ReactDOM.createPortal&lt;/code&gt; and inserting the ad before the heading variable in the HTML document.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If any of the required assets, heading, mediumBox or mediumLandscape are not available the component returns &lt;code&gt;null&lt;/code&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  My (Possible) Next Steps
&lt;/h2&gt;

&lt;p&gt;I just built the prototype together to prove that the concept is working.&lt;/p&gt;

&lt;p&gt;But I can't help to wonder.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is this something that could help the others?&lt;/li&gt;
&lt;li&gt;Should I build this into a fully-featured product?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I know this would be a really fun project to work on, but I'm not sure if the idea is valid.&lt;/p&gt;

&lt;p&gt;If you think it is, please let me know in the comments. If you think it's not, let me know as well.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>startup</category>
      <category>ai</category>
    </item>
    <item>
      <title>I’m Coding Side Projects to Become More Financially Free</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Mon, 09 Jan 2023 16:09:14 +0000</pubDate>
      <link>https://dev.to/codewithbernard/im-coding-side-projects-to-become-more-financially-free-bmj</link>
      <guid>https://dev.to/codewithbernard/im-coding-side-projects-to-become-more-financially-free-bmj</guid>
      <description>&lt;p&gt;Making money can be the toughest job.&lt;/p&gt;

&lt;p&gt;It takes a lot of our time to earn a buck. Once we earn it, we lose it to our “paymasters.” who force us to work for them for a living.&lt;/p&gt;

&lt;p&gt;I want to get out of that prison as soon as possible. My plan to di it is by coding side projects.&lt;/p&gt;

&lt;p&gt;Here are the ideas I’ve got going on.&lt;/p&gt;

&lt;h2&gt;
  
  
  A story about my powerful side project
&lt;/h2&gt;

&lt;p&gt;My side project that started it all was a simple blog.&lt;/p&gt;

&lt;p&gt;It took me three weeks to hack it together. When I did, I started creating content so I could get more users. I figured if I could get 5,000 people to see the blog, I’d be in a good spot.&lt;/p&gt;

&lt;p&gt;To my surprise, the blog got 10,000 users in 3 months. Then it climbed to 30,000 monthly users.&lt;/p&gt;

&lt;p&gt;The accumulation of users is one of the most valuable assets in the world.&lt;/p&gt;

&lt;p&gt;The biggest lesson for me is that the idea you think is good for a side project isn’t always the best idea. Often it’s the execution.&lt;/p&gt;

&lt;p&gt;What you think will be a success may not be. What you think is terrible may be the best idea of all.&lt;/p&gt;

&lt;h2&gt;
  
  
  The truth about side projects
&lt;/h2&gt;

&lt;p&gt;The truth about side projects is that you can’t suddenly expect millions of dollars to flood in and change your life.&lt;/p&gt;

&lt;p&gt;If you want to earn a side income, then you have to choose a side project based on your interests. Not all side projects will lead to a big payday. If you expect to make a decent income from a side project then it’s going to take a while.&lt;/p&gt;

&lt;p&gt;Most side projects, like the one I have, are tiny. My React blog, Upbeat Code, only makes a few hundred bucks a month. People look at Upbeat Code and think “that’s a terrible side project. Why are you wasting time on that?”&lt;/p&gt;

&lt;p&gt;The secret of a side project is you enjoy it, not investors or other people. Nobody’s opinion in the world matters. People don’t understand. That’s okay. They don’t need to.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you’re earning is a lie
&lt;/h2&gt;

&lt;p&gt;Your time is real money. I’m realizing this more and more in my life.&lt;/p&gt;

&lt;p&gt;A high salary is okay. But that same salary crammed into your calendar over 240 hours is a big problem. Time is more important than money.&lt;/p&gt;

&lt;p&gt;The calendars of my friends that earn good money are full. They’re heroes. They’re the people who make Twitter’s timeline such a nightmare to read.&lt;/p&gt;

&lt;p&gt;They’re so busy they can’t possibly fit in any more meetings or do any extra work. Those calendars are a symbol of our financial prison.&lt;/p&gt;

&lt;p&gt;Fewer meetings and more time to work on side projects may not increase your salary. But it will get you financially free faster. You only have a finite amount of time, so be careful how you allocate it.&lt;/p&gt;

&lt;p&gt;The more you take from your calendar the more financial freedom you’ll achieve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Time is real money
&lt;/h2&gt;

&lt;p&gt;None of us has enough time. We have to make time for everything we want in life.&lt;/p&gt;

&lt;p&gt;I’ve spent the last few years looking for ways to reprogram my mind. My aim is to spend the time I have on this planet doing what I love and to make money doing it.&lt;/p&gt;

&lt;p&gt;I’m tired of spending time on things I don’t truly enjoy or doing things that don’t align with my own values.&lt;/p&gt;

&lt;p&gt;Time is the most valuable thing we have.&lt;/p&gt;

&lt;p&gt;Learn to value your time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;A lot of programming folks are financially free. How do they get there?&lt;/p&gt;

&lt;p&gt;By coding. By building side projects.&lt;/p&gt;

&lt;p&gt;The side project route to financial freedom can lead to a multi-million dollar exit overnight. But even if it doesn’t, you’re still financially free. That’s the hidden truth that nobody talks about.&lt;/p&gt;

&lt;p&gt;Leave the corporate life behind and create your own future. It’s not that hard, but it takes time.&lt;/p&gt;

&lt;p&gt;P.S. You'll get there faster if you'll &lt;a href="https://bernardbad.medium.com/subscribe"&gt;read my Medium stories&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>programming</category>
      <category>motivation</category>
      <category>startup</category>
    </item>
    <item>
      <title>The Programming Language You Learn Doesn’t Matter That Much</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Fri, 06 Jan 2023 07:16:50 +0000</pubDate>
      <link>https://dev.to/codewithbernard/the-programming-language-you-learn-doesnt-matter-that-much-9aj</link>
      <guid>https://dev.to/codewithbernard/the-programming-language-you-learn-doesnt-matter-that-much-9aj</guid>
      <description>&lt;p&gt;&lt;a href="https://javascript.plainenglish.io/the-programming-language-you-learn-doesnt-matter-that-much-f5f5c8ed71d0?source=rss-b970c961c4e1------2" rel="noopener noreferrer"&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%2Ffcumuqrb7zfori06qk6w.jpeg" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It’s the side work you do that matters&lt;/p&gt;

&lt;p&gt;&lt;a href="https://javascript.plainenglish.io/the-programming-language-you-learn-doesnt-matter-that-much-f5f5c8ed71d0?source=rss-b970c961c4e1------2" rel="noopener noreferrer"&gt;Continue reading on JavaScript in Plain English »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>programminglanguages</category>
      <category>programming</category>
      <category>coding</category>
      <category>javascript</category>
    </item>
    <item>
      <title>My Simple Steps to Build Your Own Software Product</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Sun, 18 Dec 2022 10:38:24 +0000</pubDate>
      <link>https://dev.to/codewithbernard/my-simple-steps-to-build-your-own-software-product-44ed</link>
      <guid>https://dev.to/codewithbernard/my-simple-steps-to-build-your-own-software-product-44ed</guid>
      <description>&lt;p&gt;Building a software product sounded like a mythical fantasy.&lt;/p&gt;

&lt;p&gt;I thought it was for talented programmers who could code for days in a row without food or sleep.&lt;/p&gt;

&lt;p&gt;I was wrong!&lt;/p&gt;

&lt;p&gt;A software product can be built by the average creator. I know because I’ve done it multiple times.&lt;/p&gt;

&lt;p&gt;Now, I’m going to walk you through how to do it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Focus on a specific problem
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;If you build software for everyone, you probably won’t find anyone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Picking a problem your audience has is the best place to start.&lt;/p&gt;

&lt;p&gt;You can face 2 possibilities.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The problem was already solved by your competitor: In this case, try to see if you can differentiate somehow. Better user experience, better support, more affordable pricing?&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The problem is not solved yet: This is the ideal scenario. You’ve struck a motherload.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Build out a solution
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Khan Academy solves learning. Slack solves communication. Twitter solves news.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What does your product solve?&lt;/p&gt;

&lt;p&gt;Take your time to understand the problem. Then search for similar solutions.&lt;/p&gt;

&lt;p&gt;Dive into them, try them out, and try to understand how they made their product. Then ask yourself!&lt;/p&gt;

&lt;p&gt;What would you do differently? How could you make it better?&lt;/p&gt;

&lt;p&gt;Answer these questions and you’ll start to get an idea of how to solve a problem you found.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Build an audience
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;When you have a tribe, it becomes easier to not give up.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The audience is your tribe. It’s the community you build with common interests.&lt;/p&gt;

&lt;p&gt;An audience member will help you find bugs in your software. They‘ll ’give you the best feature requests. They will be the first to try out your product. An audience member will spread the word about your product.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the product solves a problem, the audience will buy into your vision.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Sell them the vision of your product. Or better yet, show them the vision of your product. Show them what it can do for them even if it doesn’t exist yet.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Build a product
&lt;/h2&gt;

&lt;p&gt;After you craft the idea, it’s time to make the product. This can be tough. The best software products are often the simplest.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--znVr-4Sn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0tcyrk2upgledbq1xbld.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--znVr-4Sn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0tcyrk2upgledbq1xbld.jpg" alt="Photo by Pablo Arroyo on Unsplash" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I launched my product with just one feature. I knew I’d add more features later but the first feature had to be good enough to kickstart my growth and give me the confidence to keep going.&lt;/p&gt;

&lt;p&gt;My product is called &lt;a href="https://github.com/marketplace/gitinerary"&gt;Gitinerary&lt;/a&gt;. It tracks the work of developers and creates real-time timeline reports.&lt;/p&gt;

&lt;p&gt;The most difficult part of building a software product is starting.&lt;/p&gt;

&lt;p&gt;Don’t overthink it, pick one feature, and just start.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Launch a product
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Build quickly, launch quicker.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Timing is everything with software products. And the best time to launch a software product is right now.&lt;/p&gt;

&lt;p&gt;I know people who have spent years working away on their products. And it makes me sick.&lt;/p&gt;

&lt;p&gt;They want a perfect working version of their idea that they can take to customers and get feedback. They’re also scared of someone stealing their idea.&lt;/p&gt;

&lt;p&gt;This is a big no-no for me.&lt;/p&gt;

&lt;p&gt;If you spend years building your product and then launch it and the market says “no thanks,” then you’ve wasted your time.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Make the product better
&lt;/h2&gt;

&lt;p&gt;Once you’ve launched and got some users, it’s time to make the product better.&lt;/p&gt;

&lt;p&gt;Don’t focus too much on getting more users. Focus on getting feedback, making the product better, and improving the user experience.&lt;/p&gt;

&lt;p&gt;When you make the product better you get more attention, more users, and more sales.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Figure out pricing
&lt;/h2&gt;

&lt;p&gt;The last part is to decide how much the product will cost. A good start for this is to look at your competitors and see how much they’re charging.&lt;/p&gt;

&lt;p&gt;I found from experience with ConvertKit and School of Code that pricing too low makes people assume the product is low quality. Pricing too high makes people think you’re greedy.&lt;/p&gt;

&lt;p&gt;Try to find a sweet spot. Test out your price with a small group of users first. Make sure they’re willing to pay what you’re asking. If they do, increase the price and see if they’re willing to pay more.&lt;/p&gt;

&lt;p&gt;Repeat this until you get into the sweet spot.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final Words
&lt;/h2&gt;

&lt;p&gt;Software products can help you escape a corporate job, build a second income and invest in yourself which leads to huge opportunities.&lt;/p&gt;

&lt;p&gt;The best part, it’s not rocket science. Make sure you’re focused on the problem you solve for others.&lt;/p&gt;

&lt;p&gt;That’s what makes a great software product.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://bernardbad.medium.com/subscribe"&gt;Subscribe&lt;/a&gt; to get more stories about building software.&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>showdev</category>
      <category>startup</category>
    </item>
    <item>
      <title>I Automated Daily Standups for Developers</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Thu, 08 Dec 2022 12:20:24 +0000</pubDate>
      <link>https://dev.to/codewithbernard/i-automated-daily-standups-for-developers-1oc8</link>
      <guid>https://dev.to/codewithbernard/i-automated-daily-standups-for-developers-1oc8</guid>
      <description>&lt;p&gt;It's time for a standup!&lt;/p&gt;

&lt;p&gt;These are the words that always put me in total panic mode.&lt;/p&gt;

&lt;p&gt;I don't even have to hear them. A simple calendar notification will make the waters boil in me.&lt;/p&gt;

&lt;p&gt;I have no idea what I've worked on yesterday. And I don't have the slightest idea what I'll be working on today. I just want to code in peace.&lt;/p&gt;

&lt;p&gt;To put it as simply as I can, I'm not a big fan of daily standup meetings.&lt;/p&gt;

&lt;p&gt;One day, I decided something about them. And that's the day when &lt;a href="https://github.com/marketplace/gitinerary" rel="noopener noreferrer"&gt;Gitinerary&lt;/a&gt; was born.&lt;/p&gt;

&lt;p&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%2F6kaj3w78kvmzaktcc8ww.gif" 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%2F6kaj3w78kvmzaktcc8ww.gif" alt="Gitinerary showcase" width="600" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How Gitinerary Works
&lt;/h2&gt;

&lt;p&gt;The tool itself is actually very simple.&lt;/p&gt;

&lt;p&gt;It listens to commit activity on the repo of your choice and displays a real-time report (the one you see in the example above).&lt;/p&gt;

&lt;p&gt;Later on, you can browse the report in chronological order and filter it by your team members to see if someone is slacking.&lt;br&gt;
To start using Gitinerary, all you have to do is add the app to your Github account or organization.&lt;/p&gt;

&lt;h2&gt;
  
  
  How Can Gitinerary Help
&lt;/h2&gt;

&lt;p&gt;The app is fairly simple. And we've already seen what it can do. &lt;/p&gt;

&lt;p&gt;But how can it actually help?&lt;/p&gt;

&lt;h3&gt;
  
  
  It helps to track progress
&lt;/h3&gt;

&lt;p&gt;By looking at the timeline, you can see how developers are progressing with their work. And by reading commit messages, you get a slight idea of what they're up to.&lt;/p&gt;

&lt;p&gt;No need to disturb them on Slack or Teams.&lt;/p&gt;

&lt;h3&gt;
  
  
  It helps to organize daily standups
&lt;/h3&gt;

&lt;p&gt;You can use the timeline of a given day as a foundation for your daily standups.&lt;/p&gt;

&lt;p&gt;You'll clearly see what was done by each developer. If there are some things that need discussion, you can do that. And if not, you can skip the daily altogether. &lt;/p&gt;

&lt;h3&gt;
  
  
  It helps to build a community
&lt;/h3&gt;

&lt;p&gt;This one is maybe out there. But I've seen many indie hackers building in public.&lt;/p&gt;

&lt;p&gt;With Gitinerary, you can take it one step further and share your timeline. Your customers will see how you're progressing, and maybe they'll feel more engaged.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I Built It
&lt;/h2&gt;

&lt;p&gt;It only took me 1 day to build a prototype.&lt;/p&gt;

&lt;p&gt;Half of that was trying to figure out how to plug into the GitHub ecosystem.&lt;/p&gt;

&lt;p&gt;But when I figured this out, the process was quite straightforward. &lt;/p&gt;

&lt;h3&gt;
  
  
  Creating GitHub App
&lt;/h3&gt;

&lt;p&gt;The first step was to create the GitHub app.&lt;/p&gt;

&lt;p&gt;The app will listen to the activity inside GitHub repositories.&lt;/p&gt;

&lt;p&gt;Whenever something happens, it stores it inside the database. Simple as that.&lt;/p&gt;

&lt;p&gt;I used Probot to build the app. And just followed the documentation to achieve what I needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  Showing Timeline
&lt;/h3&gt;

&lt;p&gt;The last step was to take the data and display it on the timeline.&lt;/p&gt;

&lt;p&gt;For this part, I used NextJS to build a full-stack web application.&lt;/p&gt;

&lt;p&gt;At this point, I'm very efficient with building interfaces. It only took me a couple of hours to build a simple landing page and the timeline page.&lt;/p&gt;

&lt;p&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%2Fakadipfb99t26ekbgkcg.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%2Fakadipfb99t26ekbgkcg.png" alt="Gitinerary timeline" width="800" height="455"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What's Next
&lt;/h2&gt;

&lt;p&gt;The app is up and running. But I bet you want to know what are the next plans.&lt;/p&gt;

&lt;p&gt;First of all, I want to see if people are interested in using the app.&lt;/p&gt;

&lt;p&gt;If they do, I'll start gathering feedback on how to improve the app. Add more features, fix bugs, and make the product better.&lt;br&gt;
I also submitted the app to the GitHub marketplace and waiting for the response.&lt;/p&gt;

&lt;h2&gt;
  
  
  Last Words
&lt;/h2&gt;

&lt;p&gt;As you can see, building a side project is not rocket science.&lt;/p&gt;

&lt;p&gt;And you don't have to spend months coding in your basement just to realize no one wants to use your product.&lt;/p&gt;

&lt;p&gt;It took me a couple of days to get the app into the state it is now. And that's mostly because I focused on 1 single feature. Making sure it works as it should.&lt;/p&gt;

&lt;p&gt;We'll see how we'll go from there. That's it for now.&lt;/p&gt;

&lt;p&gt;If you want to try the demo, you can do so by installing &lt;a href="https://github.com/marketplace/gitinerary" rel="noopener noreferrer"&gt;Gitinerary&lt;/a&gt;&lt;/p&gt;

</description>
      <category>watercooler</category>
    </item>
    <item>
      <title>My Colleague Got Fired for Drinking Out All the Coffee</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Mon, 21 Mar 2022 06:17:42 +0000</pubDate>
      <link>https://dev.to/codewithbernard/my-colleague-got-fired-for-drinking-out-all-the-coffee-4fkh</link>
      <guid>https://dev.to/codewithbernard/my-colleague-got-fired-for-drinking-out-all-the-coffee-4fkh</guid>
      <description>&lt;p&gt;&lt;a href="https://javascript.plainenglish.io/my-colleague-got-fired-for-drinking-out-all-the-coffee-1779d344880b?source=rss-b970c961c4e1------2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--87yeFyCG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2548/1%2A0VApwZHr3guL094Ajr2hXQ.png" alt="" width="880" height="473"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And I Was Watching It Happen From the First Row&lt;/p&gt;

&lt;p&gt;&lt;a href="https://javascript.plainenglish.io/my-colleague-got-fired-for-drinking-out-all-the-coffee-1779d344880b?source=rss-b970c961c4e1------2"&gt;Continue reading on JavaScript in Plain English »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>lifelessons</category>
      <category>workplace</category>
      <category>softwaredevelopment</category>
      <category>programming</category>
    </item>
    <item>
      <title>11 Funny Excuses That Programmers Use Daily</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Mon, 07 Mar 2022 07:16:06 +0000</pubDate>
      <link>https://dev.to/codewithbernard/11-funny-excuses-that-programmers-use-daily-35ic</link>
      <guid>https://dev.to/codewithbernard/11-funny-excuses-that-programmers-use-daily-35ic</guid>
      <description>&lt;p&gt;We’re All Guilty of These&lt;/p&gt;

&lt;p&gt;&lt;a href="https://javascript.plainenglish.io/11-funny-excuses-that-programmers-use-daily-e20e3ae16180?source=rss-b970c961c4e1------2"&gt;Continue reading on JavaScript in Plain English »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>softwaredevelopment</category>
      <category>webdev</category>
      <category>humor</category>
      <category>programming</category>
    </item>
    <item>
      <title>8 Habits to Become a Better Web Developer in 2022</title>
      <dc:creator>Bernard Bado</dc:creator>
      <pubDate>Mon, 24 Jan 2022 12:16:06 +0000</pubDate>
      <link>https://dev.to/codewithbernard/8-habits-to-become-a-better-web-developer-in-2022-2p3k</link>
      <guid>https://dev.to/codewithbernard/8-habits-to-become-a-better-web-developer-in-2022-2p3k</guid>
      <description>&lt;p&gt;&lt;a href="https://javascript.plainenglish.io/8-habits-to-become-a-better-web-developer-in-2022-9da49403b5a6?source=rss-b970c961c4e1------2"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nFZzSgUn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn-images-1.medium.com/max/2600/1%2AudTYeOSPMMwk6yhUQd2JVQ.jpeg" alt="" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;No. 1 — Be willing to adapt&lt;/p&gt;

&lt;p&gt;&lt;a href="https://javascript.plainenglish.io/8-habits-to-become-a-better-web-developer-in-2022-9da49403b5a6?source=rss-b970c961c4e1------2"&gt;Continue reading on JavaScript in Plain English »&lt;/a&gt;&lt;/p&gt;

</description>
      <category>coding</category>
      <category>softwaredevelopment</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
