<?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: Afrie Irham</title>
    <description>The latest articles on DEV Community by Afrie Irham (@afrieirham).</description>
    <link>https://dev.to/afrieirham</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%2F671457%2Fea90436a-2bbe-45b4-9a87-d16359842263.png</url>
      <title>DEV Community: Afrie Irham</title>
      <link>https://dev.to/afrieirham</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/afrieirham"/>
    <language>en</language>
    <item>
      <title>How to work with multiple git branches simultaneously.</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Sun, 21 Jan 2024 17:09:57 +0000</pubDate>
      <link>https://dev.to/afrieirham/how-to-work-with-multiple-git-branches-simultaneously-35mc</link>
      <guid>https://dev.to/afrieirham/how-to-work-with-multiple-git-branches-simultaneously-35mc</guid>
      <description>&lt;p&gt;If you've faced this situation before, you might want to learn this.&lt;/p&gt;




&lt;p&gt;You're working on feature A at your work and suddenly you got a ping on Slack.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Please fix this bug, it's causing a critical bug in production that needs fixing ASAP!!!"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You git stash whatever changes you have right now to make sure the working directory is clean, git checkout to the master branch, make the fix, and when you're done, you git stash pop to continue your work where you left off.&lt;/p&gt;

&lt;p&gt;Or worst, you git commit -m "WIP" because you don't know how to git stash. 🥲&lt;/p&gt;




&lt;p&gt;If you're perfectly happy with you current git workflow, you can stop reading here.&lt;/p&gt;

&lt;p&gt;But if you want to know a better way (hopefully) to work with multiple branches in git at the same time, continue reading.&lt;/p&gt;

&lt;h1&gt;
  
  
  Introducing Git Worktree.
&lt;/h1&gt;

