<?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: Mushfiqur Rahman Shishir</title>
    <description>The latest articles on DEV Community by Mushfiqur Rahman Shishir (@mushfiqweb).</description>
    <link>https://dev.to/mushfiqweb</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%2F45928%2Fd1c257c1-d9fa-4816-93d7-4313cc3a65b1.gif</url>
      <title>DEV Community: Mushfiqur Rahman Shishir</title>
      <link>https://dev.to/mushfiqweb</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/mushfiqweb"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Wed, 11 Jun 2025 15:56:00 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/-35jc</link>
      <guid>https://dev.to/mushfiqweb/-35jc</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/anthonymax/12-open-source-tools-every-developer-should-know-pn2" class="crayons-story__hidden-navigation-link"&gt;12 Open Source Tools Every Developer Should Know🔥&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/anthonymax" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2103048%2F716988a5-9c51-49bf-acef-191bc6dd2fee.jpeg" alt="anthonymax profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/anthonymax" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Anthony Max
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Anthony Max
                &lt;a href="/++"&gt;&lt;img alt="Subscriber" class="subscription-icon" src="https://assets.dev.to/assets/subscription-icon-805dfa7ac7dd660f07ed8d654877270825b07a92a03841aa99a1093bd00431b2.png"&gt;&lt;/a&gt;
              
              &lt;div id="story-author-preview-content-2579460" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/anthonymax" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2103048%2F716988a5-9c51-49bf-acef-191bc6dd2fee.jpeg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Anthony Max&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/anthonymax/12-open-source-tools-every-developer-should-know-pn2" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jun 9 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/anthonymax/12-open-source-tools-every-developer-should-know-pn2" id="article-link-2579460"&gt;
          12 Open Source Tools Every Developer Should Know🔥
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/programming"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;programming&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/anthonymax/12-open-source-tools-every-developer-should-know-pn2" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;242&lt;span class="hidden s:inline"&gt; reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/anthonymax/12-open-source-tools-every-developer-should-know-pn2#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              32&lt;span class="hidden s:inline"&gt; comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            6 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>opensource</category>
    </item>
    <item>
      <title>A Short Handbook for TypeScript</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Tue, 07 Mar 2023 09:59:55 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/a-short-handbook-for-typescript-36o6</link>
      <guid>https://dev.to/mushfiqweb/a-short-handbook-for-typescript-36o6</guid>
      <description>&lt;p&gt;TypeScript is a programming language that extends JavaScript by adding types. Types are annotations that describe the kind of data that a variable can hold, such as numbers, strings, booleans, arrays, objects, functions, etc.&lt;/p&gt;

&lt;p&gt;In this post let’s explore the noteworthy ways to declare and use types, functions, interfaces, generics, and classes in TypeScript.&lt;/p&gt;

&lt;h2&gt;
  
  
  BENIFITS OF USING TYPES
&lt;/h2&gt;

&lt;p&gt;You might be wondering why bother with types if JavaScript works fine without them, after all!&lt;/p&gt;

&lt;p&gt;With TypeScript, you can avoid common errors like typos, null pointer exceptions, or incorrect function calls. You can also refactor your code with confidence, knowing that any changes will be checked by the compiler and flagged if they break something. TypeScript also helps you write more expressive and concise code by providing features like interfaces, generics, unions, intersections, and more. These features allow you to define and manipulate types in powerful ways that are not possible in plain JavaScript. In short, TypeScript makes your life easier as a developer by making your code safer, cleaner, and smarter.&lt;/p&gt;

&lt;h2&gt;
  
  
  HOW TO USE BASIC TYPES
&lt;/h2&gt;

&lt;p&gt;For TypeScript, there are several built-in types that you can use to define variables, functions, and objects. Here are some examples of TypeScript types and how to use them:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// boolean type
let isDone: boolean = false;

// number types (integer and floating-point)
let decimal: number = 6;
let hex: number = 0xf00d;
let binary: number = 0b1010;
let octal: number = 0o744;

// string type
let color: string = "blue";
let fullName: string = `Bob Bobbington`;
let sentence: string = `Hello, my name is ${fullName}.`;

// array type
let list: number[] = [1, 2, 3];
let list2: Array&amp;lt;number&amp;gt; = [1, 2, 3];

// tuple type
let x: [string, number];
x = ["hello", 10];

// enum type
enum Color {
  Red,
  Green,
  Blue,
}
let c: Color = Color.Green;

// any type
let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false;

// void type (function that returns no value)
function warnUser(): void {
  console.log("This is my warning message");
}

// null and undefined types
let u: undefined = undefined;
let n: null = null;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Read the complete &lt;a href="https://bit.ly/3EYyrla"&gt;post on my blog&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>typescript</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>LET’S EXPLORE THE IMPROVED ROUTING, LAYOUTS &amp; RENDERING IN NEXTJS 13</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Tue, 20 Dec 2022 23:06:27 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/lets-explore-the-improved-routing-layouts-rendering-in-nextjs-13-3jkl</link>
      <guid>https://dev.to/mushfiqweb/lets-explore-the-improved-routing-layouts-rendering-in-nextjs-13-3jkl</guid>
      <description>&lt;p&gt;Next.js 13 was recently released at the Next.js conference. Many new features are included, including new routing, a new way to fetch data (React suspense), Vercel fonts, og image generation, layouts, and more.&lt;/p&gt;

