<?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: Vinay Kishore</title>
    <description>The latest articles on DEV Community by Vinay Kishore (@vinaykishore).</description>
    <link>https://dev.to/vinaykishore</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%2F674806%2F7e912b0b-c00a-4de7-878b-99b69b1e2d30.jpg</url>
      <title>DEV Community: Vinay Kishore</title>
      <link>https://dev.to/vinaykishore</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/vinaykishore"/>
    <language>en</language>
    <item>
      <title>How does asynchronous JavaScript work behind the scenes?</title>
      <dc:creator>Vinay Kishore</dc:creator>
      <pubDate>Sun, 16 Jan 2022 13:49:52 +0000</pubDate>
      <link>https://dev.to/vinaykishore/how-does-asynchronous-javascript-work-behind-the-scenes-4bjl</link>
      <guid>https://dev.to/vinaykishore/how-does-asynchronous-javascript-work-behind-the-scenes-4bjl</guid>
      <description>&lt;h2&gt;
  
  
  Introduction:
&lt;/h2&gt;

&lt;p&gt;Before going deep into the &lt;strong&gt;core of the JavaScript&lt;/strong&gt; runtime and how async code tasks are run behind the scenes, let’s get the basics clear. JavaScript is a &lt;strong&gt;single-threaded&lt;/strong&gt; language. This means it has only one call stack and one memory heap. Hence, it can only execute &lt;strong&gt;one code at a time&lt;/strong&gt;. In other words, the code is executed in an orderly fashion. It must execute one code in the call stack before moving to the next code to be executed. There are two types of code tasks in JavaScript, asynchronous code which runs and gets executed after certain loading, synchronous, which gets executed instantaneously. Let us understand the difference between the synchronous and asynchronous code before moving further.  &lt;/p&gt;

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

&lt;h3&gt;
  
  
  Synchronous code:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Most of the code is &lt;strong&gt;synchronous&lt;/strong&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is executed in a line-by-line fashion, i.e., each line of code waits before the previous line to finish its execution.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Long-running code operations &lt;strong&gt;block&lt;/strong&gt; the code execution for further stacked code executions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Asynchronous code:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Asynchronous code isn’t synchronous. I.e., the code is executed after a task that runs in the background finishes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;It is &lt;strong&gt;non-blocking&lt;/strong&gt; in nature. Execution doesn’t wait for an asynchronous task to finish its work.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Callback functions alone don’t make the code asynchronous. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Runtime:
&lt;/h2&gt;

&lt;p&gt;Runtime is the environment in which a programming language executes. JavaScript’s runtime majorly constitutes three things namely &lt;strong&gt;JavaScript Engine, Web API, Call stack&lt;/strong&gt;. JavaScript can work with asynchronous code as well as synchronous code. &lt;/p&gt;

&lt;p&gt;The unique feature of JavaScript’s runtime is that even though JavaScript’s interpreter is single-threaded, it can execute multiple codes at a time using &lt;strong&gt;concurrent fashion in a non-blocking way&lt;/strong&gt;. This enables asynchronous behavior.  As the interpreter is not multithreaded, it rules out parallelism. Let’s understand what is the difference between concurrency and parallelisms. &lt;/p&gt;

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

&lt;h3&gt;
  
  
  Concurrency:
&lt;/h3&gt;

&lt;p&gt;Under this approach, the tasks run and complete in an &lt;strong&gt;interleaved fashion&lt;/strong&gt;. I.e., the tasks run concurrently but at a given point of time, only one task is being executed. This happens when the tasks are braked into small parts and are managed pretty well. This is also shown in the figure below.  &lt;/p&gt;

&lt;h3&gt;
  
  
  Parallelism:
&lt;/h3&gt;

&lt;p&gt;In contrast, under the approach of parallelism, we can the tasks run &lt;strong&gt;simultaneously&lt;/strong&gt;, i.e., at a particular point of time many tasks can run regardless of other tasks running. This happens when we multithread the tasks into different threads available for the interpreter. &lt;/p&gt;

&lt;p&gt;Having understood that JavaScript runtime follows a concurrent fashion of execution, let us understand how different code is executed behind the scenes smartly. To understand the process of execution, we need to understand the structure of JavaScript runtime in detail.&lt;/p&gt;

