<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Disha's Blog]]></title><description><![CDATA[Software Engineer || Full Stack Developer || Serverless Architecture || AWS]]></description><link>https://blog.suriyadisha.com</link><generator>RSS for Node</generator><lastBuildDate>Wed, 15 Apr 2026 00:01:00 GMT</lastBuildDate><atom:link href="https://blog.suriyadisha.com/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[JavaScript Callbacks Made Easy: Learn, Apply & Conquer! 🚀]]></title><description><![CDATA[Have you ever stumbled upon functions within functions in your JavaScript journey? These are known as callback functions, and they play a crucial role in asynchronous programming. In this blog, we'll delve into the world of callbacks, making them cle...]]></description><link>https://blog.suriyadisha.com/javascript-callbacks-made-easy-learn-apply-conquer</link><guid isPermaLink="true">https://blog.suriyadisha.com/javascript-callbacks-made-easy-learn-apply-conquer</guid><category><![CDATA[callback]]></category><category><![CDATA[JavaScript]]></category><category><![CDATA[asynchronous]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[webdev]]></category><category><![CDATA[callback functions]]></category><dc:creator><![CDATA[Suriya Tasmim Disha]]></dc:creator><pubDate>Mon, 19 Feb 2024 19:23:56 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1708369073517/8901ee04-e379-4dc4-8f1a-4ee602a73bf1.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Have you ever stumbled upon functions within functions in your JavaScript journey? These are known as callback functions, and they play a crucial role in asynchronous programming. In this blog, we'll delve into the world of callbacks, making them clear and approachable for beginners.</p>
<p><strong>What are Callback Functions?</strong></p>
<p>Imagine you're passing a message to a busy friend. You wouldn't want to wait for them to finish everything before delivering it. Similarly, in JavaScript, callback functions are "messages" you send to functions that might take time to complete their tasks. These functions then "call back" to your code later when they're done.</p>
<p><strong>Creating and Using Callbacks</strong></p>
<p>Let's see how it works in practice:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">showResult</span>(<span class="hljs-params">result</span>) </span>{
  <span class="hljs-built_in">console</span>.log(result);
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span>(<span class="hljs-params">x, y, callback</span>) </span>{
  <span class="hljs-keyword">const</span> sum = x + y;
  callback(sum); <span class="hljs-comment">// Send the result to the "callback" function</span>
}

add(<span class="hljs-number">4</span>, <span class="hljs-number">5</span>, showResult); <span class="hljs-comment">// Pass "showResult" as the callback</span>
</code></pre>
<p>Here, <code>add</code> takes three arguments: <code>x</code>, <code>y</code>, and <code>callback</code>. It calculates the sum and then "calls back" to <code>showResult</code> by passing the sum as an argument. This allows you to handle the result in a separate function, making your code more modular and organized.</p>
<p><strong>Synchronous vs. Asynchronous Callbacks</strong></p>
<p>So far, we've seen synchronous callbacks, where the "calling back" happens immediately after the task is done. But callbacks truly shine in asynchronous scenarios, where a function might need to wait for something (like fetching data from the internet) before completing.</p>
<p>Here's an example:</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">showResult</span>(<span class="hljs-params">result</span>) </span>{
    <span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> {
        <span class="hljs-built_in">console</span>.log(result);<span class="hljs-comment">// Output: 9 after 5 seconds</span>
    }, <span class="hljs-number">5000</span>);<span class="hljs-comment">// Simulate a 5 seconds delay</span>
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span>(<span class="hljs-params">x, y, callback</span>) </span>{
    <span class="hljs-keyword">const</span> result = x + y;
    callback(result); <span class="hljs-comment">// Send the result to the "callback" function</span>
    <span class="hljs-built_in">console</span>.log(<span class="hljs-string">"Hi! There!"</span>) 
}