&lt;p&gt;These new features have the potential to be game changers, and they promise to be extremely fast. But not without consequences.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Let’s go into more detail about them.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Turbopack: The successor to Webpack.
&lt;/h2&gt;

&lt;p&gt;Turbopack, the brand new build tool led by the creator of Webpack, Tobias Koppers, will be the Web’s next-generation bundler. Rust was used to construct it from the ground up. It incorporates turbo repo in order to cache duplicate operations. Turbopack is extremely fast.&lt;/p&gt;

&lt;p&gt;It updates large applications 10x faster than Vite and 700x faster than Webpack. On larger applications, the difference is even greater — Vite is frequently 20x faster. It has built-in support for Server Components, TypeScript, JSX, CSS, and other technologies.&lt;/p&gt;

&lt;p&gt;However, it is currently in alpha, which may make migration difficult for existing apps due to webpack’s vast ecosystem of plugins.&lt;/p&gt;

&lt;h2&gt;
  
  
  A NEW NESTED ROUTING SYSTEM
&lt;/h2&gt;

&lt;p&gt;Next.js 13 includes a new file-system-based router built on React Server Components, which supports layouts, nested routing, loading states, error handling, and other features. This opens up new possibilities and improves the framework’s overall performance.&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;/app&lt;/code&gt; directory (currently beta – at the time of writing) includes support for the following:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Layouts: Easily share UI while preserving state and avoiding re-renders.&lt;/li&gt;
&lt;li&gt;Server Components: Making server-first the default for the most dynamic applications.&lt;/li&gt;
&lt;li&gt;Streaming: Display instant loading states and stream in updates.&lt;/li&gt;
&lt;li&gt;Suspense for Data Fetching: The new use hook enables component-level fetching.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The &lt;code&gt;/app&lt;/code&gt; directory can coexist with your existing pages directory for incremental adoption.&lt;/p&gt;

&lt;p&gt;The new app directory retains file system-based routing, but it is now entirely directory-based, with a variety of naming conventions for different use cases. To make a page, you give the route’s direct name. js file to it, which exports the component you want to display there in a nice and simple way.&lt;/p&gt;

&lt;p&gt;However, because it is a directory, we can co-locate additional components here rather than creating a separate components directory or following some other convention.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GTmZC4Sm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i0.wp.com/mushfiqweb.com/wp-content/uploads/2022/12/fHJmGKW.gif%3Fresize%3D720%252C540%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GTmZC4Sm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://i0.wp.com/mushfiqweb.com/wp-content/uploads/2022/12/fHJmGKW.gif%3Fresize%3D720%252C540%26ssl%3D1" alt="Check this demo app from Vercel" width="720" height="540"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mushfiqweb.com/lets-explore-the-improved-routing-layouts-rendering-in-nextjs-13/"&gt;Check the whole article here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>nextjs</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Why We Should Use Context API Instead of Redux For New React Apps</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Fri, 18 Mar 2022 11:13:56 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/why-we-should-use-context-api-instead-of-redux-for-new-react-apps-2i4f</link>
      <guid>https://dev.to/mushfiqweb/why-we-should-use-context-api-instead-of-redux-for-new-react-apps-2i4f</guid>
      <description>&lt;h3&gt;
  
  
  When creating a new React application, we think about redux as a state management solution as a default choice. Let’s have a look at the Context API as a possible replacement.
&lt;/h3&gt;

&lt;p&gt;If you’re building a new React app today, your instincts may urge you to choose Redux. But should you start with Redux? That has turned into a legitimate question these days. The state management capabilities of React have vastly increased in recent versions. I’d want to discuss a more straightforward technique that relies on the Context API in this post.&lt;/p&gt;

&lt;h2&gt;
  
  
  LET’S TAKE A LOOK BACK
&lt;/h2&gt;

&lt;h1&gt;
  
  
  WHY DID WE ADOPT REDUX?
&lt;/h1&gt;

&lt;p&gt;It wasn’t always the case that frontend apps used an organized approach to state transitions. When we were still using jQuery, I recall changing many locations in an application. That was not a pleasant encounter.&lt;/p&gt;

&lt;p&gt;Here comes Redux to rescue, and in comparison, Redux was an outstanding solution:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;An object represents the whole state of the User Interface (UI).&lt;/li&gt;
&lt;li&gt;Any action that may change the state is a data-contained object. &lt;/li&gt;
&lt;li&gt;To change the state, those acts are ingested by pure functions (reducers)&lt;/li&gt;
&lt;li&gt;We structure the data in the state using selectors so that our components may consume it quickly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It now appears self-evident. It was, nevertheless, excellent at the time.&lt;/p&gt;

&lt;p&gt;All of the factors that got us here remain valid. However, the situation has altered nowadays.&lt;/p&gt;

&lt;p&gt;The ecosystem of React has changed a lot recently. Two other additions have altered the terrain and created new opportunities:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Hooks&lt;/li&gt;
&lt;li&gt;Context&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;It’s easier than ever to manage state across a hierarchical tree and trigger side effects using those two. So simple that I believe Redux is no longer required in many circumstances.&lt;/p&gt;