&lt;p&gt;While stashing your changes and popping them back up is a perfectly valid way to temporarily save your progress (that's how I previously did it too), I'd argue there's a better way to handle it.&lt;/p&gt;

&lt;p&gt;Git worktree allows you to "spawn" a new branch that you can change, stage, and commit without ever needing to do a weird hack just to work with 2 branches at the same time.&lt;/p&gt;

&lt;p&gt;Git worktree has 3 commands&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git worktree list&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git worktree add &amp;lt;branch name&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;git worktree remove &amp;lt;branch name&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I think from the commands above, it's pretty self explanatory.&lt;/p&gt;

&lt;p&gt;Now let's imagine you're in the same situation described above.&lt;/p&gt;

&lt;p&gt;Knowing git worktree, you can now just run &lt;code&gt;git worktree add master&lt;/code&gt; to create a new branch in your current directory.&lt;/p&gt;

&lt;p&gt;💡&lt;/p&gt;

&lt;p&gt;Go ahead and try it on any of your code repository.&lt;/p&gt;

&lt;p&gt;You'll notice that there's a new folder called "master" in your root directory. When you &lt;code&gt;cd master&lt;/code&gt; into it in your terminal, you're now in the master branch of your same project, without ever leaving your feature branch.&lt;/p&gt;

&lt;p&gt;If you're on VS Code, you'll also notice that VS Code detects there's now 2 different branches running.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9eiCxwo1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1705855874396/f3110215-f4e6-45ed-b437-719aa6bb2997.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9eiCxwo1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1705855874396/f3110215-f4e6-45ed-b437-719aa6bb2997.png" alt="" width="694" height="520"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations, you are now working on 2 different branches of the same project at the same time.&lt;/p&gt;

&lt;p&gt;Feel free to spawn more branches as needed but make sure to delete them once you're down with it.&lt;/p&gt;

&lt;h1&gt;
  
  
  Some downsides.
&lt;/h1&gt;

&lt;p&gt;After using worktree for a while now for my work, there's 1 minor downside using git worktree that I want to highlight.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GtbYgaCp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1705856250625/fbc0dd38-cff3-40d2-90cd-a7931be65015.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GtbYgaCp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1705856250625/fbc0dd38-cff3-40d2-90cd-a7931be65015.png" alt="" width="800" height="515"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As you can see, when you want to search for a snippet, the result shows both the main directory and the "new" repo you've created.&lt;/p&gt;

&lt;p&gt;To solve this in VS Code, you can just exclude the "main" directory like this 👇&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--qfK6Ezrs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1705856446173/e5c60d9f-c33d-4f2d-b2d3-45e3b33c64a4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qfK6Ezrs--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1705856446173/e5c60d9f-c33d-4f2d-b2d3-45e3b33c64a4.png" alt="" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now the search only shows 1 result instead of 2.&lt;/p&gt;

&lt;p&gt;This is a pretty minor downside but it's something I figured I should point out.&lt;/p&gt;

&lt;p&gt;Other than that, I think git worktree is fun to use and work with and I think you should give it a try.&lt;/p&gt;

&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to get lucky, an rant from yours truly.</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Sun, 26 Nov 2023 14:36:07 +0000</pubDate>
      <link>https://dev.to/afrieirham/how-to-get-lucky-an-rant-from-yours-truly-36kn</link>
      <guid>https://dev.to/afrieirham/how-to-get-lucky-an-rant-from-yours-truly-36kn</guid>
      <description>&lt;p&gt;Before we start, please read the QRTs from both Edd and Mu'azh.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/okmuazh/status/1728647721727221845"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ju63dduX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1701009437590/6cf93f31-a684-40ee-b725-3b4f0e9d010b.png" alt="" width="800" height="625"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/thegrxyvibe/status/1728678498607550921"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eVRsZzK0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1701009520770/4d42d96e-266c-40c2-a998-6ac78fd0408a.png" alt="" width="800" height="695"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;They both have presented a great point about luck&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep working and grinding so that you're prepared to take advantage of luck when it comes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Me however, I'm here to share about &lt;em&gt;how&lt;/em&gt; to get lucky.&lt;/p&gt;

&lt;p&gt;Yes, luck is out of our control but we can increase the chance TO get lucky.&lt;/p&gt;

&lt;p&gt;I mean it's hard for luck to hit you when you're not doing anything.&lt;/p&gt;

&lt;p&gt;Imagine if you only stay at home for a year, only go out when necessary, and strictly within your neighbourhood.&lt;/p&gt;

&lt;p&gt;How do you think luck can happen if that's the only thing you did?&lt;/p&gt;

&lt;p&gt;Also, the amount of "lucky things" that can happen in your neighbourhood is very low.&lt;/p&gt;

&lt;p&gt;Yes it's possible for idk Justin Bieber to come to your house, it's very unlikely, but it's not impossible.&lt;/p&gt;

&lt;p&gt;(i have no better example so bear with me)&lt;/p&gt;

&lt;p&gt;It can happen tomorrow, or it can happen in the next 50 years, who knows.&lt;/p&gt;

&lt;p&gt;As long as he's still alive, the possibility is not 0.&lt;/p&gt;

&lt;p&gt;Now imagine you're always travelling, or you go to Justin Bieber's local area for vacation.&lt;/p&gt;

&lt;p&gt;You are more likely to meet him now.&lt;/p&gt;

&lt;p&gt;Yes you still can't guarantee you'll meet him but it is more likely and that's exactly what luck is.&lt;/p&gt;

&lt;p&gt;We can't control luck but we can increase the odds for lucky stuff to happen.&lt;/p&gt;

&lt;p&gt;I can endorse this myself, I've been active on social media (twitter, linkedin) since 2017.&lt;/p&gt;

&lt;p&gt;A lot of lucky things has happened to me because I'm "travelling the world" on the internet.&lt;/p&gt;

&lt;p&gt;I've got freelance gigs, fulltime jobs opportunities, workship mentorship opportunities, and more coming left and right.&lt;/p&gt;

&lt;p&gt;And I'd like to think those "lucky stuff" happens to me BECAUSE I've increase the odds.&lt;/p&gt;

&lt;p&gt;I'm not saying this to brag but I'm just trying to make a point.&lt;/p&gt;

&lt;p&gt;If I never shared anything here, never post a blog, never write a LinkedIn article, keep my heads down and just do my work, I don't think I'll get this lucky.&lt;/p&gt;

&lt;p&gt;If you were to take anything from this rant, please remember to do interesting stuff and share it.&lt;/p&gt;

&lt;p&gt;You'll never know who's watching.&lt;/p&gt;

&lt;p&gt;It could be your next employer, it could be your future co-founder, it could be someone that can help you to land a job, nobody knows.&lt;/p&gt;

&lt;p&gt;So if you're ever in doubt to share anything on social media, keep this in mind.&lt;/p&gt;

&lt;p&gt;You can't control luck but you can make yourself more lucky.&lt;/p&gt;

&lt;p&gt;You can also watch this video to better understand what I'm trying to say.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://youtu.be/WizT_VdtOYM?si=-1mFHGo4aOH43ZNW"&gt;https://youtu.be/WizT_VdtOYM?si=-1mFHGo4aOH43ZNW&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to remove passwords in PDF</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Tue, 18 Jul 2023 07:03:32 +0000</pubDate>
      <link>https://dev.to/afrieirham/how-to-remove-passwords-in-pdf-112l</link>
      <guid>https://dev.to/afrieirham/how-to-remove-passwords-in-pdf-112l</guid>
      <description>&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open the PDF file in Chromium-based browsers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Print as PDF&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://twitter.com/afrieirham_/status/1681196950715088897"&gt;https://twitter.com/afrieirham_/status/1681196950715088897&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>You should do more interviews.</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Tue, 04 Jul 2023 16:54:32 +0000</pubDate>
      <link>https://dev.to/afrieirham/you-should-do-more-interviews-3ee4</link>
      <guid>https://dev.to/afrieirham/you-should-do-more-interviews-3ee4</guid>
      <description>&lt;p&gt;If you're like me, you've probably heard this advice a lot, especially in the tech industry.&lt;/p&gt;

&lt;p&gt;"Go do more interviews, &lt;del&gt;even&lt;/del&gt; especially if you're not actively looking."&lt;/p&gt;

&lt;p&gt;And they're right, here's why.&lt;/p&gt;

&lt;p&gt;You have higher leverage in negotiation when you're not desperate. You'll be more confident and can take up more risks.&lt;/p&gt;

&lt;p&gt;Maybe you've been dreaming about working in a remote team, but you never had the chance to discuss it and now you're stuck in an office job.&lt;/p&gt;

&lt;p&gt;Maybe you want to try new things. You've always wanted to learn more about crypto or even AI. And now you see companies involved in those industries are hiring.&lt;/p&gt;

&lt;p&gt;Or maybe you're wondering what's the true value of your work, what's the upper ceiling? You've negotiated your offer but you were playing it safe and didn't ask enough. Now you won't know how much more you could've made.&lt;/p&gt;

&lt;p&gt;And understandably, you didn't do anything about it. You like the idea of making more money (duh) or working in a remote team, but it seems like a hassle. You still remember how miserable it was when you were trying to land your current job.&lt;/p&gt;

&lt;p&gt;Plus your current job is decent enough. It's not your dream job but it's getting food on the table and you're comfortable there.&lt;/p&gt;

&lt;p&gt;But if you're curious to see and wanna try to go for more interviews, keep on reading.&lt;/p&gt;

&lt;p&gt;First of all.&lt;/p&gt;

&lt;h1&gt;
  
  
  Be clear on why you're doing interviews.
&lt;/h1&gt;

&lt;p&gt;If you're happy at your current job, it might be difficult to figure out why you want to go for interviews.&lt;/p&gt;

&lt;p&gt;I mean, you're happy with the money you're making, your boss is amazing, the benefits are great, and you're learning and growing a lot, so why are you going for interviews?&lt;/p&gt;

&lt;p&gt;Well, things could always be better. You'll never know what's out there unless you look for it.&lt;/p&gt;

&lt;p&gt;And that is precisely the answer &lt;strong&gt;you want to see what's out there.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sure things are great now, but what if somewhere out there, you could be making double your salary, significantly better work-life balance, have an equally amazing boss, and you can work remotely?&lt;/p&gt;

&lt;p&gt;Sounds fantastic right?&lt;/p&gt;

&lt;p&gt;Sure, the grass seems to be always greener on the other side. But what if it is greener?&lt;/p&gt;

&lt;p&gt;You think it's too good to be true but what if it's true? What if you're one interview away to find that opportunity? Well, you'll never know unless you go look for it.&lt;/p&gt;

&lt;p&gt;So go ahead, apply for that job, you're just browsing anyways.&lt;/p&gt;

&lt;p&gt;You're not gonna accept the offers if it's just &lt;em&gt;slightly better&lt;/em&gt;. It's not worth the time and effort. You're already content at your current workplace.&lt;/p&gt;

&lt;p&gt;However, you need to remember.&lt;/p&gt;

&lt;h1&gt;
  
  
  Honesty is key.
&lt;/h1&gt;

&lt;p&gt;Being honest is by far the most important thing here. If you're applying for jobs to explore what's out there, you can't pretend to be super committed as if you're planning to move.&lt;/p&gt;

&lt;p&gt;Just imagine you're in the recruiter's shoes. You've spent weeks, potentially months, interviewing candidates just for them to say that they're not actually looking to move at the last minute.&lt;/p&gt;

&lt;p&gt;Wouldn't you be angry?&lt;/p&gt;

&lt;p&gt;Candidate sourcing is hard. Conducting interviews is hard. Don't make it harder on them by not being upfront.&lt;/p&gt;

&lt;p&gt;At best, you could get away from it because they didn't bother enough to call you out.&lt;/p&gt;

&lt;p&gt;At worst, you just burned a bridge. That's the last thing you want. It's the exact opposite of what you want.&lt;/p&gt;

&lt;p&gt;Going for interviews to learn more about the opportunities is a good thing but you need to be transparent about it.&lt;/p&gt;

&lt;p&gt;And you need to understand that being transparent does not mean that you are entitled to that interview.&lt;/p&gt;

&lt;p&gt;Employers have as much right as you are to withdraw from any interview.&lt;/p&gt;

&lt;p&gt;Would you still go for the interview if the recruiter said they are not interested in hiring and they don't have any open vacancies? Instead, they just want to help their HR to polish their recruiting skills and stay up to date with the talent market.&lt;/p&gt;

&lt;p&gt;You probably won't do it. It's a waste of time. Right?&lt;/p&gt;

&lt;h1&gt;
  
  
  Unless...
&lt;/h1&gt;

&lt;p&gt;What if the recruiter is from a &lt;a href="https://www.fastcompany.com/90790394/what-are-the-faang-companies#:~:text=FAANG%20refers%20to%20Meta%20(formerly%20Facebook)%2C%20Apple%2C%20Amazon%2C%20Netflix%2C%20and%20Alphabet%20(Google)."&gt;FAANG&lt;/a&gt; company? (Or your dream company if FAANG is not your thing.)&lt;/p&gt;

&lt;p&gt;That will change things up, probably.&lt;/p&gt;

&lt;p&gt;If it were me, I would &lt;del&gt;kill&lt;/del&gt; pay to get on that interview so I can get my foot in the door.&lt;/p&gt;

&lt;p&gt;I'll learn so much even if I failed the interview. Plus, I've just expanded my connections with someone from my dream company.&lt;/p&gt;

&lt;p&gt;Sure they are not hiring right now, but who's to say they won't be hiring for a long time?&lt;/p&gt;

&lt;p&gt;They might have some openings a few months from now and if I aced the interview and be on top of their mind, they might approach me directly.&lt;/p&gt;

&lt;p&gt;That is highly possible because they know me already, I've done their assessment and they think I'm good enough before. It was just not the right time.&lt;/p&gt;

&lt;p&gt;I can also get in touch with them again if I'm at the stage where I'm actively looking. Getting referrals from people is highly valuable right now. &lt;a href="https://erinapp.com/blog/employee-referral-statistics-you-need-to-know-for-2023-infographic/#:~:text=Employee%20Referrals%20are%C2%A05x%C2%A0more%20likely%20to%20be%20hired."&gt;Employee referrals are 5x more likely to be hired&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;While you may think you're not planning to move from your current job anytime soon, it's a good idea to build up for referral network while you're there.&lt;/p&gt;

&lt;p&gt;If you're still not convinced, go watch this video after you finish reading this. He does a better job of explaining the current job market in 2023.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Kte-t1pQQ3I"&gt;https://www.youtube.com/watch?v=Kte-t1pQQ3I&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Shameless plug. If you're from Malaysia, feel free to visit &lt;a href="https://CariKabel.com"&gt;CariKabel.com&lt;/a&gt; to get access to referrers' emails from 40+ companies.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Reality.
&lt;/h1&gt;

&lt;p&gt;Being loyal and putting your trust 100% in your current company is commendable, but your job might not be as safe as you think.&lt;/p&gt;

&lt;p&gt;You've probably read the news about companies doing layoffs right now, even companies like Google and Facebook.&lt;/p&gt;

&lt;p&gt;Have a look at this report by TechCrunch "&lt;a href="https://techcrunch.com/2023/06/29/tech-industry-layoffs-2023/"&gt;&lt;strong&gt;A comprehensive list of 2023 tech layoffs&lt;/strong&gt;&lt;/a&gt; &lt;strong&gt;"&lt;/strong&gt;. More than 188,000+ employees have been laid off this year (2023) alone. What makes you think you are safe from being the statistics?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R76U3q9f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1688299411785/fd044517-435a-4a84-bf42-9ec15e74b5ec.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R76U3q9f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1688299411785/fd044517-435a-4a84-bf42-9ec15e74b5ec.png" alt="" width="800" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Look, companies would not hesitate to lay you off if they find out that layoffs would make them more profitable. So you need to be ready for that and take care of yourself.&lt;/p&gt;

&lt;p&gt;You're not "cheating" when you go for interviews, it's just business. Don't feel like you're doing something wrong by taking care of yourself. If you feel that way, your employer probably told you that and you need to get rid of that belief ASAP.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;To recap, going for interviews while having a job is a great way to do it better.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;You're not desperate for jobs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You can take more risks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;You might find better opportunities.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It's generally good for your career.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But you need to do it properly. You'll risk burning down bridges if it went wrong. So remember:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Be clear on why you're doing interviews.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Honesty is key.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Getting a new job is a bonus, networking and exploring is the goal.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Your job is not as &lt;em&gt;safe&lt;/em&gt; as you might think.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;I hope you have a clearer understanding of why and how to do interviews while having a job.&lt;/p&gt;

&lt;p&gt;The next step is to go on LinkedIn and just have a look, something might catch your eye.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Stop listening to your parents.</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Sat, 10 Jun 2023 16:55:51 +0000</pubDate>
      <link>https://dev.to/afrieirham/stop-listening-to-your-parents-2009</link>
      <guid>https://dev.to/afrieirham/stop-listening-to-your-parents-2009</guid>
      <description>&lt;p&gt;Clickbaity title? Yes.&lt;/p&gt;

&lt;p&gt;But hear me out.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Your parents are not perfect.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;They're humans, they make mistakes, they have biases.&lt;/p&gt;

&lt;p&gt;For context, I'm writing this because I just experience some "unsolicited advice" after I told them about me going to the gym.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"...whatever you do, don't take steroids, and don't take (powdered) protein."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;When I heard "steroids", I laughed a bit. I was like "duhh?", don't worry, I'll never do that.&lt;/p&gt;

&lt;p&gt;But the second one about protein, is the reason why I'm writing this.&lt;/p&gt;

&lt;p&gt;While I have no intentions of consuming powdered protein, as per my parent's advice, (if my parents reading this, don't worry 🤧) it did "trigger" me a bit.&lt;/p&gt;

