<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Mayank Pathela</title>
    <description>The latest articles on DEV Community by Mayank Pathela (@starkblaze01).</description>
    <link>https://dev.to/starkblaze01</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F390266%2F95df2da4-8227-4177-9458-f21944bdfab7.jpg</url>
      <title>DEV Community: Mayank Pathela</title>
      <link>https://dev.to/starkblaze01</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/starkblaze01"/>
    <language>en</language>
    <item>
      <title>The Power of Console API</title>
      <dc:creator>Mayank Pathela</dc:creator>
      <pubDate>Thu, 23 Sep 2021 13:22:40 +0000</pubDate>
      <link>https://dev.to/starkblaze01/the-power-of-console-api-2dlo</link>
      <guid>https://dev.to/starkblaze01/the-power-of-console-api-2dlo</guid>
      <description>&lt;p&gt;When working with a JavaScript project, the most common debugging method we use is putting the &lt;code&gt;console.log("Something happened here", {some_variable})&lt;/code&gt; in between the lines of code and passing some irrelevant and relevant information respectively as parameters to identify where and when the problem occurred.&lt;/p&gt;

&lt;p&gt;Have you ever wondered what the other methods supported by &lt;code&gt;console&lt;/code&gt; except for &lt;code&gt;console.log()&lt;/code&gt; are? Let's walk through some of those fantastic methods in this blog.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Console API used for?
&lt;/h2&gt;

&lt;p&gt;Console API provides the functionality to allow the users to perform the debugging level tasks, like logging values of any variable, tracking execution time at different set points in the code.&lt;/p&gt;

&lt;p&gt;The most common way to access it using the &lt;code&gt;console&lt;/code&gt; object, which can be accessed from anywhere with global scope access. Also, it is supported by &lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API" rel="noopener noreferrer"&gt;Web Workers&lt;/a&gt; that’s why it can be easily used in browsing scope without working about concurrency.&lt;/p&gt;

&lt;p&gt;Now, let’s have a look over some of the methods provided by it&lt;/p&gt;

&lt;p&gt;(&lt;em&gt;Note:&lt;/em&gt; I will be using Chrome console, and the output format may differ for different browsers):&lt;/p&gt;

&lt;h2&gt;
  
  
  Outputting the values on the console:
&lt;/h2&gt;

&lt;p&gt;Primarily there are four standard methods you can access to print a text on the console:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;console.log()&lt;/code&gt; - This most popular method outputs a message to the console.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzt2abchqc5mey3y7pi9t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzt2abchqc5mey3y7pi9t.png" alt="img1a" width="800" height="79"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;console.info()&lt;/code&gt; - This method outputs the value in the same way as the &lt;code&gt;console.log()&lt;/code&gt;. Some browsers may add the info icon or may format the output differently. For, e.g., in the below image, you can see the &lt;code&gt;console.log()&lt;/code&gt; is identified by my React Devtools extension and override it, but the &lt;code&gt;console.info()&lt;/code&gt; is not recognized by it, so it is run by the native browser environment:&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9go8x7283dy77qtu521n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9go8x7283dy77qtu521n.png" alt="img2a" width="800" height="158"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;console.warn()&lt;/code&gt; - This method outputs a warning message to the Web console.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46ljbltcglffqj25txxr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F46ljbltcglffqj25txxr.png" alt="img3a" width="800" height="58"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;console.error()&lt;/code&gt; - This method outputs an error message to the Web console.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxiaplkdak227l6og3b9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxxiaplkdak227l6og3b9.png" alt="img4a" width="800" height="55"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Apart from these four, there are other methods to output on the console like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;console.dir()&lt;/code&gt; - Displays an interactive listing of the properties of a specified JavaScript object. This listing lets you use disclosure triangles to examine the contents of child objects.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Key difference between &lt;code&gt;console.log()&lt;/code&gt; and &lt;code&gt;console.dir()&lt;/code&gt;&lt;/strong&gt;-  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bh5cpgdyvhpvci36bsj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3bh5cpgdyvhpvci36bsj.png" alt="img5a" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, &lt;code&gt;console.log()&lt;/code&gt; prints it HTML-like tree but &lt;code&gt;console.dir()&lt;/code&gt; print it in a JSON-like tree.&lt;/p&gt;

&lt;p&gt;Another similar method is the &lt;code&gt;console.dirxml()&lt;/code&gt;, which displays an XML/HTML Element representation of the specified object if possible or the JavaScript Object view if it is not possible.&lt;/p&gt;

