<?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: Rutik Wankhade</title>
    <description>The latest articles on DEV Community by Rutik Wankhade (@rutikwankhade).</description>
    <link>https://dev.to/rutikwankhade</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%2F347412%2Fe8138ff9-324a-42d0-932e-a92ce1b96f2e.png</url>
      <title>DEV Community: Rutik Wankhade</title>
      <link>https://dev.to/rutikwankhade</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rutikwankhade"/>
    <language>en</language>
    <item>
      <title>devspace : get top posts from the best developer platforms</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Tue, 09 Feb 2021 06:36:40 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/devspace-get-top-posts-from-the-best-developer-platforms-2ha</link>
      <guid>https://dev.to/rutikwankhade/devspace-get-top-posts-from-the-best-developer-platforms-2ha</guid>
      <description>&lt;p&gt;After an awesome experience with Hashnode &lt;em&gt;ChristmasHackathon&lt;/em&gt;, Hashnode announced a new hackathon in partnership with Vercel. This time it was a 3 week-long hackathon. I wanted to build a full-stack app this time, but I didn't know a thing about how the backend works, so I started learning it.&lt;/p&gt;

&lt;p&gt;More than 2 weeks passed and I didn't even start working on the project. Everything was new and a bit intimidating and I couldn't build it in time.&lt;/p&gt;

&lt;p&gt;But I still wanted to participate!&lt;br&gt;
So I decided to pivot at the last moment and come up with something else. I was running out of both ideas and time. What should I build? a recipe app? a movie app? Nope. It had to be something that would be useful for me in my life.&lt;/p&gt;
&lt;h3&gt;
  
  
  💡 The idea
&lt;/h3&gt;

&lt;p&gt;Did you hear of daily.dev ? It's a new tab extension that curates blogs and news for developers from different platforms. I have used it. But it was too much content for me. I realized I check only 4-5 developer platforms daily. And sometimes I don't stay for long, I just want to peek, see top posts and get back to my work. &lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lZMLL8LN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1612695927859/H0zu8AUAF.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lZMLL8LN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1612695927859/H0zu8AUAF.gif" alt="joeyy.gif" width="320" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Wait, what if I build something so that I won't need to search and switch tabs for these websites? Well, that sounds like a good idea.&lt;/p&gt;
&lt;h3&gt;
  
  
  🚀 Introducing devspace
&lt;/h3&gt;

&lt;p&gt;Get top posts from the best developer platforms in one place.&lt;/p&gt;

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

&lt;p&gt;The app is deployed on Vercel and the code is open-sourced on Github.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;See live : &lt;a href="https://devspace.vercel.app/"&gt;https://devspace.vercel.app/&lt;/a&gt;&lt;/strong&gt;  and code &lt;a href="https://github.com/rutikwankhade/devspace"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  📰 UI/UX
&lt;/h3&gt;

&lt;p&gt;Even though it was a small app, creating a basic design prototype is always a plus. It helps to move in the right direction. I used&lt;br&gt;
&lt;a href="https://excalidraw.com/"&gt;excalidraw&lt;/a&gt;. it's a great tool to create quick sketches.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YU72bXN8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1612699423754/F_u3l4i3t.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YU72bXN8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1612699423754/F_u3l4i3t.png" alt="devspace.png" width="780" height="460"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Layout
&lt;/h4&gt;

&lt;p&gt;For the layout, I divided the screen into two parts. One for navigation and another for the main content. I thought of it as an open book.&lt;/p&gt;

&lt;h4&gt;
  
  
  Colors
&lt;/h4&gt;

&lt;p&gt;I tried to be consistent with the colors and used colors that complement each other. Also, made it super clean and intuitive.&lt;/p&gt;

&lt;h3&gt;
  
  
  Screenshots
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aycoLNhL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ekuoj4pwcin00t174rc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aycoLNhL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ekuoj4pwcin00t174rc0.png" alt="Alt Text" width="880" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4I_nov6y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ls8fod5ntsfva8xqsjl6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4I_nov6y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/ls8fod5ntsfva8xqsjl6.png" alt="Alt Text" width="880" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--abwrvw1c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nuaaicydc8vwtjy9dq3g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--abwrvw1c--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/nuaaicydc8vwtjy9dq3g.png" alt="Alt Text" width="880" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  👩‍💻 Technologies used
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;React &lt;/li&gt;
&lt;li&gt;TailwindCSS&lt;/li&gt;
&lt;li&gt;APIs - Hashnode, dev, HackerNews, Github, and Product Hunt &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.npmjs.com/package/svg-loaders-react"&gt;svg-loaders-react&lt;/a&gt; for displaying  a loader while the app fetches data &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.react-reveal.com/"&gt;react-reveal&lt;/a&gt;  for smooth animation on scroll&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🌧 Challenges faced
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Implementing the APIs was a bit frustrating. Reading the docs thoroughly helped a lot.&lt;br&gt;
APIs of Hashnode, Dev, and Product Hunt was easy to use and implement. But Github doesn't have any endpoint for getting trending repositories in its official API. Luckily, I found an unofficial API. Thanks to the open-source developer community. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;HackerNews API provides an endpoint to get only the ids of top posts. So I had to fetch individual posts with these ids.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Few blog posts didn't have a cover image, so I used &lt;a href="https://picsum.photos/"&gt;Lorem Picsum's API&lt;/a&gt; to set random images for default.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  ✨ Conclusion
&lt;/h3&gt;

&lt;p&gt;I built this in a very short period of time and still managed to make it look good and useful, at least for me. That's an achievement! So this is my submission for the &lt;a href="https://hashnode.com/n/vercelhashnode"&gt;VercelHashnode&lt;/a&gt; Hackathon. 🙌 Cheers!&lt;/p&gt;

&lt;p&gt;I keep writing about the things I learned and applied. So you can connect with me on &lt;a href="https://twitter.com/WankhadeRutik"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/rutikwankhade"&gt;Github&lt;/a&gt;  or &lt;a href="https://www.linkedin.com/in/rutik-wankhade"&gt;Linkedin&lt;/a&gt;. Also, subscribe to my &lt;a href="https://rutikw.substack.com/welcome"&gt;newsletter&lt;/a&gt; and stay up-to-date with my latest blog posts.&lt;/p&gt;

&lt;p&gt;⚡ Happy learning!&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Replace your new tab with a mindful productive app.</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Fri, 22 Jan 2021 14:14:50 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/replace-your-new-tab-with-a-mindful-productive-app-1c92</link>
      <guid>https://dev.to/rutikwankhade/replace-your-new-tab-with-a-mindful-productive-app-1c92</guid>
      <description>&lt;p&gt;Hey everyone, I built Tabwave, It's a mindful productive app to replace your browser's default new tab.&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%2Fez4pi60fqlmxz1cjpt2m.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%2Fi%2Fez4pi60fqlmxz1cjpt2m.png" alt="Alt Text"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;🚀 Add shortcuts to your favorite sites.&lt;br&gt;
🎯 Get more done with daily tasks and goals.&lt;br&gt;
📑 Brainstorm ideas on Sticky notes.&lt;br&gt;
⏳ Increase your productivity with a Pomodoro clock.&lt;br&gt;
🙋‍♂️ Get random activity ideas with a single click.&lt;br&gt;
🌗 Dark mode toggle for a better experience.&lt;/p&gt;

&lt;p&gt;and many more.&lt;br&gt;
The extension is available for both chrome as well as Firefox browser.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Check out &lt;a href="https://tabwave.vercel.app" rel="noopener noreferrer"&gt;https://tabwave.vercel.app&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Try it now and let me know your thoughts. I would love to hear your feedback.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>programming</category>
      <category>devjournal</category>
      <category>showdev</category>
    </item>
    <item>
      <title>How I made a tool to create cover images for my blogs quickly</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Sat, 29 Aug 2020 04:52:22 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/how-i-made-a-tool-to-create-cover-images-for-my-blogs-quickly-1d</link>
      <guid>https://dev.to/rutikwankhade/how-i-made-a-tool-to-create-cover-images-for-my-blogs-quickly-1d</guid>
      <description>&lt;p&gt;Do you write blogs?  Have you ever struggled to create cover images for your blogs? &lt;br&gt;