&lt;p&gt;I don't think there's anything wrong with proteins, I have seen a lot of people including my friends take those and are doing fine.&lt;/p&gt;

&lt;p&gt;But that's when I realized, that was &lt;em&gt;my&lt;/em&gt; experience and that's why &lt;em&gt;I&lt;/em&gt; have those pov.&lt;/p&gt;

&lt;p&gt;My parents might come from a different place. They might've saw other people take protein and ruin their bodies. They might've read or heard somewhere about how powdered protein is bad for us. Or they simply are confused and thought that powdered protein &lt;em&gt;is&lt;/em&gt; steroids.&lt;/p&gt;

&lt;p&gt;At the end of the day, the advice itself comes from a good place. They want the best for me.&lt;/p&gt;

&lt;p&gt;But their experiences might be different from ours. Thus the radical-sounding advice from my pov.&lt;/p&gt;




&lt;p&gt;That wasn't the only case though. There was a time when I was talking about financial stuff with my dad and he straight up said "don't take loans to invest (with ASBF)".&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;For those who don't know, ASBF is an investment instrument in Malaysia where we took a loan from banks and use that money to invest.&lt;/p&gt;

&lt;p&gt;I know it sounds super fishy especially if you're not Malaysian but I assure you it's legit. It's one thing unique about Malaysia.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And that really raised my eyebrows after hearing that.&lt;/p&gt;

&lt;p&gt;While I don't claim myself as a financial guru whatsoever, I have done my research about it and as always those instruments aren't inherently &lt;em&gt;bad&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;It depends on your financial goals, risk appetite, financial situation and so on if you're thinking about doing it as do everything else.&lt;/p&gt;

&lt;p&gt;But hearing my dad forbid me from even thinking about taking it is something that really puts me off.&lt;/p&gt;

&lt;p&gt;So I asked why.&lt;/p&gt;

&lt;p&gt;And he said "I've seen your uncle who's done that, stops halfway, and has lost a lot of money. I don't think it's something you should consider doing at all."&lt;/p&gt;

&lt;p&gt;And again that's when I realized our experiences are different which causes our opinion of it to be very different.&lt;/p&gt;

&lt;p&gt;And again, the same thing about where those bits of advice are coming from, it's from a good place.&lt;/p&gt;

&lt;p&gt;My dad probably doesn't want to see me lose tons of money trying out risky "investments" that have been proven wrong time and time again, at least from his pov.&lt;/p&gt;




&lt;p&gt;So look, I'm not saying you should ignore everything that your parents are saying. I'm just saying you should be wary of where it's coming from and understand why it is that way.&lt;/p&gt;

&lt;p&gt;Because not everything your parents say is 100% correct.&lt;/p&gt;

&lt;p&gt;Sometimes the things they don't want you to do can be good for you.&lt;/p&gt;

&lt;p&gt;They might be wrong, they might be right.&lt;/p&gt;

&lt;p&gt;You as an adult should be able to evaluate it yourself and if you're not sure whether you're right or wrong be curious.&lt;/p&gt;

&lt;p&gt;You can ask your parents why they think of it that way, then you can re-evaluate your thoughts on it again until you are satisfied.&lt;/p&gt;

&lt;p&gt;You can also just "test it out".&lt;/p&gt;

&lt;p&gt;Say for example I'm not sure if taking steroids is good or bad for me (read: it's bad). I can simply try it out to see whether I'm right or not.&lt;/p&gt;

&lt;p&gt;If I'm right then great.&lt;/p&gt;

&lt;p&gt;If I'm wrong...that's great too.&lt;/p&gt;

&lt;p&gt;You just need to be prepared to hear "I told you so" if you're wrong though, haha.&lt;/p&gt;

&lt;p&gt;In both cases, I learned something new.&lt;/p&gt;

&lt;p&gt;Now, before you think "testing it out" is irresponsible, you should remember that you should only "test" stuff out if you're not sure whether it's right or wrong.&lt;/p&gt;

&lt;p&gt;...after you've done your research.&lt;/p&gt;

&lt;p&gt;If you know something is obviously wrong, then don't do it.&lt;/p&gt;

&lt;p&gt;If you're not sure but a lot of evidence is pointing towards "you're wrong", don't do it.&lt;/p&gt;

&lt;p&gt;You should only "test" out stuff you're not sure about, and the goal is to get answers.&lt;/p&gt;