&lt;h4&gt;
  
  
  Printing the data in the tabular format:
&lt;/h4&gt;

&lt;p&gt;We often have the tabular data that we got in the response from any SQL query or API response. Consider using the &lt;code&gt;console.table(${data}, ${column})&lt;/code&gt; method for the same. E.g. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxklyx3m2t02thkzwyva.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuxklyx3m2t02thkzwyva.png" alt="img6a" width="800" height="737"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Secret sauce: Try clicking on the column headings, and don’t get surprised if you see sorted values.&lt;/p&gt;

&lt;h2&gt;
  
  
  Applying CSS to the output values:
&lt;/h2&gt;

&lt;p&gt;It’s pretty cool that we can format the text we want to print just by using the &lt;code&gt;%c&lt;/code&gt; directive with the text we want to print. Let’s dive into the below example to have a close look:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4c7f9xyvzv4epewwm4mc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4c7f9xyvzv4epewwm4mc.png" alt="img7a" width="800" height="62"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Awesome! Isn’t it?&lt;/p&gt;

&lt;p&gt;Let’s have a look at another example with different stylings in the same output:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvt8fi60a2cvtfw5u3ic2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvt8fi60a2cvtfw5u3ic2.png" alt="img8a" width="800" height="71"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Printing in the nested group level:
&lt;/h2&gt;

&lt;p&gt;We can use &lt;code&gt;console.group()&lt;/code&gt;, &lt;code&gt;console.groupCollapsed()&lt;/code&gt;, and &lt;code&gt;console.groupEnd()&lt;/code&gt; methods to log the values in a nested format.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuvr2x3mffrf7fw70u6eu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuvr2x3mffrf7fw70u6eu.png" alt="img9a" width="800" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, &lt;code&gt;console.warn()&lt;/code&gt;, and &lt;code&gt;console.error()&lt;/code&gt; has been used. That's why the final outputs are formatted. Also, the Second Inner level is in the collapsed form.&lt;/p&gt;

&lt;h2&gt;
  
  
  Tracking the time of any process:
&lt;/h2&gt;

&lt;p&gt;Say we want to track how much time a function takes for the execution, so rather than using any external function we can use &lt;code&gt;console.time()&lt;/code&gt;, &lt;code&gt;console.timeLog()&lt;/code&gt;, and &lt;code&gt;console.timeEnd()&lt;/code&gt;.&lt;br&gt;
For example:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjwoktstjj9asx8jq4ij.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvjwoktstjj9asx8jq4ij.png" alt="img10a" width="800" height="240"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here, &lt;code&gt;console.time("Task 1")&lt;/code&gt; started the timer, &lt;code&gt;console.timeLog("Task 1")&lt;/code&gt; logs the time in between Task 1 and &lt;code&gt;console.timeEnd("Task 1")&lt;/code&gt; ends the timer and prints the final value at the end. Once the timer is stopped, we cannot reaccess it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08016nzli1pdey5r452n.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F08016nzli1pdey5r452n.png" alt="img11a" width="800" height="95"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Stack trace and conditional tracing of function execution:
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;console.trace()&lt;/code&gt; and &lt;code&gt;console.assert()&lt;/code&gt; are practical methods that help trace back the stack of the execution. The difference between these methods is that the &lt;code&gt;console.assert()&lt;/code&gt; will only print the stack trace if the first parameter is false and will also print in the same way &lt;code&gt;console.error()&lt;/code&gt; method does.&lt;/p&gt;

&lt;p&gt;E.g.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs0t56j1ufr7a0vnoxhd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbs0t56j1ufr7a0vnoxhd.png" alt="img12a" width="800" height="1113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Count the number of times a line is being executed:
&lt;/h2&gt;

&lt;p&gt;Suppose you want to track how many times a function has been called, say any recursive function, then &lt;code&gt;console.count()&lt;/code&gt; and &lt;code&gt;console.countReset()&lt;/code&gt; are a great help. For e.g.&lt;/p&gt;

&lt;p&gt;In the above example, you can see it prints the value of how many times the label a has been called, and after calling reset, it goes back to 1 on the next call.&lt;/p&gt;

&lt;h2&gt;
  
  
  String Substitution using the directives:
&lt;/h2&gt;