Well, I did. So I have made a tool that will help you create awesome cover images for your blogs quickly.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--9-Oot_LG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598169671591/BKzp2hZnU.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--9-Oot_LG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598169671591/BKzp2hZnU.png" alt="frame_chrome_mac_dark (1).png" width="880" height="550"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🗃 The problem
&lt;/h2&gt;

&lt;p&gt;I started blogging a few months back. It's one of the best decisions I have ever made. But every time I wanted to write a post, I had to create and edit a cover image for it. I mean I love creating creative cover images but sometimes I feel I just spend too much time designing it.&lt;/p&gt;

&lt;p&gt;And then I saw these comments on my posts.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--yeAjFbbq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598092132300/CLWYZEN_X.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--yeAjFbbq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598092132300/CLWYZEN_X.png" alt="comments.png" width="880" height="309"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I use &lt;em&gt;canva&lt;/em&gt;. It's a nice tool. But I thought I need something minimal so that creating those cover images won't be any hassle. Coincidently I just started learning &lt;strong&gt;react&lt;/strong&gt;. I knew some basics and I thought why not implement my knowledge of react and make something out of it. Also, it might help someone else too. And that's how I came up with the idea of this project.  &lt;/p&gt;

&lt;h2&gt;
  
  
  🛠 The process
&lt;/h2&gt;

&lt;p&gt;I started working on this as a fun project. I had an exact visualization of what I wanted to create. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bdIgVpYU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598290323414/bt061ZVRr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bdIgVpYU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598290323414/bt061ZVRr.png" alt="coverview layout.png" width="681" height="341"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;So I first created a design of a cover image that can be used as the template user can edit. I asked my self what things I would like to add or what can I do to make the cover image more appealing. And I started playing with it. It was fun. After spending a lot of time, solving problems and finding solutions, this is what I came up with the first build.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5FPQwsf0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598290972723/9vlpR1JTN.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5FPQwsf0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598290972723/9vlpR1JTN.gif" alt="cover.gif" width="600" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  📦 The final outcome
&lt;/h2&gt;

&lt;p&gt;I shared it on Twitter and Linkedin and I got a really good response from the developer community. I always wanted to contribute to open source. There are multiple ways to contribute and one of which is creating open-source projects. I open-sourced it. This is my first open-source project with react.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/rutikwankhade/CoverView"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rV7ZYu6E--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github-readme-stats.vercel.app/api/pin/%3Fusername%3Drutikwankhade%26repo%3DCoverView" alt="ReadMe Card" width="400" height="120"&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;And within a few hours, I got my first pull request. &lt;a href="https://twitter.com/asish_io"&gt;Asish Raju&lt;/a&gt; made his first open-source contribution by contributing to my project. He added a few more customizable options and refactored the code.&lt;/p&gt;

&lt;p&gt;For the first time, I was on the other side of a project. I learned how to manage pull requests, review code, and merged his pull request. &lt;a href="https://opensource.guide/"&gt;Open Source Guides&lt;/a&gt; is a great resource to learn.&lt;/p&gt;

&lt;h2&gt;
  
  
  Features
&lt;/h2&gt;

&lt;p&gt;Then I improved it little by little and added some more features. Here are a few noteworthy features of &lt;a href="https://coverview.now.sh"&gt;CoverView&lt;/a&gt;.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🛠 Create awesome cover images for your blogs quickly and easily&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gs3Ndall--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598341535630/0Q734Fzbk.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gs3Ndall--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598341535630/0Q734Fzbk.png" alt="component (79).png" width="800" height="422"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌈 Choose different colors for background, foreground, border, and text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XDrsOCTL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598293507064/SO4VkvYbO.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XDrsOCTL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598293507064/SO4VkvYbO.png" alt="screenshot (29).png" width="412" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;✨ Choose from 15+ different background patterns&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4ADty0Nv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598343038364/Gl097ze-t.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4ADty0Nv--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598343038364/Gl097ze-t.gif" alt="patterns bg sm.gif" width="500" height="263"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;👨‍💻 Add dev icons and author name for personal branding&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--swAuH-dJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598293116537/qBAzD1ZOE.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--swAuH-dJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1598293116537/qBAzD1ZOE.gif" alt="iconsupdate.gif" width="518" height="227"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;💾 Download cover images in &lt;code&gt;.png&lt;/code&gt; as well as &lt;code&gt;.jpeg&lt;/code&gt; format&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I just had a lot of fun making this. You might not be able to create a lot more creative images But having a nice cover is always better than having some random image or no cover image at all.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;So check out &lt;a href="https://coverview.now.sh"&gt;CoverView&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;p&gt;The important lesson I learned while building this is that you don't need to learn a language or framework completely to start making projects. You can start applying while learning it. I feel this way we can learn from our mistakes and understand the importance of one concept over others. &lt;/p&gt;




&lt;p&gt;I keep writing about the things I learned and applied. So you can connect with me on &lt;a href="https://twitter.com/WankhadeRutik"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/rutikwankhade"&gt;Github&lt;/a&gt;  or &lt;a href="https://www.linkedin.com/in/rutik-wankhade"&gt;Linkedin&lt;/a&gt;. Also, subscribe to my newsletter and stay up-to-date with my latest blog posts.&lt;/p&gt;

&lt;p&gt;⚡ Happy learning!&lt;/p&gt;

</description>
      <category>react</category>
      <category>sideprojects</category>
      <category>javascript</category>
      <category>design</category>
    </item>
    <item>
      <title>How to add canonical url to my old blog post ?</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Fri, 07 Aug 2020 03:12:35 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/how-to-add-canonical-url-to-my-old-blog-post-2a6a</link>
      <guid>https://dev.to/rutikwankhade/how-to-add-canonical-url-to-my-old-blog-post-2a6a</guid>
      <description>&lt;p&gt;I tried adding a canonical url in one of my old blog post using triple dash in the markdown editor as well as the setting tab. But after saving it. I don't see anything like &lt;/p&gt;

&lt;p&gt;&lt;code&gt;This blog was originally published on xyz&lt;/code&gt;&lt;br&gt;
How do I make it work ? Please help.&lt;/p&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>When frontend devs meet free APIs</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Mon, 03 Aug 2020 06:29:00 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/when-frontend-devs-meet-free-apis-2nkh</link>
      <guid>https://dev.to/rutikwankhade/when-frontend-devs-meet-free-apis-2nkh</guid>
      <description>&lt;p&gt;Have you ever struggled to get ideas for your side projects? Are you looking to make something other than the same old todo apps? If yes, then you are in the right place, my friend. Welcome to the world of APIs where I will help you to get awesome ideas for your next side project. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--PZh7rfM4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1592912841868/HEZ0D7GCL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--PZh7rfM4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1592912841868/HEZ0D7GCL.png" alt="think.png" width="880" height="474"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;*Do you know every time you build a to-do list app, a puppy dies?&lt;br&gt;
*No! 😅 I am just kidding. There is nothing wrong with todo apps. It's just that todo apps are not the only thing you can create. Let's dive in to know what I mean.&lt;/p&gt;

&lt;p&gt;But before that, let's go to flashback for a while.&lt;br&gt;
So I just learned HTML, CSS, and some basics of JavaScript. I am enjoying playing with the DOM. And I created a todo list app. Then I built an expense app, then a calculator, and soon I was left with no ideas at all. And I was wondering what should I create now. &lt;br&gt;
And that's the time when I got to know about APIs.  So what is an API? &lt;/p&gt;