&lt;p&gt;Most frontend apps lack the rich data flow that supports the use of Redux. If all you’re doing is getting data from an API and performing some simple interactions, Redux is overkill now.&lt;/p&gt;

&lt;p&gt;OVER-ABSTRACTION IS A PITFALL THAT MANY PEOPLE FALL INTO&lt;br&gt;
Forms are a fair instance of something close to elaborating this scenario. I’ve used Redux to create sophisticated forms with the aid of various supporting frameworks. Things become more complicated as they become more complex. And for what purpose? Finally, the state conveyed in a form is usually somewhat local. &lt;/p&gt;

&lt;p&gt;Using Redux to model something like a form may be a painful experience. Is the state genuinely global? Frequently, a specialist library will do the job done. For this situation, Formik comes to the rescue. It’s designed specifically for that purpose and will meet almost any criteria you can think of.&lt;/p&gt;

&lt;h2&gt;
  
  
  USE CONTEXT API AS AN ALTERNATIVE
&lt;/h2&gt;

&lt;p&gt;Read the rest of the article here: &lt;a href="https://www.mushfiqweb.com/why-should-we-use-context-api-instead-of-redux-for-new-react-apps/"&gt;https://www.mushfiqweb.com/why-should-we-use-context-api-instead-of-redux-for-new-react-apps/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>react</category>
      <category>redux</category>
      <category>webdev</category>
    </item>
    <item>
      <title>A Contemporary Guide on React State Patterns in 2021</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Wed, 09 Jun 2021 22:38:34 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/a-contemporary-guide-on-react-state-patterns-in-2021-405g</link>
      <guid>https://dev.to/mushfiqweb/a-contemporary-guide-on-react-state-patterns-in-2021-405g</guid>
      <description>&lt;p&gt;Since the initial release of React in 2013, Facebook has rolled out a robust collection of tools to help developers with some of the minutiae of the web application development process, allowing them to focus on what matters most.&lt;/p&gt;

&lt;p&gt;Despite React’s many capabilities and widespread adoption among developers, I’ve discovered that many of us face the same question: How can we handle complicated states with React? &lt;/p&gt;

&lt;p&gt;This post will look at what state is, how to arrange it, and alternative patterns to use as our applications become more complicated.&lt;/p&gt;

&lt;h3&gt;
  
  
  UNDERSTANDING REACT STATE
&lt;/h3&gt;

&lt;p&gt;React may be thought of as a blueprint in its most basic form. Your application will appear in a specific way depending on the status. React prefers declarative over imperative programming, a fancy way of stating that you express what you want to happen rather than the processes to get there. As a result, appropriately managing the state becomes critical, as the state determines how your program will act.&lt;/p&gt;

&lt;p&gt;Read the full article &lt;a href="https://mushfiqweb.com/a-contemporary-guide-on-react-state-patterns-in-2021/"&gt;A Contemporary Guide on React State Patterns in 2021&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>redux</category>
      <category>node</category>
    </item>
    <item>
      <title>Best Practices for Checking PropTypes in React Components using TypeScript</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Wed, 09 Jun 2021 22:35:55 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/best-practices-for-checking-proptypes-in-react-components-using-typescript-7a8</link>
      <guid>https://dev.to/mushfiqweb/best-practices-for-checking-proptypes-in-react-components-using-typescript-7a8</guid>
      <description>&lt;p&gt;JavaScript functions that return React elements are known as React components. These are the parameters that govern what will be added to the DOM. In addition, react components, like functions, may receive props as arguments, resulting in dynamically returned items.&lt;/p&gt;

&lt;p&gt;Props can be of any data type, although component data types may differ. Component A, for example, may anticipate a name argument with a text data type, but component B may anticipate an age argument with a numeric data type. Likewise, D may anticipate an onClick argument with a Function data type, but C may expect a post parameter with an object data type with characteristics like title and date.&lt;/p&gt;

&lt;p&gt;How can we tell our component what kind of data it should expect?&lt;/p&gt;

&lt;p&gt;This may be done in various methods, but this post will focus on PropTypes and TypeScript. Despite holding identical goals, these two techniques operate in different ways. So we’ll go through what these tools are, how to use them, and tell them apart before trying more advanced techniques.&lt;/p&gt;

&lt;p&gt;Prior knowledge of PropTypes and TypeScript is necessary for a thorough understanding of this article. You’ll also require an integrated development environment (IDE), such as Visual Studio Code.&lt;/p&gt;

&lt;h2&gt;
  
  
  PROPTYPES
&lt;/h2&gt;

&lt;p&gt;PropTypes is a type-checking tool for props in React apps that can be used at runtime. The PropTypes efficiency has been provided through the prop-types package since React 15.5. PropTypes let you specify the props that are expected in a component, such as whether they are mandatory or optional. You’ll get a warning in the browser’s JavaScript console if you provide a different type to an element or miss a required prop:&lt;/p&gt;

&lt;p&gt;Read the full article &lt;a href="https://mushfiqweb.com/best-practices-for-checking-proptypes-in-react-components-using-typescript/"&gt;Best Practices for Checking PropTypes in React Components using TypeScript&lt;/a&gt;: &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Make Windows PowerShell Work Like a Linux Terminal</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Thu, 17 Sep 2020 05:42:58 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/make-windows-powershell-work-like-a-linux-terminal-2n4l</link>
      <guid>https://dev.to/mushfiqweb/make-windows-powershell-work-like-a-linux-terminal-2n4l</guid>
      <description>&lt;p&gt;Windows PowerShell doesn’t come with any git command utilities. But we can extend it to a new level where we can utilize git commands efficiently. In this post, we are going to see how to add auto command suggestions on TAB, branch information, and a working directory in Windows PowerShell.&lt;/p&gt;