add(<span class="hljs-number">4</span>, <span class="hljs-number">5</span>, showResult); <span class="hljs-comment">// Pass "showResult" as the callback</span>
</code></pre>
<p>In this case, <code>showResult</code> uses <code>setTimeout</code> to simulate an asynchronous operation, and then it calls back to the provided function with the data after a delay. This allows your code to continue execution without being blocked while waiting for the data.</p>
<p>Watch my video to learn more about callbacks and how you can use these in a real-life application! 🎥</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=VjactTwqE2Y">https://www.youtube.com/watch?v=VjactTwqE2Y</a></div>
<p> </p>
<p><strong>Key Benefits of Callbacks</strong></p>
<ul>
<li><p><strong>Asynchronous Programming:</strong> Callbacks enable your code to handle tasks that take time without blocking the main thread. This makes your web applications more responsive and interactive.</p>
</li>
<li><p><strong>Modularization:</strong> You can break down complex logic into smaller, reusable functions, making your code easier to read, understand, and maintain.</p>
</li>
<li><p><strong>Flexibility:</strong> Callbacks can be passed around and used in various contexts, making your code more adaptable.</p>
</li>
</ul>
<p><strong>Beyond the Basics: Advanced Concepts</strong></p>
<p>While callbacks are powerful, they can also lead to "callback hell" in complex scenarios. To overcome this, JavaScript offers alternative approaches like <strong>promises</strong> and <strong>async/await</strong>, which provide cleaner and more readable ways to handle asynchronous operations. We'll explore these in future posts!</p>
<p><strong>Remember:</strong></p>
<ul>
<li><p>Always pass callback functions without parentheses (<code>add(5, 10, showResult)</code>).</p>
</li>
<li><p>Callbacks can be used for both synchronous and asynchronous operations.</p>
</li>
<li><p>They offer significant benefits for writing modular, asynchronous code.</p>
</li>
</ul>
<p>I hope this blog has clarified callback functions for you! Feel free to ask any questions in the comments, and I'll be happy to help.</p>
<p>Happy learning! 💻 😄</p>
<p>🌐 GitHub Link: <a target="_blank" href="https://github.com/SuriyaTasmimDisha/JavaScript-Callbacks.git">https://github.com/SuriyaTasmimDisha/JavaScript-Callbacks.git</a></p>
<p>Follow me and support me on:</p>
<p>🔗 LinkedIn: <a target="_blank" href="https://www.linkedin.com/in/suriya-ta"><strong>https://www.linkedin.com/in/suriya-ta</strong></a>...</p>
<p>🐦 Twitter: <a target="_blank" href="https://twitter.com/SuriyaDisha"><strong>https://twitter.com/SuriyaDisha</strong></a></p>
<p>📝 Tech Blog: <a target="_blank" href="https://blog.suriyadisha.com/"><strong>https://blog.suriyadisha.com</strong></a></p>
]]></content:encoded></item><item><title><![CDATA[Master Asynchronous JavaScript Like a Pro (Easy Guide!)]]></title><description><![CDATA[JavaScript is a powerful tool for web development, but its synchronous nature can sometimes slow things down. Enter Asynchronous JavaScript, your key to unlocking faster, smoother code!
The word asynchronous means not occurring at the same time. But ...]]></description><link>https://blog.suriyadisha.com/master-asynchronous-javascript-like-a-pro-easy-guide</link><guid isPermaLink="true">https://blog.suriyadisha.com/master-asynchronous-javascript-like-a-pro-easy-guide</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[asynchronous]]></category><category><![CDATA[asynchronous JavaScript]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[Programming Blogs]]></category><category><![CDATA[coding]]></category><dc:creator><![CDATA[Suriya Tasmim Disha]]></dc:creator><pubDate>Mon, 12 Feb 2024 17:16:42 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1707724602451/b7e99907-9e6b-444e-a6c3-2cd5b15d58a7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>JavaScript is a powerful tool for web development, but its synchronous nature can sometimes slow things down. Enter <strong>Asynchronous</strong> JavaScript, your key to unlocking faster, smoother code!</p>
<p>The word <strong><em>asynchronous</em></strong> means not occurring at the same time. But in JavaScript, the code gets executed line by line as it has a single thread. So, JavaScript is synchronous by nature.</p>
<p><strong>So, how do we make JavaScript act asynchronously?</strong></p>
<p>To make JavaScript work asynchronously, we first need to understand how the JavaScript code executes.</p>
<p>To run a javascript script we need a <strong>JavaScript Engine</strong>. The purpose of the javascript engine is to translate the code developers write into machine code. The computer reads this machine code and performs the specified tasks.</p>
<p>So, when the JavaScript engine starts executing the code it creates <strong>Execution Context</strong>. Each execution context has two phases:</p>
<ul>
<li><p>The first one is the <strong>Creation phase</strong></p>
</li>
<li><p>The second one is the <strong>Execution phase</strong></p>
</li>
</ul>
<p>In the creation phase, JavaScript creates a <strong>global execution context</strong>. Then it creates a '<strong>this'</strong> object and binds it to the global object. After this, it creates a <strong>memory heap</strong> to store variables and function references. Next, it initializes the variable within the global execution context to <strong>undefined</strong>.</p>
<p>In the execution phase, the javascript engine assigns values to the variables and executes the function calls. For each function call, the javascript engine creates a new function execution context. It is very similar to the global execution context. But instead of creating a global object, it creates an arguments object. This argument object is a reference to all the parameters of the function.</p>
<p>To understand this workflow more clearly, let’s take a look at an example:</p>
<pre><code class="lang-jsx"><span class="hljs-keyword">let</span> a = <span class="hljs-number">2</span>;
<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">add</span>(<span class="hljs-params">c</span>)</span>{
<span class="hljs-keyword">return</span> c+<span class="hljs-number">2</span>;
}
<span class="hljs-keyword">let</span> b = add(a);
<span class="hljs-built_in">console</span>.log(b);
</code></pre>
<p>So, this is a simple javascript code where we have 3 variables and one function.</p>
<p>When we run this script, the JavaScript engine first goes into the creation phase and creates a global execution context. Then it creates a global object. As we use vanilla JavaScript, this global object is a window that we get from the web browser. Then it creates <strong>this</strong> object and binds it to the <strong>window</strong> object. Next, it creates a memory heap in the global execution context. There in the memory heap, it stores the variable <strong>a</strong>, <strong>b,</strong> and the declaration of the <code>add()</code> function. After that, it initializes the variables <strong>a</strong> and <strong>b</strong> to <strong>undefined</strong>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707724266273/b759f4b2-9899-47bc-95a5-645fefa08910.gif" alt class="image--center mx-auto" /></p>
<p>After this, the engine goes into the execution phase.</p>
<p>In the execution phase, it first assigns values to the variables and executes function calls. For executing and keeping track of the function calls, the javascript engine maintains a call stack and there is only one call stack available in the web browser. The javascript engine places <code>main()</code> function from the global execution context to the call stack.</p>
<p>Next, for the <code>main()</code> function, the engine enters the creation phase. After completing the creation phase, it then moves to the execution phase.</p>
<p>Then javascript engine executes the call to the <code>add()</code> function and creates a function execution context with an argument object. This argument object keeps the references of all parameters passed into the function. Next, it sets <strong>this</strong> value to the global object and initializes parameter <strong>c</strong> to <strong>undefined.</strong> Then it pushes the <code>add()</code> function on top of the call stack.</p>
<p>After this, the engine executes the <code>add()</code> function on top of the call stack. During this execution phase, the engine assigns <strong>2</strong> to the parameter <strong>c</strong> and returns the result <strong>4</strong> to the global execution context. Next, it pops the <code>add()</code> function from the call stack.</p>
<p>In the final stage of the execution context, the return value from the <code>add()</code> function is assigned to variable <strong>b</strong>. Then the value of <strong>b</strong> is printed in the console. With this, the <code>main()</code> function popped off from the call stack completing all the execution contexts and the script stopped running.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707724289234/d264b193-6ee4-48a5-b28d-d496f8d24ac9.gif" alt class="image--center mx-auto" /></p>
<p>So, as you can see with javascript we are doing one step at a time.</p>
<p>Now let’s look at another example:</p>
<pre><code class="lang-jsx"><span class="hljs-built_in">console</span>.log(<span class="hljs-number">1</span>);
<span class="hljs-built_in">console</span>.log(<span class="hljs-built_in">Math</span>.sqrt(<span class="hljs-number">1024</span>))
<span class="hljs-built_in">console</span>.log(<span class="hljs-number">2</span>);
</code></pre>
<p>With this code, we want to print <strong>1</strong>, the <strong>square root of 1024</strong>, and <strong>2</strong> in the console. So, this is another simple example of the synchronous javascript execution. However, there is a catch. Here, we are calculating the square root of a number. Now the bigger the number the more time it will take to execute. So, other operations will be on hold till then. This situation is called <strong><em>Blocking</em></strong> and it is one of the major drawbacks of synchronous javascript.</p>
<p>To solve this situation we are going to implement an asynchronous mechanism. As you have read in the beginning asynchronous mechanism allows us to work on multiple things at a time.</p>
<p>So, to implement the asynchronous mechanism in JavaScript, we need to understand some new and interesting mechanisms of our web browsers. Our web browsers contain a <strong>JavaScript Runtime Environment.</strong> This runtime environment consists of a <strong>JavaScript Engine</strong>, <strong>Web APIs</strong>, an <strong>Event Loop</strong>, and a <strong>CallBack Queue</strong>. We are already familiar with the javascript engine. Now, let’s get to know the other three.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707724411957/90623f25-ccda-4641-bae9-6b409be4cf7b.gif" alt class="image--center mx-auto" /></p>
<p>The Web APIs consist of various kinds of modern APIs like event listeners, timing functions, and AJAX requests. We use these APIs to manipulate the HTML, and CSS of the web pages, draw and modify graphics, and get data from the network servers.</p>
<p>The CallBack Queue stores the callback functions sent from the Web APIs. The queue stores these functions in first in first out order.</p>
<p>The Event Loop continuously monitors the state of the call stack and callback queue. When the call stack gets empty, it takes a callback function from the callback queue and puts it onto the call stack.</p>
<p>So, if you notice javascript is still executing synchronously. But because of using the JavaScript Engine, Web APIs, an Event Loop, and a CallBack Queue, it makes us think that javascript is executing asynchronously.</p>
<p>Now let’s take a look at an example to understand this whole flow. In this example, I have modified our previous code.</p>
<pre><code class="lang-jsx"><span class="hljs-built_in">console</span>.log(<span class="hljs-number">1</span>);
<span class="hljs-built_in">setTimeout</span>(<span class="hljs-function">() =&gt;</span> <span class="hljs-built_in">console</span>.log(<span class="hljs-built_in">Math</span>.sqrt(<span class="hljs-number">1024</span>), <span class="hljs-number">3000</span>))
<span class="hljs-built_in">console</span>.log(<span class="hljs-number">2</span>);
</code></pre>
<p>This time, in the code I have introduced a new method named <strong>setTimeout</strong>. This <code>setTimeout()</code> is a timing function provided by the Web APIs. This method sets a timer that executes a function or specified piece of code once the timer expires.</p>
<p>So, our code first prints <strong>1</strong> to the console.</p>
<p>Then it moves to the <code>setTimeout()</code> method. Here we have specified the square root code and a delay of 3000ms. That means this block of code will get executed after 3s.</p>
<p>Next, this method is moved from the call stack to the Callback Queue via Web APIs, and in the Callback Queue, the method processing keeps on running.</p>
<p>Then, the execution pointer moves to the third line and prints <strong>2</strong> to the console.</p>
<p>Now, as our call stack is empty, the event loop looks into the Callback Queue and takes the <strong>setTimeout</strong> method to the call stack. By this time, if 3 seconds is up it prints the square root of the given number in the console.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1707724439873/abd7160f-6a08-4dbc-8642-6168205a6c45.gif" alt class="image--center mx-auto" /></p>
<p>So, this is how asynchronous javascript works while not creating any blocking.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=UQYBn2qeZ4c">https://www.youtube.com/watch?v=UQYBn2qeZ4c</a></div>
<p> </p>
<h3 id="heading-wrapping-up"><strong>Wrapping Up</strong></h3>
<p>That's it. Thanks for stopping by. I hope by now you have a good understanding of what asynchronous javascript is and how it works.</p>
<p>My DMs are always open if you want to discuss further on any tech topic or if you've got any questions, suggestions, or feedback in general.</p>
<p>Happy learning! 💻 😄</p>
<p>Follow me and support me on:</p>
<p>🔗 LinkedIn: <a target="_blank" href="https://www.linkedin.com/in/suriya-ta">https://www.linkedin.com/in/suriya-ta</a>...</p>
<p>🐦 Twitter: <a target="_blank" href="https://twitter.com/SuriyaDisha">https://twitter.com/SuriyaDisha</a></p>
<p>📝 Tech Blog: <a target="_blank" href="https://blog.suriyadisha.com/">https://blog.suriyadisha.com</a></p>
]]></content:encoded></item><item><title><![CDATA[JavaScript 101: A Beginner's Guide To The Call Stack]]></title><description><![CDATA[A Call Stack is a mechanism for the interpreter to keep track of which function is running right now and which function needs to run next.
JavaScript is a single-threaded programming language. That means it can do one thing at a time and has only one...]]></description><link>https://blog.suriyadisha.com/javascript-101-a-beginners-guide-to-the-call-stack</link><guid isPermaLink="true">https://blog.suriyadisha.com/javascript-101-a-beginners-guide-to-the-call-stack</guid><category><![CDATA[JavaScript]]></category><category><![CDATA[webdev]]></category><category><![CDATA[programming]]></category><category><![CDATA[callstack]]></category><category><![CDATA[coding]]></category><category><![CDATA[Tutorial]]></category><category><![CDATA[learnjavascript]]></category><dc:creator><![CDATA[Suriya Tasmim Disha]]></dc:creator><pubDate>Sun, 04 Feb 2024 18:32:46 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1707073381918/4c41a6b6-8243-4dbb-8ef2-0094b510edf7.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A <strong>Call Stack</strong> is a mechanism for the interpreter to keep track of which function is running right now and which function needs to run next.</p>
<p>JavaScript is a <strong>single-threaded</strong> programming language. That means it can do one thing at a time and has only one Call Stack at its disposal. The Call Stack uses the <strong>Last In First Out (LIFO)</strong> principle to store and manage function calls temporarily.</p>
<p>To understand LIFO, let’s say we bought the Harry Potter collection. Now, we are going to store them in order. We will first stack part 7 as we will read it at last. Then part 6, part 5, part 4, part 3, part 2, and at the top part 1. We store the sequence of each book in a chunk of memory. This chunk of memory is called a <strong>Stack Frame</strong>. We can have several Stack Frames exist at a time but only one Stack Frame can be active. That means you can read one book at a time.</p>
<p>When we will start reading, we will first take part 1 which is the active Stack Frame from the stack. So, this frees up one Stack Frame. After finishing part 1, we will take part 2 which clears up the 2nd Stack Frame. Similarly, we then take out part 3, part 4, part 5, part 6, and finally part 7. And now our Call Stack is empty. So, to process the elements or requests starting from the last to the first is the principle of the Last In First Out method.</p>
<p>In programming the last function that gets pushed into the stack is the first to be popped out when the function returns.</p>
<p>To better understand the Call Stack, let’s look at an example. Let's open <strong>Google Chrome</strong> and open the <strong>inspection</strong> tool. In the inspection tool, select the <strong>Sources</strong> tab. Here, let’s select the <strong>Snippets</strong> module. Now let’s create a <strong>new snippet</strong>. In this snippet, let’s write a simple code in JavaScript.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sayHello</span>(<span class="hljs-params"></span>)</span>{
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Hello!'</span>)
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">greeting</span>(<span class="hljs-params"></span>)</span>{
sayHello()
<span class="hljs-built_in">console</span>.log(<span class="hljs-string">'Hello again!'</span>)
}