&lt;p&gt;Here is what Wikipedia say about API&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;An application programming interface (API) is a computing interface that defines interactions between multiple software intermediaries. It defines the kinds of calls or requests that can be made, how to make them, the data formats that should be used, the conventions to follow, etc.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;🤯 Doesn't make sense? Let me explain to you.&lt;br&gt;
In simple terms, an API is a messenger that takes requests and tells the system what you want to do and returns the response back to you.&lt;/p&gt;

&lt;p&gt;Imagine you are in a restaurant. You have the menu on your table and there is food cooking in the restaurant's kitchen.  How would you get it?  You will call the waiter right. The waiter will ask for your order,  get your order and bring it on your table. So the waiter here is the API. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TUBKrN7q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1592900437811/G6j_F_xdv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TUBKrN7q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1592900437811/G6j_F_xdv.png" alt="602bac42d4b43d46f8ab9b94128e0463a193b649.png" width="880" height="430"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Using APIs you can integrate data from other apps into your projects and apps. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XTsAEDSa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1593081794408/i1RiETJF_.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XTsAEDSa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1593081794408/i1RiETJF_.png" alt="apiin.png" width="674" height="285"&gt;&lt;/a&gt;&lt;br&gt;
For Ex.  You can use weather API and show weather data in your app. Did you see that login with google or login with Facebook buttons on different apps? That is an API.&lt;br&gt;
How cool is that? So I learned about APIs and how they work. And it opened the doors of unlimited ideas to me. According to some research around 40 new APIs are being added per week. Now think about how awesome things you can build with it. &lt;/p&gt;

&lt;p&gt;The first thing I built was ⚡ &lt;a href="https://skymate.now.sh"&gt;Skymate&lt;/a&gt;, a weather app that shows real-time weather of any location. You can see it on &lt;a href="https://github.com/rutikwankhade/SkyMate"&gt;github&lt;/a&gt; here. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bJo-qgQH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1593019263355/da7CzgXKC.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bJo-qgQH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1593019263355/da7CzgXKC.gif" alt="skymate.gif" width="600" height="225"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I started looking for APIs that I can use in my projects. Like APIs for food recipes, APIs for the latest news, and so on. And I found this great repository of &lt;a href="https://github.com/public-apis/public-apis"&gt;Public APIs&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8VuZpLG3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1595261468286/DaDEvThY5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8VuZpLG3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1595261468286/DaDEvThY5.png" alt="apispublic.png" width="744" height="176"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It was like the ocean of APIs. But there was a problem. This repository was so big and full of APIs. And it was difficult to find in the whole readme file. But surprisingly it had its own API too. So to make my life a little easy and better I started making an app for this. I called it &lt;a href="https://apihouse.now.sh"&gt;&lt;strong&gt;Apihouse&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jEFkWssk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1593020198531/WylV4ws2k.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jEFkWssk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1593020198531/WylV4ws2k.gif" alt="house.gif" width="600" height="285"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It has a collection of all the public APIs and you can find them based on their categories in just one click.&lt;br&gt;&lt;br&gt;
You can see it live &lt;a href="https://apihouse.now.sh"&gt;here&lt;/a&gt;. Also here is its &lt;a href="https://github.com/rutikwankhade/Apihouse"&gt;GitHub&lt;/a&gt; repository.&lt;/p&gt;

&lt;p&gt;I shared this on Twitter and Linkedin and I got a really good response from fellow developers.&lt;br&gt;
With the help of a few feedbacks, I tried making it better and better. Most of the people found it very helpful and useful. I felt proud when someone bookmarked it and said I am using this for my next project.&lt;/p&gt;
&lt;h4&gt;
  
  
  🏷 Lesson learned :
&lt;/h4&gt;

&lt;ol&gt;
&lt;li&gt; Problems lead to great products. Always try to think about your problems first and how you can make your life easier with a product out of it.&lt;/li&gt;
&lt;li&gt; Build whatever you want to build for yourself. Someone might find it helpful. And even if not, You will.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I recently saw this tweet and I couldn't stop myself from sharing it. It sums up everything.&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&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--vOM-Vs7P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1282818451908595712/8hd8co3U_normal.jpg" alt="Ritesh Kumar profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Ritesh Kumar
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/ritz078"&gt;@ritz078&lt;/a&gt;
      &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;
      Whenever you find that a product could have made ur life easier if it existed or was cheaper, add it to a list. Pick them as side project FOR YOURSELF. Not for the stars. Not for others.&lt;br&gt;&lt;br&gt;Stars, Contributors etc. is bonus. It's worth it even without them as it was made for you.
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      21:05 PM - 21 Jun 2020
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1274810753623547905" 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=1274810753623547905" 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=1274810753623547905" 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;


&lt;p&gt;Here are a few resources that might help you.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Introduction"&gt;Introduction to web APIs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLRqwX-V7Uu6a-SQiI4RtIwuOrLJGnel0r"&gt;10: Working with data - p5.js Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.youtube.com/playlist?list=PLRqwX-V7Uu6YxDKpFzf_2D84p0cyk4T7X"&gt;Working with Data and APIs in JavaScript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://youtu.be/GZvSYJDk-us"&gt;APIs for Beginners - How to use an API &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;APIs are used everywhere. And you can use them in your side projects the way you want. I hope now you won't struggle to look for ideas. &lt;/p&gt;

&lt;p&gt;I keep writing about the things I learned and applied. So you can connect with me on &lt;a href="https://twitter.com/WankhadeRutik"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/rutikwankhade"&gt;Github&lt;/a&gt;  or &lt;a href="https://www.linkedin.com/in/rutik-wankhade"&gt;Linkedin&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;⚡ Happy learning!&lt;/p&gt;

</description>
      <category>sideprojects</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Do you take notes while learning? What's your process?</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Mon, 29 Jun 2020 09:27:05 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/do-you-take-notes-while-learning-what-s-your-process-32e1</link>
      <guid>https://dev.to/rutikwankhade/do-you-take-notes-while-learning-what-s-your-process-32e1</guid>
      <description>&lt;p&gt;✍ Taking notes is an essential part of my learning process. It helps me visualize clearly and emphasize the key points of what I learned. While following a course or a tutorial, I  first go through the content once. Afterward, I go through the entire course again, but this time I make handwritten notes.  &lt;/p&gt;

&lt;p&gt;Why handwritten notes? Well, it allows me to write freely, draw quick diagrams, mental models, and unleash my creativity with doodles.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Do you take notes while learning? Share your process.&lt;/li&gt;
&lt;li&gt;What is the most effective way of note-taking?&lt;/li&gt;
&lt;li&gt;Thoughts on handwritten vs digital note-taking.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>A step by step guide to functions in JavaScript</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Tue, 21 Apr 2020 14:09:32 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/a-step-by-step-guide-to-functions-in-javascript-5gb1</link>
      <guid>https://dev.to/rutikwankhade/a-step-by-step-guide-to-functions-in-javascript-5gb1</guid>
      <description>&lt;p&gt;Functions are one of the basic concepts in programming. The name itself suggests, it performs a function. A function is a block of code that you can use whenever you need and wherever you required to avoid repeated code blocks. Once a function is written, it can be used over and over again. They usually take some input, perform some operations on it and produce some output.  &lt;/p&gt;

&lt;p&gt;In this article, we will learn about functions in JavaScript, different ways of defining functions, how hoisting and function scope works and a few more concepts regarding functions. Let's begin.&lt;/p&gt;

&lt;h2&gt;
  
  
  The function declaration
&lt;/h2&gt;

