<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Yuli Petrilli</title>
    <description>The latest articles on Forem by Yuli Petrilli (@ypdev19).</description>
    <link>https://forem.com/ypdev19</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%2F1019215%2F3d7fb022-8dcc-4d78-a410-4fa03049b3bb.png</url>
      <title>Forem: Yuli Petrilli</title>
      <link>https://forem.com/ypdev19</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ypdev19"/>
    <language>en</language>
    <item>
      <title>👀 Top Free Public APIs for Your Next Project (2026)</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Sat, 18 Apr 2026 23:30:19 +0000</pubDate>
      <link>https://forem.com/ypdev19/top-free-public-apis-for-your-next-project-2026-4lio</link>
      <guid>https://forem.com/ypdev19/top-free-public-apis-for-your-next-project-2026-4lio</guid>
      <description>&lt;p&gt;One of the smartest ways to speed up project development is by using &lt;strong&gt;Free APIs&lt;/strong&gt;. APIs are essential tools in modern development and give your application instant access to external data, authentication systems, AI services, and other backend capabilities, allowing developers to focus on building features instead of infrastructure.&lt;/p&gt;

&lt;p&gt;Instead of building every feature from scratch, developers can integrate APIs to add powerful capabilities quickly and focus on creating meaningful application experiences.&lt;/p&gt;

&lt;p&gt;Here's a top 6 list of free APIs of my personal choice:&lt;/p&gt;

&lt;h2&gt;
  
  
  1. JSONPlaceholder
&lt;/h2&gt;

&lt;p&gt;JSONPlaceholder is a lifesaver when you're prototyping or building out a frontend while the backend is still under development. It provides realistic mock data for posts, users, and comments, allowing your UI to behave exactly like a production app. Since no API key or setup is required, you can start fetching data instantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://jsonplaceholder.typicode.com/" rel="noopener noreferrer"&gt;JSONPlaceholder API&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Api key required:&lt;/strong&gt; No&lt;/p&gt;

&lt;h2&gt;
  
  
  2. GitHub API
&lt;/h2&gt;

&lt;p&gt;The GitHub API is an incredibly powerful tool that lets you interact with almost every feature of GitHub programmatically. You can connect to code and projects; access repositories, user info, commit history, and more. It’s very useful for making dashboards that showcase your own github statistics in a portfolio like a list of your most active repositories.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://docs.github.com/es/rest" rel="noopener noreferrer"&gt;Learn more about in Github API Official Docs&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Api key required:&lt;/strong&gt; yes and no&lt;/p&gt;

&lt;h2&gt;
  
  
  3. REST Countries
&lt;/h2&gt;

&lt;p&gt;REST Countries provides information about countries, including flags, currencies, languages, and population. It's a good choice that contains a vast set of data about countries around the world.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://restcountries.com/#api-endpoints" rel="noopener noreferrer"&gt;restcountries&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Api key required:&lt;/strong&gt; yes&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The Movie Database
&lt;/h2&gt;

&lt;p&gt;The Movie Database offers a large dataset of movies and TV, including the most populars movies, TV shows and more. It also supports the search and discover based on certain criteria.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://www.themoviedb.org/documentation/api" rel="noopener noreferrer"&gt;themoviedb&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Api key required:&lt;/strong&gt; yes&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Spoonacular
&lt;/h2&gt;

&lt;p&gt;This incredibly API offers a large set of data for ingredients, recipes, products and menu items, a great food or nutrition app could be built using this API.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://spoonacular.com/food-api" rel="noopener noreferrer"&gt;spoonacular&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Api key required:&lt;/strong&gt; yes&lt;/p&gt;

&lt;h2&gt;
  
  
  6. The Dog API
&lt;/h2&gt;

&lt;p&gt;An API all about dogs. It offers random dog images, breeds, and facts for fun or practice projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link:&lt;/strong&gt; &lt;a href="https://thedogapi.com/" rel="noopener noreferrer"&gt;thedogapi&lt;/a&gt;&lt;br&gt;
&lt;strong&gt;Api key required:&lt;/strong&gt; yes (sign up to get your key)&lt;/p&gt;

&lt;p&gt;From this list, I personally like the dog API and the REST country. &lt;strong&gt;What other free interesting APIs do you know about?&lt;/strong&gt; &lt;em&gt;Thank you for reading!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>api</category>
      <category>web</category>
      <category>webdev</category>
    </item>
    <item>
      <title>⚛️ React Learning Roadmap 2026: Guide for Beginners</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Sun, 29 Mar 2026 23:01:44 +0000</pubDate>
      <link>https://forem.com/ypdev19/react-roadmap-2026-guide-for-beginners-4e19</link>
      <guid>https://forem.com/ypdev19/react-roadmap-2026-guide-for-beginners-4e19</guid>
      <description>&lt;p&gt;Staying competitive in 2026 as a frontend or fullstack developer means knowing which tools and code patterns are actually used in the industry and React remains one of the most in-demand libraries for developers because of its versatility in large-scale projects.&lt;/p&gt;

&lt;p&gt;This roadmap is designed with a clear, modern learning path without getting overwhelmed and just with the essentials. It reflects current industry practices and focuses on skills that actually matter in real-world React projects. Let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Javascript Fundamentals
&lt;/h2&gt;

&lt;p&gt;This one is a &lt;strong&gt;Non-Negotiable&lt;/strong&gt;. Before jumping into React, you need a solid understanding of &lt;strong&gt;modern Javascript&lt;/strong&gt;. React assumes you’re comfortable with &lt;em&gt;core JS concepts and ES6+ syntax&lt;/em&gt;. So you should focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Variables (&lt;/em&gt;&lt;em&gt;let&lt;/em&gt;&lt;em&gt;, **const&lt;/em&gt;&lt;em&gt;)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Functions and arrow functions&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Conditionals and loops&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Objects&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Array Functions&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Object &amp;amp; array destructuring&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Spread and rest operators&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Optional chaining (&lt;/em&gt;&lt;em&gt;?.&lt;/em&gt;&lt;em&gt;)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Asynchronous Javascript (&lt;/em&gt;&lt;em&gt;Promises, Async/Await&lt;/em&gt;&lt;em&gt;)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;These concepts will drive you directly to how React components manage data, render UI, and handle user interactions.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Some Recommended Resources from the blog:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.codeqazone.com/javascript-object-destructuring/" rel="noopener noreferrer"&gt;Javascript Object Destructuring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codeqazone.com/complete-javascript-array-methods-guide/" rel="noopener noreferrer"&gt;Complete Javascript Array Methods Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codeqazone.com/must-known-javascript-array-methods/" rel="noopener noreferrer"&gt;6 Must‑Know JS Array Methods&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. HTML &amp;amp; CSS Fundamentals
&lt;/h2&gt;

&lt;p&gt;React doesn’t replace HTML or CSS, it &lt;strong&gt;builds on top of them&lt;/strong&gt;. That's why you should be comfortable with topics like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Semantic HTML&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Flexbox and Grid&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Responsive design&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For a styling approach, some CSS frameworks and tools you’ll find the most:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tailwind CSS&lt;/strong&gt; (very popular in modern projects)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS Modules&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Component libraries like &lt;strong&gt;MUI&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Styled-components (still used, but no longer dominant)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You could also take a look at CSS frameworks, these can be really helpful, the one I will always recommend is &lt;strong&gt;&lt;a href="https://getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt;&lt;/strong&gt; or its react version: &lt;strong&gt;&lt;a href="https://react-bootstrap.github.io/" rel="noopener noreferrer"&gt;React Bootstrap&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;The key is understanding **how to style components&lt;/em&gt;&lt;em&gt;, not locking yourself into one tool.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  3. Understanding REST APIs
&lt;/h2&gt;