&lt;h2&gt;
  
  
  JavaScript Engine:
&lt;/h2&gt;

&lt;p&gt;JavaScript engine can be considered as the &lt;strong&gt;heart&lt;/strong&gt; of the runtime. It is the place where each code is executed. JavaScript engine constitutes of Heap storage and call stack. Let’s understand each of those. &lt;/p&gt;

&lt;h3&gt;
  
  
  Heap :
&lt;/h3&gt;

&lt;p&gt;It is the place where all the objects and data are stored. This is similar to the heap storage we see on various other languages like C++, Java, etc. It contains the store of the data related to all the objects, arrays, etc. that we create in the code.&lt;/p&gt;

&lt;h3&gt;
  
  
  Call Stack:
&lt;/h3&gt;

&lt;p&gt;It is the place where the code is stacked before the execution. It has the properties of a basic stack( first in last out ). Once a coding task is stacked into the call stack, it will be executed. There is an event loop that takes place and this is the one that makes the JavaScript interpreter smart. It is responsible for concurrent behavior.&lt;/p&gt;

&lt;h2&gt;
  
  
  Web API:
&lt;/h2&gt;

&lt;p&gt;JavaScript has the access to different web API’s and it adds a lot of functionality. For example, JavaScript has the access to the &lt;strong&gt;DOM API&lt;/strong&gt;, which gives access to the DOM tree to JavaScript. Using this, we can make changes to the HTML elements present on the browser. Also, you can think of the timer, which gives it access to the time-related functions, etc. Also, the geolocation API which gives it access to the location of the browser. Like this, &lt;strong&gt;JavaScript has the access to various other APIs&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Callback Queue:
&lt;/h2&gt;

&lt;p&gt;This is the place where asynchronous code is queued before passing to the call stack. The passing of the code task from the callback queue to the call stack is taken care of by the event loop. In addition to this, there is also a micro tasks queue.&lt;/p&gt;

&lt;h2&gt;
  
  
  Micro tasks Queue:
&lt;/h2&gt;

&lt;p&gt;The microtasks queue is similar to the callback queue but has a higher priority of execution than it. In other words, if there is a situation where the call stack is empty (except the global execution context ) and there are two tasks to be executed, one from the micro-tasks queue and the other from the normal task queue or callback queue, then the code task present in the microtask queue has the higher priority than the latter.&lt;/p&gt;

&lt;p&gt;Having understood the basic terminologies involved, let’s quickly understand how the asynchronous code work.&lt;/p&gt;

&lt;h2&gt;
  
  
  How does asynchronous JavaScript work behind the scenes?
&lt;/h2&gt;

&lt;p&gt;Here, we get introduced to the concept of the event loop. In simple words, an event loop can be defined as a &lt;strong&gt;smart technique&lt;/strong&gt; of execution of executing the code from the callback queue by passing into the call stack, once it is found to be empty ( Except the global execution context ).&lt;/p&gt;

&lt;p&gt;The event loop decides when to execute each code task present in the callback queue and the micro-tasks queue. Let us understand the execution process of all the code in an imaginary situation. Let us try to generalize the process into different steps : &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;All the code tasks present in the call stack are executed in an orderly fashion. It is synchronous and waits for the previous code task to be executed. In this step, all the code tasks in the call stack are executed. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once the asynchronous task finishes getting loaded in the background, it is sent to the callback queue. The callback function attached to this asynchronous task is waiting to be executed right here. This asynchronous is then queued up to be executed in the callback queue.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Now, the part of event loops comes into play. The event loop continuously checks if the call stack is empty and once it finds it to be empty, it takes the first task in the callback queue and stacks it into the call stack which is then executed. This process continues until the event loop finds the call stack and callback queue to be empty. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Do promises also go to the callback queue?
&lt;/h2&gt;

&lt;p&gt;No, let us understand how they work behind the scenes. Promises are also a special type of asynchronous tasks which once after loading get queued up in a special place called micro tasks queue. This microtasks queue has higher priority as compared to the callback queue when execution. The event loop also checks for the tasks in the micro-tasks queue when checking for tasks to be executed in the callback queue. If it finds any task to be executed, then it gives the micro-tasks higher priority and they are executed first. &lt;/p&gt;

&lt;h3&gt;
  
  
  Example:
&lt;/h3&gt;