&lt;p&gt;You can format the string and substitute it using &lt;code&gt;%s&lt;/code&gt;, &lt;code&gt;%o&lt;/code&gt; or &lt;code&gt;%O&lt;/code&gt;, and &lt;code&gt;%d&lt;/code&gt; or &lt;code&gt;%i&lt;/code&gt;, &lt;code&gt;%f&lt;/code&gt; directives. (For showing a few examples, I am using Firefox console as Chrome console doesn’t support precision formatting)  &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbv5y2o5soz60ir16tx8a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbv5y2o5soz60ir16tx8a.png" alt="img13a" width="800" height="320"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These were the methods provided by the Console API to make life easier, but before wrapping up, it’s worth noting how Console API works in browsers vs. how it works in NodeJS stream. &lt;/p&gt;

&lt;p&gt;It’s synchronous for browsers, but for NodeJS streams, it’s neither consistently synchronous nor consistently asynchronous like all other Node.js streams. In NodeJS, they internally use &lt;code&gt;process.stdout&lt;/code&gt; and &lt;code&gt;process.stderr&lt;/code&gt;, and these two streams write synchronous or asynchronous depending on what the stream is connected to and whether the system is Windows or POSIX. The following is the write operation behavior of these two NodeJS process streams:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Files: synchronous on Windows and POSIX&lt;/li&gt;
&lt;li&gt;TTYs (Terminals): asynchronous on Windows, synchronous on POSIX&lt;/li&gt;
&lt;li&gt;Pipes (and sockets): synchronous on Windows, asynchronous on POSIX&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And that’s a wrap!&lt;/p&gt;

&lt;h2&gt;
  
  
  References:
&lt;/h2&gt;

&lt;p&gt;&lt;a href=""&gt;MDN&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href=""&gt;NodeJS API Ref&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>console</category>
      <category>webdev</category>
      <category>frontend</category>
    </item>
    <item>
      <title>Deep Dive into Front-End Accessibility Issues</title>
      <dc:creator>Mayank Pathela</dc:creator>
      <pubDate>Fri, 21 May 2021 06:18:21 +0000</pubDate>
      <link>https://dev.to/starkblaze01/deep-dive-into-the-accessibility-issues-of-front-end-34je</link>
      <guid>https://dev.to/starkblaze01/deep-dive-into-the-accessibility-issues-of-front-end-34je</guid>
      <description>&lt;p&gt;Looking into the complexity of the web-development one of the most common issue that arises in handling big websites is the accessibility issue. Let's deep dive into some common problems and learn how to avoid those.&lt;/p&gt;

&lt;h2&gt;
  
  
  The term "Accessibility" in front-end context
&lt;/h2&gt;

&lt;p&gt;Accessibility for a web app aims to make it usable by as many people in as many contexts as possible, varying from low to high powered desktop users, and making it sensible for people with disability. We may be not able to achieve 100% of it but can develop a web app keeping our target audience in mind. &lt;br&gt;
Before Jumping into the development it's better to have a User Persona and the limitations they have. &lt;/p&gt;

