<?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>Forem: World In Dev</title>
    <description>The latest articles on Forem by World In Dev (@worldindev).</description>
    <link>https://forem.com/worldindev</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%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png</url>
      <title>Forem: World In Dev</title>
      <link>https://forem.com/worldindev</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/worldindev"/>
    <language>en</language>
    <item>
      <title>Weekly Digest 30/2021 – Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 01 Aug 2021 17:32:45 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-30-2021-2om0</link>
      <guid>https://forem.com/worldindev/weekly-digest-30-2021-2om0</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #30 which is the first one in August for this year.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Creating an accessible autocomplete experience
&lt;/h3&gt;

&lt;p&gt;After many months of research, development, and testing, we’re excited to announce that the React Spectrum ComboBox component and React Aria &lt;code&gt;useComboBox&lt;/code&gt; hook are now available! In this post, we'll take a deeper look into some of the challenges we faced when building an accessible and mobile-friendly ComboBox.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://react-spectrum.adobe.com/blog/building-a-combobox.html"&gt;Creating an accessible autocomplete experience&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  A framework for building Open Graph images
&lt;/h3&gt;

&lt;p&gt;We recently set about creating a framework and service for automatically generating social sharing images for repositories and other resources on GitHub.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.blog/2021-06-22-framework-building-open-graph-images/"&gt;A framework for building Open Graph images | The GitHub Blog&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  ES2021 Features
&lt;/h3&gt;

&lt;p&gt;ES2021 as approved by the Ecma General Assembly&lt;/p&gt;

&lt;p&gt;&lt;a href="https://h3manth.com/ES2021/"&gt;ES2021 features list&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  How to test component interactions
&lt;/h3&gt;

&lt;p&gt;Learn how to simulate user behavior and run functional checks&lt;/p&gt;

&lt;p&gt;&lt;a href="https://storybook.js.org/blog/testing-component-interactions/"&gt;How to test component interactions&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Building A Sliding Puzzle Game with a Custom Image Using ReactJS
&lt;/h3&gt;

&lt;p&gt;In this video tutorial, Daniel shows you how to build a 16 tile sliding puzzle game where you can set your own image as the puzzle background.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/BarelyDaniel"&gt;Daniel Bark&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  HackTheBox "Business CTF" - discordvm - Node.js Sandbox Escape
&lt;/h3&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/_johnhammond"&gt;John Hammond&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The New Way To Debug JavaScript in VS Code
&lt;/h3&gt;

&lt;p&gt;VS Code now has built-in debugging. This means you don't need to install an extra extension to get started debugging JavaScript. In this video, James will show you how to set it up&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/jamesqquick"&gt;James Q Quick&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Terraform in 100 Seconds
&lt;/h3&gt;

&lt;p&gt;Terraform is an Infrastructure as Code (IAC) tool that can provision resources in the cloud. Learn how to set up terraform and connect it to cloud providers like AWS, Google Cloud, Azure, or Docker to automate your infrastructure&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/fireship_dev"&gt;Fireship&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  VS Code tips: Add missing function Quick Fix for JavaScript and TypeScript
&lt;/h3&gt;

&lt;p&gt;Use this quick fix to stub out missing functions in TypeScript and JavaScript files&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/mattbierner"&gt;Matt Bierner&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A CSS Grid Layout with Pictures Down One Side Matched Up with Paragraphs on the Other
&lt;/h3&gt;

&lt;p&gt;We go through some image best practices, look at a clever technique for testing layout sizes with a single click, deal with small screen layouts, and then battle with how we get to keep our nice layout when extra HTML elements "get in the way".&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/chriscoyier"&gt;Chris Coyier&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  GitHub Readme Stats
&lt;/h3&gt;

&lt;p&gt;Get dynamically generated GitHub stats on your readmes!&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/anuraghazra"&gt;
        anuraghazra
      &lt;/a&gt; / &lt;a href="https://github.com/anuraghazra/github-readme-stats"&gt;
        github-readme-stats
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ⚡ Dynamically generated stats for your github readmes
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
 &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/9ad8cfe3215fff758ea74784f86ef0de25b6acfbd6a4fab19d9a13ff47b05843/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f616e7572616768617a72612f696d6167652f75706c6f61642f76313539343930383234322f6c6f676f5f636373776d652e737667"&gt;&lt;img width="100px" src="https://camo.githubusercontent.com/9ad8cfe3215fff758ea74784f86ef0de25b6acfbd6a4fab19d9a13ff47b05843/68747470733a2f2f7265732e636c6f7564696e6172792e636f6d2f616e7572616768617a72612f696d6167652f75706c6f61642f76313539343930383234322f6c6f676f5f636373776d652e737667" alt="GitHub Readme Stats"&gt;&lt;/a&gt;
 &lt;/p&gt;
&lt;h2&gt;
GitHub Readme Stats&lt;/h2&gt;
 &lt;p&gt;Get dynamically generated GitHub stats on your readmes!&lt;/p&gt;
  &lt;p&gt;
    &lt;a href="https://github.com/anuraghazra/github-readme-stats/actions"&gt;
      &lt;img alt="Tests Passing" src="https://res.cloudinary.com/practicaldev/image/fetch/s--KnqeXtfT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/anuraghazra/github-readme-stats/workflows/Test/badge.svg"&gt;
    &lt;/a&gt;
    &lt;a href="https://codecov.io/gh/anuraghazra/github-readme-stats" rel="nofollow"&gt;
      &lt;img src="https://camo.githubusercontent.com/fcf518832a072a287bf239168372ebecd4029b2b8fc0368480bebf798cc3d185/68747470733a2f2f636f6465636f762e696f2f67682f616e7572616768617a72612f6769746875622d726561646d652d73746174732f6272616e63682f6d61737465722f67726170682f62616467652e737667"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues"&gt;
      &lt;img alt="Issues" src="https://camo.githubusercontent.com/9a1ccc014b4e40f5f5e4d5a6da28a6324e6f6cf045e6daf466b01c24f6bb1bbf/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732f616e7572616768617a72612f6769746875622d726561646d652d73746174733f636f6c6f723d303038386666"&gt;
    &lt;/a&gt;
    &lt;a href="https://github.com/anuraghazra/github-readme-stats/pulls"&gt;
      &lt;img alt="GitHub pull requests" src="https://camo.githubusercontent.com/a0de966be6c8f4df036daa3c061a289757395f8cb33d9d5bae5b80f2ab5df6eb/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6973737565732d70722f616e7572616768617a72612f6769746875622d726561646d652d73746174733f636f6c6f723d303038386666"&gt;
    &lt;/a&gt;
    &lt;br&gt;
    &lt;br&gt;
    &lt;a href="https://a.paddle.com/v2/click/16413/119403?link=1227" rel="nofollow"&gt;
      &lt;img src="https://camo.githubusercontent.com/e37f67b8f84f55072ab111fc7669d5ce3a80f6cc2c3b383fc28957ad68a14122/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f537570706f7274656425323062792d5653436f6465253230506f776572253230557365722532302545322538362539322d677261792e7376673f636f6c6f72413d36353542453126636f6c6f72423d344634344436267374796c653d666f722d7468652d6261646765"&gt;
    &lt;/a&gt;
    &lt;a href="https://a.paddle.com/v2/click/16413/119403?link=2345" rel="nofollow"&gt;
      &lt;img src="https://camo.githubusercontent.com/50538dc7e13a096fcdedd3a0f3070f8639674bf5fa533467d86da295956f1b1a/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f537570706f7274656425323062792d4e6f6465253230436c692e636f6d2532302545322538362539322d677261792e7376673f636f6c6f72413d36316332363526636f6c6f72423d344341463530267374796c653d666f722d7468652d6261646765"&gt;
    &lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#demo"&gt;View Demo&lt;/a&gt;
    ·
    &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/new/choose"&gt;Report Bug&lt;/a&gt;
    ·
    &lt;a href="https://github.com/anuraghazra/github-readme-stats/issues/new/choose"&gt;Request Feature&lt;/a&gt;
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_fr.md"&gt;Français &lt;/a&gt;
    ·
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_cn.md"&gt;简体中文&lt;/a&gt;
    ·
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_es.md"&gt;Español&lt;/a&gt;
    ·
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_de.md"&gt;Deutsch&lt;/a&gt;
    ·
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_ja.md"&gt;日本語&lt;/a&gt;
    ·
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_pt-BR.md"&gt;Português Brasileiro&lt;/a&gt;
    ·
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_it.md"&gt;Italiano&lt;/a&gt;
    ·
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_kr.md"&gt;한국어&lt;/a&gt;
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_nl.md"&gt;Nederlands&lt;/a&gt;
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_np.md"&gt;नेपाली&lt;/a&gt;
    .
    &lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md//docs/readme_tr.md"&gt;Türkçe&lt;/a&gt;
  &lt;/p&gt;

&lt;p&gt;Love the project? Please consider &lt;a href="https://www.paypal.me/anuraghazra" rel="nofollow"&gt;donating&lt;/a&gt; to help it improve!
&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://indiafightscorona.giveindia.org" rel="nofollow"&gt;
&lt;img src="https://camo.githubusercontent.com/e666ec49298c4bb3bae2b8b8facf98f11d6e4c0ebac0057423dee0e203951e0c/68747470733a2f2f643277766472786d7238703077662e636c6f756466726f6e742e6e65742f7374617469632f67697665696e6469612e737667" alt="Give india logo" width="200"&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;Are you considering to support the project by donating to me? Please DON'T!!&lt;/p&gt;

&lt;p&gt;Instead, Help India fight 2nd deadly wave of COVID,&lt;br&gt;
Thousands of people are dying in India for lack of Oxygen &amp;amp; COVID related necessary infrastructure.&lt;/p&gt;
&lt;p&gt;Visit &lt;a href="https://indiafightscorona.giveindia.org" rel="nofollow"&gt;https://indiafightscorona.giveindia.org&lt;/a&gt; and make a small donation to help us fight covid and overcome this crisis.&lt;br&gt;
Your small help goes a long way. ❤️&lt;/p&gt;

&lt;h1&gt;
Features&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#github-stats-card"&gt;GitHub Stats Card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#github-extra-pins"&gt;GitHub Extra Pins&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#top-languages-card"&gt;Top Languages Card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#wakatime-week-stats"&gt;Wakatime Week Stats&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#themes"&gt;Themes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#customization"&gt;Customization&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#common-options"&gt;Common Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#stats-card-exclusive-options"&gt;Stats Card Exclusive Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#repo-card-exclusive-options"&gt;Repo Card Exclusive Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#language-card-exclusive-options"&gt;Language Card Exclusive Options&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#wakatime-card-exclusive-options"&gt;Wakatime Card Exclusive Option&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/anuraghazra/github-readme-stats/master/readme.md/#deploy-on-your-own-vercel-instance"&gt;Deploy Yourself&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h1&gt;
GitHub Stats&lt;/h1&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/anuraghazra/github-readme-stats"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Size Limit
&lt;/h3&gt;

&lt;p&gt;Size Limit is a performance budget tool for JavaScript. It checks every commit on CI, calculates the real cost of your JS for end-users, and throws an error if the cost exceeds the limit.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ai"&gt;
        ai
      &lt;/a&gt; / &lt;a href="https://github.com/ai/size-limit"&gt;
        size-limit
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Calculate the real cost to run your JS app or lib to keep good performance. Show error in pull request if the cost exceeds the limit.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Size Limit &lt;a href="http://cultofmartians.com/tasks/size-limit-config.html" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1096cbef605f5e835f4fb7d98461e27e595dec7647ff3acfa06c1fc0b174b8cc/687474703a2f2f63756c746f666d61727469616e732e636f6d2f6173736574732f6261646765732f62616467652e737667" alt="Cult Of Martians"&gt;&lt;/a&gt;
&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/1a4603ab9faf244c245c8fe4d1bd348240ec9f40989d3fb59333ea1b9119d011/68747470733a2f2f61692e6769746875622e696f2f73697a652d6c696d69742f6c6f676f2e737667"&gt;&lt;img src="https://camo.githubusercontent.com/1a4603ab9faf244c245c8fe4d1bd348240ec9f40989d3fb59333ea1b9119d011/68747470733a2f2f61692e6769746875622e696f2f73697a652d6c696d69742f6c6f676f2e737667" alt="Size Limit logo by Anton Lovchikov" width="120" height="178"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Size Limit is a performance budget tool for JavaScript. It checks every commit
on CI, calculates the real cost of your JS for end-users and throws an error
if the cost exceeds the limit.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;ES modules&lt;/strong&gt; and &lt;strong&gt;tree-shaking&lt;/strong&gt; support.&lt;/li&gt;
&lt;li&gt;Add Size Limit to &lt;strong&gt;Travis CI&lt;/strong&gt;, &lt;strong&gt;Circle CI&lt;/strong&gt;, &lt;strong&gt;GitHub Actions&lt;/strong&gt;
or another CI system to know if a pull request adds a massive dependency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Modular&lt;/strong&gt; to fit different use cases: big JS applications
that use their own bundler or small npm libraries with many files.&lt;/li&gt;
&lt;li&gt;Can calculate &lt;strong&gt;the time&lt;/strong&gt; it would take a browser
to download and &lt;strong&gt;execute&lt;/strong&gt; your JS. Time is a much more accurate
and understandable metric compared to the size in bytes.&lt;/li&gt;
&lt;li&gt;Calculations include &lt;strong&gt;all dependencies and polyfills&lt;/strong&gt;
used in your JS.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/ai/size-limit/main/./img/example.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---1dHNpvc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/ai/size-limit/main/./img/example.png" alt="Size Limit CLI" width="738"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;With &lt;strong&gt;&lt;a href="https://github.com/andresz1/size-limit-action"&gt;GitHub action&lt;/a&gt;&lt;/strong&gt; Size Limit will post bundle size changes as a comment
in pull request discussion.&lt;/p&gt;
&lt;p&gt;
&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/andresz1/size-limit-action/master/assets/pr.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--daWu0sWX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/andresz1/size-limit-action/master/assets/pr.png" alt="Size Limit comment in pull request about bundle size changes" width="686" height="289"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;With &lt;code&gt;--why&lt;/code&gt;, Size Limit…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ai/size-limit"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;





&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Node – Crypto NFT iOS UI Kit
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7t03COzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/427857/screenshots/16111789/media/517219af5044d1cc51721016eddb0772.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7t03COzo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/427857/screenshots/16111789/media/517219af5044d1cc51721016eddb0772.png" alt="https://cdn.dribbble.com/users/427857/screenshots/16111789/media/517219af5044d1cc51721016eddb0772.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16111789-Node-Crypto-NFT-iOS-UI-Kit"&gt;Tran Mau Tri Tam&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Sign In to Account
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XRyPbS2B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2295041/screenshots/16148191/media/14f69726e194a45e88e28b56c2eae86d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XRyPbS2B--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2295041/screenshots/16148191/media/14f69726e194a45e88e28b56c2eae86d.png" alt="https://cdn.dribbble.com/users/2295041/screenshots/16148191/media/14f69726e194a45e88e28b56c2eae86d.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16148191-Sign-In-to-Account"&gt;Evgeniy Kritskiy&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Messenger App - Mobile Design
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--551wEHZw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/7514969/screenshots/16138461/media/ae57f511802b4d77f762d4979f587e72.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--551wEHZw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/7514969/screenshots/16138461/media/ae57f511802b4d77f762d4979f587e72.png" alt="https://cdn.dribbble.com/users/7514969/screenshots/16138461/media/ae57f511802b4d77f762d4979f587e72.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16138461-Messenger-App-Mobile-Design"&gt;Julius Branding&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Course learning app ui ux
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--77RnTJ45--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/6586470/screenshots/16149674/media/61d169ed40a06b9c2bb3f8435fe508e8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--77RnTJ45--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/6586470/screenshots/16149674/media/61d169ed40a06b9c2bb3f8435fe508e8.png" alt="https://cdn.dribbble.com/users/6586470/screenshots/16149674/media/61d169ed40a06b9c2bb3f8435fe508e8.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16149674-Course-learning-app-ui-ux"&gt;Marina Budarina&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mamhw0s9--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1419555774229979137/pu/img/E1P0hdfMviMmlVKT.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--mvlHoHkL--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/796977891900682240/7C9D7Olt_normal.jpg" alt="Matt Bierner profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Matt Bierner
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @mattbierner
      &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;
      Todays's &lt;a href="https://twitter.com/code"&gt;@code&lt;/a&gt; tip: Markdown math&lt;br&gt;&lt;br&gt;VS Code's built-in &lt;a href="https://twitter.com/hashtag/markdown"&gt;#markdown&lt;/a&gt; preview supports KaTeX math equations.&lt;br&gt;&lt;br&gt;Use $math$ for inline math&lt;br&gt;&lt;br&gt;Use $$math$$ for centered math blocks&lt;br&gt;&lt;br&gt;&lt;a href="https://twitter.com/hashtag/code2020"&gt;#code2020&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      15:30 PM - 26 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1419681417479344141" 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=1419681417479344141" 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=1419681417479344141" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LJ138VZb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E7VJ5FbWUAYithw.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--F26Oc0ef--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1677873294/image_normal.jpg" alt="Nat Friedman profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Nat Friedman
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @natfriedman
      &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;
      We’ve just added built-in citation support to GitHub so researchers and scientists can more easily receive acknowledgments for their contributions to software.&lt;br&gt;&lt;br&gt;Just push a CITATION.cff file and we’ll add a handy widget to the repo sidebar for you.&lt;br&gt;&lt;br&gt;Enjoy! 🎉 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      20:43 PM - 27 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1420122675813441540" 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=1420122675813441540" 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=1420122675813441540" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HhQubfAf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1420076701992714240/pu/img/kVs4rGP1j_LXD-Eg.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTZOvLCd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1332018227942019073/Jh666gw3_normal.jpg" alt="Adam Argyle profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Adam Argyle
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/argyleink"&gt;@argyleink&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;
      the cure for a noisy styles sidebar?&lt;br&gt;filtering 🤓&lt;br&gt;&lt;br&gt;reduce a huge, overwhelming list of properties and values.. to just a few, by typing a bit of your intent into the &lt;a href="https://twitter.com/ChromeDevTools"&gt;@ChromeDevTools&lt;/a&gt; styles pane filter bar 👍🏻 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      13:37 PM - 28 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1420377752667107328" 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=1420377752667107328" 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=1420377752667107328" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GckM5Tf1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E7jbbU0WQAgxkzP.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--WtqGx4H6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1414990564408262661/r6YemvF9_normal.jpg" alt="GitHub profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        GitHub
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @github
      &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;
      Want to quickly find a string in your project? You can use the 'git grep' command in your local repo. 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      15:14 PM - 30 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1421126947971768320" 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=1421126947971768320" 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=1421126947971768320" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H0IInyeg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E7g7bl2XEAIQ-3Y.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--QAM4i7nw--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1330968883969318916/rekM4n0I_normal.png" alt="Steven ⬢ profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Steven ⬢
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/styfle"&gt;@styfle&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;
      &lt;a href="https://t.co/mHfzbkQMUc"&gt;Array.prototype.at&lt;/a&gt;() is available now! Don't be the _last_ to know about it 🙂 &lt;br&gt;&lt;br&gt;◦ Chrome 92&lt;br&gt;◦ Firefox 90&lt;br&gt;◦ Node.js 16.5.0&lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/y737hg04JE"&gt;developer.mozilla.org/en-US/docs/Web…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      03:35 AM - 30 Jul 2021
    &lt;/div&gt;


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

&lt;h3&gt;
  
  
  Gradient Stroke
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/marcobiedermann/embed/GRmxWwK?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/BiedermannMarco"&gt;Marco Biedermann&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  11 Geometric Trees
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/RodenKerthin/embed/WNjXpLz?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/BelichenkoRoden"&gt;Roden&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Syntax – The Surprisingly Exciting World of Favicons
&lt;/h3&gt;

&lt;p&gt;In this Hasty Treat, Scott and Wes talk about favicons. Favicons are a bit of mystery and something people don't talk about that often.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/1dQFDqAqocI8LdqOv0Se12"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The CSS Podcast – counters and @counter-style
&lt;/h3&gt;

&lt;p&gt;Count on The CSS Podcast to cover counters. Una and Adam teach all the ways to create, reset, and update counters. Use them for lists, games, and more!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/0pYXkLEaj1HiBxEjTHHHYJ"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntax – ShopTalk x Syntax
&lt;/h3&gt;

&lt;p&gt;In this episode of Syntax, Scott and Wes do a collaboration with Chis Coyier and Dave Rupert from ShopTalk Show! They talk about favorite tech stacks, podcasting, learning new tech, dealing with FOMO, and more!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/3vMipT7dHGHBRkf7xWra9g"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The Changelog – Modern Unix tools
&lt;/h3&gt;

&lt;p&gt;This week we’re talking with Nick Janetakis about modern unix tools, and the various commands, tooling, and ways we use the command line. Do you Bash or Zsh? Do you use &lt;code&gt;cat&lt;/code&gt; or &lt;code&gt;bat&lt;/code&gt;? What about &lt;code&gt;man&lt;/code&gt; vs &lt;code&gt;tldr&lt;/code&gt;? Today’s show is a deep dive into unix tools you know and love or should know, and &lt;em&gt;maybe&lt;/em&gt; love.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/6Ba5gsLTfQROyqsuRyorpL"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Digest 29/2021 – Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 25 Jul 2021 17:33:40 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-29-2021-45p2</link>
      <guid>https://forem.com/worldindev/weekly-digest-29-2021-45p2</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #29 of this year.&lt;br&gt;
It's still a bit quiet out there in the community due to summer holidays.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;



&lt;p&gt; &lt;/p&gt;
&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The Large, Small, and Dynamic Viewports
&lt;/h3&gt;

&lt;p&gt;There are some changes being made regarding viewport units. The additions define several viewport sizes: the Large, Small, and Dynamic Viewport.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.bram.us/2021/07/08/the-large-small-and-dynamic-viewports/"&gt;The Large, Small, and Dynamic Viewports&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Temporal: getting started with JavaScript’s new date time API
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://2ality.com/2021/06/temporal-api.html"&gt;Temporal: getting started with JavaScript's new date time API&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Automatic hyphenation depends on the defined document language
&lt;/h3&gt;

&lt;p&gt;Ways to hyphenate words and how the document language affects automatic hyphenation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.stefanjudis.com/today-i-learned/automatic-hyphenation-depends-on-the-defined-document-language/"&gt;Automatic hyphenation depends on the defined document language&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Performance Testing CSS-Tricks with WebPageTest
&lt;/h3&gt;

&lt;p&gt;Chris Coyier (CSS-Tricks) gets a hands-on performance review with Tim Kadlec (WebPageTest).&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/chriscoyier"&gt;Chris Coyier&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  The Math behind Animations
&lt;/h3&gt;

&lt;p&gt;Learn React Native Gestures and Animations&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/wcandillon"&gt;William Candillon&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  visx
&lt;/h3&gt;

&lt;p&gt;visx is a collection of reusable low-level visualization components. visx combines the power of d3 to generate your visualization with the benefits of react for updating the DOM.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/airbnb"&gt;
        airbnb
      &lt;/a&gt; / &lt;a href="https://github.com/airbnb/visx"&gt;
        visx
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      🐯 visx | visualization components
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/airbnb/visx/master/./assets/visx-geometry.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--05vnhakG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/airbnb/visx/master/./assets/visx-geometry.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a title="npm version" href="https://www.npmjs.com/~visx" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/1eb540f8b28a6b6fc3690d4356abdd4e10fba2d7a175584e50819474b3142dac/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40766973782f64656d6f2e7376673f7374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
  &lt;a title="build status" href="https://travis-ci.org/airbnb/visx" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/0414e98caa33332467c9a2bb298f98d05b166a80edacd1f619e59b9c1141dc36/68747470733a2f2f7472617669732d63692e6f72672f616972626e622f766973782e7376673f6272616e63683d6d6173746572"&gt;
  &lt;/a&gt;
  &lt;a href="https://coveralls.io/github/airbnb/visx?branch=master" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/204bb07fd0b882fb80b66afc8b2f6bc17897eb99fc5c86d9af863644ce629f1d/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f616972626e622f766973782f62616467652e7376673f6272616e63683d6d6173746572" alt="Coverage Status"&gt;
  &lt;/a&gt;
  &lt;a title="@visx/shape npm downloads" href="https://www.npmjs.com/package/@visx/shape" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/ad27e9d152208664a2b99440660e7fe4a4957d4d145af69218d764b26308f6a4/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f40766973782f73686170652e7376673f7374796c653d666c61742d737175617265"&gt;
  &lt;/a&gt;
  &lt;a href="https://app.fossa.io/projects/git%2Bhttps%3A%2F%2Fgithub.com%2Fhshoff%2Fvx?ref=badge_shield" alt="FOSSA Status" rel="nofollow"&gt;     &lt;img src="https://camo.githubusercontent.com/7497137581e43f79e3bae080250fcd2618162c97a59e5371f8ed45c213960a6b/68747470733a2f2f6170702e666f7373612e696f2f6170692f70726f6a656374732f67697425324268747470732533412532462532466769746875622e636f6d2532466873686f666625324676782e7376673f747970653d736869656c64"&gt;
  &lt;/a&gt;
  &lt;a href="https://lernajs.io/" alt="lerna" rel="nofollow"&gt;
     &lt;img src="https://camo.githubusercontent.com/3bc63f921dd60bac6d91aa900ef570c928b2aa4c2124ed23647e8fe9d2232853/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6d61696e7461696e6564253230776974682d6c65726e612d6363303066662e737667"&gt;
  &lt;/a&gt;
&lt;/p&gt;

&lt;h3&gt;
visx&lt;/h3&gt;
&lt;p&gt;visx is a collection of reusable low-level visualization components. visx combines the power of d3
to generate your visualization with the benefits of react for updating the DOM.&lt;/p&gt;
&lt;br&gt;
&lt;p&gt;
  &lt;strong&gt;
    &lt;a href="https://airbnb.io/visx" rel="nofollow"&gt;Docs&lt;/a&gt;
  &lt;/strong&gt;
  •
  &lt;strong&gt;
    &lt;a href="https://airbnb.io/visx/gallery" rel="nofollow"&gt;Gallery&lt;/a&gt;
  &lt;/strong&gt;
  •
  &lt;strong&gt;
    &lt;a href="https://medium.com/vx-code/getting-started-with-vx-1756bb661410" rel="nofollow"&gt;Blog&lt;/a&gt;
  &lt;/strong&gt;
  •
  &lt;strong&gt;
    &lt;a href="https://d3-slackin.herokuapp.com/" title="Join https://d3js.slack.com" rel="nofollow"&gt;Slack #visx&lt;/a&gt;
  &lt;/strong&gt;
  •
  &lt;strong&gt;
    &lt;a href="https://raw.githubusercontent.com/airbnb/visx/master/./CHANGELOG.md"&gt;Changelog&lt;/a&gt;
  &lt;/strong&gt;
  •
  &lt;strong&gt;
    &lt;a href="https://medium.com/vx-code/getting-started-with-vx-1756bb661410" rel="nofollow"&gt;Getting started tutorial&lt;/a&gt;
  &lt;/strong&gt;
&lt;/p&gt;
&lt;p&gt;
  &lt;a href="https://airbnb.io/visx/gallery" rel="nofollow"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HRaxl_1j--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/airbnb/visx/master/./assets/visx-gallery.png"&gt;
  &lt;/a&gt;
&lt;/p&gt;
&lt;h2&gt;
Usage&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://glitch.com/edit/#!/remix/kind-modem" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/e76f4a9faaaf9f2eb277d34f4f290a5828d7beacdbcb169894fa6418db96da00/68747470733a2f2f63646e2e676c697463682e636f6d2f32373033626166322d623634332d346461372d616239312d37656532613264303062356225324672656d69782d627574746f6e2e737667" alt="Remix on Glitch"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Let's make a simple bar graph.&lt;/p&gt;
&lt;p&gt;First we'll install the relevant packages:&lt;/p&gt;
&lt;div class="snippet-clipboard-content position-relative"&gt;&lt;pre&gt;&lt;code&gt;$ npm install --save @visx/mock-data @visx/group @visx/shape @visx/scale
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/airbnb/visx/master/./assets/simplebar.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eq_qmKvM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/airbnb/visx/master/./assets/simplebar.png" height="150"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="highlight highlight-source-js position-relative js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-v"&gt;React&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;letterFrequency&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@visx/mock-data'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Group&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@visx/group'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;Bar&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@visx/shape'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;scaleLinear&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-s1"&gt;scaleBand&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@visx/scale'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-c"&gt;// We'll use some mock data from `@visx/mock-data` for this.&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;data&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-s1"&gt;letterFrequency&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

&lt;span class="pl-c"&gt;// Define the graph dimensions and margins&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;width&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;500&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;height&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-c1"&gt;500&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-s1"&gt;margin&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;top&lt;/span&gt;: &lt;span class="pl-c1"&gt;20&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;bottom&lt;/span&gt;: &lt;span class="pl-c1"&gt;20&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;left&lt;/span&gt;: &lt;span class="pl-c1"&gt;20&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-c1"&gt;right&lt;/span&gt;: &lt;span class="pl-c1"&gt;20&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/airbnb/visx"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  WiFi Card
&lt;/h3&gt;

&lt;p&gt;Print a simple card with your WiFi login details. Tape it to the fridge, keep it in your wallet, etc.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/bndw"&gt;
        bndw
      &lt;/a&gt; / &lt;a href="https://github.com/bndw/wifi-card"&gt;
        wifi-card
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      📶 Print a QR code for connecting to your WiFi (wificard.io)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://github.com/bndw/wifi-card/workflows/ci/badge.svg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UBIGlwTh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/bndw/wifi-card/workflows/ci/badge.svg" alt="ci"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/bndw/wifi-card/master/./public/images/wifi.png"&gt;&lt;img width="32px" src="https://res.cloudinary.com/practicaldev/image/fetch/s--PO3yHza8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/bndw/wifi-card/master/./public/images/wifi.png"&gt;&lt;/a&gt; WiFi Card&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://wificard.io" rel="nofollow"&gt;https://wificard.io&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Print a simple card with your WiFi login details. Tape it to the fridge, keep it in your wallet, etc.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/48166553/125853182-49fd361d-5797-4989-afbf-e6a617945be2.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q8lO9skE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://user-images.githubusercontent.com/48166553/125853182-49fd361d-5797-4989-afbf-e6a617945be2.gif" alt="wificard"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Running locally&lt;/h2&gt;
&lt;p&gt;Run the official Docker image on &lt;a href="http://localhost:8080" rel="nofollow"&gt;http://localhost:8080&lt;/a&gt;&lt;/p&gt;
&lt;div class="snippet-clipboard-content position-relative"&gt;&lt;pre&gt;&lt;code&gt;make run
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Development&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;Make sure you have &lt;code&gt;yarn&lt;/code&gt; installed&lt;/li&gt;
&lt;li&gt;Run the live-reload server on &lt;a href="http://localhost:3000" rel="nofollow"&gt;http://localhost:3000&lt;/a&gt;
&lt;div class="snippet-clipboard-content position-relative"&gt;&lt;pre&gt;&lt;code&gt;make dev
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This project uses &lt;a href="https://prettier.io/" rel="nofollow"&gt;Prettier&lt;/a&gt; formatting and all pull requests must pass
the automated lint checks prior to merging.&lt;/p&gt;
&lt;p&gt;Run the lint check with:&lt;/p&gt;
&lt;div class="snippet-clipboard-content position-relative"&gt;&lt;pre&gt;&lt;code&gt;make fmt
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Rewrite the files to resolve any style issues with:&lt;/p&gt;
&lt;div class="snippet-clipboard-content position-relative"&gt;&lt;pre&gt;&lt;code&gt;make fmt.write
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;h2&gt;
Supported Languages&lt;/h2&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Language&lt;/th&gt;
&lt;th&gt;Author Credit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;English&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/bndw"&gt;bndw&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chinese&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Baoyuantop"&gt;Baoyuantop&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Spanish&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/oscfdezdz"&gt;oscfdezdz&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Portuguese&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/pedrorenan"&gt;pedrorenan&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Japanese&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/hatsu38"&gt;hatsu38&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Russian&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Teraskull"&gt;Teraskull&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ukrainian&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Teraskull"&gt;Teraskull&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Dutch&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/wouterbrink"&gt;wouterbrink&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;French&lt;/td&gt;
&lt;td&gt;&lt;a href="https://github.com/Divlo"&gt;Divlo&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/bndw/wifi-card"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;
&lt;br&gt;


&lt;h3&gt;
  
  
  Windows 11 in React
&lt;/h3&gt;

&lt;p&gt;This open-source project is made in the hope to replicate the Windows 11 desktop experience on the web, using standard web technologies like React, CSS (SCSS), and JS.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/blueedgetechno"&gt;
        blueedgetechno
      &lt;/a&gt; / &lt;a href="https://github.com/blueedgetechno/windows11"&gt;
        windows11
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      windows 11 in react 💻🌈⚡
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Windows 11 in React&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://github.com/blueedgetechno"&gt;&lt;img src="https://camo.githubusercontent.com/6803c4aa378f5ec42f6e8c2f9f6f9f0d1165099f66707c665d75b2fd57574c4e/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f666f6c6c6f776572732f626c756565646765746563686e6f3f6c6162656c3d666f6c6c6f772532306d65267374796c653d736f6369616c" alt="Follow me"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/blueedgetechno" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/dd47873b5609985bbaea0e9a25028dbda19329d24a1c74b90ff972cdf7141b8a/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f626c756565646765746563686e6f3f6c6162656c3d466f6c6c6f772532306d65267374796c653d736f6369616c" alt="Follow Twitter"&gt;&lt;/a&gt;
&lt;a href="https://app.netlify.com/sites/win11blue/deploys" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/1b3e5bc84553207bef8c8edd30a34aa2f5f85c12ef354363907a629778070492/68747470733a2f2f6170692e6e65746c6966792e636f6d2f6170692f76312f6261646765732f63366538396662362d623266312d343861382d623564302d3934613239666336333266392f6465706c6f792d737461747573" alt="Netlify Status"&gt;&lt;/a&gt;
&lt;a href="https://discord.com/invite/Fz3Dkc4S" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/4b835a4c638f7bdedfe40f63a6f0a840c2277e3c57d4445495e696b68461eaae/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3836383439393037363433323430383632372e7376673f6c6162656c3d266c6f676f3d646973636f7264266c6f676f436f6c6f723d66666666666626636f6c6f723d373338394438266c6162656c436f6c6f723d364137454332" alt="Join"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This open source project is made in the hope to replicate the Windows 11 desktop experience on web, using standard web technologies like React, CSS (SCSS), and Js.&lt;/p&gt;
&lt;h4&gt;
Live Experience🌈: &lt;a href="https://win11.blueedge.me" rel="nofollow"&gt;win11.blueedge.me&lt;/a&gt;
&lt;/h4&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/home.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cg8-cfCa--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/home.png" alt="home"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Gallery&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/gallery1.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3AppNyui--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/gallery1.png" alt="pic1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/gallery2.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mVvdsKpF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/gallery2.png" alt="pic1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/gallery3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AA-C7Uqk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/blueedgetechno/windows11/master/./public/img/gallery3.png" alt="pic1"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Why&lt;/h1&gt;
&lt;p&gt;WHY NOT? Why not just waste a week of your life creating a react project just to coverup your insecurities of how incompetent you are. Just Why not!&lt;/p&gt;
&lt;h1&gt;
Features&lt;/h1&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 Start Menu, Search Menu and Widgets&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Desktop and Right Click action&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Side Navigation and Calendar View&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Snap windows in different layouts&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Browser, Store, Terminal, Calculator&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Notepad, Vscode, Whiteboard&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 File Explorer + other apps&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Drag and Resize windows&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Startup and Lock screen&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Themes and Background&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;📑 &lt;a href="https://github.com/blueedgetechno/windows11/issues/new/choose"&gt;suggest more&lt;/a&gt;&lt;/p&gt;
&lt;h1&gt;
Stack&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;Framework - React (^17.0.2) + Redux&lt;/li&gt;
&lt;li&gt;Component/UI Library - None!!&lt;/li&gt;
&lt;li&gt;Styling Solution - SCSS and CSS Modules (tailwind).&lt;/li&gt;
&lt;li&gt;Icons - fontawesome&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
FAQ&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;How long it took?&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Honestly It took 2-3 days collecting assets, 2-3…&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/blueedgetechno/windows11"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Infracost
&lt;/h3&gt;

&lt;p&gt;Infracost shows cloud cost estimates for infrastructure-as-code projects such as Terraform. It helps DevOps, SRE, and developers to quickly see a cost breakdown and compare different options up front.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/infracost"&gt;
        infracost
      &lt;/a&gt; / &lt;a href="https://github.com/infracost/infracost"&gt;
        infracost
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Cloud cost estimates for Terraform in pull requests💰📉 Love your cloud bill!
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://www.infracost.io" rel="nofollow"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0aqMXELl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/infracost/infracost/master/.github/assets/logo.svg" alt="Infracost logo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.infracost.io/community-chat" rel="nofollow"&gt;&lt;img alt="Community Slack channel" src="https://camo.githubusercontent.com/3ee34567d827260e4953101f703673f6bdfb7c050276566e38f237de84c8401c/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636861742d536c61636b2d253233346131353462"&gt;&lt;/a&gt;
&lt;a href="https://github.com/infracost/infracost/actions?query=workflow%3AGo+branch%3Amaster"&gt;&lt;img alt="Build Status" src="https://camo.githubusercontent.com/eec4e2b48822379f63b505170fd26c81fbcf679155676b56d75699101d43ef4b/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f776f726b666c6f772f7374617475732f696e667261636f73742f696e667261636f73742f476f2f6d6173746572"&gt;&lt;/a&gt;
&lt;a href="https://hub.docker.com/r/infracost/infracost/tags" rel="nofollow"&gt;&lt;img alt="Docker Image" src="https://camo.githubusercontent.com/036cbe3eac825184e8aa889d3ccb7c2652d15d3d4395663986c516a4553a1d99/68747470733a2f2f696d672e736869656c64732e696f2f646f636b65722f636c6f75642f6275696c642f696e667261636f73742f696e667261636f7374"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/intent/tweet?text=Get%20cost%20estimates%20for%20cloud%20infrastructure%20in%20pull%20requests!&amp;amp;url=https://www.infracost.io&amp;amp;hashtags=cloud,cost,aws,IaC,terraform" rel="nofollow"&gt;&lt;img alt="Tweet" src="https://camo.githubusercontent.com/90bc908826728c0e4261acfff5619fd732c7be2b2a00624fce6363c9a3623c90/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f75726c2f687474702f736869656c64732e696f2e7376673f7374796c653d736f6369616c"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://www.infracost.io/docs/" rel="nofollow"&gt;&lt;img alt="Getting started" src="https://camo.githubusercontent.com/34332a8c3c7b624f5d85a814bbec8bf2b3ae4c91052571f0b88f9e4364d3d324/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f676574253230737461727465642d626c75653f7374796c653d666f722d7468652d6261646765266c6f676f3d726561642d7468652d646f6373266c6162656c3d646f6373"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Infracost shows cloud cost estimates for infrastructure-as-code projects such as Terraform. It helps DevOps, SRE and developers to quickly see a cost breakdown and compare different options upfront.&lt;/p&gt;
&lt;h4&gt;
Show full breakdown of costs&lt;/h4&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/infracost/infracost/master/.github/assets/breakdown_screenshot.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gV70OhJt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/infracost/infracost/master/.github/assets/breakdown_screenshot.png" alt="Infracost breakdown command" width="600"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
Show diff of monthly costs between current and planned state&lt;/h4&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/infracost/infracost/master/.github/assets/diff_screenshot.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--M1JHl5jP--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/infracost/infracost/master/.github/assets/diff_screenshot.png" alt="Infracost diff command" width="600"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Quick start&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Assuming &lt;a href="https://www.terraform.io/downloads.html" rel="nofollow"&gt;Terraform&lt;/a&gt; is already installed, get the latest Infracost release:&lt;/p&gt;
&lt;p&gt;macOS Homebrew:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell position-relative js-code-highlight"&gt;
&lt;pre&gt;brew install infracost&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Linux/macOS manual download:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell position-relative js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Downloads the CLI based on your OS/arch and puts it in /usr/local/bin&lt;/span&gt;
curl -fsSL https://raw.githubusercontent.com/infracost/infracost/master/scripts/install.sh &lt;span class="pl-k"&gt;|&lt;/span&gt; sh&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;Docker and Windows users see &lt;a href="https://www.infracost.io/docs/#quick-start" rel="nofollow"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Register for a free API key:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell position-relative js-code-highlight"&gt;
&lt;pre&gt;infracost register&lt;/pre&gt;

&lt;/div&gt;
&lt;p&gt;The key is saved in &lt;code&gt;~/.config/infracost/credentials.yml&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Run Infracost using our example Terraform project to see how it works:&lt;/p&gt;
&lt;div class="highlight highlight-source-shell position-relative js-code-highlight"&gt;
&lt;pre&gt;git clone https://github.com/infracost/example-terraform.git
&lt;span class="pl-c1"&gt;cd&lt;/span&gt; example-terraform/sample1
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Play with main.tf and re-run to compare costs&lt;/span&gt;
infracost breakdown --path &lt;span class="pl-c1"&gt;.&lt;/span&gt;
&lt;span class="pl-c"&gt;&lt;span class="pl-c"&gt;#&lt;/span&gt; Show diff of monthly costs, edit the yml file and re-run to compare costs&lt;/span&gt;
infracost diff&lt;/pre&gt;…
&lt;/div&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/infracost/infracost"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Wallet App Exploration
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YVyC5Iux--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2908303/screenshots/16091553/media/2ee1331f30fa418eca9ce08f667e0691.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YVyC5Iux--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2908303/screenshots/16091553/media/2ee1331f30fa418eca9ce08f667e0691.png" alt="https://cdn.dribbble.com/users/2908303/screenshots/16091553/media/2ee1331f30fa418eca9ce08f667e0691.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16091553-Wallet-App-Exploration"&gt;Danar Septiawan&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Payfast - Finance App Design
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Mlw53vQd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/5484409/screenshots/16095948/media/50c7f507790a0ad02f413c6fb348cea3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Mlw53vQd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/5484409/screenshots/16095948/media/50c7f507790a0ad02f413c6fb348cea3.png" alt="https://cdn.dribbble.com/users/5484409/screenshots/16095948/media/50c7f507790a0ad02f413c6fb348cea3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16095948-Payfast-Finance-App-Design"&gt;Rafi Rohmat&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Inputs Component
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ql8QhRuu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/4335179/screenshots/16094644/media/292727933a7d9413aa1232dac2d44624.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ql8QhRuu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/4335179/screenshots/16094644/media/292727933a7d9413aa1232dac2d44624.png" alt="https://cdn.dribbble.com/users/4335179/screenshots/16094644/media/292727933a7d9413aa1232dac2d44624.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16094644-Inputs-Component-Light-Part"&gt;Amirbaqian&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Travigo - Travel Dashboard
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--a1pbZO59--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3993860/screenshots/16082616/media/46bc521d4b585c5a34b6aa63c6fedc4e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--a1pbZO59--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3993860/screenshots/16082616/media/46bc521d4b585c5a34b6aa63c6fedc4e.png" alt="https://cdn.dribbble.com/users/3993860/screenshots/16082616/media/46bc521d4b585c5a34b6aa63c6fedc4e.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16082616-Travigo-Travel-Dashboard"&gt;Andika Wiraputra&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cQxZF2T1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/tweet_video_thumb/E6rRGcXXsAQ7t4c.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--OUmebVv_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1403728787011948546/Xde0L7Tk_normal.jpg" alt="Liran Tal | React and Node.js Security 🚀 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Liran Tal | React and Node.js Security 🚀
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @liran_tal
      &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;
      Here's a secret GitHub power tool&lt;br&gt;&lt;br&gt;Did you know that you can navigate and create directories from within the GitHub UI if you just terminate each file with a forward slash / ? 🤯 &lt;br&gt;&lt;br&gt;You're welcome :-) 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      17:30 PM - 19 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1417174999027302408" 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=1417174999027302408" 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=1417174999027302408" 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;blockquote class="ltag__twitter-tweet"&gt;
    &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__two-pics"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pez8qyLB--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E6wKUYVUcAE_CXj.jpg" alt="unknown tweet media content"&gt;
    &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTZOvLCd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1332018227942019073/Jh666gw3_normal.jpg" alt="Adam Argyle profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Adam Argyle
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/argyleink"&gt;@argyleink&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;
      &lt;a href="https://twitter.com/hashtag/CSS"&gt;#CSS&lt;/a&gt; @ counter-style&lt;br&gt;&lt;br&gt;allows tying into the algorithm of the browser that creates markers / bullets! &lt;br&gt;&lt;br&gt;here I define a list of happy emoji for bullets 🙂 it's cyclic too so it will use emoji from my list in a loop ♾&lt;br&gt;&lt;br&gt;play around with this &lt;a href="https://twitter.com/CodePen"&gt;@CodePen&lt;/a&gt;:&lt;br&gt;&lt;a href="https://t.co/1AckEHs7wq"&gt;codepen.io/argyleink/pen/…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:27 PM - 20 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1417521640905183232" 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=1417521640905183232" 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=1417521640905183232" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dNYsZj7C--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E67FLhuWEAE6php.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--khgR4x9u--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1362432748011536385/vRY-trfG_normal.jpg" alt="Josh W. Comeau profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Josh W. Comeau
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/joshwcomeau"&gt;@joshwcomeau&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;
      🔥 "100vh" is a bit frustrating to use, since it doesn't factor in the dynamics of modern mobile browsers 😬&lt;br&gt;&lt;br&gt;Fortunately, new units are on the way! "Long" and "short" viewport units will let us pick which size we want.&lt;br&gt;&lt;br&gt;Awesome writeup by &lt;a href="https://twitter.com/bramus"&gt;@bramus&lt;/a&gt;: &lt;a href="https://t.co/L28AO11rQE"&gt;bram.us/2021/07/08/the…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      19:15 PM - 22 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1418288651788824579" 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=1418288651788824579" 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=1418288651788824579" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SIrK9Il1--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E6-p_wLXIAAVzBc.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--KtaCKAHH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1302907139757924353/3a0F6OAr_normal.jpg" alt="Simon Plenderleith profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Simon Plenderleith
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/simonplend"&gt;@simonplend&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;
      You can use the `node:` protocol to make it clear in your code when you're importing built in &lt;a href="https://twitter.com/nodejs"&gt;@nodejs&lt;/a&gt; modules.&lt;br&gt;&lt;br&gt;It makes it much easier to tell which modules are third-party dependencies 📦&lt;br&gt;&lt;br&gt;‣ Added: v14.13.1 (ESM), v16.0.0 (CommonJS)&lt;br&gt;‣ Backported to: 12.x (v12.20.0, ESM only) 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      12:00 PM - 23 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1418541417505435650" 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=1418541417505435650" 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=1418541417505435650" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--qzYYXahA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E62j0bpVUAEOlZ1.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTZOvLCd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1332018227942019073/Jh666gw3_normal.jpg" alt="Adam Argyle profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Adam Argyle
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/argyleink"&gt;@argyleink&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;
      CSS concatenating strings, calling functions and integrating with systems for 1 line custom list markers 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      13:39 PM - 25 Jul 2021
    &lt;/div&gt;


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

&lt;h3&gt;
  
  
  Emoji List
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/argyleink/embed/rNmzGzW?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/argyleink"&gt;Adam Argyle&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern Blog Layout with CSS Grid
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/TurkAysenur/embed/gOmMgpx?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/AysnrTrkk"&gt;Aysenur Turk&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Newton's CSS cradle
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/amit_sheen/embed/XWMXwvJ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/amit_sheen"&gt;Amit Sheen&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Syntax – Stylelint for Linting CSS
&lt;/h3&gt;

&lt;p&gt;In this Hasty Treat, Scott and Wes talk about Stylelint, what it is and why you should use it!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/0kqe0fWou3Xz1Rx2r4cbdC"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The CSS Podcast – Styling SVG in CSS
&lt;/h3&gt;

&lt;p&gt;CSS and SVG are very intertwined, and you can create a lot of unique effects by combining the two. This episode dives into a few CSS + SVG tips and tricks, including where and how to use SVG on your page, icon systems, color theming, adding animations, filter effects, and more!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/0XTZOuRuQ5nSxTAUJ9H7AY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Digest 28/2021 - Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 18 Jul 2021 21:07:45 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-28-202-3aa</link>
      <guid>https://forem.com/worldindev/weekly-digest-28-202-3aa</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #28.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Meta Theme Color and Trickery
&lt;/h3&gt;

&lt;p&gt;Starting with Version 15, Safari supports the theme-color &lt;code&gt;&amp;lt;meta&amp;gt;&lt;/code&gt; tag both on macOS and iOS.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/meta-theme-color-and-trickery/"&gt;Meta Theme Color and Trickery&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  21+ Browser Dev Tools &amp;amp; Tips You Need To Know
&lt;/h3&gt;

&lt;p&gt;The web browser is one of the most sophisticated tools on the planet. Today we look at 21 tricks, tips, and lesser-known features in Chrome Dev Tools that will make your life easier as a web developer.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/fireship_dev"&gt;Fireship&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Arrive Steering Behavior
&lt;/h3&gt;

&lt;p&gt;It's finally time for me to tackle a JavaScript (p5.js) implementation of the "arrival" steering behavior from Craig Reynolds' 1999 paper Steering Behaviors For Autonomous Characters!&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/shiffman"&gt;Daniel Shiffman&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  MongoDB in 100 Seconds
&lt;/h3&gt;

&lt;p&gt;MongoDB is the world’s most popular document database with powerful capabilities like full-text search, geospatial queries, data aggregation, and more.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/fireship_dev"&gt;Fireship&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Astro in 100 Seconds
&lt;/h3&gt;

&lt;p&gt;Astro is an open-source tool that can build static HTML websites using popular frontend JavaScript frameworks (React, Vue, Svelte), while loading fully interactive components as needed.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/fireship_dev"&gt;Fireship&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Chrome 92 - What’s New in DevTools
&lt;/h3&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/ChromiumDev"&gt;Google Chrome Developers&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  PhoneInfoga
&lt;/h3&gt;

&lt;p&gt;Information gathering &amp;amp; OSINT framework for phone numbers&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/sundowndev"&gt;
        sundowndev
      &lt;/a&gt; / &lt;a href="https://github.com/sundowndev/phoneinfoga"&gt;
        phoneinfoga
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Information gathering &amp;amp; OSINT framework for phone numbers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
  &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/ce8c26721ce1f028f2ce51ad647564529390f21b590a8e3b58edf48d68e0a82f/68747470733a2f2f692e696d6775722e636f6d2f4c7455476e46332e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/ce8c26721ce1f028f2ce51ad647564529390f21b590a8e3b58edf48d68e0a82f/68747470733a2f2f692e696d6775722e636f6d2f4c7455476e46332e706e67" width="500"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;div&gt;
  &lt;a href="https://github.com/sundowndev/phoneinfoga/actions"&gt;
    &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gWNroEuV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/sundowndev/phoneinfoga/workflows/Build/badge.svg" alt="build status"&gt;
  &lt;/a&gt;
  &lt;a href="https://goreportcard.com/report/github.com/sundowndev/phoneinfoga" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/5732d25567f34e014d9bf9d77f7b49adfc6b9947c370f2a5f59851d9384203dc/68747470733a2f2f676f7265706f7274636172642e636f6d2f62616467652f6769746875622e636f6d2f73756e646f776e6465762f70686f6e65696e666f6761" alt="go report"&gt;
  &lt;/a&gt;
  &lt;a href="https://codeclimate.com/github/sundowndev/phoneinfoga/maintainability" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/26f1e0fee9f85391809c996064990ad7c4c5808cd78f2737de17271e1ff995a6/68747470733a2f2f6170692e636f6465636c696d6174652e636f6d2f76312f6261646765732f33323539666562316336386466316364346637312f6d61696e7461696e6162696c697479"&gt;
  &lt;/a&gt;
  &lt;a href="https://codecov.io/gh/sundowndev/phoneinfoga" rel="nofollow"&gt;
    &lt;img src="https://camo.githubusercontent.com/94d59b8d710df4e5f6fdd43d2c7266b8641c90d73c9de52ad8f9bfa9a207ba59/68747470733a2f2f636f6465636f762e696f2f67682f73756e646f776e6465762f70686f6e65696e666f67612f6272616e63682f6d61737465722f67726170682f62616467652e737667"&gt;
  &lt;/a&gt;
  &lt;a href="https://github.com/sundowndev/phoneinfoga/releases"&gt;
    &lt;img src="https://camo.githubusercontent.com/ad1bdeb57b2724fa687fe53d9f7e3f64c08699133b967b3d354fa4c70e277f45/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f72656c656173652f53756e646f776e4445562f70686f6e65696e666f67612e737667" alt="Latest version"&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;h4&gt;
Advanced information gathering &amp;amp; OSINT framework for phone numbers&lt;/h4&gt;

&lt;p&gt;
  &lt;a href="https://sundowndev.github.io/phoneinfoga/" rel="nofollow"&gt;Documentation&lt;/a&gt; •
  &lt;a href="https://petstore.swagger.io/?url=https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/api/docs/swagger.yaml" rel="nofollow"&gt;API documentation&lt;/a&gt; •
  &lt;a href="https://demo.phoneinfoga.crvx.fr/" rel="nofollow"&gt;Demo instance&lt;/a&gt; •
  &lt;a href="https://medium.com/@SundownDEV/phone-number-scanning-osint-recon-tool-6ad8f0cac27b" rel="nofollow"&gt;Related blog post&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/./docs/images/screenshot.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oOU7zePu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/./docs/images/screenshot.png" alt=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
About&lt;/h2&gt;
&lt;p&gt;PhoneInfoga is one of the most advanced tools to scan international phone numbers using only free resources. It allows you to first gather standard information such as country, area, carrier and line type on any international phone number. Then search for footprints on search engines to try to find the VoIP provider or identify the owner.&lt;/p&gt;
&lt;h2&gt;
Unofficial video tutorials&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=WW6myutKBYk" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f44dd1f12bda78d3fb90e045e64fa966106380ec7b3e5c150e4d360b84b9fe34/68747470733a2f2f692e7974696d672e636f6d2f76695f776562702f5757366d7975744b42596b2f6d617872657364656661756c742e77656270" width="128"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
Current status&lt;/h2&gt;
&lt;p&gt;This project is stable and production-ready. &lt;a href="https://github.com/sundowndev/phoneinfoga/projects/1"&gt;Roadmap is here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;About demo instance&lt;/strong&gt;: This is a test service. Kittens will die if you abuse it. Numverify scan is pointless because my server's IP got blocked due to spam.&lt;/p&gt;
&lt;p&gt;Since &lt;a href="https://github.com/sundowndev/phoneinfoga/releases/tag/v2.0-beta"&gt;v2 was released on March 2020&lt;/a&gt;, this project has been rewritten in Go language (previously Python). Why ? To improve code base, maintainability, have a stronger test…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/sundowndev/phoneinfoga"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  PlantUML
&lt;/h3&gt;

&lt;p&gt;Generate UML diagram from textual description&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/plantuml"&gt;
        plantuml
      &lt;/a&gt; / &lt;a href="https://github.com/plantuml/plantuml"&gt;
        plantuml
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Generate UML diagram from textual description
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
PlantUML&lt;/h1&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/plantuml/plantuml" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/15630834630af54a2a1b0003ebb4695d030bee9570dca3f000e03f9cf2d4870f/68747470733a2f2f7472617669732d63692e6f72672f706c616e74756d6c2f706c616e74756d6c2e7376673f6272616e63683d6d6173746572" alt="Build Status"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Generate UML diagram from textual description&lt;/p&gt;
&lt;p&gt;PlantUML is a component that allows to quickly write :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/sequence-diagram" rel="nofollow"&gt;Sequence diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/use-case-diagram" rel="nofollow"&gt;Use case diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/class-diagram" rel="nofollow"&gt;Class diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/activity-diagram-beta" rel="nofollow"&gt;Activity diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/component-diagram" rel="nofollow"&gt;Component diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/state-diagram" rel="nofollow"&gt;State diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/object-diagram" rel="nofollow"&gt;Object diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/deployment-diagram" rel="nofollow"&gt;Deployment diagram&lt;/a&gt;,&lt;/li&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/timing-diagram" rel="nofollow"&gt;Timing diagram&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And also:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/activity-diagram-legacy" rel="nofollow"&gt;Activity diagram (legacy syntax)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/archimate" rel="nofollow"&gt;Archimate diagram&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/gantt-diagram" rel="nofollow"&gt;Gantt charts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/salt" rel="nofollow"&gt;SALT UI mockups&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Furthermore:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/link" rel="nofollow"&gt;Hyperlinks and tooltips&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://plantuml.com/creole" rel="nofollow"&gt;Creole&lt;/a&gt;: rich text, emoticons, unicode, icons&lt;/li&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/openiconic" rel="nofollow"&gt;OpenIconic icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/sprite" rel="nofollow"&gt;Sprite icons&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://plantuml.com/ascii-math" rel="nofollow"&gt;AsciiMath mathematical expressions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To know more about PlantUML, please visit &lt;a href="http://plantuml.com/" rel="nofollow"&gt;http://plantuml.com/&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;

  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/plantuml/plantuml"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;

&lt;h3&gt;
  
  
  web-vitals
&lt;/h3&gt;

&lt;p&gt;Essential metrics for a healthy site.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/GoogleChrome"&gt;
        GoogleChrome
      &lt;/a&gt; / &lt;a href="https://github.com/GoogleChrome/web-vitals"&gt;
        web-vitals
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Essential metrics for a healthy site.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
&lt;code&gt;web-vitals&lt;/code&gt;
&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#overview"&gt;Overview&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#installation"&gt;Install and load the library&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#import-web-vitals-from-npm"&gt;From npm&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#load-web-vitals-from-a-cdn"&gt;From a CDN&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#usage"&gt;Usage&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#basic-usage"&gt;Basic usage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#report-the-value-on-every-change"&gt;Report the value on every change&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#report-only-the-delta-of-changes"&gt;Report only the delta of changes&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#send-the-results-to-an-analytics-endpoint"&gt;Send the results to an analytics endpoint&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#send-the-results-to-google-analytics"&gt;Send the results to Google Analytics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#send-the-results-to-google-tag-manager"&gt;Send the results to Google Tag Manager&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#batch-multiple-reports-together"&gt;Batch multiple reports together&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#bundle-versions"&gt;Bundle versions&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#which-bundle-is-right-for-you"&gt;Which bundle is right for you?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#how-the-polyfill-works"&gt;How the polyfill works&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#api"&gt;API&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#types"&gt;Types&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#functions"&gt;Functions&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#browser-support"&gt;Browser Support&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#limitations"&gt;Limitations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#development"&gt;Development&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#integrations"&gt;Integrations&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/GoogleChrome/web-vitals/main/#license"&gt;License&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Overview&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;web-vitals&lt;/code&gt; library is a tiny (~1K), modular library for measuring all the &lt;a href="https://web.dev/vitals/" rel="nofollow"&gt;Web Vitals&lt;/a&gt; metrics on real users, in a way that accurately matches how they're measured by Chrome and reported to other Google tools (e.g. &lt;a href="https://developers.google.com/web/tools/chrome-user-experience-report" rel="nofollow"&gt;Chrome User Experience Report&lt;/a&gt;, &lt;a href="https://developers.google.com/speed/pagespeed/insights/" rel="nofollow"&gt;Page Speed Insights&lt;/a&gt;, &lt;a href="https://webmasters.googleblog.com/2019/11/search-console-speed-report.html" rel="nofollow"&gt;Search Console's Speed Report&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;The library supports all of the &lt;a href="https://web.dev/vitals/#core-web-vitals" rel="nofollow"&gt;Core Web Vitals&lt;/a&gt; as well as all of the &lt;a href="https://web.dev/vitals/#other-web-vitals" rel="nofollow"&gt;other Web Vitals&lt;/a&gt; that can be measured &lt;a href="https://web.dev/user-centric-performance-metrics/#how-metrics-are-measured" rel="nofollow"&gt;in the field&lt;/a&gt;:&lt;/p&gt;…&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/GoogleChrome/web-vitals"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Finance Mobile App Design
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sVWCMeVY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1615584/screenshots/16053492/media/c73c836a4dc0dc17d57cbdf0da8ab775.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sVWCMeVY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1615584/screenshots/16053492/media/c73c836a4dc0dc17d57cbdf0da8ab775.jpg" alt="https://cdn.dribbble.com/users/1615584/screenshots/16053492/media/c73c836a4dc0dc17d57cbdf0da8ab775.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16053492-Finance-Mobile-App-Design"&gt;Ghulam Rasool&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Task Manager - Mobile Design
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--iDkXIDuh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/7514969/screenshots/15699675/media/fff87047ba791cd7669a508a160d0af0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iDkXIDuh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/7514969/screenshots/15699675/media/fff87047ba791cd7669a508a160d0af0.png" alt="https://cdn.dribbble.com/users/7514969/screenshots/15699675/media/fff87047ba791cd7669a508a160d0af0.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15699675-Task-Manager-Mobile-Design"&gt;Julius Branding&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Nipo Shop Kit
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--41HwX-8Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1619633/screenshots/16060465/media/94c9e7dddf50b66ac53cbdc5da65cf10.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--41HwX-8Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1619633/screenshots/16060465/media/94c9e7dddf50b66ac53cbdc5da65cf10.png" alt="https://cdn.dribbble.com/users/1619633/screenshots/16060465/media/94c9e7dddf50b66ac53cbdc5da65cf10.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16060465-Nipo-Shop-Kit"&gt;Afshin T2Y&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tipping App Concept
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3EZakpqx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1963775/screenshots/16042308/media/b4c8244f9f78b4909ac0eae0f377fb69.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3EZakpqx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1963775/screenshots/16042308/media/b4c8244f9f78b4909ac0eae0f377fb69.png" alt="https://cdn.dribbble.com/users/1963775/screenshots/16042308/media/b4c8244f9f78b4909ac0eae0f377fb69.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16042308-Tipping-App-Concept"&gt;Conceptzilla&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Food Recipe Application
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--VvVE7Zuu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3604170/screenshots/16053853/media/4bf84952f498d970ec294b1b835a634e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--VvVE7Zuu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3604170/screenshots/16053853/media/4bf84952f498d970ec294b1b835a634e.jpg" alt="https://cdn.dribbble.com/users/3604170/screenshots/16053853/media/4bf84952f498d970ec294b1b835a634e.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16053853-Food-Recipe-Application"&gt;Izmahsa&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;


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

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--K0o6ch8F--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1409915212157833223/OX8dfCpn_normal.jpg" alt="George Moller profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        George Moller
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @_georgemoller
      &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;
      React Patterns: Compound Component&lt;br&gt;&lt;br&gt;🧵👇 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:33 PM - 13 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1415016603255726081" 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=1415016603255726081" 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=1415016603255726081" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tDkewI2R--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E6QU1H9XsAc0bro.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--F1YgPzW6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1336281436685541376/fRSl8uJP_normal.jpg" alt="Dan profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Dan
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/dan_abramov"&gt;@dan_abramov&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;
      Why React Needs Keys, a short visual explanation.&lt;br&gt;&lt;br&gt;Each render is like a frame in a movie. React doesn’t know *what* you did with your data. It only sees the JSX from the previous render and then from the next render.&lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/BbOL5VX73o"&gt;circles.map&lt;/a&gt;(c =&amp;gt; &amp;lt;Circle color={c.color} /&amp;gt;) 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      11:56 AM - 14 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1415279090446204929" 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=1415279090446204929" 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=1415279090446204929" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I8DI5W8y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1415680599256289286/pu/img/eR574VTX0neSR91G.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--CrQ5HsP3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1371400559392141319/7TaqHDrF_normal.jpg" alt="Andreas Storm profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Andreas Storm
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @avstorm
      &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;
      Microsoft's new Emoji system&lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/JjUl1HfwMN"&gt;medium.com/microsoft-desi…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      14:35 PM - 15 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1415681381506551816" 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=1415681381506551816" 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=1415681381506551816" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eRfbZKzb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/tweet_video_thumb/E6VP_HBXoAIgFjJ.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--qtoQXK1k--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1105888530348281858/BL33-k7i_normal.png" alt="Freya Holmér profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Freya Holmér
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @freyaholmer
      &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;
      the [line] x [rectangle] intersection test can be reduced to a [line] x [line segment] test, by placing a line segment in the rectangle's diagonal based on the line direction&lt;br&gt;&lt;br&gt;which is pretty neat if you ask me~ 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      11:14 AM - 15 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1415630826704867336" 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=1415630826704867336" 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=1415630826704867336" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6jkBhMhm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/tweet_video_thumb/Chm9WszWUAAHX4g.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--MVo58qFZ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1390937366303477762/9SIYxLPm_normal.jpg" alt="Kitze profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Kitze
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/thekitze"&gt;@thekitze&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;
      Redux flow explained visually. Looks so pretty. &lt;br&gt;cc &lt;a href="https://twitter.com/dan_abramov"&gt;@dan_abramov&lt;/a&gt; &lt;br&gt;© &lt;a href="https://twitter.com/vyacheslav_de"&gt;@vyacheslav_de&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      11:23 AM - 04 May 2016
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=727821044308967425" 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=727821044308967425" 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=727821044308967425" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y3esJzuq--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1416463216364777476/pu/img/2g-BXcOoWuVLPEBv.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--7k-gi6b_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1181419356976078848/oVhyyHn5_normal.jpg" alt="Jed Bridges profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Jed Bridges
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @jedbridges
      &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;
      Gestural typographic interpolation is going to get me to finally buy an iPad  &lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/ToDzMVJetK"&gt;instagram.com/reel/CRZRIrPiK…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:22 PM - 17 Jul 2021
    &lt;/div&gt;


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

&lt;h3&gt;
  
  
  Vortex Lines
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/ste-vg/embed/xxdRPbV?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/steeevg"&gt;Steve Gardner&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Generative Hearts
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/terabaud/embed/GRmNbWx?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/terabaud"&gt;Lea Rosema&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;p&gt;The CSS Podcast – inherit, initial, unset, and revert&lt;/p&gt;

&lt;p&gt;This episode is about the very available CSS values &lt;code&gt;inherit&lt;/code&gt;, &lt;code&gt;initial&lt;/code&gt;, &lt;code&gt;unset&lt;/code&gt;, and &lt;code&gt;revert&lt;/code&gt;. We'll help explain what they are, what they do, and when to use them.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/731Ql5cmL5n3gPvx7IQth7"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntax – React 18 - A Look Ahead
&lt;/h3&gt;

&lt;p&gt;In this episode of Syntax, Scott and Wes talk about everything coming in React 18!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/2PjTTIXdQtl3Yl2x7R6ZRe"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Digest 27/2021 - Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 11 Jul 2021 17:57:20 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-27-2021-1f26</link>
      <guid>https://forem.com/worldindev/weekly-digest-27-2021-1f26</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #27.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  &lt;code&gt;export default thing&lt;/code&gt; is different to &lt;code&gt;export { thing as default }&lt;/code&gt;
&lt;/h3&gt;

&lt;p&gt;Here's how they differ, and when it matters…&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jakearchibald.com/2021/export-default-thing-vs-thing-as-default/" rel="noopener noreferrer"&gt;&lt;code&gt;export default thing&lt;/code&gt; is different to &lt;code&gt;export { thing as default }&lt;/code&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  SVG Favicons in Action
&lt;/h3&gt;

&lt;p&gt;Ever heard of favicons made with SVG? If you are a regular reader of CSS-Tricks, you probably have. But does your website actually use one? The task is&lt;/p&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/svg-favicons-in-action/" rel="noopener noreferrer"&gt;SVG Favicons in Action&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  npm audit: Broken by Design
&lt;/h3&gt;

&lt;p&gt;Found 99 vulnerabilities (84 moderately irrelevant, 15 highly irrelevant)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://overreacted.io/npm-audit-broken-by-design/" rel="noopener noreferrer"&gt;npm audit: Broken by Design&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  React's Automatic State Batching
&lt;/h3&gt;

&lt;p&gt;Little known fact React batches your state state changes to result in only a single render (DOM) update. Except when it didn't, But now it does.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/basarat" rel="noopener noreferrer"&gt;Basarat&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Building a Data-Backed Next.js Site with Prisma &amp;amp; App Platform
&lt;/h3&gt;

&lt;p&gt;Chris is joined by Chris Sev from Digital Ocean to talk about their new App Platform. They're going to use it to build a little website: The site will be blog-like: Posts with IDs, titles, content, and the more dynamic bit: “likes”. They're going to use some pretty modern tech to get it done.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/chriscoyier" rel="noopener noreferrer"&gt;Chris Coyier&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Type safe GraphQL with TypeScript
&lt;/h3&gt;

&lt;p&gt;When building with GraphQL you define the schema up front and this can be really handy go use when it comes to writing the queries, resolvers, etc., especially if it’s in TypeScript. So, how do you go about doing the type generation? We’ll take a look at a tool that can generate you the TypeScript types, then implement our backend using them before looking at how they can plug into the front end with React Hooks.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/slace" rel="noopener noreferrer"&gt;Aaron Powell&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Are You Making This Mistake With CSS Colors?
&lt;/h3&gt;

&lt;p&gt;Every developer needs to define colors in CSS at some point and generally when a developer defines colors in CSS they use RGB or HEX to write out those colors. Technically there is nothing wrong with doing this, but it is far from the best way to write colors in CSS.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/DevSimplified" rel="noopener noreferrer"&gt;Web Dev Simplified&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  VS Code tips: JSDoc links
&lt;/h3&gt;

&lt;p&gt;Use @ link tags in JSDoc comments to link to symbols in your JavaScript or TypeScript project.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/mattbierner" rel="noopener noreferrer"&gt;Matt Bierner&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  GitTools
&lt;/h3&gt;

&lt;p&gt;This repository contains three small python/bash scripts used for the Git research.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/internetwache" rel="noopener noreferrer"&gt;
        internetwache
      &lt;/a&gt; / &lt;a href="https://github.com/internetwache/GitTools" rel="noopener noreferrer"&gt;
        GitTools
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A repository with 3 tools for pwn'ing websites with .git repositories available
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a href="https://github.com/internetwache/GitTools/stargazers" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/8a62ed40e495bb0186e2263f255f86af2d64e125540fec197570da5b3f5920f3/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f696e7465726e657477616368652f476974546f6f6c732e737667" alt="GitHub stars"&gt;&lt;/a&gt;
&lt;a href="https://github.com/internetwache/GitTools/blob/master/LICENSE.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b68a9d9387e42d79cf7bc33fb314a65573c627a0aaae39d3e0ff1e7aaa518636/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f696e7465726e657477616368652f476974546f6f6c732e737667" alt="GitHub license"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;GitTools&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;This repository contains three small python/bash scripts used for the Git research. &lt;a href="https://en.internetwache.org/dont-publicly-expose-git-or-how-we-downloaded-your-websites-sourcecode-an-analysis-of-alexas-1m-28-07-2015/" rel="nofollow noopener noreferrer"&gt;Read about it here&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Finder&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;You can use this tool to find websites with their .git repository available to the public&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Usage&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;This python script identifies websites with publicly accessible &lt;code&gt;.git&lt;/code&gt; repositories.
It checks if the &lt;code&gt;.git/HEAD&lt;/code&gt; file contains &lt;code&gt;refs/heads&lt;/code&gt;.&lt;/p&gt;
&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;$ ./gitfinder.py -h

###########
# Finder is part of https://github.com/internetwache/GitTools
#
# Developed and maintained by @gehaxelt from @internetwache
#
# Use at your own risk. Usage might be illegal in certain circumstances.
# Only for educational purposes!
###########

usage: gitfinder.py [-h] [-i INPUTFILE] [-o OUTPUTFILE] [-t THREADS]

optional arguments:
  -h, --help            show this help message and exit
  -i INPUTFILE, --inputfile INPUTFILE
                        input file
  -o OUTPUTFILE, --outputfile OUTPUTFILE
                        output file
  -t THREADS, --threads THREADS
                        threads
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;The input file should contain the targets one per line
The script will output discovered domains in the form of &lt;code&gt;[*]&lt;/code&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/internetwache/GitTools" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Geist
&lt;/h3&gt;

&lt;p&gt;Modern and minimalist React UI library, originating from Vercel's design.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/geist-org" rel="noopener noreferrer"&gt;
        geist-org
      &lt;/a&gt; / &lt;a href="https://github.com/geist-org/geist-ui" rel="noopener noreferrer"&gt;
        geist-ui
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A design system for building modern websites and applications.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p height="370"&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/11304944/91128466-dfc96c00-e6da-11ea-8b03-a96e6b98667d.png"&gt;&lt;img height="370" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F11304944%2F91128466-dfc96c00-e6da-11ea-8b03-a96e6b98667d.png"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/da56a49bca3f121ea88ca4552c6d47990b77eafd669b1ec0dbc8557559d30849/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f67656973742d6f72672f67656973742d75693f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030"&gt;&lt;img alt="Codecov" src="https://camo.githubusercontent.com/da56a49bca3f121ea88ca4552c6d47990b77eafd669b1ec0dbc8557559d30849/68747470733a2f2f696d672e736869656c64732e696f2f636f6465636f762f632f6769746875622f67656973742d6f72672f67656973742d75693f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/cff33e121fb31e5aa78fcd2a4036f1e151b082ae408e645df888c5896f849456/68747470733a2f2f696d672e736869656c64732e696f2f636972636c6563692f6275696c642f6769746875622f67656973742d6f72672f67656973742d75693f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030"&gt;&lt;img alt="CircleCI" src="https://camo.githubusercontent.com/cff33e121fb31e5aa78fcd2a4036f1e151b082ae408e645df888c5896f849456/68747470733a2f2f696d672e736869656c64732e696f2f636972636c6563692f6275696c642f6769746875622f67656973742d6f72672f67656973742d75693f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3b202db52cd1291a696c486095f62082be42e05c35995e5df94f5fcd898b02e9/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f4067656973742d75692f636f72653f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030"&gt;&lt;img alt="npm (scoped)" src="https://camo.githubusercontent.com/3b202db52cd1291a696c486095f62082be42e05c35995e5df94f5fcd898b02e9/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f4067656973742d75692f636f72653f7374796c653d666f722d7468652d6261646765266c6162656c436f6c6f723d303030303030"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Modern and minimalist React UI library, originating from Vercel's design.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;NOTE: This is a COMMUNITY PROJECT, &lt;a href="https://github.com/geist-org/geist-ui/issues/635" rel="noopener noreferrer"&gt;not associated with Vercel&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;



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

&lt;/div&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;run &lt;code&gt;yarn add @geist-ui/core&lt;/code&gt; or &lt;code&gt;npm i @geist-ui/core&lt;/code&gt; install it.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;import into project:&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-v"&gt;GeistProvider&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-v"&gt;CssBaseline&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'@geist-ui/core'&lt;/span&gt;

&lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-v"&gt;Application&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
  &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;GeistProvider&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;CssBaseline&lt;/span&gt; &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-c"&gt; // ---&amp;gt; Normalize styles&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;AppComponent&lt;/span&gt; &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;&lt;span class="pl-c"&gt; // ---&amp;gt; Your App Component&lt;/span&gt;
  &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;GeistProvider&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;/pre&gt;

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

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://geist-ui.dev" rel="nofollow noopener noreferrer"&gt;Document Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://geist-ui.dev/zh-cn" rel="nofollow noopener noreferrer"&gt;中文文档&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/geist-org/geist-ui/blob/master/.github/CONTRIBUTING.md" rel="noopener noreferrer"&gt;Contributing Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://secret.gl/" rel="nofollow noopener noreferrer"&gt;Secret&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://views-docs.unix.bio/" rel="nofollow noopener noreferrer"&gt;Article view count&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://cdn.unix.bio/" rel="nofollow noopener noreferrer"&gt;Tree viewer for CDN&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://img.unix.bio/" rel="nofollow noopener noreferrer"&gt;Better social image&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://sentineo.app" rel="nofollow noopener noreferrer"&gt;SentiNEO: Near-Earth Objects Viewer&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ofekashery/react-dashboard-design" rel="noopener noreferrer"&gt;Dashboard Design&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/Bowen7/regex-vis" rel="noopener noreferrer"&gt;Regex-Vis: Regex visualizer &amp;amp; editor&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/geist-org/geist-ui/issues/new" rel="noopener noreferrer"&gt;Add here&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://github.com/geist-org/geist-ui./LICENSE" rel="noopener noreferrer"&gt;MIT&lt;/a&gt;&lt;/p&gt;

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





&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Recipe App Design
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F554465%2Fscreenshots%2F16012961%2Fmedia%2F2da8dcb9937c426d2ef5ba7c10af79ea.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%2Fcdn.dribbble.com%2Fusers%2F554465%2Fscreenshots%2F16012961%2Fmedia%2F2da8dcb9937c426d2ef5ba7c10af79ea.png" alt="https://cdn.dribbble.com/users/554465/screenshots/16012961/media/2da8dcb9937c426d2ef5ba7c10af79ea.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16012961-Recipe-App-Design" rel="noopener noreferrer"&gt;Hadi Altaf&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Furniture Landing Page
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F4898370%2Fscreenshots%2F16018403%2Fmedia%2F2419f9fbb71ac0d98d01039c2bafca31.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%2Fcdn.dribbble.com%2Fusers%2F4898370%2Fscreenshots%2F16018403%2Fmedia%2F2419f9fbb71ac0d98d01039c2bafca31.png" alt="https://cdn.dribbble.com/users/4898370/screenshots/16018403/media/2419f9fbb71ac0d98d01039c2bafca31.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Recipe App
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F554465%2Fscreenshots%2F16016464%2Fmedia%2F1cdd68212f3016daac30b935c676d75a.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%2Fcdn.dribbble.com%2Fusers%2F554465%2Fscreenshots%2F16016464%2Fmedia%2F1cdd68212f3016daac30b935c676d75a.png" alt="https://cdn.dribbble.com/users/554465/screenshots/16016464/media/1cdd68212f3016daac30b935c676d75a.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16012961-Recipe-App-Design" rel="noopener noreferrer"&gt;Hadi Altaf&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cryptocurrency Market Landing
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F2187824%2Fscreenshots%2F16015626%2Fmedia%2Ffeaa09e74288b990dd51150d1073e772.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%2Fcdn.dribbble.com%2Fusers%2F2187824%2Fscreenshots%2F16015626%2Fmedia%2Ffeaa09e74288b990dd51150d1073e772.png" alt="https://cdn.dribbble.com/users/2187824/screenshots/16015626/media/feaa09e74288b990dd51150d1073e772.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16015626-Coina-Cryptocurrency-Market-Landing-3D-Exploration" rel="noopener noreferrer"&gt;Sigit Setyo Nugroho&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Web Header
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F6682392%2Fscreenshots%2F16017767%2Fmedia%2F93879f224ab4a2a45063f2bc0579b171.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%2Fcdn.dribbble.com%2Fusers%2F6682392%2Fscreenshots%2F16017767%2Fmedia%2F93879f224ab4a2a45063f2bc0579b171.png" alt="https://cdn.dribbble.com/users/6682392/screenshots/16017767/media/93879f224ab4a2a45063f2bc0579b171.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16017767-Web-Header" rel="noopener noreferrer"&gt;Orix Agency&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Marova - Virtual Art Gallery
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F3962119%2Fscreenshots%2F16018613%2Fmedia%2F2b6e662514e261f4d483db3dc4ab5f87.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%2Fcdn.dribbble.com%2Fusers%2F3962119%2Fscreenshots%2F16018613%2Fmedia%2F2b6e662514e261f4d483db3dc4ab5f87.png" alt="https://cdn.dribbble.com/users/3962119/screenshots/16018613/media/2b6e662514e261f4d483db3dc4ab5f87.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/16018613-Marova-Virtual-Art-Gallery" rel="noopener noreferrer"&gt;Zumur Deb&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;




&lt;h2&gt;
  
  
  Picked Pens
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Generative parallelogram covering
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/ZachSaucier/embed/qBmNeRv?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/ZachSaucier" rel="noopener noreferrer"&gt;Zach Saucier&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Syntax - JavaScript Event Buzzwords
&lt;/h3&gt;

&lt;p&gt;In this Hasty Treat, Scott and Wes define some JavaScript Buzzwords and talk about what they mean!&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/5HE1rN9RmFuKyXGKxiQSwW" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Ladybug Podcast - Python
&lt;/h3&gt;

&lt;p&gt;Normally, we talk about frontend development -- but there’s so many other niches within programming out there. Today we’re going to talk about Python what it’s used for, why it’s great, and how it’s different than JavaScript.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/0y7LMr0fhvVKvJBdLY0qzi" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The CSS Podcast - Accessibility
&lt;/h3&gt;

&lt;p&gt;Today we are breaking down accessibility related styling choices to ensure a better user experience for all of your users. These include focus visibility, keyboard navigation, and more!&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/3gpPwzRw80Cj7NiBNIlE2I" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Digest 26/2021 - Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 04 Jul 2021 19:13:34 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-26-2021-3foo</link>
      <guid>https://forem.com/worldindev/weekly-digest-26-2021-3foo</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #26.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  React Architecture: How to Structure and Organize a React Application
&lt;/h3&gt;

&lt;p&gt;There is no consensus on the right way to organize a React application. React gives you a lot of freedom, but with that freedom comes the responsibility of deciding on your own architecture.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.taniarascia.com/react-architecture-directory-structure/"&gt;React Architecture: How to Structure and Organize a React Application&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Bear plus snowflake equals polar bear
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://andysalerno.com/posts/weird-emojis/"&gt;Bear plus snowflake equals polar bear&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  How to preserve query parameters in React Router links
&lt;/h3&gt;

&lt;p&gt;React Router makes front-end routing a breeze, but it's not always obvious how to handle query parameters.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://typeofnan.dev/how-to-preserve-query-parameters-in-react-router-links/"&gt;How to preserve query parameters in React Router links&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Good Meetings
&lt;/h3&gt;

&lt;p&gt;Like it or not, meetings are essential to a good working environment and communication. Therefore, it’s crucial that we work on making them as productive as possible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/good-meetings/"&gt;Good Meetings&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  How to Create and Publish an NPM Package
&lt;/h3&gt;

&lt;p&gt;Publishing a Javascript package to the NPM registry is quite easy, but there are some gotchas and things to know along the way. I'll show creating a super simple package, creating an NPM account, and then publishing a package. Then I'll go over unpublishing packages and how to publish a scoped package and why.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/JimmyDCleveland"&gt;Jimmy Cleveland&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Three Patterns To Scale Your Microservices
&lt;/h3&gt;

&lt;p&gt;Microservices have been a popular architecture choice for the last several years. Over the years we've adopted microservices architectures to ever growing set of use-cases and different development and deployment strategies. Watch this video to learn the three patterns that will help you architect better and scale your microservices apps.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  Top 50+ AWS Services Explained in 10 Minutes
&lt;/h3&gt;

&lt;p&gt;Amazon Web Services (AWS) is the world's largest and most complex cloud with over 200 unique services. Learn about the top 50 cloud products in just ten minutes.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/fireship_dev"&gt;Fireship&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Nodejs Nunjucks Template Injection
&lt;/h3&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/_johnhammond"&gt;John Hammond&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  VS Code Tips and Tricks for 2021
&lt;/h3&gt;

&lt;p&gt;Watch this video to learn about all of the cool tips and tricks on how to better use the amazing VS Code in 2021.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/digitarald"&gt;Harald Kirschner&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;4 Ways to get a competitive advantage as a frontend developer&lt;/p&gt;

&lt;p&gt;Everyone want's to become a programmer nowadays. The market is pretty competitive already.&lt;br&gt;
I work as a frontend developer for more than 10 years already and I have career advice that will give you a competitive advantage.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/ivanov_dev"&gt;Maksim Ivanov&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  CovidPass
&lt;/h3&gt;

&lt;p&gt;Web app for adding EU COVID-19 Vaccination Certificates to your wallets&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/covidpass-org"&gt;
        covidpass-org
      &lt;/a&gt; / &lt;a href="https://github.com/covidpass-org/covidpass"&gt;
        covidpass
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Web app for adding EU COVID-19 Vaccination Certificates to your wallets
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/d99086e58f980ae5e1c88edd0433fb7f1f7880a61c4737916a1bff20874e129e/68747470733a2f2f636f766964706173732e6d617276696e73657874726f2e64652f7468756d626e61696c2e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/d99086e58f980ae5e1c88edd0433fb7f1f7880a61c4737916a1bff20874e129e/68747470733a2f2f636f766964706173732e6d617276696e73657874726f2e64652f7468756d626e61696c2e706e67" alt="CovidPass"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;This web app offers the ability to add your EU Digital Covid Vaccination Certificates as a pass into your favorite wallet apps on iOS/watchOS or Android/wearOS. CovidPass accomplishes this without sending your data to a server and instead only uses a hashed representation for the signing step.&lt;/p&gt;
&lt;h1&gt;
Getting started&lt;/h1&gt;
&lt;p&gt;If you want to add your vaccination certificate into your wallet with CovidPass, there are two main options.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the &lt;a href="https://covidpass.marvinsextro.de" rel="nofollow"&gt;CovidPass web app&lt;/a&gt; hosted by us&lt;/li&gt;
&lt;li&gt;Use your own Apple Developer Certificate to generate a pass&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note that the latter option requires you to have an &lt;a href="https://developer.apple.com" rel="nofollow"&gt;Apple Developer Account&lt;/a&gt; and is a more complicated process.&lt;/p&gt;
&lt;h1&gt;
Quick start&lt;/h1&gt;
&lt;h2&gt;
Using our service&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Go to &lt;a href="https://covidpass.marvinsextro.de" rel="nofollow"&gt;https://covidpass.marvinsextro.de&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Select or scan the screenshot/PDF with the QR code&lt;/li&gt;
&lt;li&gt;Pick a background color&lt;/li&gt;
&lt;li&gt;Add your certificate to the wallet&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Running it yourself&lt;/h2&gt;
&lt;p&gt;Note that the following options do not have support for actually converting your certificates as they…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/covidpass-org/covidpass"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  How they SRE
&lt;/h3&gt;

&lt;p&gt;A curated collection of publicly available resources on how technology and tech-savvy organizations around the world practice Site Reliability Engineering (SRE)&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/upgundecha"&gt;
        upgundecha
      &lt;/a&gt; / &lt;a href="https://github.com/upgundecha/howtheysre"&gt;
        howtheysre
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A curated collection of publicly available resources on how technology and tech-savvy organizations around the world practice Site Reliability Engineering (SRE)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
How they SRE&lt;/h1&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/0ff11ed110cfa69f703ef0dcca3cee6141c0a8ef465e8237221ae245de3deb3d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265"&gt;&lt;img src="https://camo.githubusercontent.com/0ff11ed110cfa69f703ef0dcca3cee6141c0a8ef465e8237221ae245de3deb3d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265" alt="PRs Welcome"&gt;&lt;/a&gt; &lt;a href="https://github.com/upgundecha/howtheysre/actions/workflows/workflow.yml"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oXEhLQc8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/upgundecha/howtheysre/actions/workflows/workflow.yml/badge.svg" alt="CI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/upgundecha/howtheysre/main/banner.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--q9DMdVtY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/upgundecha/howtheysre/main/banner.png" alt="Alt" title="banner"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;A curated collection of publicly available resources on how technology and tech-savvy organizations around the world practice Site Reliability Engineering (SRE)&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
Introduction&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;How They SRE&lt;/strong&gt; is a curated knowledge repository of best practices, tools, techniques, and culture of SRE adopted by the leading technology or tech-savvy organizations.&lt;/p&gt;
&lt;p&gt;Many organizations regularly come forward and share their best practices, tools, techniques and offer an insight into engineering culture on various public platforms like engineering blogs, conferences &amp;amp; meetups. The content is curated from these avenues and shared in this repository.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Note to readers: This list refers to some of the articles, posts, videos, tools, and techniques published before 2015. Please use such material with caution as there may be recent advances in technology and practices which offer better alternatives and perspectives.&lt;/em&gt;&lt;/p&gt;
&lt;h3&gt;
Topics&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Site Reliability Engineering&lt;/li&gt;
&lt;li&gt;Hiring and Building SRE teams&lt;/li&gt;
&lt;li&gt;SRE Culture&lt;/li&gt;
&lt;li&gt;DevOps&lt;/li&gt;
&lt;li&gt;Monitoring &amp;amp; Observability&lt;/li&gt;
&lt;li&gt;Alerting&lt;/li&gt;
&lt;li&gt;Incident Response…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/upgundecha/howtheysre"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Reverse Engineering
&lt;/h3&gt;

&lt;p&gt;List of awesome reverse engineering resources&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/wtsxDev"&gt;
        wtsxDev
      &lt;/a&gt; / &lt;a href="https://github.com/wtsxDev/reverse-engineering"&gt;
        reverse-engineering
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      List of awesome reverse engineering resources
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h2&gt;
Reverse Engineering resources&lt;/h2&gt;
&lt;p&gt;&lt;a href="http://kalitut.com" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/455de33374d34a94d97b8f633bc12b2d477c5486ae020e12c0726b17a3bdda70/68747470733a2f2f322e62702e626c6f6773706f742e636f6d2f2d6e7a306a464646413448632f5748756269617a386563492f41414141414141414230382f673265725836726f564259436677576a4947554f42594d6b6342376768524c3277434c63422f73313630302f72657665727365253242656e67696e656572696e672e706e67" alt="Awesome"&gt;&lt;/a&gt;
A curated list of awesome reversing resources&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#awesome-reversing"&gt;Awesome Reversing&lt;/a&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#books"&gt;Books&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#courses"&gt;Courses&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#practice"&gt;Practice&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#hex-editors"&gt;Hex Editors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#binary-format"&gt;Binary Format&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#disassemblers"&gt;Disassemblers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#binary-analysis"&gt;Binary Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#bytecode-analysis"&gt;Bytecode Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#import-reconstruction"&gt;Import Reconstruction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#dynamic-analysis"&gt;Dynamic Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#debugging"&gt;Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#mac-decrypt"&gt;Mac Decrypt&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#document-analysis"&gt;Document Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#scripting"&gt;Scripting&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#android"&gt;Android&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://raw.githubusercontent.com/wtsxDev/reverse-engineering/master/#yara"&gt;Yara&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
Books&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Reverse Engineering Books&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jTicOg" rel="nofollow"&gt;The IDA Pro Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.gitbook.com/book/radare/radare2book/details" rel="nofollow"&gt;Radare2 Book&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://beginners.re/" rel="nofollow"&gt;Reverse Engineering for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jlxTNp" rel="nofollow"&gt;The Art of Assembly Language&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2iusXRW" rel="nofollow"&gt;Practical Reverse Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jlnBwX" rel="nofollow"&gt;Reversing: Secrets of Reverse Engineering&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jljYqE" rel="nofollow"&gt;Practical Malware Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2iWPJDd" rel="nofollow"&gt;Malware Analyst's Cookbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jllIAi" rel="nofollow"&gt;Gray Hat Hacking&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/shaykhsiddique/academic-/blob/master/CSE107/Access%20Denied.pdf"&gt;Access Denied&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jMJQs0" rel="nofollow"&gt;The Art of Memory Forensics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jnkV19" rel="nofollow"&gt;Hacking: The Art of Exploitation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jMKCWc" rel="nofollow"&gt;Fuzzing for Software Security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jlvtyt" rel="nofollow"&gt;Art of Software Security Assessment&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jn9G99" rel="nofollow"&gt;The Antivirus Hacker's Handbook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2jlgioK" rel="nofollow"&gt;The Rootkit Arsenal&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="http://amzn.to/2jlo9mA" rel="nofollow"&gt;Windows Internals Part 1&lt;/a&gt; &lt;a href="http://amzn.to/2jMLCth" rel="nofollow"&gt;Part 2&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="http://amzn.to/2iqFTxf" rel="nofollow"&gt;Inside Windows Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/iosre/iOSAppReverseEngineering"&gt;iOS Reverse Engineering&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
Courses&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Reverse Engineering Courses&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://tuts4you.com/download.php?list.17" rel="nofollow"&gt;Lenas Reversing for Newbies&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://opensecuritytraining.info/Training.html" rel="nofollow"&gt;Open Security Training&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://fumalwareanalysis.blogspot.sg/p/malware-analysis-tutorials-reverse.html" rel="nofollow"&gt;Dr. Fu's Malware Analysis&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.binary-auditing.com/" rel="nofollow"&gt;Binary Auditing Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.woodmann.com/TiGa/" rel="nofollow"&gt;TiGa's Video Tutorials&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://tuts4you.com/download.php?list.97" rel="nofollow"&gt;Legend of Random&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://security.cs.rpi.edu/courses/binexp-spring2015/" rel="nofollow"&gt;Modern Binary Exploitation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/RPISEC/Malware"&gt;RPISEC Malware Course&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.sans.org/course/reverse-engineering-malware-malware-analysis-tools-techniques/Type/asc/all" rel="nofollow"&gt;SANS FOR 610 GREM&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://recon.cx/2015/training.html" rel="nofollow"&gt;REcon Training&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.blackhat.com/us-16/training/" rel="nofollow"&gt;Blackhat Training&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/wtsxDev/reverse-engineering"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  School Admin - Dashboard
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ZSipNFZp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2566396/screenshots/15967180/media/42ebf1770d52952aa7bf065e6f4b8fe0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ZSipNFZp--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2566396/screenshots/15967180/media/42ebf1770d52952aa7bf065e6f4b8fe0.png" alt="https://cdn.dribbble.com/users/2566396/screenshots/15967180/media/42ebf1770d52952aa7bf065e6f4b8fe0.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15967180-School-Admin-Dashboard-Messenger"&gt;Muhammad Zaki Alzikri&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Foodbar
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--g4CDbSb2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/5554868/screenshots/15967299/media/96f53ea34ee6a60206d7bd838ee0d13f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--g4CDbSb2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/5554868/screenshots/15967299/media/96f53ea34ee6a60206d7bd838ee0d13f.jpg" alt="https://cdn.dribbble.com/users/5554868/screenshots/15967299/media/96f53ea34ee6a60206d7bd838ee0d13f.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15967299-Foodbar"&gt;Shayan Umar&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Financial Mobile App: Online Banking
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ovQRITPk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2814689/screenshots/15969145/media/f5b37a93c17eb336012b7390f47f2b9f.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ovQRITPk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2814689/screenshots/15969145/media/f5b37a93c17eb336012b7390f47f2b9f.jpg" alt="https://cdn.dribbble.com/users/2814689/screenshots/15969145/media/f5b37a93c17eb336012b7390f47f2b9f.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15969145-Financial-Mobile-App-Online-Banking"&gt;Saad Ibn Sayed&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Mobile Wallet App
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XgFfNrKb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1997192/screenshots/15971002/media/90c946116b7947170dd00da8497566d4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XgFfNrKb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/1997192/screenshots/15971002/media/90c946116b7947170dd00da8497566d4.png" alt="https://cdn.dribbble.com/users/1997192/screenshots/15971002/media/90c946116b7947170dd00da8497566d4.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15971002-Mobile-Wallet-App"&gt;Sajon&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Landing Page: Furniture Store
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--mi-zEZB3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2253180/screenshots/15971883/media/dd6c23b50ab3f116e8d9c7b935b7ef47.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--mi-zEZB3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/2253180/screenshots/15971883/media/dd6c23b50ab3f116e8d9c7b935b7ef47.jpg" alt="https://cdn.dribbble.com/users/2253180/screenshots/15971883/media/dd6c23b50ab3f116e8d9c7b935b7ef47.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15971883-Landing-Page-Furniture-Store-Shopify"&gt;AR Shakir&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--MjVfPAAD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1409491870347038727/pu/img/Bd00lcV7Xt1vfcoh.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--JkYP1OI0--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1055142255722344448/xhqy_EUP_normal.jpg" alt="StackBlitz profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        StackBlitz
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @stackblitz
      &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;
      💡 Forms tip! (3)&lt;br&gt;&lt;br&gt;Use `&amp;lt;datalist&amp;gt;` to enhance your forms with suggested values – not only for text inputs, but also 🧮 numbers, 📏 ranges, ✉️ emails, and even 🚦 colors!&lt;br&gt;&lt;a href="https://twitter.com/hashtag/useThePlatform"&gt;#useThePlatform&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      12:46 PM - 28 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1409493323660857348" 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=1409493323660857348" 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=1409493323660857348" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--uYHNwx3---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/ext_tw_video_thumb/1409883115024232453/pu/img/Dh6woMwlBtAkLqjk.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--dWxPFgYY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1400533952801083395/SPOFWqgm_normal.jpg" alt="GitHub profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        GitHub
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @github
      &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;
      Meet GitHub Copilot - your AI pair programmer. &lt;a href="https://t.co/eWPueAXTFt"&gt;copilot.github.com&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      14:35 PM - 29 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1409883156333879300" 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=1409883156333879300" 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=1409883156333879300" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0YvaIpO4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E5Cp6IvXEAE290K.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--PhtuYv0b--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1405529317308723210/ZeYWlRGt_normal.jpg" alt="Memeloper profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Memeloper
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @iammemeloper
      &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;
      cat.css&lt;br&gt;&lt;br&gt;.cat {&lt;br&gt;    width: 100%;&lt;br&gt;    height: 100%;&lt;br&gt;} 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      09:58 AM - 29 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1409813502013870082" 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=1409813502013870082" 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=1409813502013870082" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--2CQG8Csg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E5TYTxiXMA0lkVU.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--iRlChO4N--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1100804485616566273/sOct-Txm_normal.png" alt="Storybook profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Storybook
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @storybookjs
      &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;
      Write test cases just once!&lt;br&gt;&lt;br&gt;Mocking context, data &amp;amp; state for your components is much easier in Storybook.&lt;br&gt;&lt;br&gt;With storybook's testing-react &amp;amp; testing-vue libraries you can reuse stories and all their setup with other testing tools. &lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/nBdc8296X8"&gt;ed.gr/diis4&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      15:55 PM - 02 Jul 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1410990424681074698" 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=1410990424681074698" 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=1410990424681074698" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_rCvp32v--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E5FtltbVkAIjYtu.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--yiOymT62--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1409234757087424512/zalwiUSc_normal.jpg" alt="Addy Osmani profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Addy Osmani
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/addyosmani"&gt;@addyosmani&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;
      Name your JavaScript exports! This ensures they'll show up named in DevTools and in compile time errors. 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      08:00 AM - 03 Jul 2021
    &lt;/div&gt;


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

&lt;h3&gt;
  
  
  Blob study
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/shubniggurath/embed/dyOKjLG?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/liamegan"&gt;Liam Egan&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  bored
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/a-trost/embed/39fec2958bd904cf46cda888e8f250d1?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/trostcodes"&gt;Alex Trost&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Click to open
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/amit_sheen/embed/YzVPrGb?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/amit_sheen"&gt;Amit Sheen&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Syntax - Dev Tools Power — Elements Tab
&lt;/h3&gt;

&lt;p&gt;In this episode of Syntax, Scott and Wes talk about the Dev Tools Elements Tab — all the features, and when you would use them!&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/4RIZlidQ8SrXVcQXDPbDAv"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The CSS Podcast - Touch interaction
&lt;/h3&gt;

&lt;p&gt;Today we touch on touch interaction. Covering CSS's ability to change a user's touch experience with properties like touch-action, scroll-behavior, user-select and more.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/5x85WPhwm9GY2fQVoT7IoT"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Digest 25/2021 - Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 27 Jun 2021 16:59:53 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-25-2021-1843</link>
      <guid>https://forem.com/worldindev/weekly-digest-25-2021-1843</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #25 which is the last one for June.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  In JS functions, the 'last' return wins
&lt;/h3&gt;

&lt;p&gt;An edge case has convinced me it's the 'last' return that always wins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jakearchibald.com/2021/last-return-wins/" rel="noopener noreferrer"&gt;In JS functions, the 'last' return wins&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Demystifying styled-components
&lt;/h3&gt;

&lt;p&gt;For so many React devs, styled-components seems kinda magical. It isn't at all clear how it uses traditional CSS features under-the-hood, and that lack of clarity can cause real problems when things go awry. In this post, we'll learn exactly how styled-components works by building our own mini-version.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.joshwcomeau.com/react/demystifying-styled-components/" rel="noopener noreferrer"&gt;Demystifying styled-components&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Why I’m super excited about Astro
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://zellwk.com/blog/astro-thoughts/" rel="noopener noreferrer"&gt;Why I'm super excited about Astro (a new static site generator)&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Image To Text Conversion With React And Tesseract.js
&lt;/h3&gt;

&lt;p&gt;Do you have to process data manually because it is served through images or scanned documents? An image-to-text conversion makes it possible to extract text from images to automate the processing of texts on images, videos, and scanned documents. In this article, we look at how to convert an image to text with React and Tesseract.js(OCR), preprocess images, and deal with the limitations of Tesseract.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://smashingmagazine.com/2021/06/image-text-conversion-react-tesseract-js-ocr/" rel="noopener noreferrer"&gt;Image To Text Conversion With React And Tesseract.js (OCR) - Smashing Magazine&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  What's New in ES2021
&lt;/h3&gt;

&lt;p&gt;Every year a new version of JavaScript is released and implemented in browsers and JavaScript engines. Lets take a look at what's new this year.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/uidotdev" rel="noopener noreferrer"&gt;ui.dev&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Google Sheets… Your Next Database?
&lt;/h3&gt;

&lt;p&gt;Can you use Google Sheets as a database? Learn how to build a Next.js app using a spreadsheet as the data layer&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/fireship_dev" rel="noopener noreferrer"&gt;Fireship&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Automated Lighthouse Benchmarks
&lt;/h3&gt;

&lt;p&gt;Lighthouse has increasingly become a popular tool for many web developers to have the best site possible. But I've noticed that many don't realize you can automate Lighthouse benchmarks by adding them to your Continuous Integration workflow, and setting custom restrictions for performance regressions.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/JimmyDCleveland" rel="noopener noreferrer"&gt;Jimmy Cleveland&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Flee, Pursue, Evade
&lt;/h3&gt;

&lt;p&gt;Continuing my quest to explore all the steering behaviors from Craig Reynolds' 1999 paper, in this video I tackle flee, pursue, and evade.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/shiffman" rel="noopener noreferrer"&gt;Daniel Shiffman&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Building Strongly Typed REST Clients with Typescript
&lt;/h3&gt;

&lt;p&gt;In this talk we'll use TypeScript to create a client library that works with a REST API. Come see how we create a type-safe client with tooling tailored to your service.&lt;/p&gt;

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

&lt;p&gt;by Jose Manuel Heredia Hidalgo&lt;/p&gt;

&lt;h3&gt;
  
  
  Test Kitchen: A Recipe for Good Tests
&lt;/h3&gt;

&lt;p&gt;In this talk, Iris will walk through a hand full of properties good tests have, show how we can write tests that follow these guidelines in JavaScript, and discuss when to consider bending the rules a bit.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/iris_schaffer" rel="noopener noreferrer"&gt;Iris Schaffer&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Data Science Cheatsheet
&lt;/h3&gt;

&lt;p&gt;A helpful 5-page data science cheatsheet to assist with exam reviews, interview prep, and anything in-between.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/aaronwangy" rel="noopener noreferrer"&gt;
        aaronwangy
      &lt;/a&gt; / &lt;a href="https://github.com/aaronwangy/Data-Science-Cheatsheet" rel="noopener noreferrer"&gt;
        Data-Science-Cheatsheet
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A helpful 5-page machine learning cheatsheet to assist with exam reviews, interview prep, and anything in-between.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Data Science Cheatsheet 2.0&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;A helpful 5-page data science cheatsheet to assist with exam reviews, interview prep, and anything in-between. It covers over a semester of introductory machine learning, and is based on MIT's Machine Learning courses 6.867 and 15.072. The reader should have at least a basic understanding of statistics and linear algebra, though beginners may find this resource helpful as well.&lt;/p&gt;
&lt;p&gt;Inspired by Maverick's &lt;em&gt;Data Science Cheatsheet&lt;/em&gt; (hence the 2.0 in the name), located &lt;a href="https://github.com/ml874/Data-Science-Cheatsheet" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Topics covered:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linear and Logistic Regression&lt;/li&gt;
&lt;li&gt;Decision Trees and Random Forest&lt;/li&gt;
&lt;li&gt;SVM&lt;/li&gt;
&lt;li&gt;K-Nearest Neighbors&lt;/li&gt;
&lt;li&gt;Clustering&lt;/li&gt;
&lt;li&gt;Boosting&lt;/li&gt;
&lt;li&gt;Dimension Reduction (PCA, LDA, Factor Analysis)&lt;/li&gt;
&lt;li&gt;Natural Language Processing&lt;/li&gt;
&lt;li&gt;Neural Networks&lt;/li&gt;
&lt;li&gt;Recommender Systems&lt;/li&gt;
&lt;li&gt;Reinforcement Learning&lt;/li&gt;
&lt;li&gt;Anomaly Detection&lt;/li&gt;
&lt;li&gt;Time Series&lt;/li&gt;
&lt;li&gt;A/B Testing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This cheatsheet will be occasionally updated with new/improved info, so consider a follow or star to stay up to date.&lt;/p&gt;
&lt;p&gt;Future additions (ideas welcome):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;del&gt;Time Series&lt;/del&gt; Added!&lt;/li&gt;
&lt;li&gt;
&lt;del&gt;Statistics and Probability&lt;/del&gt; Added!&lt;/li&gt;
&lt;li&gt;Data Imputation&lt;/li&gt;
&lt;li&gt;Generative Adversarial…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/aaronwangy/Data-Science-Cheatsheet" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  iPod.js
&lt;/h3&gt;

&lt;p&gt;An iPod Classic that connects to Apple Music and Spotify. Built with React &amp;amp; Styled Components&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/tvillarete" rel="noopener noreferrer"&gt;
        tvillarete
      &lt;/a&gt; / &lt;a href="https://github.com/tvillarete/ipod-classic-js" rel="noopener noreferrer"&gt;
        ipod-classic-js
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      An iPod Classic emulator that connects to Apple Music and Spotify. Built with React &amp;amp; Styled Components
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/21055469/71636084-6081a800-2be0-11ea-98ee-9599a3396c84.png"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F21055469%2F71636084-6081a800-2be0-11ea-98ee-9599a3396c84.png" alt="ipod_og"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;by Tanner Villarete | &lt;a href="http://linkedin.com/in/tvillarete" rel="nofollow noopener noreferrer"&gt;LinkedIn&lt;/a&gt; | &lt;a href="http://tannerv.com" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt;
&lt;/h3&gt;
&lt;/div&gt;
&lt;p&gt;Before the days of streaming services, we relied on physical devices to store our limited libraries of music. Now with the streaming age, we no longer rely on physical storage and have endless hours of songs at our disposal. This project is an homage to the good 'ol days. A mix of the old and new. Experience the iPod Classic you used to own that now connects to Spotify and Apple Music — the two most popular music streaming platforms in the world.&lt;/p&gt;
&lt;p&gt;I built this thing to be very extensible – to the point where it can even run games (like brick!). In the future I might consider adding a few more little apps and easter eggs (theming?).&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://user-images.githubusercontent.com/21055469/71572818-c877a780-2a95-11ea-9e4e-6b0476ff172b.gif"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F21055469%2F71572818-c877a780-2a95-11ea-9e4e-6b0476ff172b.gif" alt="ipod"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;✨ Features&lt;/h2&gt;
&lt;/div&gt;
&lt;ul class="contains-task-list"&gt;
&lt;li class="task-list-item"&gt;
 Configured for Vercel&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Next.js 14&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 React 18&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Styled Components 6&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Framer Motion 10&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Spotify Web Playback SDK&lt;/li&gt;
&lt;li class="task-list-item"&gt;
 Apple MusicKit JS&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All SVGs…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/tvillarete/ipod-classic-js" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Slidev
&lt;/h3&gt;

&lt;p&gt;Presentation Slides for Developers&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/slidevjs" rel="noopener noreferrer"&gt;
        slidevjs
      &lt;/a&gt; / &lt;a href="https://github.com/slidevjs/slidev" rel="noopener noreferrer"&gt;
        slidev
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Presentation Slides for Developers
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;br&gt;
&lt;p&gt;
&lt;a href="https://sli.dev" rel="nofollow noopener noreferrer"&gt;
&lt;img src="https://camo.githubusercontent.com/afc49f89c6467ea6e85a87c60ad0f19cda3831c4dfc89f114f6a8001555b9fe4/68747470733a2f2f736c692e6465762f6c6f676f2d7469746c652e706e67" alt="Slidev" height="250" width="250"&gt;
&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
Presentation &lt;b&gt;slide&lt;/b&gt;s for &lt;b&gt;dev&lt;/b&gt;elopers 🧑‍💻👩‍💻👨‍💻
&lt;/p&gt;

&lt;p&gt;
&lt;a href="https://www.npmjs.com/package/@slidev/cli" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/0c5b8a60f48e79271491229b9555b72f9fa52fac06c3ad2e8537c590dc7e9979/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f40736c696465762f636c693f636f6c6f723d324239304236266c6162656c3d" alt="NPM version"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/@slidev/cli" rel="nofollow noopener noreferrer"&gt;&lt;img alt="NPM Downloads" src="https://camo.githubusercontent.com/3e34ea274661ea197997637f7bab410e998f583c424ca23b8b97e62a5a02148e/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f40736c696465762f636c693f636f6c6f723d333439646265266c6162656c3d"&gt;&lt;/a&gt;
&lt;a href="https://sli.dev/" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/54bdd02107305e74a81c667c3a50d4463468f4663f17f13e72fb43cec11a0850/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d266d6573736167653d646f637325323025323625323064656d6f7326636f6c6f723d343562386364" alt="Docs &amp;amp; Demos"&gt;&lt;/a&gt;
&lt;a href="https://sli.dev/resources/theme-gallery" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/b4a3e7bf6fc28728b03beede9582770ab6fec2ab3376b900137f2f001fd7e110/68747470733a2f2f696d672e736869656c64732e696f2f7374617469632f76313f6c6162656c3d266d6573736167653d7468656d657326636f6c6f723d346563356434" alt="Themes"&gt;&lt;/a&gt;
&lt;br&gt;
&lt;a href="https://github.com/slidevjs/slidev" rel="noopener noreferrer"&gt;&lt;img alt="GitHub stars" src="https://camo.githubusercontent.com/1cc25acb24bd0ed79fd96fbe65883cfecfe8548f293f7066d5d13c66672de406/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f73746172732f736c696465766a732f736c696465763f7374796c653d736f6369616c"&gt;&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;
  &lt;a href="https://twitter.com/antfu7/status/1389604687502995457" rel="nofollow noopener noreferrer"&gt;Video Preview&lt;/a&gt; | &lt;a href="https://sli.dev" rel="nofollow noopener noreferrer"&gt;Documentation&lt;/a&gt;
&lt;/p&gt;

&lt;div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/slidevjs/slidev"&gt;&lt;img width="2000" height="0" alt="" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fslidevjs%2Fslidev"&gt;&lt;/a&gt;&lt;br&gt;
Made possible by my &lt;a href="https://github.com/sponsors/antfu" rel="noopener noreferrer"&gt;Sponsor Program 💖&lt;/a&gt;&lt;br&gt;
&lt;a rel="noopener noreferrer" href="https://github.com/slidevjs/slidev"&gt;&lt;img width="2000" height="0" alt="" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fgithub.com%2Fslidevjs%2Fslidev"&gt;&lt;/a&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;
&lt;/div&gt;

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


&lt;ul&gt;

&lt;li&gt;📝 &lt;a href="https://sli.dev/guide/syntax" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Markdown-based&lt;/strong&gt;&lt;/a&gt; - foucus on content and use your favorite editor&lt;/li&gt;

&lt;li&gt;🧑‍💻 &lt;a href="https://sli.dev/guide/syntax#code-blocks" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Developer Friendly&lt;/strong&gt;&lt;/a&gt; - built-in code highlighting, live coding, etc.&lt;/li&gt;

&lt;li&gt;🎨 &lt;a href="https://sli.dev/resources/theme-gallery" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Themable&lt;/strong&gt;&lt;/a&gt; - theme can be shared and used with npm packages&lt;/li&gt;

&lt;li&gt;🌈 &lt;a href="https://sli.dev/guide/syntax#embedded-styles" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Stylish&lt;/strong&gt;&lt;/a&gt; - on-demand utilities via &lt;a href="https://github.com/unocss/unocss" rel="noopener noreferrer"&gt;UnoCSS&lt;/a&gt;.&lt;/li&gt;

&lt;li&gt;🤹 &lt;a href="https://sli.dev/custom/directory-structure#components" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Interactive&lt;/strong&gt;&lt;/a&gt; - embedding Vue components seamlessly&lt;/li&gt;

&lt;li&gt;🎙 &lt;a href="https://sli.dev/guide/ui#presenter-mode" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Presenter Mode&lt;/strong&gt;&lt;/a&gt; - use another window, or even your phone to control your slides&lt;/li&gt;

&lt;li&gt;🎨 &lt;a href="https://sli.dev/features/drawing" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Drawing&lt;/strong&gt;&lt;/a&gt; - draw and annotate on your slides&lt;/li&gt;

&lt;li&gt;🧮 &lt;a href="https://sli.dev/features/latex" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;LaTeX&lt;/strong&gt;&lt;/a&gt; - built-in LaTeX math equations support&lt;/li&gt;

&lt;li&gt;📰 &lt;a href="https://sli.dev/guide/syntax#diagrams" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Diagrams&lt;/strong&gt;&lt;/a&gt; - creates diagrams using textual descriptions with &lt;a href="https://mermaid.js.org/" rel="nofollow noopener noreferrer"&gt;Mermaid.js&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;🌟 &lt;a href="https://sli.dev/features/icons" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Icons&lt;/strong&gt;&lt;/a&gt; - access to icons from any icon set directly&lt;/li&gt;

&lt;li&gt;💻 &lt;a href="https://sli.dev/guide/index#editor" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Editor&lt;/strong&gt;&lt;/a&gt; - integrated editor, or the &lt;a href="https://sli.dev/features/vscode-extension" rel="nofollow noopener noreferrer"&gt;VSCode extension&lt;/a&gt;
&lt;/li&gt;

&lt;li&gt;🎥 &lt;a href="https://sli.dev/features/recording" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Recording&lt;/strong&gt;&lt;/a&gt; - built-in recording and camera view&lt;/li&gt;

&lt;li&gt;📤 &lt;a href="https://sli.dev/guide/exporting" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Portable&lt;/strong&gt;&lt;/a&gt; - export into PDF, PNGs, or PPTX&lt;/li&gt;

&lt;li&gt;⚡️ &lt;a href="https://vitejs.dev" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Fast&lt;/strong&gt;&lt;/a&gt; - instant…&lt;/li&gt;

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


&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bubble - Mobile App Design
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F702789%2Fscreenshots%2F15902223%2Fmedia%2F81c61c43f09cc5fd9e3ffafd0274e933.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%2Fcdn.dribbble.com%2Fusers%2F702789%2Fscreenshots%2F15902223%2Fmedia%2F81c61c43f09cc5fd9e3ffafd0274e933.png" alt="https://cdn.dribbble.com/users/702789/screenshots/15902223/media/81c61c43f09cc5fd9e3ffafd0274e933.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15902223-Bubble-Mobile-App-Design" rel="noopener noreferrer"&gt;Outcrowd&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pet Supplies Shopping App.
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F903897%2Fscreenshots%2F15900842%2Fmedia%2F5d6de607a8dc3ec0c6fa67b1f6572ec5.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%2Fcdn.dribbble.com%2Fusers%2F903897%2Fscreenshots%2F15900842%2Fmedia%2F5d6de607a8dc3ec0c6fa67b1f6572ec5.png" alt="https://cdn.dribbble.com/users/903897/screenshots/15900842/media/5d6de607a8dc3ec0c6fa67b1f6572ec5.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15900842-Pet-Supplies-Shopping-App" rel="noopener noreferrer"&gt;Yi Li&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Electric Scooter Banner Design
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F1615584%2Fscreenshots%2F15901420%2Fmedia%2Fa2138f7ac184ea925ee804a631735e6b.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.dribbble.com%2Fusers%2F1615584%2Fscreenshots%2F15901420%2Fmedia%2Fa2138f7ac184ea925ee804a631735e6b.jpg" alt="https://cdn.dribbble.com/users/1615584/screenshots/15901420/media/a2138f7ac184ea925ee804a631735e6b.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15901420-Electric-Scooter-Banner-Design" rel="noopener noreferrer"&gt;Ghulam Rasool&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Medicine Reminder App
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F8279166%2Fscreenshots%2F15909745%2Fmedia%2Ffe367af31c8513119c1786e65e7ed5f6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.dribbble.com%2Fusers%2F8279166%2Fscreenshots%2F15909745%2Fmedia%2Ffe367af31c8513119c1786e65e7ed5f6.jpg" alt="https://cdn.dribbble.com/users/8279166/screenshots/15909745/media/fe367af31c8513119c1786e65e7ed5f6.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15909745-Medicine-Reminder-App" rel="noopener noreferrer"&gt;Farrel Paperpillar&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Shoplon | E-commerce UI Kit
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F2990466%2Fscreenshots%2F15922371%2Fmedia%2Ffa39def565ef0a0e0ec52dda5f1b2613.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%2Fcdn.dribbble.com%2Fusers%2F2990466%2Fscreenshots%2F15922371%2Fmedia%2Ffa39def565ef0a0e0ec52dda5f1b2613.png" alt="https://cdn.dribbble.com/users/2990466/screenshots/15922371/media/fa39def565ef0a0e0ec52dda5f1b2613.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15922371-Shoplon-E-commerce-UI-Kit-Address" rel="noopener noreferrer"&gt;Sepide Moqadasi&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Recipe App
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F4601337%2Fscreenshots%2F15921850%2Fmedia%2F11b4d473412c41b7c6dcba64d48914bd.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%2Fcdn.dribbble.com%2Fusers%2F4601337%2Fscreenshots%2F15921850%2Fmedia%2F11b4d473412c41b7c6dcba64d48914bd.png" alt="https://cdn.dribbble.com/users/4601337/screenshots/15921850/media/11b4d473412c41b7c6dcba64d48914bd.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15921850-Recipe-App" rel="noopener noreferrer"&gt;Arya Wijaya Kusuma&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

&lt;h2&gt;
  
  
  Picked Pens
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Creating Generative Grid Layouts With Quadtrees
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/georgedoescode/embed/rNygYMz?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/georgedoescode" rel="noopener noreferrer"&gt;George Francis&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Multi Colored Text with CSS
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/TajShireen/embed/YzZmbep?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/Shireen_dev" rel="noopener noreferrer"&gt;Shireen Taj&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Junior to Senior - Developer Relations Program Manager at Google
&lt;/h3&gt;

&lt;p&gt;David and Erin discuss having a mindset of learning with joy, being comfortable with asking 'dumb' questions, and defining clear goals&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/3zWrPoNDgNSbgY0YrFAmy8" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntax - CSRF Explained
&lt;/h3&gt;

&lt;p&gt;In this Hasty Treat, Scott and Wes talk about CSRF (Cross Site Request Forgery)!&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/2IhNT0nmRiu1tkVnVw2RHS" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The CSS Podcast - is(), :where(), &amp;amp; nesting
&lt;/h3&gt;

&lt;p&gt;In this episode, Adam and Una explore some CSS syntactic sugar! They discuss the &lt;code&gt;:is&lt;/code&gt; and &lt;code&gt;:where&lt;/code&gt; functions, how they differ, and how they’re paving the way for nesting.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/3WiLji83Iz2kuKuQGxJ6DY" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Digest 24/2021 - Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 20 Jun 2021 17:01:34 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-24-2021-1bc5</link>
      <guid>https://forem.com/worldindev/weekly-digest-24-2021-1bc5</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #24.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  The Beauty of FizzBuzz in CSS
&lt;/h3&gt;

&lt;p&gt;In this CSS implementation of FizzBuzz, we can generate beautiful patterns with math!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://notlaura.com/the-beauty-of-fizzbuzz/"&gt;The Beauty of FizzBuzz in CSS | Lara Schenck&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  CSS for Web Vitals
&lt;/h3&gt;

&lt;p&gt;This article covers CSS-related techniques for optimizing Web Vitals.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://web.dev/css-web-vitals/"&gt;CSS for Web Vitals&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Inherit, initial, unset, revert
&lt;/h3&gt;

&lt;p&gt;Today we’re going to take a quick look at a few special CSS keywords you can use on any CSS property: inherit, initial, revert, and unset. Also, we will ask where and when to use them to the greatest effect, and if we need more of those keywords.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.quirksmode.org/blog/archives/2021/06/inherit_initial.html"&gt;Inherit, initial, unset, revert - ppk&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Inline Styles as Classes
&lt;/h3&gt;

&lt;p&gt;If you’re abhorred by using inline styles, just move that &lt;code&gt;style&lt;/code&gt; to the &lt;code&gt;class&lt;/code&gt; attribute! And then make sure you have CSS in place that, ya know, does what it says on the box.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://css-tricks.com/inline-styles-as-classes-lol/"&gt;Inline Styles as Classes (lol) | CSS-Tricks&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Useful and Useless Code Comments
&lt;/h3&gt;

&lt;p&gt;Unfortunately, many comments are not particularly helpful. The most common reason is that comments repeat the code: all of the information in the comment can easily be deduced from the code next to the comment.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.jim-nielsen.com/2021/useful-and-usless-code-comments/"&gt;Useful and Useless Code Comments&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  A Complete Guide To Accessibility Tooling
&lt;/h3&gt;

&lt;p&gt;Learning to build accessible websites can be a daunting task for those who are just starting to implement accessible practices. We’ve pulled together a wide range of accessibility tooling, ranging from single-use bookmarklets to full-blown applications, in order to help you get started with building more accessible websites.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.smashingmagazine.com/2021/06/complete-guide-accessibility-tooling/"&gt;A Complete Guide To Accessibility Tooling - Smashing Magazine&lt;/a&gt;&lt;/p&gt;


&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Pie Charts in React with visx
&lt;/h3&gt;

&lt;p&gt;Using visx, the low-level visualization library from Airbnb, we'll create a cool looking Pie Chart that resembles the beautiful one that the Exodus wallet has.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/leighchalliday"&gt;Leigh Halliday&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What’s new in React 18
&lt;/h3&gt;

&lt;p&gt;Understand the top new features coming to React 18, explained simply.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/eveningkid"&gt;Arnaud&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Five Essential Design Patterns in Typescript
&lt;/h3&gt;

&lt;p&gt;Jack is going to "do it live!" as he brings you five essential Design Patterns, from the GoF book, in Typescript, live, as you get to ask questions along the way!&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/jherr"&gt;Jack Herrington&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to Find and Remove Dead CSS
&lt;/h3&gt;

&lt;p&gt;Ever have old CSS styles pile up that you're afraid to remove because you're not sure if anything else is depending on them? Here's one way to get more confidence about which styles are actually unused and safe to delete, by using combining the code coverage results for each page on your website.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/searls"&gt;Justin Searls&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Seeking a Target
&lt;/h3&gt;

&lt;p&gt;This video explores Craig Reynolds' formula for Steering Behaviors in JavaScript (p5.js) beginning with "Seeking a Target.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/shiffman"&gt;Daniel Shiffman&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fig
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://fig.io/?ref=github_autocomplete"&gt;Fig&lt;/a&gt; adds autocomplete to your terminal. ****As you type, Fig pops up subcommands, options, and contextually relevant arguments in your existing terminal on macOS.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/withfig"&gt;
        withfig
      &lt;/a&gt; / &lt;a href="https://github.com/withfig/autocomplete"&gt;
        autocomplete
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Fig adds autocomplete to your terminal.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/withfig/fig/blob/main/static/FigBanner.png?raw=true"&gt;&lt;img width="300" src="https://res.cloudinary.com/practicaldev/image/fetch/s--lcXqgRzh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/withfig/fig/raw/main/static/FigBanner.png%3Fraw%3Dtrue"&gt;&lt;/a&gt;
&lt;/p&gt;




&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/89c1f9c13fd34e9269b57cacadc0061150088b6441cdfb3812816a8aac3eda40/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6f732d2545462541332542462532306d61634f532d6c69676874"&gt;&lt;img src="https://camo.githubusercontent.com/89c1f9c13fd34e9269b57cacadc0061150088b6441cdfb3812816a8aac3eda40/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6f732d2545462541332542462532306d61634f532d6c69676874" alt="os"&gt;&lt;/a&gt;
&lt;a href="https://fig.io?ref=github_autocomplete" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/aa34e6ec1c90279364a673fd04a75b1bed902f5ff9686326b293e43aeb31ccd3/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f7369676e75702d70726976617465253230626574612d626c756576696f6c6574" alt="Signup"&gt;&lt;/a&gt;
&lt;a href="https://fig.io/docs/" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/7f5c4e30ba65ad299f04f2e59d69626db88fc87fdc38790e0c9e5cb35a1159a6/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f646f63756d656e746174696f6e2d626c61636b" alt="Documentation"&gt;&lt;/a&gt;
&lt;a href="https://raw.githubusercontent.com/withfig/autocomplete/master/#Contributors"&gt;&lt;img src="https://camo.githubusercontent.com/a1b3f2329b2a12afede88d3f9e0d1391148bc0dfee280d37ab9783a1a59123ba/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f636f6e7472696275746f72732f776974686669672f6175746f636f6d706c657465" alt="All-Contributors"&gt;&lt;/a&gt;
&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/e3e5ecd15281e99d68a2219ebae68d0c51d31265db494b97af81a5a2082087be/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3833373830393131313234383533353538333f636f6c6f723d373638616434266c6162656c3d646973636f7264"&gt;&lt;img src="https://camo.githubusercontent.com/e3e5ecd15281e99d68a2219ebae68d0c51d31265db494b97af81a5a2082087be/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3833373830393131313234383533353538333f636f6c6f723d373638616434266c6162656c3d646973636f7264" alt="Discord"&gt;&lt;/a&gt;
&lt;a href="https://twitter.com/intent/follow?screen_name=fig" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/486789790fb702c4471e47610e8e49724298301af6c030f39109ebec05d94179/68747470733a2f2f696d672e736869656c64732e696f2f747769747465722f666f6c6c6f772f6669672e7376673f7374796c653d736f6369616c266c6162656c3d466f6c6c6f77" alt="Twitter"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;a href="https://fig.io?ref=github_autocomplete" rel="nofollow"&gt;Fig&lt;/a&gt; adds autocomplete to your terminal.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;As you type, Fig pops up subcommands, options, and contextually relevant arguments in your existing terminal on macOS.&lt;/p&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/74884a83c88c19b27b1a451b7e618fe773c6a48f6cb209a02d3fe70381a4f9d9/68747470733a2f2f6669672e696f2f676966732f64656d6f2d776974682d6865616465722e676966"&gt;&lt;img src="https://camo.githubusercontent.com/74884a83c88c19b27b1a451b7e618fe773c6a48f6cb209a02d3fe70381a4f9d9/68747470733a2f2f6669672e696f2f676966732f64656d6f2d776974682d6865616465722e676966" alt="Fig Visual Autocomplete For Your Terminal Demo"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;br&gt;
&lt;h2&gt;
👋 Add a completion spec for a CLI tool&lt;/h2&gt;
&lt;p&gt;Want to add autocomplete to a CLI tool (or make changes to an existing autocomplete spec)? We welcome contributions!&lt;/p&gt;
&lt;p&gt;Completion specs are defined in a &lt;em&gt;declarative&lt;/em&gt; schema that specifies &lt;code&gt;subcommands&lt;/code&gt;, &lt;code&gt;options&lt;/code&gt; and &lt;code&gt;arguments&lt;/code&gt;. Suggestions are generated from information in the spec or can be generated dynamically by running shell commands or reading local files.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;For documentation and tutorials&lt;/strong&gt;, visit &lt;a href="https://fig.io/docs" rel="nofollow"&gt;fig.io/docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To request autocomplete for a CLI tool&lt;/strong&gt;, open an &lt;a href="https://github.com/withfig/autocomplete/issues/new/choose"&gt;issue&lt;/a&gt;.&lt;/p&gt;
&lt;br&gt;
&lt;h2&gt;
😎 Get Started&lt;/h2&gt;
&lt;p&gt;Build your first spec in 3 or less min: &lt;a href="https://fig.io/docs/getting-started" rel="nofollow"&gt;fig.io/docs/getting-started&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Prerequisites:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Early access to the Fig macOS app.&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;p&gt;If you don't have access yet, sign up for the &lt;a href="https://fig.io" rel="nofollow"&gt;waitlist&lt;/a&gt; and say you're interested in building completions!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ul&gt;
&lt;li&gt;Node and NPM…&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/withfig/autocomplete"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  ni
&lt;/h3&gt;

&lt;p&gt;Use the right package manager&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/antfu/ni"&gt;antfu/ni&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Modern Unix
&lt;/h3&gt;

&lt;p&gt;A collection of modern/faster/saner alternatives to common unix commands.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/ibraheemdev"&gt;
        ibraheemdev
      &lt;/a&gt; / &lt;a href="https://github.com/ibraheemdev/modern-unix"&gt;
        modern-unix
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      A collection of modern/faster/saner alternatives to common unix commands.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
Modern Unix&lt;/h1&gt;

&lt;h1&gt;
    &lt;a href="https://github.com/sharkdp/bat"&gt;&lt;code&gt;bat&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A &lt;code&gt;cat&lt;/code&gt; clone with syntax highlighting and Git integration.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/c436c206f2c86605ab2f9fb632dd485afc05fccbf14af472770b0c59d876c9cc/68747470733a2f2f692e696d6775722e636f6d2f326c53573452452e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/c436c206f2c86605ab2f9fb632dd485afc05fccbf14af472770b0c59d876c9cc/68747470733a2f2f692e696d6775722e636f6d2f326c53573452452e706e67" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;

&lt;h1&gt;
    &lt;a href="https://github.com/ogham/exa"&gt;&lt;code&gt;exa&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A modern replacement for &lt;code&gt;ls&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/ogham/exa/master/screenshots.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n_YCO9Hj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/ogham/exa/master/screenshots.png" width="700"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/Peltoche/lsd"&gt;&lt;code&gt;lsd&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;The next gen file listing command. Backwards compatible with &lt;code&gt;ls&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/Peltoche/lsd/assets/screen_lsd.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h7oGZmdc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/Peltoche/lsd/assets/screen_lsd.png" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/dandavison/delta"&gt;&lt;code&gt;delta&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A viewer for &lt;code&gt;git&lt;/code&gt; and &lt;code&gt;diff&lt;/code&gt; output&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/52205/86275526-76792100-bba1-11ea-9e78-6be9baa80b29.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--WFuHYIad--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/52205/86275526-76792100-bba1-11ea-9e78-6be9baa80b29.png" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/bootandy/dust"&gt;&lt;code&gt;dust&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A more intutive version of &lt;code&gt;du&lt;/code&gt; written in rust.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/200613/90223722-e0c2e980-de0e-11ea-8c75-343273fed6f3.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zjYEtgSg--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://user-images.githubusercontent.com/200613/90223722-e0c2e980-de0e-11ea-8c75-343273fed6f3.png" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/muesli/duf"&gt;&lt;code&gt;duf&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A better &lt;code&gt;df&lt;/code&gt; alternative &lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/muesli/duf/master/duf.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kUtTyKAd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/muesli/duf/master/duf.png" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/Canop/broot"&gt;&lt;code&gt;broot&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A new way to see and navigate directory &lt;code&gt;tree&lt;/code&gt;s&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/Canop/broot/blob/master/website/docs/img/20200629-overview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CCURBwP8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/Canop/broot/raw/master/website/docs/img/20200629-overview.png" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/sharkdp/fd"&gt;&lt;code&gt;fd&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A simple, fast and user-friendly alternative to &lt;code&gt;find&lt;/code&gt;.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/sharkdp/fd/master/doc/screencast.svg"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--HDkhkR9A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/sharkdp/fd/master/doc/screencast.svg" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/BurntSushi/ripgrep"&gt;&lt;code&gt;ripgrep&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;An extremely fast alternative to &lt;code&gt;grep&lt;/code&gt; that respects your gitignore&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://user-images.githubusercontent.com/200613/90223748-ecaeab80-de0e-11ea-9140-ac9219f5747c.gif"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--iBlHZnDo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://user-images.githubusercontent.com/200613/90223748-ecaeab80-de0e-11ea-9140-ac9219f5747c.gif" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/ggreer/the_silver_searcher"&gt;&lt;code&gt;ag&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A code searching tool similar to &lt;code&gt;ack&lt;/code&gt;, but faster.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/b042f081343f1a68f61eb4c0455935fb52cac2e12f91fec293adec24d23b0aa8/687474703a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f732f736f6e612d7a69702f32303133303533312f32303133303533313232333234365f6f726967696e616c2e706e673f31333730303037313730"&gt;&lt;img src="https://camo.githubusercontent.com/b042f081343f1a68f61eb4c0455935fb52cac2e12f91fec293adec24d23b0aa8/687474703a2f2f63646e2d616b2e662e73742d686174656e612e636f6d2f696d616765732f666f746f6c6966652f732f736f6e612d7a69702f32303133303533312f32303133303533313232333234365f6f726967696e616c2e706e673f31333730303037313730" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/junegunn/fzf"&gt;&lt;code&gt;fzf&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A general purpose command-line fuzzy finder.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://raw.githubusercontent.com/junegunn/i/master/fzf-preview.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gjf3bcz4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://raw.githubusercontent.com/junegunn/i/master/fzf-preview.png" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/cantino/mcfly"&gt;&lt;code&gt;mcfly&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;Fly through your shell &lt;code&gt;history&lt;/code&gt;. Great Scott! &lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://github.com/cantino/mcfly/blob/master/docs/screenshot.png"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--QLjCm88Z--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/cantino/mcfly/raw/master/docs/screenshot.png" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/theryangeary/choose"&gt;&lt;code&gt;choose&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt; A human-friendly and fast alternative to &lt;code&gt;cut&lt;/code&gt; and (sometimes) &lt;code&gt;awk&lt;/code&gt; &lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/45c050bf30a0c9c51ef623452823847744d6c5e11b122e513b6dfe2fc9f05da8/68747470733a2f2f61736369696e656d612e6f72672f612f3331353933322e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/45c050bf30a0c9c51ef623452823847744d6c5e11b122e513b6dfe2fc9f05da8/68747470733a2f2f61736369696e656d612e6f72672f612f3331353933322e706e67" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/stedolan/jq"&gt;&lt;code&gt;jq&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;
    &lt;code&gt;sed&lt;/code&gt; for JSON data.
  &lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/493aad4897e0effc0224c8e30a6c8fde99448988e6d09af8e10fee1a8420aa85/68747470733a2f2f626c6f672e6e6f656e6965746f2e636f6d2f6d656469612f676e6f6d652d7368656c6c2d73637265656e73686f742d564d4142555a2e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/493aad4897e0effc0224c8e30a6c8fde99448988e6d09af8e10fee1a8420aa85/68747470733a2f2f626c6f672e6e6f656e6965746f2e636f6d2f6d656469612f676e6f6d652d7368656c6c2d73637265656e73686f742d564d4142555a2e706e67" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/chmln/sd"&gt;&lt;code&gt;sd&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;An intuitive find &amp;amp; replace CLI (&lt;code&gt;sed&lt;/code&gt; alternative).&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/daca8a279c333c1646c91f1e622d728411a1135e7d4705c4789c54ceed30c636/68747470733a2f2f726573742d72656d696e6465722e65617369657374736f66742e636f6d2f7765622f636f6d6d616e642d6c696e652d7365617263682d7265706c6163652d737472696e672d696e2d66696c652f696d672f726567756c61722d65787072657373696f6e2d7265706c6163652d737472696e672d696e2d66696c652e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/daca8a279c333c1646c91f1e622d728411a1135e7d4705c4789c54ceed30c636/68747470733a2f2f726573742d72656d696e6465722e65617369657374736f66742e636f6d2f7765622f636f6d6d616e642d6c696e652d7365617263682d7265706c6163652d737472696e672d696e2d66696c652f696d672f726567756c61722d65787072657373696f6e2d7265706c6163652d737472696e672d696e2d66696c652e706e67" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/cheat/cheat"&gt;&lt;code&gt;cheat&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;Create and view interactive cheatsheets on the command-line.&lt;/p&gt;
  &lt;p&gt;
    &lt;a rel="noopener noreferrer" href="https://camo.githubusercontent.com/2a07dd2e9c5692208e78aae7071874191a84b6ca5edbcd2b2d33e7ca31804b1d/68747470733a2f2f7374617469632e68617964656e6a616d65732e696f2f77702d636f6e74656e742f75706c6f6164732f323032302f30392f63686561742d636f6d6d616e642d6c696e652d6769746875622d383638783437382e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/2a07dd2e9c5692208e78aae7071874191a84b6ca5edbcd2b2d33e7ca31804b1d/68747470733a2f2f7374617469632e68617964656e6a616d65732e696f2f77702d636f6e74656e742f75706c6f6164732f323032302f30392f63686561742d636f6d6d616e642d6c696e652d6769746875622d383638783437382e706e67" width="600"&gt;&lt;/a&gt;
  &lt;/p&gt;


&lt;h1&gt;

    &lt;a href="https://github.com/tldr-pages/tldr"&gt;&lt;code&gt;tldr&lt;/code&gt;&lt;/a&gt;
  &lt;/h1&gt;
  &lt;p&gt;A…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/ibraheemdev/modern-unix"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Google TypeScript Style
&lt;/h3&gt;

&lt;p&gt;gts is Google's TypeScript style guide, and the configuration for our formatter, linter, and automatic code fixer. No lint rules to edit, no configuration to update, no more bike shedding over syntax.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--i3JOwpme--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev.to/assets/github-logo-ba8488d21cd8ee1fee097b8410db9deaa41d0ca30b004c0c63de0a479114156f.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/google"&gt;
        google
      &lt;/a&gt; / &lt;a href="https://github.com/google/gts"&gt;
        gts
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      ☂️ TypeScript style guide, formatter, and linter.  
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;h1&gt;
gts&lt;/h1&gt;
&lt;blockquote&gt;
&lt;p&gt;Google TypeScript Style&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href="https://npmjs.org/package/gts" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/a23629d7b53769127407637c156e1b0484393cad82625a93ea26c07febed0d48/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f6774732e737667" alt="NPM Version"&gt;&lt;/a&gt;
&lt;a href="https://github.com/google/gts/actions"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ErwqQXfY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://github.com/google/gts/workflows/ci/badge.svg" alt="GitHub Actions"&gt;&lt;/a&gt;
&lt;a href="https://david-dm.org/google/gts" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f83ac10739832b21609d6f6611248389228c837308164f0d7cde6fcdf57c5c06/68747470733a2f2f64617669642d646d2e6f72672f676f6f676c652f6774732e737667" alt="Dependency Status"&gt;&lt;/a&gt;
&lt;a href="https://snyk.io/test/github/google/gts" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/f9a08769a95f2bf0699c9c1345720430c796de84353b388d92ac970a2d99f0e6/68747470733a2f2f736e796b2e696f2f746573742f6769746875622f676f6f676c652f6774732f62616467652e737667" alt="Known Vulnerabilities"&gt;&lt;/a&gt;
&lt;a href="https://codecov.io/gh/google/gts" rel="nofollow"&gt;&lt;img src="https://camo.githubusercontent.com/96ad56f6e62b86c7004f61b59b3613ba551fdb4065f946d4b9b8e079558f2e03/68747470733a2f2f636f6465636f762e696f2f67682f676f6f676c652f6774732f6272616e63682f6d61696e2f67726170682f62616467652e737667" alt="codecov"&gt;&lt;/a&gt;
&lt;a href="https://github.com/google/gts"&gt;&lt;img src="https://camo.githubusercontent.com/b2a371e8d9ddc86da86c4a585129b5f70adad0539fb8cc59f4e033c4112ca8a7/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f636f64652532307374796c652d676f6f676c652d626c756576696f6c65742e737667" alt="TypeScript Style Guide"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://npmjs.org/package/gts" rel="nofollow"&gt;gts&lt;/a&gt; is Google's TypeScript style guide, and the configuration for our formatter, linter, and automatic code fixer. No lint rules to edit, no configuration to update, no more bike shedding over syntax.&lt;/p&gt;
&lt;p&gt;To borrow from &lt;a href="https://www.npmjs.com/package/standard" rel="nofollow"&gt;standardjs&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No configuration&lt;/strong&gt;. The easiest way to enforce consistent style in your project. Just drop it in.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Automatically format code&lt;/strong&gt;. Just run &lt;code&gt;gts fix&lt;/code&gt; and say goodbye to messy or inconsistent code.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Catch style issues &amp;amp; programmer errors early&lt;/strong&gt;. Save precious code review time by eliminating back-and-forth between reviewer &amp;amp; contributor.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Opinionated, but not to a fault&lt;/strong&gt;. We recommend you use the default configuration, but if you &lt;em&gt;need&lt;/em&gt; to customize compiler or linter config, you can.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Under the covers, we use &lt;a href="https://eslint.org/" rel="nofollow"&gt;eslint&lt;/a&gt; to enforce the style guide and provide automated fixes, and &lt;a href="https://prettier.io/" rel="nofollow"&gt;prettier&lt;/a&gt; to re-format code.&lt;/p&gt;
&lt;h2&gt;
Getting Started&lt;/h2&gt;
&lt;p&gt;The easiest way to get started is to…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/google/gts"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Cake App
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hb6GHNSI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/4601337/screenshots/15849060/media/3fbba213a9d483fa2a51abd8fc756b7d.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hb6GHNSI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/4601337/screenshots/15849060/media/3fbba213a9d483fa2a51abd8fc756b7d.png" alt="https://cdn.dribbble.com/users/4601337/screenshots/15849060/media/3fbba213a9d483fa2a51abd8fc756b7d.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15849060-Cake-App"&gt;Arya Wijaya Kusuma&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  OYOTEE - Plant Shop Website
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YSybzTzb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3550736/screenshots/15848860/media/74bc70659511fd4169f64ed424b42665.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YSybzTzb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3550736/screenshots/15848860/media/74bc70659511fd4169f64ed424b42665.jpg" alt="https://cdn.dribbble.com/users/3550736/screenshots/15848860/media/74bc70659511fd4169f64ed424b42665.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15848860-OYOTEE-Plant-Shop-Website"&gt;Maulana Farhan&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Blog App - UI Design
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vYjgqei7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3375201/screenshots/15849030/media/9a70a3bbe66853bc8aec151c11fe89f4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vYjgqei7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3375201/screenshots/15849030/media/9a70a3bbe66853bc8aec151c11fe89f4.png" alt="https://cdn.dribbble.com/users/3375201/screenshots/15849030/media/9a70a3bbe66853bc8aec151c11fe89f4.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15849030-Blog-App-UI-Design"&gt;Sayyid Ahsan&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Spotify for Artists Fan Study Pitch
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KmDPO1fG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3816/screenshots/15864817/media/4de75f68c1be6817132eaef6f7c771c1.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KmDPO1fG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://cdn.dribbble.com/users/3816/screenshots/15864817/media/4de75f68c1be6817132eaef6f7c771c1.png" alt="https://cdn.dribbble.com/users/3816/screenshots/15864817/media/4de75f68c1be6817132eaef6f7c771c1.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15864817-Spotify-for-Artists-Fan-Study-Pitch-Concept-style-frame-No-2"&gt;Ben Cline&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;


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

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTZOvLCd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1332018227942019073/Jh666gw3_normal.jpg" alt="Adam Argyle profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Adam Argyle
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/argyleink"&gt;@argyleink&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;
      `scrollBy()`&lt;br&gt;for *relative* scroll position adjustments, like little scroll mutator calls&lt;br&gt;&lt;br&gt;MDN 🤓&lt;br&gt;scrollTo &lt;a href="https://t.co/u2U4j2nHcy"&gt;developer.mozilla.org/en-US/docs/Web…&lt;/a&gt;&lt;br&gt;scrollBy &lt;a href="https://t.co/NKVtTRbmXq"&gt;developer.mozilla.org/en-US/docs/Web…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:47 PM - 14 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1404510924891824128" 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=1404510924891824128" 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=1404510924891824128" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--03DEljUu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/tweet_video_thumb/E4BLkuaUcAQ24Rf.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--2CG_KIjY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1401661584464781313/eEG_P-d6_normal.jpg" alt="Jordan Staniscia 🔥 profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Jordan Staniscia 🔥
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @jordanstaniscia
      &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;
      What I've been working on the past few months announced today: The new &lt;a href="https://twitter.com/stripe"&gt;@stripe&lt;/a&gt; Payment Element. &lt;br&gt;&lt;br&gt;&lt;a href="https://t.co/TKg2tR4gAo"&gt;stripe.com/docs/payments/…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      16:51 PM - 16 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1405206412947382276" 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=1405206412947382276" 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=1405206412947382276" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media ltag__twitter-tweet__media__video-wrapper"&gt;
        &lt;div class="ltag__twitter-tweet__media--video-preview"&gt;
          &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--zN804Rs5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/tweet_video_thumb/E4E4gzyWEAIKKKz.jpg" alt="unknown tweet media content"&gt;
          &lt;img src="/assets/play-butt.svg" class="ltag__twitter-tweet__play-butt" alt="Play butt"&gt;
        &lt;/div&gt;
        &lt;div class="ltag__twitter-tweet__video"&gt;
          
            
          
        &lt;/div&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--xtmwwH4T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1293852807024521218/1u__xCFD_normal.jpg" alt="Pedro Duarte profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Pedro Duarte
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/peduarte"&gt;@peduarte&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;
      Collision and position 🤯&lt;br&gt;&lt;br&gt;Showing off the &lt;a href="https://twitter.com/radix_ui"&gt;@radix_ui&lt;/a&gt; menu logic&lt;br&gt;&lt;br&gt;Next up: Select 👀 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      10:12 AM - 17 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1405468369265082369" 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=1405468369265082369" 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=1405468369265082369" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OZZa4YaG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E4GG-3LVIAEw5uN.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTZOvLCd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1332018227942019073/Jh666gw3_normal.jpg" alt="Adam Argyle profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Adam Argyle
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/argyleink"&gt;@argyleink&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;
      Virtual Keyboard API 😍&lt;br&gt;&lt;br&gt;"developers can use [virtual keyboards] to enable better customization of their webpage's content and experiences."&lt;br&gt;&lt;br&gt;```js&lt;br&gt;navigator.virtualKeyboard.overlaysContent = true&lt;br&gt;```&lt;br&gt;&lt;br&gt;```css&lt;br&gt;env(keyboard-inset-height)&lt;br&gt;```&lt;br&gt;&lt;br&gt;learn more 🔎 &lt;a href="https://t.co/VnxWT36cdW"&gt;github.com/MicrosoftEdge/…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      15:53 PM - 17 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1405554160339079169" 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=1405554160339079169" 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=1405554160339079169" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Qm1ZAzZN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E4L7mQNWYAIOMgR.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--7t_JtJQ2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1402416691628359681/pmtUfd0M_normal.jpg" alt="George Moller profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        George Moller
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @_georgemoller
      &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;
      💡Did you know you can customize the header color of the mobile browser? 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      18:56 PM - 18 Jun 2021
    &lt;/div&gt;


    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1405962673599168517" 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=1405962673599168517" 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=1405962673599168517" 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;blockquote class="ltag__twitter-tweet"&gt;
      &lt;div class="ltag__twitter-tweet__media"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1LiBTm0r--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/media/E4GV_J0UYAIKqoO.jpg" alt="unknown tweet media content"&gt;
      &lt;/div&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--TTZOvLCd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://pbs.twimg.com/profile_images/1332018227942019073/Jh666gw3_normal.jpg" alt="Adam Argyle profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Adam Argyle
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        &lt;a class="mentioned-user" href="https://dev.to/argyleink"&gt;@argyleink&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;
      make taps 300ms faster with 1 line of CSS:&lt;br&gt;&lt;br&gt;```&lt;a href="https://twitter.com/hashtag/css"&gt;#css&lt;/a&gt;&lt;br&gt;touch-action: manipulation;&lt;br&gt;```&lt;br&gt;&lt;br&gt;means:&lt;br&gt;element doesn't want double-tap to zoom&lt;br&gt;&lt;br&gt;result:&lt;br&gt;browser *immediately* responds to taps instead of waiting 300ms for a "potential" 2nd tap 🤓&lt;br&gt;&lt;br&gt;caniuse (YES!) &lt;a href="https://t.co/f7rEIH0cp6"&gt;caniuse.com/mdn-css_proper…&lt;/a&gt; 
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      13:33 PM - 18 Jun 2021
    &lt;/div&gt;


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

&lt;h3&gt;
  
  
  3D Modern House
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/ricardoolivaalonso/embed/yLOpNdZ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/rolivaalonso"&gt;Ricardo Oliva Alonso&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Loki – Intro text animation
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/edalgrin/embed/oNZOgJW?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/edalgrin"&gt;Eduardo Allegrini&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Rage
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/tiffachoo/embed/VwpVyJN?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/tiffachooo"&gt;Tiffany Choong&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Syntax - What is SvelteKit?
&lt;/h3&gt;

&lt;p&gt;In this Hasty Treat, Scott and Wes talk about SvelteKit — what it is and why you might want to use it.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/1ArcSgm8NXjlJBdFypOnJs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The CSS Podcast - Custom properties
&lt;/h3&gt;

&lt;p&gt;Custom properties, aka CSS variables, are runtime dynamic variables which allow you to store loose or typed values. They're free, super fast, improve code legibility, unlock powers, are reachable with JavaScript, animateable, overall super fun and, well, kind of complex.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/2NUzPqu3NcA8OkxdYJkiU4"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Smashing Podcast - What is Image Optimization in 2021?
&lt;/h3&gt;

&lt;p&gt;We’re talking about Image Optimization. What steps should we follow for performant images in 2021? Drew McLellan talks to expert Addy Osmani to find out.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/4tyvNXcAcPXxSsY9wgHIuD"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  CodePen Radio - Andy and Una from Google’s Learn CSS Project
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://web.dev/learn/css/"&gt;Learn CSS&lt;/a&gt; is a very cool project from a &lt;a href="https://web.dev/learn/css/conclusion/"&gt;whole team&lt;/a&gt; of people at Google (and outside). It does a great job of documenting where is right now, in a fairly comprehensive way.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/0mFX1ErHA15P8qOZdevW9j"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Junior to Senior - Maintainer of the JavaScript Octokit
&lt;/h3&gt;

&lt;p&gt;David and Gregor discuss building and maintaining open-source software, how to be a valuable asset to your team, and growing through communication.&lt;/p&gt;

&lt;p&gt;&lt;iframe width="100%" height="232px" src="https://open.spotify.com/embed/episode/136tmQ8s4Rca1KBZbVa1CO"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Make sure to subscribe to our &lt;a href="https://worldindev.ck.page"&gt;newsletter&lt;/a&gt; 💌 to receive our weekly recap directly on your email and react to this post to automatically participate in our giveaway 🎁&lt;/p&gt;

&lt;p&gt;If you would like to join our discussions, you can find us on &lt;a href="https://discord.gg/aWS2YKk6"&gt;Discord&lt;/a&gt; 📣.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Weekly Digest 23/2021 - Top of the Week</title>
      <dc:creator>Marco Biedermann</dc:creator>
      <pubDate>Sun, 13 Jun 2021 17:12:06 +0000</pubDate>
      <link>https://forem.com/worldindev/weekly-digest-23-2021-7de</link>
      <guid>https://forem.com/worldindev/weekly-digest-23-2021-7de</guid>
      <description>&lt;p&gt;Welcome to my Weekly Digest #23.&lt;/p&gt;

&lt;p&gt;This weekly digest contains a lot of interesting and inspiring articles, videos, tweets, podcasts, and designs I consumed during this week.&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You will receive &lt;a href="https://dev.to/worldindev"&gt;our articles&lt;/a&gt; directly to your &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;inbox&lt;/a&gt; 📬.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;


&lt;h2&gt;
  
  
  Interesting articles to read
&lt;/h2&gt;
&lt;h3&gt;
  
  
  How to create NFTs with JavaScript
&lt;/h3&gt;

&lt;p&gt;Learn to code an NFT (non-fungible token) using the Ethereum blockchain, the Ropsten Testnet, and a series of JavaScript libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.logrocket.com/how-to-create-nfts-with-javascript/" rel="noopener noreferrer"&gt;How to create NFTs with JavaScript - LogRocket Blog&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Serving sharp images to high density screens
&lt;/h3&gt;

&lt;p&gt;Why compressing images for dense screens is different, and how to serve them.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://jakearchibald.com/2021/serving-sharp-images-to-high-density-screens/" rel="noopener noreferrer"&gt;Serving sharp images to high density screens&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  How to update nested state in React
&lt;/h3&gt;

&lt;p&gt;State is a cornerstone of React components. In this post, we learn how to update nested state properties.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://typeofnan.dev/how-to-update-nested-state-in-react/" rel="noopener noreferrer"&gt;How to update nested state in React&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Media Queries in Times of @container
&lt;/h3&gt;

&lt;p&gt;With container queries now on the horizon - will we need media queries at all?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://mxb.dev/blog/media-queries-in-times-of-container-queries/" rel="noopener noreferrer"&gt;Media Queries in Times of @container&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Some great videos I watched this week
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Automating Tests with Jest
&lt;/h3&gt;

&lt;p&gt;When I think about Continuous Integration, one of the first things that comes to my mind is testing. It's amazing how much more confident you can be about changes to your codebase when you have a good suite of tests, and you know they run before every merge.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/JimmyDCleveland" rel="noopener noreferrer"&gt;Jimmy Cleveland&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use TypeScript on big projects
&lt;/h3&gt;

&lt;p&gt;We met with Nikita Kabardin, who works as a front-end developer at Spotify. He also worked on several Battlefield projects.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/ivanov_dev" rel="noopener noreferrer"&gt;Maksim Ivanov&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Thinking on ways to solve color schemes
&lt;/h3&gt;

&lt;p&gt;In today’s GUI challenge, we’re building dark, light and dim color schemes with HSL. The CSS works across modern browsers, establishes foundational architecture for more themes, and is accessible.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/argyleink" rel="noopener noreferrer"&gt;Adam Argyle&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Hasura in 100 Seconds
&lt;/h3&gt;

&lt;p&gt;Learn how Hasura can instantly turn your SQL database into a GraphQL API.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/fireship_dev" rel="noopener noreferrer"&gt;Fireship&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Self-Avoiding Walk
&lt;/h3&gt;

&lt;p&gt;It's finally time to attempt a Self-Avoiding Walk! In this video, I quickly visualize a simple JavaScript p5.js implementation of a self-avoiding walk. I then tackle the more complex problem of backtracking to find a solution to a space-filling self-avoiding walk.&lt;/p&gt;

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

&lt;p&gt;by &lt;a href="https://twitter.com/shiffman" rel="noopener noreferrer"&gt;Daniel Shiffman&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Useful GitHub repositories
&lt;/h2&gt;

&lt;h3&gt;
  
  
  React 18 Working Group
&lt;/h3&gt;

&lt;p&gt;This is the working group for React 18 release. It was formed to provide support to the community through the release.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/reactwg" rel="noopener noreferrer"&gt;
        reactwg
      &lt;/a&gt; / &lt;a href="https://github.com/reactwg/react-18" rel="noopener noreferrer"&gt;
        react-18
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Workgroup for React 18 release.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;React 18 Working Group&lt;/h1&gt;

&lt;/div&gt;
&lt;p&gt;This is the working group for React 18 release. It was formed to provide support to the community through the release. The working group is focused around online conversations which you can access by going to the &lt;a href="https://github.com/reactwg/react-18/discussions" rel="noopener noreferrer"&gt;GitHub Discussions tab&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The working group is currently structured to help manage discussions yet make the information available to everyone. If you're looking for the first discussion to read, &lt;strong&gt;&lt;a href="https://github.com/reactwg/react-18/discussions/4" rel="noopener noreferrer"&gt;Introducing React 18&lt;/a&gt;&lt;/strong&gt; is a good starting point.&lt;/p&gt;
&lt;p&gt;Working group participants come from a representative set of the React community including educators, developers, and library authors. Participants can start GitHub discussions to ask questions and provide feedback on React 18. They can also comment on existing discussion threads. All discussions are public and available for everyone to follow along.&lt;/p&gt;
&lt;p&gt;To learn more about the React 18 Working Group and its mission, check out &lt;a href="https://reactjs.org/blog/2021/06/08/the-plan-for-react-18.html" rel="nofollow noopener noreferrer"&gt;The Plan for React 18&lt;/a&gt;.&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/reactwg/react-18" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  React Hook Form
&lt;/h3&gt;

&lt;p&gt;Performant, flexible and extensible forms with easy-to-use validation.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/react-hook-form" rel="noopener noreferrer"&gt;
        react-hook-form
      &lt;/a&gt; / &lt;a href="https://github.com/react-hook-form/react-hook-form" rel="noopener noreferrer"&gt;
        react-hook-form
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      📋 React Hooks for form state management and validation (Web + React Native)
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div&gt;
        &lt;a href="https://react-hook-form.com" title="React Hook Form - Simple React forms validation" rel="nofollow noopener noreferrer"&gt;
            &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2Freact-hook-form%2Freact-hook-form%2Fmaster%2Fdocs%2Flogo.png" alt="React Hook Form Logo - React hook custom hook for form validation"&gt;
        &lt;/a&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;p&gt;&lt;a href="https://www.npmjs.com/package/react-hook-form" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/3927692a588158b29ba2be7da68a26f4a56dc1821d91ddca782388784e468b8f/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f646d2f72656163742d686f6f6b2d666f726d2e7376673f7374796c653d666f722d7468652d6261646765" alt="npm downloads"&gt;&lt;/a&gt;
&lt;a href="https://www.npmjs.com/package/react-hook-form" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/f165096b72d482a7fc616c522e3b9d4746dd2ed2120cccabda94837e8ab927fb/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f64742f72656163742d686f6f6b2d666f726d2e7376673f7374796c653d666f722d7468652d6261646765" alt="npm"&gt;&lt;/a&gt;
&lt;a href="https://github.com/react-hook-form/react-hook-form/blob/master/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/1bbb5a17dba17ce281e1caa6237902d5c516e8e65b8777b99eb23b90b91d3fd6/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f6c2f72656163742d686f6f6b2d666f726d3f7374796c653d666f722d7468652d6261646765" alt="npm"&gt;&lt;/a&gt;
&lt;a href="https://discord.gg/yYv7GZ8" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/a5cbf46a738f7d743b8ed9164e0836f4bbacf45fb61d35c00813c79e77a7f393/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3735343839313635383332373335393533382e7376673f7374796c653d666f722d7468652d6261646765266c6162656c3d266c6f676f3d646973636f7264266c6f676f436f6c6f723d66666666666626636f6c6f723d373338394438266c6162656c436f6c6f723d364137454332" alt="Discord"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p&gt;
  &lt;a href="https://react-hook-form.com/get-started" rel="nofollow noopener noreferrer"&gt;Get started&lt;/a&gt; |
  &lt;a href="https://react-hook-form.com/docs" rel="nofollow noopener noreferrer"&gt;API&lt;/a&gt; |
  &lt;a href="https://react-hook-form.com/form-builder" rel="nofollow noopener noreferrer"&gt;Form Builder&lt;/a&gt; |
  &lt;a href="https://react-hook-form.com/faqs" rel="nofollow noopener noreferrer"&gt;FAQs&lt;/a&gt; |
  &lt;a href="https://github.com/react-hook-form/react-hook-form/tree/master/examples" rel="noopener noreferrer"&gt;Examples&lt;/a&gt;
&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Features&lt;/h3&gt;
&lt;/div&gt;

&lt;ul&gt;
&lt;li&gt;Built with performance, UX and DX in mind&lt;/li&gt;
&lt;li&gt;Embraces native HTML form &lt;a href="https://react-hook-form.com/get-started#Applyvalidation" rel="nofollow noopener noreferrer"&gt;validation&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Out of the box integration with &lt;a href="https://codesandbox.io/s/react-hook-form-v7-controller-5h1q5" rel="nofollow noopener noreferrer"&gt;UI libraries&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://bundlephobia.com/result?p=react-hook-form@latest" rel="nofollow noopener noreferrer"&gt;Small size&lt;/a&gt; and no &lt;a href="https://github.com/react-hook-form/react-hook-form./package.json" rel="noopener noreferrer"&gt;dependencies&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Support &lt;a href="https://github.com/jquense/yup" rel="noopener noreferrer"&gt;Yup&lt;/a&gt;, &lt;a href="https://github.com/colinhacks/zod" rel="noopener noreferrer"&gt;Zod&lt;/a&gt;, &lt;a href="https://github.com/ajv-validator/ajv" rel="noopener noreferrer"&gt;AJV&lt;/a&gt;, &lt;a href="https://github.com/ianstormtaylor/superstruct" rel="noopener noreferrer"&gt;Superstruct&lt;/a&gt;, &lt;a href="https://github.com/hapijs/joi" rel="noopener noreferrer"&gt;Joi&lt;/a&gt; and &lt;a href="https://github.com/react-hook-form/resolvers" rel="noopener noreferrer"&gt;others&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Install&lt;/h3&gt;
&lt;/div&gt;

&lt;div class="snippet-clipboard-content notranslate position-relative overflow-auto"&gt;&lt;pre class="notranslate"&gt;&lt;code&gt;npm install react-hook-form
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h3 class="heading-element"&gt;Quickstart&lt;/h3&gt;

&lt;/div&gt;

&lt;div class="highlight highlight-source-js notranslate position-relative overflow-auto js-code-highlight"&gt;
&lt;pre&gt;&lt;span class="pl-k"&gt;import&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-s1"&gt;useForm&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-k"&gt;from&lt;/span&gt; &lt;span class="pl-s"&gt;'react-hook-form'&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;
&lt;span class="pl-k"&gt;function&lt;/span&gt; &lt;span class="pl-v"&gt;App&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
  &lt;span class="pl-k"&gt;const&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;
    register&lt;span class="pl-kos"&gt;,&lt;/span&gt;
    handleSubmit&lt;span class="pl-kos"&gt;,&lt;/span&gt;
    &lt;span class="pl-c1"&gt;formState&lt;/span&gt;: &lt;span class="pl-kos"&gt;{&lt;/span&gt; errors &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt;
  &lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;=&lt;/span&gt; &lt;span class="pl-en"&gt;useForm&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;;&lt;/span&gt;

  &lt;span class="pl-k"&gt;return&lt;/span&gt; &lt;span class="pl-kos"&gt;(&lt;/span&gt;
    &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;form&lt;/span&gt; &lt;span class="pl-c1"&gt;onSubmit&lt;/span&gt;&lt;span class="pl-c1"&gt;=&lt;/span&gt;&lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-en"&gt;handleSubmit&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;data&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt; &lt;span class="pl-c1"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="pl-smi"&gt;console&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-en"&gt;log&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s1"&gt;data&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;input&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;...&lt;span class="pl-en"&gt;register&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'firstName'&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;input&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt;...&lt;span class="pl-en"&gt;register&lt;/span&gt;&lt;span class="pl-kos"&gt;(&lt;/span&gt;&lt;span class="pl-s"&gt;'lastName'&lt;/span&gt;&lt;span class="pl-kos"&gt;,&lt;/span&gt; &lt;span class="pl-kos"&gt;{&lt;/span&gt; &lt;span class="pl-c1"&gt;required&lt;/span&gt;: &lt;span class="pl-c1"&gt;true&lt;/span&gt; &lt;span class="pl-kos"&gt;}&lt;/span&gt;&lt;span class="pl-kos"&gt;)&lt;/span&gt;&lt;span class="pl-kos"&gt;}&lt;/span&gt; &lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;
      &lt;span class="pl-kos"&gt;{&lt;/span&gt;&lt;span class="pl-s1"&gt;errors&lt;/span&gt;&lt;span class="pl-kos"&gt;.&lt;/span&gt;&lt;span class="pl-c1"&gt;lastName&lt;/span&gt; &lt;span class="pl-c1"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-ent"&gt;p&lt;/span&gt;&lt;span class="pl-c1"&gt;&amp;gt;&lt;/span&gt;Last name is required.&lt;span class="pl-c1"&gt;&amp;lt;&lt;/span&gt;&lt;span class="pl-c1"&gt;/&lt;/span&gt;&lt;span class="pl-ent"&gt;p&lt;/span&gt;&lt;/pre&gt;…
&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/react-hook-form/react-hook-form" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Prisma
&lt;/h3&gt;

&lt;p&gt;Next-generation ORM for Node.js &amp;amp; TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server &amp;amp; SQLite&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/prisma" rel="noopener noreferrer"&gt;
        prisma
      &lt;/a&gt; / &lt;a href="https://github.com/prisma/prisma" rel="noopener noreferrer"&gt;
        prisma
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Next-generation ORM for Node.js &amp;amp; TypeScript | PostgreSQL, MySQL, MariaDB, SQL Server, SQLite, MongoDB and CockroachDB
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;p&gt;&lt;a rel="noopener noreferrer nofollow" href="https://camo.githubusercontent.com/3d5ab203853ecbeed215614de357250a5823c7f960ad3da7fcd240234e50a4f5/68747470733a2f2f692e696d6775722e636f6d2f683655495954752e706e67"&gt;&lt;img src="https://camo.githubusercontent.com/3d5ab203853ecbeed215614de357250a5823c7f960ad3da7fcd240234e50a4f5/68747470733a2f2f692e696d6775722e636f6d2f683655495954752e706e67" alt="Prisma"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;
  &lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;Prisma&lt;/h1&gt;
&lt;/div&gt;
  &lt;a href="https://www.npmjs.com/package/prisma" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/6939b2dadd69246813e1c338e5c88d957e9e1265d0be117499e209fd675f3524/68747470733a2f2f696d672e736869656c64732e696f2f6e706d2f762f707269736d612e7376673f7374796c653d666c6174"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/prisma/prisma/blob/main/CONTRIBUTING.md" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/d88d8d77fa79e828eea397f75a1ebd114d13488aeec4747477ffbd2274de95ed/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5052732d77656c636f6d652d627269676874677265656e2e737667"&gt;&lt;/a&gt;
  &lt;a href="https://github.com/prisma/prisma/blob/main/LICENSE" rel="noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/babc55b476ce60b545de3012f13503eea326b5d8d8b9957b2d850c2e3f0cf507/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d417061636865253230322d626c7565"&gt;&lt;/a&gt;
  &lt;a href="https://pris.ly/discord" rel="nofollow noopener noreferrer"&gt;&lt;img alt="Discord" src="https://camo.githubusercontent.com/4322dad139c998285fb6c460b64d2608ebe903454d0da235d37a16dd22847484/68747470733a2f2f696d672e736869656c64732e696f2f646973636f72642f3933373735313338323732353838363036323f6c6162656c3d446973636f7264"&gt;&lt;/a&gt;
  &lt;br&gt;
  &lt;br&gt;
  &lt;a href="https://www.prisma.io/docs/getting-started/quickstart" rel="nofollow noopener noreferrer"&gt;Quickstart&lt;/a&gt;
  &lt;span&gt;  •  &lt;/span&gt;
  &lt;a href="https://www.prisma.io/" rel="nofollow noopener noreferrer"&gt;Website&lt;/a&gt;
  &lt;span&gt;  •  &lt;/span&gt;
  &lt;a href="https://www.prisma.io/docs/" rel="nofollow noopener noreferrer"&gt;Docs&lt;/a&gt;
  &lt;span&gt;  •  &lt;/span&gt;
  &lt;a href="https://github.com/prisma/prisma-examples/" rel="noopener noreferrer"&gt;Examples&lt;/a&gt;
  &lt;span&gt;  •  &lt;/span&gt;
  &lt;a href="https://www.prisma.io/blog" rel="nofollow noopener noreferrer"&gt;Blog&lt;/a&gt;
  &lt;span&gt;  •  &lt;/span&gt;
  &lt;a href="https://pris.ly/discord" rel="nofollow noopener noreferrer"&gt;Discord&lt;/a&gt;
  &lt;span&gt;  •  &lt;/span&gt;
  &lt;a href="https://twitter.com/prisma" rel="nofollow noopener noreferrer"&gt;Twitter&lt;/a&gt;
  &lt;br&gt;
  
&lt;/div&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is Prisma?&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Prisma is a &lt;strong&gt;next-generation ORM&lt;/strong&gt; that consists of these tools:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.prisma.io/docs/concepts/components/prisma-client" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Prisma Client&lt;/strong&gt;&lt;/a&gt;: Auto-generated and type-safe query builder for Node.js &amp;amp; TypeScript&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.prisma.io/docs/concepts/components/prisma-migrate" rel="nofollow noopener noreferrer"&gt;&lt;strong&gt;Prisma Migrate&lt;/strong&gt;&lt;/a&gt;: Declarative data modeling &amp;amp; migration system&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://github.com/prisma/studio" rel="noopener noreferrer"&gt;&lt;strong&gt;Prisma Studio&lt;/strong&gt;&lt;/a&gt;: GUI to view and edit data in your database&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Prisma Client can be used in &lt;em&gt;any&lt;/em&gt; Node.js or TypeScript backend application (including serverless applications and microservices). This can be a &lt;a href="https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/rest" rel="nofollow noopener noreferrer"&gt;REST API&lt;/a&gt;, a &lt;a href="https://www.prisma.io/docs/concepts/overview/prisma-in-your-stack/graphql" rel="nofollow noopener noreferrer"&gt;GraphQL API&lt;/a&gt;, a gRPC API, or anything else that needs a database.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Prisma ORM can also further be extended with these Prisma products:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://prisma.io/docs/data-platform/accelerate?utm_source=github&amp;amp;utm_medium=prisma-readme" rel="nofollow noopener noreferrer"&gt;Prisma Accelerate&lt;/a&gt;: Global database cache with scalable connection pooling&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.prisma.io/docs/data-platform/pulse?utm_source=github&amp;amp;utm_medium=prisma-readme" rel="nofollow noopener noreferrer"&gt;Prisma Pulse&lt;/a&gt;: Real-time database events with type-safe subscriptions&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.prisma.io/docs/optimize?utm_source=github&amp;amp;utm_medium=prisma-readme" rel="nofollow noopener noreferrer"&gt;Prisma Optimize&lt;/a&gt;: AI-powered query optimization and performance insights&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.prisma.io/docs/orm/tools/prisma-studio?utm_source=github&amp;amp;utm_medium=org-readme" rel="nofollow noopener noreferrer"&gt;Prisma Studio&lt;/a&gt;: A visual editor for the data in your database&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="markdown-heading"&gt;…&lt;/div&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/prisma/prisma" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  cuid
&lt;/h3&gt;

&lt;p&gt;Collision-resistant ids optimized for horizontal scaling and binary search lookup performance.&lt;/p&gt;


&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&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%2Fassets%2Fgithub-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/paralleldrive" rel="noopener noreferrer"&gt;
        paralleldrive
      &lt;/a&gt; / &lt;a href="https://github.com/paralleldrive/cuid" rel="noopener noreferrer"&gt;
        cuid
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      Collision-resistant ids optimized for horizontal scaling and performance.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;cuid&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;&lt;a href="https://travis-ci.org/ericelliott/cuid" rel="nofollow noopener noreferrer"&gt;&lt;img src="https://camo.githubusercontent.com/22cf7782fc3988206ac4f0b2a4dc1fbed769b9baddc925c447d9c359f98c6ab7/68747470733a2f2f7472617669732d63692e6f72672f65726963656c6c696f74742f637569642e737667" alt="Travis-CI"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Collision-resistant ids optimized for horizontal scaling and binary search lookup performance.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Status: Deprecated due to security. Use &lt;a href="https://github.com/paralleldrive/cuid2" rel="noopener noreferrer"&gt;Cuid2&lt;/a&gt;, instead.&lt;/h2&gt;
&lt;/div&gt;
&lt;blockquote&gt;
&lt;p&gt;Note: All monotonically increasing (auto-increment, k-sortable), and timestamp-based ids share the security issues with Cuid. V4 UUIDs and GUIDs are also insecure because it's possible to predict future values of many random algorithms, and many of them are biased, leading to increased probability of collision. Likewise, UUID V6-V8 are also insecure because they leak information which could be used to exploit systems or violate user privacy. Here are some example exploits:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://infosecwriteups.com/bugbounty-how-i-was-able-to-compromise-any-user-account-via-reset-password-functionality-a11bb5f863b3" rel="nofollow noopener noreferrer"&gt;Unauthorized password reset via guessable ID&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://infosecwriteups.com/how-this-easy-vulnerability-resulted-in-a-20-000-bug-bounty-from-gitlab-d9dc9312c10a" rel="nofollow noopener noreferrer"&gt;Unauthorized access to private GitLab issues via guessable ids&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.intruder.io/research/in-guid-we-trust" rel="nofollow noopener noreferrer"&gt;Unauthorized password reset via guid&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;Original Documentation Follows&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;Currently available for Node, browsers, Java, Ruby, .Net, Go, and many other languages (see ports below — more ports are welcome).&lt;/p&gt;
&lt;p&gt;&lt;code&gt;cuid()&lt;/code&gt; returns a short random string with some collision-busting measures. Safe to use as…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/paralleldrive/cuid" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  dribbble shots
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Fleet – Travel Shopping UI Kit
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F427857%2Fscreenshots%2F15798306%2Fmedia%2F3013474d55f68b39623b44f80caf12f3.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%2Fcdn.dribbble.com%2Fusers%2F427857%2Fscreenshots%2F15798306%2Fmedia%2F3013474d55f68b39623b44f80caf12f3.png" alt="https://cdn.dribbble.com/users/427857/screenshots/15798306/media/3013474d55f68b39623b44f80caf12f3.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15798306-Fleet-Travel-Shopping-UI-Kit-2" rel="noopener noreferrer"&gt;Tran Mau Tri Tam&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Podcast Dashboard
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F1182822%2Fscreenshots%2F15832006%2Fmedia%2F41307dcd7e4d407c79b15b6c1d5175b7.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%2Fcdn.dribbble.com%2Fusers%2F1182822%2Fscreenshots%2F15832006%2Fmedia%2F41307dcd7e4d407c79b15b6c1d5175b7.png" alt="https://cdn.dribbble.com/users/1182822/screenshots/15832006/media/41307dcd7e4d407c79b15b6c1d5175b7.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15832006-Podcast-Dashboard" rel="noopener noreferrer"&gt;Umar Aji Pratama&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Fashion Store Mobile App
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F4684322%2Fscreenshots%2F15833079%2Fmedia%2F9b7571e8c16d6590f34d2cde6edc5a07.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn.dribbble.com%2Fusers%2F4684322%2Fscreenshots%2F15833079%2Fmedia%2F9b7571e8c16d6590f34d2cde6edc5a07.jpg" alt="https://cdn.dribbble.com/users/4684322/screenshots/15833079/media/9b7571e8c16d6590f34d2cde6edc5a07.jpg"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15833079-Fashion-Store-Mobile-App" rel="noopener noreferrer"&gt;Andri.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Music Mobile App
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F6286128%2Fscreenshots%2F15828946%2Fmedia%2Fb9f0e859841dce1bfc8888c77a0623cd.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%2Fcdn.dribbble.com%2Fusers%2F6286128%2Fscreenshots%2F15828946%2Fmedia%2Fb9f0e859841dce1bfc8888c77a0623cd.png" alt="https://cdn.dribbble.com/users/6286128/screenshots/15828946/media/b9f0e859841dce1bfc8888c77a0623cd.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15828946-Music-Mobile-App" rel="noopener noreferrer"&gt;Didarul islam&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Instax - Mobile App Design
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F1445352%2Fscreenshots%2F15826920%2Fmedia%2F01d2b2a601da4316ac07909618a83fc9.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%2Fcdn.dribbble.com%2Fusers%2F1445352%2Fscreenshots%2F15826920%2Fmedia%2F01d2b2a601da4316ac07909618a83fc9.png" alt="https://cdn.dribbble.com/users/1445352/screenshots/15826920/media/01d2b2a601da4316ac07909618a83fc9.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15826920-Instax-Mobile-App-Design" rel="noopener noreferrer"&gt;Anastasia Marinicheva&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Cargo Transportation Application Design
&lt;/h3&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%2Fcdn.dribbble.com%2Fusers%2F77531%2Fscreenshots%2F15826132%2Fmedia%2F7f7b78b8affc304ff266c90d33d514b8.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%2Fcdn.dribbble.com%2Fusers%2F77531%2Fscreenshots%2F15826132%2Fmedia%2F7f7b78b8affc304ff266c90d33d514b8.png" alt="https://cdn.dribbble.com/users/77531/screenshots/15826132/media/7f7b78b8affc304ff266c90d33d514b8.png"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://dribbble.com/shots/15826132-Cargo-Transportation-Application-Design" rel="noopener noreferrer"&gt;RD UX/UI&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Tweets
&lt;/h2&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;

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

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



&lt;/p&gt;




&lt;h2&gt;
  
  
  Picked Pens
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Bringing text to life
&lt;/h3&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/kyleshook/embed/GRKVgeZ?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;by &lt;a href="https://twitter.com/elyktrix" rel="noopener noreferrer"&gt;Kyle Shook&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Podcasts worth listening
&lt;/h2&gt;

&lt;h3&gt;
  
  
  The CSS Podcast - Scroll timeline
&lt;/h3&gt;

&lt;p&gt;In this episode we deep dive the experimental Scroll Animations spec to bring you the breakdown on &lt;code&gt;@scroll-timeline&lt;/code&gt; powered CSS animation. Learn about scroll-linked animations vs scroll-triggered animations and how to orchestrate scroll interactions with elements of the page.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/4o1ateFDezB5lvAgDHC1tf" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  Syntax - Making a Vaccine Bot with JavaScript
&lt;/h3&gt;

&lt;p&gt;In this Hasty Treat, Scott and Wes talk about Wes' experiment building a vaccine bot!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://open.spotify.com/episode/3HLWcYtRkH2F6FCwUsum1D" rel="noopener noreferrer"&gt;Hasty Treat - Making a Vaccine Bot with JavaScript&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3 Minutes with Kent - Prisma is amazing
&lt;/h3&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/0Bwr6BbWHzBHtfDuPhjyT4" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  The Changelog - Exploring Deno Land
&lt;/h3&gt;

&lt;p&gt;This week we’re joined by Ryan Dahl, Node.js creator, and now the creator of Deno - a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/3bSrnzkqGneOp8YA5oCezs" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h3&gt;
  
  
  CodePen Radio - Pattern Library
&lt;/h3&gt;

&lt;p&gt;Stephen and Chris talk about &lt;code&gt;cplibrary&lt;/code&gt; the Pattern Library that the CodePen Monorepo can use to share components. What goes in there and what doesn’t? What are common and not-so-common components? Can components be combinations of other components?&lt;/p&gt;

&lt;p&gt;&lt;iframe src="https://open.spotify.com/embed/episode/7nZSX86HHBeBerGgASEEi9" width="100%" height="232px"&gt;
&lt;/iframe&gt;
&lt;/p&gt;




&lt;p&gt;Thank you for reading, talk to you next week, and stay safe! 👋&lt;/p&gt;




&lt;p&gt; &lt;/p&gt;

&lt;p&gt;Make sure to subscribe to our &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt; 💌 to receive our weekly recap directly on your email and react to this post to automatically participate in our giveaway 🎁&lt;/p&gt;

&lt;p&gt;If you would like to join our discussions, you can find us on &lt;a href="https://discord.gg/aWS2YKk6" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; 📣.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

</description>
      <category>css</category>
      <category>javascript</category>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tools to Speed Up - Super Powers For Devs 🦸</title>
      <dc:creator>Lorenzo</dc:creator>
      <pubDate>Tue, 18 May 2021 12:45:24 +0000</pubDate>
      <link>https://forem.com/worldindev/tools-to-speed-up-super-powers-for-devs-16ih</link>
      <guid>https://forem.com/worldindev/tools-to-speed-up-super-powers-for-devs-16ih</guid>
      <description>&lt;p&gt;&lt;code&gt;Hello World!&lt;/code&gt; We all know that developers love going faster, saving time for the real fun, so Today I have for you a compilation of cool and useful tools to save you time as a developer 😉. I don't want to steal too much time from you for useless things, so this list will boil down to the essentials. Name, the superpower it gives you, what it does and a  presentational video. Let's go!&lt;/p&gt;

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




&lt;p&gt;&lt;em&gt;Hey, do you want a free javascript cheat sheet and resource compilation? Grab that &lt;a href="https://worldindev.ck.page/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://camo.githubusercontent.com/6cdd2915fd088df0735bc29e8d3d4e72aba5dc75e3bcca4ea97c89d6d15f6299/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3461736839363233317a7a677031623236696a772e676966" class="article-body-image-wrapper"&gt;&lt;img src="https://camo.githubusercontent.com/6cdd2915fd088df0735bc29e8d3d4e72aba5dc75e3bcca4ea97c89d6d15f6299/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3461736839363233317a7a677031623236696a772e676966" alt="separation bar" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;--&amp;gt; Full version of the article &lt;a href="https://worldindev.ck.page/" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://www.quod.ai/" rel="noopener noreferrer"&gt;Quod Ai&lt;/a&gt; - Super Speed
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Smarter search for Git repositories&lt;/em&gt;&lt;/p&gt;

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

&lt;p&gt;Auto-search code, experts &amp;amp; impact in your repositories from Github/JIRA issues. Setup in 1-click. Powered by AI.&lt;/p&gt;

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

&lt;p&gt;--&amp;gt; Personally Recommended&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://www.codegrepper.com/app/profile.php?id=182534" rel="noopener noreferrer"&gt;Grepper&lt;/a&gt; - Flight
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The Query &amp;amp; Answer System for the Ambitious Developer&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Develop faster, master your code, understand more, grow in your career. Accrue code answers to common coding problems, find code answers without thinking - using Greppers “code problem” search engine.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://stackoverflow.com/" rel="noopener noreferrer"&gt;Stack Overflow&lt;/a&gt; - Know everything 😉
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Helping developers and technologists write the script of the future&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;No Description needed, I hope. &lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;





&lt;h2&gt;
  
  
  &lt;a href="https://www.tabnine.com/" rel="noopener noreferrer"&gt;Tabnine&lt;/a&gt; - Supersenses
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Code faster with AI completions&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Tabnine is the world’s leading AI code completion tool, trusted by over 1 million developers in all programming languages.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://www.notion.so/product" rel="noopener noreferrer"&gt;Notion&lt;/a&gt; - Mind-control
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;All-in-one workspace&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;One tool for your whole team. Write, plan, and get organized. Notion helps students, teams, enterprises, and startups grow.  &lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://slack.com/intl/en-it/" rel="noopener noreferrer"&gt;Slack&lt;/a&gt;  - Mind-to-mind communication
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Slack makes it downright pleasant to work together&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Slack is the collaboration hub that brings the right people, information, and tools together to get work done. From Fortune 100 companies to corner markets, millions of people around the world use Slack to connect their teams, unify their systems, and drive their business forward.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://discord.gg/7sRmnhCs6H" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; - Mind-to-mind communication for gamers
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Create an invite-only place where you belong&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Imagine a place where you can belong to a school club, a gaming group, or a worldwide art community. Where just you and handful of friends can spend time together. A place that makes it easy to talk every day and hang out more often.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="//stackoverflow.com/teams"&gt;Stack Overflow For Teams&lt;/a&gt; - Telepathy
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Knowledge sharing and collaboration without distractions&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Stack Overflow for Teams is a knowledge management &amp;amp; collaboration solution that technologists already trust.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://trello.com/en" rel="noopener noreferrer"&gt;Trello&lt;/a&gt; - Ability to locate things mentally
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Trello helps teams move work forward&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Collaborate, manage projects, and reach new productivity peaks. From high rises to the home office, the way your team works is unique—accomplish it all with Trello.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://trello.com/en" rel="noopener noreferrer"&gt;Miro&lt;/a&gt; - Illusions
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Where teams get work done&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The online collaborative whiteboard platform to&lt;br&gt;
bring teams together, anytime, anywhere.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://www.figma.com/" rel="noopener noreferrer"&gt;Figma&lt;/a&gt; - Advanced Illusions
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Minds meeting minds is how great ideas meet the world&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Figma brings your teams together to design better products from start to finish. &lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://carbon.now.sh/" rel="noopener noreferrer"&gt;Carbon&lt;/a&gt; - Elasticity
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Create and share beautiful images of your source code&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;You know all of those code screenshots you see on Twitter? Although the code's usually impressive, we thought there was room for improvement in the aesthetic department. So what are you waiting for? Go try it out and impress all your developer and designer friends. 🎨&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt; - Energy Manipulation
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The internet’s source of freely-usable images. Powered by creators everywhere.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Over 2 million free high-resolution images brought to you by the world’s most generous community of photographers. Unsplash is internet’s source of freely usable images.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dmf3wo7vfufh11pfuqy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9dmf3wo7vfufh11pfuqy.jpg" alt="mathias-p-r-reding-QdqK4doOzcQ-unsplash" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;a href="https://codepen.io/DevLorenzo" rel="noopener noreferrer"&gt;Codepen&lt;/a&gt; - Self-liquification
&lt;/h2&gt;

&lt;p&gt;👋 CodePen is a social development environment. At its heart, it allows you to write code in the browser, and see the results of it as you build. A useful and liberating online code editor for developers of any skill, and particularly empowering for people learning to code. We focus primarily on front-end languages like HTML, CSS, JavaScript, and preprocessing syntaxes that turn into those things.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://replit.com/~" rel="noopener noreferrer"&gt;Repl&lt;/a&gt; - Self-duplication
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Code, create, and learn together&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Use our free, collaborative, in-browser IDE to code in 50+ languages — without spending a second on setup.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://devhints.io/" rel="noopener noreferrer"&gt;Dev Hints&lt;/a&gt; - Intangibility
&lt;/h2&gt;

&lt;p&gt;Hey! I'm &lt;a class="mentioned-user" href="https://dev.to/rstacruz"&gt;@rstacruz&lt;/a&gt; and this is a modest collection of cheatsheets I've written.&lt;/p&gt;

&lt;p&gt;My note - Don't trust the tagline, the collection is awesome&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://devdocs.io/" rel="noopener noreferrer"&gt;Dev Docs&lt;/a&gt; - Absorbing someone else’s powers
&lt;/h2&gt;

&lt;p&gt;DevDocs combines multiple developer documentations in a clean and organized web UI with instant search, offline support, mobile version, dark theme, keyboard shortcuts, and more.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://jsonformatter.org/" rel="noopener noreferrer"&gt;JSON formatter&lt;/a&gt; - Density control
&lt;/h2&gt;

&lt;p&gt;JSON Formatter and JSON Validator help to format and validate your JSON text. It also provides a tree view that helps to navigate your formatted JSON data.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://caniuse.com/" rel="noopener noreferrer"&gt;Can I use&lt;/a&gt; - Telekinesis
&lt;/h2&gt;

&lt;p&gt;"Can I use" provides up-to-date browser support tables for support of front-end web technologies on desktop and mobile web browsers.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  &lt;a href="https://www.gradientmagic.com/" rel="noopener noreferrer"&gt;Gradient Magic&lt;/a&gt; - Magnetic forces
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;A Free Gallery of Fantastic and Unique CSS Gradients&lt;/em&gt; &lt;/p&gt;

&lt;p&gt;Gradient Magic is the largest gallery of CSS Gradients on the web, with new and exciting gradients added all the time.&lt;/p&gt;

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




&lt;h2&gt;
  
  
  Bonuses:
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Mobile Apps
&lt;/h3&gt;

&lt;p&gt;1 - Programming Hub&lt;br&gt;
2 - SoloLearn&lt;br&gt;
3 - Mimo&lt;br&gt;
4 - Programiz&lt;br&gt;
5 - Enki&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;div class="ltag__link__content"&gt;
    &lt;div class="missing"&gt;
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Top Google Chrome Extensions For Devs
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://chrome.google.com/webstore/detail/quod-ai-automatic-code-se/meglmkkpdmcimaaknnmllpbnnclnnipn" rel="noopener noreferrer"&gt;Quod Ai&lt;/a&gt; → Automatically show source code search suggestions and context from Github or JIRA issues for productive software development &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Shortcuts for google → Open google apps with a click&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3 - Video Speed Controller → Allow you to control the speed of a video with shortcuts and to overcome the 2x speed&lt;/p&gt;

&lt;p&gt;4 - Code Line Daily → every day a line of code in your browser (HTML, CSS, and Javascript)&lt;/p&gt;

&lt;p&gt;5 - Volume Manager → Manage the volume of a tab&lt;/p&gt;

&lt;p&gt;6 - VisBug → Open source web design debug tools built with JavaScript: "a FireBug for designers".&lt;/p&gt;

&lt;p&gt;7 - Better-OneTab → Allow you to manage and save your tabs&lt;/p&gt;

&lt;p&gt;8 - Grammarly for chrome → Correct my English 😀&lt;/p&gt;

&lt;p&gt;9 - Color Zilla → Pick up a color from any web page and copy the hex&lt;/p&gt;

&lt;p&gt;Or:&lt;/p&gt;

&lt;p&gt;9 - Quick color picker&lt;/p&gt;

&lt;p&gt;10 - What Font → Check the font of any web page.&lt;/p&gt;

&lt;p&gt;11 - Dimension → Check the dimensions (in pixels) of elements / their distance&lt;/p&gt;

&lt;p&gt;12 - Lorem Ipsum Generator → Generate lorem ipsum test quickly&lt;/p&gt;

&lt;p&gt;13 - CSS viewer → CSS property viewer&lt;/p&gt;

&lt;p&gt;14 - Window Resizer → Allow you to resize the web page (for responsive webpages)&lt;br&gt;
Web Developer → Adds a toolbar button with various web developer tools.&lt;/p&gt;

&lt;p&gt;15 - Vinium → The Hacker's Browser. Vimium provides keyboard shortcuts for navigation and control in the spirit of Vim.&lt;/p&gt;

&lt;p&gt;16 - You can also install an Ad Blocker like AdBlock or AdGuard&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/worldindev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/top-google-chrome-extensions-for-devs-2mkf" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Top Google Chrome Extensions For Devs 🔥🚀&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Mar 7 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#showdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;h3&gt;
  
  
  Terminal Commands
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Clear&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;clear&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;ctrl&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nf"&gt;l &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;windows&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;Linux&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="nx"&gt;Command&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nc"&gt;K &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;Mac&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nx"&gt;help&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;show&lt;/span&gt; &lt;span class="nx"&gt;all&lt;/span&gt; &lt;span class="nx"&gt;comands&lt;/span&gt;
&lt;span class="nx"&gt;help&lt;/span&gt; &lt;span class="nx"&gt;commandName&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;help&lt;/span&gt; &lt;span class="nx"&gt;about&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;specific&lt;/span&gt; &lt;span class="nx"&gt;command&lt;/span&gt;
&lt;span class="nx"&gt;ctrl&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;D&lt;/span&gt; &lt;span class="nx"&gt;or&lt;/span&gt; &lt;span class="nx"&gt;ctrl&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;C&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;exit&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


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


&lt;div class="ltag__link"&gt;
  &lt;a href="/worldindev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/the-most-useful-terminal-commands-how-to-work-with-directories-51l8" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Terminal Cheat Sheet 🔥 - The most useful terminal commands 🚀&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Mar 13 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#bash&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;h3&gt;
  
  
  Resource list to learn Math
&lt;/h3&gt;

&lt;p&gt;1 - Khan academy&lt;br&gt;
2 - The EDx Math courses&lt;br&gt;
3 - IXL Math Courses&lt;br&gt;
4 - I practice Math&lt;br&gt;
5 - School Yourself&lt;br&gt;
6 - Essentials of Linear Algebra - Youtube&lt;/p&gt;


&lt;div class="ltag__link"&gt;
  &lt;a href="/worldindev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/finally-how-to-understand-math-awesome-resource-list-4end" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;Finally - How to understand math - Awesome resource list 🚀&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Mar 30 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;





&lt;p&gt;Thanks for reading, hope you as fast as he is now:&lt;/p&gt;

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

&lt;p&gt;Remember the ❤️ if you appreciated or even better..&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;a href="https://worldindev.ck.page/" rel="noopener noreferrer"&gt;Subscribe to our Newsletter!&lt;/a&gt;
&lt;/h2&gt;

&lt;p&gt;The full PDF version of my articles!&lt;br&gt;
Curated Weekly digeeeeeest every Tuesday&lt;br&gt;
4 JS Cheat Sheets for free, received in no time&lt;br&gt;
Gifts, lots of 🎁. We send cheat sheets, coding advice, productivity tips, and many more!&lt;/p&gt;

&lt;p&gt;--&amp;gt; Already more than 1200 subscribers!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://camo.githubusercontent.com/6cdd2915fd088df0735bc29e8d3d4e72aba5dc75e3bcca4ea97c89d6d15f6299/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3461736839363233317a7a677031623236696a772e676966" class="article-body-image-wrapper"&gt;&lt;img src="https://camo.githubusercontent.com/6cdd2915fd088df0735bc29e8d3d4e72aba5dc75e3bcca4ea97c89d6d15f6299/68747470733a2f2f6465762d746f2d75706c6f6164732e73332e616d617a6f6e6177732e636f6d2f75706c6f6164732f61727469636c65732f3461736839363233317a7a677031623236696a772e676966" alt="separation bar" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>All About Switching Branch In Git 🚀</title>
      <dc:creator>Garvit Motwani</dc:creator>
      <pubDate>Sat, 08 May 2021 13:35:32 +0000</pubDate>
      <link>https://forem.com/worldindev/all-about-switching-branch-in-git-915</link>
      <guid>https://forem.com/worldindev/all-about-switching-branch-in-git-915</guid>
      <description>&lt;p&gt;Whether you're an open-source contributor, project manager, or even a normal github user for personal projects maybe, you need to know how to Switch Branches In Git. &lt;/p&gt;

&lt;p&gt;So let's get started!!&lt;/p&gt;

&lt;h2&gt;
  
  
  How to create a new branch
&lt;/h2&gt;

&lt;p&gt;Normally you use &lt;code&gt;git checkout&lt;/code&gt; with a &lt;code&gt;-b&lt;/code&gt; flag and pass a name for the branch.&lt;/p&gt;

&lt;p&gt;If you are on the branch called &lt;code&gt;master&lt;/code&gt;, this will be the case for you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;$ (master) git checkout -b new-branch
Switched to a new branch 'new-branch'
$ (new-branch)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  How to switch to an existing branch
&lt;/h2&gt;

&lt;p&gt;To switch to an existing branch, you can use &lt;code&gt;git checkout&lt;/code&gt; but without the &lt;code&gt;-b&lt;/code&gt; flag and pass the name of the branch you want to switch to, something like this:&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(new-branch)$ git checkout master
Switched to branch 'master'
(master)$
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Bonus:
&lt;/h2&gt;

&lt;p&gt;There is a shortcut to return the previous branch you were in, you can just use &lt;code&gt;-&lt;/code&gt; after &lt;code&gt;git checkout&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(master)$ git checkout -
Switched to branch 'new-branch'
$ (new-branch)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;strong&gt;PLEASE FOLLOW, LIKE, SHARE, AND COMMENT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/garvitmotwani"&gt;Dev&lt;/a&gt; and &lt;a href="https://twitter.com/GarvitMotwani"&gt;Twitter&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You should also check:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/garvitmotwani" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1xnkyVuI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--0F4scheH--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/370225/60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="garvitmotwani image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/8-javascript-tips-tricks-that-no-one-teaches-24g1" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;8 JavaScript Tips &amp;amp; Tricks That No One Teaches 🚀&lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani ・ Apr 6 ・ 3 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#html&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#es6&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;




&lt;div class="ltag__link"&gt;
  &lt;a href="/devlorenzo" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pCohWvfe--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--8B-BJEvg--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_66%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/571015/e3d4ff5f-e11d-4538-bb83-9d3ce3e9dfb9.gif" alt="devlorenzo image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/200-js-resources-to-master-programming-3aj6" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;250+ JS Resources to Master Programming 💥  Cheat Sheet&lt;/h2&gt;
      &lt;h3&gt;DevLorenzo ・ Apr 20 ・ 19 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/daniel1404" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YKr9I-E---/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://res.cloudinary.com/practicaldev/image/fetch/s--hBgYP-SM--/c_fill%2Cf_auto%2Cfl_progressive%2Ch_150%2Cq_auto%2Cw_150/https://dev-to-uploads.s3.amazonaws.com/uploads/user/profile_image/547275/e6dab600-34b7-49e0-a884-eb975de66405.png" alt="daniel1404 image"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/6-python-tips-tricks-that-no-one-teaches-4j73" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;6 Python Tips &amp;amp; Tricks that no One Teaches 🚀🐍&lt;/h2&gt;
      &lt;h3&gt;Daniel Diaz ・ Apr 26 ・ 5 min read&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Subscribe to our &lt;a href="https://worldindev.ck.page/"&gt;newsletter&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>webdev</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Web Dev Notes - Resource Compilation + Cheat Sheet</title>
      <dc:creator>Lorenzo</dc:creator>
      <pubDate>Tue, 04 May 2021 13:57:29 +0000</pubDate>
      <link>https://forem.com/worldindev/web-dev-notes-resource-compilation-cheat-sheet-2big</link>
      <guid>https://forem.com/worldindev/web-dev-notes-resource-compilation-cheat-sheet-2big</guid>
      <description>&lt;p&gt;&lt;code&gt;Hello World!&lt;/code&gt; Seems like we're in a streak to be the best articles of the week here at DEV, will this one be too at the top? Leave a like to know! I discovered online an incredible Roadmap / Web Development notes written by &lt;a href="https://github.com/bronsonavila" rel="noopener noreferrer"&gt;Bronson Avila&lt;/a&gt;, who in his great kindness allowed me to post the content here. Hope this will help you!&lt;/p&gt;




&lt;p&gt;&lt;a&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;--&amp;gt; Grab the downloadable PDF version &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;🔖 - Waaait, don't leave this page without bookmarking (save) it!!&lt;/p&gt;

&lt;p&gt;Table of Content: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Frontend

&lt;ol&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Javascript Basics&lt;/li&gt;
&lt;li&gt;DOM&lt;/li&gt;
&lt;li&gt;JS Advanced&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&amp;lt;-- Conversion to Markdown In Progress --&amp;gt; Available &lt;a href="https://worldindev.ck.page/" rel="noopener noreferrer"&gt;here&lt;/a&gt;  for now &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
Backend

&lt;ol&gt;
&lt;li&gt;Basics&lt;/li&gt;
&lt;li&gt;Command Line&lt;/li&gt;
&lt;li&gt;Node&lt;/li&gt;
&lt;li&gt;Express&lt;/li&gt;
&lt;li&gt;RESTful&lt;/li&gt;
&lt;li&gt;Databases&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Git&lt;/li&gt;
&lt;li&gt;Deployment&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;Remember the like ❤️&lt;/p&gt;

&lt;h2&gt;
  
  
  Frontend  &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;HTML&lt;/li&gt;
&lt;li&gt;CSS&lt;/li&gt;
&lt;li&gt;Bootstrap&lt;/li&gt;
&lt;li&gt;Javascript Basics&lt;/li&gt;
&lt;li&gt;DOM&lt;/li&gt;
&lt;li&gt;JS Advanced&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/HTML/Introduction_to_HTML" rel="noopener noreferrer"&gt;HTML&lt;/a&gt;  &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;Document (individual elements combined to form an entire HTML page)&lt;/p&gt;

&lt;p&gt;Doctype: &lt;code&gt;&amp;lt;!DOCTYPE html&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Required as the first line of an HTML document (historical artifact).&lt;/p&gt;

&lt;p&gt;Root Element: &lt;code&gt;&amp;lt;html&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Follows the "doctype" and wraps around all content on the entire page.&lt;/p&gt;

&lt;p&gt;Head Element: &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Container for things that do not appear as viewable content (e.g., keywords and descriptions that will appear in search results, CSS, character set declarations, etc.).&lt;/p&gt;

&lt;p&gt;Character Set: &lt;code&gt;&amp;lt;meta charset="UTF-8"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Allows document to use "utf-8" character set, which includes most characters from all known human languages (nests within head element).&lt;/p&gt;

&lt;p&gt;Title: &lt;code&gt;&amp;lt;title&amp;gt;&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;Sets the title that appears in browser tab (nests within head element).&lt;/p&gt;

&lt;p&gt;Also appears as the search result in Google.&lt;/p&gt;

&lt;p&gt;Body: &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Contains all of the content that will be shown to the viewer.&lt;/p&gt;

&lt;p&gt;Elements (content + opening/closing tags)&lt;/p&gt;

&lt;p&gt;Article: &lt;a href="https://dev.to/devlorenzo/html-tags-cheat-sheet-pip"&gt;The ultimate HTML Tags Cheat Sheet 🔥&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Block Elements form a visible block on a page (e.g., paragraphs, lists, navigation menus, footers, etc.):&lt;/p&gt;

&lt;p&gt;Paragraph: &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Divider: &lt;code&gt;&amp;lt;hr&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Headings: &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; through &lt;code&gt;&amp;lt;h6&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;NOTE: As a general rule, try to have only one &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; tag in your HTML document, and it should be the biggest text element on the page.&lt;/p&gt;

&lt;p&gt;Generic Container: &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Lists (each item within a type of list needs to be identified by the &lt;code&gt;"&amp;lt;li&amp;gt;"&lt;/code&gt; tag):&lt;/p&gt;

&lt;p&gt;Ordered Lists (lists that are numbered): &lt;code&gt;&amp;lt;ol&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Unordered Lists (lists composed of bullet points: &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Tables: &lt;code&gt;&amp;lt;table&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Table Row: &lt;code&gt;&amp;lt;tr&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Table Header (consists of one cell within a row): &lt;code&gt;&amp;lt;th&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Should be nested within &lt;code&gt;&amp;lt;thead&amp;gt;&lt;/code&gt; under main table (semantics).&lt;/p&gt;

&lt;p&gt;Table Data (consists of one cell within a row): &lt;code&gt;&amp;lt;td&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Should be nested within &lt;code&gt;&amp;lt;tbody&amp;gt;&lt;/code&gt; under main table (semantics).&lt;/p&gt;

&lt;p&gt;Borders can be added by entering &lt;code&gt;&amp;lt;table border="1"&amp;gt;&lt;/code&gt;, although this is discouraged, as CSS should be used for styling.&lt;/p&gt;

&lt;p&gt;Forms (interactive controls to submit information to a web server): &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Typically contain the "action" (the URL to send form data to) and "method" (the type of HTTP request, such as "GET" to receive information from the server and "POST" to add information to the serve) attributes, e.g.:\&lt;br&gt;
    &lt;code&gt;&amp;lt;form action="/my-form-submitting-page" method="POST"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Input (used to accept data from the user): &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The operation of &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; depends upon its type attribute.  For a complete list of attributes, view &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#Form_%3Cinput%3E_types" rel="noopener noreferrer"&gt;Form Input Types&lt;/a&gt;.  Examples:&lt;/p&gt;

&lt;p&gt;Text (can be used for user names): &lt;code&gt;type="text"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Password: &lt;code&gt;type="password"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Placeholder (temporary text in input fields; used with "text" and "password" attributes): &lt;code&gt;placeholder="insert-text-here"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Button: &lt;code&gt;type="button"&lt;/code&gt; &lt;code&gt;value="insert-text-here"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Simple Submit button: &lt;code&gt;type="submit"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Alternatively, if placed at the end of a form, use the following to create an even simpler submit button: &lt;code&gt;&amp;lt;button&amp;gt;insert-text-here&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Checkbox (square box for multiple choices): &lt;code&gt;type="checkbox"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To have the checkbox already marked upon loading, add the attribute "checked" to the input.&lt;/p&gt;

&lt;p&gt;Radio Button (circular icon for one choice): &lt;code&gt;type="radio"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;In order to make the user only able to select one choice, you must add the "name" attribute, which must be common among all choices.&lt;/p&gt;

&lt;p&gt;The "value" attribute is necessary for the query string to understand the meaning behind each choice; otherwise, it will simply state "name=on".&lt;/p&gt;

&lt;p&gt;Example:&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="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"cats"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Cats:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"pet-choice"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"cats"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"CATS"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Dogs:&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"pet-choice"&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"dogs"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"radio"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"DOGS"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Dropdown Menus: &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For every possible option to select, use an &lt;code&gt;&amp;lt;option&amp;gt;&lt;/code&gt; tag.&lt;/p&gt;

&lt;p&gt;In order for the query string to understand that an option has been selected from the dropdown menu, the "name" attribute must be included in the &lt;code&gt;&amp;lt;select&amp;gt;&lt;/code&gt; tag, e.g.:&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="nt"&gt;&amp;lt;select&lt;/span&gt; &lt;span class="na"&gt;name=&lt;/span&gt;&lt;span class="s"&gt;"color"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;`
    &lt;span class="nt"&gt;&amp;lt;option&amp;gt;&lt;/span&gt;White&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;\
    &lt;span class="nt"&gt;&amp;lt;option&amp;gt;&lt;/span&gt;Black&lt;span class="nt"&gt;&amp;lt;/option&amp;gt;&lt;/span&gt;\
&lt;span class="nt"&gt;&amp;lt;/select&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you want the query string to contain text other than "White" or "Black" in the example above, use the "value" attribute in the &lt;code&gt;&amp;lt;option&amp;gt;&lt;/code&gt; tag, e.g.:&lt;br&gt;
    &lt;code&gt;&amp;lt;option value="happy"&amp;gt;☺&amp;lt;/option&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Text Areas (multi-line plain-text editing control): &lt;code&gt;&amp;lt;textarea&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can specify how large the text area is by using the "rows" and "cols" attributes. &lt;/p&gt;

&lt;p&gt;In order for the query string to process the data in the text area, you must use the "name" attribute.&lt;/p&gt;

&lt;p&gt;Example: &lt;code&gt;&amp;lt;textarea name="paragraph" rows="10" cols="50"&amp;gt;&amp;lt;/textarea&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Labels (add captions for individual items in a form): &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A label can be used by placing the control element inside the &lt;code&gt;&amp;lt;label&amp;gt;&lt;/code&gt; element, or by using the "for" and "id" attributes:&lt;/p&gt;

&lt;p&gt;For example,&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="nt"&gt;&amp;lt;label&amp;gt;&lt;/span&gt;Username&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
    ...is identical to
&lt;span class="nt"&gt;&amp;lt;label&lt;/span&gt; &lt;span class="na"&gt;for=&lt;/span&gt;&lt;span class="s"&gt;"username"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Username&lt;span class="nt"&gt;&amp;lt;/label&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"username"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Validations ensure that users fill out forms in the correct format, e.g.:&lt;/p&gt;

&lt;p&gt;The Boolean attribute "required" makes a field mandatory:&lt;br&gt;
    &lt;code&gt;&amp;lt;label&amp;gt;Username&amp;lt;input type="text" required&amp;gt;&amp;lt;/label&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Only works if the browser (like Chrome) allows it.&lt;/p&gt;

&lt;p&gt;By changing type from "text" to "email", the browser will ensure that the field contains an @ symbol.&lt;/p&gt;

&lt;p&gt;Inline Elements are contained within block level elements and do not cause new lines to appear:&lt;/p&gt;

&lt;p&gt;Italics: &lt;code&gt;&amp;lt;em&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Bold: &lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Generic Container: &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;BUT NOTE: Empty Elements contain only a single tag:&lt;/p&gt;

&lt;p&gt;Image: &lt;code&gt;&amp;lt;img src="https://www.google.com/logo.png"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;NOTE: Image width can be modified like so...&lt;br&gt;
    &lt;code&gt;&amp;lt;img width="50" src="https://www.google.com/logo.png"&amp;gt;&lt;/code&gt;&lt;br&gt;
    ...but is discouraged, as styling should be done by CSS.&lt;/p&gt;

&lt;p&gt;Input: &lt;code&gt;&amp;lt;input type="text"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For a complete list of elements, view the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Element" rel="noopener noreferrer"&gt;MDN Element Reference&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;TIP: In Sublime, press "Ctrl+Shift+D" to replicate an entire line of an element.&lt;/p&gt;

&lt;p&gt;Attributes (extra info; does not appear in content; target of style info)&lt;/p&gt;

&lt;p&gt;Components:&lt;/p&gt;

&lt;p&gt;Space between it and the element name (or prior attribute),&lt;/p&gt;

&lt;p&gt;Attribute name followed by an equals sign, and&lt;/p&gt;

&lt;p&gt;Attribute value surrounded by quotation marks.&lt;/p&gt;

&lt;p&gt;Double or single quotes may be used, but must be done consistently.  You can nest a single quote within a double quote (and vice versa), but if you want to nest the same type of quote, you must use HTML Entities (e.g., " or ').&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;p&gt;Class: &lt;code&gt;&amp;lt;p class="editor-note"&amp;gt;content&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Can be paired with the "anchor" element: &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Hyperlink with Title:&lt;br&gt;
    &lt;code&gt;&amp;lt;a href="https://www.google.com/" title="Google"&amp;gt;content&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;BUT NOTE: Boolean Attributes can be written without a value, but technically always have only one value (generally the same as the attribute name:&lt;/p&gt;

&lt;p&gt;Disabled: &lt;code&gt;&amp;lt;input type="text" disabled="disabled"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Creates a text box in which typing is disabled.&lt;/p&gt;

&lt;p&gt;May also be written as:&lt;br&gt;
    &lt;code&gt;&amp;lt;input type="text" disabled&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For a complete list of attributes, view the &lt;a href="https://developer.mozilla.org/en-US/docs/Web/HTML/Attributes" rel="noopener noreferrer"&gt;MDN Attribute Reference&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Entity References (make special HTML syntax characters appear as normal text):&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="nt"&gt;&amp;lt;&lt;/span&gt;  &lt;span class="err"&gt;=&lt;/span&gt;  &lt;span class="err"&gt;&amp;amp;&lt;/span&gt;&lt;span class="na"&gt;lt&lt;/span&gt;&lt;span class="err"&gt;;&lt;/span&gt;

&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;  =  &lt;span class="ni"&gt;&amp;amp;gt;&lt;/span&gt;

"  =  &lt;span class="ni"&gt;&amp;amp;quot;&lt;/span&gt;

'  =  &lt;span class="ni"&gt;&amp;amp;apos;&lt;/span&gt;

&lt;span class="err"&gt;&amp;amp;&lt;/span&gt;  =  &lt;span class="ni"&gt;&amp;amp;amp;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;HTML Comments (write comments in the code that are invisible to the user by wrapping them in special markers):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;&amp;lt;!-- and --&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;TIP:  In Sublime, you can (1) select text, and (2) hold "Ctrl+/" to turn text into comment.&lt;/p&gt;

&lt;p&gt;⬆ Back to Top&lt;/p&gt;




&lt;h3&gt;
  
  
  CSS  &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;The General Rule&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;selector&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="py"&gt;property&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;value&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="py"&gt;anotherProperty&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;value&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;For example, make all &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt; tags purple with 56-pixel font:&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;h1&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="no"&gt;purple&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;56px&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;h4&gt;
  
  
  Three Basic Selectors:
&lt;/h4&gt;

&lt;p&gt;Element selectors select all instances of a given element.  For example, "div" is a CSS element selector that will modify the properties of all &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; HTML tags.&lt;/p&gt;

&lt;p&gt;The ID selector selects a single element with an octothorp ("#") ID (only one per page).  For example, the following HTML/CSS combination will result in the word "hello" appearing in yellow, while the word "goodbye" will remain as is:&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="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"special"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;hello&lt;span class="nt"&gt;&amp;lt;/p&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;p&amp;gt;&lt;/span&gt;goodbye&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nf"&gt;#special&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="no"&gt;yellow&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 Class selector selects all elements in a given class by functioning just like an ID selector; however, a class is instead prefaced with a period (".").  For example, the following items marked as "completed" on a "To Do List" will be crossed out with a line:&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="nt"&gt;&amp;lt;div&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"completed"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;TASK #1&lt;span class="nt"&gt;&amp;lt;/p&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;p&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"completed"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;TASK #2&lt;span class="nt"&gt;&amp;lt;/p&amp;gt;&lt;/span&gt;\
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;





&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.completed&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;text-decoration&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;line-through&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;An element can be modified by multiple class or ID tags by simply adding a space between the two tag names, e.g.:&lt;br&gt;
    &lt;code&gt;&amp;lt;p class="completed uncompleted"&amp;gt;Text&amp;lt;/p&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Five More Advanced Selectors:
&lt;/h4&gt;

&lt;p&gt;The Star (*) selector applies to every element on the page.&lt;/p&gt;

&lt;p&gt;The Descendant selector applies to selectors that have been "nested" under another.  For example, if you want to modify the color of only those &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tags that are nested within the &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt;tags of a &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; list, use the following:&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;ul&lt;/span&gt; &lt;span class="nt"&gt;li&lt;/span&gt; &lt;span class="nt"&gt;a&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="no"&gt;red&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;In addition to HTML tags, CSS selectors such as "ID" or "Class" may be used within a Descendant selector.&lt;/p&gt;

&lt;p&gt;HOWEVER: If, for example, you have a second-tier &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; nested within a first-tier &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; that is nested within &lt;code&gt;&amp;lt;div id="box"&amp;gt;&lt;/code&gt;, and you only want to select the first-tier &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; and not the second-tier, then you must use the "&amp;gt;" combinator to select only the DIRECT first-tier "child" &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; (rather than the second-tier "grandchild" &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt;) of &lt;code&gt;&amp;lt;div id="box"&amp;gt;&lt;/code&gt;:&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="nf"&gt;#box&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nt"&gt;ul&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;
    &lt;span class="nl"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The Adjacent (+) selector will select only the element that comes IMMEDIATELY after another element (a "sibling" element, rather than a "nested" element).  For example, to modify the font size of all &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; tags that follow an &lt;code&gt;&amp;lt;h4&amp;gt;&lt;/code&gt; tag (which are typed on the same "level" as the &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; tags, and not nested under them), use the following:&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;h4&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nt"&gt;ul&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;24px&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;If, in the above example, you want to select ALL &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; tags after any &lt;code&gt;&amp;lt;h4&amp;gt;&lt;/code&gt; tag, then use the more generalized sibling combinator of "~" instead of "+".&lt;/p&gt;

&lt;p&gt;The Attribute selector will allow the selection of any element based off of any attribute.  For example, to change the font family of all &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tags that link to Google, use the following:&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;a&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;href&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"https://www.google.com/"&lt;/span&gt;&lt;span class="o"&gt;]&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="nb"&gt;cursive&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;This selector an also be used to select all images of a particular source, or all inputs of a particular type, such as all checkboxes:&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;input&lt;/span&gt;&lt;span class="o"&gt;[&lt;/span&gt;&lt;span class="nt"&gt;type&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s1"&gt;"checkbox"&lt;/span&gt;&lt;span class="o"&gt;]&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="m"&gt;2px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;green&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;TIP:  See the complete list of &lt;a href="https://developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors" rel="noopener noreferrer"&gt;Attribute Selectors&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Nth-of-Type selector takes a specific number and selects the "-nth" instance of an element.  For example, to change the background color of every second &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tag in every list (literally meaning the second tag, not every other tag), use the following:&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;li&lt;/span&gt;&lt;span class="nd"&gt;:nth-of-type&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="err"&gt;2&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&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="n"&gt;rgba&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="m"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;175&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;225&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="m"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NOTE: To select every other tag, use the phrases (even) or (odd) instead of a specific number.&lt;/p&gt;

&lt;p&gt;For more advanced selectors, view &lt;a href="https://code.tutsplus.com/tutorials/the-30-css-selectors-you-must-memorize--net-16048" rel="noopener noreferrer"&gt;The 30 CSS Selectors You Must Memorize&lt;/a&gt;.&lt;/p&gt;

&lt;h4&gt;
  
  
  CSS Location:
&lt;/h4&gt;

&lt;p&gt;CSS should generally be saved to its own file, but can also be included in the HTML head by using the &lt;code&gt;&amp;lt;style&amp;gt;&lt;/code&gt; tag:&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="nt"&gt;&amp;lt;style &lt;/span&gt;&lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"text/css"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;li&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="no"&gt;red&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
 &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/style&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The preferred method is to use a &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; tag in the HTML head to refer to the separate file containing CSS:&lt;br&gt;
    &lt;code&gt;&amp;lt;link rel="stylesheet" type="text/css" href="directory/filename.css"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Specificity is the means by which browsers decide which CSS property values are the most relevant to an element and, therefore, will be applied (e.g., if the body is styled to have red text, but a paragraph within the body is styled to have green text, then the text will be green because the green text style is more relevant to the specific paragraph than the general body).&lt;/p&gt;

&lt;p&gt;The following list of selector types increases by specificity (in magnitudes of 10):&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Type selectors (e.g., li) and pseudo-element (e.g., :before)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Class selectors (e.g., .hello), attributes selectors (e.g., [type="text"]) and pseudo-classes (e.g., :hover)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;ID selectors (e.g., #hello)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This &lt;a href="https://specificity.keegan.st/" rel="noopener noreferrer"&gt;Specificity Calculator&lt;/a&gt; may be used to test CSS specificity rules.&lt;/p&gt;
&lt;h4&gt;
  
  
  The Box Model
&lt;/h4&gt;

&lt;p&gt;In a document, each element is represented as a rectangular box.  In CSS, each of these boxes is described using the standard "box model."  Each box has four edges: (1) Content Edge, (2) Padding Edge, (3) Border Edge, and (4) Margin Edge.  Padding is the space between the border and the element within the border, and the margin is the space between the border and everything outside of the border. &lt;/p&gt;

&lt;p&gt;The content edge can be controlled by setting the "width" and "height" properties in "px" or "%" (with percentage in relation to the parent element), which in turn pushes out the border edge as well, as there is direct contact between the content and border (if no padding has yet been set).&lt;/p&gt;

&lt;p&gt;NOTE: By using the "max-width" property in conjunction with "width", you can tell the browser to make an element's width a certain percentage, but then also cap that width to a maximum number of pixels, e.g.:\&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="nf"&gt;#container&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&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;66.66%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="err"&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;700px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Space can be added between the content edge and border edge (and between the border edge and the next element's edge) by using the "padding" and "margin" properties respectively (in "px" or "%").&lt;/p&gt;

&lt;p&gt;By default, padding and borders are set to go around all edges of an element, but can be limited by using more specific properties for top, right, bottom, and left---such as "padding-left" or "margin-top".&lt;/p&gt;

&lt;p&gt;Alternatively, rather than typing a line of CSS for all four sides, the following shorthand can be used (with the first value setting the top property, and the remainder moving in a clockwise fashion):&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;p&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;20px&lt;/span&gt; &lt;span class="m"&gt;40px&lt;/span&gt; &lt;span class="m"&gt;60px&lt;/span&gt; &lt;span class="m"&gt;80px&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;NOTE: By setting the "margin" property to "auto" on the left and right, an element will automatically be horizontally centered:&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;p&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;0&lt;/span&gt; &lt;span class="nb"&gt;auto&lt;/span&gt; &lt;span class="m"&gt;0&lt;/span&gt; &lt;span class="nb"&gt;auto&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 above syntax can also be shorted as (with the first value representing the vertical axis, and the second value representing the horizontal axis):&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;p&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;0&lt;/span&gt; &lt;span class="nb"&gt;auto&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;h4&gt;
  
  
  Colors
&lt;/h4&gt;

&lt;p&gt;Colors can be created through the Hexadecimal system by combining the octothorp (#) with a string of 6 hexadecimal "numbers" from 0-F, e.g.:&lt;br&gt;
    &lt;code&gt;color: #FF1493;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This system follows an RGB scheme in which the first two numbers modify the amount of "red," the second two modify "green," and the last two modify "blue."&lt;/p&gt;

&lt;p&gt;Alternatively, colors can be created through the RGB system: 3 channels consisting of red, green, and blue, with each ranging from 0-255, e.g.:&lt;br&gt;
    &lt;code&gt;color: rgb(0, 255, 0);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Colors can be made Transparent through the RGBA system.  Just like RGB but with an alpha (transparency) channel ranging from 0.0-1.0, e.g.:&lt;br&gt;
    &lt;code&gt;color: rgba(11, 99, 150, .6);&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Backgrounds
&lt;/h4&gt;

&lt;p&gt;Follows the same format as colors, e.g., &lt;code&gt;background: #FF6789;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The background property can also set a background image, e.g.:&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&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="sx"&gt;url(http://www.website.com/image.png)&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;To prevent the background from Repeating an image, add the following property:&lt;br&gt;
&lt;code&gt;background-repeat: no-repeat;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To allow the background image to Stretch out across the entire body, use:&lt;br&gt;
&lt;code&gt;background-size: cover;&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Borders
&lt;/h4&gt;

&lt;p&gt;Borders have three key properties: "width" (typically in pixels), "color" (as noted above), and "style" (generally solid, dotted, or dashed).  All three properties must be present in order for a border to take effect, e.g.:&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;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;
    &lt;span class="nl"&gt;border-width&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-style&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;border-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;purple&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 alternative shorthand syntax may also be used (in the specified order):&lt;br&gt;
    &lt;code&gt;border: 5px solid purple;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Article: &lt;a href="https://dev.to/devlorenzo/css-how-to-make-a-border-animation-part-2-46fm"&gt;CSS: How to make a cool border animation&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Fonts
&lt;/h4&gt;

&lt;p&gt;Font-Family specifies the font for an element:&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;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="n"&gt;Arial&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;While not always necessary, you may sometimes have to put quotation marks around the font name---particularly when the font name begins with a number.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://www.cssfontstack.com/" rel="noopener noreferrer"&gt;CSS Font Stack&lt;/a&gt; shows what percentages of operating systems have a given system font (useful for choosing a safe bet on system compatibility).&lt;/p&gt;

&lt;p&gt;However, rather than using those limited fonts, it is better to use &lt;a href="https://fonts.google.com/" rel="noopener noreferrer"&gt;Google Fonts&lt;/a&gt;, choose a font, and embed the font's stylesheet link in your HTML &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt; prior to the CSS link, e.g.:&lt;br&gt;
    &lt;code&gt;&amp;lt;link href="https://fonts.googleapis.com/css?family=Esteban" rel="stylesheet"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Font-Size specifies how big the font appears (typically in pixels or "px"):&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;h1&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&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;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;Another size unit is "em", which dynamically sets font size in relation to a parent element.  For example, if you want to make a section of a paragraph's text in &lt;span&gt; tags be twice the size of the rest of the text in the &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; tags, you would say:&lt;br&gt;
&lt;/span&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;span&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="err"&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;2em&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;&lt;span class="err"&gt;\&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;BUT NOTE:  What constitutes the "standard" 1em (i.e., the default font size on a page without CSS markup) varies from browser to browser, although the size is typically around 16 PIXELS.  To ensure uniformity among browsers, it is useful to set the body's font size at the outset.&lt;/p&gt;

&lt;p&gt;ALSO: Similar to "em" is "rem", which---rather than setting font size in relation to the parent element---sets the font size in relation to the "root" element on the page (i.e., the default font size discussed above).&lt;/p&gt;

&lt;p&gt;Font-Weight specifies how thick or thin the font appears.&lt;/p&gt;

&lt;p&gt;Typically involves absolute values of "normal" or "bold", or relative (to parent) values of "lighter" and "bolder", but can also be assigned a numeric value in increments of 100 generally from "100" to "800" depending on the font itself.&lt;/p&gt;

&lt;p&gt;Line-Height controls the height of a given line (similar to changing line spacing in Word to 1.5 or 2.0, which means that a larger font will result in larger spacing).&lt;/p&gt;

&lt;p&gt;Text-Align controls where an element's text is aligned on the page (typically "left", "right", and "center").&lt;/p&gt;

&lt;p&gt;Text-Decoration is used to give text effects such as "underline", "overline", or "line-through".&lt;/p&gt;
&lt;h4&gt;
  
  
  Float
&lt;/h4&gt;

&lt;p&gt;Normally, block level elements (such as &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;) are stacked directly underneath the preceding element on the page.  To change this, use the "float" property and specify a value of the direction in which the element should float ("left", "right", "none").  &lt;/p&gt;

&lt;p&gt;When an element is floated, it is taken out of the normal flow of the document (though still remaining part of it), and it is shifted to the left or right until it touches the edge of its containing box, or another floated element.&lt;/p&gt;

&lt;p&gt;When &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; tags are laid out in a consecutive sequence, HTML automatically places some small amount of white space between the images.  If you want to remove the white space, you can use "float" to remove that white space.&lt;/p&gt;

&lt;p&gt;Article: &lt;a href="https://dev.to/devlorenzo/css-how-to-make-a-website-responsive-19kg"&gt;CSS: How to make a website responsive&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;⬆ Back to Top&lt;/p&gt;


&lt;h3&gt;
  
  
  &lt;a href="https://getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt; &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;
&lt;h4&gt;
  
  
  About
&lt;/h4&gt;

&lt;p&gt;Bootstrap is the most popular HTML, CSS, and JS framework for developing responsive, mobile-first projects.&lt;/p&gt;

&lt;p&gt;To incorporate Bootstrap's CSS into your project, you can do either one of the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Download the bootstrap.css file, placing it into your project directory, and creating a &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; to the bootstrap.css file; or&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Paste the following &lt;code&gt;&amp;lt;link&amp;gt;&lt;/code&gt; to the bootstrap.css file, which is hosted online:\&lt;br&gt;
&lt;code&gt;&amp;lt;link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous"&amp;gt;&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;NOTE: The semantics in Bootstrap have been criticized as being sometimes meaningless, and another contender for performing these tasks is &lt;a href="https://semantic-ui.com/" rel="noopener noreferrer"&gt;Semantic UI&lt;/a&gt;.  However, Bootstrap is more popular and widely accessible through tutorials.&lt;/p&gt;
&lt;h4&gt;
  
  
  Important Pieces
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://getbootstrap.com/css/#buttons" rel="noopener noreferrer"&gt;Buttons&lt;/a&gt; require that they be identified first by a "btn" class followed by a second specific class.  &lt;/p&gt;

&lt;p&gt;There are seven specific classes:&lt;/p&gt;

&lt;p&gt;Default (standard white button): btn-default&lt;/p&gt;

&lt;p&gt;Primary (provides extra visual weight; set to be the primary action in a set of buttons): btn-primary&lt;/p&gt;

&lt;p&gt;Success (indicates successful or positive action): btn-success&lt;/p&gt;

&lt;p&gt;Info (contextual button for informational alerts): btn-info&lt;/p&gt;

&lt;p&gt;Warning (indicates caution should be taken): btn-warning&lt;/p&gt;

&lt;p&gt;Danger (indicates a potentially dangerous action): btn-danger&lt;/p&gt;

&lt;p&gt;Link (deemphasizes the button to look like a link while behaving like a button): btn-link&lt;/p&gt;

&lt;p&gt;Buttons classes can be added to the &lt;code&gt;&amp;lt;a&amp;gt;, &amp;lt;button&amp;gt;, or &amp;lt;input&amp;gt;&lt;/code&gt; elements, e.g.:&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="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-default"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Link&lt;span class="nt"&gt;&amp;lt;/a&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 btn-default"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Button&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-default"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Input"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;input&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"btn btn-default"&lt;/span&gt; &lt;span class="na"&gt;type=&lt;/span&gt;&lt;span class="s"&gt;"submit"&lt;/span&gt; &lt;span class="na"&gt;value=&lt;/span&gt;&lt;span class="s"&gt;"Submit"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Button sizes can be reduced or increased by adding a third size class.&lt;/p&gt;

&lt;p&gt;Large: btn-lg&lt;/p&gt;

&lt;p&gt;Small: btn-sm&lt;/p&gt;

&lt;p&gt;Extra Small: btn-xs&lt;/p&gt;

&lt;p&gt;To make a button appear "active," add the "active" class:&lt;br&gt;
    &lt;code&gt;&amp;lt;button class="btn btn-success btn-xs active"&amp;gt;Text&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To disable a button, add a "disabled" attribute and set its value to "disabled":&lt;br&gt;
    &lt;code&gt;&amp;lt;button class="btn btn-success btn-xs" disabled="disabled"&amp;gt;Text&amp;lt;/button&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getbootstrap.com/components/#jumbotron" rel="noopener noreferrer"&gt;Jumbotron&lt;/a&gt; (class="jumbotron") extends the entire viewport to enlarge and showcase key content within.&lt;/p&gt;

&lt;p&gt;By default, the Jumbotron will extend across the entire width of the screen.  To prevent this behavior, place the &lt;code&gt;&amp;lt;div class="jumbotron"&amp;gt;&lt;/code&gt; within a &lt;code&gt;&amp;lt;div class="container"&amp;gt;&lt;/code&gt;, as the "container" class in Bootstrap will add padding and margins to center the Jumbotron.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getbootstrap.com/css/#forms" rel="noopener noreferrer"&gt;Forms&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getbootstrap.com/css/#forms-example" rel="noopener noreferrer"&gt;Basic Form&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Applying the class="form-group" attribute to all &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; elements in the form optimizes the spacing between the elements (e.g., between the username and password field).&lt;/p&gt;

&lt;p&gt;Applying the class="form-control" attribute to an &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; element improves the style of the normal default appearance (adds rounded corners, padding, spacing, focus effects, etc.), but also makes changes to how the element behaves within the grid system.&lt;/p&gt;

&lt;p&gt;Applying the class="help-block" to a &lt;code&gt;&amp;lt;p&amp;gt;&lt;/code&gt; element modifies the text of a helpful hint to be more subtle and subdued in appearance.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://getbootstrap.com/css/#forms-inline" rel="noopener noreferrer"&gt;Inline Form&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A basic form will lay its contents by stacking them on top of each other.  However, by applying the class="form-inline" to your form (which doesn't necessarily have to be a &lt;code&gt;&amp;lt;form&amp;gt;&lt;/code&gt; element) will place its contents in a line from left to right.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://getbootstrap.com/components/#navbar" rel="noopener noreferrer"&gt;Navbar&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Navbars serve as navigation headers for an application or site.  Navbars must be placed within a &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; element, and, like buttons, require a general "navbar" class followed by a second specific class (typically "navbar-default", but may also be "navbar-inverse" for an inverted color scheme).&lt;/p&gt;

&lt;p&gt;A navbar may contain a "Brand" image (e.g., company name or logo) as the first object in the navbar.  This is constructed by creating a "navbar-header" and placing an anchored "navbar-brand" within the header (to add a link to the homepage, typically), and then an &lt;code&gt;&amp;lt;img&amp;gt;&lt;/code&gt; within the brand, if desired:&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="nt"&gt;&amp;lt;nav&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"navbar navbar-default"&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;"navbar-header"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
        &lt;span class="nt"&gt;&amp;lt;a&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"navbar-brand"&lt;/span&gt; &lt;span class="na"&gt;href=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"#"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/a&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;/nav&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The remaining content on the Left Side of the navbar should appear outside of the &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; containing the "navbar-header", and it should be placed in &lt;code&gt;&amp;lt;ul class="nav navbar-nav"&amp;gt;&lt;/code&gt;.  Each item within the navbar should be marked with &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tags (and those should contain an &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tag if a link is desired).&lt;/p&gt;

&lt;p&gt;NOTE: The &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tags will function normally even if contained in a &lt;code&gt;&amp;lt;div&amp;gt; rather than &amp;lt;ul&amp;gt;&lt;/code&gt;; however, the &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; should be used for semantics.&lt;/p&gt;

&lt;p&gt;To add additional content to the Right Side of the navbar, use &lt;code&gt;&amp;lt;ul class="nav navbar-nav navbar-right"&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To ensure that the content on the right side does not press too squarely on the right edge of the browser, everything within the &lt;code&gt;&amp;lt;nav&amp;gt;&lt;/code&gt; should be placed within a &lt;code&gt;&amp;lt;div class="container"&amp;gt;&lt;/code&gt; (fixed width) or &lt;code&gt;&amp;lt;div class="container-fluid"&amp;gt;&lt;/code&gt; (full width).&lt;/p&gt;

&lt;p&gt;To get the full benefit out of a navbar (such as dynamic dropdown menus), you must install the Bootstrap JavaScript file in your HTML &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt;.  Like "bootstrap.css", you can either use the "bootstrap.js" file downloaded from Bootstrap, or you can use the following link:&lt;br&gt;
    &lt;code&gt;&amp;lt;script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;NOTE: Bootstrap's JavaScript requires &lt;a href="http://code.jquery.com/" rel="noopener noreferrer"&gt;jQuery&lt;/a&gt; to work, and its &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; must be placed BEFORE Bootstrap's:&lt;br&gt;
    &lt;code&gt;&amp;lt;script  src="http://code.jquery.com/jquery-3.2.1.js" integrity="sha256-DZAnKJ/6XZ9si04Hgrsxu/8s717jcIzLy3oi35EouyE=" crossorigin="anonymous"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To have items Collapse when the browser hits mobile size, place everything that you want to collapse inside &lt;code&gt;&amp;lt;div class="collapse navbar-collapse"&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;To add the "hamburger" icon that provides a dropdown icon for the collapsed items, (1) change the above &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; to read &lt;code&gt;&amp;lt;div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"&amp;gt;&lt;/code&gt;, and (2) place the following &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; within the "navbar-header":&lt;br&gt;
    &lt;code&gt;&amp;lt;button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false"&amp;gt;&lt;/code&gt;&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="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sr-only"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Toggle navigation&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"icon-bar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"icon-bar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"icon-bar"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
 &lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The three "icon-bar" classes are responsible for making the three bars in the icon.&lt;/p&gt;

&lt;p&gt;The "data-target" attribute is responsible for showing/hiding the content when the icon is clicked.  The value of this attribute should be set to whatever &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; (by ID) you want to show/hide.&lt;/p&gt;

&lt;p&gt;To keep the navbar Fixed to Top, include the "navbar-fixed-top" class, and add a minimum of 50px  of padding to the top of the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; (as the navbar itself is 50px  high), although it may better to add a little more for extra space.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://getbootstrap.com/components/#glyphicons" rel="noopener noreferrer"&gt;Glyphicons&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To place icons, use the link above to find the class of icon you wish to use (e.g., an envelope icon), and insert it according to the following syntax:&lt;br&gt;
    &lt;code&gt;&amp;lt;span class="glyphicon glyphicon-envelope" aria-hidden="true"&amp;gt;&amp;lt;/span&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;The icon &lt;code&gt;&amp;lt;span&amp;gt;&lt;/code&gt; should contain no text or child elements.&lt;/p&gt;

&lt;p&gt;The aria-hidden="true" attribute is used to hide decorative icons on assistive technologies (e.g., Screen Readers).  If the icon is not decorative and is intended to convey meaning, then that meaning can be added through by using &lt;code&gt;&amp;lt;span class="sr-only"&amp;gt;&lt;/code&gt;, e.g.:&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="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"alert alert-danger"&lt;/span&gt; &lt;span class="na"&gt;role=&lt;/span&gt;&lt;span class="s"&gt;"alert"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"glyphicon glyphicon-exclamation-sign"&lt;/span&gt; &lt;span class="na"&gt;aria-hidden=&lt;/span&gt;&lt;span class="s"&gt;"true"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
    &lt;span class="nt"&gt;&amp;lt;span&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"sr-only"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Error: Enter a valid email address&lt;span class="nt"&gt;&amp;lt;/span&amp;gt;&lt;/span&gt;
&lt;span class="nt"&gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you're creating controls with no text (such as a &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt; that only contains an icon), you can add an "aria-label" attribute to the control and make its value be a description that will appear on screen readers.&lt;/p&gt;

&lt;p&gt;For additional icons, install &lt;a href="http://fontawesome.io/get-started/" rel="noopener noreferrer"&gt;Font Awesome&lt;/a&gt; by placing the entire directory into your project, and then inserting the following into your &lt;code&gt;&amp;lt;head&amp;gt;&lt;/code&gt;:&lt;br&gt;
    &lt;code&gt;&amp;lt;link rel="stylesheet" href="path/to/font-awesome/css/font-awesome.min.css"&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="http://getbootstrap.com/css/#grid" rel="noopener noreferrer"&gt;The Grid System&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Bootstrap includes a fluid grid system that appropriately scales up to 12 columns as the device or viewport size increases.  These 12 columns are contained within every instance of &lt;code&gt;&amp;lt;div class="row"&amp;gt;&lt;/code&gt;.  You can then place additional &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; elements within each row and divide them by the following syntax: &lt;code&gt;&amp;lt;div class="col-size-#"&amp;gt;&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;The "#" option determines how many columns (out of 12) the &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;will occupy.  In the following example, the first row will have 3 evenly spaced &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; groups that are each 4 columns wide, and the second row will have 2 &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; groups, with the first being 9 columns in width and the second being 3 columns:&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="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container&amp;gt;
    &amp;lt;div class="&lt;/span&gt;&lt;span class="na"&gt;row&lt;/span&gt;&lt;span class="err"&gt;"&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;"col-md-4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;First Symmetrical Group&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;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Second Symmetrical Group&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;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-4"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Third Symmetrical Group&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;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"row"&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;"col-md-9"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;First Asymmetrical Group&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;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-3"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Second Asymmetrical Group&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;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The "Size" option determines the width of the &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt;, which determines the "breaking point" at which the &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; elements in a single row will take up a full 12 columns and stack on top of each other, rather than appear side-by-side.&lt;/p&gt;

&lt;p&gt;Four sizes and breaking points:&lt;/p&gt;

&lt;p&gt;Extra Small ("col-xs-#") for mobile phones: Auto width.&lt;/p&gt;

&lt;p&gt;Small ("col-sm-#") for tablets: 750 pixels.&lt;/p&gt;

&lt;p&gt;Medium ("col-md-#") for smaller monitors: 970 pixels.&lt;/p&gt;

&lt;p&gt;Large ("col-lg-#") for larger monitors: 1170 pixels.&lt;/p&gt;

&lt;p&gt;Given the sizes above, if you were to have 4 &lt;code&gt;&amp;lt;div class="col-md-3"&amp;gt;&lt;/code&gt; elements, the 4 elements would appear side-by-side until the screen width dropped below 970 pixels, at which point all 4 would stack on top of each other.  If, however, you wanted tablet users (below 970 pixels) to see the first two elements appear side-by-side and the last two elements below, you would say: &lt;code&gt;&amp;lt;div class="col-md-3 col-sm-6"&amp;gt;&lt;/code&gt;.  &lt;/p&gt;

&lt;p&gt;This system also allows for Nesting additional "row" classes within other existing grid elements, e.g.:&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="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"container"&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;"row"&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;"col-md-3 col-sm-6"&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;"row"&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;"col-sm-6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;First half of Group "1"&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;class=&lt;/span&gt;&lt;span class="s"&gt;"col-sm-6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Second half of Group "1"&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;/div&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;"col-md-3 col-sm-6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Group "2"&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;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-3 col-sm-6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Group "3"&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;class=&lt;/span&gt;&lt;span class="s"&gt;"col-md-3 col-sm-6"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Group "4"&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;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notes for Image Galleries:&lt;/p&gt;

&lt;p&gt;Visit &lt;a href="https://unsplash.com/" rel="noopener noreferrer"&gt;Unsplash&lt;/a&gt; for free high-quality images.&lt;/p&gt;

&lt;p&gt;In order for images to be appropriately sized within its grid, a quick method is to nest the image within the "thumbnail" class, e.g.:&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="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"col-lg-4 col-md-6 col-sm-6"&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;"thumbnail"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;
       &lt;span class="nt"&gt;&amp;lt;img&lt;/span&gt; &lt;span class="na"&gt;src=&lt;/span&gt;&lt;span class="s"&gt;"files/01.jpg"&lt;/span&gt;&lt;span class="nt"&gt;&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NOTE:&lt;/p&gt;

&lt;p&gt;If you're looking for Pinterest-like presentation of thumbnails of varying heights and/or widths, you'll need to use a third-party plugin such as &lt;a href="http://masonry.desandro.com/" rel="noopener noreferrer"&gt;Masonry&lt;/a&gt;, &lt;a href="http://isotope.metafizzy.co/" rel="noopener noreferrer"&gt;Isotope&lt;/a&gt;, or &lt;a href="http://salvattore.com/" rel="noopener noreferrer"&gt;Salvattore&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you don't mind the images being of varying heights, but want to get rid of the white space bug, then see &lt;a href="https://www.udemy.com/the-web-developer-bootcamp/learn/v4/questions/1989586" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want to crop all of the images to the same size, then see an example of this &lt;a href="https://codepen.io/nax3t/pen/MJwpdb" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;⬆ Back to Top&lt;/p&gt;




&lt;h3&gt;
  
  
  JS Basics &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript" rel="noopener noreferrer"&gt;JavaScript&lt;/a&gt;  (Basic) &lt;/p&gt;

&lt;p&gt;
  Intro - For beginners
  &lt;h2&gt;
  
  
  What is JS (Javascript)
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;JavaScript is a scripting or programming language that allows you to implement complex features on web pages — every time a web page does more than just sit there and display static information for you to look at — displaying timely content updates, interactive maps, animated 2D/3D graphics, scrolling video jukeboxes, etc. — you can bet that JavaScript is probably involved. It is the third layer of the layer cake of standard web technologies. &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/First_steps/What_is_JavaScript" rel="noopener noreferrer"&gt;MDN&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuggvpcrg4eolng5deqkc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuggvpcrg4eolng5deqkc.png" alt="image" width="442" height="429"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  What it used for?
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;To put things simply, JavaScript is an object orient programming language designed to make web development easier and more attractive. In most cases, JavaScript is used to create responsive, interactive elements for web pages, enhancing the user experience. Things like menus, animations, video players, interactive maps, and even simple in-browser games can be created quickly and easily with JavaScript. JavaScript is one of the most popular programming languages in the world. &lt;a href="https://www.bitdegree.org/tutorials/what-is-javascript-used-for/#:~:text=To%20put%20things%20simply%2C%20JavaScript,pages%2C%20enhancing%20the%20user%20experience." rel="noopener noreferrer"&gt;BitDegree - What Is JavaScript Used For And Why You Should Learn It&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Hello World In Javascript:
&lt;/h2&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&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="err"&gt;—&lt;/span&gt; &lt;span class="nx"&gt;Output&lt;/span&gt; &lt;span class="nx"&gt;data&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;an&lt;/span&gt; &lt;span class="nx"&gt;alert&lt;/span&gt; &lt;span class="nx"&gt;box&lt;/span&gt; &lt;span class="k"&gt;in&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;browser&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;
&lt;span class="nf"&gt;confirm&lt;/span&gt;&lt;span class="p"&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="err"&gt;—&lt;/span&gt; &lt;span class="nx"&gt;Opens&lt;/span&gt; &lt;span class="nx"&gt;up&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;yes&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="nx"&gt;no&lt;/span&gt; &lt;span class="nx"&gt;dialog&lt;/span&gt; &lt;span class="nx"&gt;and&lt;/span&gt; &lt;span class="nx"&gt;returns&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="nx"&gt;depending&lt;/span&gt; &lt;span class="nx"&gt;on&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="nx"&gt;click&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello World&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;—&lt;/span&gt; &lt;span class="nx"&gt;Writes&lt;/span&gt; &lt;span class="nx"&gt;information&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;browser&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;good&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;debugging&lt;/span&gt; &lt;span class="nx"&gt;purposes&lt;/span&gt;
&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;write&lt;/span&gt;&lt;span class="p"&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="err"&gt;—&lt;/span&gt; &lt;span class="nx"&gt;Write&lt;/span&gt; &lt;span class="nx"&gt;directly&lt;/span&gt; &lt;span class="nx"&gt;to&lt;/span&gt; &lt;span class="nx"&gt;the&lt;/span&gt; &lt;span class="nx"&gt;HTML&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;
&lt;span class="nf"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Remember the like!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="err"&gt;—&lt;/span&gt; &lt;span class="nx"&gt;Creates&lt;/span&gt; &lt;span class="nx"&gt;a&lt;/span&gt; &lt;span class="nx"&gt;dialogue&lt;/span&gt; &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="nx"&gt;input&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Resources to learn it:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide" rel="noopener noreferrer"&gt;Mozilla’s JavaScript Guide&lt;/a&gt;&lt;br&gt;
JavaScript track on Codecademy: Interactive tutorials for beginners.&lt;br&gt;
JavaScript for Cats by Max Ogden&lt;br&gt;
Eloquent JavaScript by Marijn Haverbeke&lt;br&gt;
Wikibooks’ JavaScript book&lt;br&gt;
JavaScript Lectures by Douglas Crockford&lt;br&gt;
You Don't Know JS - Possibly the best book written on modern JavaScript, completely readable online for free, or can be bought to support the author.&lt;br&gt;
braziljs/js-the-right-way - An easy-to-read, quick reference for JS best practices, accepted coding standards, and links around the Web.&lt;br&gt;
JSbooks - Directory of free JavaScript ebooks.&lt;br&gt;
Superhero.js - A collection of resources about creating, testing and maintaining a large JavaScript code base.&lt;br&gt;
SJSJ - Simplified JavaScript Jargon is a community-driven attempt at explaining the loads of buzzwords making the current JavaScript ecosystem in a few simple words.&lt;br&gt;
How to Write an Open Source JavaScript Library - A comprehensive guide through a set of steps to publish a JavaScript open source library.&lt;br&gt;
JavaScript Tutorials - Learn Javascript online from a diverse range of user ranked online tutorials.&lt;br&gt;
Functional-Light JavaScript - Pragmatic, balanced FP in JavaScript.&lt;br&gt;
Clean Code JavaScript - Clean Code concepts adapted for JavaScript.&lt;br&gt;
&lt;a href="https://github.com/ShinobiWPS/awesome-javascript#worth-reading" rel="noopener noreferrer"&gt;List at GitHub - Awesome Javascript - By Alexandru Gherasim&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  At Reddit - &lt;a href="https://www.reddit.com/r/javascript/comments/6mlc9d/what_10_things_should_a_serious_javascript/" rel="noopener noreferrer"&gt;What 10 Things Should a Serious Javascript Developer Know Right Now?&lt;/a&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scope.&lt;/strong&gt; If you don't understand this intimately then you aren't that serious about this language. This is the number one point intentionally and I cannot stress it enough.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Architecture.&lt;/strong&gt; You don't have to be a master software architect, but if you cannot perform some basic planning and put pieces together without massive layers of tooling you are an imposter. Expecting frameworks and other tools to simply do it for you isn't very impressive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DOM.&lt;/strong&gt; It is very common to see developers hiding from the DOM by layers of abstractions and other stupid crap. querySelectors are great, but are also 2800x slower than the standard DOM methods. That isn't trivial. These methods are super simple, so there is no valid excuse for developers fumbling over this or hiding in fear. &lt;a href="http://prettydiff.com/guide/unrelated_dom.xhtml" rel="noopener noreferrer"&gt;http://prettydiff.com/guide/unrelated_dom.xhtml&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Node.js&lt;/strong&gt; If you are a serious developer should have a pretty solid grasp of how to walk the file system. You should understand how to conveniently read files as text or less conveniently read files as bit for bit binary buffers.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Timing and asynchronous operations.&lt;/strong&gt; Events, timers, network requests are all asynchronous and separate from each other and exist both in Node and in the browser. You have to be able to understand how to work with callbacks or promises.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Accessibility.&lt;/strong&gt; The interactions imposed by JavaScript can present accessibility barriers. A serious JavaScript developer is already familiar with WCAG 2.0 and knows how to work within its recommendations or when to push back on violating business requirements.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security.&lt;/strong&gt; You need to have at least a basic understanding of security violations, security controls, and privacy. You don't need to be a CISSP, but you need to be able to supply recommendations and avoid obvious failures. If you cannot get this right in the most basic sense you aren't a serious developer.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Data structures.&lt;/strong&gt; You need to understand how to organize data in a way that allows the fastest possible execution without compromising maintenance. This is something that is learned through academic study and repeated experience writing applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Presentation and semantics.&lt;/strong&gt; You really need to have a basic understanding how to properly organize the content your users will consume and how to present in a consumable way efficiently. This is something almost completely learned from experience only. You might think CSS and HTML are simple skills that can be picked up when needed, but you would be absolutely wrong.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Knowing when to avoid the bullshit.&lt;/strong&gt; Many developers lack the years of experience to be confident in their performance.... so some of these developers will try to fake it. Don't be an imposter, because everybody will see straight through it. Hoping mountains of abstractions, tooling, frameworks, compilers, and other bullshit will save you just bogs down your application and screws over your teammates. If you aren't confident then be honest about that and seek mentorship or get involved with open source software outside of work.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F727auzola6gykhln320v.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F727auzola6gykhln320v.png" alt="image" width="800" height="371"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.mindmeister.com/283065198/getting-started-with-javascript?fullscreen=1" rel="noopener noreferrer"&gt;Source&lt;/a&gt; &lt;/p&gt;



&lt;/p&gt;

&lt;p&gt;Articles: &lt;a href="https://dev.to/worldindev/400-javascript-interview-questions-with-answers-2fcj"&gt;400+ JavaScript Interview Questions 🎓 With Answers&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/worldindev/200-js-resources-to-master-programming-3aj6"&gt;250+ JS Resources to Master Programming 💥 Cheat Sheet&lt;/a&gt;&lt;a href="https://dev.to/worldindev/10-projects-to-become-a-javascript-master-giveaway-2o4k"&gt;Projects ideas to become a javascript master 🚀&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Writing a JavaScript File
&lt;/h4&gt;

&lt;p&gt;JavaScript must be saved to a file ending in the ".js" extension.&lt;/p&gt;

&lt;p&gt;To add the JS file to your website, you must use a &lt;code&gt;&amp;lt;script&amp;gt;&lt;/code&gt; tag in your HTML file: &lt;br&gt;
    &lt;code&gt;&amp;lt;script src="filename.js"&amp;gt;&amp;lt;/script&amp;gt;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;NOTE: Use double slashes "//" to make unexecuted Comments within your JS file (similar to comments that can be included in HTML and CSS).&lt;/p&gt;
&lt;h4&gt;
  
  
  The JavaScript Console
&lt;/h4&gt;

&lt;p&gt;Accessible on the "Console" tab in "Developer Tools" in Chrome (accessed by F12).&lt;/p&gt;

&lt;p&gt;Just as with using the Developer Tools for testing and understanding how your HTML/CSS work (rather than actually writing your HTML/CSS), the JS console serves the same function.&lt;/p&gt;

&lt;p&gt;TIP: Pressing the "up" arrow in the console will bring back previously lines of code, so you do not have to retype it.&lt;/p&gt;
&lt;h4&gt;
  
  
  Primitives
&lt;/h4&gt;

&lt;p&gt;There are 5 low-level, basic types of data used in JS:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Numbers&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Whole, fractional, or negative numbers are all treated the same way.&lt;/p&gt;

&lt;p&gt;In the console, the browser can perform mathematical processes in the same manner as a calculator by simply typing, e.g., "4 + 10" and pressing "Enter" to have the result returned to you.&lt;/p&gt;

&lt;p&gt;One function known as Modulo (a.k.a., the Remainder Operator) uses the "%" placed between two numbers (like a "+" for addition), then it will divide the second number into the first number as many times as it can as a whole number, and then gives you the remainder as a result, e.g.: &lt;br&gt;
    10 % 3 = 1 &lt;br&gt;
    20 % 5 = 0 &lt;br&gt;
    15 % 11 = 4&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Strings&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;All of the text within one pair of Quotation Marks constitutes one string.  This is also true of numbers that appear within quotes.&lt;/p&gt;

&lt;p&gt;You can use either double quotes ("), single quotes (') but the pair must match or an error will result. &lt;/p&gt;

&lt;p&gt;IMPORTANT:  If you want to have a string include Newlines (i.e., the character that causes a line break to occur when you press Enter), then you must use the Backtick.  Other types of strings will remain on one line unless you use special escape characters (described below).&lt;/p&gt;

&lt;p&gt;Backticks can also be used in conjunction with ${} to Embed Values within a string, e.g.: &lt;br&gt;
    &lt;code&gt;Half of 100 is ${100/2}.&lt;/code&gt; &lt;br&gt;
    ...translates to: &lt;br&gt;
    "Half of 100 is 50."&lt;/p&gt;

&lt;p&gt;BUT NOTE: You can have a single quote within a pair of double quotes (e.g., if you are typing a word has an apostrophe), and it will still be valid.&lt;/p&gt;
&lt;h6&gt;
  
  
  Concatenation:
&lt;/h6&gt;

&lt;p&gt;Strings can be added together formulaically to create a single string, e.g.: &lt;br&gt;
    'Charlie ' + 'Brown' = 'Charlie Brown'&lt;/p&gt;
&lt;h5&gt;
  
  
  Escape Characters:
&lt;/h5&gt;

&lt;p&gt;Escape characters all start with a backslash (" "), and they are used to "escape" out of the string to write special characters that would not otherwise be valid within the string.  For example, if you want the string to say, "She said "Goodbye!"" without using single quotes around "Goodbye!", then say: &lt;br&gt;
    'She said  "Goodbye! "'&lt;/p&gt;

&lt;p&gt;The following link includes a &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String" rel="noopener noreferrer"&gt;List of Special Escape Notations&lt;/a&gt;.&lt;/p&gt;
&lt;h5&gt;
  
  
  Length Property:
&lt;/h5&gt;

&lt;p&gt;Every string has a "length property," which refers to the number of characters (including spaces, numbers, etc.) within that string.  For example, by typing the following, the console will tell you that the string "hello" is 5 characters long: &lt;br&gt;
    'hello'.length;&lt;/p&gt;

&lt;p&gt;You can also access individual characters by using Brackets, and placing a number (beginning with zero) within the brackets that corresponds to the position in the string in which the character appears (i.e., its "Index").  For example, JS will access the first letter in the string "hello" and return "h" if you say: &lt;br&gt;
    'hello'[0];&lt;/p&gt;

&lt;p&gt;TIP: Rather than manually counting each character, you can determine the index number of the very last character by using ".length" and subtracting by 1.&lt;/p&gt;

&lt;p&gt;NOTE:  To determine if something is a number or a string, you can use: console.log(typeof var);&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Booleans&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Only two options: true or false&lt;/p&gt;

&lt;p&gt;TIP: To invert the value of a variable from true to false or vice versa, simply use the NOT ("!") operator, e.g.: &lt;br&gt;
    var x = true;  // x will return true &lt;br&gt;
    x = !x;  // x will return false &lt;br&gt;
    x = !x;  // x will return true&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Null &amp;amp; Undefined&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are actually values rather than a true category (no multiple types of "null" or "undefined").&lt;/p&gt;

&lt;p&gt;Undefined variables are those which are declared but not initialized, whereas null variables are "explicitly nothing."&lt;/p&gt;

&lt;p&gt;For example, if you run "var age;" without a value, then JavaScript is simply told to make some space for something called "age" but without storing anything there.  If you then ask the console to give you a return on "age", it will come back "undefined."  If you ask the console to return something that doesn't exist at all, like "color," then it will return an error.&lt;/p&gt;

&lt;p&gt;By contrast, if you are making a game and making a string for the name of the current player as "var currentPlayer = 'charlie';" and that player dies (game over), you would set "currentPlayer = null;" to make it clear that there is no longer any "current player."&lt;/p&gt;
&lt;h4&gt;
  
  
  Variables
&lt;/h4&gt;

&lt;p&gt;A variable is simply a named container with data stored within.  Variables are structured according to the following syntax:&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;yourVariableName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;yourValue&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;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rusty&lt;/span&gt;&lt;span class="dl"&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;secretNumber&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;73&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;isAdorable&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NOTE: The naming convention used in JS relies on a system of capitalization known as camelCase, in which the first word of the name starts with a lower-case letter, and subsequent words begin with an upper-case letter.&lt;/p&gt;

&lt;p&gt;The name "variable" means that the data stored within that container can vary.  For instance, you can begin by setting the following in the console: &lt;br&gt;
    &lt;code&gt;var name = 'Rusty';&lt;/code&gt;&lt;br&gt;
    However, if you later decide that you want to change the name, then you can simply state "name = 'Tater';" which will result in the console returning the value "Tater" when you simply type "name" into the console.&lt;/p&gt;

&lt;p&gt;Math can also be performed with the name of a variable that has a number for its value.  For example, if you set a variable with the name of "num" and set its value to 73, you can type "num + 7" to receive the result of 80.&lt;/p&gt;
&lt;h4&gt;
  
  
  Useful Built-In Methods
&lt;/h4&gt;
&lt;h5&gt;
  
  
  Alert
&lt;/h5&gt;

&lt;p&gt;Creates a pop-up message for the user when running the following: &lt;br&gt;
    alert('hello world');&lt;/p&gt;
&lt;h5&gt;
  
  
  Console.log
&lt;/h5&gt;

&lt;p&gt;"Prints" data to the JavaScript console (so only those viewing the console can see the text/data): &lt;br&gt;
    console.log('hello world');&lt;/p&gt;
&lt;h5&gt;
  
  
  Prompt
&lt;/h5&gt;

&lt;p&gt;Allows the browser to get input from a user via a pop-up message with a text field in which the user can input information: &lt;br&gt;
    prompt('What is your name?');&lt;/p&gt;

&lt;p&gt;The information obtained through Prompt can also be stored as a variable for later use.  For example, the browser may run the following operation: &lt;br&gt;
    var userName = prompt('What is your name?'); &lt;br&gt;
    Then after the user inputs his name, that name can be recalled by running "username".&lt;/p&gt;

&lt;p&gt;NOTE: When a number is entered into a prompt by the user, it is stored as a string (e.g., 7 becomes "7").  To recall the stored string as a number, use the following syntax: Number(storedString);&lt;/p&gt;

&lt;p&gt;If the prompt intends that the answer only be an answer and not contain any text, it would be most efficient to have the starting variable be something to the effect of:&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;numberAnswer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Enter a number.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt; 
    &lt;span class="nx"&gt;or&lt;/span&gt; 
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Enter a number.&lt;/span&gt;&lt;span class="dl"&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;numberAnswer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;ALSO NOTE: Alternatively, you may use the Unary Plus operator ("+") to convert a string to a number: +storedString;&lt;/p&gt;

&lt;p&gt;SEE ALSO: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseFloat" rel="noopener noreferrer"&gt;parseFloat()&lt;/a&gt;&lt;/p&gt;

&lt;h5&gt;
  
  
  Clear
&lt;/h5&gt;

&lt;p&gt;Run "clear()" to clear the console.&lt;/p&gt;

&lt;h4&gt;
  
  
  Boolean Logic
&lt;/h4&gt;

&lt;p&gt;Boolean logic relies upon Comparison Operators in determining whether a particular result should be labeled as "true" or "false".  For example, assuming the value of "x = 5", then the following operators would produce the following results:&lt;/p&gt;

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

&lt;p&gt;Double Equals performs Type Coercion, which takes the two numbers, strings, or variables and tries to turn them into a similar type to compare them. Triple Equals, by contrast, does not perform type coercion, so a pure number 5 will not be treated the same way as a string containing the number "5".  &lt;/p&gt;

&lt;p&gt;As a general rule, triple equals should always be preferred, as it is more specific than double equals.  For example, if you were to run "var y = null;" and then "y == undefined", the console would return a value of "true" because null and undefined are similar, even though the two are not technically true equivalents.&lt;/p&gt;

&lt;p&gt;Additional quirks in JS demonstrating the anomalies that arise when using double equals:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;    &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="c1"&gt;// true &lt;/span&gt;
    &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt; &lt;span class="c1"&gt;// true &lt;/span&gt;
    &lt;span class="kc"&gt;null&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;  &lt;span class="c1"&gt;// true &lt;/span&gt;
    &lt;span class="kc"&gt;NaN&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="kc"&gt;NaN&lt;/span&gt; &lt;span class="c1"&gt;// false ("NaN" stands for "not a number")&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Logical Operators
&lt;/h4&gt;

&lt;p&gt;Logical operators are used to "chain together" expressions of Boolean logic.  For example, where "x = 5", and "y = 9", you would receive the following results:&lt;/p&gt;

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

&lt;p&gt;AND requires both sides of the equation to be true to return a result of "true."  On the other hand, OR only requires one or the other to be true to return a result of "true."&lt;/p&gt;

&lt;p&gt;NOT negates the truth (or falsity) of whatever is contained in its parentheses.  In the example above, the parenthetical statement says that "5 = 9", which is false.  Adding the NOT operator is tantamount to saying, "It is NOT TRUE that '5 = 9' is true," which is ultimately a true statement, thereby returning a result of "true."&lt;/p&gt;

&lt;p&gt;The following values are treated as being "Falsy" in JS (whereas everything else is considered "Truthy"): &lt;br&gt;
    false (NOTE: This false is not within a string.  Any text within a string is "truthy.") &lt;br&gt;
    0 &lt;br&gt;
    "" &lt;br&gt;
    null &lt;br&gt;
    undefined &lt;br&gt;
    NaN&lt;/p&gt;
&lt;h4&gt;
  
  
  Conditionals
&lt;/h4&gt;

&lt;p&gt;Conditionals are the means by which you add "decisions" to your code.  For example, when you log in to a website, there is code that checks the password you type in with the password stored on the site's server (and you are logged in if they match, and given an error message if they do not match).&lt;/p&gt;
&lt;h4&gt;
  
  
  Three Key Conditionals:
&lt;/h4&gt;

&lt;p&gt;If&lt;/p&gt;

&lt;p&gt;"If you are younger than 18, you cannot enter the venue":&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="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sorry, you are not old enough to enter the venue.&lt;/span&gt;&lt;span class="dl"&gt;'&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;Else If always follows an "if" statement as a secondary condition, as it will only run if the preceding "if" statement is false.&lt;/p&gt;

&lt;p&gt;"If you are between 18 and 21, you can enter but cannot drink":&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="k"&gt;else&lt;/span&gt; &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;You can enter, but cannot drink.&lt;/span&gt;&lt;span class="dl"&gt;'&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;Else will only run as a last-ditch effort when all preceding "if" and any subsequent "else if" statements are false.&lt;/p&gt;

&lt;p&gt;"Otherwise, you can enter and drink":&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="k"&gt;else&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Come on in.  You can drink.&lt;/span&gt;&lt;span class="dl"&gt;'&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;h4&gt;
  
  
  Ternary Operator
&lt;/h4&gt;

&lt;p&gt;The ternary operator is a shorthand method of creating a simple "if/else" conditional by the following syntax: &lt;br&gt;
    &lt;code&gt;condition ? ifStatement : elseStatement&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example, to perform an age check, you could state: &lt;br&gt;
    &lt;code&gt;age &amp;gt;= 18 ? console.log('You can enter.') : console.log('You must leave.');&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Loops
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/while" rel="noopener noreferrer"&gt;While Loops&lt;/a&gt; repeat code while a condition is true.  They are very similar to if statements, except they repeat a given code block instead of just running it once:&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="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;someCondition&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="c1"&gt;// run some code &lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For example, to have the console print numbers 1-5, you would say:&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;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
    &lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="o"&gt;++&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;NOTE: Using "++" will add a value of 1, but you can add more value, for example, 4, by using "+= 4".  For subtracting, just use a "-" sign instead of a "+" sign.&lt;/p&gt;

&lt;p&gt;If you want the user to enter a certain phrase into a prompt, but do not need exact specificity (only that the user provide the phrase somewhere in the response to the prompt), then you can use the Index Of method.  This method returns the first index (starting at 0) at which a given element can be found in the array (in this case, the user's response), or -1 if it is not present.&lt;/p&gt;

&lt;p&gt;For example, if a prompt is set to loop until the user types "yes" (variable named "answer"), and the user instead types "hell yes",  then running answer.indexOf('yes') will return a result of 5, because the phrase "yes" begins at index 5 of the user's answer of "hell yes".  If the user typed "yes sir", then the result would be 0, because the phrase "yes" begins at index 0.  If the user fails to include the phrase "yes" anywhere in his response, then a result of -1 will be returned, due to the fact that the phrase "yes" appears nowhere in the user's answer.  Therefore, to make a prompt loop until the user types the word "yes" (and thereby returning a positive index to terminate the loop), the following expression may be used:&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;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Are we there yet?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;answer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;indexOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;yes&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&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;answer&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Are we there yet?&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nf"&gt;alert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Yay! We made it!&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;p&gt;SEE ALSO: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/do...while" rel="noopener noreferrer"&gt;Do...While Loops&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Infinite Loops occur when the terminating condition in a loop is never false.  For example, the code below will print 0 forever because "count" is never incremented:&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;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&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;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for" rel="noopener noreferrer"&gt;For Loops&lt;/a&gt; operate similarly to while loops, but with a different syntax.  Most significantly, the variable that is set to initialize the for loop is typically only meant to exist within the confines of that particular for loop:&lt;/p&gt;

&lt;p&gt;Syntax:&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="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;init&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;condition&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;step&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="c1"&gt;// run some code &lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;"Init" (for "initialize") declares a variable and sets it to some initial value at the start of the loop, "Condition" states when this loop should keep running (for as long as the condition returns "true"), and "Step" states what should be done at the end of every iteration.&lt;/p&gt;

&lt;p&gt;Example of how to print numbers 1-5 with a for loop:&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="k"&gt;for &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;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&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;This statement "initializes" by setting "i" as 1, and provides that "i" will be printed to the console and then increased by an increment of 1 for as long as "i" is less than 6.&lt;/p&gt;

&lt;p&gt;Example of how to print each character in the world "hello":&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;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&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;This statement initializes by setting "i" as 0, and provides that the corresponding index of "hello" (as defined by the number at which "i" is currently set) will be printed to the console and then increased by an increment of 1 for as long as the numerical value of "i" is less than the numerical length of the "str" variable (in this case, the word "hello").&lt;/p&gt;

&lt;p&gt;SEE ALSO: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in" rel="noopener noreferrer"&gt;For...In Loops&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Functions" rel="noopener noreferrer"&gt;Functions&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Functions allow you to wrap bits of code up (with a suggested limit of 20 lines) into reusable packages.  They function by first "declaring" a function, e.g.:&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="nf"&gt;doSomething&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;HELLO WORLD&lt;/span&gt;&lt;span class="dl"&gt;"&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...and then "calling" the function as many times you want, e.g.: 
doSomething(); 
doSomething(); 
doSomething(); 
doSomething();
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;NOTE: It is necessary to include the empty parentheses after "doSomething" to actually Execute its code; otherwise, the console will simply spit the code back out for you to see in its entirety (i.e., give you the value of "doSomething").&lt;/p&gt;

&lt;p&gt;Another Syntax:  As an alternative to a Function Declaration, you can also use a Function 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="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;doSomething&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="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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;BUT NOTE: If the value of doSomething is modified, the function is lost. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments" rel="noopener noreferrer"&gt;Arguments&lt;/a&gt; are how we can write functions that take inputs.  Rather than using empty parentheses, you insert the name of an argument within the parentheses following the function name.&lt;/p&gt;

&lt;p&gt;For example, in order to create a function that can dynamically return the square of any numerical input, you would state:&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="nf"&gt;square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&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;*&lt;/span&gt; &lt;span class="nx"&gt;num&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...and then "Call" square with whatever value you "pass in" (i.e., input), e.g.: 
square(10);  // prints 100 
square(4);  // prints 16 
square(3);  // prints 9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Functions can have as many arguments as needed and can generally be given any name.  Simply separate the arguments with commas.  For example, to calculate the area of a rectangle, you must multiply length and width:&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="nf"&gt;area&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="nx"&gt;width&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;width&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...and then call the function, e.g.: 
area(2, 4)  // prints 8
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;NOTE: If you want a function to have &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Default_parameters" rel="noopener noreferrer"&gt;Default Parameters&lt;/a&gt; in the event the user does not specify a value, use the following syntax:&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="nf"&gt;area&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;width&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;Other examples of useful functions include (1) being able to add or subtract from a player's score during a game (by inserting a positive or negative number as an argument); or (2) checking a user's login credentials by making their e-mail and password into two arguments, and then running an If statement to determine if they match correctly, or else return an error.&lt;/p&gt;

&lt;p&gt;NOTE: All functions have an &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments" rel="noopener noreferrer"&gt;Arguments Object&lt;/a&gt;, which is an Array-Like Object that can be used to access the arguments in a manner similar to accessing an array item.  For example, if you have the following 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="nf"&gt;logNumbers&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="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arguments&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="p"&gt;}&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...the console will print the following upon executing logNumbers(2, 4, 6): 
2 
4 
6
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;ALSO NOTE: The arguments object can be useful for constructing functions in which a varied number of arguments may be passed.  For example, if you want to create a function that will return the sum of any set of numbers that have been passed as arguments, you could say:&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="nf"&gt;addNumbers&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;sum&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;arguments&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="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;sum&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;arguments&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&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;sum&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;h4&gt;
  
  
  The Return Keyword
&lt;/h4&gt;

&lt;p&gt;Every function returns something, but if you don't tell it what to return, it just returns "undefined."  In previous examples, functions have been used to print to the console, which is always an undefined return and cannot be used for anything.  For example, in the "square()" function above, if you ran square(4), the console would print 16, but it would also return "undefined".  Additionally, if you ran... &lt;br&gt;
    '4 squared is: ' + square(4); &lt;br&gt;
    ...it would return: '4 squared is: undefined' rather than '4 squared is: 16'.  That is because the return keyword was not used in the original function.  Instead, you must state:&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="nf"&gt;square&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;num&lt;/span&gt;&lt;span class="p"&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;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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The use of the return keyword in this example also provides the additional benefit of allowing the returned result to be stored as a variable.  For example, if you were to next run var result = square(104), then you would receive the returned value of 10816 after calling "result".&lt;/p&gt;

&lt;p&gt;For another example of how the return keyword allows you to capture a returned value in a variable, consider this function which capitalizes the first character in a string:&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="nf"&gt;capitalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&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;This is a functioned named "capitalize" that takes an argument named "str", converts the first character (at index 0) of "str" to upper case, and then adds that first character to the beginning of the remaining letters in "str" beginning at the "slice" that starts at index 1 (the second character).  If you run the following:&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;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;paris&lt;/span&gt;&lt;span class="dl"&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;capital&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;capitalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;city&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...then you would receive an output of "Paris" upon calling "capital", because the capitalize() function performed its return on the argument "str" (in the form of the substituted variable of "city").
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;IMPORTANT: Once a return keyword is triggered, it will STOP THE EXECUTION OF A FUNCTION.  Therefore, if a function includes an if statement, such 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;function&lt;/span&gt; &lt;span class="nf"&gt;capitalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;typeof&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;number&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;That's not a string.&lt;/span&gt;&lt;span class="dl"&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;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...if the user inputs a number rather than a word to the "str" argument, he will receive a return of "That's not a string.", and there will be no further execution of the second return statement.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Higher Order Functions are functions into which another function can be "Passed" as an argument.  For example, JS includes a built-in function called setInterval().  Within the parentheses of this function, you first place the name of another function that you want setInterval() to run, and then follow that with the interval (in milliseconds) that the script should execute until terminated.  Thus, if you want to have another function (which has already been previously set) run every second, you would state: &lt;br&gt;
&lt;code&gt;setInterval(anotherFunction, 1000);&lt;/code&gt;&lt;br&gt;
    Upon executing this statement, setInterval() will run anotherFunction() every 1000 milliseconds.&lt;/p&gt;

&lt;p&gt;NOTE: When the example above is executed, it will return a number (e.g., 661) in the console.  To stop the function from running, simply run clearInterval(661).&lt;/p&gt;

&lt;p&gt;ALSO NOTE: If, in the above example, you want a function to run every second, but you don't want to name that function ahead of time, you can insert an Anonymous 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="nf"&gt;setInterval&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="p"&gt;{&lt;/span&gt; 
    &lt;span class="c1"&gt;// code that you want to run every second; &lt;/span&gt;
&lt;span class="p"&gt;},&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Scope
&lt;/h4&gt;

&lt;p&gt;Scope refers to the context in which JavaScript is being executed (i.e., which properties and variables are "visible" within a particular function, yet are excluded by or different in another function).  For example, if you declare the following 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="nf"&gt;getNumber&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;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...the console will print 40 if you call the function.  However, if you simply call "x", then the console will return an error saying "x" is undefined.  This is because the scope in which "x" exists in the function differs from the "Global" scope, where "x" does not exist.  Conversely, if you were to later define "x" as a variable with a value in the global scope, and then run the function, the function will still print 40 notwithstanding the value of "x" in the global scope.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;HOWEVER:  If you were to have set "var x = 40;" in the global scope, and then created the following:&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="nf"&gt;getNumber&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...the Console will still print 40.  This is because when a variable is defined outside of a function, you still have access to it inside of that function AS LONG AS the interior of the function does not redefine that variable.  In other words, a more-specific "child" scope is governed by values set in the "parent" scope unless otherwise stated.  The converse, however, is not true, and the parent scope will not be governed by anything set in the child scope.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;BUT NOTE:  If the variable was set FIRST in the parent scope, then directly modified in the function, e.g.:&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;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;40&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;getNumber&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;80&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...then simply calling "x" in the console will print a value of 80.  This is because the function is not declaring a "new" variable "x" within itself; rather, it recognized that there was already a variable "x" existing outside of itself and redefined that variable externally while incorporating the redefined value internally. HOWEVER, had the function stated "var  x = 80;", then the function would have created its own "x" as an internal variable, and calling "x" globally would print 40.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array" rel="noopener noreferrer"&gt;Arrays&lt;/a&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  Basics 
&lt;/h4&gt;

&lt;p&gt;Arrays are high-level data structures (ways of holding information using JS) containing lists of data.  For example, rather than making four "friend" 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;var&lt;/span&gt; &lt;span class="nx"&gt;friend1&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mac&lt;/span&gt;&lt;span class="dl"&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;friend2&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dennis&lt;/span&gt;&lt;span class="dl"&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;friend3&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Charlie&lt;/span&gt;&lt;span class="dl"&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;friend4&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dee&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...you could use an array by making a comma-separated list, like so: 
`var friends = ['Mac', 'Dennis', 'Charlie', 'Dee'];`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Arrays are indexed starting at 0 (just like characters in a string).  The index method is used to get data out of the array, e.g.:&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;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;friends&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;  &lt;span class="c1"&gt;// "Mac"&lt;/span&gt;
&lt;span class="nx"&gt;friends&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &amp;lt;3 &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;friends&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="c1"&gt;// "Dennis &amp;lt;3 Charlie"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrays are useful in that they can be updated by simply stating, for example: &lt;br&gt;
    &lt;code&gt;friends[0] = 'Frank';&lt;/code&gt;&lt;br&gt;
    ...and all lines of code that would have otherwise produced "Mac" now say "Frank".&lt;/p&gt;

&lt;p&gt;Arrays are also useful in that new data can be added to them without modifying the original line of "var friends ..."  Rather, you can simply assign a new value/string (or any other data, including "true," "null," or even other arrays) to the next available index, and it will be added to the array, e.g.: &lt;br&gt;
    &lt;code&gt;friends[4] = 'Cricket';&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;To initialize an array without yet adding data to the array, you can simply state: &lt;br&gt;
    &lt;code&gt;var friends = [ ];&lt;/code&gt;&lt;br&gt;
    ...or... &lt;br&gt;
    &lt;code&gt;var friends = new Array();&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Arrays also have a length property that can be called by using ".length", e.g.:&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;friends&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;Frank&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;Dennis&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;Charlie&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;Dee&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;Cricket&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="nx"&gt;friends&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;// returns 5 (because there are 5 friend values)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Arrays can be nested within arrays like so:&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;friendGroups&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&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;Friend 1&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;Friend 2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&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;Friend A&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;Friend B&lt;/span&gt;&lt;span class="dl"&gt;'&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;NOTE: When arrays are nested, you can call a specific index within a nested array like so : &lt;br&gt;
    &lt;code&gt;console.log(friendGroups[1][0]);  // "Friend A" (takes the second &lt;br&gt;
    // index of the first array, and the &lt;br&gt;
    // first index of the nested array)&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Built-In Array Methods
&lt;/h4&gt;

&lt;p&gt;For a complete list of Array Methods, refer to the "Methods" section in the MDN link to "Arrays" above.&lt;/p&gt;
&lt;h6&gt;
  
  
  Five Important Methods:
&lt;/h6&gt;

&lt;p&gt;&lt;strong&gt;Push/Pop&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use push() to add a value to the END of an array (rather than having to count or use "length" to figure out which index in the array you would have to manually add the value to), e.g.:&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;colors&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;red&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;orange&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;yellow&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// ['red', 'orange', 'yellow', 'green']&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you were to then state "colors.pop();", then "green" would be removed, because pop() removes the last item in an array.&lt;/p&gt;

&lt;p&gt;NOTE: When pop() is used, the console actually returns the removed variable.  Because a value is returned, that means it can be stored as a variable if so stated: &lt;br&gt;
    &lt;code&gt;var removedColor = colors.pop(); // stores "green"&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Unshift/Shift&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;unshift() and shift() operate in the same way as push() and pop(), except that they add/remove values to the BEGINNING of an array.&lt;/p&gt;

&lt;p&gt;NOTE: While counterintuitive, remember that unshift() is used to ADD, not to remove.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;indexOf&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;indexOf() takes an argument and tries to find that argument in a given array.  If it finds it, then it will return the FIRST index of where it's found in the array, e.g.:&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;friends&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;Frank&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;Dennis&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;Charlie&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;Dee&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;Cricket&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
&lt;span class="nx"&gt;friends&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;indexOf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dennis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// 1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;NOTE: Remember that indexOf() will only return the FIRST index, so if the same argument appears elsewhere in the array, that index will not be returned.&lt;/p&gt;

&lt;p&gt;ALSO: If an argument is NOT present, "-1" will be returned.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Slice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;slice() is used to copy different portions of an array, e.g.:&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;fruits&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;Banana&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;Orange&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;Lemon&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;Apple&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;Mango&lt;/span&gt;&lt;span class="dl"&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;citrus&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;fruits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;slice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&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="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;leads&lt;/span&gt; &lt;span class="nx"&gt;to&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;fruits&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;Banana&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;Orange&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;Lemon&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;Apple&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;Mango&lt;/span&gt;&lt;span class="dl"&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;citrus&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;Orange&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;Lemon&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;p&gt;NOTE: The first number in slice argument signifies the first index that will be copied ("Orange"), and the second number represents where the slice will end AND IS NON-INCLUSIVE ("Apple").  Thus, only "Orange" and "Lemon" are copied out.&lt;/p&gt;

&lt;p&gt;TIP: If you want to Duplicate an entire array, simply omit the numbers in the slice argument, and all data in the array will be copied over.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Splice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;splice() changes the contents of an array by removing and/or adding elements at any point in the index.&lt;/p&gt;

&lt;p&gt;To Remove an element, use this syntax:&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;fruits&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;Banana&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;Orange&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;Lemon&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;Apple&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;Mango&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
&lt;span class="nx"&gt;fruits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&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="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;leads&lt;/span&gt; &lt;span class="nx"&gt;to&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;fruits&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;Banana&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;Apple&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;Mango&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;p&gt;The splice syntax works by using the first number as the index number at which to start changing the array (in this case, index 1, which is "Orange").  The second number is the Delete Count, which can be 0 (to not delete the starting index) or any other positive number to indicate how many indices (beginning from your starting index) are to be deleted (in this case, delete two indices starting with index 1, which means deleting indices 1 and 2, i.e., "Orange" and "Lemon").&lt;/p&gt;

&lt;p&gt;To Add an element, use this syntax:&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;fruits&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;Banana&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;Apple&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;Mango&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
&lt;span class="nx"&gt;fruits&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;splice&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Orange&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;Lemon&lt;/span&gt;&lt;span class="dl"&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;leads&lt;/span&gt; &lt;span class="nx"&gt;to&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;fruits&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;Banana&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;Orange&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;Lemon&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;Apple&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;Mango&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;p&gt;In this case, splice() is told to: &lt;br&gt;
    (1) look at index 1 (starting as "Apple"), &lt;br&gt;
    (2) abstain from deleting the element at index 1, &lt;br&gt;
    (3) insert "Orange" as the new index 1, and &lt;br&gt;
    (4) insert "Lemon" after "Orange" (this addition process can be repeated indefinitely and will ensure that "Mango" remains as the last index).&lt;/p&gt;

&lt;p&gt;Array Iteration is the process in which a code will run through every element in an array, rather than just one element.  For example, message board comments are stored in an array, and they are only displayed when some code runs through that array and creates HTML content for each comment stored in the array.&lt;/p&gt;

&lt;p&gt;For Each Iteration (newer method):&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;colors&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;red&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;orange&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;yellow&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;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&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;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="c1"&gt;// "color" is a placeholder to represent a console.log(color);  // singular instance of any given element in });  // the collection; call it whatever you want&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Essentially, the "color" placeholder argument merely represents the value of every element in the array.  Thus, the code is calling the console.log() function "for each" element, and then passing in each element's value.&lt;/p&gt;

&lt;p&gt;Alternatively, you could set a function beforehand, and then run it through forEach():&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;colors&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;red&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;orange&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;yellow&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;green&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="nf"&gt;printColors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;printColors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;IMPORTANT:  forEach() executes a callback function once for each element in the array in ascending order.  The callback function is expected to have AT LEAST 1 (BUT UP TO 3) ARGUMENTS separated by commas).  The first argument represents the Element in the array.  The second argument represents the Index of said element.  The third argument represents the Array that forEach() was called on (which will be the same for every iteration of the loop).  Thus, if you want to print both the contents of a list along with its index number, you would state:&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;colors&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;red&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;orange&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;yellow&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;green&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="nf"&gt;printColors&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
   &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;: &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;printColors&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...which would yield: 
0: red 
1: orange 
2: yellow 
3: green 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Article: &lt;a href="https://dev.to/devlorenzo/js-how-to-handle-errors-fi6"&gt;Asynchronous JS: Working with try/catch and promises&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For Loop Iteration (older method):&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;colors&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;red&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;orange&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;yellow&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;green&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; 
    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;colors&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="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;colors&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&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 above code will start by printing index 0 of "colors" to the console, and repeat the process until reaching index 3.  This is possible because the length of "colors" is 4, and the final index value is 3.  As the final index in an array will always be one digit smaller than the length of the array, this loop will necessarily run until all array values are printed.&lt;/p&gt;

&lt;h4&gt;
  
  
  &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Objects/Basics" rel="noopener noreferrer"&gt;Objects&lt;/a&gt;
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Basics
&lt;/h5&gt;

&lt;p&gt;An object, like an array, is a collection of related data (of any type) and/or functionality.  Unlike an array, objects are meant to handle data that does not follow a logical and progressive order.  Objects have no built-in order.  Objects use the following Syntax (Key-Value Pairs where the "key" (name) is separated from the value by a colon, and all key-value pairs are separated by commas):&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;objectName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
&lt;span class="na"&gt;member1Name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;member1Value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;member2Name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;member2Value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="na"&gt;member3Name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;member3Value&lt;/span&gt;
&lt;span class="p"&gt;};&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Retrieving Data from an object is done by either Bracket or Dot Notation:&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;dog&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;Rusty&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;breed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mutt&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;age&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...bracket notation: 
`console.log(dog['name']);  // "Rusty"` 
...dot notation: 
`console.log(dog.name);  // "Rusty"`
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h5&gt;
  
  
  Usage Notes: 
&lt;/h5&gt;

&lt;p&gt;You CANNOT use dot notation if the property starts with a number:&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;someObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;blah&lt;/span&gt;  &lt;span class="c1"&gt;// invalid &lt;/span&gt;
&lt;span class="nx"&gt;someObject&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1blah&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;// valid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You CANNOT use dot notation if the property name has a space in it (not a good practice anyway):&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;someObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fav&lt;/span&gt; &lt;span class="nx"&gt;color&lt;/span&gt;  &lt;span class="c1"&gt;// invalid &lt;/span&gt;
&lt;span class="nx"&gt;someObject&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;fav color&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;// valid&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You CAN  look up things using a variable when using bracket notation:&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;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;name&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nx"&gt;someObject&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;  &lt;span class="c1"&gt;// doesn't look for "name" &lt;/span&gt;
&lt;span class="nx"&gt;someObject&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;  &lt;span class="c1"&gt;// evaluates str and looks for "name"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Updating Data in an object is done just like an array (access a property and reassign it):&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;objectName&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;propertyName&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newPropertyValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
    &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;or&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt; 
&lt;span class="nx"&gt;objectName&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;propertyName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;newPropertyValue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Creating Objects can be done in one of three ways:&lt;/p&gt;

&lt;p&gt;Make an empty object and then add to it:&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="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Travis&lt;/span&gt;&lt;span class="dl"&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;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&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;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;LA&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;p&gt;Make an object by executing a built-in function and then add to it:&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="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Object&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;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Travis&lt;/span&gt;&lt;span class="dl"&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;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;21&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;city&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;LA&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;p&gt;Make an object all at once:&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;Travis&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;21&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;city&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;LA&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;p&gt;Objects can be inserted within arrays, so that each item within an array is its own object.  This is typical when working with an online array of comments, posts, friends, etc.:&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;posts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; 
    &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Article 1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Author 1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;comments&lt;/span&gt;&lt;span class="p"&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;Awesome post.&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;Terrible post.&lt;/span&gt;&lt;span class="dl"&gt;'&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="na"&gt;title&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Article 2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Author 2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;comments&lt;/span&gt;&lt;span class="p"&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;I love this.&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;I hate this.&lt;/span&gt;&lt;span class="dl"&gt;'&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To access the title of the first post, you would state: &lt;br&gt;
    &lt;code&gt;posts[0].title&lt;/code&gt; &lt;/p&gt;

&lt;p&gt;To access the second comment of the second post, you would state: &lt;code&gt;posts[1].comments[1]&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Adding Methods to Objects
&lt;/h4&gt;

&lt;p&gt;A "method" (e.g., alert(), prompt(), indexOf(), etc.) is a function that is a property inside of an object. console.log() is an example of a method that has been added to an object.  "console" is a built-in object with "log()" as a built-in function.  By putting the two together (console.log), you are having JS look at the "console" object and run its "log()" function.  &lt;/p&gt;

&lt;p&gt;Adding methods to objects (rather than having them stand alone) is useful for grouping things together logically to avoid a "Namespace Collision."  For example, to have a function return "WOOF" when a "dog" object "speaks," but have it return "MEOW" when a "cat" object speaks," you would state:&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;pets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; 
    &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;dog&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;speak&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="p"&gt;{&lt;/span&gt; 
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;WOOF&lt;/span&gt;&lt;span class="dl"&gt;'&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="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cat&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; 
    &lt;span class="na"&gt;speak&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="p"&gt;{&lt;/span&gt; 
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;MEOW&lt;/span&gt;&lt;span class="dl"&gt;'&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="p"&gt;];&lt;/span&gt; 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;...so that pets[0].speak() will return "WOOF", and pets[1].speak() will return "MEOW".
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/this" rel="noopener noreferrer"&gt;This&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;The "this" keyword behaves differently depending on the context.  The following example illustrates how "this" behaves when used in methods that have been added to an object.&lt;/p&gt;

&lt;p&gt;Suppose you're making an app that has some comments, and you want to have some comment data stored in an object:&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;comments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&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;Good&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;
     &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bad&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;
     &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Okay&lt;/span&gt;&lt;span class="dl"&gt;'&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;Now suppose you want to make a method called "print()" and add it to "comments".  You could define a separate function, and then "print" the data by running "print(comments.data)":&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="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&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;elem&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;elem&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;&lt;span class="err"&gt;  &lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; 
&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;comments&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;data&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// "Good,Bad,Okay"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But if you want to add the print function to the comments object, you can use "this" to refer to the data that is contained in the same object (i.e., "this" object):&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;comments&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&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;Good&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Bad&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt;  
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Okay&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;],&lt;/span&gt;
&lt;span class="na"&gt;print&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="p"&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;data&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;forEach&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;elem&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;elem&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;&lt;span class="err"&gt;  &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 "this" keyword essentially allows you to use the values contained in comments.data inside of comments.print without the need for any additional argument.  Thus, by writing "this" inside of a method, it refers to the object that the method is defined in.&lt;/p&gt;

&lt;p&gt;⬆ Back to Top&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;a href="https://developer.mozilla.org/en-US/docs/Learn/JavaScript/Client-side_web_APIs/Manipulating_documents" rel="noopener noreferrer"&gt;DOM ("Document Object Model") Manipulation&lt;/a&gt; &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  Background
&lt;/h4&gt;

&lt;p&gt;The DOM is the interface between JS and HTML/CSS (for making content interactive).  When you load an HTML page, the browser turns every HTML tag into a JS object that we can select and manipulate, and all of these are stored inside of a "document" object.  To view the HTML elements converted into JS objects (i.e., the DOM), type the following into the console: console.dir(document);&lt;/p&gt;

&lt;p&gt;NOTE: When performing DOM manipulation, be sure that the JS files are loaded after all HTML is written (or else you will be trying to manipulate HTML that does not yet exist to the JS files, and it will not work.)&lt;/p&gt;

&lt;p&gt;Important DOM Selector Methods (the following five methods have been added into the "document" object):&lt;/p&gt;

&lt;p&gt;&lt;code&gt;document.getElementById()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Takes in an ID name and returns the one element that matches that name (because an ID can only be associated with one element in a page).  For example, if you have an HTML element with the ID of "highlight", you can return that element by stating: &lt;br&gt;
    &lt;code&gt;var tag = document.getElementById('highlight');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can then use console.dir(tag) to see all of the properties contained in the "highlight" object.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;document.getElementsByClassName()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Operates in the same way as &lt;code&gt;getElementById()&lt;/code&gt;, but applies to all elements sharing the same class.  If you want to return a list of all elements with the class "bolded", you would state: &lt;br&gt;
    &lt;code&gt;var tags = document.getElementsByClassName('bolded');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;You can then simply state "tags" to see all of the properties for all "bolded" objects, and you can use &lt;code&gt;console.log(tags[0])&lt;/code&gt; to access the first index of the Node List (not technically an array, but is array-like) containing the "bolded" objects.&lt;/p&gt;

&lt;p&gt;The node list is "array-like" in the sense that you can access individual indices, but you CANNOT apply &lt;code&gt;forEach()&lt;/code&gt; to it (because there is no forEach() function defined for these node lists; they are defined for arrays).&lt;/p&gt;

&lt;p&gt;BUT NOTE: You can use the "&lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from" rel="noopener noreferrer"&gt;Array.from()&lt;/a&gt;" method to convert node lists and HTML collections into arrays.&lt;/p&gt;

&lt;p&gt;NOTE: You can also access a specific index (e.g., the first index) more directly by simply stating: &lt;br&gt;
    var tags = document.getElementsByClassName('bolded')[0];&lt;/p&gt;

&lt;p&gt;&lt;code&gt;document.getElementsByTagName()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Operates in the same way as the two above, but it refers to a general HTML tag (such as &lt;code&gt;&amp;lt;li&amp;gt;, &amp;lt;ul&amp;gt;, &amp;lt;h1&amp;gt;, &amp;lt;head&amp;gt;, &amp;lt;body&amp;gt;&lt;/code&gt;) rather than a specific class/ID.  If you want to return a list of all elements with the &lt;/p&gt;
&lt;li&gt; tag, state: 
    &lt;code&gt;var tags = document.getElementsByTagName('li');&lt;/code&gt;

&lt;p&gt;&lt;code&gt;document.querySelector()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Operates in the same fashion as the methods above, but does so by using a CSS-Style Selector (i.e., "#" for ID, and "." for class). BUT, it differs significantly by only returning the FIRST MATCH.  For example, to if you want to return an HTML element with the ID of "highlight", you would state: &lt;br&gt;
    &lt;code&gt;var tag = document.querySelector('#highlight');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;If "highlight" were a class, you would use a period instead of an octothorp, but note that you will only return the first match.&lt;/p&gt;

&lt;p&gt;This works for any syntax that would be valid in CSS, e.g.: &lt;br&gt;
    &lt;code&gt;var tags = document.querySelector('li a.special');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;query.Selector can also take in basic HTML tag names like &lt;code&gt;&amp;lt;h1&amp;gt;&lt;/code&gt;: &lt;br&gt;
    &lt;code&gt;var tag = document.querySelector('h2');&lt;/code&gt;&lt;br&gt;
    ...but, again, only for the first match.&lt;/p&gt;

&lt;p&gt;If you want to select a Specific Type of element (e.g., a numerical input), you would use brackets and state: &lt;br&gt;
    &lt;code&gt;var tag = document.querySelector('input[type="number"]');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;document.querySelectorAll()&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Operates in the same manner as query.Selector, except it returns a node list of ALL elements (as objects) that match a given CSS-style selector.&lt;/p&gt;
&lt;h4&gt;
  
  
  Manipulating Style
&lt;/h4&gt;

&lt;p&gt;A DOM object's Style property is one way to manipulate an HTML element's style, e.g.:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// select your object: &lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;tag&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="nf"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;highlight&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="c1"&gt;// manipulate your object: &lt;/span&gt;
&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;blue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;border&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;10px solid red&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fontSize&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;70px&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;background&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;yellow&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; 
&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;marginTop&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;200px&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;p&gt;NOTE: This is not actually the best way to manipulate an object, as it is very repetitious (not "dry" code), but more significant is the "Separation of Concerns" (the principle that HTML, CSS, and JS should each be responsible for their own separate domain, and crossover between the three should be avoided -- HTML should be pure structure, CSS should be pure presentation, and JS should be pure behavior).  &lt;/p&gt;

&lt;p&gt;Rather than changing multiple style properties in JS, you should turn them on/off by using the CSS file.  For example, you can define a CSS class, select an element in JS, and add the class to its classList:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="o"&gt;//&lt;/span&gt; &lt;span class="nt"&gt;define&lt;/span&gt; &lt;span class="nt"&gt;a&lt;/span&gt; &lt;span class="nt"&gt;class&lt;/span&gt; &lt;span class="nt"&gt;in&lt;/span&gt; &lt;span class="nt"&gt;CSS&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; 
&lt;span class="nc"&gt;.toggleWarning&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="no"&gt;red&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="m"&gt;10px&lt;/span&gt; &lt;span class="nb"&gt;solid&lt;/span&gt; &lt;span class="no"&gt;red&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;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// add the .toggleWarning class to a select object in JS: &lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;tag&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="nf"&gt;getElementsByTagName&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;h1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="nx"&gt;tag&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;classList&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;toggleWarning&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;p&gt;If you so choose, you can later remove the class by stating: &lt;br&gt;
    &lt;code&gt;tag.classList.remove('toggleWarning');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;A similar useful method is toggle, which operates by (1) adding the specified class if it is not present in the class list, and (2) removing the specified class if it is present in the class list: &lt;br&gt;
    &lt;code&gt;tag.classList.toggle('toggleWarning');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;NOTE: A class list is technically NOT AN ARRAY.  This is why you must use add() and remove() rather than push() and pop().&lt;/p&gt;
&lt;h4&gt;
  
  
  Manipulating Text and Content
&lt;/h4&gt;

&lt;p&gt;The textContent property retrieves the text inside of an HTML element.  "Text" is defined as anything between the HTML tags but not including any tags contained within (it extracts only Plain Text).  The method can be used to alter the text by the following syntax: &lt;br&gt;
    &lt;code&gt;tag.textContent = 'blah blah blah';&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;NOTE: Because this method only works in plain text, no modifiers like &lt;code&gt;&amp;lt;strong&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;em&amp;gt;&lt;/code&gt; will be preserved.&lt;/p&gt;

&lt;p&gt;The innerHTML property is used to manipulate both HTML Text and Inner Elements.  &lt;/p&gt;

&lt;p&gt;IMPORTANT SYNTAX NOTE: When manipulating text and content (or style), it is not necessary to set a variable first.  Instead, you can simply add the textContent or innerHTML property after the selector method, e.g.: &lt;br&gt;
    &lt;code&gt;document.querySelector('h1').textContent = 'Heading 1';&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  Manipulating Attributes
&lt;/h4&gt;

&lt;p&gt;The attributes of an HTML element (e.g., href, src, or anything else following the name="text" syntax, such as id, class, etc.) can be modified by using getAttribute() and setAttribute() to read and write attributes.  For example, to return the URL for the following: &lt;br&gt;
   &lt;code&gt;&amp;lt;a href="https://www.google.com/"&amp;gt;Search&amp;lt;/a&amp;gt;&lt;/code&gt; &lt;br&gt;
    ...you would state: &lt;br&gt;
    &lt;code&gt;var link = document.querySelector('a');&lt;br&gt;
    link.getAttribute('href');&lt;/code&gt;&lt;br&gt;
    ...and to modify the link, you would state the attribute as the first argument in the method, and the new URL as the second argument: &lt;br&gt;
    &lt;code&gt;link.setAttribute('href', 'https://www.yahoo.com/');&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;NOTE: When manipulating Images, the "src" attribute may be ignored if the "srcset" attribute has also been set.  In such cases, srcset must be modified.&lt;/p&gt;
&lt;h4&gt;
  
  
  DOM Events
&lt;/h4&gt;

&lt;p&gt;The &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Events" rel="noopener noreferrer"&gt;MDN Event Reference&lt;/a&gt;  contains all of the different events that are recognized by the DOM application programming interface (API).  Some common events to be most familiar with are "click", "change", "mouseover", and "mouseout".&lt;/p&gt;

&lt;p&gt;Events trigger the running of code when a certain action has been taken, as opposed to automatically executing when the page loads (e.g., clicking a button, hovering over a link, pressing a key, etc.).  The event must be selected and then attached to a specific element by means of an Event Listener (e.g., "Listen for a click on this &lt;code&gt;&amp;lt;button&amp;gt;&lt;/code&gt;."  To add a listener, use the addEventListener method through this syntax: &lt;br&gt;
    &lt;code&gt;element.addEventListener('type', functionToCall);&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example, to have a message print to console when the first button in a document is clicked, you would state:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;button&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="nf"&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;button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// select element &lt;/span&gt;
&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&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="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;  &lt;span class="c1"&gt;// add event listener &lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The button has been clicked.&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// run code &lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;It is not necessary to use an anonymous function.  The same code could be executed as follows:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;button&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="nf"&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;button&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="nx"&gt;button&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&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;printConsole&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;printConsole&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;The button has been clicked.&lt;/span&gt;&lt;span class="dl"&gt;'&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;pre class="highlight plaintext"&gt;&lt;code&gt;However, unless there is a need to use a named function again somewhere else outside of the click listener, it is better to simply use the anonymous function.
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;NOTE: You can have more than one listener on a given element.  They will execute in the order that they were added.&lt;/p&gt;

&lt;p&gt;THIS NOTE: Inside of a listener, the "this" keyword refers to the item that was clicked on (or hovered upon, or which a keypress referred to, etc.).  So whatever element is attached to the addEventListener is the event to which "this" refers.  This is useful in situations where you want a large number of similar but individual (sibling) elements to run specific code only upon itself when activated.  For example, if you have a &lt;code&gt;&amp;lt;ul&amp;gt;&lt;/code&gt; with a dozen &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; tags within, and you want each individual &lt;code&gt;&amp;lt;li&amp;gt;&lt;/code&gt; to change its color when clicked, you can use a for loop and "this" as follows:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;lis&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="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;li&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; 
&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;lis&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="nx"&gt;i&lt;/span&gt;&lt;span class="o"&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;lis&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&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="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&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;style&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;color&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;pink&lt;/span&gt;&lt;span class="dl"&gt;'&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;/code&gt;&lt;/pre&gt;



&lt;p&gt;⬆ Back to Top&lt;/p&gt;




&lt;h3&gt;
  
  
  JS Advanced &lt;a&gt;&lt;/a&gt;
&lt;/h3&gt;

&lt;h4&gt;
  
  
  This
&lt;/h4&gt;

&lt;p&gt;"This" is a reserved keyword, which means it cannot be set as the value of any variable.  The value of "this" is determined upon execution (i.e., "Execution Context").&lt;br&gt;
There are Four Rules governing how the value of "this" is determined:&lt;/p&gt;
&lt;h5&gt;
  
  
  Global Context
&lt;/h5&gt;

&lt;p&gt;This rule applies when you see "this" applied outside of a declared object.  When you see the word "this" in the global context, its value refers to the Global Object, which is the Window in the browser environment.  Thus, if you were to console.log(this), you would return "window".&lt;br&gt;
In essence, every variable that you declare in the global context is in fact attached to the window object, which is what allows "this" to work in the global context without an object being declared.  For example, you can create the following variable:&lt;br&gt;
var person = 'Ellie';&lt;br&gt;
…which can then be accessed as:&lt;br&gt;
window.person&lt;br&gt;
…and which is also synonymous with:&lt;br&gt;
this.person&lt;br&gt;
NOTE: Even when you use "this" inside of a Function, its value is still the global object if no other object is declared within the function, e.g.:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;variablesInThis&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&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;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ellie&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// still the same as var person = 'Ellie'&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;HOWEVER: The above process is considered bad practice for setting global variables, as global variables should be declared at the top of your code (with the value either declared immediately or at a later time within a function).  If you want to prevent the accidental creation of global variables in a function, you can state "use strict" (in quotes) at the top of your JS file, which will return a TypeError indicating that "this" is Undefined upon execution.&lt;/p&gt;

&lt;h5&gt;
  
  
  Object/Implicit
&lt;/h5&gt;

&lt;p&gt;When "this" is found inside of a Declared Object, its value will always be the Closest Parent Object.  For example, given the following object…&lt;br&gt;
&lt;/p&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;firstName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ellie&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&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="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&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;firstName&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;/code&gt;&lt;/pre&gt;



&lt;p&gt;…executing "person.sayHi()" will return "Hi Ellie" because "this.firstName" is equivalent to stating "person.firstName" due to "person" being the closest parent object to "this".&lt;br&gt;
NOTE: Caution must be exercised with Nested Objects, as a reference to properties beyond the scope of the nested object may result in undefined values being returned when using "this" within the nested object.&lt;/p&gt;
&lt;h5&gt;
  
  
  Explicit
&lt;/h5&gt;

&lt;p&gt;In order to avoid problems associated with nested objects, you can set the context of "this" by using the Call, Apply, or Bind methods (which can only be used by Functions, and not by any other data type).&lt;br&gt;
Call uses the following syntax:&lt;br&gt;
        &lt;code&gt;function.call(thisArg, arg1, arg2, …);&lt;/code&gt;&lt;br&gt;
The first argument is whatever object you want the value of "this" to be.  The subsequent arguments are for any optional parameters to be used in the function in which you are changing the context of "this".&lt;br&gt;
NOTE: When the call method is used on a function, that function is immediately invoked.&lt;br&gt;
Consider the following example:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;firstPerson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Doe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;fullName&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="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&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;firstName&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &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;lastName&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;/code&gt;&lt;/pre&gt;





&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;secondPerson&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;firstName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Mary&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;lastName&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Jane&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;p&gt;If you want to return the full name of Mary Jane, there is no need to duplicate the fullName function from the first person (John Doe).  Rather, you need merely state…&lt;br&gt;
&lt;code&gt;firstPerson.fullName.call(secondPerson);&lt;/code&gt;&lt;br&gt;
…because using the "secondPerson" argument in call will result in the "this" keyword from the "firstPerson" object actually being applied to the "secondPerson" object instead (i.e., Mary Jane).&lt;br&gt;
Apply uses the following syntax:&lt;br&gt;
function.apply(thisArg, [argsArray]);&lt;br&gt;
Apply is almost identical to call except it only takes two arguments.  The first argument operates the same as call, while the second is an Array (or ARRAY-LIKE OBJECT) that will be passed to the function in which you are changing the value of "this".&lt;br&gt;
NOTE: When the apply method is used on a function, that function is immediately invoked.&lt;br&gt;
Consider the following example:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;firstP&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;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;addNumbers&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;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="nx"&gt;c&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;d&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
       &lt;span class="k"&gt;return&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="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; calculated &lt;/span&gt;&lt;span class="dl"&gt;'&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="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;b&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;c&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt;&lt;span class="nx"&gt;d&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;/code&gt;&lt;/pre&gt;





&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;secondP&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;Jane&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;p&gt;Stating "firstP.addNumbers(1, 2, 3, 4)" will return "John calculated 10".  You can do the same for Jane by either using call:&lt;br&gt;
firstP.addNumbers.call(secondP, 1, 2, 3, 4);&lt;br&gt;
…or by using apply:&lt;br&gt;
firstP.addNumbers.apply(second, [1, 2, 3, 4]);&lt;br&gt;
Bind uses the following syntax:&lt;br&gt;
function.bind(thisArg, arg1, arg2, …);&lt;br&gt;
Bind is almost identical to call except that instead of invoking the function immediately, bind returns a function definition.  This allows you to save a function with different values of "this" and invoke them at a later time (known as Partial Application), as you may not initially know all of the arguments that will be passed to a function.&lt;br&gt;&lt;br&gt;
In the example for apply above, you might know that you always want to add 1 and 2 for the second person, but not know what other numbers will need to be calculated.  You could first state:&lt;br&gt;
var sPCalc = firstP.addNumbers.bind(secondP, 1, 2);&lt;br&gt;
…and then include more numbers on execution:&lt;br&gt;
sPCalc(3, 4)    // returns "Jane calculated 10"&lt;br&gt;
Bind is also important when working with asynchronous code (e.g., setTimeout), as it allows you to set the context of "this" for a function to be called at a later point in time.  Consider the following:&lt;br&gt;
&lt;/p&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;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&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="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;setTimeout&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="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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&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="mi"&gt;1000&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;/code&gt;&lt;/pre&gt;



&lt;p&gt;Although you may expect "Hi John" to be displayed in the console after 1 second, this does not occur.  This is because setTimeout() does not run console.log() concurrently with the creation of the "person" variable; rather, it only executes after the timer expires.  As a result, setTimeout() is run in the Global Context as a Window Object.  Thus, "this" actually refers to window rather than "person", because window is the value of "this" upon execution.  You can fix this by stating:&lt;br&gt;
&lt;/p&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;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&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="p"&gt;{&lt;/span&gt;
        &lt;span class="nf"&gt;setTimeout&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="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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&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="nf"&gt;bind&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;this&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="mi"&gt;1000&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;/code&gt;&lt;/pre&gt;



&lt;p&gt;This may appear to be confusing, as you are using "this" to change the value of "this".  However, at the time "person" is CREATED, "this" does in fact refer to "person" because "person" (not window.setTimeout) is the nearest parent object to "bind(this)".  Here, "bind(this)" is equivalent to "bind(person)".&lt;br&gt;
Article: Asynchronous JS: Finally discover how to use SetTimeout and SetInterval&lt;/p&gt;
&lt;h5&gt;
  
  
  New
&lt;/h5&gt;

&lt;p&gt;The new operator is used together with a Constructor Function to create a new object.  Inside the constructor function definition, the keyword "this" refers to the object that is created.  When the new operator is used, an implicit return "this" is added to the constructor function.&lt;br&gt;
NOTE: A popular convention in JS is to capitalize the names of Constructors, which basically operate as model templates upon which new objects will be based.&lt;br&gt;
For example, you can create a constructor function for a person's name:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Person&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;first&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&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;firstName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;first&lt;/span&gt;&lt;span class="p"&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;lastName&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;last&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;p&gt;In this context, "this" would apply to window in the global context (as there is no object has been declared).  However, when paired with the new operator, "this" will instead refer to the newly created object that has been stored as a variable.  For example…&lt;br&gt;
&lt;code&gt;var john = new Person('John', 'Doe');&lt;/code&gt;&lt;br&gt;
…results in "this.firstName" being equal to "john.firstName" (as "john" is the new object) and "this.lastName" being equal to "john.lastName".&lt;/p&gt;
&lt;h3&gt;
  
  
  Object-Oriented Programming ("OOP")
&lt;/h3&gt;
&lt;h4&gt;
  
  
  About
&lt;/h4&gt;

&lt;p&gt;OOP is a programming model that uses blueprints to create objects.  Such blueprints are conventionally called Classes, and the created objects are called Instances.  The goal is to make classes modular so they can be reused and shared among all parts of an application.  JS does not have "built-in" classes in version ES5, but they can be implemented via constructor functions and objects.&lt;br&gt;
New Operator&lt;br&gt;
As noted in the "this" section above, the new operator is used together with a constructor function to create a new object.  The new operator works by:&lt;br&gt;
(1) creating an empty object;&lt;br&gt;
(2) setting the keyword "this" to be that empty object;&lt;br&gt;
(3) adding an implicit "return this" line to the end of the function; and&lt;br&gt;
(4) adding a property onto the empty object called "&lt;strong&gt;proto&lt;/strong&gt;" (a.k.a., "Dunder     Proto", which links the created object to the prototype property on the     constructor function.&lt;br&gt;
Multiple Constructors&lt;br&gt;
When working with multiple constructors, you can make use of "this" and call to optimize your code, e.g.:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Dog&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;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&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="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&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;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&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;bark&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="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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&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="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; just barked!&lt;/span&gt;&lt;span class="dl"&gt;'&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="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Cat&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;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;call&lt;/span&gt;&lt;span class="p"&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="nx"&gt;age&lt;/span&gt;&lt;span class="p"&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;meow&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="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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&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="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; just meowed!&lt;/span&gt;&lt;span class="dl"&gt;'&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;/code&gt;&lt;/pre&gt;



&lt;p&gt;NOTE: It may be confusing to see that "this" is used as the first argument in Dog.call() of Cat() to redefine "this" as used in Dog().  However, remember that the constructor will be used with the new operator.  This means that, when new is applied to Cat(), a NEW OBJECT will be created in which all "this" keywords in Cat() will refer to the new cat object (to which "this" will now apply because the cat is the closest parent object).  Thus, you can use "this" as the first argument in Dog.call() to redefine all "this" keywords in Dog() to refer to the newly created Cat() object. &lt;br&gt;
For further optimization, you can use "this" and apply together with a built-in JS object called "arguments", which is an array-like object corresponding to the arguments passed to a function.  As "arguments" is an array-like object, it can be used with apply as a shorthand, e.g.:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Cat&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;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;apply&lt;/span&gt;&lt;span class="p"&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;arguments&lt;/span&gt;&lt;span class="p"&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;meow&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="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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&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="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; just meowed!&lt;/span&gt;&lt;span class="dl"&gt;'&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;/code&gt;&lt;/pre&gt;



&lt;h4&gt;
  
  
  Prototypes
&lt;/h4&gt;

&lt;h5&gt;
  
  
  Basics
&lt;/h5&gt;

&lt;p&gt;Prototypes are the mechanism by which JS objects inherit features from one another.  Upon creation, all constructors possess a prototype property, which is an object that can have properties and methods attached to it.  The prototype property has two properties: (1) "constructor", which relates back to the definition of the constructor itself; and (2) "&lt;strong&gt;proto&lt;/strong&gt;", which allows properties or methods of the prototype to be accessed by any object created from the constructor.&lt;br&gt;
NOTE: The "&lt;strong&gt;proto&lt;/strong&gt;" property of a created object is identical to the prototype property of the constructor.  Thus, if you created an object from a Cat() constructor, the following would be true:&lt;br&gt;
catObject.&lt;strong&gt;proto&lt;/strong&gt; === Cat.prototype&lt;/p&gt;
&lt;h5&gt;
  
  
  Prototype Chain
&lt;/h5&gt;

&lt;p&gt;If you want to add a property or method to all objects that will be (or, more significantly, already have been) created by a constructor, you need only add that property/method to the prototype of the constructor.  For example, you have already created two cats (named "button" and "kiwi") from a Cat() constructor, and the only properties in the constructor are "name" and "age".  However, you now want to add a property called "isMammal", which is to be set as "true" for all cats.  You can state…&lt;br&gt;
Cat.prototype.isMammal = true;&lt;br&gt;
…which then results in the following statements returning true:&lt;br&gt;
button.isMammal;    // true&lt;br&gt;
kiwi.isMammal;      // true&lt;br&gt;
In the example above, if you were to access "button" to view its properties and methods, you would not immediately see "isMammal" as a property directly under "button" as you would with "name" and "age".  Rather, you would have to access the "&lt;strong&gt;proto&lt;/strong&gt;" property under "button" to see "isMammal".  Nevertheless, you are still able to access "button.isMammal" without saying "button.&lt;strong&gt;proto&lt;/strong&gt;.isMammal".  This is because JS follows the prototype chain (by following a line of "&lt;strong&gt;proto&lt;/strong&gt;" properties) to locate an object's properties or methods.&lt;br&gt;&lt;br&gt;
The chain here works as follows:&lt;br&gt;
(1)     If the requested property/method is not found directly in the   cat object, check the cat's "&lt;strong&gt;proto&lt;/strong&gt;".&lt;br&gt;
(2)     If the cat's "&lt;strong&gt;proto&lt;/strong&gt;" (which itself an object constructed by     JS's built-in Object() constructor) does not contain the        property/method, then refer to the Object() constructor's       "&lt;strong&gt;proto&lt;/strong&gt;" nested under the cat's "&lt;strong&gt;proto&lt;/strong&gt;".&lt;br&gt;
(3) If the Object() constructor's "&lt;strong&gt;proto&lt;/strong&gt;" does not contain the  property/method, then the result is "undefined" and the     inquiry goes no further, as the Object() constructor is the last    link in the chain.&lt;br&gt;
NOTE: This manner in which JS finds methods can be applied to all created objects.  For example, all arrays are created by JS's built-in Array() constructor, which contains a prototype object to which the "push" method (among others) is attached.  If you create an array named "cats" and you want to push a new cat into the array, you are able to say "cats.push('Stumpy')" rather than "cats.&lt;strong&gt;proto&lt;/strong&gt;.push('Stumpy')" due to prototype chaining.&lt;br&gt;
The prototype chain allows for further Code Optimization.  For example, if you have a Dog() constructor and you want to apply a bark() method to each dog created by Dog(), you would have a lot of repetitive code if you inserted the bark() method directly into the Dog() constructor, as the bark() method would be repeated in every created dog object with the exact same value each time.  But by taking advantage of the linking capabilities of the prototype chain, you could simply state:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;Dog&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;age&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&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="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&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;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;Dog&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;prototype&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;bark&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="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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&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="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; just barked!&lt;/span&gt;&lt;span class="dl"&gt;'&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;h5&gt;
  
  
  Closures
&lt;/h5&gt;

&lt;h6&gt;
  
  
  About
&lt;/h6&gt;

&lt;p&gt;A closure is a function that makes use of variables defined in outer functions that have previously returned. Consider the following example:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;outerFunc&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;outerData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;closures are &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;innerFunc&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;innerData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;awesome&lt;/span&gt;&lt;span class="dl"&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;outerData&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;innerData&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;/code&gt;&lt;/pre&gt;



&lt;p&gt;In this example above, if you were to simply call outerFunc(), you would only return the definition of the inner function, which would appear as:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;innerFunc&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;innerData&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;awesome&lt;/span&gt;&lt;span class="dl"&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;outerData&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;innerData&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;p&gt;However, as the result of outerFunc() is itself a function, this gives you the ability to call innerFunc() immediately upon calling outerFunc() by simply stating outerFunc()(), which returns, "closures are awesome".  Because innerFunc() makes use of the returned outerData variable defined in outerFunc(), that makes innerFunc() a closure.&lt;br&gt;
NOTE: If an inner function does not make use of any returned external variables, then it is merely a Nested Function.&lt;br&gt;
NOTE: When working with closures, you may either call the inner function right away (via "yourFunc()()"), or you can store the result of the outer function to be used by the inner function at a later time (similar to how bind() works), e.g.:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;outer&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="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;inner&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="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="p"&gt;}&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;storeOuter&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;outer&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="nf"&gt;storeOuter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// returns 15&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;h5&gt;
  
  
  Usage
&lt;/h5&gt;

&lt;p&gt;Closures are useful for creating Private Variables, which are variables that cannot be modified externally.&lt;br&gt;
Consider the following example:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;counter&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;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// Pre-Increment&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;p&gt;If you were to call counter()() repeatedly, you would return "1" each time, without the count ever going up.  This is because there is no "container" to keep track of the incremented count variable that exists only within the counter() function.  However, if you were to save counter() to a new variable in the global scope:&lt;br&gt;
var counter1 = counter();&lt;br&gt;
…then there is now a persistent variable (i.e., counter1) to "house" the increments to "count" within counter1's own counter() function.&lt;br&gt;
The primary benefit of using closures in this way is that it is no longer possible for the value of count within counter1 to be externally modified by any other function.  Thus, you are free to repeat this process with a new variable named "counter2", which, in turn, will have its own internal count variable insulated from any external modification.  Neither will have their count value increase except through their own internal operations.&lt;br&gt;
Consider the following for another more "practical" example:&lt;br&gt;
&lt;/p&gt;

&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;classroom&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;instructors&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;Adam&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;Ben&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;getInstructors&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="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;instructors&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="p"&gt;},&lt;/span&gt;
        &lt;span class="na"&gt;addInstructors&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;instructor&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;instructors&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;instructor&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;instructors&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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;Essentially, the classroom() function operates as a model template upon which new "course" objects can be created, and in which all courses will have Adam and Ben as instructors.  You can create two courses as variables (e.g., "course1" and "course2"), and you can add an instructor to course 1: &lt;code&gt;course1.addInstructor('Charlie'); // ['Adam', 'Ben', 'Charlie']&lt;/code&gt;&lt;br&gt;
…but this addition will not be reflected in course2:&lt;br&gt;
&lt;code&gt;course2.getInstructors();     // ['Adam', 'Ben']&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;⬆ Back to Top&lt;/p&gt;


&lt;h3&gt;
  
  
  Our Articles:
&lt;/h3&gt;

&lt;p&gt;
  HTML
  &lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F370225%2F60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="" width="320" height="320"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/4-non-popular-html-tags-giveaway-521p"&gt;
    
      &lt;h2&gt;4 Non-Popular HTML Tags 💻 &lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani for World In Dev ・ Apr 13 '21&lt;/h3&gt;
      
        &lt;span&gt;#html&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#beginners&lt;/span&gt;
        &lt;span&gt;#css&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  CSS
  &lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F370225%2F60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="" width="320" height="320"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/5-css-tricks-tips-that-you-should-know-giveaway-4d0d"&gt;
    
      &lt;h2&gt;5 CSS Tricks &amp;amp; Tips That You Should Know 🚀 + Giveaway &lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani for World In Dev ・ Apr 20 '21&lt;/h3&gt;
      
        &lt;span&gt;#css&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#html&lt;/span&gt;
        &lt;span&gt;#beginners&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  Javascript
  &lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/400-javascript-interview-questions-with-answers-2fcj"&gt;
    
      &lt;h2&gt;400+ JavaScript Interview Questions 🎓 With Answers 🌠&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Apr 27 '21&lt;/h3&gt;
      
        &lt;span&gt;#javascript&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#career&lt;/span&gt;
        &lt;span&gt;#productivity&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/200-js-resources-to-master-programming-3aj6"&gt;
    
      &lt;h2&gt;250+ JS Resources to Master Programming 💥 Cheat Sheet&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Apr 20 '21&lt;/h3&gt;
      
        &lt;span&gt;#javascript&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#productivity&lt;/span&gt;
        &lt;span&gt;#beginners&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/10-projects-to-become-a-javascript-master-giveaway-2o4k"&gt;
    
      &lt;h2&gt;Projects ideas to become a javascript master 🚀 Resource compilation 💥 + Giveaway⚡&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Apr 10 '21&lt;/h3&gt;
      
        &lt;span&gt;#javascript&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#programming&lt;/span&gt;
        &lt;span&gt;#beginners&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/400-javascript-interview-questions-with-answers-2fcj"&gt;
    
      &lt;h2&gt;400+ JavaScript Interview Questions 🎓 With Answers 🌠&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Apr 27 '21&lt;/h3&gt;
      
        &lt;span&gt;#javascript&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#career&lt;/span&gt;
        &lt;span&gt;#productivity&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F370225%2F60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="" width="320" height="320"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/8-javascript-tips-tricks-that-no-one-teaches-24g1"&gt;
    
      &lt;h2&gt;8 JavaScript Tips &amp;amp; Tricks That No One Teaches 🚀&lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani for World In Dev ・ Apr 6 '21&lt;/h3&gt;
      
        &lt;span&gt;#javascript&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#html&lt;/span&gt;
        &lt;span&gt;#es6&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F370225%2F60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="" width="320" height="320"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/es6-cheatsheet-all-you-need-1iaf"&gt;
    
      &lt;h2&gt;ES6 Cheatsheet 🔥 - All You Need 🚀&lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani for World In Dev ・ Apr 29 '21&lt;/h3&gt;
      
      
    
  &lt;/a&gt;

&lt;br&gt;

  &lt;a href="/garvitmotwani"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F370225%2F60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="garvitmotwani" width="320" height="320"&gt;
    
  &lt;/a&gt;
  &lt;a href="/garvitmotwani/5-array-methods-you-should-know-22ff"&gt;
    
      &lt;h2&gt;5 Array Methods You Should Know 🚀&lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani ・ Apr 27 '21&lt;/h3&gt;
      
        &lt;span&gt;#javascript&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#beginners&lt;/span&gt;
        &lt;span&gt;#html&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F370225%2F60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="" width="320" height="320"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/10-new-javascript-features-in-es2020-that-you-should-know-3ohf"&gt;
    
      &lt;h2&gt;10 New JavaScript Features in ES2020 That You Should Know&lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani for World In Dev ・ Mar 30 '21&lt;/h3&gt;
      
      
    
  &lt;/a&gt;

&lt;br&gt;


&lt;/p&gt;

&lt;p&gt;
  Others
  &lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/the-ultimate-compilation-of-cheat-sheets-100-268g"&gt;
    
      &lt;h2&gt;The ultimate Cheat sheets compilation (200+) - 🔥🎁 / Roadmap to dev 🚀&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Mar 2 '21&lt;/h3&gt;
      
        &lt;span&gt;#productivity&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#beginners&lt;/span&gt;
        &lt;span&gt;#javascript&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/finally-how-to-understand-math-awesome-resource-list-4end"&gt;
    
      &lt;h2&gt;Finally - How to understand math - Awesome resource list 🚀&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Mar 30 '21&lt;/h3&gt;
      
        &lt;span&gt;#productivity&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
        &lt;span&gt;#beginners&lt;/span&gt;
        &lt;span&gt;#javascript&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  &lt;a href="/worldindev"&gt;
    
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev" width="512" height="512"&gt;
      
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt="" width="200" height="200"&gt;
      
    
  &lt;/a&gt;
  &lt;a href="/worldindev/top-google-chrome-extensions-for-devs-2mkf"&gt;
    
      &lt;h2&gt;Top Google Chrome Extensions For Devs 🔥🚀&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Mar 7 '21&lt;/h3&gt;
      
        &lt;span&gt;#showdev&lt;/span&gt;
        &lt;span&gt;#productivity&lt;/span&gt;
        &lt;span&gt;#career&lt;/span&gt;
        &lt;span&gt;#webdev&lt;/span&gt;
      
    
  &lt;/a&gt;

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;

  
    
      &lt;h2&gt;Article No Longer Available&lt;/h2&gt;
    
  

&lt;br&gt;


&lt;/p&gt;




&lt;h2&gt;
  
  
  Backend &lt;a&gt;&lt;/a&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Basics &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Command Line &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Node JS &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;EJS &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;RESTful &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Databases &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Authentication &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Git &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Deployment &lt;a&gt;&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Conversion to Markdown In Progress --&amp;gt; Available before others &lt;a href="https://worldindev.ck.page/" rel="noopener noreferrer"&gt;here&lt;/a&gt; for now.&lt;/p&gt;

&lt;p&gt;⬆ Back to Top&lt;/p&gt;




&lt;p&gt;Hope you appreciate it, and Thanks for reading!&lt;/p&gt;

&lt;p&gt;PS: Big Thank Bronson for writing this ❤&lt;/p&gt;


&lt;/li&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>career</category>
      <category>productivity</category>
    </item>
    <item>
      <title>ES6 Cheatsheet 🔥 - All You Need 🚀</title>
      <dc:creator>Garvit Motwani</dc:creator>
      <pubDate>Thu, 29 Apr 2021 13:30:55 +0000</pubDate>
      <link>https://forem.com/worldindev/es6-cheatsheet-all-you-need-1iaf</link>
      <guid>https://forem.com/worldindev/es6-cheatsheet-all-you-need-1iaf</guid>
      <description>&lt;p&gt;Hey Devs, This is an all you need ES6 cheatsheet for beginners and seasoned developers!&lt;/p&gt;

&lt;p&gt;So let's get started!!&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  🎉 Giveaway
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
To enter you have to do the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;👍 React to this post&lt;/li&gt;
&lt;li&gt;✉️ Subscribe to our &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt;
&lt;/li&gt;
&lt;/ol&gt;



&lt;p&gt;--&amp;gt; Grab the downloadable PDF version &lt;a href="https://worldindev.ck.page" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Block scoping
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Let
&lt;/h4&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="nf"&gt;fn&lt;/span&gt; &lt;span class="p"&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;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&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;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="c1"&gt;// only inside this `if`&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;h4&gt;
  
  
  Const
&lt;/h4&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;a&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;let&lt;/code&gt; is the new &lt;code&gt;var&lt;/code&gt;. Constants work just like &lt;code&gt;let&lt;/code&gt;, but can't be reassigned.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#let--const" rel="noopener noreferrer"&gt;Let and const&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Backtick strings
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Interpolation
&lt;/h4&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;message&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`Hello &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="s2"&gt;`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Multiline strings
&lt;/h4&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;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`
hello
world
`&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Templates and multiline strings.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#template-strings" rel="noopener noreferrer"&gt;Template strings&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Binary and octal literals
&lt;/h3&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;bin&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mb"&gt;0b1010010&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;oct&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mo"&gt;0o755&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Check: &lt;a href="https://babeljs.io/learn-es2015/#binary-and-octal-literals" rel="noopener noreferrer"&gt;Binary and octal literals&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  New methods
&lt;/h3&gt;
&lt;h4&gt;
  
  
  New string methods
&lt;/h4&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;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;repeat&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ll&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="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;startsWith&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;he&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="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;padStart&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// "   hello"&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;padEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// "hello   " &lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;padEnd&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;!&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="c1"&gt;// hello!!!&lt;/span&gt;
&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;u1E9B&lt;/span&gt;&lt;span class="se"&gt;\&lt;/span&gt;&lt;span class="s2"&gt;u0323&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;normalize&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;NFC&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;p&gt;Check: &lt;a href="https://babeljs.io/learn-es2015/#math--number--string--object-apis" rel="noopener noreferrer"&gt;New methods&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Classes
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;Circle&lt;/span&gt; &lt;span class="kd"&gt;extends&lt;/span&gt; &lt;span class="nc"&gt;Shape&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Constructor
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="nf"&gt;constructor &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;radius&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&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;radius&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;radius&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Methods
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="nf"&gt;getArea &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&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;PI&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&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;radius&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Calling superclass methods
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="nf"&gt;expand &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;super&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expand&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt;&lt;span class="p"&gt;)&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;PI&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Static methods
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;  &lt;span class="kd"&gt;static&lt;/span&gt; &lt;span class="nf"&gt;createFromDiameter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;diameter&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Circle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;diameter&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;2&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Syntactic sugar for prototypes.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#classes" rel="noopener noreferrer"&gt;Classes&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Exponent operator
&lt;/h3&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;byte&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="o"&gt;**&lt;/span&gt; &lt;span class="mi"&gt;8&lt;/span&gt;
&lt;span class="c1"&gt;// Same as: Math.pow(2, 8)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Promises
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Making promises
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ok&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;result&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;error&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For asynchronous programming.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#promises" rel="noopener noreferrer"&gt;Promises&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Using promises
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;promise&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;result&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="err"&gt;···&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&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="err"&gt;···&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Using promises with finally
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;promise&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;then&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;result&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="err"&gt;···&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;catch&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;error&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="err"&gt;···&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;finally&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="c1"&gt;// logic independent of success/error })&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The handler is called when the promise is fulfilled or rejected.&lt;/p&gt;
&lt;h3&gt;
  
  
  Promise functions
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;all&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;···&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;race&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;···&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;reject&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;···&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="nb"&gt;Promise&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;resolve&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="err"&gt;···&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Async-await
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;run&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;user&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getUser&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;tweets&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;getTweets&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;tweets&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;&lt;code&gt;async&lt;/code&gt; functions are another way of using functions.&lt;/p&gt;

&lt;p&gt;Check: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function" rel="noopener noreferrer"&gt;async function&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Destructuring
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Destructuring assignment
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Arrays
&lt;/h4&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="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;first&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;last&lt;/span&gt;&lt;span class="p"&gt;]&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;Nikola&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;Tesla&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;h4&gt;
  
  
  Objects
&lt;/h4&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="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;author&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;title&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 Silkworm&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;author&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;R. Galbraith&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;p&gt;Supports for matching arrays and objects.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#destructuring" rel="noopener noreferrer"&gt;Destructuring&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Default values
&lt;/h3&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;scores&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;22&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;33&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;math&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;sci&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;arts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;scores&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Result:&lt;/span&gt;
&lt;span class="c1"&gt;// math === 22, sci === 33, arts === 50&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Default values can be assigned while destructuring arrays or objects.&lt;/p&gt;
&lt;h3&gt;
  
  
  Function arguments
&lt;/h3&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="nf"&gt;greet&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;greeting&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;!`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;greet&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;Larry&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;greeting&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Ahoy&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;p&gt;Destructuring of objects and arrays can also be done in function arguments.&lt;/p&gt;
&lt;h3&gt;
  
  
  Default values
&lt;/h3&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="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Rauno&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{})&lt;/span&gt;&lt;span class="err"&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="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`Hi &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="s2"&gt;!`&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;greet&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="c1"&gt;// Hi Rauno!&lt;/span&gt;
&lt;span class="nf"&gt;greet&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;Larry&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="c1"&gt;// Hi Larry!&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h3&gt;
  
  
  Reassigning keys
&lt;/h3&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="nf"&gt;printCoordinates&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`x: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;, y: &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;printCoordinates&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;left&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;25&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;top&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;90&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;This example assigns &lt;code&gt;x&lt;/code&gt; to the value of the &lt;code&gt;left&lt;/code&gt; key.&lt;/p&gt;
&lt;h3&gt;
  
  
  Loops
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;title&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;artist&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;songs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&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 assignment expressions work in loops, too.&lt;/p&gt;
&lt;h3&gt;
  
  
  Object destructuring
&lt;/h3&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="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;detail&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;song&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Extract some keys individually and remaining keys in the object using rest (...) operator&lt;/p&gt;
&lt;h2&gt;
  
  
  Spread
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Object spread
&lt;/h3&gt;
&lt;h4&gt;
  
  
  with Object spread
&lt;/h4&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;options&lt;/span&gt; &lt;span class="o"&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;defaults&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;visible&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  without Object spread
&lt;/h4&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;options&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;assign&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;{},&lt;/span&gt; &lt;span class="nx"&gt;defaults&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;visible&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The Object spread operator lets you build new objects from other objects.&lt;/p&gt;

&lt;p&gt;Check: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator" rel="noopener noreferrer"&gt;Object spread&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Array spread
&lt;/h3&gt;
&lt;h4&gt;
  
  
  with Array spread
&lt;/h4&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;users&lt;/span&gt; &lt;span class="o"&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;admins&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;editors&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rstacruz&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;h4&gt;
  
  
  without Array spread
&lt;/h4&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;users&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;admins&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;editors&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;rstacruz&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;p&gt;The spread operator lets you build new arrays in the same way.&lt;/p&gt;

&lt;p&gt;Check: &lt;a href="https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator" rel="noopener noreferrer"&gt;Spread operator&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Functions
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Function arguments
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Default arguments
&lt;/h4&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="nf"&gt;greet&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Jerry&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="s2"&gt;`Hello &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="s2"&gt;`&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Rest arguments
&lt;/h4&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="nf"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// y is an Array&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;y&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Spread
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;fn&lt;/span&gt;&lt;span class="p"&gt;(...[&lt;/span&gt;&lt;span class="mi"&gt;1&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="c1"&gt;// same as fn(1, 2, 3)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Default, rest, spread.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#default--rest--spread" rel="noopener noreferrer"&gt;Function arguments&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Fat arrows
&lt;/h3&gt;
&lt;h4&gt;
  
  
  Fat arrows
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;setTimeout&lt;/span&gt;&lt;span class="p"&gt;(()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;···&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  With arguments
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;readFile&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;text.txt&lt;/span&gt;&lt;span class="dl"&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;err&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;data&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="p"&gt;...&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h4&gt;
  
  
  Implicit return
&lt;/h4&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// No curly braces = implicit return&lt;/span&gt;
&lt;span class="c1"&gt;// Same as: numbers.map(function (n) { return n * 2 })&lt;/span&gt;
&lt;span class="nx"&gt;numbers&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;result&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;n&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;
&lt;span class="p"&gt;}))&lt;/span&gt;
&lt;span class="c1"&gt;// Implicitly returning objects requires parentheses around the object&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Like functions but with &lt;code&gt;this&lt;/code&gt; preserved.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#arrows-and-lexical-this" rel="noopener noreferrer"&gt;Fat arrows&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Objects
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Shorthand syntax
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;module&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exports&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;hello&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;bye&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Same as: module.exports = { hello: hello, bye: bye }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Check: &lt;a href="https://babeljs.io/learn-es2015/#enhanced-object-literals" rel="noopener noreferrer"&gt;Object literal enhancements&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Methods
&lt;/h3&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;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;start &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;running&lt;/span&gt;&lt;span class="dl"&gt;'&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="c1"&gt;// Same as: App = { start: function () {···} }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Check: &lt;a href="https://babeljs.io/learn-es2015/#enhanced-object-literals" rel="noopener noreferrer"&gt;Object literal enhancements&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Getters and setters
&lt;/h3&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;App&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;get&lt;/span&gt; &lt;span class="nf"&gt;closed &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&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;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;closed&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="kd"&gt;set&lt;/span&gt; &lt;span class="nf"&gt;closed &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&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;status&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;closed&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;open&lt;/span&gt;&lt;span class="dl"&gt;'&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;Check: &lt;a href="https://babeljs.io/learn-es2015/#enhanced-object-literals" rel="noopener noreferrer"&gt;Object literal enhancements&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Computed property names
&lt;/h3&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;event&lt;/span&gt; &lt;span class="o"&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="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;handlers&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;`on&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// Same as: handlers = { 'onclick': true }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Check: &lt;a href="https://babeljs.io/learn-es2015/#enhanced-object-literals" rel="noopener noreferrer"&gt;Object literal enhancements&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Extract values
&lt;/h3&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;fatherJS&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;57&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="s2"&gt;Brendan Eich&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;values&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fatherJS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// [57, "Brendan Eich"]&lt;/span&gt;
&lt;span class="nb"&gt;Object&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;entries&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;fatherJS&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;// [["age", 57], ["name", "Brendan Eich"]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;h2&gt;
  
  
  Modules
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Imports
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;helpers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="c1"&gt;// aka: require('···')&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;Express&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;express&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="c1"&gt;// aka: const Express = require('···').default || require('···')&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;indent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;helpers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="c1"&gt;// aka: const indent = require('···').indent&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;Helpers&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;helpers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="c1"&gt;// aka: const Helpers = require('···')&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;indentSpaces&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;indent&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;helpers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="c1"&gt;// aka: const indent = require('···').indentSpaces&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;import&lt;/code&gt; is the new &lt;code&gt;require()&lt;/code&gt;.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#modules" rel="noopener noreferrer"&gt;Module imports&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  Exports
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="nf"&gt;function &lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;···&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// aka: module.exports.default = ···&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;mymethod&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="err"&gt;···&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="c1"&gt;// aka: module.exports.mymethod = ···&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;pi&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;3.14159&lt;/span&gt;
&lt;span class="c1"&gt;// aka: module.exports.pi = ···&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;&lt;code&gt;export&lt;/code&gt; is the new &lt;code&gt;module.exports&lt;/code&gt;.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#modules" rel="noopener noreferrer"&gt;Module exports&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Generators
&lt;/h2&gt;
&lt;h3&gt;
  
  
  Generators
&lt;/h3&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="o"&gt;*&lt;/span&gt; &lt;span class="nf"&gt;idMaker &lt;/span&gt;&lt;span class="p"&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;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
  &lt;span class="k"&gt;while &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="k"&gt;yield&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="o"&gt;++&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;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;gen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;idMaker&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="nx"&gt;gen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;  &lt;span class="c1"&gt;// → 0&lt;/span&gt;
&lt;span class="nx"&gt;gen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;  &lt;span class="c1"&gt;// → 1&lt;/span&gt;
&lt;span class="nx"&gt;gen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;next&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;value&lt;/span&gt;  &lt;span class="c1"&gt;// → 2&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;It's complicated.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#generators" rel="noopener noreferrer"&gt;Generators&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  For..of iteration
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for &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;i&lt;/span&gt; &lt;span class="k"&gt;of&lt;/span&gt; &lt;span class="nx"&gt;iterable&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="err"&gt;···&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;For iterating through generators and arrays.&lt;br&gt;
Check: &lt;a href="https://babeljs.io/learn-es2015/#iterators--forof" rel="noopener noreferrer"&gt;For..of iteration&lt;/a&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  References
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://developer.mozilla.org/en-US/" rel="noopener noreferrer"&gt;MDN Web Docs&lt;/a&gt;&lt;br&gt;
&lt;a href="//https:/devhints.io/"&gt;DevHints&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.w3schools.com/" rel="noopener noreferrer"&gt;w3schools&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  ⚡️ Giveaway ⚡️
&lt;/h2&gt;

&lt;p&gt;We are giving away any course you need on Udemy. Any price any course.&lt;br&gt;
Steps to enter the giveaway&lt;br&gt;
--&amp;gt; React to this post&lt;br&gt;
--&amp;gt; Subscribe to our &lt;a href="https://worldindev.ck.page/" rel="noopener noreferrer"&gt;Newsletter&lt;/a&gt; &amp;lt;-- Very important&lt;br&gt;
--&amp;gt; Follow me on &lt;a href="https://twitter.com/garvitmotwani" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; &amp;lt;-- x2 Chances of winning&lt;/p&gt;

&lt;p&gt;The winner will be announced on May 1, Via Twitter&lt;/p&gt;



&lt;p&gt;Thank you very much for reading this article.&lt;/p&gt;

&lt;p&gt;Comment any tricks &amp;amp; tips you know!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;PLEASE LIKE, SHARE, AND COMMENT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Follow me on &lt;a href="https://dev.to/garvitmotwani"&gt;Dev&lt;/a&gt; and &lt;a href="https://twitter.com/GarvitMotwani" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt;&lt;/p&gt;



&lt;p&gt;Read also:&lt;br&gt;
&lt;/p&gt;
&lt;div class="ltag__link"&gt;
  &lt;a href="/garvitmotwani" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F370225%2F60416eff-f1ff-4a29-a5c9-2a13df7845c8.jpeg" alt="garvitmotwani"&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/garvitmotwani/5-array-methods-you-should-know-22ff" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;5 Array Methods You Should Know 🚀&lt;/h2&gt;
      &lt;h3&gt;Garvit Motwani ・ Apr 27 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#html&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/worldindev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F571015%2F0614dc8e-eba2-42c8-9473-39fbcb740a67.png" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/400-javascript-interview-questions-with-answers-2fcj" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;400+ JavaScript Interview Questions 🎓 With Answers 🌠&lt;/h2&gt;
      &lt;h3&gt;Lorenzo for World In Dev ・ Apr 27 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#javascript&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#webdev&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#career&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#productivity&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;



&lt;div class="ltag__link"&gt;
  &lt;a href="/worldindev" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__org__pic"&gt;
      &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Forganization%2Fprofile_image%2F3864%2Fc6f2cf0f-a06c-4603-8a9a-56a612b9697b.png" alt="World In Dev"&gt;
      &lt;div class="ltag__link__user__pic"&gt;
        &lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F547275%2Fb1233c51-73ff-40bc-83c2-4c1f5d65a2cf.jpeg" alt=""&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
  &lt;a href="/worldindev/6-python-tips-tricks-that-no-one-teaches-4j73" class="ltag__link__link"&gt;
    &lt;div class="ltag__link__content"&gt;
      &lt;h2&gt;6 Python Tips &amp;amp; Tricks that no One Teaches 🚀🐍&lt;/h2&gt;
      &lt;h3&gt;Daniel Diaz for World In Dev ・ Apr 26 '21&lt;/h3&gt;
      &lt;div class="ltag__link__taglist"&gt;
        &lt;span class="ltag__link__tag"&gt;#python&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#tutorial&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#beginners&lt;/span&gt;
        &lt;span class="ltag__link__tag"&gt;#programming&lt;/span&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;p&gt;Subscribe to our &lt;a href="https://chipper-motivator-3112.ck.page/05710ea3d3" rel="noopener noreferrer"&gt;newsletter&lt;/a&gt; to receive our weekly recap directly on your email!&lt;/p&gt;

&lt;p&gt;Join us on &lt;a href="https://discord.gg/aWS2YKk6" rel="noopener noreferrer"&gt;Discord&lt;/a&gt; to participate in hackathons with us / participate in our giveaways!&lt;/p&gt;

&lt;p&gt;Thanks for reading!!&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