&lt;p&gt;If you know or see a lot of evidence suggesting it's wrong and you still want to do it that is irresponsible.&lt;/p&gt;

&lt;p&gt;Also, when you're testing out stuff and turns out you're wrong and really bad stuff happen, don't feel bad.&lt;/p&gt;

&lt;p&gt;You're not intentionally trying to harm anyone, you're just curious and trying to learn. I think you should be proud of it.&lt;/p&gt;

&lt;p&gt;So yeah, don't listen to your parents' advice blindly, be curious, question it, and then make your own conclusions.&lt;/p&gt;




&lt;p&gt;And oh, this article is not just about advice from parents, it could be from anyone, about anything.&lt;/p&gt;

&lt;p&gt;Including this very article, try to understand where my advice coming from, and do your own research.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How To Squash Commits Locally</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Fri, 26 May 2023 07:05:52 +0000</pubDate>
      <link>https://dev.to/afrieirham/how-to-squash-commits-locally-4235</link>
      <guid>https://dev.to/afrieirham/how-to-squash-commits-locally-4235</guid>
      <description>&lt;p&gt;If you're like me, you're probably familiar with "squash and merge" when merging pull requests on GitHub.&lt;/p&gt;

&lt;p&gt;If you're also like me, you're now trying to figure out how to do this seemingly simple "squash and merge" thingy locally for some reason.&lt;/p&gt;

&lt;p&gt;Whether you've been asked to do it because that's how your team has done it (read: my team) or you're curious how to do it just to learn you've come to the right place.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Mechanism
&lt;/h1&gt;

&lt;p&gt;The main idea of squashing your commits is you need to reset or undo your commits until the very last one you want to squash. Then just git commit again.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. Reset to your last N commit&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Where, N = number of commits you want to squash&lt;/p&gt;

&lt;p&gt;For example, if you have 3 commits that you want to squash, you can simply &lt;code&gt;git reset --soft HEAD~3&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;IMPORTANT&lt;/strong&gt; : make sure it's a *&lt;em&gt;soft*&lt;/em&gt; reset by using the &lt;code&gt;--soft&lt;/code&gt; flag.&lt;/p&gt;

&lt;p&gt;Otherwise, you will lose all of your progress. We don't want that.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Re-commit&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This is pretty straightforward, just &lt;code&gt;git commit -m ...&lt;/code&gt;&lt;/p&gt;




&lt;p&gt;And that's it, it's pretty simple when you know now but it was quite confusing if you're used to the 1-click squash and merge button on GitHub.&lt;/p&gt;

&lt;p&gt;At least that was the case for me. 🥲&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Understanding useEffect and dependencies array in React</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Wed, 24 May 2023 08:51:31 +0000</pubDate>
      <link>https://dev.to/afrieirham/understanding-useeffect-and-dependencies-array-in-react-59lj</link>
      <guid>https://dev.to/afrieirham/understanding-useeffect-and-dependencies-array-in-react-59lj</guid>
      <description>&lt;p&gt;I made a simple react app in CodeSandbox to demonstrate the different usage of &lt;code&gt;useEffect&lt;/code&gt; below.&lt;/p&gt;

&lt;p&gt;Note that the app is using Chakra UI for styling but it's not relevant in this article.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://codesandbox.io/s/useeffect-demo-lgi9b8"&gt;https://codesandbox.io/s/useeffect-demo-lgi9b8&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The app can do 3 things.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Change the color of the background with the "Change Background" button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Increment or decrement the number by using the +/- button.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Change the text color of "Hello" using the "Change Hello" button.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The app has 3 states using &lt;code&gt;useState&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;number&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;bg (store background color)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;color (store text color for "hello")&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now let's get into the demonstration.&lt;/p&gt;

&lt;h1&gt;
  
  
  1. &lt;code&gt;useEffect&lt;/code&gt; without dependency array
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;If you uncomment the first useEffect, you can see that the number is getting bigger and bigger infinitely.&lt;/p&gt;

&lt;p&gt;That's because useEffect without dependency array runs on every render.&lt;/p&gt;

&lt;p&gt;Let me show you what happens here chronologically.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The app renders and initialize the &lt;code&gt;number&lt;/code&gt; with the value of 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;useEffect&lt;/code&gt; will run the code &lt;code&gt;setNumber(number + 10)&lt;/code&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;This will then trigger the component to re-render since we've updated the state of this component the &lt;code&gt;number&lt;/code&gt; state.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;And when the component re-renders, useEffect will run again, and we're back at step 2.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So useEffect with no dependency arrays will run on every render.&lt;/p&gt;

&lt;h1&gt;
  
  
  2. &lt;code&gt;useEffect&lt;/code&gt; with empty dependency array.
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now let's comment the first useEffect and uncomment the second one.&lt;/p&gt;

&lt;p&gt;Notice how the number is now 11 instead of infinitely getting bigger.&lt;/p&gt;

&lt;p&gt;This is because when &lt;code&gt;useEffect&lt;/code&gt; is declared with an empty dependency array, it will only run once which is during the first render.&lt;/p&gt;

&lt;p&gt;You can click on the other button to see what happens.&lt;/p&gt;

&lt;p&gt;The number will only change if you click on the +/- button only. &lt;code&gt;Change Background&lt;/code&gt; and &lt;code&gt;Change Hello&lt;/code&gt; does nothing to the number.&lt;/p&gt;

&lt;p&gt;Chronologically what happens is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;The app renders and initialize the &lt;code&gt;number&lt;/code&gt; with the value of 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;useEffect&lt;/code&gt; will run the code &lt;code&gt;setNumber(number + 10)&lt;/code&gt;, which makes the number 11 now.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;At this point, the component does re-render but &lt;code&gt;useEffect&lt;/code&gt; does not run on the second render because of the dependency array.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Remember: &lt;strong&gt;useEffect with an empty dependency array will only run on the first render.&lt;/strong&gt;&lt;/p&gt;

&lt;h1&gt;
  
  
  3. &lt;code&gt;useEffect&lt;/code&gt; with 1 variable in the dependency array.
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&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;bg&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Now if you add &lt;code&gt;bg&lt;/code&gt; into that dependency array, the same thing will happen as before.&lt;/p&gt;

&lt;p&gt;But now if you click on the &lt;code&gt;Change Background&lt;/code&gt; button, the background color will change but so does the number.&lt;/p&gt;

&lt;p&gt;And notice that the number is incremented by 10, not by 1.&lt;/p&gt;

&lt;p&gt;What happens here is the &lt;code&gt;useEffect&lt;/code&gt; will run just like how it was when the array was empty.&lt;/p&gt;

&lt;p&gt;But when you add &lt;code&gt;bg&lt;/code&gt; into the array, it will also run whenever you update the value of &lt;code&gt;bg&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;It's like the &lt;code&gt;useEffect&lt;/code&gt; is listening to the value of &lt;code&gt;bg&lt;/code&gt; for any changes, and if it's updated, it will run the code.&lt;/p&gt;

&lt;h1&gt;
  
  
  4. &lt;code&gt;useEffect&lt;/code&gt; with 2 (or more) variables in the dependencies array.
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&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;bg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;Again, on the first render, it will be the same as the 2nd and the 3rd case.&lt;/p&gt;

&lt;p&gt;Also, if you click on the &lt;code&gt;Change Background&lt;/code&gt; button, same behavior is still there.&lt;/p&gt;

&lt;p&gt;The difference now is the number will also be incremented if you click on the &lt;code&gt;Change Hello&lt;/code&gt; button.&lt;/p&gt;

&lt;p&gt;At this point, I think you'll understand why that is the case.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;useEffect&lt;/code&gt; here still listen for changes in the value of &lt;code&gt;bg&lt;/code&gt; but it also listens for &lt;code&gt;color&lt;/code&gt; now.&lt;/p&gt;

&lt;p&gt;That is why when you click on the &lt;code&gt;Change Hello&lt;/code&gt;, the number is added by 10. Same reason as the previous case.&lt;/p&gt;