&lt;p&gt;The following will be the outcome after following this guide.&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%2Fi%2F0vuin1ovbrcb137rcyqd.jpg" 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%2Fi%2F0vuin1ovbrcb137rcyqd.jpg" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  NEED POWERSHELL GALLERY
&lt;/h2&gt;

&lt;p&gt;To get that look at our default PowerShell, we will install two packages from PowerShell Gallery. To check what that Gallery is about click here. We will install posh-git and oh-my-posh packages as modules. The posh-git will provide prompt with Git status summary information and TAB completion for Git commands, parameters, remotes, and branch names. On the other hand, oh-my-posh will enable us to theme our terminal as our own.&lt;/p&gt;

&lt;p&gt;By default, windows don’t have any package provider for PowerShell modules. If we run the following command, the package provider will automatically get installed. So let’s open the PowerShell and run those commands one after another. It will ask for our confirmation to install the packages. Type Y for affirmation and type A to make all upcoming prompt affirmative.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Install-Module posh-git -Scope CurrentUser
Install-Module oh-my-posh -Scope CurrentUser
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  FIND A FONT WITH LIGATURES
&lt;/h2&gt;

&lt;p&gt;Next, we need a typographic ligature supported font for our terminal. We will set that font from VSCode settings. Why do we need that? We need that to show the current branch, current changes status, etc. related symbols in the terminal. In this case, the Fira Code will be our best option. March ahead and download Fira Code from here. We need the TTF types so open the TTF folder and install all the fonts.&lt;/p&gt;

&lt;p&gt;Find the rest of the article &lt;a href="https://www.mushfiqweb.com/make-windows-powershell-work-like-a-linux-terminal" rel="noopener noreferrer"&gt;on my blog&lt;/a&gt;!&lt;/p&gt;

&lt;h1&gt;
  
  
  My Other Posts on My Blog
&lt;/h1&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://www.mushfiqweb.com/crud-using-react-hooks-and-context-api/" rel="noopener noreferrer"&gt;CRUD USING REACT HOOKS AND CONTEXT API&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/rest-api-design-good-practices/" rel="noopener noreferrer"&gt;REST API DESIGN GOOD PRACTICES&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/make-windows-powershell-work-like-a-linux-terminal/" rel="noopener noreferrer"&gt;MAKE WINDOWS POWERSHELL WORK LIKE A LINUX TERMINAL&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/windows-sandbox-test-before-you-install-anything-on-your-windows-system/" rel="noopener noreferrer"&gt;WINDOWS SANDBOX – TEST BEFORE YOU INSTALL ANYTHING ON YOUR WINDOWS SYSTEM&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/top-new-javascript-features-of-es2020/" rel="noopener noreferrer"&gt;TOP NEW JAVASCRIPT FEATURES INTRODUCED IN ES2020&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/custom-progress-bar-using-html5/" rel="noopener noreferrer"&gt;CREATE A CUSTOM PROGRESS BAR USING HTML5&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/icon-input-element-using-html-and-css/" rel="noopener noreferrer"&gt;HOW TO CREATE ICON INPUT ELEMENT USING HTML AND CSS&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/enable-file-transfer-to-google-cloud-compute-engine/" rel="noopener noreferrer"&gt;ENABLE FILE TRANSFER TO GOOGLE CLOUD COMPUTE ENGINE&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/install-wordpress-on-google-cloud-compute-engine/" rel="noopener noreferrer"&gt;INSTALL WORDPRESS ON GOOGLE CLOUD COMPUTE ENGINE&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/customize-file-input-element-in-your-own-way/" rel="noopener noreferrer"&gt;CUSTOMIZE FILE INPUT ELEMENT USING JAVASCRIPT &amp;amp; CSS&lt;/a&gt;
&lt;/h3&gt;

</description>
      <category>linux</category>
      <category>git</category>
      <category>vscode</category>
    </item>
    <item>
      <title>Customize File Input Element Using JavaScript &amp; CSS</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Thu, 27 Aug 2020 01:48:02 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/customize-file-input-element-using-javascript-css-4glh</link>
      <guid>https://dev.to/mushfiqweb/customize-file-input-element-using-javascript-css-4glh</guid>
      <description>&lt;p&gt;There are numerous ways to customize the file input element in HTML. In this post, we are going to make the file input element more attractive using JavaScript and CSS.&lt;/p&gt;

&lt;h1&gt;
  
  
  HTML
&lt;/h1&gt;

