<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Pulkit Singh</title>
    <description>The latest articles on DEV Community by Pulkit Singh (@pulkitsingh).</description>
    <link>https://dev.to/pulkitsingh</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F586217%2F78912555-5830-4310-bce5-dc2c534b1e06.png</url>
      <title>DEV Community: Pulkit Singh</title>
      <link>https://dev.to/pulkitsingh</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/pulkitsingh"/>
    <language>en</language>
    <item>
      <title>Learn React with these cool Projects 😎</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Fri, 21 Mar 2025 07:13:40 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/learn-react-with-these-cool-projects-108g</link>
      <guid>https://dev.to/pulkitsingh/learn-react-with-these-cool-projects-108g</guid>
      <description>&lt;p&gt;React is a powerful JavaScript library for building user interfaces, and mastering it requires hands-on practice. Below, we've compiled a list of exciting projects that will help you improve your React skills while building real-world applications.React continues to evolve, bringing new features like:&lt;/p&gt;

&lt;p&gt;✅ &lt;strong&gt;React Server Components&lt;/strong&gt; – Improve performance by rendering on the server.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Concurrent Rendering&lt;/strong&gt; – Enhances UI responsiveness.&lt;br&gt;&lt;br&gt;
✅ &lt;strong&gt;Improved Suspense&lt;/strong&gt; – Handles asynchronous operations efficiently.  &lt;/p&gt;

&lt;h2&gt;
  
  
  🚀Featured React Projects
&lt;/h2&gt;

&lt;p&gt;The best way to learn React is by &lt;strong&gt;building projects&lt;/strong&gt;! Here are &lt;strong&gt;10 awesome GitHub projects&lt;/strong&gt; to sharpen your skills. Each project includes a &lt;strong&gt;difficulty level&lt;/strong&gt; (🔹=Easy, 🔸=Intermediate, 🔥=Advanced), &lt;strong&gt;estimated time&lt;/strong&gt;, &lt;strong&gt;GitHub stars&lt;/strong&gt;, and &lt;strong&gt;a brief description&lt;/strong&gt; of what you'll learn.  &lt;/p&gt;




&lt;h3&gt;
  
  
  1️⃣ &lt;strong&gt;React Notes App&lt;/strong&gt; 📝
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; This simple yet powerful notes application lets users create, edit, and delete notes. Notes are stored in the browser’s local storage.  &lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; CRUD operations, React Hooks (useState, useEffect), local storage&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔹 (Beginner)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 100+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 2-4 hours&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/paydendyer/react-notes-app" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  2️⃣ &lt;strong&gt;React Pokémon App (PokeAPI)&lt;/strong&gt; 🎮
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; This app fetches Pokémon data from the PokeAPI, allowing users to search and view details about different Pokémon.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; Fetching API data, React Router, state management&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔸 (Intermediate)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 70+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 5-7 hours&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/Megh2507/Pokemon-App" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  3️⃣ &lt;strong&gt;React Weather App&lt;/strong&gt; ☁️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; This real-time weather app fetches data from the OpenWeatherMap API and displays weather conditions dynamically.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; API integration, Tailwind CSS, error handling&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔹 (Beginner)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 50+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 4-6 hours&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/jawadali6688/weather_app_react" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  4️⃣ &lt;strong&gt;React Cryptocurrency App&lt;/strong&gt; 💰
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; A crypto price tracking application that fetches real-time data on different cryptocurrencies, including price changes and trends.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; Fetching live crypto prices, dynamic charts, React state management&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔸 (Intermediate)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 90+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 6-8 hours&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/Megh2507/React-Crypto-App" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  5️⃣ &lt;strong&gt;React Password Generator&lt;/strong&gt; 🔑
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; A simple password generator that creates strong, customizable passwords with various security options.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; Event handling, state management, clipboard API&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔹 (Beginner)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 120+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 2-3 hours&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/Megh2507/react_password_generator" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  6️⃣ &lt;strong&gt;Photo Gallery App (React + Node.js)&lt;/strong&gt; 🖼️
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; A full-stack photo gallery application where users can upload, view, and manage images.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; Uploading images, cloud storage integration, backend API handling&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔥 (Advanced)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 200+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 2-3 days&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/chrisblakely01/react-node-photo-gallery" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  7️⃣ &lt;strong&gt;React Chat App (WhatsApp Clone)&lt;/strong&gt; 💬
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; A real-time chat application that mimics WhatsApp, with user authentication and messaging features.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; Real-time messaging with WebSockets, Firebase authentication&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔥 (Advanced)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 500+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 3-5 days&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/WebDevSimplified/Whatsapp-Clone" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  8️⃣ &lt;strong&gt;React Movie &amp;amp; Series App&lt;/strong&gt; 🎬
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; A movie and TV series database that fetches data from the TMDb API and allows users to browse and search for content.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; API integration, React Router, dynamic search&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔸 (Intermediate)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 150+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 5-7 hours&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/piyush-eon/react-entertainment-hub" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  9️⃣ &lt;strong&gt;Instagram Clone&lt;/strong&gt; 📸
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; A social media application similar to Instagram, with features like posting, liking, and commenting.&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; Firebase authentication, real-time database, styled-components&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔥 (Advanced)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 600+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 4-6 days&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/topics/instagram-clone" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




&lt;h3&gt;
  
  
  🔟 &lt;strong&gt;E-Commerce App (MERN Stack)&lt;/strong&gt; 🛒
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;📌 Description:&lt;/strong&gt; A complete e-commerce application with product listings, a shopping cart, and payment integration.  &lt;/p&gt;

&lt;p&gt;📌 &lt;strong&gt;What You'll Learn:&lt;/strong&gt; Full-stack development (MongoDB, Express, React, Node.js), authentication, payment integration&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Difficulty:&lt;/strong&gt; 🔥 (Advanced)&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Stars:&lt;/strong&gt; ⭐ 1.5K+&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Estimated Time:&lt;/strong&gt; 1-2 weeks&lt;br&gt;&lt;br&gt;
📌 &lt;strong&gt;Project Link:&lt;/strong&gt; &lt;a href="https://github.com/meabhisingh/mernProjectEcommerce" rel="noopener noreferrer"&gt;GitHub Repo&lt;/a&gt;  &lt;/p&gt;




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

&lt;p&gt;By working on these projects, you'll gain hands-on experience with &lt;strong&gt;API integration, authentication, state management, and UI design&lt;/strong&gt;.  &lt;/p&gt;

&lt;p&gt;👉 &lt;strong&gt;Which project will you start with?&lt;/strong&gt; Let us know in the comments! 🚀  &lt;/p&gt;




</description>
      <category>javascript</category>
      <category>react</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Free Database Hosting for Your Next Project</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Fri, 04 Oct 2024 15:40:30 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/free-database-hosting-for-your-next-project-2cbd</link>
      <guid>https://dev.to/pulkitsingh/free-database-hosting-for-your-next-project-2cbd</guid>
      <description>&lt;h1&gt;
  
  
  Exploring Free Database Hosting Options for Your Next Project
&lt;/h1&gt;

&lt;p&gt;If you're looking to start a small project or test an idea, free database hosting services can be a game changer. Here’s a curated list of various database platforms offering free tiers, each with its advantages, limitations, and storage capacities. &lt;/p&gt;

&lt;h2&gt;
  
  
  Amazon DynamoDB