&lt;p&gt;Most React applications revolve around &lt;strong&gt;data from APIs&lt;/strong&gt;. That's why you should make sure to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;What REST APIs are&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;HTTP methods (&lt;code&gt;GET&lt;/code&gt;, &lt;code&gt;POST&lt;/code&gt;, &lt;code&gt;PUT&lt;/code&gt;, &lt;code&gt;DELETE&lt;/code&gt;)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Status codes (At least the most common use)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Fetching data and handling loading/error states&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It's also important to learn how to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;Fetch data using **fetch&lt;/em&gt;* or &lt;strong&gt;axios&lt;/strong&gt;*&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Display API data in components&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Handle errors gracefully&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Recommended Resource from the blog:&lt;/strong&gt; &lt;em&gt;&lt;a href="https://www.codeqazone.com/rest-api-http-methods/" rel="noopener noreferrer"&gt;When to Use GET, POST, PUT, DELETE and PATCH in REST APIs&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Also you could take a look at &lt;em&gt;&lt;a href="https://www.freecodecamp.org/news/build-consume-and-document-a-rest-api/" rel="noopener noreferrer"&gt;Rest API Handbook by freecodecamp&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Learning React Fundamentals
&lt;/h2&gt;

&lt;p&gt;Before jumping into frameworks or meta-tools, focus on just &lt;strong&gt;learning React itself&lt;/strong&gt;. Start with the official documentation, it’s well-maintained and beginner-friendly. Then, explore other tutorials that match your learning style.&lt;br&gt;
&lt;strong&gt;&lt;a href="https://react.dev/learn" rel="noopener noreferrer"&gt;Check the Official React Docs&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Core React Concepts to Master
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Functional components&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;JSX&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Props&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Routing&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;State management with **useState&lt;/em&gt;**&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Side effects with **useEffect&lt;/em&gt;**&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Controlled inputs and forms&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Conditional rendering&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Rendering lists&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Event handling&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;Hooks (most importantly: **useState, useEffect, useRef, useContext&lt;/em&gt;&lt;em&gt;)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Server-Side Rendering (SSR) (just the basics to start)&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. TypeScript (Strongly Recommended)
&lt;/h2&gt;

&lt;p&gt;TypeScript is no longer optional in most professional React environments. You don’t need to master it immediately, but you should understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Basic types&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Typing props and state&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Typing API responses&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  6. Tooling
&lt;/h2&gt;

&lt;p&gt;Make sure to make yourself familiar with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Version control with Git (super essential to learn the fundamentals like branching, clone, commit, push, pull, resolving merge conflicts)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Vite&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;npm&lt;/strong&gt;, &lt;strong&gt;yarn&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Create React App (CRA) is deprecated and no longer recommended.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  7. Get Your Hands Dirty with a Few Projects
&lt;/h2&gt;

&lt;p&gt;Start small and grow gradually. Then move on to more complete apps like a full CRUD app with a database or local storage. If you want to go further, try building real-life projects like: A movie listing app, user registration form, a recipes search app, etc.&lt;/p&gt;

&lt;p&gt;Choose topics that genuinely interest you, it’ll keep you motivated and engaged and avoid getting stuck in tutorial hell, apply what you learn as you go. Going into the actual practice is what solidifies your skills and helps build a strong portfolio.&lt;/p&gt;

&lt;p&gt;Check this post with free APIs for project &lt;strong&gt;&lt;a href="https://www.codeqazone.com/free-public-apis-list/" rel="noopener noreferrer"&gt;Free Public APIs&lt;/a&gt;&lt;/strong&gt; you could for your next React project.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Bonus: GraphQL
&lt;/h2&gt;

&lt;p&gt;GraphQL is powerful and used in many working places, but it’s &lt;strong&gt;not required for beginners&lt;/strong&gt;. Learn it if:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Your project or job requires it&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;You already understand REST APIs well&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Think of GraphQL as an &lt;strong&gt;advanced tool&lt;/strong&gt;, not a prerequisite.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Bonus: Testing Basics
&lt;/h2&gt;

&lt;p&gt;You don’t need to be a testing expert but understanding how to test components is increasingly expected in junior roles and an overall plus for you tech stack. So you should make sure to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Why testing components matters&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;The role of tools like Jest and React Testing Library&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Thoughts
&lt;/h2&gt;

&lt;p&gt;Even when there is so much more to learn about React, you don’t need to learn everything at once. Focus on the &lt;strong&gt;fundamentals&lt;/strong&gt;, build real projects, and expand your toolset as needed.&lt;/p&gt;

&lt;p&gt;I hope this roadmap will be a good starting point for you and help you on your own journey. I made it based on my own experience and some research. If you know somebody whom this could be of help please share!&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>frontend</category>
    </item>
    <item>
      <title>🏆⚛️React Roadmap Guide for Beginners 2025</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Fri, 05 Sep 2025 22:57:54 +0000</pubDate>
      <link>https://forem.com/ypdev19/react-roadmap-guide-for-beginners-2025-updated-2050</link>
      <guid>https://forem.com/ypdev19/react-roadmap-guide-for-beginners-2025-updated-2050</guid>
      <description>&lt;p&gt;React remains one of the most in-demand tools in modern frontend development, as it is one of the most popular JavaScript libraries for building user interfaces. It’s widely used for both small-scale and large-scale applications.&lt;/p&gt;

&lt;p&gt;That’s why I've collected the most helpful learning tips and up-to-date resources to guide you in your learning journey with React, whether you’re a newbie or a seasoned developer. I put up this material based on my own experience so far and advice I’ve received from senior developers. &lt;/p&gt;

&lt;p&gt;You can check an up to date and detailed version of this article is available here → &lt;a href="https://www.codeqazone.com/react-roadmap-2026-for-beginners/" rel="noopener noreferrer"&gt;React Roadmap 2026: Guide for Beginners - Code &amp;amp; QA Zone&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 JavaScript Fundamentals + ES6
&lt;/h2&gt;

&lt;p&gt;To succeed in React (and any other JS framework), having solid foundations in JavaScript is essential. Get familiar with common array operations like &lt;strong&gt;map&lt;/strong&gt;, &lt;strong&gt;filter&lt;/strong&gt; and &lt;strong&gt;reduce&lt;/strong&gt;, &lt;strong&gt;pop&lt;/strong&gt;, &lt;strong&gt;slice&lt;/strong&gt;, &lt;strong&gt;find&lt;/strong&gt;, &lt;strong&gt;push&lt;/strong&gt;. Also, learn how the asynchronous patterns works, particularly through &lt;strong&gt;Promises&lt;/strong&gt; and the &lt;strong&gt;async/await&lt;/strong&gt; syntax since these are crucial when working with API calls to fetch and manipulate data.&lt;/p&gt;

&lt;p&gt;Additionally, make sure you understand the essentials of ES6, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arrow functions&lt;/li&gt;
&lt;li&gt;Object destructuring&lt;/li&gt;
&lt;li&gt;Template literals&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Spread and rest operators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These modern JavaScript features will help you write cleaner code and follow best practices in React development. Here are a few of my favorite sites with really good source material:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/" rel="noopener noreferrer"&gt;JavaScript Algorithms and Data Structures in Freecodecamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/js/default.asp" rel="noopener noreferrer"&gt;W3Schools Javascript Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.javascripttutorial.net/es6/" rel="noopener noreferrer"&gt;ES6 Tutorial from Javascript Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codeqazone.com/javascript-object-destructuring/" rel="noopener noreferrer"&gt;Learning Object Destructuring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/codeofrelevancy/javascript-array-methods-cheatsheet-4abn"&gt;JavaScript Array Methods Cheatsheet by Code of Relevancy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Solid Understanding of HTML &amp;amp; CSS
&lt;/h2&gt;