&lt;p&gt;Functions are defined, or declared, with the **function **keyword. The declaration begins with the function keyword, followed by the name of the function then set of parentheses, which can be used for optional parameters. The code of the function is contained in curly braces.&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;function&lt;/span&gt; &lt;span class="nx"&gt;nameOfFunction&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;parameters&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Code to be executed&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Functions allow a programmer to divide a big program into several small and manageable functions.&lt;br&gt;
For example, If you are building a simple calculator then sum() will be a function. It will take two or more integers as input and return the sum as the result.&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="c1"&gt;//function declaration&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The name of the function can be anything, as long as it follows the same rules as declaring variables.&lt;br&gt;
JavaScript functions are written in camel case too. It's a best practice to tell *what the function is doing *by giving the function name a verb as a prefix. Also, the function should perform only one task and have a single responsibility. Thus naming should be based on that one responsibility.&lt;/p&gt;
&lt;h3&gt;
  
  
  📌 Calling Functions
&lt;/h3&gt;

&lt;p&gt;Defining a function does not execute it. Defining it simply names the function and specifies what to do when the function is called. Calling the function performs the specified actions with the indicated parameters. We can call it by writing the name of the function, followed by parenthesis ().&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="c1"&gt;//function call&lt;/span&gt;
&lt;span class="nx"&gt;sum&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;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output : 8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  📌 Function Parameters
&lt;/h3&gt;

&lt;p&gt;Parameters are input that gets passed into functions as names and behave as local variables. A function can have multiple parameters or no parameters at all.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If you declared a parameter but did not pass an argument to it, your parameter would be undefined. It means that function parameters default to undefined.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  📌 Function arguments
&lt;/h3&gt;

&lt;p&gt;The argument is the actual value that gets passed into the function.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8UBxjqu_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1587151140206/6UMKRMJdW.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8UBxjqu_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1587151140206/6UMKRMJdW.png" alt="functionblog1.png" width="568" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;You define a function with parameters, you call a function with arguments.&lt;/em&gt; In function sum() a and b are parameters whereas 5 and 3 are arguments.&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 The return Statement
&lt;/h3&gt;

&lt;p&gt;A JavaScript function can have an optional return statement. This is required if you want to return a value from a function. This statement should be last in a function. The return statement stops the execution of a function and returns a value from that function.&lt;br&gt;
A function always returns a value, If the return value is not specified then &lt;em&gt;undefined&lt;/em&gt; is returned.&lt;/p&gt;
&lt;h2&gt;
  
  
  The function expression
&lt;/h2&gt;

&lt;p&gt;A function expression looks similar to function declarations, except that the function is assigned to a variable name.&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;var&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;

&lt;span class="nx"&gt;sum&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;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;//output : 8&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Functions stored in variables do not need function names. They are always invoked (called) using the variable name. The function above ends with a semicolon because it is a part of an executable statement.&lt;/p&gt;

&lt;h2&gt;
  
  
  Hoisting
&lt;/h2&gt;

&lt;p&gt;Hoisting was thought up as a general way of thinking about how execution contexts work in JavaScript. Hoisting means variable and function declarations are moved to the top of scope before execution. It allows you to use a function before you declare it in your code.&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Difference between function declaration and function expression
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Function declarations are hoisted but function expressions are not. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Functions defined in a function declaration are hoisted, which means that you can use the function although it's defined below the code using it. Hoisted functions are made available everywhere within the current scope. For 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="c1"&gt;//function is invoked before the declaration&lt;/span&gt;
&lt;span class="nx"&gt;sum&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;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;//output : 8&lt;/span&gt;
&lt;span class="c1"&gt;//function declaration&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;As opposed to function declarations, function expressions are not hoisted and can therefore not be used before they're defined.&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="nx"&gt;sum&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;3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;//output :  // TypeError: sum is not a function&lt;/span&gt;
&lt;span class="c1"&gt;//function expression&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  IIFE (Immediately Invoked Function Expressions)
&lt;/h2&gt;

&lt;p&gt;Functions that are executed as soon as they are declared, these functions are known as Immediately Invoked Function Expressions or IIFEs. &lt;br&gt;
IIFEs follows a particular syntax as shown below.&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="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(){&lt;/span&gt; 
&lt;span class="c1"&gt;// code to be executed&lt;/span&gt;
&lt;span class="p"&gt;})();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Let's break it down to make more sense. We have a function defined inside parentheses, and then we append () to execute that function.&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="p"&gt;(&lt;/span&gt; &lt;span class="cm"&gt;/*function*/&lt;/span&gt; &lt;span class="p"&gt;)();&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The function becomes a function expression that is immediately executed. &lt;br&gt;
Here are few important things about IIFEs&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The variable within the expression can not be accessed from outside it. &lt;/li&gt;
&lt;li&gt;IIFEs are very useful because they don’t pollute the global object, and they are a simple way to isolate variables declarations.&lt;/li&gt;
&lt;li&gt;While creating a bunch of variables and functions in the global scope that no one uses outside your code, just wrap all of that in an IIFE and Your code will continue to work, but now you are not polluting the global scope. &lt;/li&gt;
&lt;li&gt;IIFE is useful while implementing &lt;a href="https://addyosmani.com/resources/essentialjsdesignpatterns/book/#modulepatternjavascript"&gt;Module Pattern&lt;/a&gt; in JavaScript. &lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Arrow Functions
&lt;/h2&gt;

&lt;p&gt;Arrow functions are mainly syntactic sugar for defining function expressions. Arrow function allows us to write functions in a much shorter syntax. It’s one of the most popular features of ES6. We can now create more concise, cleaner, and more readable functions by using the &lt;strong&gt;=&amp;gt;&lt;/strong&gt; operator. &lt;br&gt;
The syntax is as follows&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="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="cm"&gt;/*code to be executed*/&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Syntax wise it’s easier to understand, remove the function keyword, declare the function like a variable, and after arguments, put a fat arrow.&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="c1"&gt;// Regular function&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;//Arrow Function&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&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;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Even though arrow functions are more concise than normal functions, they can still be reduced.&lt;br&gt;
If the function body has a single expression, it can be written as&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;var&lt;/span&gt; &lt;span class="nx"&gt;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;//removed curly braces&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Also if there is only one parameter, then there is no need for parenthesis. For example, consider a function that takes a number as input and returns its square as a result.&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;square&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;    &lt;span class="c1"&gt;//removed parenthesis&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;square&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;a&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="c1"&gt;// In this case, we can also omit the return keyword.&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The primary use case of arrow functions is for functions that get applied over and over again to items in a list. For example, if you have an array of values that you want to transform using a &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map"&gt;map&lt;/a&gt;, an arrow function is ideal.&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;digits&lt;/span&gt;&lt;span class="o"&gt;=&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;span class="mi"&gt;3&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;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;6&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;square&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;digits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;num&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;digits&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// output : [2, 3, 4, 5, 6]&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;square&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="c1"&gt;// output : [4, 9, 16, 25, 36]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Important points about arrow functions&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Just like function expressions, arrow functions aren't hoisted — only function declarations are. &lt;/li&gt;
&lt;li&gt;Arrow functions cannot be named.&lt;/li&gt;
&lt;li&gt;Arrow functions lexically bind the current **this **value. That means  The treatment of this within an arrow function is different than within non-arrow function expressions.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are a few more ways we can define functions, which aren't discussed in this article. The decision of which declaration type to choose depends on the situation. &lt;/p&gt;

&lt;h2&gt;
  
  
  Function scope vs Global scope
&lt;/h2&gt;

&lt;p&gt;When you declare a variable inside a function, you can access that variable only within the function. It is not visible outside of the function. For 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;function&lt;/span&gt; &lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;//function scope&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;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;   &lt;span class="c1"&gt;// output : Hello world&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;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;// output : message is not defined&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Variables defined outside any function, block, or module scope have global scope. Variables in the global scope can be accessed from everywhere. Every function can have access to the global scope.&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;var&lt;/span&gt; &lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello world&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;//Global scope&lt;/span&gt;
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;sayHi&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;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

 &lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;   &lt;span class="c1"&gt;// output : Hello world&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Lexical scope