&lt;p&gt;We are going to use one  element to show an icon and one &lt;span&gt;&lt;/span&gt; to show selection text inside a  along with  to design the input element. So the label is the container for SVG icon and span text. This is how our HTML code looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;input type="file" name="file-1[]" id="file-1" class="inputfile inputfile-1" data-multiple-caption="{count} files selected" multiple /&amp;gt;
&amp;lt;label for="file-1"&amp;gt;
    &amp;lt;svg xmlns="http://www.w3.org/2000/svg" width="20" height="17" viewBox="0 0 20 17"&amp;gt;
        &amp;lt;path d="M10 0l-5.2 4.9h3.3v5.1h3.8v-5.1h3.3l-5.2-4.9zm9.3 11.5l-3.2-2.1h-2l3.4 2.6h-3.5c-.1 0-.2.1-.2.1l-.8 2.3h-6l-.8-2.2c-.1-.1-.1-.2-.2-.2h-3.6l3.4-2.6h-2l-3.2 2.1c-.4.3-.7 1-.6 1.5l.6 3.1c.1.5.7.9 1.2.9h16.3c.6 0 1.1-.4 1.3-.9l.6-3.1c.1-.5-.2-1.2-.7-1.5z" /&amp;gt;
    &amp;lt;/svg&amp;gt; 
    &amp;lt;span&amp;gt;Choose a file...&amp;lt;/span&amp;gt;
&amp;lt;/label&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  Final Output
&lt;/h1&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%2Fmushfiqweb.com%2Fwp-content%2Fuploads%2F2020%2F08%2Fb21AsVXH5b.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%2Fmushfiqweb.com%2Fwp-content%2Fuploads%2F2020%2F08%2Fb21AsVXH5b.gif" alt="Customize File Input Element Using JavaScript &amp;amp; CSS"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Read full article: &lt;a href="https://mushfiqweb.com/customize-file-input-element-in-your-own-way/" rel="noopener noreferrer"&gt;Customize File Input Element Using JavaScript &amp;amp; CSS&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>html</category>
      <category>css</category>
      <category>javascript</category>
    </item>
    <item>
      <title>CRUD USING REACT HOOKS AND CONTEXT API</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Sun, 23 Aug 2020 21:06:13 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/crud-using-react-hooks-and-context-api-437d</link>
      <guid>https://dev.to/mushfiqweb/crud-using-react-hooks-and-context-api-437d</guid>
      <description>&lt;p&gt;React Hooks and Context API are two relatively new features that have been added to React from v16.8 and v16.3 respectively. In this post, I’m going to create an app that can perform CREATE, READ, UPDATE and DELETE utilizing Hooks and Context API together.&lt;/p&gt;

&lt;h1&gt;
  
  
  REACT HOOKS
&lt;/h1&gt;

&lt;p&gt;This new concept was introduced in v16.8 which is an alternative to classes. The Devs who used React before are familiar with functional components and class components. Many of these features available to classes – such as lifecycle methods and state weren’t available to React until Hooks were introduced. The new Hooks add those class component’s features to functional components. Let’s see an example of functional component and class component.&lt;/p&gt;