&lt;p&gt;YouTube: &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ayjiyzwmh0w"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Let us consider the following example. In this case, there are two synchronous and two asynchronous tasks ( Read comments ). In this example, first, synchronous task 1 is sent to the callback and is executed. Then, the asynchronous task 1 is loaded in the background which is a built promise. Then, asynchronous task 2 is loaded in the background. The last synchronous task is executed asap. Then the promise is sent to the micro tasks queue, at the same time setTimeout which is an asynchronous task is loaded behind. Now, we come across a clash between asynchronous task 1 and asynchronous task 2. As the promise is sent to the micro tasks queue,  it has higher priority and is sent to the call stack and is executed. Then the setTimeout is executed. Here we can see that due to the already queued up tasks, the setTimeout is delayed and the callback is executed after more than 0 seconds(the timer set).  &lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;

&lt;p&gt;&lt;span class="c1"&gt;//Synchronous task no 1&lt;/span&gt;&lt;br&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is executed first&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;br&gt;
&lt;span class="c1"&gt;//Asynchronous task no 1&lt;/span&gt;&lt;br&gt;
&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is executed third&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;br&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;&lt;br&gt;
&lt;span class="c1"&gt;//Asynchronous task no 1&lt;/span&gt;&lt;br&gt;
&lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is executed fourth&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;br&gt;
&lt;span class="c1"&gt;//Synchronous task no 2&lt;/span&gt;&lt;br&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is executed second&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;/p&gt;

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

&lt;/div&gt;
&lt;h2&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  Conclusion:&lt;br&gt;
&lt;/h2&gt;

&lt;p&gt;This is all about How async JavaScript is run behind the scenes. This may be too heavy to grasp and that’s okay. It is just that in JavaScript different types of functions have different priorities of execution and behavior. The video that I’ve attached with this nicely explains the concept. You can even try your examples and see the outputs you may get. &lt;/p&gt;

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

&lt;p&gt;That’s all to this post. If you've come to this section, I appreciate it. Most developers skip this in their learning and Who knows if this is your interview question for one of your JavaScript interviews. You can always connect with me on my social handles. I’m always open to discussions on Twitter. Also, you can have my LinkedIn and mail. If you have time, please visit my portfolio and let me know your suggestions on where I can improve. &lt;/p&gt;

&lt;p&gt;Thank you for reading my article. Meet you in the next article friends. This article would be continued further. So please follow me and stay connected. If you found this article useful, please let me know your feedback in the comments below. Also A reaction would always be appreciated.&lt;/p&gt;

&lt;p&gt;&lt;iframe class="tweet-embed" id="tweet-1471015267601772545-520" src="https://platform.twitter.com/embed/Tweet.html?id=1471015267601772545"&gt;
&lt;/iframe&gt;

  // Detect dark theme
  var iframe = document.getElementById('tweet-1471015267601772545-520');
  if (document.body.className.includes('dark-theme')) {
    iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1471015267601772545&amp;amp;theme=dark"
  }



&lt;/p&gt;

&lt;p&gt;Apart from this you can also connect with me on &lt;a href="https://twitter.com/_vinaykishore" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/vinaykishore" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;, also &lt;a href="https://github.com/geekvinay" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;. Thanks for reading this article. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>react</category>
    </item>
    <item>
      <title>10 BEST PLUGINS FOR FIGMA DESIGNERS</title>
      <dc:creator>Vinay Kishore</dc:creator>
      <pubDate>Sun, 28 Nov 2021 06:58:56 +0000</pubDate>
      <link>https://dev.to/vinaykishore/10-best-plugins-for-figma-designers-29l2</link>
      <guid>https://dev.to/vinaykishore/10-best-plugins-for-figma-designers-29l2</guid>
      <description>&lt;p&gt;Many of us use Figma for our daily design requirements. Figma is an outstanding free designing software using which, you can design amazing design prototypes, web and app designs etc. Figma also provides us the comfort to use many free plugins to smoothen the design process for us. In this article, I am going to share some free plugins of Figma, which I use and really do recommend you to use. Save this post for your future reference 🐶.&lt;/p&gt;