&lt;/h2&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%2Ftui2p7hui6b43sse8ave.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%2Ftui2p7hui6b43sse8ave.jpg" alt="dynamo db" width="750" height="375"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/dynamodb/pricing/" rel="noopener noreferrer"&gt;Amazon DynamoDB&lt;/a&gt; is a fully managed NoSQL database service that provides fast and predictable performance. DynamoDB is great for applications requiring low-latency data access.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: NoSQL (Proprietary)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 25 GB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Automatically scales as your application grows&lt;/li&gt;
&lt;li&gt;Integrates seamlessly with AWS services&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Payment method required&lt;/li&gt;
&lt;li&gt;The free tier is limited, and charges apply beyond usage limits&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Amazon RDS
&lt;/h2&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%2Fwcyiezveowsvy3l1l0ic.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%2Fwcyiezveowsvy3l1l0ic.png" alt="Image description" width="598" height="310"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://aws.amazon.com/rds/" rel="noopener noreferrer"&gt;Amazon RDS&lt;/a&gt; is a managed relational database service that supports multiple engines like MySQL, PostgreSQL, Oracle, and SQL Server.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: RDBMS (Proprietary)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Automated backups, patching, and scaling&lt;/li&gt;
&lt;li&gt;Wide range of supported database engines&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Free only for one year&lt;/li&gt;
&lt;li&gt;Payment method required for continued service&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Azure SQL Database
&lt;/h2&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%2Fnlgqsakc6apaura4munn.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%2Fnlgqsakc6apaura4munn.png" alt="Image description" width="749" height="381"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://azure.microsoft.com/en-us/services/sql-database/" rel="noopener noreferrer"&gt;Azure SQL Database&lt;/a&gt; is a fully managed SQL database service built for cloud applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: MS SQL Server&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Integrates with Microsoft products and services&lt;/li&gt;
&lt;li&gt;Built-in high availability and disaster recovery&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Free for one year&lt;/li&gt;
&lt;li&gt;Payment method required for extended use&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Clever Cloud
&lt;/h2&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%2Fhmrb7hsywuzyymu6y9yx.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%2Fhmrb7hsywuzyymu6y9yx.png" alt="Image description" width="675" height="294"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.clever-cloud.com/" rel="noopener noreferrer"&gt;Clever Cloud&lt;/a&gt; offers PostgreSQL, MySQL, MongoDB, and Redis as managed services for developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: PostgreSQL, MySQL, MongoDB, Redis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 256 MB (PostgreSQL)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Automatic scaling for your projects&lt;/li&gt;
&lt;li&gt;Multi-cloud and hybrid architecture support&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maximum of 5 connections for PostgreSQL&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  ElephantSQL (Discontinued 😭)
&lt;/h2&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%2Fgonv67n5ks1nv5t3p54j.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%2Fgonv67n5ks1nv5t3p54j.png" alt="Image description" width="734" height="274"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.elephantsql.com/" rel="noopener noreferrer"&gt;ElephantSQL&lt;/a&gt; provides managed PostgreSQL database hosting services with simple scaling.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 20 MB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Easy-to-use management console&lt;/li&gt;
&lt;li&gt;Fast setup for small applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;5 concurrent connections allowed&lt;/li&gt;
&lt;li&gt;Discontinued &lt;a href="https://dev.to/akashpattnaik/end-of-elephantsql-2gdo"&gt;More here&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Fly.io
&lt;/h2&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%2Fuislh4w17ckg09jyhvbx.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%2Fuislh4w17ckg09jyhvbx.png" alt="Image description" width="609" height="296"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://fly.io/" rel="noopener noreferrer"&gt;Fly.io&lt;/a&gt; offers fast global PostgreSQL database services.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 3 GB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Global app deployment&lt;/li&gt;
&lt;li&gt;Built-in redundancy and failover&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Requires a credit card&lt;/li&gt;
&lt;li&gt;Limited outbound traffic&lt;/li&gt;
&lt;li&gt;Risk of accidental overage fees&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Google Cloud Firestore
&lt;/h2&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%2Fu8fym5gsjw0wt8ky4xd8.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%2Fu8fym5gsjw0wt8ky4xd8.png" alt="Image description" width="730" height="309"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://cloud.google.com/firestore" rel="noopener noreferrer"&gt;Google Cloud Firestore&lt;/a&gt; is a flexible NoSQL document database for mobile and web applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: NoSQL (Proprietary)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 1 GB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Integrated with Google Cloud ecosystem&lt;/li&gt;
&lt;li&gt;Ideal for real-time applications&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;After the first year, there is no way to avoid accidental overage fees&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Heroku Postgres (Discontinued 😭)
&lt;/h2&gt;

&lt;p&gt;Heroku’s Postgres service has been discontinued, but it was a popular choice for developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: PostgreSQL&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Easy integration with Heroku apps&lt;/li&gt;
&lt;li&gt;Well-suited for small projects&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Discontinued, no longer available for new sign-ups&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  IBM Cloud Cloudant
&lt;/h2&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%2Fseofzlk4m3x7kly5ipf7.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%2Fseofzlk4m3x7kly5ipf7.png" alt="Image description" width="710" height="322"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.ibm.com/cloud/cloudant" rel="noopener noreferrer"&gt;IBM Cloud Cloudant&lt;/a&gt; is a NoSQL database optimized for handling large volumes of distributed data.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: NoSQL (Proprietary)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 1 GB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Handles distributed workloads effortlessly&lt;/li&gt;
&lt;li&gt;Fully managed with high availability&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Data is deleted after 30 days of inactivity&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  IBM Cloud Db2
&lt;/h2&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%2Fmoej1evev52dcj6sb4pf.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%2Fmoej1evev52dcj6sb4pf.png" alt="Image description" width="759" height="333"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.ibm.com/cloud/db2" rel="noopener noreferrer"&gt;IBM Cloud Db2&lt;/a&gt; offers a powerful, enterprise-grade SQL database service.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: Db2&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 200 MB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Industry-grade SQL performance&lt;/li&gt;
&lt;li&gt;Great for enterprise use cases&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Users must re-extend the free account every 90 days via email&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  MongoDB Atlas
&lt;/h2&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%2F6fzzo89rt4lv30qvl1on.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%2F6fzzo89rt4lv30qvl1on.png" alt="Image description" width="694" height="312"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.mongodb.com/atlas/database" rel="noopener noreferrer"&gt;MongoDB Atlas&lt;/a&gt; is a fully managed cloud database service for modern applications.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: MongoDB&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 512 MB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Multi-cloud support&lt;/li&gt;
&lt;li&gt;Easy scaling options&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  OpenShift Developer Sandbox
&lt;/h2&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%2F9okhyraggyqgww1q7yal.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%2F9okhyraggyqgww1q7yal.png" alt="Image description" width="777" height="315"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://developers.redhat.com/products/openshift/sandbox" rel="noopener noreferrer"&gt;OpenShift Developer Sandbox&lt;/a&gt; provides free access to MariaDB, MongoDB, MySQL, and PostgreSQL databases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: MariaDB, MongoDB, MySQL, PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 15 GB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Pods are deleted after 12 hours of inactivity&lt;/li&gt;
&lt;li&gt;Full Red Hat OpenShift experience for developers&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Expires after 30 days, can resubscribe but not extend subscription&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Oracle Cloud
&lt;/h2&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%2Fdf249kq5pexqmreoi4s2.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%2Fdf249kq5pexqmreoi4s2.png" alt="Image description" width="465" height="255"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.oracle.com/cloud/" rel="noopener noreferrer"&gt;Oracle Cloud&lt;/a&gt; offers a free tier that includes access to Oracle databases.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: Oracle Database&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 20 GB per database (up to two databases)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Powerful performance for enterprise-level projects&lt;/li&gt;
&lt;li&gt;Built-in AI and machine learning integrations&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Payment method required&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Redis Enterprise
&lt;/h2&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%2Fzpokjeg3grzlhzdm3lb9.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%2Fzpokjeg3grzlhzdm3lb9.png" alt="Image description" width="772" height="339"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://redis.com/redis-enterprise-cloud/" rel="noopener noreferrer"&gt;Redis Enterprise&lt;/a&gt; provides a free Redis cloud database for quick data storage and retrieval.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: Redis&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 30 MB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Low-latency data access&lt;/li&gt;
&lt;li&gt;High availability with automatic failover&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Scalingo
&lt;/h2&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%2Fub729iag7f97bx3j6t8z.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%2Fub729iag7f97bx3j6t8z.png" alt="Image description" width="766" height="384"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://scalingo.com/" rel="noopener noreferrer"&gt;Scalingo&lt;/a&gt; offers a PostgreSQL database with free tier limits ideal for testing and small apps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 128 MB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Simple setup and deployment&lt;/li&gt;
&lt;li&gt;Integrated with Scalingo’s PaaS platform&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Maximum of 10 connections&lt;/li&gt;
&lt;li&gt;Payment required after 30-day trial&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Supabase
&lt;/h2&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%2Fh58h2smcx21mlcpc99ef.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%2Fh58h2smcx21mlcpc99ef.png" alt="Image description" width="737" height="250"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://supabase.com/" rel="noopener noreferrer"&gt;Supabase&lt;/a&gt; offers an open-source alternative to Firebase with PostgreSQL as the database layer.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Type&lt;/strong&gt;: PostgreSQL&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Storage&lt;/strong&gt;: 500 MB&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Pros ✅
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Integrated authentication and API services&lt;/li&gt;
&lt;li&gt;Fast setup for web and mobile apps&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Cons ⚠️
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Paused after 1 week of inactivity&lt;/li&gt;
&lt;li&gt;2 GB transfer limit&lt;/li&gt;
&lt;/ul&gt;