greeting()
</code></pre>
<p>We are going to execute this code and run the debugger so that we can see how the interpreter handles multiple function calls using the Call Stack.</p>
<p>So, let’s a put pointer on the <code>greeting()</code> function and hit the <code>command + enter</code> key to start the execution. As you can see there is a brand new function called <strong>anonymous</strong> in the call stack list. This is our <strong>main</strong> function.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705398117364/8584c768-617c-491d-91a6-57f38222288d.png" alt class="image--center mx-auto" /></p>
<p>So, when we start executing this code the <strong>main</strong> function gets called first. A stack frame is assigned to the <strong>main</strong> function. So that the <strong>main</strong> function gets added to the Call Stack and does its work.</p>
<p>Next, let’s click on the <strong>step (⬇)</strong> button. This action makes the <strong>main</strong> function call the <code>greeting()</code> function and the <code>greeting()</code> function gets added to the Call Stack with a Stack Frame. This is our current active Stack Frame while the previous one is on hold.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705398269787/4ff2451c-17f2-450c-b6ef-48a99d69f1c1.png" alt class="image--center mx-auto" /></p>
<p>After that let’s hit the <strong>step (⬇)</strong> button once again. This time the <code>greeting()</code> function calls the <code>sayHello()</code> function and it gets added to the Call Stack with a new active Stack Frame.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705398610026/6f184ecf-eb81-4020-a7f6-cde3af6ec0d1.png" alt class="image--center mx-auto" /></p>
<p>After pressing the <strong>step (⬇)</strong> button one more time, the <strong>sayHello()</strong> function prints <code>"Hello"</code> in the console.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705398754377/8903188c-1849-49ad-a6de-f61005e5e9e1.png" alt class="image--center mx-auto" /></p>
<p>Again pressing the <strong>step (⬇)</strong> button, the <code>sayHello()</code> function returns, and the Stack Frame is popped off from the Call Stack. The execution order then moves below the stack and the immediate frame which is the <code>greeting()</code> function gets activated.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705399113602/f9d990c7-ebb6-494c-8c30-4a8d44b896f0.png" alt class="image--center mx-auto" /></p>
<p>So, let’s press the <strong>step(⬇)</strong> button again. This time the content of the <code>greeting()</code> function executes and prints <code>"Hello again!"</code> in the console.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705399341871/98a5987f-4e4f-433e-bdd7-187a22cfb4c8.png" alt class="image--center mx-auto" /></p>
<p>Let’s hit the <strong>step (⬇)</strong> button again. Now, the <code>greeting()</code> function returns, and once again the Stack Frame is popped off from the Call Stack.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705399497850/79157e6e-cbeb-4a9f-a13f-6cc3618e4e4e.png" alt class="image--center mx-auto" /></p>
<p>Now, we just have the <strong>main</strong> function in our Call Stack. So, let's press the step button one last time and with this action Call Stack becomes empty.</p>
<p><strong>Now why Call Stack is so important to understand?!</strong></p>
<p>To understand this, let’s go back to the <strong>inspection</strong> tool and modify our code a little.</p>
<pre><code class="lang-javascript"><span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">sayHello</span>(<span class="hljs-params"></span>)</span>{
greeting()
}

<span class="hljs-function"><span class="hljs-keyword">function</span> <span class="hljs-title">greeting</span>(<span class="hljs-params"></span>)</span>{
sayHello()
}