&lt;/h2&gt;

&lt;p&gt;When a function is defined in another function, the inner function has access to the outer function’s variables. This behavior is called lexical scoping. However, the outer function does not have access to the inner function’s variables.&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;function&lt;/span&gt; &lt;span class="nx"&gt;outerFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rutik&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nx"&gt;innerFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;student&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;user&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;is a &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;job&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;   &lt;span class="c1"&gt;//output : Rutik is a student&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;job&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;//output : Error, job is not defined&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So when we access &lt;em&gt;user&lt;/em&gt; variable in &lt;em&gt;innerfunction()&lt;/em&gt; ,it works. But accessing job variable outside &lt;em&gt;innerfunction()&lt;/em&gt; shows error.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;To visualize how scopes work, you can imagine one-way glass. You can see the outside, but people from the outside cannot see you.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Functions vs Methods
&lt;/h2&gt;

&lt;p&gt;A method, like a function, is a set of instructions that perform a task. The difference is that a method is associated with an object, while a function is not.&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;var&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rutik&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;job&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;student&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="c1"&gt;//method&lt;/span&gt;
&lt;span class="na"&gt;sayHi&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hi &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&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;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sayHi&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;  &lt;span class="c1"&gt;//output : Hi Rutik&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;When used as object properties, functions are called methods.&lt;/p&gt;

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

&lt;p&gt;So we learned what are functions, how to call them, the difference between parameters and arguments, different ways we can define functions, how hoisting and function scope works in JavaScript. And I hope you got a nice idea about functions in JavaScript.&lt;/p&gt;

&lt;p&gt;I keep writing about the things I learned. So you can connect with me on &lt;a href="https://twitter.com/WankhadeRutik"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/rutikwankhade"&gt;Github&lt;/a&gt;  or &lt;a href="https://www.linkedin.com/in/rutik-wankhade"&gt;Linkedin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;⚡ Happy learning!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://rutikwankhade.hashnode.dev/a-step-by-step-guide-to-functions-in-javascript-ck988kutu0038css17bxftivd"&gt;a-step-by-step-guide-to-functions-in-javascript&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Learn JavaScript concepts by building a random quote generator</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Tue, 21 Apr 2020 14:01:51 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/learn-javascript-concepts-by-building-a-random-quote-generator-3jan</link>
      <guid>https://dev.to/rutikwankhade/learn-javascript-concepts-by-building-a-random-quote-generator-3jan</guid>
      <description>&lt;p&gt;Learning JavaScript is fun. But What's the point if you are not building stuff with it.&lt;br&gt;
So in this article, we will learn javascript basic concepts and create a random quote generator of our own.&lt;/p&gt;

&lt;p&gt;I assume you have a basic knowledge of HTML and CSS  as the main objective of this article is to learn javascript. Else you can check these tutorials on &lt;a href="https://youtu.be/UB1O30fR-EE"&gt;HTML&lt;/a&gt; and &lt;a href="https://youtu.be/yfoY53QXEnI"&gt;CSS&lt;/a&gt;. I will try to explain everything in detail and by the time you finish this lesson, you will have an understanding of concepts like strings, arrays, functions, event listeners, template literals in JavaScript. So let's begin.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;Lets first create three different files in our folder as &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;index.html for creating the UI and displaying the content,&lt;/li&gt;
&lt;li&gt;style.css to make it attractive by adding styles.&lt;/li&gt;
&lt;li&gt;script.js will contain the actual code which makes our app work.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  1. creating the content of the app
&lt;/h2&gt;

&lt;p&gt;The first step is to create a UI. Here is our index.html file look like&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="cp"&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;html&lt;/span&gt; &lt;span class="na"&gt;lang=&lt;/span&gt;&lt;span class="s"&gt;"en"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;head&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;charset=&lt;/span&gt;&lt;span class="s"&gt;"UTF-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;meta&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"viewport"&lt;/span&gt; &lt;span class="na"&gt;content=&lt;/span&gt;&lt;span class="s"&gt;"width=device-width, initial-scale=1.0"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"stylesheet"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"style.css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;link&lt;/span&gt; &lt;span class="na"&gt;rel=&lt;/span&gt;&lt;span class="s"&gt;"shortcut icon"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"icons/favicon.png"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;title&amp;gt;&lt;/span&gt;Random quote&lt;span class="nt"&gt;&amp;lt;/title&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/head&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;body&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"content"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"card"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;h2&amp;gt;&lt;/span&gt;Random quote&lt;span class="nt"&gt;&amp;lt;/h2&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;p&amp;gt;&lt;/span&gt;wanna see a random quote ?&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
          &lt;span class="c"&gt;&amp;lt;!--button to display random quote--&amp;gt;&lt;/span&gt;
          &lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Generate&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;

        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"quote"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
         &lt;span class="c"&gt;&amp;lt;!--Quote will be displayed here.--&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/body&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;script &lt;/span&gt;&lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"script.js"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/script&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/html&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gIfF7xo_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585025931498/AIvbN-aiu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gIfF7xo_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585025931498/AIvbN-aiu.png" alt="Screenshot (238).png" width="716" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And this is how it looks like in the browser. Wait a minute, It doesn't look nice right. &lt;/p&gt;

&lt;h2&gt;
  
  
  2. Styling the content
&lt;/h2&gt;

&lt;p&gt;Let's make it appealing by adding our style.css file&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;body&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;indigo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;
&lt;span class="nt"&gt;h2&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#1c1c1c&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;arial&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;

&lt;span class="nc"&gt;.btn&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;50px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;150px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;18px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;dodgerblue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;border&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="nb"&gt;none&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;

&lt;span class="nc"&gt;.card&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;15px&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt; &lt;span class="m"&gt;15px&lt;/span&gt; &lt;span class="m"&gt;30px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;margin&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;40px&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;max-width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;500px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;max-height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;300px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;text-align&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;center&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;#ffffff&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 

&lt;span class="nt"&gt;p&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;font-family&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="s2"&gt;'Segoe UI'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;font-weight&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;400&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;font-size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;20px&lt;/span&gt;&lt;span class="p"&gt;;}&lt;/span&gt;

&lt;span class="nt"&gt;img&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;25px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="m"&gt;25px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And boom ! this looks great now.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--t0sBJkmI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585027409630/ZG-vq7LdP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--t0sBJkmI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585027409630/ZG-vq7LdP.png" alt="Screenshot (240).png" width="880" height="346"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now let's think about how we are going to make it work. We need to figure out a way to display random quotes after clicking a button. And We will go with the simplest way to do it. How? let's see.&lt;/p&gt;

&lt;p&gt;Forget coding. let's just think about what we have to do. &lt;br&gt;
okay. First, we will need quotes. We will have to store them somewhere and do something such that we can display a random quote after clicking a button. That's it. &lt;/p&gt;
&lt;h2&gt;
  
  
  3. let's learn some javaScript
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Strings
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;A string is a sequence of one or more characters that may consist of letters, numbers, or symbols. Strings in JavaScript are primitive data types which we are going to use to create quotes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;In JavaScript, there are three ways to write strings. They can be written inside single quotes (' '), double quotes (" "), or backticks (&lt;code&gt;&lt;/code&gt;). &lt;br&gt;
Strings with backticks(&lt;code&gt;&lt;/code&gt;) are called template literals which we will learn later.&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;This is a string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;So all our quotes are basically strings like this.&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="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Stay hungry, stay foolish !&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But there are multiple such strings and we need something to store them. Here comes the concept of Arrays. But what's an array?&lt;/p&gt;