&lt;blockquote&gt;
&lt;p&gt;For small projects, testing, or learning, these services provide excellent free options. However, most have limitations, so it's important to choose based on your needs. Be mindful of potential overage fees or expiration dates, especially if you plan on scaling your application.&lt;/p&gt;
&lt;/blockquote&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%2Fgqi62k63v3h8v2gp9z3t.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%2Fgqi62k63v3h8v2gp9z3t.gif" alt="Image description" width="800" height="449"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>todayilearned</category>
      <category>database</category>
      <category>beginners</category>
      <category>discuss</category>
    </item>
    <item>
      <title>Install Nerd Fonts (or any fonts) easily in Linux</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Mon, 09 Sep 2024 12:38:06 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/install-nerd-fonts-or-any-fonts-easily-in-linux-2e3l</link>
      <guid>https://dev.to/pulkitsingh/install-nerd-fonts-or-any-fonts-easily-in-linux-2e3l</guid>
      <description>&lt;p&gt;Switching to Linux can be a liberating experience, offering a highly customizable and secure environment. However, there are some tasks that can be a bit tedious, especially if you're coming from Windows, where things are often automated. One such task is installing fonts. Imagine you've set up your Linux system just the way you like it, and you're about to download and install some new fonts. You find a collection of beautiful Nerd Fonts, but the process of downloading, unzipping, and installing each font individually is time-consuming. With over 40 fonts in a single zip folder, it can feel like a daunting task.&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%2F6nehlj071sindvxm6feb.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%2F6nehlj071sindvxm6feb.png" alt="Fonts installed"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I recently faced this exact situation when I switched to Linux Mint and decided to ditch Windows. After some frustration, I found a clever way to install fonts directly from a URL, saving a lot of time and hassle. Here's how I did it, and you can too!&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  A Simple Bash Script to Install Fonts
&lt;/h2&gt;

&lt;p&gt;To streamline the process, I created a simple bash script that allows you to install fonts directly from a URL. The script automates the download, extraction, and installation of fonts, making the process quick and painless.&lt;/p&gt;

&lt;p&gt;Here's the script:&lt;/p&gt;

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

&lt;span class="c"&gt;#!/bin/bash&lt;/span&gt;

&lt;span class="c"&gt;# Check if the URL is provided&lt;/span&gt;
&lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="o"&gt;[&lt;/span&gt; &lt;span class="nt"&gt;-z&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="o"&gt;]&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="k"&gt;then
  &lt;/span&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Please provide a URL to a font zip file."&lt;/span&gt;
  &lt;span class="nb"&gt;exit &lt;/span&gt;1
&lt;span class="k"&gt;fi&lt;/span&gt;

&lt;span class="c"&gt;# Create a temporary directory&lt;/span&gt;
&lt;span class="nv"&gt;TEMP_DIR&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="si"&gt;$(&lt;/span&gt;&lt;span class="nb"&gt;mktemp&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt;&lt;span class="si"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;# Download the font zip file&lt;/span&gt;
wget &lt;span class="nt"&gt;-O&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TEMP_DIR&lt;/span&gt;&lt;span class="s2"&gt;/font.zip"&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$1&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Unzip the font file&lt;/span&gt;
unzip &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TEMP_DIR&lt;/span&gt;&lt;span class="s2"&gt;/font.zip"&lt;/span&gt; &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TEMP_DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# Move the font files to the system fonts directory&lt;/span&gt;
&lt;span class="nb"&gt;sudo mv&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TEMP_DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;/&lt;span class="k"&gt;*&lt;/span&gt;.&lt;span class="o"&gt;{&lt;/span&gt;ttf,otf&lt;span class="o"&gt;}&lt;/span&gt; /usr/local/share/fonts/

&lt;span class="c"&gt;# Update the font cache&lt;/span&gt;
fc-cache &lt;span class="nt"&gt;-f&lt;/span&gt; &lt;span class="nt"&gt;-v&lt;/span&gt;

&lt;span class="c"&gt;# Clean up&lt;/span&gt;
&lt;span class="nb"&gt;rm&lt;/span&gt; &lt;span class="nt"&gt;-rf&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$TEMP_DIR&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;"Fonts installed successfully!"&lt;/span&gt;




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

&lt;/div&gt;

&lt;p&gt;That's it, now you can save it as &lt;code&gt;install.sh&lt;/code&gt; and run it to install bunch of fonts easily.&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%2F3vibhpoqzjhlehfo7ln5.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%2F3vibhpoqzjhlehfo7ln5.png" alt="Nerd Fonts in vs code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use this script
&lt;/h2&gt;

&lt;p&gt;1) Save the Script: Save the script above as install-font.sh anywhere on your Linux system.&lt;/p&gt;

&lt;p&gt;2) Make the Script Executable: Before running the script, you need to change its permissions to make it executable. You can do this by running the following command in your terminal:&lt;/p&gt;

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

&lt;span class="nb"&gt;chmod&lt;/span&gt; +x /path/to/install-font.sh


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

&lt;/div&gt;

&lt;p&gt;3) Run the Script: Now, you're ready to install fonts! Open your terminal and run the script with the URL to the font zip file. For example:&lt;/p&gt;

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

./install-font.sh https://github.com/ryanoasis/nerd-fonts/releases/download/v3.2.1/Hack.zip


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

&lt;/div&gt;

&lt;p&gt;The script will download, extract, and install the fonts for you automatically.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; You can install any fonts not just nerd fonts.&lt;/p&gt;




&lt;h3&gt;
  
  
  Another Approach
&lt;/h3&gt;

&lt;p&gt;Alternatively, there's another script by &lt;a href="https://github.com/dDeedev" rel="noopener noreferrer"&gt;dDeedev&lt;/a&gt; that can make it even more easy for you! You can find the script &lt;a href="https://github.com/dDeedev/install-nerd-font-linux/blob/main/installer.sh" rel="noopener noreferrer"&gt;here&lt;/a&gt;!&lt;/p&gt;

&lt;h3&gt;
  
  
  Where to Find More Nerd Fonts
&lt;/h3&gt;

&lt;p&gt;You can find more Nerd Fonts to install from the official &lt;a href="https://www.nerdfonts.com/font-downloads" rel="noopener noreferrer"&gt;Nerd Fonts website&lt;/a&gt;. Simply copy the URL of the font zip file you want and use the script to install it.&lt;/p&gt;




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

&lt;p&gt;I hope this script makes your Linux experience a bit smoother. Bash scripting is a powerful tool that can help automate repetitive tasks and save you time. Whether you're a Linux newbie or a seasoned pro, small scripts like this can make a big difference in your workflow. Do let me know your favourite fonts in the comments below.&lt;/p&gt;

</description>
      <category>linux</category>
      <category>ubuntu</category>
      <category>todayilearned</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>🔥 VS Code Tip of the Day 🔥</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Wed, 25 Jan 2023 06:19:44 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/vs-code-tip-of-the-day-4f6b</link>
      <guid>https://dev.to/pulkitsingh/vs-code-tip-of-the-day-4f6b</guid>
      <description>&lt;h2&gt;
  
  
  Stay Organized with the TODO Highlight Extension
&lt;/h2&gt;

&lt;p&gt;Are you having a hard time keeping track of all the tasks you need to do in a project? Are you looking for an easy way to navigate back to them? Then the TODO Highlight extension for Visual Studio Code is the perfect tool for you!&lt;/p&gt;

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

&lt;p&gt;This extension allows you to quickly and easily add TODO and FIXME comments to your code. With those comment tags in place, you can quickly generate a helpful list of all the tasks you need to do. This makes it a breeze to move around your project, find the tasks you need to do, and stay organized.&lt;/p&gt;

&lt;p&gt;To get started, all you have to do is search for the “TODO Highlight” extension in the Visual Studio Code marketplace. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;After you install it, you’ll be able to start adding TODO and FIXME comments to your code. &lt;/li&gt;
&lt;li&gt;You can then use the “TODO List” command to generate a list of all your tasks. This list will include the line numbers where you added your comments, as well as some helpful details about each task.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;The TODO Highlight extension is a great tool for quickly and easily keeping track of your tasks and staying organized. With just a few clicks, you can stay on top of all the TODOs in your project. So, if you’re looking for an easy way to keep your code organized and get things done, look no further than the TODO Highlight extension for Visual Studio Code from &lt;a href="https://marketplace.visualstudio.com/items?itemName=wayou.vscode-todo-highlight" rel="noopener noreferrer"&gt;here&lt;/a&gt;!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Sometimes you forget to review the TODOs you've added while coding before you publish the code to production. So I've been wanting an extension for a long time that highlights them and reminds me that there are notes or things not done yet.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>chatgpt</category>
      <category>claude</category>
      <category>debugging</category>
      <category>productivity</category>
    </item>
    <item>
      <title>What can you build with WASM?</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Sat, 21 Jan 2023 11:17:44 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/what-can-you-build-with-wasm-1k39</link>
      <guid>https://dev.to/pulkitsingh/what-can-you-build-with-wasm-1k39</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5d9ue3qh7fkx3l21auo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fh5d9ue3qh7fkx3l21auo.png" alt="Image description" width="800" height="444"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;WebAssembly (WASM) is a binary instruction format for a stack-based virtual machine. It is designed as a portable target for the compilation of high-level languages like C, C++, and Rust, enabling deployment on the web for client and server applications.&lt;/p&gt;