greeting()
</code></pre>
<p>Now let’s hit <code>command + enter</code> to run this updated code. And we get an error in the console saying <code>"Maximum call stack size exceeded"</code>.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1705400733856/22ea6eb6-bb0c-4ec1-9ced-c2e2589d5e1b.png" alt class="image--center mx-auto" /></p>
<p>For JavaScript, our browser is responsible for executing the code and it has a <strong>limited amount of memory</strong>.</p>
<p>In the current code, we are calling the <code>sayHello()</code> function from the <code>greeting()</code> function. Then from the <code>sayHello()</code> function, we are calling the <code>greeting()</code> function. Next from the <code>greeting()</code> function we are once again calling the <code>sayHello()</code> function and so on. So, an infinite loop has been created. However, we don’t have infinite memory in the browser. So, when the maximum amount of stack frame is exceeded, the browser throws the <code>"Maximum call stack size exceeded"</code> error.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://youtu.be/tn3YjekKVOU">https://youtu.be/tn3YjekKVOU</a></div>
<p> </p>
<h3 id="heading-wrapping-up"><strong>Wrapping Up</strong></h3>
<p>That's it. Thanks for stopping by. I hope you found this article interesting and informative!</p>
<p>My DMs are always open if you want to discuss further on any tech topic or if you've got any questions, suggestions, or feedback in general.</p>
<p>Happy learning! 💻 😄</p>
<p>Follow me and support me on:</p>
<p>🔗 LinkedIn: <a target="_blank" href="https://www.linkedin.com/in/suriya-ta">https://www.linkedin.com/in/suriya-ta</a>...</p>
<p>🐦 Twitter: <a target="_blank" href="https://twitter.com/SuriyaDisha">https://twitter.com/SuriyaDisha</a></p>
<p>📝 Tech Blog: <a target="_blank" href="https://blog.suriyadisha.com/">https://blog.suriyadisha.com</a></p>
]]></content:encoded></item><item><title><![CDATA[How I Improved My GitHub Profile Readme]]></title><description><![CDATA[Updating the default boring-looking github profile to an amazing one, showcasing one’s expertise in different programming languages, frameworks, and tools can be a great way to impress recruiters, developers, also yourself. Therefore, in this blog, I...]]></description><link>https://blog.suriyadisha.com/how-i-improved-my-github-profile-readme</link><guid isPermaLink="true">https://blog.suriyadisha.com/how-i-improved-my-github-profile-readme</guid><category><![CDATA[GitHub]]></category><category><![CDATA[github-actions]]></category><category><![CDATA[HTML]]></category><category><![CDATA[markdown]]></category><category><![CDATA[github profile]]></category><dc:creator><![CDATA[Suriya Tasmim Disha]]></dc:creator><pubDate>Tue, 24 Jan 2023 14:15:28 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1674558903211/146131ba-e11b-44b8-a784-d89398117b49.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Updating the default boring-looking github profile to an amazing one, showcasing one’s expertise in different programming languages, frameworks, and tools can be a great way to impress recruiters, developers, also yourself. Therefore, in this blog, I am going to show you how I updated my github profile. So, let’s get started.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=3bcHS0faQCs">https://www.youtube.com/watch?v=3bcHS0faQCs</a></div>
<p> </p>
<p>First, let me give you a short tour of my github profile. I plan to split my github profile into 6 sections. These are:</p>
<ul>
<li><p><strong>Intro</strong></p>
</li>
<li><p><strong>Social Media</strong></p>
</li>
<li><p><strong>YouTube Cards</strong></p>
</li>
<li><p><strong>Blog Posts</strong></p>
</li>
<li><p><strong>Favorite Tools</strong></p>
</li>
<li><p><strong>GitHub Stats</strong></p>
</li>
</ul>
<p>Here is what the final version of my github profile will look like:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674550759011/582958c2-b0e2-4486-8ab6-681d57d4b996.gif" alt class="image--center mx-auto" /></p>
<h3 id="heading-prerequisite">🗃️Prerequisite</h3>
<ol>
<li><p>A <a target="_blank" href="https://github.com/login"><strong>GitHub</strong></a> account</p>
</li>
<li><p>Basic knowledge of HTML and Markdown languages</p>
</li>
</ol>
<p>Now to start customizing, I need to create a brand-new repository first. To do so, I am going to follow these steps:</p>
<ol>
<li><p>Log in to my <a target="_blank" href="https://github.com/login">GitHub</a> Account</p>
</li>
<li><p>Create a new repository by clicking on the <strong>+</strong> icon in the top right corner</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674549269403/b1025c19-b9c5-4f8a-8235-e1715ea687be.png" alt="create-repo-option" /></p>
</li>
<li><p>In the <strong>Create a new repository</strong> page, I need to input my github username as the <strong>Repository name</strong>. After inputting the repository name, github will show me a message saying that this repository is ✨<strong>special✨</strong>. Using this repo I will be able to add a customized <strong>README.md</strong> file to my profile.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674549320155/93ac95f9-1540-48a3-93cd-7d530b2f59ae.png" alt /></p>
</li>
<li><p>I am going to choose the visibility as <strong>Public.</strong></p>
<p> 💡<strong>Note:</strong> Choosing the visibility of the repo as <strong>Private</strong> won’t show any changes on the github profile.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674550802954/fe46ab8a-817f-40b6-8ba5-fa96038e2cc9.png" alt /></p>
</li>
<li><p>Next, I am going to select the checkbox to <strong>Add a README file.</strong></p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555142764/26029c00-e464-4e0c-b7b4-e59dc823a00e.png" alt /></p>
</li>
<li><p>Finally, I am going to hit the <strong>Create repository</strong> button.</p>
<p> <img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555149787/6bdb7ef0-61f1-409f-a668-2e983bfd0787.png" alt /></p>
</li>
</ol>
<p>After successfully creating the repository, my github profile now looks like this:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555174808/d639078c-74bc-4029-805c-3e57bffac54f.png" alt /></p>
<p>Now, I will start customizing my github profile. To do that I am going to click on the pencil icon showing on the top right side of the <strong>README.md</strong> section in my profile.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555248798/3d06d7b1-d9dd-4ffa-baa1-4f07dc3fea48.png" alt /></p>
<p>This will open the github editor and here I am going to write down my code.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555266053/288bcd4f-4294-4965-9846-95d5f83f74e4.png" alt /></p>
<p>Now, I am going to remove the unnecessary lines of code and start coding.</p>
<h2 id="heading-intro">🙋‍♀️<strong>Intro</strong></h2>
<p>First, I am going to start with the intro section. For this, I am going to create a section name using an HTML comment tag. Then I am going to create a <strong>div</strong> tag and <strong>align</strong> it to the center. Next, I am going to go to <a target="_blank" href="https://github.com/thmsgbrt">Thomas Guibert</a>'s github profile. From there I am going to copy the emoji url that I want to use in my github profile. After this, I am going to go back to my github editor and paste the url in the <strong>src</strong> attribute of the <strong>img</strong> tag. If you want you can add a different emoji or gif. For that just change the <strong>src</strong> in the <strong>img</strong> tag. Here the image is clickable. So to avoid clicking on the image and ending up on a different page, I am going to wrap this <strong>img</strong> into an <strong>a</strong> tag and refer to my homepage using <strong>href=”#”</strong>. Now I am going to check the changes in the <strong>Preview</strong> section and if it looks good then I am going to commit these changes and head over to my github profile to see the new look.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555283304/6e1db95a-e548-406b-aa07-c3ffa33fd91f.gif" alt /></p>
<pre><code class="lang-html"><span class="hljs-comment">&lt;!-- Intro Section  --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"intro-img"</span> <span class="hljs-attr">align</span>=<span class="hljs-string">"center"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://emojis.slackmojis.com/emojis/images/1531849430/4246/blob-sunglasses.gif?1531849430"</span> <span class="hljs-attr">width</span>=<span class="hljs-string">100</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>Next, I am going to add my name and a short description of myself. So, I am going to head over to <a target="_blank" href="https://readme-typing-svg.demolab.com/demo/">readme-typing-svg</a> and customize the font type and other styles as per I want. Then I am going to copy the HTML code snippet, go back to my editor, and paste the code. After this, I am going to check the changes in the <strong>Preview</strong> section and commit the changes.</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"about-me"</span> <span class="hljs-attr">align</span>=<span class="hljs-string">"center"</span>&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://git.io/typing-svg"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://readme-typing-svg.demolab.com?font=Roboto+Condensed&amp;weight=500&amp;size=25&amp;duration=4000&amp;pause=500&amp;color=EB5775&amp;center=true&amp;vCenter=true&amp;width=550&amp;lines=Hi%2C+I+am+Suriya+Tasmim+Disha;It's+nice+to+meet+you!;I+am+a+full+stack+web+and+app+developer"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Typing SVG"</span> /&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>The final look of the <strong>Intro</strong> section:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555332348/1517ac06-8d69-488b-90f3-e2dce74e78c9.gif" alt /></p>
<h2 id="heading-social-media">📱Social Media</h2>
<p>Now I am going to add my social media section. For this, I am going to use the following URL from <a target="_blank" href="https://shields.io/">Shields.io</a>.</p>
<p><code>https://img.shields.io/badge/{**Label-Color**}?logo={**social_media_icon_name**}&amp;logoColor={**color**}&amp;style=for-the-badge</code></p>
<p>I am going to replace the parameter names with three social networks: LinkedIn, YouTube, and Twitter. After replacing the parameters with values, the urls will look like the below:</p>
<ul>
<li><p><strong>LinkedIn:</strong> <a target="_blank" href="https://img.shields.io/badge/LinkedIn-blue?style=for-the-badge&amp;logo=linkedin&amp;logoColor=white">https://img.shields.io/badge/LinkedIn-blue?style=for-the-badge&amp;logo=linkedin&amp;logoColor=white</a></p>
</li>
<li><p><strong>YouTube:</strong> <a target="_blank" href="https://img.shields.io/badge/YouTube-red?style=for-the-badge&amp;logo=youtube&amp;logoColor=white">https://img.shields.io/badge/YouTube-red?style=for-the-badge&amp;logo=youtube&amp;logoColor=white</a></p>
</li>
<li><p><strong>Twitter:</strong> <a target="_blank" href="https://img.shields.io/badge/Twitter-blue?style=for-the-badge&amp;logo=twitter&amp;logoColor=white">https://img.shields.io/badge/Twitter-blue?style=for-the-badge&amp;logo=twitter&amp;logoColor=white</a></p>
</li>
</ul>
<p>I am also going to add a <a target="_blank" href="https://github.com/antonkomarev/github-profile-views-counter"><strong>github-profile-views-counter</strong></a> in my profile which will show how many times my profile has been visited. For this, I am going to use the following url: <code>https://komarev.com/ghpvc/?username={your-github-username}</code></p>
<p>As all the necessary links are ready, now I am going to wrap them in an <strong>img</strong> tag. For each social network, I am going to use an <strong>a</strong> tag to point to the respective accounts. Finally, I am going to check the changes in the <strong>Preview</strong> section and commit the changes.</p>
<pre><code class="lang-html"><span class="hljs-comment">&lt;!-- Social Media --&gt;</span>
<span class="hljs-tag">&lt;<span class="hljs-name">div</span> <span class="hljs-attr">id</span>=<span class="hljs-string">"badges"</span> <span class="hljs-attr">align</span>=<span class="hljs-string">"center"</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://www.linkedin.com/in/suriya-tasmim-disha/"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/LinkedIn-blue?style=for-the-badge&amp;logo=linkedin&amp;logoColor=white"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"LinkedIn Badge"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://www.youtube.com/channel/UC6n_v98g89xYfeyzpLj84JQ"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/YouTube-red?style=for-the-badge&amp;logo=youtube&amp;logoColor=white"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Youtube Badge"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://twitter.com/SuriyaDisha"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Twitter-blue?style=for-the-badge&amp;logo=twitter&amp;logoColor=white"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Twitter Badge"</span>&gt;</span>
  <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://komarev.com/ghpvc/?username=SuriyaTasmimDisha&amp;style=for-the-badge&amp;color=red"</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Profile Views"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">div</span>&gt;</span>