&lt;p&gt;If you haven't already, begin with the fundamentals of HTML and CSS, this is key for building any web application. Here are some quality resources to learn or reinforce your knowledge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/html/" rel="noopener noreferrer"&gt;HTML in w3schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/css/default.asp" rel="noopener noreferrer"&gt;CSS in w3schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/learn/learn-html" rel="noopener noreferrer"&gt;HTML in codecademy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/learn/learn-css" rel="noopener noreferrer"&gt;CSS in codecademy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You could also take a look at CSS frameworks, these can be really helpful to save us time when building applications. These are my favorites (and the populars):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt; or &lt;a href="https://react-bootstrap.github.io/" rel="noopener noreferrer"&gt;React Bootstrap&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mui.com/material-ui/" rel="noopener noreferrer"&gt;Material UI React components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 API's
&lt;/h2&gt;

&lt;p&gt;Understanding &lt;strong&gt;how to consume or build APIs&lt;/strong&gt; is crucial to working with dynamic data in frontend applications.&lt;/p&gt;

&lt;p&gt;Even if you’re focusing only on frontend, at least grasp the basics of how to consume RESTful APIs. This will allow you to fetch and manipulate data effectively in React. Here are some resources that could help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/build-consume-and-document-a-rest-api/" rel="noopener noreferrer"&gt;Rest API Handbook by freecodecamp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Learning React Itself
&lt;/h2&gt;

&lt;p&gt;Focus solely on React before diving into related tools or frameworks like Next.js, Tailwind, etc. Start with the official documentation, it’s well-maintained and beginner-friendly. Then, explore other tutorials that match your learning style.&lt;/p&gt;

&lt;p&gt;Quick start 👉 &lt;a href="https://react.dev/learn" rel="noopener noreferrer"&gt;official tuto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here's a list of key React concepts to learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Props&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Routing&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Built-in Components&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Hooks (useState, useEffect, useRef, useContext, etc)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;State Managment&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Functional Components&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Higher-Order Components (HOC)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Server-Side Rendering (SSR) vs. Single Page Applications (SPA)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Conditional Rendering and lists.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Events&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Arrow Function Components&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Get Your Hands Dirty with a Few Projects
&lt;/h2&gt;

&lt;p&gt;Start small to apply what you’ve learned. Then move on to more complete apps like a full CRUD app with a database or local storage. If you want to go further, try building real-life projects like: A movie listing app, user registration form, a recipes search app, etc.&lt;/p&gt;

&lt;p&gt;Choose topics that genuinely interest you, it’ll keep you motivated and engaged and avoid getting stuck in tutorial hell, apply what you learn as you go. Hands-on practice is what solidifies your skills and helps build a strong portfolio.&lt;/p&gt;

&lt;p&gt;Check this post with free APIs for project 👉 &lt;a href="https://dev.to/ypdev19/6-free-public-apis-with-interesting-data-for-your-next-project-17b5"&gt;free public APIs&lt;/a&gt; you could for your next React project.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: GraphQL
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://graphql.org/" rel="noopener noreferrer"&gt;Graphql&lt;/a&gt; is a very powerful tool and it makes queries and requests much easier. After learning the basics with APIs and everything around that, I suggest you to give a look on how to use GraphQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: Styled Components
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://styled-components.com/" rel="noopener noreferrer"&gt;Styled components&lt;/a&gt; is a &lt;em&gt;&lt;strong&gt;CSS-in-JS&lt;/strong&gt;&lt;/em&gt; tool that bridges the gap between components and styling. The main goal of this tool is to provide us a flexible way to add custom styling to our components in a functional and reusable way.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: TypeScript
&lt;/h2&gt;

&lt;p&gt;Just take a look at the basics, you don’t have to go all in right away, but learning the basics can make you a much stronger developer. It brings type safety and better tooling to your React code.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: Tooling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npm or yarn&lt;/strong&gt;: Familiarise yourself with learning to use npm or yarn to manage project dependencies. These are very important when it comes down to installing libraries necessary for your development setup when working with React.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version control using git:&lt;/strong&gt; learn the fundamental of Git, the essential commands such as 'git init', git clone, 'git commit', and 'git push', also, branch handling and merge request managment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💭 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;There is so much more to learn about React but I hope this guideline will be a good starting point for you and help you on your own journey. If you know somebody whom this could be of help please share! 🙌&lt;/p&gt;

&lt;p&gt;If there's an item you would like to share to complement this, feel free to go and post a comment about it! 👇&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>frontend</category>
    </item>
    <item>
      <title>How to Count Daily Records with MySQL</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Wed, 23 Jul 2025 23:07:22 +0000</pubDate>
      <link>https://forem.com/ypdev19/how-to-count-daily-records-with-mysql-m62</link>
      <guid>https://forem.com/ypdev19/how-to-count-daily-records-with-mysql-m62</guid>
      <description>&lt;p&gt;Recently, as part of a task at work, I had to do a count on how many records a table was having per day based also on some other criteria.&lt;/p&gt;

&lt;p&gt;In this post, we will focus on the core part of this, the &lt;strong&gt;"the count records per day"&lt;/strong&gt;, since it can be easily reuse for different approaches.&lt;/p&gt;

&lt;p&gt;Let's start!  &lt;/p&gt;

&lt;h2&gt;
  
  
  The Solution
&lt;/h2&gt;

&lt;p&gt;A basic Query to count records  grouped by day:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;SELECT&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;`date`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;record_date&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
       &lt;span class="k"&gt;COUNT&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;AS&lt;/span&gt; &lt;span class="n"&gt;records&lt;/span&gt;
  &lt;span class="k"&gt;FROM&lt;/span&gt; &lt;span class="n"&gt;records&lt;/span&gt;
 &lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="nv"&gt;`date`&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="s1"&gt;'2024-09-17'&lt;/span&gt;
   &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;`date`&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt;  &lt;span class="s1"&gt;'2024-09-19'&lt;/span&gt;
&lt;span class="k"&gt;GROUP&lt;/span&gt; &lt;span class="k"&gt;BY&lt;/span&gt; &lt;span class="nb"&gt;DATE&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nv"&gt;`date`&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Why use &lt;code&gt;DATE()&lt;/code&gt; and not &lt;code&gt;DAYOFMONTH()&lt;/code&gt;?
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;DAYOFMONTH()&lt;/code&gt; only extracts the day number(1-31), which can be confusing if you're having data if your range spans multiple months. &lt;/p&gt;

&lt;p&gt;By using &lt;code&gt;DATE()&lt;/code&gt;, we include the full date (year, month, day) and ensure each record group is unique and accurate.&lt;/p&gt;

&lt;h2&gt;
  
  
  Making It Dynamic
&lt;/h2&gt;