&lt;p&gt;The list of plugins :&lt;br&gt;
        1. Unsplash 📷&lt;br&gt;
        2. Iconify🥶&lt;br&gt;
        3. UI Faces 🙋‍♂️&lt;br&gt;
        4. Charts 📊&lt;br&gt;
        5. Illustrations 📌&lt;br&gt;
        6. Lorem Ipsum Generator ✍️&lt;br&gt;
        7. Ui Gradient 🎨&lt;br&gt;
        8. Blobs 👨‍🎨&lt;br&gt;
        9. Content Reel 💁&lt;br&gt;
        10. Map Maker 🗺️&lt;/p&gt;
&lt;h1&gt;
  
  
  1. Unsplash&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZBdYWj3n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2fo8kyo7gsqne33bkrbh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZBdYWj3n--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2fo8kyo7gsqne33bkrbh.jpg" alt="Picture of Unsplash Plugin" width="880" height="440"&gt;&lt;/a&gt;&lt;br&gt;
This plugin enables us to use stock pictures directly from Unplash. Unsplash is a website dedicated to sharing stock photography under the Unsplash license. Since 2021, it has been owned by Getty Images. The website claims over 265,000 contributing photographers and generates more than 16 billion photo impressions per month on their growing library of over 3.2 million photos.&lt;/p&gt;
&lt;h1&gt;
  
  
  2. Iconify&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3S3L6ihI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn17hae9yhwpmuuc061m.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3S3L6ihI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dn17hae9yhwpmuuc061m.png" alt="Image description" width="880" height="440"&gt;&lt;/a&gt;&lt;br&gt;
Iconify is an awesome plugin for natively using icons on the design. It also has a wide range of collection. We can also import different types of icons like Material Design Icons, FontAwesome, Jam Icons, EmojiOne, Twitter Emoji and many other icons (more than 100 icon sets containing over 100,000 icons) to Figma document as vector shapes.&lt;/p&gt;
&lt;h1&gt;
  
  
  3. UI Faces&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sqgVF_-0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3hnwjgtqw3uwr78fzam.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sqgVF_-0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q3hnwjgtqw3uwr78fzam.png" alt="Image description" width="793" height="513"&gt;&lt;/a&gt; &lt;br&gt;
UI Faces aggregates thousands of avatars which you can carefully filter to create your perfect personas or just generate random avatars. The avatars are aggregated from various sources. You can filter by age, gender, emotion, etc. Check source license before you decide to use avatar in a live project.&lt;/p&gt;
&lt;h1&gt;
  
  
  4. Charts&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IED_z6hC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/izjnqgjpxwd90usmr1ed.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IED_z6hC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/izjnqgjpxwd90usmr1ed.png" alt="Image description" width="880" height="636"&gt;&lt;/a&gt; &lt;br&gt;
Chart is a plugin for Figma that uses real or random data to create the most popular charts. Chart supports copy-paste from editors like Excel, Numbers, Google Sheets, live connection with Google Sheets and remote JSON (REST API), local CSV and JSON files.&lt;/p&gt;
&lt;h1&gt;
  
  
  5. Illustrations&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gjIGe9t1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9isrzj0ogdnr3hj840s4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjIGe9t1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9isrzj0ogdnr3hj840s4.png" alt="Image description" width="563" height="435"&gt;&lt;/a&gt;&lt;br&gt;
Free Popular Illustration libraries for everyone, plugin allows you to insert high quality free illustrations right into Figma. Just drag and drop to add it on Figma. All the illustrations can be used freely under creative commons license.&lt;/p&gt;
&lt;h1&gt;
  
  
  6. Lorem ipsum Generator&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rtr9_FPB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/73ybrc43vij6etc2c9z8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rtr9_FPB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/73ybrc43vij6etc2c9z8.png" alt="Image description" width="523" height="433"&gt;&lt;/a&gt;&lt;br&gt;
Generate ‘Lorem ipsum’ to fill your text layers with dummy text. Select all the text layers you want to generate ‘Lorem ipsum’ for then click ‘Generate’ — it will generate for each layer uniquely. ‘Auto-generate’ will automatically fill the selected layers with the perfectly amount of ‘Lorem ipsum’ to fit their existing frame.&lt;/p&gt;
&lt;h1&gt;
  
  
  7. uiGradients&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yVCMTRGY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9v3vyqw8j3f5ielalzw8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yVCMTRGY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9v3vyqw8j3f5ielalzw8.png" alt="Image description" width="371" height="300"&gt;&lt;/a&gt;&lt;br&gt;