</code></pre>
<p>The final look of the <strong>Social Media</strong> section:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555374636/bb560cac-7bde-4c71-904f-ff806f0ce7a0.gif" alt /></p>
<h2 id="heading-latest-youtube-videos">📺Latest YouTube Videos:</h2>
<p>Recently I have started making YouTube videos. So, I want to show the latest videos in my github profile. For this, I am going to use GitHub Actions. GitHub Actions gives developers the ability to automate their workflows. With this configuration, github will automatically keep checking for new videos. So, I manually don’t have to keep adding the YouTube cards each time I upload a new video to my channel. To do this, I am going to use <a target="_blank" href="https://github.com/DenverCoder1/github-readme-youtube-cards"><strong>github-readme-youtube-cards</strong></a> following the steps below:</p>
<ol>
<li><p>I am going to add the following code to my editor and commit the changes.</p>
<pre><code class="lang-markdown"> <span class="xml"><span class="hljs-comment">&lt;!-- Latest Youtube Videos --&gt;</span></span>
  ## 📺 Latest YouTube Videos
 <span class="xml"><span class="hljs-comment">&lt;!-- BEGIN YOUTUBE-CARDS --&gt;</span></span>
 <span class="xml"><span class="hljs-comment">&lt;!-- END YOUTUBE-CARDS --&gt;</span></span>
</code></pre>
</li>
<li><p>In the repo, I am going to create a new file named <strong>.github/workflows/youtube-cards.yml.</strong> I am going to open the <strong>youtube-cards.yml</strong> file in my editor and add the given code:</p>
<pre><code class="lang-yaml"> <span class="hljs-attr">name:</span> <span class="hljs-string">GitHub</span> <span class="hljs-string">Readme</span> <span class="hljs-string">YouTube</span> <span class="hljs-string">Cards</span>
 <span class="hljs-attr">on:</span>
   <span class="hljs-attr">schedule:</span>
     <span class="hljs-comment"># Runs every hour, on the hour</span>
     <span class="hljs-bullet">-</span> <span class="hljs-attr">cron:</span> <span class="hljs-string">"0 * * * *"</span>
   <span class="hljs-attr">workflow_dispatch:</span>

 <span class="hljs-attr">jobs:</span>
   <span class="hljs-attr">deploy:</span>
     <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>
     <span class="hljs-attr">steps:</span>
       <span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">DenverCoder1/github-readme-youtube-cards@main</span>
         <span class="hljs-attr">with:</span>
           <span class="hljs-attr">channel_id:</span> <span class="hljs-string">UC6n_v98g89xYfeyzpLj84JQ</span>
           <span class="hljs-attr">comment_tag_name:</span> <span class="hljs-string">YOUTUBE-CARDS</span>
           <span class="hljs-attr">youtube_api_key:</span> <span class="hljs-string">${{</span> <span class="hljs-string">secrets.YOUTUBE_API_KEY</span> <span class="hljs-string">}}</span> <span class="hljs-comment"># Configured in Actions Secrets (see Wiki)</span>
           <span class="hljs-attr">show_duration:</span> <span class="hljs-literal">true</span> <span class="hljs-comment"># Requires YouTube API Key (see Wiki)</span>
           <span class="hljs-attr">output_type:</span> <span class="hljs-string">html</span>
</code></pre>
</li>
<li><p>I am going to replace <strong>your-channel-id</strong> with my YouTube channel id.</p>
<p> 💡<strong>Note:</strong> To show the video duration on the YouTube card, you have to set up a <strong>YOUTUBE_API_KEY</strong>. If you are wondering where you can get a <strong>YOUTUBE_API_KEY</strong> then you can follow this <a target="_blank" href="https://developers.google.com/youtube/v3/getting-started">document</a>. Now if you are wondering how you are going to set up this <strong>API_KEY</strong> in github secrets then follow this <a target="_blank" href="https://docs.github.com/en/actions/security-guides/encrypted-secrets">document</a>.</p>
</li>
<li><p>Finally, I am going to <strong>Actions → GitHub Readme YouTube Cards</strong> and hit the <strong>Run workflow</strong> button.</p>
</li>
</ol>
<p>If the workflow runs successfully, then I am going to go to my github profile to see the changes.</p>
<p>The final look of the <strong>YouTube Cards</strong> section:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555870874/eae6f950-1d83-42f5-9433-0475eeb8c248.gif" alt /></p>
<h2 id="heading-latest-blog-posts">📝Latest Blog Posts:</h2>
<p>Similar to YouTube Cards section, I am going to set up GitHub Actions for getting the latest blogs to my github profile automatically. For this part, I am going to use <a target="_blank" href="https://github.com/gautamkrishnar/blog-post-workflow">blog-post-workflow</a> following these steps:</p>
<ol>
<li><p>I am going to add the following code to my editor and commit the changes.</p>
<pre><code class="lang-markdown"> <span class="xml"><span class="hljs-comment">&lt;!-- Latest Blog Posts --&gt;</span></span>
  ## 📝 Latest Blog Posts
 <span class="xml"><span class="hljs-comment">&lt;!-- BLOG-POST-LIST:START --&gt;</span></span>
 <span class="xml"><span class="hljs-comment">&lt;!-- BLOG-POST-LIST:END --&gt;</span></span>
</code></pre>
</li>
<li><p>In the repo, I am going to create a new file named <strong>.github/workflows/blog-post-workflow.yml</strong>. Then, I am going to open the <strong>blog-post-workflow.yml</strong> file in my editor and add the given code:</p>
<pre><code class="lang-yaml"> <span class="hljs-attr">name:</span> <span class="hljs-string">Latest</span> <span class="hljs-string">blog</span> <span class="hljs-string">post</span> <span class="hljs-string">workflow</span>
 <span class="hljs-attr">on:</span>
   <span class="hljs-attr">schedule:</span>
     <span class="hljs-comment"># Runs every hour</span>
     <span class="hljs-bullet">-</span> <span class="hljs-attr">cron:</span> <span class="hljs-string">'0 * * * *'</span>
   <span class="hljs-attr">workflow_dispatch:</span>

 <span class="hljs-attr">jobs:</span>
   <span class="hljs-attr">update-readme-with-blog:</span>
     <span class="hljs-attr">name:</span> <span class="hljs-string">Update</span> <span class="hljs-string">this</span> <span class="hljs-string">repos</span> <span class="hljs-string">README</span> <span class="hljs-string">with</span> <span class="hljs-string">latest</span> <span class="hljs-string">blog</span> <span class="hljs-string">posts</span>
     <span class="hljs-attr">runs-on:</span> <span class="hljs-string">ubuntu-latest</span>
     <span class="hljs-attr">steps:</span>
       <span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">actions/checkout@v2</span>
       <span class="hljs-bullet">-</span> <span class="hljs-attr">uses:</span> <span class="hljs-string">gautamkrishnar/blog-post-workflow@master</span>
         <span class="hljs-attr">with:</span>
           <span class="hljs-attr">max_post_count:</span> <span class="hljs-string">"4"</span>
           <span class="hljs-attr">feed_list:</span> <span class="hljs-string">"https://blog.suriyadisha.com/rss.xml"</span>
</code></pre>
</li>
<li><p>I am going to replace <strong>your-feed-url</strong> with my blog url. You can find the list of available sources <a target="_blank" href="https://github.com/gautamkrishnar/blog-post-workflow#popular-sources">here</a>.</p>
</li>
<li><p>Finally, I am going to go to <strong>Actions → Latest blog post workflow</strong> and hit the <strong>Run workflow</strong> button.</p>
</li>
</ol>
<p>If the workflow runs successfully, then I am going to go to my github profile to see the changes.</p>
<p>The final look of the <strong>Blog Posts</strong> section:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555919805/ce4400cd-83ea-4300-8e62-f6d032c46418.gif" alt /></p>
<h2 id="heading-my-favorite-tools">⚒️My Favorite Tools</h2>
<p>In this part, I am going to add a list of my favorite tools that I use for development. For this, I am going to use badges from <a target="_blank" href="https://shields.io/">Shields.io</a>. But I am not going to directly generate these badges from <a target="_blank" href="https://shields.io/">Shields.io</a>. There is a big collection of shield badges in this blog named <a target="_blank" href="https://dev.to/envoy_/150-badges-for-github-pnk">Awesome Badges</a>. So, I am going to use the badges from here. I am going to take the badge sources of the tools that I use and paste them in the <strong>src</strong> of the <strong>img</strong> tag like this:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"C"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-C-283593?style=flat-square&amp;logo=c&amp;logoColor=white"</span>&gt;</span>
</code></pre>
<p>And this will generate a badge for my tool. The badge is a clickable item. So, if I click on the badge it will open up a new page showing the badge. To avoid this scenario, I am going to wrap the <strong>img</strong> tag with an <strong>a</strong> tag like below:</p>
<pre><code class="lang-html"><span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span>
    <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"C"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-C-283593?style=flat-square&amp;logo=c&amp;logoColor=white"</span>&gt;</span>