&lt;p&gt;If you want to count records for the past N days dynamically, adjust the  &lt;code&gt;WHERE&lt;/code&gt; clause like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight sql"&gt;&lt;code&gt;&lt;span class="k"&gt;WHERE&lt;/span&gt; &lt;span class="nv"&gt;`date`&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;CURDATE&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;INTERVAL&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt; &lt;span class="k"&gt;DAY&lt;/span&gt;
  &lt;span class="k"&gt;AND&lt;/span&gt; &lt;span class="nv"&gt;`date`&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;CURDATE&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Replace the &lt;code&gt;7&lt;/code&gt; with the number of days you need. This could be helpful for tasks like track daily data.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt; &lt;br&gt;
&lt;em&gt;If you found this post helpful, hit that ❤️ button and check out my blog for more content:&lt;/em&gt; 👉 &lt;em&gt;&lt;a href="https://www.codeqazone.com/" rel="noopener noreferrer"&gt;Code &amp;amp; QA Zone&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>mysql</category>
      <category>database</category>
      <category>learning</category>
      <category>webdev</category>
    </item>
    <item>
      <title>5 VS Code Extensions for a Better Coding &amp; QA Experience (2026)</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Sat, 29 Apr 2023 20:55:37 +0000</pubDate>
      <link>https://forem.com/ypdev19/5-useful-vs-code-extensions-for-a-better-coding-experience-33d</link>
      <guid>https://forem.com/ypdev19/5-useful-vs-code-extensions-for-a-better-coding-experience-33d</guid>
      <description>&lt;p&gt;After working with VS Code for a while, I still couldn’t feel completely comfortable using it. Coming from years of working with IntelliJ, something always felt missing, and my workflow didn’t feel as smooth as I expected.&lt;/p&gt;

&lt;p&gt;And after experimenting with settings, doing some exploration, also a bit of research and advice from fellow developers, I put together this top 5 list of VS Code extensions that has really been helpful to me and I would like to share with you.&lt;/p&gt;

&lt;h2&gt;
  
  
  For API Testing
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. REST Client
&lt;/h3&gt;

&lt;p&gt;This extension allows you to send HTTP requests and view the responses directly in VS Code. You simply create a .http file and start adding your requests. A side panel opens showing all the response details, making it easy to inspect status codes, headers, and payloads without leaving the editor.&lt;/p&gt;

&lt;p&gt;For more details, check the &lt;a href="https://marketplace.visualstudio.com/items?itemName=humao.rest-client" rel="noopener noreferrer"&gt;VS Marketplace official documentation&lt;/a&gt;.&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%2Fwww.codeqazone.com%2F_astro%2Frest-client.CC-GDXb__HW6Sq.webp" 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%2Fwww.codeqazone.com%2F_astro%2Frest-client.CC-GDXb__HW6Sq.webp" title="rest-client" alt="Rest Client" width="800" height="166"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Code &amp;amp; Formatting
&lt;/h2&gt;

&lt;h3&gt;
  
  
  2. Code Spell Checker
&lt;/h3&gt;

&lt;p&gt;With Code Spell Checker you can catch spelling errors in variable, functions and methods names, comments, and other areas where spelling errors can go unnoticed. This helps improve the readability and maintainability of your code and is particularly useful for developers who are not native English speakers.&lt;/p&gt;

&lt;p&gt;It supports many programming languages and is highly customizable. You can even add custom dictionaries and ignore specific words or code blocks. For more details, check the &lt;a href="https://marketplace.visualstudio.com/items?itemName=streetsidesoftware.code-spell-checker" rel="noopener noreferrer"&gt;VS Marketplace official documentation&lt;/a&gt;.&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%2F9amjib6gp2hqxizai50x.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%2F9amjib6gp2hqxizai50x.png" alt="Code Spell Checker" width="800" height="173"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Prettier
&lt;/h3&gt;

&lt;p&gt;This is a really good code formatter that helps keep your code clean and consistent. It supports many programming languages and can be customized to suit your team’s or personal preferences.&lt;/p&gt;

&lt;p&gt;It’s definitely worth a try, as it makes code much easier to read and removes the need to argue about formatting rules.&lt;br&gt;
Check the &lt;a href="https://prettier.io/" rel="noopener noreferrer"&gt;Official Prettier Documentation&lt;/a&gt;&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%2Fpw7yyqyza156w7w83lfr.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%2Fpw7yyqyza156w7w83lfr.png" alt="Prettier" width="800" height="163"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  4. ESLint
&lt;/h3&gt;

&lt;p&gt;ESLint analyzes your code to quickly find problems. It’s a JavaScript linter that helps catch errors early and enforce coding standards across your codebase. It can be especially useful in team environments, where keeping code quality is key.&lt;/p&gt;

&lt;p&gt;For more details, check the &lt;a href="https://marketplace.visualstudio.com/items?itemName=dbaeumer.vscode-eslint" rel="noopener noreferrer"&gt;VS Marketplace official documentation&lt;/a&gt;.&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%2Fwww.codeqazone.com%2F_astro%2Fes-lint.BboDhefm_1r1XO1.webp" 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%2Fwww.codeqazone.com%2F_astro%2Fes-lint.BboDhefm_1r1XO1.webp" title="ESLint" alt="ESLint" width="800" height="199"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  5. ErrorLens
&lt;/h3&gt;

&lt;p&gt;Similar to SonarLint, ErrorLens highlights errors and warnings directly in your code in a very visual way. For more details, check the &lt;a href="https://marketplace.visualstudio.com/items?itemName=usernamehw.errorlens" rel="noopener noreferrer"&gt;VS Marketplace official docs&lt;/a&gt;.&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%2Fvpi8185nytorc20fsn9f.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%2Fvpi8185nytorc20fsn9f.png" alt="ErrorLens" width="800" height="193"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DEV BONUS Recommendations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  DotENV
&lt;/h3&gt;

&lt;p&gt;Adds support for &lt;strong&gt;.env&lt;/strong&gt; file syntax, making environment variables easier to read and manage inside VS Code.&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%2Fwww.codeqazone.com%2F_astro%2Fdotenv.qYGCDG0S_ZzLYIY.webp" 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%2Fwww.codeqazone.com%2F_astro%2Fdotenv.qYGCDG0S_ZzLYIY.webp" title="DotENV" alt="DotENV" width="800" height="169"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Live Preview
&lt;/h3&gt;

&lt;p&gt;Local development server with live reload feature for static &amp;amp; dynamic pages. It hosts a local server in your workspace for you to preview your webpages on. For more details, check the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-vscode.live-server" rel="noopener noreferrer"&gt;VS Marketplace official docs&lt;/a&gt;.&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%2Fwww.codeqazone.com%2F_astro%2Flive-preview.BN9xL51H_2aF6od.webp" 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%2Fwww.codeqazone.com%2F_astro%2Flive-preview.BN9xL51H_2aF6od.webp" title="Live Preview" alt="Live Preview" width="800" height="191"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tailwind CSS IntelliSense
&lt;/h3&gt;

&lt;p&gt;Tailwind CSS IntelliSense enhances the Tailwind development experience by providing autocomplete, syntax highlighting, and linting directly in VS Code. For more details, check the &lt;a href="https://marketplace.visualstudio.com/items?itemName=bradlc.vscode-tailwindcss" rel="noopener noreferrer"&gt;VS Marketplace official documentation&lt;/a&gt;.&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%2Fwww.codeqazone.com%2Fvs-code-extensions-coding-qa%2F" 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%2Fwww.codeqazone.com%2Fvs-code-extensions-coding-qa%2F" title="CSS IntelliSense" alt="Tailwind CSS IntelliSense" width="" height=""&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  QA BONUS Recommendations
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Playwright
&lt;/h3&gt;