&lt;h3&gt;
  
  
  Arrays
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;An array in JavaScript is a type of global object that is used to store data. Arrays consist of an ordered collection or list containing zero or more data types, and use numbered indices starting from 0 to access specific items.&lt;br&gt;
&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="nx"&gt;Creating&lt;/span&gt; &lt;span class="nx"&gt;an&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="o"&gt;--&amp;gt;&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;quotes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;[];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrays can contain any data type, including numbers, strings, and objects. We will be storing our strings in an array like this.&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;quotes&lt;/span&gt;&lt;span class="o"&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;The secret to life is to love who you are.&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;Look for opportunities in every change in your life.&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;Persist while others are quitting.&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;and so on.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="p"&gt;];&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Array.length
&lt;/h3&gt;

&lt;p&gt;The length property of an object which is an instance of type Array sets or returns the number of elements in that array.&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="nx"&gt;quotes&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="c"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="nx"&gt;Output&lt;/span&gt;&lt;span class="o"&gt;--&amp;gt;&lt;/span&gt;
&lt;span class="mi"&gt;4&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Accessing Items in an Array
&lt;/h4&gt;

&lt;p&gt;An item in a JavaScript array is accessed by referring to the index number of the item in square brackets.&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="nx"&gt;quotes&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;span class="c"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="nl"&gt;Output&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;Persist&lt;/span&gt; &lt;span class="k"&gt;while&lt;/span&gt; &lt;span class="nx"&gt;others&lt;/span&gt; &lt;span class="nx"&gt;are&lt;/span&gt; &lt;span class="nx"&gt;quitting&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;But here we will not access like this. We want a random index to display a random quote. Then how do we do that? We will use the math object.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Math object
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Math is a built-in object that has properties and methods for mathematical constants and functions.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ih-9plTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585047447641/KLYjO52E1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ih-9plTU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585047447641/KLYjO52E1.png" alt="Screenshot (242).png" width="709" height="278"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you type math in console, you will see there are so many built-in methods for Math object. We will be using a few of them.&lt;/p&gt;

&lt;h3&gt;
  
  
  Math.random()
&lt;/h3&gt;

&lt;p&gt;The Math.random() function returns a floating-point, pseudo-random number in the range 0 to less than 1. See how it returns every time we call it in the console.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YUSQ2nmo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585151170351/FFMTnGRBt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YUSQ2nmo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585151170351/FFMTnGRBt.png" alt="Screenshot (243).png" width="714" height="268"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But this is not what we want. We want a whole number and not a floating type. For this, the Math object provides another method called Math.floor()&lt;/p&gt;

&lt;h3&gt;
  
  
  Math.floor()
&lt;/h3&gt;

&lt;p&gt;Math.floor() returns a number representing the largest integer less than or equal to the specified number. So if we pass the math.random() as a parameter to math.floor() we will get a whole number.&lt;br&gt;
But Math.floor() is always rounding down to the nearest decimal, therefore, every decimal between 0 and 1 will always revert back to 0.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--x9_A0XcV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585047247928/aNY04WDp2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--x9_A0XcV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585047247928/aNY04WDp2.png" alt="Screenshot (245).png" width="712" height="264"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In order to get a random number between 0 to the length of our array, we will multiply the math.random() by quotes.length. &lt;br&gt;
Finally the random index we want is&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;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;quotes&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="c"&gt;&amp;lt;!--&lt;/span&gt;&lt;span class="nx"&gt;This&lt;/span&gt; &lt;span class="nx"&gt;will&lt;/span&gt; &lt;span class="nx"&gt;give&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;random&lt;/span&gt; &lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="o"&gt;--&amp;gt;&lt;/span&gt;
&lt;span class="nx"&gt;quotes&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;index will always generate a valid array index number for our quotes array.&lt;br&gt;
So we figured out how to retrieve a random quote from the quotes array. But we don't want to display just a string. We are going to do it nicely using template literals.&lt;/p&gt;
&lt;h3&gt;
  
  
  Template Literals
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;The Template Literal, introduced in ES6, is a new way to create a string. With it comes new features that allow us more control over dynamic strings in our programs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Template literals are string literals allowing embedded expressions. It can contain placeholders. These are indicated by the dollar sign and curly braces (${expression}).&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="s2"&gt;`string text &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;expression&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt; string text`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  HTML Templates
&lt;/h3&gt;

&lt;p&gt;With the ability to have multi-line strings and use Template Expressions to add content into our string, this makes it really nice to use for HTML templates in our code. So we will create a HTML template for our quote and store it in a variable. We used the placeholder to pass our quotes in the template.&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;quote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;`&amp;lt;div class="card"&amp;gt;
&amp;lt;img src="icons/favicon.png"&amp;gt;
&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;quotes&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;&amp;lt;/p&amp;gt; &amp;lt;!--random quote string--&amp;gt;
&amp;lt;img src="icons/favicon.png"&amp;gt;
&amp;lt;/div&amp;gt;
`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;*I added images to make it more appealing. &lt;br&gt;
*&lt;/p&gt;
&lt;h3&gt;
  
  
  Query Selectors
&lt;/h3&gt;

&lt;p&gt;To access an element in dom(&lt;a href="https://developer.mozilla.org/en-US/docs/Web/API/Document_Object_Model/Introduction"&gt;Document Object Model&lt;/a&gt;), we will use the querySelector() method.&lt;br&gt;
The Document method querySelector() returns the first element within the document that matches the specified selector. The syntax is&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="nx"&gt;element&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;selectors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In our HTML file, we have a div element with id="quote". We will access it in the same way as this. And then we will add the HTML template we created earlier to this div element.&lt;/p&gt;

&lt;h3&gt;
  
  
  Element.innerHTML
&lt;/h3&gt;

&lt;p&gt;Each HTML element has an innerHTML property that defines both the HTML code and the text that occurs between that element's opening and closing tag. By changing an element's innerHTML after some user interaction, we can make much more interactive pages.&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;div&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#quote&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The code we wrote till now will work only once. And we want to execute this every time we want to display a quote. We can do this using functions.&lt;/p&gt;

&lt;h3&gt;
  
  
  Functions
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;A function is a block of code that performs an action or returns a value. Functions are custom code defined by programmers that are reusable, and can, therefore, make your programs more modular and efficient.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Defining a Function
&lt;/h3&gt;