&lt;h2&gt;
  
  
  HTML you say? What possibly could go wrong with it?
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbiq7rpyqhhz21bfu8njf.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbiq7rpyqhhz21bfu8njf.jpeg" alt="HTML Easy-Peasy" width="800" height="778"&gt;&lt;/a&gt;&lt;br&gt;
Most people think that HTML is a piece of cake and underestimates the power it has. There are over 100 HTML5 tags that are supported by modern browsers &lt;em&gt;(Find the whole list &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element" rel="noopener noreferrer"&gt;here&lt;/a&gt;).&lt;/em&gt; We don't use all the tags on day to day basis but it might come in handy to use them sometimes which can avoid the excess use of JS in your codebase. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Semantic Issues:&lt;/strong&gt;&lt;br&gt;
Always use proper HTML tags instead of implementing things just to make things work out the way you want.&lt;br&gt;
Here are some of the key issues I notice very often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Often use of &lt;code&gt;&amp;lt;br&amp;gt;&lt;/code&gt; tag instead of wrapping up their content in the &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tag. &lt;/li&gt;
&lt;li&gt;Multiple &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; tags on a single webpage. The title inside the &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; is supposed to reflect the purpose of that very webpage. If you want to highlight any section of the page use different Heading tags and use only a single &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; tag per page. Have proper signposts in the form of headings to help users find their concerned part of content quickly.&lt;/li&gt;
&lt;li&gt;Unstructured Content flow on the Page. Either the CSS is being used or not the content of the page itself should make the sense. If you want to validate that then try disabling the CSS and check if it looks good(you can download &lt;a href="https://chrispederick.com/work/web-developer/" rel="noopener noreferrer"&gt;Web Developer&lt;/a&gt; extension for your browser and Disable CSS). Don't use CSS to control fonts if it can be done by using different HTML tags.&lt;/li&gt;
&lt;li&gt;No &lt;code&gt;alt&lt;/code&gt; attribute for &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tag. Always add this property to let the user know what was supposed to be there in case a broken image is loaded because of low network bandwidth.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Apart from semantic issues, there are few things worth noting to make your web page from better to best, Sometimes, users want more keyboard accessibility rather than using a mouse. They just use &lt;code&gt;Tab&lt;/code&gt; and &lt;code&gt;Shift + Tab&lt;/code&gt; to move around the webpage. So, try to ensure that the flow of the page is going in the right direction and it's easier for a user to navigate around. Always check for cross-browser compatibility of your elements, for example, IE9 behaves differently than most other browsers when a &lt;code&gt;poster&lt;/code&gt; attribute is set in the &lt;code&gt;&amp;lt;video&amp;gt;&lt;/code&gt; tag. Most browsers interpret the presence of a &lt;code&gt;poster&lt;/code&gt; attribute to mean that the specified image is to be displayed until the user chooses to play the video. IE9 will only use the specified poster image in this way if preload="none" is set; otherwise, it will take the first still of the video and display that instead. Also, try using the &lt;code&gt;&amp;lt;track&amp;gt;&lt;/code&gt; tag to add subtitles for your video to be understandable by people with disability. &lt;/p&gt;

&lt;h2&gt;
  
  
  Ah CSS! That's where everything goes wrong
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq1aifiv62sxiaqtso4b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiq1aifiv62sxiaqtso4b.png" alt="CSS you say?" width="568" height="335"&gt;&lt;/a&gt;&lt;br&gt;
It can be summarized in a simple sentence: &lt;em&gt;Don't Overkill!&lt;/em&gt; There's a lot you can do with CSS but it doesn't mean to use it everywhere even when it's not needed. Pouring in the extra animations and transitions can be distracting. As a developer, we may appreciate the work and thought process you have put into it to make it happen but if it's distracting the target audience from focusing on the concerned content then it's of no use. Always keep it simple. &lt;br&gt;
Adding extra colours never helps. Decide on a theme with the minimum set of colours. You are creating a web page, not a colour palate(unless you are). And always check if the different colours are in contrast and make the content more readable. You can use &lt;a href="https://webaim.org/resources/contrastchecker/" rel="noopener noreferrer"&gt;WebAIM&lt;/a&gt; to pick colours for better contrast. &lt;br&gt;
On a side note check for cross-browser compatibility for CSS too.&lt;/p&gt;

&lt;h2&gt;
  
  
  For JS it's complicated
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphm61o522b96zg2y86nl.jpeg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fphm61o522b96zg2y86nl.jpeg" alt="JS, it's Complicated" width="640" height="857"&gt;&lt;/a&gt;&lt;br&gt;
It always adds complexity to a webpage. Always be sure whether to use it or not. Sometimes it hard to decide whether to use repetitive &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; or simply put in a JS snippet. Try to optimize your code as much you can, because low-computation devices might not be able to render that and it's not scalable. There isn't much data you can store on the browser using cookies. Decide for yourself what's important data which user wants to quickly access first when visiting the webpage and compare trade-offs storing it on client-side or server-side. &lt;br&gt;
Nowadays every other website has content dynamically loaded and JS is heavily used to fetch and update the data, to minimize the use of JS for controlling the data try using &lt;a href="https://www.w3.org/TR/wai-aria-1.1/" rel="noopener noreferrer"&gt;WAI-ARIA&lt;/a&gt; which provides semantics in the form of new HTML attributes. For example, if the content is regularly updated then use the &lt;code&gt;aria-live&lt;/code&gt; attribute to decide when to update the data so that the user doesn't miss it depending on its importance. You can set its value to the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;off&lt;/code&gt;: The default. Updates should not be announced&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;polite&lt;/code&gt;: Updates should be announced only if the user is idle&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;assertive&lt;/code&gt;: Updates should be announced to the user as soon as possible&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's a wrap! But there are many more things you can explore and do, and knowing your target audience always ends up creating a better web app.&lt;/p&gt;

&lt;h3&gt;
  
  
  References:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3.org/TR/wai-aria-1.1/" rel="noopener noreferrer"&gt;WAI-ARIA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://webaim.org/resources/contrastchecker/" rel="noopener noreferrer"&gt;WebAIM&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>frontend</category>
      <category>a11y</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tweets as an Image</title>
      <dc:creator>Mayank Pathela</dc:creator>
      <pubDate>Mon, 17 Aug 2020 17:32:24 +0000</pubDate>
      <link>https://dev.to/starkblaze01/tweets-as-an-image-5fmh</link>
      <guid>https://dev.to/starkblaze01/tweets-as-an-image-5fmh</guid>
      <description>&lt;p&gt;After GitHub allows us to use README.md to showcase our portfolio on our GitHub profile many cool README generator projects came up, and I thought of adding the latest Tweet of any User will be a nice addition to it, so I started figuring out multiple ways to do so, and developed the &lt;a href="https://github.com/starkblaze01/Tweets-as-an-Image" rel="noopener noreferrer"&gt;project&lt;/a&gt; using Canvas, Puppeteer, and Twitter API.&lt;/p&gt;

&lt;h2&gt;
  
  
  First Version:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  How I made it:
&lt;/h3&gt;

&lt;p&gt;I used Puppeteer to open a headless Chrome at the server-side, then I am creating a Canvas over which I will be writing down the Tweet's Text. &lt;br&gt;
I used Tweet API: &lt;code&gt;https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=&lt;/code&gt;, fed in the user's handle and a nice get request will simply deliver the user's activity info. By fetching the last Tweet's id I made another API call and gets a sweet response which I needed. &lt;br&gt;
After getting the response I am simply putting the text response on the canvas I earlier and taking a snapshot of it and sending it back as an Image whenever you request to the API end-point this project provides you with a Twitter handle in the Query part.&lt;/p&gt;

&lt;h3&gt;
  
  
  API for Version 1:
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;https://tweets-as-an-image.herokuapp.com/?twitterHandle={your_twitter_handle_here}&amp;amp;count={number_of_tweets_you_want_to_fecth}&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sample Image from Version 1 response:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frahrs8drypak6x68dnkz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2Frahrs8drypak6x68dnkz.png" alt="Sample Image for version1" width="800" height="307"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since I have the text here, I can do a lot of things, changing fonts, colours, adding designs, borders. But then I ran into a problem. The response I was getting was not a complete text, it was adding &lt;code&gt;...&lt;/code&gt; at the end of the Tweet's text was long. Isn't it a bit weird? As the number of characters is already limited of a Tweet. &lt;/p&gt;

&lt;p&gt;So, I started looking for a different way and came across the &lt;code&gt;oEmbed&lt;/code&gt; format. It's a simple yet powerful API that allows a website to display embedded content (such as photos or videos) when a user posts a link to that resource, without having to parse the resource directly. And then there was a...&lt;/p&gt;

&lt;h3&gt;
  
  
  Version 2:
&lt;/h3&gt;

&lt;p&gt;Steps are pretty much similar to Version 1, but here instead of creating a canvas I am feeding in the HTML file to the Puppeteer and taking the snapshot of it. Here's the &lt;code&gt;oEmbed&lt;/code&gt; URL for Twitter which I used: &lt;code&gt;https://publish.twitter.com/oembed?url=https://twitter.com/&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  API for version 2:
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;https://tweets-as-an-image.herokuapp.com/tweet?twitterHandle={your_twitter_handle}&amp;amp;id={your_tweet_id}&amp;amp;theme={light_or_dark}&amp;amp;maxwidth={max_width_of_your_tweet_image}&amp;amp;height={height_of_the_image}&amp;amp;lang={language}&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sample Image from Version 2 response:
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F86taulcxzyfhh8i03m8g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fi%2F86taulcxzyfhh8i03m8g.png" alt="Sample Image for Version 2" width="639" height="277"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There are many other query params that you can include like language, width, height, etc.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You can find the details for the same along with the steps to deploy your version of this project here in my &lt;a href="https://github.com/starkblaze01/Tweets-as-an-Image" rel="noopener noreferrer"&gt;GitHub repository REAMDE.md&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Also, this one's worth noting that I am keeping the browser open at the top to reduce the response time(it will take time at the first call but the consecutive calls will have less response time):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tt3sqgi5unuewwxwuvv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7tt3sqgi5unuewwxwuvv.png" alt="image" width="474" height="113"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since I am using a free version of Heroku Dyno, so it might in sleep mode and you may not get any response on the first try, so please try again after a few minutes when you make your first call. Everything should work fine :) &lt;/p&gt;

&lt;p&gt;P.S. Cheers! Keep Learning!&lt;/p&gt;

</description>
      <category>twitter</category>
      <category>githubreadme</category>
      <category>canvas</category>
      <category>puppeteer</category>
    </item>
    <item>
      <title>GitHub Profile Stalker</title>
      <dc:creator>Mayank Pathela</dc:creator>
      <pubDate>Wed, 20 May 2020 08:02:11 +0000</pubDate>
      <link>https://dev.to/starkblaze01/github-profile-stalker-3fl9</link>
      <guid>https://dev.to/starkblaze01/github-profile-stalker-3fl9</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;Finally my first Blog here and a tribute to &lt;a href="https://education.github.com/pack" rel="noopener noreferrer"&gt;GitHub Student Developer Pack&lt;/a&gt; which helped me throughout my college life by providing awesome helpful resources to enhance my skills and gave me a great learning curve.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In this blog, I will be discussing my &lt;em&gt;GitHub Profile Stalker&lt;/em&gt; project in brief and will be more of &lt;code&gt;what&lt;/code&gt; I did rather than &lt;code&gt;how&lt;/code&gt; I did.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;P.S. Feel free to reach me out in case you face a problem in understanding the &lt;code&gt;how&lt;/code&gt; part after looking at the code ;)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://github-profile-stalker.netlify.app" rel="noopener noreferrer"&gt;Click here to check Deployed build&lt;/a&gt;&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.dev.to%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/starkblaze01" rel="noopener noreferrer"&gt;
        starkblaze01
      &lt;/a&gt; / &lt;a href="https://github.com/starkblaze01/git-stalk" rel="noopener noreferrer"&gt;
        git-stalk
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Love stalking GitHub Profile. Then try this out!!
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;git-stalk&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;Love stalking GitHub Profile? Check what your peers are upto😈&lt;/p&gt;
 &lt;/div&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Build&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://app.netlify.com/sites/github-profile-stalker/deploys" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/cee66e0f9bb9b522e0a7c9d82560cb0227c77cf721b22f49f13b68278e65e803/68747470733a2f2f6170692e6e65746c6966792e636f6d2f6170692f76312f6261646765732f30373839366433662d623263352d343339622d393864612d3031346637343365336430322f6465706c6f792d737461747573" alt="Netlify Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Blog&lt;/h2&gt;

&lt;/div&gt;
&lt;a href="https://dev.to/starkblaze01/github-profile-stalker-3fl9" rel="nofollow"&gt;
  &lt;img src="https://camo.githubusercontent.com/4248a8cc287ab4cdca183a0b0cebd3c86d960933d409313134fcf54503fedfaa/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6465762e746f2d2532333038303930412e7376673f267374796c653d666f722d7468652d6261646765266c6f676f3d6465762e746f266c6f676f436f6c6f723d7768697465" alt="devto"&gt;
&lt;/a&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;How to Start the Project&lt;/h2&gt;

&lt;/div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt; npm i&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Create a .env in the root folder and Set Environment Variable: &lt;code&gt;REACT_APP_OAUTH_TOKEN = Your GitHub OAUTH Token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt; npm start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;&lt;strong&gt;Note:&lt;/strong&gt;&lt;/em&gt; You can still run the project without setting the environment varibale. It's just to increase &lt;a href="https://developer.github.com/v3/#rate-limiting" rel="noopener noreferrer"&gt;Rate Limit&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;To Create Optimized Build&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;code&gt;npm run build&lt;/code&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Why I made this?&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;Because I wanted to explore GitHub API and have fun with it. And also I was inspired by this awesome &lt;a href="https://github.com/aashutoshrathi/git-profiler-bot" rel="noopener noreferrer"&gt;telegram bot&lt;/a&gt; made by &lt;a href="https://github.com/aashutoshrathi" rel="noopener noreferrer"&gt;Aashutosh Rathi&lt;/a&gt; for which he had to pay monthly bill of 1 INR because of me😓.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Special Thanks&lt;/h2&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://developer.github.com/v3/" rel="noopener noreferrer"&gt;GitHub API&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Author:&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;&lt;a href="https://github.com/starkblaze01" rel="noopener noreferrer"&gt;Mayank Pathela&lt;/a&gt; - &lt;a href="https://starkblaze01.netlify.com" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Liked the project? Hit the star button to support!&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;What to Contribute?&lt;/h3&gt;

&lt;/div&gt;
&lt;p&gt;Create an Issue &lt;a href="https://github.com/starkblaze01/git-stalk/issues/new" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/starkblaze01/git-stalk" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;p&gt;&lt;strong&gt;Technologies used in this project:&lt;/strong&gt; &lt;a href="https://create-react-app.dev/docs/adding-typescript/" rel="noopener noreferrer"&gt;React-ts&lt;/a&gt;, &lt;a href="https://ant.design/" rel="noopener noreferrer"&gt;Ant Design&lt;/a&gt;, &lt;a href="https://docs.github.com/en/rest" rel="noopener noreferrer"&gt;GitHub API&lt;/a&gt;, &lt;a href="https://cssinjs.org/?v=v10.6.0" rel="noopener noreferrer"&gt;JSS&lt;/a&gt;, &lt;a href="https://redux.js.org/" rel="noopener noreferrer"&gt;Redux&lt;/a&gt;, &lt;a href="https://www.netlify.com/" rel="noopener noreferrer"&gt;Netlify&lt;/a&gt;, and ....nah, let's keep it to this only.&lt;/p&gt;

&lt;p&gt;I love stalking GitHub profiles and check the activity of awesome developers out there. Yep, you got that right, why not simply go to their GitHub profile check that, ...or maybe recreate something of my own which might help me learn something new along the way. &lt;br&gt;
The first thought that came to my mind was to create a scraper to get the desired content, but the profile page on GitHub wouldn't have given me all the information I needed and will need to make multiple calls, and eventually, this would have decreased the performance of the desired application. So, then I thought why not use GitHub API, it might be fun exploring it. Hell yeah! it was! You can do a lot of kinds of stuff using it, automate many things and create many applications around it. Now I have the API &lt;code&gt;end-point&lt;/code&gt; which will give me desired data, let's work on displaying the data in some manner that will be less criticised by developers out there.&lt;br&gt;
So, which one's the most famous Frontend technology to use for displaying the data, any guesses? yeah, you guessed it right! it's React(no not you Angular, please be seated. P.S. apologies to Angular lovers)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjaynahzf1di48ngucodu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjaynahzf1di48ngucodu.jpg" alt="ReactAngular" width="500" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But why just simply use React, maybe something different this time, so to cover up that &lt;strong&gt;different&lt;/strong&gt; part I used React Typescript.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9uxuf1m51gxxg8c066z0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9uxuf1m51gxxg8c066z0.jpg" alt="ReactTS" width="500" height="559"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The majority of the tech industry believes in using ReactTS over ReactJS, but it's a very subjective topic which one's better to use, so let's save this controversy for some other time.&lt;/p&gt;

&lt;p&gt;Next up I added a flavour of CSS in JS style. There are many libraries out there: JSS, Styled Components, Emotion, Styled-JSX... I picked JSS for my project and Ant Design for basic UI components. Then simply mix it up, wrap it up in the Redux store for easy state management and your project is ready.&lt;br&gt;
For deploying I prefer Netlify, it's really easy to set up, though I would point of that I forgot to add &lt;em&gt;History API fallback&lt;/em&gt; so whenever I was clicking the back button after searching for a User's profile it was throwing Not Found Error for Netlify Deploy but working fine locally, so, I have to add &lt;a href="https://github.com/starkblaze01/git-stalk/blob/master/_redirects" rel="noopener noreferrer"&gt;_redirects&lt;/a&gt; file in the root of my project folder and the problem solved.&lt;/p&gt;

&lt;p&gt;That's all folks, and if you are in college go grab your GitHub Student Developer Pack and learn about these awesome technologies with the subscriptions that you can claim along with it.&lt;/p&gt;

&lt;p&gt;Cheers! Keep Learning!&lt;/p&gt;

</description>
      <category>octograd2020</category>
      <category>githubsdp</category>
      <category>githubapi</category>
      <category>react</category>
    </item>
  </channel>
</rss>