&lt;p&gt;This extension integrates Playwright directly into your VS Code workflow, making it easier to write, run, and debug end-to-end tests. For more details, check the &lt;a href="https://marketplace.visualstudio.com/items?itemName=ms-playwright.playwright" rel="noopener noreferrer"&gt;VS Marketplace official documentation&lt;/a&gt;.&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%2Fwww.codeqazone.com%2F_astro%2Fplaywright-vs-code.DkdxeYJb_WMrHa.webp" 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%2Fwww.codeqazone.com%2F_astro%2Fplaywright-vs-code.DkdxeYJb_WMrHa.webp" title="Playwright" alt="Playwright" width="800" height="192"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;If you know somebody who could benefit from this setup, feel free to share it.&lt;/em&gt;&lt;/strong&gt; &lt;strong&gt;&lt;em&gt;Thank you for reading!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vscode</category>
      <category>learning</category>
      <category>programming</category>
    </item>
    <item>
      <title>🏆⚛️React Roadmap Guide for Beginners 2025 (Updated)</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Thu, 30 Mar 2023 18:51:09 +0000</pubDate>
      <link>https://forem.com/ypdev19/react-roadmap-guide-for-beginners-2023-3oah</link>
      <guid>https://forem.com/ypdev19/react-roadmap-guide-for-beginners-2023-3oah</guid>
      <description>&lt;p&gt;React remains one of the most in-demand tools in modern frontend development, as it is one of the most popular JavaScript libraries for building user interfaces. It’s widely used for both small-scale and large-scale applications.&lt;/p&gt;

&lt;p&gt;That’s why I've collected the most helpful learning tips and up-to-date resources to guide you in your learning journey with React, whether you’re a newbie or a seasoned developer. I put up this material based on my own experience so far and advice I’ve received from senior developers. Let’s get started!&lt;/p&gt;

&lt;h2&gt;
  
  
  🎯 JavaScript Fundamentals + ES6
&lt;/h2&gt;

&lt;p&gt;To succeed in React (and any other JS framework), having solid foundations in JavaScript is essential. Get familiar with common array operations like &lt;strong&gt;map&lt;/strong&gt;, &lt;strong&gt;filter&lt;/strong&gt; and &lt;strong&gt;reduce&lt;/strong&gt;, &lt;strong&gt;pop&lt;/strong&gt;, &lt;strong&gt;slice&lt;/strong&gt;, &lt;strong&gt;find&lt;/strong&gt;, &lt;strong&gt;push&lt;/strong&gt;. Also, learn how the asynchronous patterns works, particularly through &lt;strong&gt;Promises&lt;/strong&gt; and the &lt;strong&gt;async/await&lt;/strong&gt; syntax since these are crucial when working with API calls to fetch and manipulate data.&lt;/p&gt;

&lt;p&gt;Additionally, make sure you understand the essentials of ES6, such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Arrow functions&lt;/li&gt;
&lt;li&gt;Object destructuring&lt;/li&gt;
&lt;li&gt;Template literals&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;let&lt;/code&gt; and &lt;code&gt;const&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Spread and rest operators&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These modern JavaScript features will help you write cleaner code and follow best practices in React development. Here are a few of my favorite sites with really good source material:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/learn/javascript-algorithms-and-data-structures/" rel="noopener noreferrer"&gt;JavaScript Algorithms and Data Structures in Freecodecamp&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/js/default.asp" rel="noopener noreferrer"&gt;W3Schools Javascript Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.javascripttutorial.net/es6/" rel="noopener noreferrer"&gt;ES6 Tutorial from Javascript Tutorial&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codeqazone.com/javascript-object-destructuring/" rel="noopener noreferrer"&gt;Learning Object Destructuring&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/codeofrelevancy/javascript-array-methods-cheatsheet-4abn"&gt;JavaScript Array Methods Cheatsheet by Code of Relevancy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Solid Understanding of HTML &amp;amp; CSS
&lt;/h2&gt;

&lt;p&gt;If you haven't already, begin with the fundamentals of HTML and CSS, this is key for building any web application. Here are some quality resources to learn or reinforce your knowledge:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/html/" rel="noopener noreferrer"&gt;HTML in w3schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.w3schools.com/css/default.asp" rel="noopener noreferrer"&gt;CSS in w3schools&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/learn/learn-html" rel="noopener noreferrer"&gt;HTML in codecademy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.codecademy.com/learn/learn-css" rel="noopener noreferrer"&gt;CSS in codecademy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You could also take a look at CSS frameworks, these can be really helpful to save us time when building applications. These are my favorites (and the populars):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://getbootstrap.com/" rel="noopener noreferrer"&gt;Bootstrap&lt;/a&gt; or &lt;a href="https://react-bootstrap.github.io/" rel="noopener noreferrer"&gt;React Bootstrap&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;&lt;a href="https://mui.com/material-ui/" rel="noopener noreferrer"&gt;Material UI React components&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 API's
&lt;/h2&gt;

&lt;p&gt;Understanding &lt;strong&gt;how to consume or build APIs&lt;/strong&gt; is crucial to working with dynamic data in frontend applications.&lt;/p&gt;

&lt;p&gt;Even if you’re focusing only on frontend, at least grasp the basics of how to consume RESTful APIs. This will allow you to fetch and manipulate data effectively in React. Here are some resources that could help you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/build-consume-and-document-a-rest-api/" rel="noopener noreferrer"&gt;Rest API Handbook by freecodecamp&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Learning React Itself
&lt;/h2&gt;

&lt;p&gt;Focus solely on React before diving into related tools or frameworks like Next.js, Tailwind, etc. Start with the official documentation, it’s well-maintained and beginner-friendly. Then, explore other tutorials that match your learning style.&lt;/p&gt;

&lt;p&gt;Quick start 👉 &lt;a href="https://react.dev/learn" rel="noopener noreferrer"&gt;official tuto&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;And here's a list of key React concepts to learn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Props&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Routing&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Built-in Components&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Hooks (useState, useEffect, useRef, useContext, etc)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;State Managment&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Functional Components&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Higher-Order Components (HOC)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Server-Side Rendering (SSR) vs. Single Page Applications (SPA)&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Conditional Rendering and lists.&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Events&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;Arrow Function Components&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🎯 Get Your Hands Dirty with a Few Projects
&lt;/h2&gt;

&lt;p&gt;Start small to apply what you’ve learned. Then move on to more complete apps like a full CRUD app with a database or local storage. If you want to go further, try building real-life projects like: A movie listing app, user registration form, a recipes search app, etc.&lt;/p&gt;

&lt;p&gt;Choose topics that genuinely interest you, it’ll keep you motivated and engaged and avoid getting stuck in tutorial hell, apply what you learn as you go. Hands-on practice is what solidifies your skills and helps build a strong portfolio.&lt;/p&gt;

&lt;p&gt;Check this post with free APIs for project 👉 &lt;a href="https://dev.to/ypdev19/6-free-public-apis-with-interesting-data-for-your-next-project-17b5"&gt;free public APIs&lt;/a&gt; you could for your next React project.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: GraphQL
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://graphql.org/" rel="noopener noreferrer"&gt;Graphql&lt;/a&gt; is a very powerful tool and it makes queries and requests much easier. After learning the basics with APIs and everything around that, I suggest you to give a look on how to use GraphQL.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: Styled Components
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://styled-components.com/" rel="noopener noreferrer"&gt;Styled components&lt;/a&gt; is a &lt;em&gt;&lt;strong&gt;CSS-in-JS&lt;/strong&gt;&lt;/em&gt; tool that bridges the gap between components and styling. The main goal of this tool is to provide us a flexible way to add custom styling to our components in a functional and reusable way.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: TypeScript
&lt;/h2&gt;