&lt;p&gt;You can also try to remove &lt;code&gt;bg&lt;/code&gt; in the array and see what happens.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I hope now you understand how &lt;code&gt;useEffect&lt;/code&gt; and dependencies array works.&lt;/p&gt;

&lt;p&gt;To summarize&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// runs on every render&lt;/span&gt;
&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// run once (only on the first render)&lt;/span&gt;
&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&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="c1"&gt;// runs on first render and anytime value of bg is updated&lt;/span&gt;
&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&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;bg&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

&lt;span class="c1"&gt;// runs on first render and anytime value of bg and color is updated&lt;/span&gt;
&lt;span class="nx"&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="nx"&gt;setNumber&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;number&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;10&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;bg&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;

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

&lt;/div&gt;



</description>
    </item>
    <item>
      <title>You can't out-market a bad product to grow.</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Mon, 22 May 2023 14:19:28 +0000</pubDate>
      <link>https://dev.to/afrieirham/you-cant-out-market-a-bad-product-to-grow-11jk</link>
      <guid>https://dev.to/afrieirham/you-cant-out-market-a-bad-product-to-grow-11jk</guid>
      <description>&lt;p&gt;When thinking about marketing your product you need to make sure what you're selling is valuable. Your product needs to actually deliver its promises.&lt;/p&gt;

&lt;p&gt;I am currently thinking of a way to better market one of my product, CariKabel.com, and the best way to do marketing is to show proof that your product do indeed helps people achieve their goals.&lt;/p&gt;

&lt;p&gt;But CariKabel has yet to have any success stories that I can use for my marketing.&lt;/p&gt;

&lt;p&gt;That is when I realized I'm not comfortable just selling a "dream".&lt;/p&gt;

&lt;p&gt;A dream is what it &lt;em&gt;can&lt;/em&gt; do vs what it &lt;em&gt;has&lt;/em&gt; achieved it's not tangible.&lt;/p&gt;




&lt;p&gt;Yes, you could get sales selling a bad product and have some "success", but I don't think it's sustainable.&lt;/p&gt;

&lt;p&gt;You probably should be thinking about your product's impact on your customers if you want a sustainable business.&lt;/p&gt;

&lt;p&gt;CariKabel's main goal is to help job seekers have a better job-hunting experience vs the traditional way by giving you access to the referrer's email of the people in the company that you're interested in.&lt;/p&gt;

&lt;p&gt;For example, if you want to work for Hashnode.&lt;/p&gt;

&lt;p&gt;You would probably have a higher chance of getting called for an interview being referred by someone working there vs applying directly through their job portal.&lt;/p&gt;

&lt;p&gt;At least that's the idea that's CariKabel's "dream".&lt;/p&gt;

&lt;p&gt;But until I can prove that is what's happening, it's really hard for me to spend more time and money marketing it without any success stories.&lt;/p&gt;

&lt;p&gt;Plus I'll feel a lot better selling stuff that helps people. I won't be thinking about weird marketing tactics to get customers to compensate for a bad product.&lt;/p&gt;

&lt;p&gt;However, you can't get any success stories without customers. So you'll still need marketing to start.&lt;/p&gt;

&lt;p&gt;But after getting your first few customers, the next step is to get testimonies.&lt;/p&gt;

&lt;p&gt;Then you can think about scaling.&lt;/p&gt;

&lt;p&gt;I mean it makes more sense that way:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Get the first few customers&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;See if they achieve what you're promising using your product&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If yes, you can use their stories/testimonies to reach more people&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If not then maybe your product does not make sense, or you need to change something about it&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;So yeah, that is why I said you can't out-market a bad product. You'll eventually fail even if it seems you're doing great (i.e. sales are high in the beginning).&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to integrate mailchimp with React</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Wed, 24 Aug 2022 04:38:09 +0000</pubDate>
      <link>https://dev.to/afrieirham/how-to-integrate-mailchimp-with-react-515n</link>
      <guid>https://dev.to/afrieirham/how-to-integrate-mailchimp-with-react-515n</guid>
      <description>&lt;p&gt;I hope I make it clear enough what this article is all about based on the title. But to add on the title a little more, this article will work with any frontend JavaScript framework.&lt;/p&gt;

&lt;p&gt;If you ever find yourself in the same position as me, ie. you want to use mailchimp to collect email and you want to connect it to a custom frontend project, this article will be useful to you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note that I will be using React in this article as an example, but this should work with any JavaScript project.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you want to have a look at my implementation, this is the &lt;a href="https://github.com/afrieirham/react-mailchimp"&gt;source code&lt;/a&gt;. Also, this article will assume that you've already setup your project.&lt;/p&gt;

&lt;p&gt;With that out of the way, let's get into the article.&lt;/p&gt;




&lt;p&gt;What you'll need:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://login.mailchimp.com/signup/"&gt;Mailchimp&lt;/a&gt; account&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.npmjs.com/package/jsonp"&gt;jsonp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  1. Get request URL link from Mailchimp
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--L6Vrz6V8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1661310476931/r6FEDOB1V.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--L6Vrz6V8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1661310476931/r6FEDOB1V.png" alt="Screenshot 2022-08-24 at 11.04.02 AM.png" width="800" height="509"&gt;&lt;/a&gt;Go to your Mailchimp dashboard, on the sidebar, go to &lt;code&gt;Audience &amp;gt; Signup forms&lt;/code&gt;. And then, click on &lt;code&gt;Embeded forms&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ENINK6__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1661310200618/6hGkkbB__.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ENINK6__--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1661310200618/6hGkkbB__.png" alt="Screenshot 2022-08-24 at 11.02.31 AM.png" width="800" height="509"&gt;&lt;/a&gt;You can add more fields by clicking on the &lt;code&gt;Form Fields&lt;/code&gt; and enable all the fields that you need. Then click on &lt;code&gt;Continue&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--2VnR-ORH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1661310805046/nU80Kp0kI.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2VnR-ORH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://cdn.hashnode.com/res/hashnode/image/upload/v1661310805046/nU80Kp0kI.png" alt="Screenshot 2022-08-24 at 11.10.38 AM.png" width="800" height="509"&gt;&lt;/a&gt;Find the &lt;code&gt;form&lt;/code&gt; tag in the code, and copy the &lt;code&gt;action&lt;/code&gt; URL.&lt;/p&gt;

&lt;p&gt;Also, look for &lt;code&gt;input&lt;/code&gt; tag and find the fields that you've added. Take note the &lt;code&gt;name&lt;/code&gt; of the &lt;code&gt;input&lt;/code&gt; tag. We will be using it to submit our form later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;input type="email" value="" name="EMAIL" class="required email" id="mce-EMAIL" required&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;In this case, the &lt;code&gt;name&lt;/code&gt; is &lt;code&gt;EMAIL&lt;/code&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Setup the &lt;code&gt;onSubmit&lt;/code&gt; handler
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Before we proceed:&lt;/strong&gt; Don't forget to install &lt;a href="https://www.npmjs.com/package/jsonp"&gt;jsonp&lt;/a&gt; package in your project.&lt;/p&gt;

&lt;p&gt;First, we need to replace the &lt;code&gt;/post?&lt;/code&gt; with &lt;code&gt;/post-json?&lt;/code&gt; in our url. Then add this code in your &lt;code&gt;onSubmit&lt;/code&gt; handler. I'll explain what we did later.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const onSubmit = e =&amp;gt; {
    e.preventDefault();
    const url = 'your-mailchimp-url';
    jsonp(`${url}&amp;amp;EMAIL=${email}`, { param: 'c' }, (_, data) =&amp;gt; {
        const { msg, result } = data
        // do something with response
        alert(msg);
    });
};

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

&lt;/div&gt;



&lt;p&gt;We use the &lt;code&gt;jsonp&lt;/code&gt; function to make the request. We then append &lt;code&gt;&amp;amp;EMAIL=&amp;lt;your-input-email&amp;gt;&lt;/code&gt; to include the email that we want to submit.&lt;/p&gt;

&lt;p&gt;If you have more fields, just use the &lt;code&gt;name&lt;/code&gt; value you've listed out from Mailchimp code before, and append it accordingly.&lt;/p&gt;