&lt;p&gt;One of the main advantages of WASM is its small size and fast execution. Because it is a binary format, it can be loaded and executed quickly, making it an excellent choice for performance-critical tasks like gaming, video and image processing, and cryptography.&lt;/p&gt;

&lt;h3&gt;
  
  
  Should you use WASM?
&lt;/h3&gt;

&lt;p&gt;There are several reasons why WebAssembly (WASM) is an attractive option for web development:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: WebAssembly is designed to be a portable target for the compilation of high-level languages like C, C++, and Rust, allowing for near-native performance on the web. This makes it an excellent choice for performance-critical tasks like gaming, video and image processing, and cryptography.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Small size&lt;/strong&gt;: WebAssembly code is a binary format, which means it can be loaded and executed quickly. Because it is a compact format, it can be downloaded faster and take up less space than equivalent JavaScript code.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Language support&lt;/strong&gt;: WebAssembly supports multiple programming languages, including C, C++, and Rust. This allows developers to use their existing knowledge and skills to build web applications.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Interoperability&lt;/strong&gt;: WebAssembly can be used in conjunction with JavaScript, which makes it easy to integrate with existing web apps and frameworks. This allows developers to use the best of both worlds.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;: WebAssembly is designed with security in mind, and it runs inside a sandboxed environment. This makes it a good choice for building secure web apps that perform cryptographic operations such as encryption and decryption.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Progressive enhancement: WebAssembly can be used to progressively enhance web apps, providing better performance for users on modern browsers while still providing a functional experience for users on older browsers.&lt;/p&gt;

&lt;p&gt;Developing cross-platform apps: WebAssembly can be used to create apps that run on multiple platforms, including web, mobile, and desktop, with little to no modification.&lt;/p&gt;

&lt;h3&gt;
  
  
  Getting Started
&lt;/h3&gt;

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

&lt;p&gt;Getting started with WebAssembly (WASM) projects can be done in several ways, depending on the language you are using and the development environment you are working in. Here are some general steps to get started:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Install the necessary tools&lt;/strong&gt;: To start working with WebAssembly, you will need to have a few tools installed on your computer. These include a WebAssembly binary toolchain, such as Binaryen or LLVM, as well as a WebAssembly runtime, such as Wasmtime or Wasmer. You can find instructions for installing these tools on the respective websites.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Choose a programming language&lt;/strong&gt;: WebAssembly supports several programming languages, including C, C++, and Rust. If you are new to WebAssembly, it might be easier to start with a language you are already familiar with.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Write your code&lt;/strong&gt;: Once you have the necessary tools and have chosen a language, you can start writing your code. When writing WebAssembly code, it's important to keep in mind that it is designed to be run on a stack-based virtual machine, so you will need to use stack operations instead of register operations.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Compile your code&lt;/strong&gt;: After writing your code, you will need to compile it to the WebAssembly binary format (.wasm). You can use a tool like Emscripten to do this for C and C++ code, or you can use the WebAssembly Binary Toolkit (WABT) for other languages.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;blockquote&gt;
&lt;p&gt;To easily get started with WebAssembly, you can try out some of the example repositories available on GitHub. Here are a few to check out:&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/rustwasm/wasm_game_of_life" rel="noopener noreferrer"&gt;wasm-game-of-life&lt;/a&gt;: This is an example of a Game of Life implementation built with WASM.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/Hanks10100/wasm-examples" rel="noopener noreferrer"&gt;wasm-examples&lt;/a&gt;: This repository contains several examples of using WebAssembly with different languages, including C, C++, and Rust.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/originjs/crypto-js-wasm" rel="noopener noreferrer"&gt;wasm-crypto-examples&lt;/a&gt;: This repository contains examples of using WebAssembly for cryptography, including a WebAssembly implementation of the popular encryption library OpenSSL.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://github.com/tqchen/tvm-webgpu-example" rel="noopener noreferrer"&gt;wasm-machine-learning&lt;/a&gt;: This repository contains examples of using WebAssembly for machine learning, including a WebAssembly version of TensorFlow.js.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Here are a few examples of what you can build with WASM:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Games&lt;/strong&gt;: WASM allows for high-performance gaming on the web, with several examples such as the popular game "2048" which is built with WASM.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Image and video processing&lt;/strong&gt;: WebAssembly can be used to build image and video processing apps that run on the web. A good example of this is the wasm-imagemagick project, which is a WebAssembly port of the popular image manipulation library.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Summary
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Overall, WebAssembly is a powerful tool that can be used to build high-performance web apps that run smoothly on all devices. With its small size, fast execution, and support for multiple languages, it is becoming an increasingly popular choice for web development. With the above examples, you can start experimenting and build your own web apps with WebAssembly.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>discuss</category>
    </item>
    <item>
      <title>Learning Python in 2023: A Roadmap</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Sun, 15 Jan 2023 13:39:38 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/learning-python-in-2023-a-roadmap-2d22</link>
      <guid>https://dev.to/pulkitsingh/learning-python-in-2023-a-roadmap-2d22</guid>
      <description>&lt;h3&gt;
  
  
  &lt;strong&gt;Step 1: Familiarize yourself with the basics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Start by learning the basic syntax and data types of Python. Get a good understanding of how variables, loops, and control structures work.&lt;br&gt;
You can use resources like Codecademy, Coursera, or edX to learn the basics.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 2: Practice writing basic programs&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Once you feel comfortable with the basics, start practicing writing simple programs like calculators, guessing games, and to-do lists.&lt;br&gt;
This will help you solidify your understanding of the language and develop your problem-solving skills.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 3: Learn Object-Oriented Programming (OOP)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Python is an object-oriented programming language, so it's important to learn the concepts of OOP.&lt;br&gt;
Learn about classes, objects, inheritance, polymorphism, and encapsulation.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 4: Learn a web framework&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Learn to use a web framework like Flask or Django to build web applications.&lt;br&gt;
This will give you a good understanding of how Python can be used to create web applications and the web development process.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 5: Learn a data analysis library&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Learn to use a data analysis library such as Pandas, NumPy, or Matplotlib.&lt;br&gt;
This will give you the skills to analyze and visualize data using Python.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 6: Learn Advanced Topics&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Once you have a solid foundation in the basics, you can start diving into more advanced topics such as functional programming, decorators, and generators.&lt;br&gt;
Also you can start learning other libraries such as Tensorflow, Pytorch, etc.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Step 7: Practice, Practice, Practice&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;The most important step in learning any programming language is practice.&lt;/p&gt;

&lt;p&gt;Participate in coding challenges, contribute to open-source projects, and keep building your own projects to solidify your knowledge and improve your skills.&lt;/p&gt;

&lt;p&gt;By following this roadmap and dedicating time and effort to your learning, you can become proficient in Python in 2023. Remember that learning to code is an ongoing process and you will continue to learn new things and improve your skills as you gain more experience.&lt;/p&gt;

&lt;h5&gt;
  
  
  References
&lt;/h5&gt;

&lt;p&gt;There are several references available for learning Python, including online tutorials, video courses, and books. Some popular resources for learning Python include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The official Python website (python.org) which provides an interactive tutorial and documentation on the basics of the language.&lt;/li&gt;
&lt;li&gt;Codecademy's Learn Python track, an interactive online course that covers the fundamentals of Python.
"Python Crash Course" by Eric Matthes, a beginner-friendly book that covers the basics of Python programming and data science&lt;/li&gt;
&lt;li&gt;"A Byte of Python" by Swaroop C H, a free online book that covers the basics of Python programming
"Automate the Boring Stuff with Python" by Al Sweigart, a beginner-friendly book that covers the basics of Python programming and teaches you how to automate common tasks using Python&lt;/li&gt;
&lt;li&gt;"Python Fundamentals" by Pluralsight, a video course that covers the basics of Python programming.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>welcome</category>
      <category>community</category>
    </item>
    <item>
      <title>Top Rendering Patterns for your Next Web App</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Wed, 11 Jan 2023 10:22:53 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/top-rendering-patterns-for-your-next-web-app-12f4</link>
      <guid>https://dev.to/pulkitsingh/top-rendering-patterns-for-your-next-web-app-12f4</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_JYH32we--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tntbwths0pdkz5ox1jir.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_JYH32we--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tntbwths0pdkz5ox1jir.gif" alt="Top Rendering Patterns" width="500" height="275"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Content Rendering?