&lt;p&gt;Just take a look at the basics, you don’t have to go all in right away, but learning the basics can make you a much stronger developer. It brings type safety and better tooling to your React code.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⭐⭐ Bonus: Tooling
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;npm or yarn&lt;/strong&gt;: Familiarise yourself with learning to use npm or yarn to manage project dependencies. These are very important when it comes down to installing libraries necessary for your development setup when working with React.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Version control using git:&lt;/strong&gt; learn the fundamental of Git, the essential commands such as 'git init', git clone, 'git commit', and 'git push', also, branch handling and merge request managment.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  💭 Final Thoughts
&lt;/h2&gt;

&lt;p&gt;There is so much more to learn about React but I hope this guideline will be a good starting point for you and help you on your own journey. If you know somebody whom this could be of help please share! 🙌&lt;/p&gt;

&lt;p&gt;If there's an item you would like to share to complement this, feel free to go and post a comment about it! 👇&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>react</category>
      <category>frontend</category>
    </item>
    <item>
      <title>🚀 Ways to Title Case Strings with Javascript</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Thu, 16 Mar 2023 23:56:50 +0000</pubDate>
      <link>https://forem.com/ypdev19/ways-to-title-case-strings-with-javascript-1dpe</link>
      <guid>https://forem.com/ypdev19/ways-to-title-case-strings-with-javascript-1dpe</guid>
      <description>&lt;p&gt;The expanded version of this article is available here → &lt;a href="https://www.codeqazone.com/title-case-strings-javascript/" rel="noopener noreferrer"&gt;Multiple Ways to Title Case Strings in Javascript - Code &amp;amp; QA Zone&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As part of a recent fix I had to do during work, I needed to title case an input of a group of sentences that would later be used to validate other logic. The problem was that these sentences needed certain considerations when applying the title case.&lt;/p&gt;

&lt;p&gt;So, even when this is a specific case for a specific need I saw this as a good opportunity to not only use this article to list a few ways to &lt;em&gt;title case sentences&lt;/em&gt; but also to share the solution i ended up using and that could probably be of help to someone.&lt;/p&gt;

&lt;p&gt;Let's begin!&lt;/p&gt;
&lt;h3&gt;
  
  
  1. Using replace method and regex
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&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;\b\w&lt;/span&gt;&lt;span class="sr"&gt;/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;s&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="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="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;welcome to my article&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;THE avengers&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The shortest way to accomplish this, we use regex to match only the first letter of each word to then replace it as uppercase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Side note:&lt;/em&gt;&lt;/strong&gt; &lt;em&gt;it's good to normalize the string by converting everything first to lowercase before actually converting to title case.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&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%2Frnpolcbi1sw85yk984l9.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%2Frnpolcbi1sw85yk984l9.png" alt="Output example 1" width="800" height="134"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  2. Using the map() function
&lt;/h3&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="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;word&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;substr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="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="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;welcome AGAIN to MY aRticle&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;THE avengers MOVIe&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;We first turn the sentence into an array with&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;javascript str.toLowerCase().split(' ')&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
 then, when using the &lt;strong&gt;map()&lt;/strong&gt;, this will do a callback function for each element in the array where with&lt;br&gt;
&lt;br&gt;
 &lt;code&gt;javascript (word.charAt(0).toUpperCase() + word.substr(1))&lt;/code&gt;&lt;br&gt;
&lt;br&gt;
  we transform the element and build a new array from the results.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&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%2Fo04i351cp9v4ndfkv53h.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%2Fo04i351cp9v4ndfkv53h.png" alt="Using map()" width="800" height="128"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  Applying title case with exceptions
&lt;/h2&gt;

&lt;p&gt;There can be cases where not all words in the sentence would need to be converted, which was the case i run into, here was my solution, which is basically using the map() way but adding the condition to check if the current word was or not eligible for title case.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;exceptions&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;of&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;the&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;and&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toLowerCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;exceptions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;includes&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&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;word&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;charAt&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;word&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;substr&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
        &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;join&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt; &lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="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="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;lord OF the rings&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;   
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;people AND people&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;   
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;convertToTitleCase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;someTHING ABOUT THE article&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:&lt;/strong&gt;&lt;br&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%2F8d0cddf66ikpl2uq0k8d.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%2F8d0cddf66ikpl2uq0k8d.png" alt="my case" width="800" height="159"&gt;&lt;/a&gt;&lt;/p&gt;

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

&lt;p&gt;There are many options out there we could use to convert sentences to title case, we just need to go with the one that works best for our needs.&lt;/p&gt;

&lt;p&gt;Also, keep in mind that there could be edge cases where converting to title case can be used or adapted to, it will depend on what exactly needs to be accomplished with it and how it's going to be used since there can be scenarios where it will could probably be impossible to always be correct when the input has been transformed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this article was helpful to you, check out more in my blog &lt;a href="https://www.codeqazone.com/categories/javascript" rel="noopener noreferrer"&gt;Code &amp;amp; QA Zone&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And don't forget to hit that ❤️ button and support me with a follow.! :)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>programming</category>
      <category>titlecase</category>
    </item>
    <item>
      <title>🚀Using !! in Javascript</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Wed, 08 Mar 2023 17:35:18 +0000</pubDate>
      <link>https://forem.com/ypdev19/learning-about-the-operator-in-javascript-2c0o</link>
      <guid>https://forem.com/ypdev19/learning-about-the-operator-in-javascript-2c0o</guid>
      <description>&lt;p&gt;In JavaScript, the "&lt;strong&gt;not not&lt;/strong&gt;" operator, also known as the &lt;em&gt;&lt;strong&gt;double negation operator&lt;/strong&gt;&lt;/em&gt;, is denoted by two exclamation marks (&lt;strong&gt;!!&lt;/strong&gt;). It is a unary operator that &lt;em&gt;converts any value to its corresponding boolean value&lt;/em&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  How it Works?
&lt;/h2&gt;

&lt;p&gt;Well, the &lt;strong&gt;!!&lt;/strong&gt; operator works by first converting the operand (your value) into a &lt;strong&gt;boolean&lt;/strong&gt;. It then negates this value and negates it again, resulting in a &lt;code&gt;boolean&lt;/code&gt; that reflects the truthiness of the original value.&lt;/p&gt;

&lt;p&gt;Let's take a look at the following example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;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;5&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;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="o"&gt;!!&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="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;y&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the value of &lt;code&gt;x&lt;/code&gt; is first converted to a &lt;code&gt;boolean&lt;/code&gt;, and since &lt;code&gt;x&lt;/code&gt; is a non-zero number, it is &lt;em&gt;truthy&lt;/em&gt;, so the first negation results in &lt;code&gt;false&lt;/code&gt;. &lt;code&gt;The second negation&lt;/code&gt; then negates this value again, resulting in &lt;code&gt;true&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Practical Uses
&lt;/h2&gt;

&lt;p&gt;Let's take a look at the following example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;username&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!!&lt;/span&gt;&lt;span class="nx"&gt;username&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;Welcome, &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;username&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="s2"&gt;Please enter a username&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here, the &lt;strong&gt;!!&lt;/strong&gt; operator is used to check if the username variable is truthy or falsy. If it is falsy (in this case, an empty string), the else block is executed, prompting the user to enter a username. If it is truthy, the if block is executed, welcoming the user with their username.&lt;/p&gt;