&lt;p&gt;Then we add the &lt;code&gt;{ param: 'c' }&lt;/code&gt; as the second parameter, but I don't really know why we need this to be honest.&lt;/p&gt;

&lt;p&gt;Lastly, we add a callback function to handle the response. The relevant response data will be available to you in the second argument. That's why I use &lt;code&gt;_&lt;/code&gt; for the first argument.&lt;/p&gt;

&lt;p&gt;From there, I just alert the user with the response message.&lt;/p&gt;

&lt;p&gt;And that's it, you should be able to submit the email to Mailchimp now.&lt;/p&gt;




&lt;h3&gt;
  
  
  For more context
&lt;/h3&gt;

&lt;p&gt;I write this article to share my learning when I was building "Coming Soon" page for my upcoming project &lt;a href="https://sea-techjobs.com"&gt;sea-techjobs.com&lt;/a&gt;. (shameless plug here )&lt;/p&gt;

&lt;p&gt;I want to collect emails using Mailchimp but I don't want to use their form builder. I think I can do a better job with React and ChakraUI to design the website but I wasn't sure how to exactly get this two connected.&lt;/p&gt;

&lt;p&gt;I first stumbled upon this &lt;a href="https://youtu.be/kNiHE-FoA1c"&gt;video&lt;/a&gt; on how to setup Mailchimp newsletter with React. And in that video, they were using this library called &lt;a href="https://www.npmjs.com/package/react-mailchimp-subscribe"&gt;react-mailchimp-subscribe&lt;/a&gt; but I couldn't get the state working right.&lt;/p&gt;

&lt;p&gt;I looked into the source code and figure out exactly how it works under the hood. I realized that I don't need that library for it to work. I can just copy how it works and tweak it to suit my needs.&lt;/p&gt;

&lt;p&gt;Then I thought, why not write an article to hopefully help other people who might be facing the same issue thus this article.&lt;/p&gt;

&lt;p&gt;So I guess that's it from me. Thank you for reading and have a good day.&lt;/p&gt;

&lt;p&gt;p/s - If you're curious about the project that I'm working on, you can read this &lt;a href="https://twitter.com/afrieirham_/status/1561369652067938304"&gt;twitter thread&lt;/a&gt; to learn more. It's in Malay though, I'm sorry if you're english reader. 🤧&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Stop buying Notion templates, create your own instead.</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Sat, 23 Apr 2022 06:18:25 +0000</pubDate>
      <link>https://dev.to/afrieirham/stop-buying-notion-templates-create-your-own-instead-1gp1</link>
      <guid>https://dev.to/afrieirham/stop-buying-notion-templates-create-your-own-instead-1gp1</guid>
      <description>&lt;p&gt;I used to look for templates on Notion for hours, trying to replicate them for days, setting up the perfect dashboard that's aesthetically pleasing but never got to use them even once sounds familiar? 😜&lt;/p&gt;

&lt;p&gt;Why? Because I was using someone else's system.&lt;/p&gt;

&lt;p&gt;A system that&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;they come up with&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;only works for them&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;not mine&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now what I did instead is, I use Notion however I feel I like it. And yes it is messy, but it's my mess.&lt;/p&gt;

&lt;p&gt;What's important is it works for me whether it's an expense tracker or a to-do list.&lt;/p&gt;

&lt;p&gt;And I keep using it until eventually, after using it multiple times, I saw a pattern. From there, I start to systematize it and came up with my own template.&lt;/p&gt;

&lt;p&gt;I am a huge believer that in order for you to do things systematically, you need to do it &lt;strong&gt;messily&lt;/strong&gt; first, then after you have done it enough, you can &lt;strong&gt;tidy it up&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This not only applies to Notion templates, it applies to everything.&lt;/p&gt;

&lt;p&gt;I saw the same thing in my work when I'm coding. We don't start coding by trying to write the most efficient code first, we start by making it work then we refactor.&lt;/p&gt;

&lt;p&gt;Anyway, I digress.&lt;/p&gt;




&lt;p&gt;Look, I'm not saying you should never look for inspiration in other people's work. What I'm saying is, you should not just blindly copy it.&lt;/p&gt;

&lt;p&gt;In fact, I encourage people to look for inspiration and try experimenting with it and don't be afraid to customize it according to your needs.&lt;/p&gt;

&lt;p&gt;So go do stuff first, and then you can worry about making it systematic/beautiful.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>How to Contribute to Open-Source Project on GitHub</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Thu, 07 Apr 2022 00:01:47 +0000</pubDate>
      <link>https://dev.to/afrieirham/your-first-open-source-contribution-2feb</link>
      <guid>https://dev.to/afrieirham/your-first-open-source-contribution-2feb</guid>
      <description>&lt;p&gt;So you've been reading articles about how to become a better software developer on the internet and inevitably, you've stumbled upon one common advice across the articles contribute to an open-source project.&lt;/p&gt;

&lt;p&gt;And youre thinking, Sure but how? How do I contribute exactly?&lt;/p&gt;

&lt;p&gt;Well in this article, I'm going to walk you through a step-by-step process on contributing to your first open-source project. This article is meant to teach you the "how" part, the technical part.&lt;/p&gt;

&lt;p&gt;Or in other words, this is a technical tutorial on how to contribute to a public repo on GitHub, exciting stuff.&lt;/p&gt;

&lt;p&gt;The project that you are going to contribute to is a small little project of mine called the &lt;a href="https://guestbook.afrieirham.com/" rel="noopener noreferrer"&gt;Guestbook&lt;/a&gt;. It's basically a website where you can leave some comments, maybe an advice, some quotes that inspires you, a joke anything at all.&lt;/p&gt;

&lt;p&gt;Hopefully by the time you read this, there are some comments made by other people and not just me 🥲&lt;/p&gt;

&lt;h2&gt;
  
  
  Gentle reminder
&lt;/h2&gt;

&lt;p&gt;Before we proceed to the steps, I want to talk about contributing to an open-source project. Specifically, what can you contribute because it is one of the most if not the most important steps to all this.&lt;/p&gt;

&lt;p&gt;While contributing to an open-source project is a great thing to do, there are some contributions that are made just for the sake of making a contribution.&lt;/p&gt;

&lt;p&gt;You don't want to spam the maintainer with bad contribution because it does not help anyone, and you should not be proud of that.&lt;/p&gt;

&lt;p&gt;If you think you can contribute meaningfully to a project by fixing a bug, adding new features, or even improve the documentation by all means go for it.&lt;/p&gt;

&lt;p&gt;With that out of the way, let's get into the tutorial.&lt;/p&gt;

&lt;h2&gt;
  
  
  Forking the repository
&lt;/h2&gt;

&lt;p&gt;The first step if you want to contribute to an open-source project on GitHub is to &lt;code&gt;fork&lt;/code&gt; the repo that you want to contribute to.&lt;/p&gt;

&lt;p&gt;Now you may be wondering, why do we have to fork the repo? Why can't I just clone it?&lt;/p&gt;

&lt;p&gt;Well, it all depends on what you're trying to do.&lt;/p&gt;

&lt;p&gt;In some cases, you might just want to run the project locally and see how things are done, without the intention of making any changes to the original repo if that's the case, you can just clone it.&lt;/p&gt;

&lt;p&gt;In our case however, we want to run it locally. But we also want to make some changes, and contribute back to the original repo with our changes, which is why we need to fork it.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Forking vs Cloning&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you clone a repo, you will have a copy of the repo locally but it is still pointing to the original GitHub repo.&lt;/p&gt;

&lt;p&gt;With cloning, you will run into a problem when you try pushing your code back to GitHub. You won't be able to do that because you don't have a &lt;strong&gt;write permission&lt;/strong&gt; to that particular repo.&lt;/p&gt;

&lt;p&gt;By forking however, you kinda clone it into your GitHub repo, in which you will have the write permission.&lt;/p&gt;

&lt;p&gt;Technically it is your repo now, and when you clone, edit, and try to push new updates back to GitHub, it will succeed because it's your repo.&lt;/p&gt;