<span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></pre>
<p>Now, if I click on the badge, I will still be on the same page. The rest of the code for this section is given below:</p>
<pre><code class="lang-html"><span class="hljs-comment">&lt;!-- Favorite Tools --&gt;</span>
## 🛠️ My Favorite Tools
 <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>👨‍💻 Programming Languages<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"C"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-C-283593?style=flat-square&amp;logo=c&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"C++"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-C++-00549D?style=flat-square&amp;logo=cplusplus&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"HTML"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-HTML-E34F26.svg?style=flat-square&amp;logo=html5&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"CSS"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-CSS-264de4.svg?style=flat-square&amp;logo=css3&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"JavaScript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-JavaScript-F7DF1E.svg?style=flat-square&amp;logo=javascript&amp;logoColor=black"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"TypeScript"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/TypeScript-007ACC.svg?logo=typescript&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Markdown"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-Markdown-000000.svg?style=flat-square&amp;logo=markdown&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Node.js"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Node.js-43853D.svg?style=flat-square&amp;logo=node.js&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Python"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Python-14354C.svg?style=flat-square&amp;logo=python&amp;logoColor=yellow"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"SQL"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://custom-icon-badges.demolab.com/badge/SQL-025E8C.svg?style=flat-square&amp;logo=database&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>🧰 Frameworks and Libraries<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Bootstrap"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Bootstrap-7952B3.svg?style=flat-square&amp;logo=bootstrap&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Material Design"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Material%20Design-0081CB.svg?style=flat-square&amp;logo=material-design&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Material UI"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Material--UI-0081CB?style=flat-square&amp;logo=material-ui&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Styled Component"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/styled--components-DB7093?style=flat-square&amp;logo=styled-components&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Express.js"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Express.js-404d59.svg?style=flat-square&amp;logo=express&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"React"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/React-20232a.svg?style=flat-square&amp;logo=react&amp;logoColor=%2361DAFB"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"React Native"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/React%20Native-20232a.svg?style=flat-square&amp;logo=react&amp;logoColor=%2361DAFB"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Gatsby"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Gatsby-663399?style=flat-square&amp;logo=gatsby&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"redux"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-Redux-764ABC?style=flat-square&amp;logo=redux&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Angular"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Angular-dd1b16.svg?style=flat-square&amp;logo=angular&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Terraform"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Terraform-000000.svg?style=flat-square&amp;logo=terraform&amp;logoColor=%23844FBA"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>🗄️ Databases and Cloud Hosting<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"GitHub Pages"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/GitHub%20Pages-327FC7.svg?style=flat-square&amp;logo=github&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Heroku"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Heroku-430098.svg?style=flat-square&amp;logo=heroku&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"MongoDB"</span> <span class="hljs-attr">src</span> =<span class="hljs-string">"https://img.shields.io/badge/MongoDB-4ea94b.svg?style=flat-square&amp;logo=mongodb&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"MySQL"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/MySQL-00f.svg?style=flat-square&amp;logo=mysql&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Notion"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Notion-010101.svg?style=flat-square&amp;logo=notion&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"AWS"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/AWS-010101.svg?style=flat-square&amp;logo=amazon&amp;logoColor=%23FF9900"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>💻 Software and Tools<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Visual Studio Code"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Visual%20Studio%20Code-0078d7.svg?style=flat-square&amp;logo=visual-studio-code&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Postman"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Postman-FF6C37?style=flat-square&amp;logo=postman&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Git"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Git-F05033.svg?style=flat-square&amp;logo=git&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"GitHub"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/GitHub-000000.svg?style=flat-square&amp;logo=github&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"GitHub Desktop"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/GitHub%20Desktop-8034A9.svg?style=flat-square&amp;logo=github&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"GitLab"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/GitLab-000000.svg?style=flat-square&amp;logo=gitlab&amp;logoColor=FC6D27"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Google Sheets"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Sheets-34A853.svg?style=flat-square&amp;logo=google%20sheets&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Stack Overflow"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-Stack%20Overflow-FE7A16?style=flat-square&amp;logo=stack-overflow&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Figma"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-Figma-000000?style=flat-square&amp;logo=figma&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"OBS Studio"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/-OBS-302E31?style=flat-square&amp;logo=obs-studio&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Jira"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Jira-0052CC?style=flat-square&amp;logo=Jira&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Canva"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Canva-%2300C4CC.svg?&amp;style=flat-square&amp;logo=Canva&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
  <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"#"</span>&gt;</span><span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"Clodflare"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://img.shields.io/badge/Cloudflare-F38020?style=flat-square&amp;logo=Cloudflare&amp;logoColor=white"</span>&gt;</span><span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
</code></pre>
<p>The final look of the <strong>Favorite Tools</strong> section:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674555945798/200c09fa-0e20-4e5a-aee3-25c549ce3687.png" alt /></p>
<h2 id="heading-github-stats">📈GitHub <strong>Stats</strong></h2>
<p>This is the last section where I am going to add various github activity cards.</p>
<ol>
<li><p>For starters, I am going to use the <a target="_blank" href="https://github.com/DenverCoder1/github-readme-streak-stats"><strong>github-readme-streak-stats</strong></a> repo to show the contributions, current streak, and longest streak of my github profile. There are multiple themes available for this card and if you want you can customize your own by heading to this <a target="_blank" href="https://streak-stats.demolab.com/demo/">link</a>.</p>
<pre><code class="lang-html"> <span class="hljs-comment">&lt;!-- Github Activities --&gt;</span>
 ## 📈 Github Stats
 <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>🔥 Streak Stats<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://github.com/DenverCoder1/github-readme-streak-stats"</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">p</span>&gt;</span>
         <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://streak-stats.demolab.com?user=SuriyaTasmimDisha&amp;theme=monokai-metallian&amp;mode=weekly&amp;fire=DD2727"</span>&gt;</span>
     <span class="hljs-tag">&lt;/<span class="hljs-name">p</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></pre>
</li>
<li><p>After this, I am going to use the <a target="_blank" href="https://github.com/anuraghazra/github-readme-stats"><strong>github-readme-stats</strong></a> repo to show dynamically generated <a target="_blank" href="https://github.com/anuraghazra/github-readme-stats#github-stats-card">github stats</a> for my github repo. This card also has customization options.</p>
<pre><code class="lang-html"> <span class="hljs-tag">&lt;<span class="hljs-name">h3</span>&gt;</span>💻 GitHub Profile Stats<span class="hljs-tag">&lt;/<span class="hljs-name">h3</span>&gt;</span>
 <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://github.com/anuraghazra/github-readme-stats"</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"SuriyaDisha's Github Stats"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://denvercoder1-github-readme-stats.vercel.app/api/?username=SuriyaTasmimDisha&amp;show_icons=true&amp;include_all_commits=true&amp;count_private=true&amp;theme=react&amp;hide_border=true&amp;bg_color=1F222E&amp;title_color=F85D7F&amp;icon_color=F8D866"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"192px"</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></pre>
</li>
<li><p>Also, I am going to use the same repo to add the <a target="_blank" href="https://github.com/anuraghazra/github-readme-stats#top-languages-card">top language card</a> to my profile.</p>
<pre><code class="lang-html"> <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://github.com/anuraghazra/github-readme-stats"</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"SuriyaDisha's Top Languages"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://github-readme-stats.vercel.app/api/top-langs/?username=SuriyaTasmimDisha&amp;langs_count=8&amp;layout=compact&amp;theme=react&amp;hide_border=true&amp;bg_color=1F222E&amp;title_color=F85D7F&amp;icon_color=F8D866&amp;hide=Jupyter%20Notebook"</span> <span class="hljs-attr">height</span>=<span class="hljs-string">"192px"</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></pre>
</li>
<li><p>Finally, I am going to add a github activity graph using this <a target="_blank" href="https://github.com/Ashutosh00710/github-readme-activity-graph"><strong>github-readme-activity-graph</strong></a> repo. This graph will show all of my activities for the last 31 days.</p>
<pre><code class="lang-html"> <span class="hljs-tag">&lt;<span class="hljs-name">a</span> <span class="hljs-attr">href</span>=<span class="hljs-string">"https://github.com/ashutosh00710/github-readme-activity-graph"</span>&gt;</span>
     <span class="hljs-tag">&lt;<span class="hljs-name">img</span> <span class="hljs-attr">alt</span>=<span class="hljs-string">"SuriyaDisha's Activity Graph"</span> <span class="hljs-attr">src</span>=<span class="hljs-string">"https://github-readme-activity-graph.cyclic.app/graph/?username=SuriyaTasmimDisha&amp;bg_color=1F222E&amp;color=F8D866&amp;line=F85D7F&amp;point=FFFFFF&amp;hide_border=true"</span>&gt;</span>
 <span class="hljs-tag">&lt;/<span class="hljs-name">a</span>&gt;</span>