&lt;p&gt;Wanna try it yourself? What would the result of the following expressions:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;!![]&lt;/code&gt;&lt;br&gt;
&lt;code&gt;!!{}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;!!null&lt;/code&gt;&lt;br&gt;
&lt;code&gt;!!"foo"&lt;/code&gt;&lt;br&gt;
&lt;code&gt;!!-1&lt;/code&gt;&lt;/p&gt;

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

&lt;p&gt;Unless you have been using JavaScript for a while this will probably look like some advanced magic but a quick way to remember this is that, &lt;strong&gt;!!&lt;/strong&gt; it's just a shorthand way to &lt;strong&gt;convert any value&lt;/strong&gt; to a &lt;strong&gt;boolean&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This operator is a powerful and it can be particularly useful when dealing with certain validations, also, it is a definition commonly asked nowadays in interviews so make sure to keep it present (also, using it will make you look cool).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this article was helpful to you, don't forget to hit that ❤️ button and support me with a follow, i will keep posting more content about tech, programming, career development and more! :)&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>🤯Understanding Truthy and Falsy in JavaScript</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Mon, 06 Mar 2023 22:01:05 +0000</pubDate>
      <link>https://forem.com/ypdev19/understanding-truthy-and-falsy-in-javascript-ih0</link>
      <guid>https://forem.com/ypdev19/understanding-truthy-and-falsy-in-javascript-ih0</guid>
      <description>&lt;p&gt;In this article we will be looking at the definitions of two key expressions in Javascript: &lt;strong&gt;truthy&lt;/strong&gt; and &lt;strong&gt;falsy&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The first time I bumped into this was while talking with a friend who was teaching me some definitions and tips in Javascript, and honestly, this one wasn't that fast to make sense in my mind at first try.&lt;/p&gt;

&lt;p&gt;That's why I've decided to write about these important definitions in the most easy and straightforward way, so, let's begin!&lt;/p&gt;

&lt;h2&gt;
  
  
  Truthy Values
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Truthy values&lt;/strong&gt; are values that are considered &lt;code&gt;true&lt;/code&gt; when evaluated in a &lt;code&gt;boolean&lt;/code&gt; context. In JavaScript, the following values are truthy:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;true&lt;br&gt;
non-zero numbers&lt;br&gt;
non-empty strings&lt;br&gt;
objects&lt;br&gt;
arrays&lt;br&gt;
functions&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example, consider the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;x&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hello&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nx"&gt;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;x is truthy&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="s2"&gt;x is falsy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can see that the value of &lt;code&gt;x&lt;/code&gt; is a non-empty string, which is a &lt;code&gt;truthy&lt;/code&gt; value. Therefore, the if block is executed, logging &lt;code&gt;"x is truthy"&lt;/code&gt; to the console.&lt;/p&gt;

&lt;h2&gt;
  
  
  Falsy Values
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Falsy values&lt;/strong&gt; are values that are considered &lt;code&gt;false&lt;/code&gt; when evaluated in a &lt;code&gt;boolean&lt;/code&gt; context. In JavaScript, the following values are falsy:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;false&lt;br&gt;
0&lt;br&gt;
-0&lt;br&gt;
NaN&lt;br&gt;
null&lt;br&gt;
undefined&lt;br&gt;
empty strings ("" or '')&lt;br&gt;
document.all&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;For example, consider the following code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;y&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;null&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;y&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;y is truthy&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="s2"&gt;y is falsy&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We can see that the value of y is &lt;code&gt;null&lt;/code&gt;, which is a &lt;code&gt;falsy&lt;/code&gt; value. Therefore, the else block is executed, logging &lt;code&gt;"y is falsy"&lt;/code&gt; to the console.&lt;/p&gt;

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

&lt;p&gt;Understanding &lt;strong&gt;&lt;em&gt;truthy&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;falsy&lt;/em&gt;&lt;/strong&gt; values is essential to writing reliable and bug-free code. By knowing which values are considered &lt;em&gt;&lt;strong&gt;truthy&lt;/strong&gt;&lt;/em&gt; and which are considered &lt;em&gt;&lt;strong&gt;falsy&lt;/strong&gt;&lt;/em&gt;, you can write more concise and readable code that handles edge cases and unexpected inputs.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this article was helpful to you, don't forget to hit that ❤️ button and support me with a follow, i will keep posting more content about tech, programming, career development and more! :)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Until next time!&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>beginners</category>
      <category>programming</category>
    </item>
    <item>
      <title>🚀Learning Object Destructuring in JavaScript</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Sat, 04 Mar 2023 21:09:31 +0000</pubDate>
      <link>https://forem.com/ypdev19/learning-object-destructuring-in-javascript-3gj5</link>
      <guid>https://forem.com/ypdev19/learning-object-destructuring-in-javascript-3gj5</guid>
      <description>&lt;p&gt;&lt;strong&gt;Object destructuring&lt;/strong&gt; is a feature in JavaScript that allows you to &lt;strong&gt;extract values from objects&lt;/strong&gt; and assign them to variables in a more concise and readable way. &lt;/p&gt;

&lt;p&gt;This feature was introduced in &lt;a href="http://es6-features.org/" rel="noopener noreferrer"&gt;ES6&lt;/a&gt; and has since become a popular technique among JavaScript developers.&lt;/p&gt;