&lt;h3&gt;
  
  
  Functional Components
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const ExampleComponent = () =&amp;gt; {
  return &amp;lt;div&amp;gt;I'm a simple functional component&amp;lt;/div&amp;gt;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Class Components
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;class ExampleComponent extends Component {
  render() {
    return &amp;lt;div&amp;gt;I'm a class component&amp;lt;/div&amp;gt;
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  REACT CONTEXT API
&lt;/h1&gt;

&lt;p&gt;The inception of the Context API resolves one of the most talked issues of React – prop drilling which was introduced in v16.3. This is a process of manipulating data from one component to another through layers of nested components.&lt;/p&gt;

&lt;p&gt;Now it’s the time to start coding.&lt;/p&gt;

&lt;p&gt;Please to be noted, I’m going to use Tailwind CSS to style our app. Let’s bootstrap our project using Create-React-App with the following command:&lt;br&gt;
&lt;code&gt;npx create-react-app hooks_and_context&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Make sure you have the latest Node version is installed. This will create a folder hooks_and_context and bootstrap our project. If we have a close look at the package.json and we will see the following:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{
  "name": "hooks_and_context",
  "version": "0.1.0",
  "private": true,
  "dependencies": {
    "@testing-library/jest-dom": "^4.2.4",
    "@testing-library/react": "^9.3.2",
    "@testing-library/user-event": "^7.1.2",
    "react": "^16.13.1",
    "react-dom": "^16.13.1",
    "react-scripts": "3.4.3"
  },
  "scripts": {
    "start": "react-scripts start",
    "build": "react-scripts build",
    "test": "react-scripts test",
    "eject": "react-scripts eject"
  },
  "eslintConfig": {
    "extends": "react-app"
  },
  "browserslist": {
    "production": [
      "&amp;gt;0.2%",
      "not dead",
      "not op_mini all"
    ],
    "development": [
      "last 1 chrome version",
      "last 1 firefox version",
      "last 1 safari version"
    ]
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Before going into more coding thing we are going to enhance our development environment by installing a few packages.&lt;/p&gt;

&lt;h1&gt;
  
  
  ESLINT AND PRETTIER
&lt;/h1&gt;

&lt;p&gt;It’s the time we are going to add ESLint and Prettier to make our development environment more friendly. ESLint is a JavaScript linter that will help us find syntax or other errors while we do our code. ESLint can be extended by plugging in pre-defined configs or we can completely configure it by ourselves. Regardless of the OS, I’ll recommend anyone to use VSCode as editor. Going forward I’ll be assuming we are using VSCode.&lt;/p&gt;

&lt;h2&gt;
  
  
  INSTALL VSCODE PLUGINS
&lt;/h2&gt;

&lt;p&gt;First of all, we need to install ESLint and Prettier – Code formatter plugins for VSCode. And we need to make sure they are enabled.&lt;/p&gt;

&lt;p&gt;Now, we need to install the required dependencies for ESLint and Prettier into our project. To do so, please run the following command into the project root:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npm install eslint-config-prettier eslint-plugin-prettier prettier --save&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Read the full article &lt;a href="https://mushfiqweb.com/crud-using-react-hooks-and-context-api/"&gt;here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
      <category>docker</category>
    </item>
    <item>
      <title>Enable File Transfer on Google Cloud Compute Engine</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Sun, 19 Apr 2020 07:02:50 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/enable-file-transfer-on-google-cloud-compute-engine-35dp</link>
      <guid>https://dev.to/mushfiqweb/enable-file-transfer-on-google-cloud-compute-engine-35dp</guid>
      <description>&lt;p&gt;&lt;a href="https://www.mushfiqweb.com/install-wordpress-on-google-cloud-compute-engine"&gt;&lt;strong&gt;After installing WordPress on Google Compute Engine&lt;/strong&gt;&lt;/a&gt;, you might need a way to transfer files to the VM. It’s great to have worked on the local machine and upload the changes via file transfer protocol. File transfer protocol needs to be activated first. Then you can use it via any FTP client.&lt;/p&gt;

&lt;p&gt;The first obstacle you’ll face after setting up a VM instance is how to transfer files to your Google Cloud VM. It is very obvious because google cloud does not have any shiny option on their dashboard. The basic transfer option is hidden in the SSH section of your VM Instances.&lt;/p&gt;

&lt;p&gt;Other than the basic option there are three ways which you can follow to transfer files to Google Cloud. First, using Google Cloud SDK Tools. But that said this option is worse than before, for a newbie. You have to execute the command to transfer a simple file.&lt;/p&gt;

&lt;p&gt;Second, using FTP (File Transfer Protocol), but Google Cloud  VM instance does not come with a pre-installed FTP server, so you have to set up an FTP server, in order to connect to Google Cloud using FTP.&lt;/p&gt;

&lt;p&gt;Third, using SFTP (SSH File Transfer Protocol) which we are going to discuss in the blog. SFTP is more secure than FTP and because Google Cloud instance came with SSH, you don’t need to install anything on your VM instance to transfer files using SFTP.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT IS DIFFERENT BETWEEN FTP AND SFTP?
&lt;/h3&gt;

&lt;p&gt;FTP stands for “File Transfer Protocol”. And SFTP stands for “SSH File Transfer Protocol” OR “Secure File Transfer Protocol”.&lt;/p&gt;

&lt;p&gt;The main disadvantage of using FTP protocol is security. FTP uses two separate channels, both of which are unencrypted, this means that the information from either of the channel can be intercepted and accessed.&lt;/p&gt;

&lt;p&gt;SFTP ensures that data is securely transferred using a private and safe data stream.&lt;/p&gt;

&lt;p&gt;It is wise to not have a huge security loophole in your server, that is why you should use only SFTP rather than Ftp. And by the way, Google Cloud does give a click ready FTP setup option.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT IS PUBLIC AND PRIVATE KEYS.
&lt;/h3&gt;

&lt;p&gt;To set up Sftp you need to generate SSH keys pair. These keys pair will help you to encrypt and decrypt data.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public key:&lt;/strong&gt; You will add or copy this key to your Google Cloud Metadata. This key will encrypt data which can then only be read by the person who holds the corresponding private key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private key:&lt;/strong&gt; This key file should only remain within your PC. Only a user in possession of a private key that corresponds to the public key at the server will be able to authenticate successfully.&lt;/p&gt;

&lt;h3&gt;
  
  
  WHAT IS FILEZILLA?
&lt;/h3&gt;

&lt;p&gt;FileZilla is free software, cross-platform FTP / SFTP application, Two different versions of it is available one is Filezilla client and another Filezilla server. You will be using Filezilla client in this tutorial. Filezilla client is available for Windows and macOS.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FOR WINDOWS PC:&lt;/strong&gt; If you are a windows user then the easiest way to generate RSA keys is through PuttyGen. Yes, you can generate a public and private key with other application e.g.. Google SDK etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  GENERATE PUBLIC AND PRIVATE KEYS
&lt;/h3&gt;

&lt;p&gt;To generate Public and private RSA key follow these steps below:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Download and install PuTTy.&lt;/li&gt;
&lt;li&gt;Generate Public and private keys using Puttygen.&lt;/li&gt;
&lt;li&gt;Add Public key to Google Cloud. Use one public key for only one VM Instances or use one public key for all the VM Instances.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/enable-file-transfer-to-google-cloud-compute-engine"&gt;Read the full article here.&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Thanks for reading and please do share if you like it.
&lt;/h3&gt;

</description>
    </item>
    <item>
      <title>Install WordPress on Google Cloud Compute Engine</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Sat, 18 Apr 2020 22:17:36 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/install-wordpress-on-google-cloud-compute-engine-5hn3</link>
      <guid>https://dev.to/mushfiqweb/install-wordpress-on-google-cloud-compute-engine-5hn3</guid>
      <description>&lt;p&gt;Probably Google Cloud is the third most popular provider for cloud infrastructure after AWS and Azure. As its name suggests, Google Cloud is provided by Google. In this article, we will learn how to install WordPress on Google Cloud Compute Engine. Before going into the details, there are few things to look.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Hgve9WzM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i1.wp.com/mushfiqweb.com/wp-content/uploads/2020/04/wordpress-on-google-cloud.png%3Fresize%3D720%252C156%26ssl%3D1" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Hgve9WzM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://i1.wp.com/mushfiqweb.com/wp-content/uploads/2020/04/wordpress-on-google-cloud.png%3Fresize%3D720%252C156%26ssl%3D1" alt="Use WordPress on Google Cloud"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  SOME TECHNICAL SUGAR
&lt;/h3&gt;

&lt;p&gt;There are a few basic terms we need to learn before we get with the tutorial. The idea behind this is to inform you of all the various products Google Cloud has to offer. Once you develop and interest in something you see, you can start building your own apps in them!&lt;/p&gt;

&lt;h3&gt;
  
  
  BILLING ACCOUNTS
&lt;/h3&gt;

&lt;p&gt;Each project that you create must be linked to a billing account. Google Cloud allows you the flexibility of having multiple billing accounts – each of which can use a different credit/debit card. The idea behind this is to implement the pay-as-you-go policy of the cloud computing environment.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE 1:&lt;/strong&gt; You cannot use a prepaid credit/cash card in your billing account. I’ve tried this and my account along with all projects linked it was temporarily blocked. I immediately removed the prepaid card and changed it to a valid credit card. The account was re-enabled after a few working days.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE 2:&lt;/strong&gt; Google is currently offering a $300 USD trial to anyone who signs-up for Google Cloud. Now you’ve got no excuse to not try Google Cloud haha!&lt;/p&gt;

&lt;h3&gt;
  
  
  GOOGLE APP ENGINE
&lt;/h3&gt;

&lt;p&gt;Most software is built using a particular language and (optionally) based on a framework. A classic example would be a to-do list app, which is built on JavaScript and based on the jQuery framework. jQuery, as you can guess, is a framework for JavaScript, which is the language.&lt;/p&gt;

&lt;p&gt;Similarly, loads of apps are written in popular languages like Python, Java and PHP. Each of these languages requires an initial setup on the host system, in order to run the apps written in that particular language. For example, apps written in Java requires the Java Virtual Machine (JVM) to be installed in the target system.&lt;/p&gt;

&lt;p&gt;Google App Engine takes care of this very task. It installs and configures these languages in its cloud infrastructure, so you can simply upload your code and get on with the development process. You don’t have to worry about setting up the language or scaling the host system for your app. Google Cloud’s load balancing algorithms automatically take care of it. With Google App Engine, you simply need to select which language you need and deploy your app in it.&lt;/p&gt;

&lt;h3&gt;
  
  
  GOOGLE COMPUTE ENGINE
&lt;/h3&gt;

&lt;p&gt;Google Compute Engine (GCE) is another name for virtual machines in the cloud. Each VM is treated as an instance of a GCE. VMs can run almost any software you want it to. It offers more flexibility than App Engine and is intended for personalized environments.&lt;/p&gt;

&lt;h3&gt;
  
  
  GOOGLE API
&lt;/h3&gt;

&lt;p&gt;Google has over 100 APIs for its multitude of products. This cloud feature allows you to access these APIs.&lt;/p&gt;

&lt;h3&gt;
  
  
  CLOUD STORAGE
&lt;/h3&gt;

&lt;p&gt;As the name suggests, Cloud Storage allows you to save large volumes of unstructured and semi-structured data, called datasets, with high-availability (basically geeky terms for Big Data applications).&lt;/p&gt;

&lt;h3&gt;
  
  
  BIGQUERY
&lt;/h3&gt;

&lt;p&gt;BigQuery is Google’s own implementation of a language suitable for handling big data. Although this is not even remotely related to our tutorial, it is a fascinating thing to experiment with!&lt;/p&gt;

&lt;h3&gt;
  
  
  PRE-BUILT SOFTWARE PACKAGES
&lt;/h3&gt;

&lt;p&gt;This is where the fun begins! Forget all those complicated terms. Google has compiled a list of the most popular software, frameworks and languages and offered them as pre-built software packages. Guess what?&lt;/p&gt;

&lt;p&gt;Remember we discussed that each of these languages is installed in a virtual machine (or an instance of Compute Engine)? Well, the same holds here as well. When you create or a WordPress software package, you’ll first have to select a virtual machine, its size and region in order to proceed with the installation. The software package is essentially a set of instructions that installs the respective software in a newly created virtual machine.&lt;/p&gt;

&lt;p&gt;AND WORDPRESS IS ONE OF THEM!&lt;/p&gt;

&lt;h3&gt;
  
  
  INSTALL WORDPRESS ON GOOGLE CLOUD
&lt;/h3&gt;

&lt;p&gt;Learning how to install WordPress on Google Cloud is a bit more involved than with other web hosts. However, it’s not as intimidating as it might seem. Let’s jump right in!&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/install-wordpress-on-google-cloud-compute-engine"&gt;Read the full article here.&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Thanks for reading and please do share if you like it.
&lt;/h3&gt;

</description>
      <category>wordpress</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Top New JavaScript Features Introduced in ES2020</title>
      <dc:creator>Mushfiqur Rahman Shishir</dc:creator>
      <pubDate>Sat, 18 Apr 2020 16:11:01 +0000</pubDate>
      <link>https://dev.to/mushfiqweb/top-new-javascript-features-introduced-in-es2020-2d23</link>
      <guid>https://dev.to/mushfiqweb/top-new-javascript-features-introduced-in-es2020-2d23</guid>
      <description>&lt;p&gt;Since the addition of ECMAScript in 2015, the overall state of the art of the development in JavaScript has emerged to a new height. The JavaScript language specification has been regularly revised with new features every year. The ECMA International is calling these features new ECMAScript 2020 or JavaScript ES11(see intro here). In this post, we are going to discuss a few new interesting features of those.&lt;/p&gt;

&lt;h2&gt;
  
  
  LET’S DIVE INTO THE NEW JAVASCRIPT FEATURES
&lt;/h2&gt;

&lt;h1&gt;
  
  
  &lt;code&gt;String.prototype.matchAll()&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Though this function isn’t exactly a brand new one, since the new update in ES11, we are having a very good time when matching string against a regular expression. Let’s look at the following example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;regexp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;RegExp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;foo[a-z]*&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;g&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;table football, foosball&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;matches&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;matchAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;match&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;matches&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Found &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;match&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;span class="s2"&gt; 
           start=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; end=&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;match&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;index&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;match&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;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// expected output: "Found football start=&amp;gt;6 end=&amp;gt;14."&lt;/span&gt;
&lt;span class="c1"&gt;// expected output: "Found foosball start=&amp;gt;16 end=&amp;gt;24."&lt;/span&gt;

&lt;span class="c1"&gt;// matches iterator is exhausted after the for..of iteration&lt;/span&gt;
&lt;span class="c1"&gt;// Call matchAll again to create a new iterator&lt;/span&gt;
&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;matchAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;regexp&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="nx"&gt;m&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;m&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;span class="c1"&gt;// Array [ "football", "foosball" ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  &lt;code&gt;Dynamic Imports with import()&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Dynamic imports in JavaScript natively give you the option to import JavaScript files dynamically as modules in your application. This is just like how you do it with Webpack and Babel at the moment. This feature will help you ship on-demand-request code, better known as code splitting, without the overhead of Webpack or other module bundlers. You can also conditionally load code in an if-else block if you like.&lt;/p&gt;

&lt;p&gt;The good thing is that you actually import a module, and so it never pollutes the global namespace.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;doMath&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num1&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="nx"&gt;amp&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;num2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;math&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="k"&gt;import&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./math.js&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="nx"&gt;doMath&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  &lt;code&gt;BigInt&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;BigInt is one of the most anticipated features in JavaScript which is now finally here. It actually allows developers to have much greater integer representation in their JS code for data processing for data handling.&lt;/p&gt;

&lt;p&gt;At the moment the maximum number you can store as an integer in JavaScript is pow(2, 53) - 1. But BigInt actually allows you to go even beyond that.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;oldNum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MAX_SAFE_INTEGER&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;oldNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output =&amp;gt; 9007199254740991&lt;/span&gt;

&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;newNum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;9007199254740992&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output =&amp;gt; 9007199254740992n&lt;/span&gt;

&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="nx"&gt;oldNum&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;oldNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output =&amp;gt; 9007199254740992&lt;/span&gt;

&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="nx"&gt;oldNum&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;oldNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output =&amp;gt; 9007199254740992&lt;/span&gt;

&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="nx"&gt;newNum&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output =&amp;gt; 9007199254740993n&lt;/span&gt;

&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="nx"&gt;newNum&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output =&amp;gt; 9007199254740994n&lt;/span&gt;

&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="nx"&gt;newNum&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;newNum&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output =&amp;gt; 9007199254740995n&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h1&gt;
  
  
  &lt;code&gt;Nullish Coalescing&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Nullish coalescing adds the ability to truly check nullish values instead of &lt;code&gt;falsey&lt;/code&gt; values. What is the difference between nullish and &lt;code&gt;falsey&lt;/code&gt; values, you might ask? In JavaScript, a lot of values are &lt;code&gt;falsey&lt;/code&gt;, like: empty strings, the number 0, undefined, null, false, NaN, etc.&lt;/p&gt;

&lt;p&gt;Probably, there’s a lot of times you might want to check if a variable is nullish, that is if it is either undefined or null, like when it’s okay for a variable to have an empty string, or even a false value.&lt;/p&gt;

&lt;p&gt;In that case, you’ll use the new nullish coalescing operator &lt;code&gt;-&amp;gt; ??&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kc"&gt;false&lt;/span&gt;

&lt;span class="kc"&gt;undefined&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kc"&gt;undefined&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="kc"&gt;NaN&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="kc"&gt;NaN&lt;/span&gt;

&lt;span class="kc"&gt;NaN&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Something truthy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;a href="https://mushfiqweb.com/top-new-javascript-features-of-es2020"&gt;Read The Full Article.&lt;/a&gt;
&lt;/h3&gt;

&lt;h3&gt;
  
  
  Thanks for reading and please do share if you like it.
&lt;/h3&gt;

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