&lt;/h2&gt;

&lt;p&gt;In simple words, rendering is converting structured data or content into a visual format that can be displayed on a webpage or application. In web development, content is typically stored in a database and then retrieved by the application and rendered for the user. The rendered content is usually HTML, CSS, and JavaScript, which are interpreted by the browser to display the webpage to the user.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CmSgCe-Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8amvi00u9slfj3k4bx16.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CmSgCe-Q--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/8amvi00u9slfj3k4bx16.png" alt="From web.dev" width="880" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This can be done on server or browser, and all at once or partially depending on your project's requirement.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Content Rendering Patterns
&lt;/h2&gt;

&lt;p&gt;There are several content rendering patterns for frontend development, each with its own set of trade-offs and best suited for different types of applications. Here are some examples of popular patterns with their advantages and disadvantages:&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Static Website
&lt;/h3&gt;

&lt;p&gt;A static website is a type of website that uses pre-written HTML, CSS, and JavaScript to display content. The content on a static website is fixed, and does not change unless the developer manually updates the HTML, CSS, and JavaScript files.&lt;/p&gt;

&lt;p&gt;A static website does not require any processing on the server-side or client-side to render the content. This means that static websites can have faster loading times and lower server costs, compared to dynamic websites and Good SEO.&lt;/p&gt;

&lt;p&gt;Static websites are suitable for simple websites that don't require any dynamic functionality or frequent updates such as landing pages, portfolio websites, blogs or small online stores. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Q3pR19u5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mq4i9l42t2ji7awz9n2w.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Q3pR19u5--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mq4i9l42t2ji7awz9n2w.png" alt="Copied from google images" width="712" height="375"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Frameworks that supports SSG (Static Site Generation)&lt;/strong&gt;: Hugo, 11ty, Gatsby, Gridsome, Jekkyl&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Multi Page Apps
&lt;/h3&gt;

&lt;p&gt;A multi-page app (MPA) is a type of web application that uses multiple distinct pages to display content, with each page typically having its own unique URL. In terms of content rendering, the most common pattern for a multi-page app is server-side rendering (SSR).&lt;/p&gt;

&lt;p&gt;In SSR, the server is responsible for generating the HTML for each page of the app based on the requested URL. When a user requests a page, the server retrieves the necessary data from a database or API and then uses a template engine, such as EJS, Handlebars, or Pug, to generate the HTML for that page. The generated HTML is then sent to the browser as a fully rendered webpage, which can improve load times and SEO.&lt;/p&gt;

&lt;p&gt;Once the page is loaded, the client-side JavaScript can take over and handle any dynamic interactions, such as form submissions or updating the content without requiring a full page reload.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;common web development frameworks&lt;/strong&gt; that supports SSR and building multi-page application are: Next.js, Nuxt.js, and Express.js. Each framework has its own set of features and tools that can help developers build and maintain MPAs.&lt;/p&gt;

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

&lt;h3&gt;
  
  
  3. Single page App (SPA)
&lt;/h3&gt;

&lt;p&gt;A single-page app (SPA) is a type of web application that loads a single HTML page and dynamically updates the content as the user interacts with the app. In terms of content rendering, the most common pattern for a SPA is client-side rendering (CSR).&lt;br&gt;
When a user requests a specific resource or view, the JavaScript code in the SPA makes an API call to the server to retrieve the necessary data and then updates the content of the page accordingly. This can provide fast and responsive interactions but can also lead to slower initial load times and potential issues with SEO.&lt;/p&gt;

&lt;p&gt;Popular JavaScript frameworks for building Single page application are React.js, Angular, Vue.js and Ember.js, Svelte. These frameworks all provide tools for building client-side rendered applications, as well as features for handling dynamic updates and routing, making it easy to build complex SPAs.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--m8PcJ02e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x7okf4rot9s21aul7b6u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--m8PcJ02e--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/x7okf4rot9s21aul7b6u.png" alt="Image description" width="715" height="521"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Server-Side Rendering with Hydration
&lt;/h3&gt;

&lt;p&gt;Rendering with hydration is a technique used in certain JavaScript frameworks, such as React, to improve the performance of client-side rendering.&lt;/p&gt;

&lt;p&gt;When a SPA (Single Page Application) is initially loaded in the browser, the HTML is typically rendered on the server and sent to the browser as a fully rendered webpage. However, for a SPA, the HTML is often just a "shell" or "skeleton" of the final page, with the majority of the content being filled in by JavaScript after the page has loaded. This process is called hydration.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--v-dQPKSi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0pr7twmn92abktc2g8hi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--v-dQPKSi--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0pr7twmn92abktc2g8hi.png" alt="Image description" width="880" height="448"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The advantages of hydration is that, it improves the initial load performance as compared to traditional client-side rendering, where the entire HTML is generated by JavaScript. Additionally, hydration allows for better SEO as the search engines can crawl the initial HTML content and also it provides a better user experience as the initial load will be faster.&lt;/p&gt;

&lt;p&gt;Also there are frameworks such as Next.js and Nuxt.js that provide the hydration process out of the box.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Web apps like this are called JAM Stack.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://dev.to/pulkitsingh/what-is-jam-stack-is-jamstack-the-future-of-static-website-3mbd"&gt;Know More about Jam Stack here =&amp;gt; &lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;These are called metaframeworks but there is a major drawback that you need an actual server for these stuff.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  5. Static Site Generation with Hydration
&lt;/h2&gt;

&lt;p&gt;Static site generation is the process of pre-rendering HTML files from a set of templates and content, while hydration refers to the process of dynamically adding interactivity to a static site using JavaScript after it has been loaded in the browser. Combining these two techniques, a website can be built as a set of static HTML files that are served quickly to the user, and then enhanced with dynamic features and data updates as the user interacts with the page, providing a faster and more responsive experience for the user.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Most popular frameworks to support this feature are Nuxt.JS, Next.JS, SvelteKit.JS &lt;/p&gt;
&lt;/blockquote&gt;

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

&lt;h2&gt;
  
  
  6. Incremental Static Regeneration
&lt;/h2&gt;

&lt;p&gt;Incremental static regeneration is a technique that allows for updating a static site without having to regenerate the entire site from scratch. The process only regenerates the specific pages that have changed, rather than regenerating the entire site, which can save time and resources. This technique makes it possible to only rebuild the affected pages while keeping the rest of the site the same, resulting in a much faster regeneration process. This is especially useful for sites with a large amount of content, and can be used in conjunction with a CMS that supports this feature. This way the content can be updated and only the updated pages will be regenerated and deployed. This can be especially beneficial for sites that are hosted on a CDN, as it can save on bandwidth and costs.&lt;/p&gt;

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

&lt;h2&gt;
  
  
  7. Partial Hydration
&lt;/h2&gt;

&lt;p&gt;Partial hydration is a technique that enables selective enhancement of specific parts of a static website, where only certain parts of the website receive dynamic functionality, rather than the entire site. This allows for faster loading times and improved performance, as well as reducing the amount of JavaScript needed to be loaded. It can be useful in cases where some pages are not in need of dynamic functionality, such as e-commerce website product listings, or a blog's static pages, but some parts that need interaction and dynamic functionality, such as product detail pages or commenting system. This way, the site can load faster and allow user to interact with the dynamic functionality only when needed.&lt;/p&gt;

&lt;p&gt;My go to pick is &lt;a href="https://www.gatsbyjs.com/"&gt;GatsbyJS&lt;/a&gt;&lt;/p&gt;

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

&lt;h2&gt;
  
  
  8. Islands
&lt;/h2&gt;

&lt;p&gt;This pattern allows for modular and reusable components that can be used on different parts of a web page, without being affected by the styles or behaviours of other elements on the page. This allows for greater flexibility and maintainability of the code, as well as improved performance.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Astro.JS is presumably based on Islands pattern.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  9. Streaming SSR
&lt;/h2&gt;