&lt;p&gt;That's why you need to fork it first, so that you will have the write permission.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So go ahead and fork &lt;a href="https://github.com/afrieirham/guestbook" rel="noopener noreferrer"&gt;this&lt;/a&gt; repository.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Clone the forked repository locally
&lt;/h2&gt;

&lt;p&gt;Now that you have &lt;a href="https://github.com/afrieirham/guestbook" rel="noopener noreferrer"&gt;this&lt;/a&gt; repo under your name, you can clone it as usual and try to run it locally.&lt;/p&gt;

&lt;p&gt;Note that this project is a &lt;a href="https://nextjs.org/" rel="noopener noreferrer"&gt;Next.js&lt;/a&gt; project. You will need to install &lt;code&gt;node&lt;/code&gt; and run &lt;code&gt;npm install&lt;/code&gt; or &lt;code&gt;yarn&lt;/code&gt; to install the dependencies.&lt;/p&gt;

&lt;p&gt;Once the dependencies are installed, you can try to run it by running &lt;code&gt;npm run dev&lt;/code&gt; or &lt;code&gt;yarn dev&lt;/code&gt; and hopefully you will see this in your terminal.&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%2Fmf3ruvpne47xki67p4uv.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%2Fmf3ruvpne47xki67p4uv.png" alt="Untitled.png" width="800" height="407"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By now you should be able to go to your &lt;a href="http://localhost:3000" rel="noopener noreferrer"&gt;localhost&lt;/a&gt; and see the guestbook 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%2Fqjf9gtu7ba17izs9gxmp.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%2Fqjf9gtu7ba17izs9gxmp.png" alt="Untitled 1.png" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If everything went well, you can proceed to the next step.&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a new branch
&lt;/h2&gt;

&lt;p&gt;Now that you can run the project locally in your machine, you should be able to make some changes to it.&lt;/p&gt;

&lt;p&gt;But before you start doing any changes, you should create a new branch and name it &lt;code&gt;&amp;lt;your_github_username&amp;gt;&lt;/code&gt; . For example if I want to create a new branch, I will name it &lt;code&gt;afrieirham&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;You can create a branch however you want but the way I usually do it is using VS Code. At the bottom left your VS Code, you will see a &lt;code&gt;main&lt;/code&gt; text.&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%2Fkx7fqsqee3rgeylcnhq2.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%2Fkx7fqsqee3rgeylcnhq2.png" alt="Untitled 2.png" width="762" height="492"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can click the &lt;code&gt;Create new branch from...&lt;/code&gt; and enter your branch name.&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%2Fcxtsna3r9zbkjhmu9cdg.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%2Fcxtsna3r9zbkjhmu9cdg.png" alt="Untitled 3.png" width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Then select the &lt;code&gt;main&lt;/code&gt; branch for this.&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%2Fqvz0xsdxovfy37z1jf2p.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%2Fqvz0xsdxovfy37z1jf2p.png" alt="Untitled 4.png" width="800" height="188"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This will create a new branch called &lt;code&gt;afrieirham&lt;/code&gt; from the main branch.&lt;/p&gt;

&lt;p&gt;Now if you notice, it will change it to &lt;code&gt;afrieirham&lt;/code&gt; which means I have successfully create a new branch. Hopefully yours will display your GitHub username.&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%2Fzebhkmsxocszihehjx3r.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%2Fzebhkmsxocszihehjx3r.png" alt="Untitled 5.png" width="664" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you find this method a bit tedious, you can always use the command line.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout -b &amp;lt;your-github-username&amp;gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Quick Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you're contributing to a real project, usually you will name your branch based on what you're trying to do.&lt;/p&gt;

&lt;p&gt;For example it might be a new feature called &lt;code&gt;feature/upload-photo&lt;/code&gt; or a bug fix called &lt;code&gt;fix/form-not-working&lt;/code&gt; .&lt;/p&gt;

&lt;p&gt;It all depends on the project maintainer if they have a guideline for branch name. For this tutorial, you just have to use your GitHub username, thatll makes it easier for me, thanks. 🙇🏻&lt;/p&gt;

&lt;h2&gt;
  
  
  Making your changes
&lt;/h2&gt;

&lt;p&gt;Now that you're on a new branch, you can start making your changes safely. To sign the guestbook, you need to create a new file in the &lt;code&gt;sign-here&lt;/code&gt; folder located in the &lt;code&gt;public&lt;/code&gt; folder.&lt;/p&gt;

&lt;p&gt;Youll need add a new &lt;code&gt;JSON&lt;/code&gt; file with your GitHub username as the title. In my case for example, I will create a new file called &lt;code&gt;afrieirham.json&lt;/code&gt;. Yours would be &lt;code&gt;your-github-username.json&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Then you can copy the template I provided in the README or copy the code below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "body": "Change this with your comment",
  "date": ""
}

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

&lt;/div&gt;



&lt;p&gt;Paste the code into the &lt;code&gt;JSON&lt;/code&gt; file youve created and add your comment accordingly.&lt;/p&gt;

&lt;p&gt;To add the date, youll need to go to &lt;a href="https://greenwichmeantime.com/articles/clocks/iso/" rel="noopener noreferrer"&gt;this link&lt;/a&gt; and click on the Copy to clipboard button.&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%2Fh2g4022w9wp0rugtkbew.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%2Fh2g4022w9wp0rugtkbew.png" alt="Untitled 6.png" width="800" height="508"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can then paste it into the date section of the template and it will look something like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "body": "Your comment",
  "date": "2022-04-04T23:25:49Z"
}

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

&lt;/div&gt;



&lt;p&gt;I hope my instructions are clear.&lt;/p&gt;

&lt;p&gt;You can also refer the README file in the repo on how to get started, the instructions should be similar to this article.&lt;/p&gt;

&lt;h2&gt;
  
  
  Committing your changes
&lt;/h2&gt;

&lt;p&gt;Once you've made your changes, you can proceed into the next step which is to commit your changes.&lt;/p&gt;

&lt;p&gt;If you already know how to do this, go ahead and commit the &lt;code&gt;JSON&lt;/code&gt; file you've created, you can skip this part.&lt;/p&gt;

&lt;p&gt;If you don't, I will show you step by step on how to commit your changes with VS Code.&lt;/p&gt;

&lt;p&gt;First, you need to go to the git tab in VS Code, it's the icon with the blue number badge.&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%2F43oz8ur67hd0brhr3bf1.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%2F43oz8ur67hd0brhr3bf1.png" alt="Untitled 7.png" width="800" height="807"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you click it, you should see something like this.&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%2F8hbteizrtd02udh0i12n.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%2F8hbteizrtd02udh0i12n.png" alt="Untitled 8.png" width="800" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By right it should show that youve added a new &lt;code&gt;JSON&lt;/code&gt; file. It's fine if it shows more than that, you probably have explored the other files and make other changes if that's the case.&lt;/p&gt;

&lt;p&gt;However, you will only need to commit the &lt;code&gt;JSON&lt;/code&gt; file that you just made, that's the only file you should be contributing in this tutorial.&lt;/p&gt;

&lt;p&gt;Feel free to do any other changes for yourself, just don't include it when you want to contribute for this tutorial.&lt;/p&gt;

&lt;p&gt;You should write a commit message in the input box. Just write anything to be honest, this message will be stored in the GitHub repo though, so be sensible.&lt;/p&gt;

&lt;p&gt;Then you can click on the &lt;code&gt;+&lt;/code&gt; plus sign when you hover on the &lt;code&gt;JSON&lt;/code&gt; file. This step is called staging your changes.&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%2F1bgy1iuixoiqikto4ctm.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%2F1bgy1iuixoiqikto4ctm.png" alt="Untitled 9.png" width="770" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It should show something like this. This means that the changes you've made is ready to be committed into the repo.&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%2Fz1wr8ucoxw2hffkxohno.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%2Fz1wr8ucoxw2hffkxohno.png" alt="Untitled 10.png" width="800" height="487"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;From here, you can either click on the icon or press &lt;code&gt;command + enter&lt;/code&gt; for Mac or &lt;code&gt;control + enter&lt;/code&gt; for Windows.&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%2Fe4uho9uv6okikct2bthc.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%2Fe4uho9uv6okikct2bthc.png" alt="Untitled 11.png" width="800" height="477"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You might need to setup your Git config if you've never used Git before, but I hope you know how to do that.&lt;/p&gt;