&lt;p&gt;In order to use object destructuring, you can use curly braces &lt;code&gt;{}&lt;/code&gt; to specify the properties you want to extract from an object. Let's take a look at some examples of how this incredible feature can be used:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. The basic Object Destructuring&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;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;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: John&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;age&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we declare a &lt;code&gt;person&lt;/code&gt; object with &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;age&lt;/code&gt; properties. We then use destructuring to extract these properties and assign them to variables with the same names. We can then use them to access the values of the properties.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Renaming variables&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;fullName&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;age&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;years&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;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;fullName&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: John&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;years&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we use destructuring to extract the &lt;code&gt;name&lt;/code&gt; and &lt;code&gt;age&lt;/code&gt; properties from the &lt;code&gt;person&lt;/code&gt; object. However, we also use the colon &lt;code&gt;:&lt;/code&gt; syntax to rename the variables to &lt;code&gt;fullName&lt;/code&gt; and &lt;code&gt;years&lt;/code&gt;. This allows us to use different variable names while still extracting the values we need.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Default values&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;John&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;};&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;age&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;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;name&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: John&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;age&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Output: 30&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we use destructuring to extract the &lt;code&gt;name&lt;/code&gt; property from the &lt;code&gt;person&lt;/code&gt; object. We also declare a default value of &lt;code&gt;30&lt;/code&gt; for the &lt;code&gt;age&lt;/code&gt; variable in case it is not defined in the &lt;code&gt;person&lt;/code&gt; object. This ensures that our code does not throw an error if the &lt;code&gt;age&lt;/code&gt; property is missing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. Dynamic property names&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;helloStr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Hello world!&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt; &lt;span class="nx"&gt;last&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;str&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// 12&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;last&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;// "!"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here we use destructuring to dynamically assing &lt;code&gt;last&lt;/code&gt; as the new property name from the &lt;code&gt;helloStr&lt;/code&gt; variable in order to get the last character from the string.&lt;/p&gt;

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

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Object Destructuring&lt;/strong&gt;&lt;/em&gt; is a powerful feature that will not only make you look cool but also will help you to write cleaner and more efficient code that will be easier to maintain and understand.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Happy learning and thank you for reading!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;If this article was helpful to you, check out more in my blog &lt;a href="https://www.codeqazone.com/categories/" rel="noopener noreferrer"&gt;Code &amp;amp; QA Zone&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And don't forget to hit that ❤️ button and support me with a follow! :)&lt;/em&gt; &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>destructuring</category>
    </item>
    <item>
      <title>👀 My top 5 craziest experiences with dev job interviews</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Wed, 22 Feb 2023 00:33:55 +0000</pubDate>
      <link>https://forem.com/ypdev19/crazy-things-ive-experienced-in-dev-job-interviews-32j9</link>
      <guid>https://forem.com/ypdev19/crazy-things-ive-experienced-in-dev-job-interviews-32j9</guid>
      <description>&lt;p&gt;&lt;strong&gt;1. Don’t ask questions:&lt;/strong&gt; this one was special and quite shocking, it happened by the end of the technical interview, the guy was telling me that the next step was another meet but this time with the CEO of the company and the intent of this was to get to know me and make sure i was a good fit but the catch was that i wasn’t allowed to ask any questions because the guy didn’t like to be asked anything. Only him as the CEO was going to do the questions, crazy right? Well, right after he gave me the warnings about this next meeting, I told him that I didn't want to continue because not being allowed to ask questions was a &lt;strong&gt;BIG&lt;/strong&gt; red flag.&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%2Fxnn3wbh27ih9nyv94e8o.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%2Fxnn3wbh27ih9nyv94e8o.gif" alt="Kidding" width="498" height="258"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. This certain computer is required for you to have:&lt;/strong&gt; This one was a bit upsetting because i went through the HR interview, a coding challenge test, a psychological written test and an interview in some way technical and in some other way more of phycological (that was pretty long btw) to be told at the end that in order to continue in the process i needed to have a specific computer of a specific model (because that was a mandatory rule from the final client). Like, why on earth you people don’t add that to the requirements section of the job description so you can save candidates time??&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%2Fd0bqdx7vcrggnze6sdi1.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%2Fd0bqdx7vcrggnze6sdi1.gif" alt="Wasted time" width="200" height="200"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Do you have availability to work Saturdays and Sundays in case it is needed?&lt;/strong&gt; A red flag to pay attention to because most companies don’t seem to be paying that extra time or at least compensating in a certain way to employees for doing this. If you’re only being paid for the work done only from Monday to Friday then I don't think we shouldn’t accept it.&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%2Fo8z0jexpm1aviex4kbo6.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%2Fo8z0jexpm1aviex4kbo6.gif" alt="Joking" width="300" height="217"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. An endless evaluation cycle:&lt;/strong&gt; This one still shocks me. In June of last year during a technical interview i was subscribed to the company site where i was supposed to do some short technical tests, at first i was excited because i felt the interview went well and got good feedback from the guy, by the end of it he told that once i finished the tests he will reach out to tell me about the next steps, well, i’m still waiting for him. I actually was hopeful because I kept logging in every couple days for a couple more months and I saw that more tests were enabled to take (ended up being 20, no joking here), after that interview I did 5 and in the next couple weeks I did 5 more but after that I was done. The page still says &lt;em&gt;“we’re evaluating your profile”&lt;/em&gt;…&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%2Fmtx3pbkveiacomqt5ndx.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%2Fmtx3pbkveiacomqt5ndx.gif" alt="Loop" width="480" height="256"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. The super crazy, complex and insane algorithm challenge:&lt;/strong&gt; I’ve gone through this several times and each time frustrates me. Are companies trying to recruit a robot?? Or is it me?? I still don’t get why it is necessary to evaluate if someone fits or not with the profile you need by applying such a hard and insane test if very likely this will be something that won’t come up during a day's work. Pretty sure companies waste really good and prepared professionals with this method.&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%2Fu1eidfet2tv3s7bwampt.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%2Fu1eidfet2tv3s7bwampt.gif" alt="Falied" width="220" height="220"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;And what about you? What crazy experiences have you gone through in interviews?&lt;/em&gt;&lt;/p&gt;

</description>
      <category>angular</category>
      <category>react</category>
      <category>webdev</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>The !! Operator in Javascript, a quick way to understand it</title>
      <dc:creator>Yuli Petrilli</dc:creator>
      <pubDate>Tue, 07 Feb 2023 00:20:32 +0000</pubDate>
      <link>https://forem.com/ypdev19/the-operator-in-javascript-a-quick-way-to-understand-it-43j1</link>
      <guid>https://forem.com/ypdev19/the-operator-in-javascript-a-quick-way-to-understand-it-43j1</guid>
      <description>&lt;p&gt;The first time I saw an expression using the &lt;code&gt;!!&lt;/code&gt; I had no idea what that piece of code was supposed to be doing there. If you’re just getting started with Javascript, looking at something like &lt;code&gt;value = !!value&lt;/code&gt; might seem like a strange sorcery.&lt;/p&gt;

&lt;p&gt;Trying to understand the definition behind this could probably not be that straightforward to everybody the first time so, here’s a short and quick way to explain what is the &lt;code&gt;!!&lt;/code&gt; operator:&lt;/p&gt;

&lt;p&gt;The &lt;code&gt;!!&lt;/code&gt; &lt;strong&gt;(not not) operator&lt;/strong&gt; in Javascript is just really &lt;em&gt;a simple way to convert any value to boolean&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;That's it, that's the quick and direct answer for it. If you want to go a bit further:&lt;/p&gt;

&lt;p&gt;The single &lt;code&gt;!&lt;/code&gt; converts a value to its &lt;strong&gt;&lt;em&gt;truthy&lt;/em&gt;&lt;/strong&gt; or &lt;strong&gt;&lt;em&gt;falsy&lt;/em&gt;&lt;/strong&gt; value, which is technically a boolean, but, if you need a real boolean representation of a value for your expression, you must convert it to a real boolean using an extra &lt;code&gt;!&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;But wait, what is that &lt;strong&gt;&lt;em&gt;truthy&lt;/em&gt;&lt;/strong&gt;, &lt;strong&gt;&lt;em&gt;falsy&lt;/em&gt;&lt;/strong&gt; thing?&lt;/p&gt;

&lt;p&gt;A quick way to explain &lt;strong&gt;&lt;em&gt;truthy&lt;/em&gt;&lt;/strong&gt; and &lt;strong&gt;&lt;em&gt;falsy&lt;/em&gt;&lt;/strong&gt; is that all values are considered &lt;code&gt;true&lt;/code&gt; (truthy) unless they are &lt;code&gt;false&lt;/code&gt; (falsy) values by nature. &lt;/p&gt;

&lt;p&gt;These falsy values are: &lt;code&gt;undefined&lt;/code&gt;, &lt;code&gt;null&lt;/code&gt;, &lt;code&gt;NaN&lt;/code&gt;, &lt;code&gt;0&lt;/code&gt;, &lt;code&gt;""&lt;/code&gt; (empty string), &lt;code&gt;false&lt;/code&gt; (duh, of course).&lt;/p&gt;

&lt;p&gt;Wanna try it yourself? Go to your console and evaluate the following expressions:&lt;br&gt;
&lt;code&gt;!![]&lt;/code&gt;&lt;br&gt;
&lt;code&gt;!!{}&lt;/code&gt;&lt;br&gt;
&lt;code&gt;!!12&lt;/code&gt;&lt;br&gt;
&lt;code&gt;!!0&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;This is a definition commonly asked nowadays in interviews so make sure to keep it present.&lt;/p&gt;

&lt;p&gt;Thank you for reading! And if you liked this article drop a ❤️&lt;/p&gt;

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