&lt;p&gt;Streaming Server-Side Rendering (SSR) is a technique in which the server sends HTML to the browser in chunks as it is generated, rather than waiting for the entire page to be rendered before sending any content to the browser. This allows the browser to start displaying the content of the page sooner, resulting in faster rendering times and a better user experience. In addition, it can reduce the time to first byte (TTFB), making the site to be perceived as faster by the users. Streaming SSR can be implemented using dedicated libraries or by creating a custom solution, although it is not a default feature in most of the web development frameworks or libraries.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Cd6ZI9Hr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc4gxnld4wbjlpwpcfaj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Cd6ZI9Hr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/sc4gxnld4wbjlpwpcfaj.png" alt="Image description" width="768" height="423"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Frameworks like NextJs or Gatsby are heavily compatible with that feature.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  10. Resumability
&lt;/h2&gt;

&lt;p&gt;The idea behind this pattern is to break the long running process into smaller chunks that can be resumed if the process is interrupted. For example, when uploading a large file, the file is divided into smaller parts, and each part is uploaded individually, with the state of the upload being saved at the end of each successful upload. This approach also applies to other long-running processes on the client-side, such as video rendering, image manipulation, etc. This pattern allows for a smoother and more reliable user experience and it's especially useful for complex and large web apps that need to maintain the state of a process across multiple pages and user interactions.&lt;/p&gt;

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

&lt;blockquote&gt;
&lt;p&gt;Next.JS and &lt;code&gt;React server components&lt;/code&gt; are designed with this pattern in mind.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h1&gt;
  
  
  Summary
&lt;/h1&gt;

&lt;p&gt;In conclusion, rendering patterns play a crucial role in web development as they allow for efficient and effective ways of handling various aspects of building web pages and applications. These patterns are designed to optimize performance, scalability, and user experience, making web pages faster and more reliable. Whether it's improving the loading time, providing dynamic functionality, or handling long-running processes, rendering patterns are essential tools for building high-quality web pages and applications.&lt;/p&gt;

&lt;h1&gt;
  
  
  References
&lt;/h1&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.patterns.dev/posts/islands-architecture/"&gt;https://www.patterns.dev/posts/islands-architecture/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://web.dev/rendering-on-the-web/"&gt;https://web.dev/rendering-on-the-web/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://techfi.tech/server-side-rendering-hydration-vs-resumability/"&gt;https://techfi.tech/server-side-rendering-hydration-vs-resumability/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>beginners</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>react</category>
    </item>
    <item>
      <title>How to debug JavaScript like a pro?</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Thu, 05 Jan 2023 17:25:46 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/how-to-debug-javascript-like-a-pro-1ph2</link>
      <guid>https://dev.to/pulkitsingh/how-to-debug-javascript-like-a-pro-1ph2</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x65t56l1o89iv1nqqzm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9x65t56l1o89iv1nqqzm.png" alt="Image description" width="642" height="389"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Debugging is an essential part of the software development process. It involves identifying and fixing errors, or "bugs," in your code that prevent it from running correctly. JavaScript, being a dynamic and interpreted language, is particularly prone to bugs, but fortunately, there are many tools and techniques available to help you debug your code effectively.&lt;/p&gt;

&lt;p&gt;Here are some common techniques for debugging JavaScript code:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Using the browser's developer console&lt;/strong&gt;: Most modern web browsers come with a built-in developer console that allows you to view errors, log messages, and inspect the state of your application at runtime. To open the developer console in Google Chrome, for example, you can use the &lt;code&gt;Ctrl + Shift + I&lt;/code&gt; keyboard shortcut or click on the "Menu" button (the three vertical dots) and select "More tools &amp;gt; Developer tools."&lt;/li&gt;
&lt;/ol&gt;

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

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Inspecting variables&lt;/strong&gt;: The developer console allows you to inspect the values of variables at a given point in your code. You can use the &lt;code&gt;console.log()&lt;/code&gt; function to log the values of variables to the console for inspection. For example:
&lt;/li&gt;
&lt;/ol&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;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&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="c1"&gt;// Output: 10&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stepping through code&lt;/strong&gt;: Most modern browsers also come with a "debugger" tool that allows you to pause the execution of your code at a specific line and inspect the state of your application. You can use the "Step Over" and "Step Into" buttons to execute one line of code at a time and see how the variables and function calls are affecting your application.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Using breakpoints&lt;/strong&gt;: A breakpoint is a marker that you can set in your code to pause the execution of your code at a specific line. You can set a breakpoint by clicking on the line number in the developer console's source code viewer or by using the debugger; statement in your code.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&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;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;10&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;debugger&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// Execution will pause here&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Catching exceptions&lt;/strong&gt;: JavaScript provides a try-catch statement that allows you to "catch" exceptions, or runtime errors, and handle them gracefully. For example:
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Code that may throw an exception&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="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Code to handle the exception&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here's an example of how you might use the try-catch statement to debug a runtime error:&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;try&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="nx"&gt;y&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;  &lt;span class="c1"&gt;// y is not defined, so an exception will be thrown&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="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;error&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="c1"&gt;// Output: "ReferenceError"&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;error&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;message&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;  &lt;span class="c1"&gt;// Output: "y is not defined"&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;These are just a few of the many tools and techniques available for debugging JavaScript code. With practice and patience, you can learn to identify and fix bugs effectively and become a more efficient and effective developer.&lt;/p&gt;




&lt;p&gt;In conclusion, debugging is an essential part of the software development process, and JavaScript, being a dynamic and interpreted language, is particularly prone to bugs. Fortunately, there are many tools and techniques available to help you debug your JavaScript code, such as using the browser's developer console, inspecting variables, stepping through code, using breakpoints, and catching exceptions. By becoming familiar with these tools and techniques, and with practice and patience, you can learn to identify and fix bugs effectively and become a more efficient and effective developer.&lt;/p&gt;

</description>
      <category>learning</category>
      <category>career</category>
    </item>
    <item>
      <title>Top UI libraries for Vue JS in 2023</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Tue, 03 Jan 2023 08:04:58 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/top-ui-libraries-for-vue-js-in-2023-1n23</link>
      <guid>https://dev.to/pulkitsingh/top-ui-libraries-for-vue-js-in-2023-1n23</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nthlkwd5idclt7ctte0.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F5nthlkwd5idclt7ctte0.gif" alt="Alt Text" width="444" height="332"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vue.js is a popular JavaScript framework for building web applications, and there are many UI libraries available that can be used to enhance the look and functionality of your Vue.js projects. These libraries provide a range of pre-designed and customizable UI components, such as forms, buttons, and layout elements, which can be easily integrated into your Vue.js projects. In this list, we will introduce you to a selection of popular UI libraries for Vue.js that you may want to consider for your projects.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://vuetifyjs.com/en/" rel="noopener noreferrer"&gt;Vuetify&lt;/a&gt;: A Material Design component framework that provides a wide range of pre-designed and customizable UI components.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://element.eleme.cn/#/en-US" rel="noopener noreferrer"&gt;Element&lt;/a&gt;: A library of UI components that is designed to be easy to use and customize.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://quasar.dev/" rel="noopener noreferrer"&gt;Quasar&lt;/a&gt;: A comprehensive UI library that provides a wide range of components, including forms, buttons, and layout elements.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://buefy.org/" rel="noopener noreferrer"&gt;Buefy&lt;/a&gt;: A lightweight UI library that provides a range of customizable UI components, including forms, buttons, and navbars.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://vuesax.com/" rel="noopener noreferrer"&gt;Vuesax&lt;/a&gt;: A library of UI components that includes a wide range of elements, such as forms, buttons, and layout components.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://bootstrap-vue.org/" rel="noopener noreferrer"&gt;Bootstrap-Vue&lt;/a&gt;: A UI library that provides a range of components based on the popular Bootstrap framework, including forms, buttons, and navbars.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.creative-tim.com/vuematerial/" rel="noopener noreferrer"&gt;Vue-Material&lt;/a&gt;: A Material Design component library that provides a wide range of customizable UI elements, including forms, buttons, and layout components.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://matsp.github.io/material-components-vue/" rel="noopener noreferrer"&gt;Vue-MDC&lt;/a&gt;: A library of UI components based on the Material Design specification, including forms, buttons, and layout elements.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.antdv.com/" rel="noopener noreferrer"&gt;Ant Design Vue&lt;/a&gt;: A library of UI components based on the popular Ant Design framework, including forms, buttons, and layout elements.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.opensourceagenda.com/projects/vue-lumino" rel="noopener noreferrer"&gt;Vue-Lumino&lt;/a&gt;: A library of UI components based on the popular Lumino framework, including forms, buttons, and layout elements.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.telerik.com/kendo-vue-ui" rel="noopener noreferrer"&gt;Vue-Kendo&lt;/a&gt;: A library of UI components based on the popular Kendo framework, including forms, buttons, and layout elements.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.npmjs.com/package/vue-fomantic-ui" rel="noopener noreferrer"&gt;Vue-Fomantic-UI&lt;/a&gt;: A library of UI components based on the popular Fomantic UI framework, including forms, buttons, and layout elements.&lt;/p&gt;

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