Adds gradients to groups, text and frames in single click. Simply select the element to apply gradient and run the plugin. Chose from 350+ gradients to add to frames, groups, and texts in a single click.&lt;/p&gt;
&lt;h1&gt;
  
  
  8. Blobs&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--uo8IaVL5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ntrozoi0obw6c139qme0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uo8IaVL5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ntrozoi0obw6c139qme0.png" alt="Image description" width="765" height="473"&gt;&lt;/a&gt;&lt;br&gt;
Create organic blob shapes with the click of a button. Every shape that is generated is unique to the last. You can control how unique a shape is  along with how many points it has. Shapes are created using SVG, so you get those oh-so-sweet bézier curves.&lt;/p&gt;
&lt;h1&gt;
  
  
  9. Content Reel&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EbfuSzvn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01udx5wt82sgzoefoznf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EbfuSzvn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01udx5wt82sgzoefoznf.png" alt="Image description" width="457" height="343"&gt;&lt;/a&gt;&lt;br&gt;
Content Reel is a Figma plugin that helps you easily pull text strings, avatars, and icons into your designs. Select one or more layers in your design, then choose a content type from the Content Reel palette to apply.&lt;/p&gt;
&lt;h1&gt;
  
  
  10. Map Maker&lt;a&gt;&lt;/a&gt;
&lt;/h1&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h7Jq1xGS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbw511tdihc6rpxctyy0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h7Jq1xGS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dbw511tdihc6rpxctyy0.png" alt="Image description" width="880" height="657"&gt;&lt;/a&gt; &lt;br&gt;
Map Maker allows you to make a customized map blazing fast.It currently supports Google Maps and Mapbox.&lt;/p&gt;

&lt;p&gt;Hope, this post added a value to your life. These plugins saved me a lot of time in my design workflow. &lt;/p&gt;

&lt;p&gt;If you really liked the post, show your love by supporting me. Apart from this you can also connect with me on &lt;a href="https://twitter.com/_vinaykishore"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/vinaykishore"&gt;LinkedIn&lt;/a&gt;, also &lt;a href="https://github.com/geekvinay"&gt;GitHub&lt;/a&gt;. Thanks for reading this article 🙏.  See ya 🐶🙋‍♂️&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mTb1cTSV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/FENl6ZSUcAMzrHV.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--wirRl48J--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1454402480788291590/B-S86uUx_normal.jpg" alt="Vinay Kishore profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Vinay Kishore
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @_vinaykishore
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ir1kO05j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      🏁 100+ friends made.&lt;br&gt;&lt;br&gt;I'm really happy for this. Started being active since 22 Oct.  Thought it would take a year. Looking forward to make many friends. Love to hear your words ❤️&lt;br&gt;&lt;br&gt;&lt;a href="https://twitter.com/hashtag/DEVCommunity"&gt;#DEVCommunity&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/webdev"&gt;#webdev&lt;/a&gt; &lt;a href="https://twitter.com/hashtag/100daysofcode"&gt;#100daysofcode&lt;/a&gt; &lt;br&gt;&lt;br&gt;Thanks &lt;a href="https://twitter.com/puruvjdev"&gt;@puruvjdev&lt;/a&gt; for letting me know about tech twitter. 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      05:49 AM - 15 Nov 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1460122760651284481" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--fFnoeFxk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1460122760651284481" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--k6dcrOn8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1460122760651284481" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SRQc9lOp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


</description>
      <category>webdev</category>
      <category>design</category>
      <category>figma</category>
      <category>productivity</category>
    </item>
    <item>
      <title>ASYMPTOTIC ANALYSIS SIMPLIFIED</title>
      <dc:creator>Vinay Kishore</dc:creator>
      <pubDate>Sat, 30 Oct 2021 10:45:26 +0000</pubDate>
      <link>https://dev.to/vinaykishore/asymptotic-analysis-simplified-2mf9</link>
      <guid>https://dev.to/vinaykishore/asymptotic-analysis-simplified-2mf9</guid>
      <description>&lt;h2&gt;
  
  
  Why Analysis of Algorithms?
&lt;/h2&gt;