</code></pre>
</li>
</ol>
<p>The final look of the <strong>GitHub Stats</strong> section:</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1674561370974/25489a4c-7c67-4554-ae3f-91a560b2a879.png" alt /></p>
<p>I hope you have found this blog helpful and if you follow along you will be to create an amazing github profile for yourself. So thank you for checking out this blog. If you have any further questions, please let me know. I would be happy to help!</p>
]]></content:encoded></item><item><title><![CDATA[How To Create An AWS Billing Alarm]]></title><description><![CDATA[Keeping an eye on the bills for using the AWS services is vital. However, it’s not convenient to always watch over the real-time AWS usage bills.
Let’s assume, you have a budget to spend USD 100 per month. You are checking your usage bills daily and ...]]></description><link>https://blog.suriyadisha.com/how-to-create-an-aws-billing-alarm</link><guid isPermaLink="true">https://blog.suriyadisha.com/how-to-create-an-aws-billing-alarm</guid><category><![CDATA[AWS]]></category><category><![CDATA[Beginner Developers]]></category><category><![CDATA[serverless]]></category><dc:creator><![CDATA[Suriya Tasmim Disha]]></dc:creator><pubDate>Thu, 08 Dec 2022 16:20:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565120217/GJwPbXk9c.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Keeping an eye on the bills for using the AWS services is vital. However, it’s not convenient to always watch over the real-time AWS usage bills.</p>
<p>Let’s assume, you have a budget to spend USD 100 per month. You are checking your usage bills daily and it’s way below the threshold. Everything is fine so far. One day, mistakenly and unknowingly, you or your developers start running an AWS service and the usage bill crossed your threshold limit. By the time you get to know about this, the bill is already way over USD 100. This type of situation is very common and it can lead you or your company to a huge financial crisis. But, you can avoid this kind of crisis, by simply creating an <strong>AWS billing alarm</strong>.</p>
<p><strong>AWS billing alarm</strong> will send you notifications whenever it crosses your threshold limit. And, in this article, I am going to show you how you can set up your <strong>AWS billing alarm</strong> step by step.</p>
<div class="embed-wrapper"><div class="embed-loading"><div class="loadingRow"></div><div class="loadingRow"></div></div><a class="embed-card" href="https://www.youtube.com/watch?v=xR22JuhWfcI">https://www.youtube.com/watch?v=xR22JuhWfcI</a></div>
<p> </p>
<h4 id="heading-prerequisites">Prerequisites:</h4>
<ol>
<li><p>AWS account</p>
<p> <strong>Note</strong>: If you don’t have an AWS account yet, you can follow this <a target="_blank" href="https://blog.suriyadisha.com/aws-create-your-free-account-in-7-easy-steps">AWS - Create Your Free Account In 7 Easy Steps</a> guide and create one.</p>
</li>
<li><p>Signed in as an <strong>AWS root</strong> user or have proper <strong>IAM permission</strong>.</p>
</li>
</ol>
<p><strong>Important:</strong> After signing into the AWS account you need to select <strong>US East (N. Virginia)</strong> region. All the billing metric data including estimated charges for every AWS service that you use and the estimated overall total of your AWS charges are stored in this region. So, whenever you are performing any creation, modification, or deletion of billing, you need to be in this region.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565356678/j9AmyrKT8.png" alt="aws-console-select-region.png" class="image--center mx-auto" /></p>
<h3 id="heading-enable-billing-alarm-monitoring">Enable Billing Alarm Monitoring</h3>
<ol>
<li><p>Sign in to <a target="_blank" href="https://console.aws.amazon.com"><strong>AWS Management Console</strong></a><strong>.</strong></p>
</li>
<li><p>Click on the account name at the top right corner and select <strong>Billing Dashboard</strong> from the options.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565407545/qqD6ZMWM8.png" alt="choose-billing-option.png" class="image--center mx-auto" /></p>
<ol>
<li>Choose <strong>Billing Preferences</strong> from the navigation pane.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565449296/Lg5kwCuq8.png" alt="billing-dashboard.png" class="image--center mx-auto" /></p>
<ol>
<li>In the billing preferences page, select <strong>Receive Billing Alerts</strong> and choose <strong>Save Preferences</strong>.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565467979/Sk8fcahr5.png" alt="billing-preferrence-page.png" class="image--center mx-auto" /></p>
<p><strong>Important:</strong></p>
<ul>
<li><p>After enabling the billing alert, it is not possible to stop data collection. But you can delete the billing alarms at any time.</p>
</li>
<li><p>After enabling the billing alert for the first time, it can take about 15 minutes to get a view of the billing data and create any billing alarms.</p>
</li>
</ul>
<h3 id="heading-creating-a-billing-alarm">Creating a Billing Alarm</h3>
<ol>
<li><p>Go to <a target="_blank" href="https://console.aws.amazon.com/cloudwatch/"><strong>AWS Cloudwatch</strong></a><strong>.</strong></p>
</li>
<li><p>Expand <strong>Alarm</strong> and select <strong>All alarms</strong> from the navigation pane.</p>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565762056/jlNEUI-mO.png" alt="billing-dashboard.png" class="image--center mx-auto" /></p>
<ol>
<li>Choose <strong>Create Alarm.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565824409/mfJZp7eV7.png" alt="all-alarms-page.png" class="image--center mx-auto" /></p>
<ol>
<li>Click on <strong>Select metric.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565869271/piuV8vbqf.png" alt="select-metric.png" class="image--center mx-auto" /></p>
<ol>
<li>From the <strong>Browse</strong> tab choose the <strong>Billing</strong> option.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669566325971/cn8ZL-3M0.png" alt="browse-billing.png" class="image--center mx-auto" /></p>
<ol>
<li>After choosing the Billing option, choose <strong>Total Estimate Charge.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565926466/jclMHQTGt.png" alt="total-estimated-charge.png" class="image--center mx-auto" /></p>
<ol>
<li>Select the row for estimated charges and then choose <strong>Select matrix.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669565965195/jJ9rAXaBl.png" alt="select-and-save-metric.png" class="image--center mx-auto" /></p>
<ol>
<li><p>In the <strong>Specify metric and conditions</strong>:</p>
<ul>
<li><p>For the <strong>Threshold type</strong>, select <strong>Static</strong>.</p>
</li>
<li><p>For the <strong>Whenever EstimatedCharges is…</strong>, choose <strong>Greater&gt; threshold.</strong></p>
</li>
<li><p>For the <strong>than…</strong>, input a threshold value that will trigger the billing alarm.</p>
</li>
<li><p>Choose <strong>Next.</strong></p>
</li>
</ul>
</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669566008743/n01xEuCKB.png" alt="after-select-matrix.png" class="image--center mx-auto" /></p>
<ol>
<li><p>In the <strong>Configure actions Notification</strong> block, for the <strong>Alarm state trigger,</strong> select <strong>In alarm</strong> state, which will trigger the <strong>AWS SNS</strong> to send you the notification.</p>
</li>
<li><p>For the <strong>Send a notification to the following SNS topic</strong>, select an existing SNS topic or create a new one. If you choose to create a new SNS topic, then:</p>
</li>
</ol>
<pre><code class="lang-plaintext">*   For the **Create a new topic…**, input a topic name.

*   For the **Email endpoints that will receive the notification…,** you can add one or multiple email addresses.

*   Choose **Create topic**.