&lt;p&gt;If the &lt;code&gt;JSON&lt;/code&gt; file is gone from the git tab in VS Code, you now have successfully make a git commit, yeay!&lt;/p&gt;

&lt;p&gt;But there's still more steps need to be done.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pushing your changes to GitHub
&lt;/h2&gt;

&lt;p&gt;This step is pretty easy and should be a quick one. All you have to do is just click on the cloud icon at the bottom left of VS Code.&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%2Fx7oft8t9a52x0b9ukbki.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%2Fx7oft8t9a52x0b9ukbki.png" alt="Untitled 12.png" width="646" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If the icons changed to this icon, you're all good.&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%2Frz800p2au9r13303il7z.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%2Frz800p2au9r13303il7z.png" alt="Untitled 13.png" width="660" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Making a Pull Request (PR)
&lt;/h2&gt;

&lt;p&gt;Pull Request is arguably the most important step to all this. It is a way for you to make a merge request to my GitHub repo so that your code will be reflected on the website once I approve it.&lt;/p&gt;

&lt;p&gt;To make a PR, you need to go to your forked repo, or the &lt;a href="https://github.com/afrieirham/guestbook" rel="noopener noreferrer"&gt;original repo&lt;/a&gt; and you might see something like this. Just click on the &lt;code&gt;Compare &amp;amp; pull request&lt;/code&gt; button.&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%2F9hu7mwvi2l9mmgv62vl3.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%2F9hu7mwvi2l9mmgv62vl3.png" alt="Untitled 14.png" width="800" height="85"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you don't, you can click on the &lt;code&gt;Pull Request&lt;/code&gt; tab and then click on the &lt;code&gt;New Pull Request&lt;/code&gt; button. You should be on this page after you click on the button.&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%2Ftn8d2wkiulz4uqolpdr5.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%2Ftn8d2wkiulz4uqolpdr5.png" alt="Untitled 15.png" width="800" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;When you're on that page, you can write something if you want. Ideally in a real open-source project, you should write about the changes you've made and what are the PR is all about.&lt;/p&gt;

&lt;p&gt;It will help the maintainer or the owner of the repo to review your PR and understand what you're trying to do.&lt;/p&gt;

&lt;p&gt;Before you click on the &lt;code&gt;Create pull request&lt;/code&gt; button, you should make sure that you are trying to merge the correct branch to the main branch.&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%2Fwqao7jd6phaunhtnbl6a.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%2Fwqao7jd6phaunhtnbl6a.png" alt="Untitled 16.png" width="800" height="70"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Things you should double check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base repository is &lt;code&gt;afrieirham/guestbook&lt;/code&gt; and the base is &lt;code&gt;main&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Head repository is &lt;code&gt;&amp;lt;your_github_username&amp;gt;/guestbook&lt;/code&gt; and the compare is &lt;code&gt;&amp;lt;your_github_username&amp;gt;&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If everything is correct, you can now go ahead and click on the &lt;code&gt;Create pull request&lt;/code&gt; button. If this is your first PR congrats! 🥳&lt;/p&gt;

&lt;p&gt;The whole process you just went through is how you would do it in any real project, and possibly in your job too.&lt;/p&gt;

&lt;p&gt;It will not be exactly the same because different organization have different workflows but generally it is the same.&lt;/p&gt;

&lt;p&gt;Starting from cloning the project, making your changes locally, making your first commit, pushing your code to GitHub, and finally make a PR for that this workflow is generally the same across all organization.&lt;/p&gt;

&lt;p&gt;From here, all you can do is just wait for me to merge your code into the main branch. I will try my best to merge your PR as soon as possible.&lt;/p&gt;

&lt;p&gt;After that, hopefully your comment will appear on the &lt;a href="http://guestbook.afrieirham.com" rel="noopener noreferrer"&gt;guestbook.afrieirham.com&lt;/a&gt;, you can always check if your code has been merged or not by going to the PR page again.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;By now I really hope you've learned something from this mini project. I hope that you have a clearer vision on how people use GitHub to contribute to an open-source project.&lt;/p&gt;

&lt;p&gt;I would also like to point out that it is not necessarily only applicable to an open-source project. You can use the same method in your own project, and you might find some similarity when you start working in a real project.&lt;/p&gt;

&lt;p&gt;There might be extra or less steps involved, but I hope this tutorial will be a good foundation for you to learn a more complicated workflows in your organization.&lt;/p&gt;

</description>
      <category>nextjs</category>
      <category>wordpress</category>
      <category>webdev</category>
      <category>discuss</category>
    </item>
    <item>
      <title>How to use your domain and subdomain with Hashnode and Vercel</title>
      <dc:creator>Afrie Irham</dc:creator>
      <pubDate>Fri, 23 Jul 2021 06:20:42 +0000</pubDate>
      <link>https://dev.to/afrieirham/how-to-use-your-domain-and-subdomain-with-hashnode-and-vercel-3348</link>
      <guid>https://dev.to/afrieirham/how-to-use-your-domain-and-subdomain-with-hashnode-and-vercel-3348</guid>
      <description>&lt;p&gt;Yesterday I ran into a problem when I try to connect my domain to Hashnode and use a subdomain on Vercel. Thankfully, everything is resolved after I reach out to Sandeep on Twitter.&lt;/p&gt;

&lt;p&gt;Here's the tweet.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://twitter.com/afrieirham_/status/1418174381533003779" rel="noopener noreferrer"&gt;https://twitter.com/afrieirham_/status/1418174381533003779&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you're planning to use your naked domain (or root domain) on Hashnode and you have a project on Vercel using a subdomain from the same domain please read this first.&lt;/p&gt;

&lt;h1&gt;
  
  
  The Issue
&lt;/h1&gt;

&lt;p&gt;Hashnode uses Vercel, and when you want to connect your root domain to your Hashnode blog, you will need to delegate it to Hashnode's Vercel account.&lt;/p&gt;

&lt;p&gt;Again, if you're not planning to use any subdomain (on Vercel) from the domain you use on Hashnode, there's no problem.&lt;/p&gt;

&lt;p&gt;However, I want to use afrieirham.com for my Hashnode blog, and I want to use bukugraduan.afrieirham.com on my Vercel project.&lt;/p&gt;

&lt;p&gt;But I get this error &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%2Fjxzo4tyuvmir02wtw0na.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%2Fjxzo4tyuvmir02wtw0na.png" alt="image.png" width="800" height="231"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because what essentially happens is you're trying to use the same domain with 2 different Vercel account; Hashnode's and yours.&lt;/p&gt;

&lt;h1&gt;
  
  
  The solution
&lt;/h1&gt;

&lt;p&gt;If you've already facing the same issue, you might want to contact Hashnode to delete your domain from their Vercel account, then follow these steps.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use www subdomain for your Hashnode account.&lt;/li&gt;
&lt;li&gt;Redirect your root domain to point to your www subdomain.&lt;/li&gt;
&lt;li&gt;You can now use any subdomain on your Vercel account.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This way, you'll only delegate www subdomain to Hashnode and you'll keep your root domain on your Vercel account.&lt;/p&gt;

&lt;h1&gt;
  
  
  Conclusion
&lt;/h1&gt;

&lt;p&gt;I want to again thank &lt;a href="https://twitter.com/Sandeepg33k" rel="noopener noreferrer"&gt;Sandeep&lt;/a&gt; for his help. He's the one who get in touch with Vercel regarding this issue.&lt;/p&gt;

&lt;p&gt;The solution I'm sharing here today is the suggestion from Vercel's team, so I would like to thank them as well.&lt;/p&gt;

&lt;p&gt;This is what they have to say,&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It will be supported in the future. At this moment, however, it is indeed an edge case that we are not prepared yet. Vercel&lt;/p&gt;
&lt;/blockquote&gt;

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