&lt;p&gt;Suppose we can do a task using many methods, how do we choose a method that is efficient? We may see the efficiency of different methods. Efficiency maybe anything based on the context. Similarly in Computer Science, to solve a computational problem, there can be many algorithms. Now, How to select a efficient algorithm ? To select an efficient algorithm, we should know what is efficiency we refer in this case. &lt;/p&gt;

&lt;p&gt;Discussing about different algorithms, we are interested in the following : &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Correctness of the algorithm :&lt;/strong&gt; Is the strategy or approach we are following is doing the intended task? &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Correctness of the algorithm :&lt;/strong&gt; Is the strategy or approach we are following is doing the intended task? &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimal :&lt;/strong&gt; To find the best ever algorithm possible &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;For ex :&lt;/strong&gt; If a problem X can be solved using three algorithms which are A1, A2, A3 which take the time 10μs, 10ms and 100μs respectively. Can we say A1 is the efficient algorithm?&lt;/p&gt;

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

&lt;h2&gt;
  
  
  Which time are we considering?
&lt;/h2&gt;

&lt;p&gt;If we consider system time, it is always dependent on system. We may also get system time different at different time frames. Hence we must consider some time complexity which is independent on the system.&lt;br&gt;
Hence, while finding out time complexity, we shall focus on "Step Count". This refers to the count/frequency of fundamental / Primitive or prime operations involved in the program. This brings us to the topic Asymptotic analysis. &lt;/p&gt;

&lt;h2&gt;
  
  
  What is Asymptotic analysis?
&lt;/h2&gt;

&lt;p&gt;Asymptotic analysis of an algorithm refers to defining the mathematical boundaries of the runtime performance. We can use this to define the best case, the worst case and the average case of an algorithm. This is always input bound, If there's no input required, we conclude that it can work in constant time.&lt;/p&gt;

&lt;p&gt;In other words, it refers to computing the run-time of any operation of any algorithm. We can say that asymptotic analysis of any algorithm is a simple way to find the time taken for performing the algorithm in an abstract manner. Here, the time taken is proportional to the input size entered.&lt;/p&gt;

&lt;p&gt;For example, if we are performing a linear search (Checking the key for each and every element, one-by-one ). If the input array size is 10, you require 10 units of time. If I increase the input 10 times, the time taken increase 10 times. Hence, here we are worried about how time taken changes on the increase on the input size.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4fIAmKkX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4pi612jex9s7exrxm3il.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4fIAmKkX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4pi612jex9s7exrxm3il.png" alt="Code for Linear Search" width="880" height="408"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Process for Asymptotic analysis?
&lt;/h2&gt;

&lt;p&gt;Now, having learned what is asymptotic analysis, let's understand how do we proceed to do the analysis for an algorithm. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Step 1:&lt;/strong&gt; So, once we choose the algorithm, first we need to do the step count. In step count, we count the number of times primitive or prime operations takes place. We express the time complexity as a function of the input size.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 2:&lt;/strong&gt; After performing the step count, as we express the time complexity as a function of input size. Now we check the growth of the functions. We simply see how the function behaves when the size increases. This step includes little mathematics, calculus in precise. We have to know how to deal with growth of the functions.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Step 3:&lt;/strong&gt; Now, we mainly focus on order of growth of significant terms of the time function. There are different ways / methods / notations. We simply compare the order of growth of the step count with some pre-defined, known functions. Ex: Logarithmic functions, Linear, Quadratic, Exponential etc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://i.giphy.com/media/JlpjgShzDsrMIyFu5U/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/JlpjgShzDsrMIyFu5U/giphy.gif" alt="Thanking you GIF" width="700" height="525"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article would be continued further. So please follow me and stay connected. If you found this article useful, please let me know your feedback in the comments below. Also A reaction would always be appreciated.&lt;/p&gt;

&lt;p&gt;Apart from this you can also connect with me on &lt;a href="https://twitter.com/_vinaykishore"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/vinaykishore"&gt;LinkedIn&lt;/a&gt;, also &lt;a href="https://github.com/geekvinay"&gt;GitHub&lt;/a&gt;. Thanks for reading this article. &lt;/p&gt;

</description>
      <category>programming</category>
      <category>discuss</category>
      <category>100daysofcode</category>
      <category>cpp</category>
    </item>
  </channel>
</rss>