&lt;p&gt;Functions are defined, or declared, with the function keyword. Below is the syntax for a function in JavaScript.&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;function&lt;/span&gt; &lt;span class="nx"&gt;nameOfFunction&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Code to be executed&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We will create the displayQuote function add all this code in the function.&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;function&lt;/span&gt; &lt;span class="nx"&gt;displayQuote&lt;/span&gt;&lt;span class="p"&gt;(){&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;index&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;random&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="nx"&gt;quotes&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="c1"&gt;//display the quote of that index&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#quote&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;`&amp;lt;div class="card"&amp;gt;
&amp;lt;img src="icons/favicon.png"&amp;gt;
&amp;lt;p&amp;gt;&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;quotes&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;&amp;lt;/p&amp;gt;
&amp;lt;img src="icons/favicon.png"&amp;gt;
&amp;lt;/div&amp;gt;
`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;div&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHTML&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nx"&gt;quote&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We are almost done. Just need to invoke this displayQuote function whenever we click the generate button.&lt;/p&gt;

&lt;h3&gt;
  
  
  Events in javaScript
&lt;/h3&gt;

&lt;p&gt;Events are actions that take place in the browser that can be initiated by either the user or the browser itself. &lt;br&gt;
Like in our case it's when the user clicks the generate button.&lt;/p&gt;
&lt;h3&gt;
  
  
  Event listeners
&lt;/h3&gt;

&lt;p&gt;An event listener watches for an event on an element. We will use the addEventListener() method to listen for the event. addEventListener() takes two mandatory parameters . &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the event it is listening for &lt;/li&gt;
&lt;li&gt;and the listener callback function.
&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;target&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;listener&lt;/span&gt; &lt;span class="p"&gt;[,&lt;/span&gt; &lt;span class="nx"&gt;options&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;We have a button element with class="btn". The click event will call the displayQuote function every time we click on the button and display a random quote.&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;btn&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;querySelector&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;.btn&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nx"&gt;btn&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addEventListener&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;click&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;displayQuote&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

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

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0L1qyoEc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585072651093/2_UBWoiXG.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0L1qyoEc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1585072651093/2_UBWoiXG.png" alt="Screenshot (248).png" width="704" height="228"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And we are done. congratulations. We built a random quote generator while learning some JavaScript concepts.&lt;/p&gt;

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

&lt;p&gt;So the quote generator is ready. Also if you wish, you can add some more features of your own like tweeting the quote or something like that.&lt;/p&gt;

&lt;p&gt;You can find the complete repository of the code on &lt;a href="https://github.com/rutikwankhade/Random-Quote"&gt;Github&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
Also, you can see it &lt;a href="https://random-quotesforu.netlify.com/"&gt;live&lt;/a&gt; here.&lt;br&gt;
I hope you had fun while doing this and learned a few things along the way.&lt;br&gt;
Well for me this process of building things helps me a lot while learning.&lt;/p&gt;

&lt;p&gt;%[&lt;a href="https://twitter.com/WankhadeRutik/status/1228373769980432384"&gt;https://twitter.com/WankhadeRutik/status/1228373769980432384&lt;/a&gt;]&lt;/p&gt;

&lt;p&gt;You can connect with me on &lt;a href="https://twitter.com/WankhadeRutik"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/rutikwankhade"&gt;Github&lt;/a&gt;  or &lt;a href="https://www.linkedin.com/in/rutik-wankhade"&gt;Linkedin&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;⚡ Happy learning !&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>html</category>
      <category>css</category>
    </item>
    <item>
      <title>Github repositories every aspiring developer should check out</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Mon, 23 Mar 2020 11:38:31 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/github-repositories-every-aspiring-developer-should-check-out-1f81</link>
      <guid>https://dev.to/rutikwankhade/github-repositories-every-aspiring-developer-should-check-out-1f81</guid>
      <description>&lt;p&gt;Starting your career in web development can be overwhelming. And most of the time beginners struggle to pick resources to learn. There are tons of great resources available online and most of which we are not even aware of.&lt;/p&gt;

&lt;p&gt;The most important lesson I learned. &lt;br&gt;
&lt;/p&gt;
&lt;blockquote class="ltag__twitter-tweet"&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--iPy9Ucvz--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1240831878619435021/sXH2fvm9_normal.jpg" alt="Rutik Wankhade profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Rutik Wankhade
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @wankhaderutik
      &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;
      Don't waste your time on trying to find the perfect resources. Pick something and just start. 💻 &lt;a href="https://t.co/ZKOOxKzKaf"&gt;twitter.com/gatsbyjs/statu…&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:19 PM - 30 Dec 2019
    &lt;/div&gt;

      &lt;div class="ltag__twitter-tweet__quote"&gt;
        &lt;div class="ltag__twitter-tweet__quote__header"&gt;
          &lt;span class="ltag__twitter-tweet__quote__header__name"&gt;
            Gatsby
          &lt;/span&gt;
          @gatsbyjs
        &lt;/div&gt;
        🤔 If you could go back and tweet some advice to yourself at the start of your Web Development career, what would you write?
      &lt;/div&gt;

    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1211683318066024451" 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=1211683318066024451" 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=1211683318066024451" 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;


&lt;p&gt;📑 So Here is a list of some awesome GitHub repositories with tons of resources collected together for you.&lt;br&gt;
 So Pick something and start learning. &lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Freecodecamp
&lt;/h3&gt;

&lt;p&gt;A self-paced curriculum for learning full-stack development. Its freeCodeCamp.org's open-source codebase and curriculum. &lt;a href="https://github.com/freeCodeCamp/freeCodeCamp"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nlnWRjGP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583665169318/OQak0KH2I.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nlnWRjGP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583665169318/OQak0KH2I.png" alt="22.png" width="588" height="162"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 developer-roadmap
&lt;/h3&gt;

&lt;p&gt;A set of charts demonstrating the paths that you can take and the technologies that you would want to adopt in order to become a frontend, backend, or DevOps. The complete developer roadmap. &lt;a href="https://github.com/kamranahmedse/developer-roadmap"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Lp_riw7m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583664043130/oqSVxVTcv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Lp_riw7m--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583664043130/oqSVxVTcv.png" alt="1.png" width="604" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 A-to-Z-Resources-for-Students
&lt;/h3&gt;

&lt;p&gt;If you are in college, a college graduate, or just starting out as a developer, you should definitely check this out! &lt;a href="https://github.com/dipakkr/A-to-Z-Resources-for-Students"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/dipakkr/A-to-Z-Resources-for-Students"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CW3mLNvc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583648524309/N-7ad1qRc.png" alt="screenshohhhhhht.png" width="581" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Best-websites-a-programmer-should-visit
&lt;/h3&gt;

&lt;p&gt;These are some really helpful sites you should definitely check.  you must know these to get always informed in order to do your technologies even better and learn new things. &lt;a href="https://github.com/sdmg15/Best-websites-a-programmer-should-visit"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--4YTDC0bH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583665729854/T5xcexDIL.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--4YTDC0bH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583665729854/T5xcexDIL.png" alt="23.png" width="597" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 awesome
&lt;/h3&gt;

&lt;p&gt;The name itself suggests its awesome. You can find a curated list of all kinds of interesting topics. &lt;a href="https://github.com/sindresorhus/awesome"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iQeyj5w4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583666265281/HFcB7f5CP.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iQeyj5w4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583666265281/HFcB7f5CP.png" alt="awesome.png" width="607" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 professional-programming
&lt;/h3&gt;

&lt;p&gt;The goal of this repository is to make you a more proficient developer. You'll find only resources that are truly inspiring, or that have become timeless classics. &lt;a href="https://github.com/charlax/professional-programming"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--K1UM6NNy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583671914170/2MgELEhMq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--K1UM6NNy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583671914170/2MgELEhMq.png" alt="pf.png" width="601" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 free-for-dev
&lt;/h3&gt;

&lt;p&gt;Developers have a massive amount of services offering free tiers, but it can be hard to find them all. This is a list of software (SaaS, PaaS, IaaS, etc.) and other offerings that have free tiers for developers. &lt;a href="https://github.com/ripienaar/free-for-dev"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VVwDN89X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667698613/98khisufv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VVwDN89X--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667698613/98khisufv.png" alt="freedev.png" width="605" height="137"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 free-programming-books
&lt;/h3&gt;

&lt;p&gt;List of Freely Available Programming Books on every computer science subject.  &lt;a href="https://github.com/EbookFoundation/free-programming-books"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oS4ZhklL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583668340443/cNWvba-aq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oS4ZhklL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583668340443/cNWvba-aq.png" alt="ebbok.png" width="603" height="152"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 spellbook-of-modern-webdev
&lt;/h3&gt;

&lt;p&gt;This repository can help you as a developer to have more power to do much more and much better, just like a spellbook does in fantasy worlds.  &lt;a href="https://github.com/dexteryy/spellbook-of-modern-webdev"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KqHZIByP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583681528810/yAg5UGX8Z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KqHZIByP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583681528810/yAg5UGX8Z.png" alt="spellbook.png" width="618" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 tech-interview-handbook
&lt;/h3&gt;

&lt;p&gt;This repository has practical content that covers all phases of a technical interview, from applying for a job to passing the interviews to offer negotiation.  Don't miss this if you want to be better at technical interviewing. &lt;a href="https://github.com/yangshun/tech-interview-handbook"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rpOsIMXj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583678473461/Ma75PfM0W.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rpOsIMXj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583678473461/Ma75PfM0W.png" alt="techinter.png" width="605" height="156"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 coding-interview-university
&lt;/h3&gt;

&lt;p&gt;This is a study plan for going from web developer (self-taught, no CS degree) to software engineer for a large company. The items listed here will prepare you well for a technical interview at just about any software company. &lt;a href="https://github.com/jwasham/coding-interview-university"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZOmXtdwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667172838/-K1f7W7VZ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZOmXtdwO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667172838/-K1f7W7VZ.png" alt="25.png" width="607" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 Become-A-Full-Stack-Web-Developer
&lt;/h3&gt;

&lt;p&gt;This repository is focused on JavaScript, React, and Node.js. There is also a wealth of information on interview prep and applying to jobs. &lt;a href="https://github.com/bmorelli25/Become-A-Full-Stack-Web-Developer"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1grtx3mm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583675791848/L66YCZQcq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1grtx3mm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583675791848/L66YCZQcq.png" alt="fullstack.png" width="613" height="124"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 frontend-dev-bookmarks
&lt;/h3&gt;

&lt;p&gt;curated collection of resources for frontend web developers. &lt;a href="https://github.com/dypsilon/frontend-dev-bookmarks"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rW2AsPyU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583672385236/D8Je6Ivat.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rW2AsPyU--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583672385236/D8Je6Ivat.png" alt="fdevbook.png" width="604" height="153"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 javascript-questions
&lt;/h3&gt;

&lt;p&gt;From basic to advanced: test how well you know JavaScript, refresh your knowledge a bit, or prepare for your coding interview!  &lt;a href="https://github.com/lydiahallie/javascript-questions"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aUrLW5AF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583677684325/d0OSeVHcT.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aUrLW5AF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583677684325/d0OSeVHcT.png" alt="jsque.png" width="602" height="127"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 javascript-algorithms
&lt;/h3&gt;

&lt;p&gt;This repository contains JavaScript based examples of many popular algorithms and data structures. &lt;a href="https://github.com/trekhleb/javascript-algorithms"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3ajKtT6r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667913451/IHRF9rNXx.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3ajKtT6r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667913451/IHRF9rNXx.png" alt="jsalgo.png" width="599" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 clean-code-javascript
&lt;/h3&gt;

&lt;p&gt;Software engineering principles, from Robert C. Martin's book Clean Code, adapted for JavaScript. This is not a style guide. It's a guide to producing readable, reusable, and refactorable software in JavaScript. &lt;a href="https://github.com/ryanmcdermott/clean-code-javascript"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--kGcBjjiM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583677990844/lgxG4jm_L.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kGcBjjiM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583677990844/lgxG4jm_L.png" alt="cleancode.png" width="603" height="154"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 wtfjs
&lt;/h3&gt;

&lt;p&gt;The primary goal of this list is to collect some crazy examples and explain how they work, if possible. Just because it's fun to learn something that we didn't know before. I loved it.  &lt;a href="https://github.com/denysdovhan/wtfjs"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---aOO6NlH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667367816/8bzLkHJ5P.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---aOO6NlH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583667367816/8bzLkHJ5P.png" alt="wtfjs.png" width="609" height="155"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌 public-apis
&lt;/h3&gt;

&lt;p&gt;A collective list of free APIs for use in software and web development.  &lt;a href="https://github.com/public-apis/public-apis"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dgfG71eS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583677525710/2qqTY-VUe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dgfG71eS--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1583677525710/2qqTY-VUe.png" alt="api.png" width="622" height="121"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  📌awesome-technical-writing
&lt;/h3&gt;

&lt;p&gt;A curated list of awesome resources: articles, books, videos, tools, podcasts about technical writing. &lt;a href="https://github.com/BolajiAyodeji/awesome-technical-writing"&gt;visit repository&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dzkYVzYD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1592988832329/Ai9zq8X6Y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dzkYVzYD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.hashnode.com/res/hashnode/image/upload/v1592988832329/Ai9zq8X6Y.png" alt="tech.png" width="621" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Well. This is more than enough to get you started. If you liked this collection, share it with your friends. let everyone know about these Github repositories. &lt;/p&gt;

&lt;p&gt;I keep writing about the things I learned and applied. So you can connect with me on &lt;a href="https://twitter.com/WankhadeRutik"&gt;Twitter&lt;/a&gt;, &lt;a href="https://github.com/rutikwankhade"&gt;Github&lt;/a&gt;  or &lt;a href="https://www.linkedin.com/in/rutik-wankhade"&gt;Linkedin&lt;/a&gt;&lt;br&gt;
or visit my portfolio &lt;a href="https://rutikw.now.sh"&gt;here&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;⚡ Happy learning !&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>codenewbie</category>
    </item>
    <item>
      <title>Why I started blogging</title>
      <dc:creator>Rutik Wankhade</dc:creator>
      <pubDate>Sat, 07 Mar 2020 18:18:15 +0000</pubDate>
      <link>https://dev.to/rutikwankhade/why-i-started-blogging-151p</link>
      <guid>https://dev.to/rutikwankhade/why-i-started-blogging-151p</guid>
      <description>&lt;h4&gt;
  
  
  Before I start this exciting journey let me introduce myself.
&lt;/h4&gt;

&lt;p&gt;👋 Hi ! I am Rutik Wankhade. I am a frontend developer , an avid learner who is passionate about web technologies and building things with code. I love creating open source projects and contributing to the community. Besides programming I love reading books and biographies, blogging, watching tedtalks, playing sports, travelling and learning new things every single day.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why I started blogging ?
&lt;/h3&gt;

&lt;p&gt;Well the purpose of this blog is pretty simple. I always believed in the mantra of learn-apply-share. So this blog is all about my learning and experiences. Right now I am in my learning phase and I think this process of documenting my journey from the beginning is really gonna help me learn and grow .&lt;br&gt;
But wait, I am not an expert ! So what ? I think waiting till you “become an expert” is a waste of time. The best advice I had was You Will Never Be Ready. Do It Anyway! And we all can contribute with what we know today. It doesn't have to be a big thing. We can start small. I guess this way I can see things in a fresh perspective . Here are top 3 reasons why I started this blog.&lt;/p&gt;

&lt;h4&gt;
  
  
  1. Documenting my journey
&lt;/h4&gt;

&lt;p&gt;To be honest I am writing this for myself. These are my notes. If I feel like writing about a topic, I will go for it! I want to document everything I learn.&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Learn by explaining
&lt;/h4&gt;

&lt;blockquote&gt;
&lt;p&gt;The ultimate test of your knowledge is your capacity to convey it to another.  -Richard Feynman&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;it is obvious that one has to do a lot of research in the process of writing a blog, and by doing so I am gonna learn a hell lot of things by studying different topics in depth. &lt;/p&gt;

&lt;h4&gt;
  
  
  3. Giving back to the community
&lt;/h4&gt;

&lt;p&gt;We have some awesome people in the dev industry who are always ready to help and contribute. Their existence is a gift to the community. So this is also my chance to give back to the community that helped me get started, a place I am proud to be part of. &lt;/p&gt;

&lt;p&gt;So I am very excited. And looking forward to learn and write some interesting posts here. &lt;/p&gt;

&lt;p&gt;You can connect me here.&lt;br&gt;
 &lt;a href="https://www.linkedin.com/in/rutik-wankhade"&gt;Linkedin&lt;/a&gt; and &lt;a href="https://github.com/rutikwankhade"&gt;Github&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And Follow me on &lt;a href="https://twitter.com/WankhadeRutik"&gt;Twitter&lt;/a&gt; &lt;br&gt;
Liquid error: internal&lt;/p&gt;

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