*   Choose **Next.**
</code></pre>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669566120795/V5HiK9Ob2.png" alt="set-sns.png" class="image--center mx-auto" /></p>
<p><strong>Note:</strong> If you want to send multiple notifications for the same alarm state or multiple alarm states, select <strong>Add notification</strong>. After that repeat the steps from 12-14.</p>
<p><strong>Important:</strong> After creating the topic, you need to accept the SNS subscription from your email.</p>
<ol>
<li>Add the <strong>Alarm name</strong>, and select <strong>Next</strong>.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669566145999/Ngw-v_Eth.png" alt="add-billing-name.png" class="image--center mx-auto" /></p>
<ol>
<li>Finally, check all the information in the <strong>Preview and create</strong> step, then choose <strong>Create alarm.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669566170670/to95PNZZ-.png" alt="create-alarm.png" class="image--center mx-auto" /></p>
<p>Now if you go to the alarm dashboard, you will see your billing alarm in the table.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669566190526/_BmAURtrE.png" alt="updated-alarm-dashboard.png" class="image--center mx-auto" /></p>
<p>Also, you will be able to view the alarm details and metrics, if you click on the alarm name.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669566201177/uc8OyW9Tr.png" alt="alarm-details.png" class="image--center mx-auto" /></p>
<p><strong>Important:</strong> In the <a target="_blank" href="https://aws.amazon.com/free/">AWS Free Tier</a>, you can use up to 10 alarms and 1,000 e-mail notifications each month for free.</p>
<p>So, I hope you were able to successfully create a billing alarm. Now, have more fun with AWS. Thank you for reading!!!</p>
]]></content:encoded></item><item><title><![CDATA[AWS - Create Your Free Account In 7 Easy Steps]]></title><description><![CDATA[Amazon Web Services (AWS) is one of the leading cloud computing platforms.
If you are looking for a solution that will make it simple for you to develop, test, and deploy your project, and after the deployment, if you want to monitor and smoothly sca...]]></description><link>https://blog.suriyadisha.com/aws-create-your-free-account-in-7-easy-steps</link><guid isPermaLink="true">https://blog.suriyadisha.com/aws-create-your-free-account-in-7-easy-steps</guid><category><![CDATA[AWS]]></category><category><![CDATA[Web Development]]></category><category><![CDATA[beginner]]></category><dc:creator><![CDATA[Suriya Tasmim Disha]]></dc:creator><pubDate>Wed, 23 Nov 2022 15:31:07 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1669202812355/d8xYq_6zu.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><strong>Amazon Web Services (AWS)</strong> is one of the leading <strong>cloud computing</strong> platforms.
If you are looking for a solution that will make it simple for you to <strong>develop</strong>, <strong>test</strong>, and <strong>deploy</strong> your project, and after the deployment, if you want to <strong>monitor</strong> and smoothly <strong>scale up and down</strong> your project depending on user demand then AWS is totally for you because it already has them!</p>
<p>Let’s have a look at the benefits of using AWS at a glance:</p>
<ul>
<li><strong>Cost-effective</strong> as you will be paying only for the computing power, storage, and other services on a usage base.</li>
<li><strong>Flexible</strong> with selecting the operating system, programming language, database, web application platform, and other services that are needed.</li>
<li><strong>Reliable</strong> as it has a secure and global computing infrastructure.</li>
<li><strong>Scalable</strong> and super <strong>Available</strong>.</li>
<li><strong>Secure</strong> as AWS provides end to end approach with their physical, software, and operational measures.</li>
<li><strong>Easy to use</strong>.</li>
</ul>
<p>Now, if you are convinced to use AWS for your business, yourself, or simply for playing around, you must first create an account with AWS in order to get started. In this article, I'll walk you through the process of setting up your account in accordance with <strong>AWS Best Practices</strong>. So, keep reading this article to the very end!</p>
<p><strong><strong>Note:</strong></strong> Creating an AWS account is free and gives you immediate access to the <a target="_blank" href="https://aws.amazon.com/free/?all-free-tier.sort-by=item.additionalFields.SortRank&amp;all-free-tier.sort-order=asc&amp;awsf.Free%20Tier%20Types=*all&amp;awsf.Free%20Tier%20Categories=*all"><strong><em>AWS Free Tier</em></strong></a>.</p>
<h3 id="heading-step-1-sign-up-for-aws">Step 1 - Sign up for AWS:</h3>
<ol>
<li>Go to <strong><a target="_blank" href="https://portal.aws.amazon.com/billing/signup?nc2=h_ct&amp;src=header_signup&amp;redirect_url=https%3A%2F%2Faws.amazon.com%2Fregistration-confirmation#/start/email"><em>AWS Sign Up</em></a></strong> page.</li>
<li><p>Fill up the <strong>Root user email address</strong>. This email will have all the administrative access in AWS.</p>
<p><strong><strong>Best Practice:</strong></strong> According to AWS, for business purposes, use a business email address (e.g. it.admins@example.com).</p>
</li>
<li><p>Fill up the <strong>AWS account name.</strong> You'll be able to change it later.</p>
<p><strong><strong>Best Practice:</strong></strong> According to AWS naming conventions, for organization, use organization-purpose-environment (e.g. abc-device_management-dev), and for personal, use first_name-last_name-purpose (e.g. john-doe-testaccount).</p>
</li>
<li>Click on the <strong>Verify email address</strong> button.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203660690/Dm6ye01Yd.png" alt="sign-up-page.png" /></p>
<h3 id="heading-step-2-verify-email-address">Step 2 - Verify email address:</h3>
<ol>
<li><p>Check your inbox. If you can’t find the email, then check your spam folder. It can take up to 5 minutes for the email to arrive.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203675207/Ig-582MQG.png" alt="verification-email.png" class="image--center mx-auto" /></p>
</li>
<li><p>Upon getting the email, copy the code. Then go back to the confirmation page and paste the code. Finally, hit the <strong>Verify</strong> button.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203688964/3jG9JQSyP.png" alt="confirmation-page.png" class="image--center mx-auto" /></p>
</li>
</ol>
<h3 id="heading-step-3-set-up-root-user-password">Step 3 - Set up root user password:</h3>
<ol>
<li>Enter <strong><strong>Root user password</strong></strong> and <strong><strong>Confirm root user password.</strong></strong></li>
<li>Press <strong>Continue.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203708871/iXiZ1sNq1.png" alt="password-setup-page.png" class="image--center mx-auto" /></p>
<h3 id="heading-step-4-set-up-contact-information">Step 4 - Set up contact information:</h3>
<ol>
<li>Choose the plan. If you are creating the account for business purposes, then select the <strong>Business</strong> option or else select the <strong>Personal</strong> option. As I am creating for my personal usage so I am going to choose the personal option.</li>
<li>Enter your <strong>Full Name.</strong></li>
<li><p>Enter your <strong>Phone Number</strong>. </p>
<p> <strong><strong>Best Practice:</strong></strong> For business, make sure to enter your company phone number.</p>
</li>
<li><p>Enter your <strong>Country or Region, Address, City, State, Province, or Region,</strong> and <strong>Postal Code</strong> one by one.</p>
</li>
<li>Read and accept the <strong><a target="_blank" href="https://aws.amazon.com/agreement/"><em>AWS Customer Agreement</em></a></strong>.</li>
<li>Recheck the information and press <strong>Continue.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203745892/WogKHPg-r.png" alt="personal-information-page.png" class="image--center mx-auto" /></p>
<h3 id="heading-step-5-set-up-billing-information">Step 5 - Set up billing information:</h3>
<ol>
<li>Enter your <strong>Credit or Debit card number.</strong></li>
<li>Enter the <strong>Expiration date</strong> of your Credit or Debit card.</li>
<li>Enter the <strong>Cardholder’s name.</strong></li>
<li>Select your contact address as your billing address. If you want to input a different address for billing, then select <strong>Use a new address</strong> and fill in the necessary information.</li>
<li>Recheck the information and press <strong>Verify.</strong></li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203760928/vS-JyQOTz.png" alt="billing-info-page.png" class="image--center mx-auto" /></p>
<p><strong><strong>Important:</strong></strong> You need to add valid billing information, or else you won’t be able to proceed with the account creation. Also, AWS will mortgage $1 USD or an equivalent amount in local currency until the completion of billing information verification. The billing information verification process can take 3-5 days to complete. When it is completed, AWS will return your money.</p>
<h3 id="heading-step-6-verify-contact-number">Step 6 - Verify contact number:</h3>
<ol>
<li>Select your <strong>Country or Region Code.</strong></li>
<li>Enter your <strong>Mobile phone number.</strong></li>
<li>Enter the correct <strong>CAPTCHA.</strong></li>
<li><p>Press <strong>Send SMS</strong> button.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203789986/Dj8dIHbIK.png" alt="contact-number-verification-page.png" class="image--center mx-auto" /></p>
</li>
<li><p>Wait for a few minutes to get the verification code for your given number.</p>
</li>
<li><p>After receiving the code, enter it and press the <strong>Verify</strong> button.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669204504301/iU9uo7qQd.png" alt="verify-code-page.png" class="image--center mx-auto" /></p>
</li>
</ol>
<h3 id="heading-step-7-select-a-support-plan">Step 7 - Select a support plan:</h3>
<ol>
<li>Select your desired <strong>Support Plan.</strong></li>
<li>Press the <strong>Complete sign up</strong> button.</li>
</ol>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203541710/VExNqQtdJ.png" alt="completion-page.png" class="image--center mx-auto" /></p>
<p><strong>Congratulations!</strong> You have completed the final step!!!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203560146/oG3HLSRZP.png" alt="congratulations-page.png" class="image--center mx-auto" /></p>
<h3 id="heading-account-activation-email">Account activation email</h3>
<p>Although you are presented with a <strong>Congratulations!</strong> message, still a button saying <strong>Complete Sign Up</strong> is showing at the top right corner of the page.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669203605235/N-PYhnax3.png" alt="congratulations-page-2.png" class="image--center mx-auto" /></p>
<p>Well, Don’t get worried. AWS is simply activating your account and within 24 hours you will get an email from them. After you get the activation email, you will have access to all AWS services.</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669204529198/nwig4w62n.png" alt="activation-email.png" class="image--center mx-auto" /></p>
<p>So, when your AWS account is ready start exploring and start building some awesome projects!!!</p>
<p><img src="https://cdn.hashnode.com/res/hashnode/image/upload/v1669219249963/TttPiG6Bv.png" alt="aws-account-dashboard.png" /></p>
<p><strong><strong>Important:</strong></strong> If you don’t get the email within the time period:</p>
<ul>
<li>Check all the steps for the signup process.</li>
<li>Check the information associated with the payment method.</li>
<li>Contact your bank to see if you have proper permission.</li>
<li>Check your email for additional information.</li>
<li>Contact <strong><a target="_blank" href="https://aws.amazon.com/support"><em>AWS Support</em></a></strong> for help.</li>
</ul>
]]></content:encoded></item></channel></rss>