&lt;p&gt;&lt;a href="https://www.vue-tailwind.com/" rel="noopener noreferrer"&gt;Vue-Tailwind&lt;/a&gt;: A library of UI components based on the popular Tailwind CSS framework, including forms, buttons, and layout elements.&lt;/p&gt;

&lt;p&gt;These are just a few examples of the many UI libraries available for Vue.js. There are many other options to choose from, and the best choice will depend on your specific needs and preferences.&lt;/p&gt;




&lt;p&gt;In conclusion, there are many UI libraries available for Vue.js that can be used to enhance the look and functionality of your projects. These libraries provide a range of pre-designed and customizable UI components, such as forms, buttons, and layout elements, which can be easily integrated into your Vue.js projects. It is important to carefully evaluate the available options and choose the UI library that best meets your needs and preferences.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Have you used any of the UI libraries mentioned in this list? Do you have any experience with other UI libraries for Vue.js that you would recommend? Let us know in the comments below.&lt;/p&gt;
&lt;/blockquote&gt;

</description>
      <category>emptystring</category>
    </item>
    <item>
      <title>💅🏻If you're beautiful, follow this JS Code Style</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Sun, 01 Jan 2023 17:07:39 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/if-youre-beautiful-follow-this-js-code-style-3m99</link>
      <guid>https://dev.to/pulkitsingh/if-youre-beautiful-follow-this-js-code-style-3m99</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpasuaj69j6vmflkzbqe.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvpasuaj69j6vmflkzbqe.png" alt="Image description" width="498" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Summary 📑
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Soft tabs with two spaces&lt;/li&gt;
&lt;li&gt;Never use semicolons&lt;/li&gt;
&lt;li&gt;Always use single quotes&lt;/li&gt;
&lt;li&gt;Keep &lt;code&gt;else&lt;/code&gt; in the same line of closure of the &lt;code&gt;if&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Add spaces between operators&lt;/li&gt;
&lt;li&gt;Avoid single letter names&lt;/li&gt;
&lt;li&gt;Use lowerCamelCase&lt;/li&gt;
&lt;li&gt;Use the === operator&lt;/li&gt;
&lt;li&gt;Add spaces outside parentheses &lt;code&gt;()&lt;/code&gt; but avoid it inside&lt;/li&gt;
&lt;li&gt;Use function expressions instead of function declarations&lt;/li&gt;
&lt;li&gt;Anonimous function&lt;/li&gt;
&lt;li&gt;Ternary operator single line only&lt;/li&gt;
&lt;li&gt;Don't be dumb with ternary operator&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;const&lt;/code&gt; for all of your references, avoid using &lt;code&gt;var&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;If you must reassign references, use &lt;code&gt;let&lt;/code&gt; instead of &lt;code&gt;var&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Declare one &lt;code&gt;const&lt;/code&gt; or &lt;code&gt;let&lt;/code&gt; per declaration statement&lt;/li&gt;
&lt;li&gt;Use the literal syntax for &lt;code&gt;object&lt;/code&gt; creation&lt;/li&gt;
&lt;li&gt;Use the literal syntax for &lt;code&gt;array&lt;/code&gt; creation&lt;/li&gt;
&lt;li&gt;Declare &lt;code&gt;array&lt;/code&gt; items in list&lt;/li&gt;
&lt;li&gt;Function arguments indentation&lt;/li&gt;
&lt;li&gt;Method chaining&lt;/li&gt;
&lt;li&gt;Any non-trivial conditions must be assigned to a variable or function with a descriptive name&lt;/li&gt;
&lt;li&gt;Try to write comments that explain higher level mechanisms or clarify difficult segments of your code&lt;/li&gt;
&lt;li&gt;Don't use comments to trivial things&lt;/li&gt;
&lt;li&gt;References&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Soft tabs with two spaces
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/indent" rel="noopener noreferrer"&gt;indent&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;h2&gt;
  
  
  Never use semicolons
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/semi" rel="noopener noreferrer"&gt;semi&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;h2&gt;
  
  
  Always use single quotes
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/quotes" rel="noopener noreferrer"&gt;quotes&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;h2&gt;
  
  
  Keep &lt;code&gt;else&lt;/code&gt; in the same line of closure of the &lt;code&gt;if&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/2.0.0/rules/brace-style" rel="noopener noreferrer"&gt;brace-style&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;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;False&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="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;True&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;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;False&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;h2&gt;
  
  
  Add spaces between operators
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/space-infix-ops" rel="noopener noreferrer"&gt;space-infix-ops&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for &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="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="mi"&gt;10&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="p"&gt;...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;for &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="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="mi"&gt;10&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="p"&gt;...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Avoid single letter names
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Be descriptive with your naming. Eslint: &lt;a href="https://eslint.org/docs/rules/id-length" rel="noopener noreferrer"&gt;id-length&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;q&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;query&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;h2&gt;
  
  
  Use lowerCamelCase
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/camelcase" rel="noopener noreferrer"&gt;camelcase&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;is_error&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;isError&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use the === operator
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/eqeqeq" rel="noopener noreferrer"&gt;eqeqeq&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;example&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Is a example&lt;/span&gt;&lt;span class="dl"&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;example&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;15&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;example&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Is a example&lt;/span&gt;&lt;span class="dl"&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;example&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;15&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;h2&gt;
  
  
  Add spaces outside parentheses &lt;code&gt;()&lt;/code&gt; but avoid it inside
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/keyword-spacing" rel="noopener noreferrer"&gt;keyword-spacing&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if&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="p"&gt;...&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &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="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;h2&gt;
  
  
  Use function expressions instead of function declarations
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/func-style" rel="noopener noreferrer"&gt;func-style&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;foo&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&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="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  When you must use function expressions (as when passing an anonymous function), use &lt;code&gt;arrow function&lt;/code&gt; notation
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/prefer-arrow-callback" rel="noopener noreferrer"&gt;prefer-arrow-callback&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;function &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="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&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;1&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="nf"&gt;map&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="o"&gt;=&amp;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;y&lt;/span&gt; &lt;span class="o"&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;1&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Ternary operator single line only
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;The ternary operator should be used on a single line.&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&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="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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&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="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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Don't be dumb with ternary operator
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Disallow ternary operators when simpler alternatives exist. Eslint: &lt;a href="https://eslint.org/docs/rules/no-unneeded-ternary" rel="noopener noreferrer"&gt;no-unneeded-ternary&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isYes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;answer&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="kc"&gt;true&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isYes&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;answer&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use &lt;code&gt;const&lt;/code&gt; for all of your references, avoid using &lt;code&gt;var&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/prefer-const" rel="noopener noreferrer"&gt;prefer-const&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  If you must reassign references, use &lt;code&gt;let&lt;/code&gt; instead of &lt;code&gt;var&lt;/code&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/no-var" rel="noopener noreferrer"&gt;no-var&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="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="k"&gt;if &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="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="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&lt;/span&gt;&lt;span class="dl"&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;condition&lt;/span&gt;&lt;span class="p"&gt;)&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="mi"&gt;1&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Declare one &lt;code&gt;const&lt;/code&gt; or &lt;code&gt;let&lt;/code&gt; per declaration statement
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/one-var" rel="noopener noreferrer"&gt;one-var&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
      &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./foo&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./bar&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;./foo&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;h2&gt;
  
  
  Use the literal syntax for &lt;code&gt;object&lt;/code&gt; creation
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/no-new-object" rel="noopener noreferrer"&gt;no-new-object&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Use the literal syntax for &lt;code&gt;array&lt;/code&gt; creation
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/no-array-constructor" rel="noopener noreferrer"&gt;no-array-constructuor&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;Array&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Declare &lt;code&gt;array&lt;/code&gt; items in list
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&amp;gt;= 4 arguments: indent. Eslint: &lt;a href="https://eslint.org/docs/rules/array-element-newline" rel="noopener noreferrer"&gt;array-element-newline&lt;/a&gt; and &lt;a href="https://eslint.org/docs/rules/array-bracket-newline" rel="noopener noreferrer"&gt;array-bracket-newline&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;hello&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;world&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 javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;hello&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;world&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;lore&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;impsum&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;hello&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;world&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 javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;hello&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;word&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;lore&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;impsum&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;h2&gt;
  
  
  Function arguments indentation
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;&amp;gt;= 4 arguments: indent (excerpt callbacks brackets). Eslint: &lt;a href="https://eslint.org/docs/rules/function-paren-newline" rel="noopener noreferrer"&gt;function-paren-newline&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;lore&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;impsum&lt;/span&gt;&lt;span class="dl"&gt;'&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;/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;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;carls&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;farls&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;karen&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;logan&lt;/span&gt;&lt;span class="dl"&gt;'&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;/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="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;statements&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;lore&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;impsum&lt;/span&gt;&lt;span class="dl"&gt;'&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;/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;const&lt;/span&gt; &lt;span class="nx"&gt;foo&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;carls&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;farls&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;karen&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;logan&lt;/span&gt;&lt;span class="dl"&gt;'&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;/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="nx"&gt;foo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;bar&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;string&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="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;statements&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Method chaining
&lt;/h2&gt;

&lt;p&gt;&lt;em&gt;Eslint: &lt;a href="https://eslint.org/docs/rules/newline-per-chained-call" rel="noopener noreferrer"&gt;newline-per-chained-call&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;user&lt;/span&gt;
&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findOne&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;foo&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;populate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&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;exec&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;err&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="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;user&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findOne&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;foo&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;populate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&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;exec&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;err&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="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;user&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;findOne&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;foo&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;populate&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;bar&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;exec&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;err&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="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&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;h2&gt;
  
  
  Any non-trivial conditions must be assigned to a variable or function with a descriptive name
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;password&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;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;(?=&lt;/span&gt;&lt;span class="sr"&gt;.*&lt;/span&gt;&lt;span class="se"&gt;\d)&lt;/span&gt;&lt;span class="sr"&gt;.&lt;/span&gt;&lt;span class="se"&gt;{4,}&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;password&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;isValidPassword&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;password&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;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span class="sr"&gt;/^&lt;/span&gt;&lt;span class="se"&gt;(?=&lt;/span&gt;&lt;span class="sr"&gt;.*&lt;/span&gt;&lt;span class="se"&gt;\d)&lt;/span&gt;&lt;span class="sr"&gt;.&lt;/span&gt;&lt;span class="se"&gt;{4,}&lt;/span&gt;&lt;span class="sr"&gt;$/&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;password&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;isValidPassword&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;h2&gt;
  
  
  Try to write comments that explain higher level mechanisms or clarify difficult segments of your code
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;var(--bar)&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;

&lt;span class="c1"&gt;// Regexp&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;foo&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/var&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\)&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="p"&gt;,&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="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;--bar&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;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;var(--bar)&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;value&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;foo&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/var&lt;/span&gt;&lt;span class="se"&gt;\(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="p"&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;// Remove the 'var('&lt;/span&gt;
            &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="se"&gt;\)&lt;/span&gt;&lt;span class="sr"&gt;/&lt;/span&gt;&lt;span class="p"&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;// Remove the ')'&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;foo&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;--bar&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;h2&gt;
  
  
  Don't use comments to trivial things
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Wrong:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;
&lt;span class="c1"&gt;// Create the passwors&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;carls1234&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Correct:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;password&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;carls1234&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;p&gt;Project inspired by &lt;a href="https://github.com/valleweb/valle-style-guide/blob/master/js-style-guide.md" rel="noopener noreferrer"&gt;valle-style-guide&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>lowcode</category>
      <category>productivity</category>
      <category>career</category>
    </item>
    <item>
      <title>Async Await v/s Promises?</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Sun, 18 Dec 2022 16:45:01 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/async-await-vs-promises-560m</link>
      <guid>https://dev.to/pulkitsingh/async-await-vs-promises-560m</guid>
      <description>&lt;p&gt;Both async/await and promises are ways to handle asynchronous code in JavaScript. They are not mutually exclusive and can be used together or independently, depending on your needs and preferences.&lt;/p&gt;

&lt;h2&gt;
  
  
  Async Await
&lt;/h2&gt;

&lt;p&gt;Async/await is a more modern and concise syntax for working with promises. It allows you to write asynchronous code that looks and behaves like synchronous code, using the async and await keywords.&lt;/p&gt;

&lt;p&gt;For example, with async/await, you can write code 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;async function getData() {
  const response = await fetch('https://example.com/data');
  const data = await response.json();
  return data;
}

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

&lt;/div&gt;



&lt;h2&gt;
  
  
  Promises
&lt;/h2&gt;

&lt;p&gt;Promises are a pattern for handling asynchronous operations in JavaScript. They represent the result of an asynchronous operation that may not be available yet. You can use the .then() method to specify what should happen when the promise resolves (i.e., when the asynchronous operation is completed).&lt;/p&gt;

&lt;p&gt;For example, with promises, you can write code 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;async function getData() {
  const response = await fetch('https://example.com/data');
  const data = await response.json();
  return data;
}

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

&lt;/div&gt;



&lt;p&gt;In general, async/await can make your code easier to read and understand, especially for longer or more complex asynchronous operations. However, it's important to note that async/await is built on top of promises, so you will still need to understand how promises work in order to use async/await effectively.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>discuss</category>
      <category>help</category>
    </item>
    <item>
      <title>What is Jam Stack? Is jamstack the future of static website?</title>
      <dc:creator>Pulkit Singh</dc:creator>
      <pubDate>Sat, 17 Dec 2022 04:42:17 +0000</pubDate>
      <link>https://dev.to/pulkitsingh/what-is-jam-stack-is-jamstack-the-future-of-static-website-3mbd</link>
      <guid>https://dev.to/pulkitsingh/what-is-jam-stack-is-jamstack-the-future-of-static-website-3mbd</guid>
      <description>&lt;h2&gt;
  
  
  What is Jamstack?
&lt;/h2&gt;

&lt;p&gt;Jamstack is an architecture designed to make the web faster, more secure, and easier to scale. It builds on many of the tools and workflows which developers love, and which bring maximum productivity. Mathias Biilmann, CEO of Netlify, coined &lt;a href="https://jamstack.org/"&gt;JAMstack&lt;/a&gt; and describes it as &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“A modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt Markup.” &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The three elements of JAMstack include – &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;JavaScript&lt;/strong&gt; – Entire execution on client-site for dynamic functionality &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;APIs&lt;/strong&gt; – Reusable APIS for backend interaction accessed using HTTPS &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Markup&lt;/strong&gt; – Templates prebuilt with static site generators at deploy time!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--H43j96FJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jef71yrr2530vcvc7da6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--H43j96FJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jef71yrr2530vcvc7da6.jpg" alt="Image description" width="880" height="461"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why choose jamstack? A Jamstack architecture can bring all sorts of benefits to the sites and to project workflows. Some of the key benefits are:
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. Security The Jamstack removes multiple moving parts and systems from the hosting infrastructure resulting in fewer servers and systems to harden against attack.
&lt;/h4&gt;

&lt;p&gt;Serving pages and assets as pre-generated files allows read-only hosting reducing attack vectors even further. Meanwhile dynamic tools and services can be provided by vendors with teams dedicated to securing their specific systems and providing high levels of service. &lt;/p&gt;

&lt;h4&gt;
  
  
  2. Scale Popular architectures deal with heavy traffic loads by adding logic to cache popular views and resources.
&lt;/h4&gt;

&lt;p&gt;The Jamstack provides this by default. When sites can be served entirely from a CDN there is no complex logic or workflow to determine what assets can be cached and when. With Jamstack sites everything can be cached in a content delivery network. With simpler deployments, built-in redundancy and incredible load capacity. &lt;/p&gt;

&lt;h4&gt;
  
  
  3. Performance Page loading speeds have an impact on user experience and conversion.
&lt;/h4&gt;

&lt;p&gt;Jamstack sites remove the need to generate page views on a server at request time by instead generating pages ahead of time during a build. With all the pages are already available on a CDN close to the user and ready to serve, very high performance is possible without introducing expensive or complex infrastructure. &lt;/p&gt;

&lt;h3&gt;
  
  
  4. Static sites builders There are many static site builder tools for every framework possible, and others like Hugo and Jekyll. My go to pick is &lt;a href="https://www.gatsbyjs.com/"&gt;GatsbyJS&lt;/a&gt;
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YvquFTmQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fgy135pzsz2kniypufku.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YvquFTmQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fgy135pzsz2kniypufku.jpg" alt="Image description" width="880" height="338"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;We learned about jamstack, and how jamstack sites are faster and more secure than traditional web building methods which requires additional web servers and databases. In traditional web methods like JAVA Spring or Laravel, database is hit each time a page is refreshed to fetch content. But in jamstack we only hit a database request at the time of build and all pages are generated statically which are faster and more secure, cause there's no database layer connected to the static HTML files, hence no fear of SQL-Injection or such things.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
