<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rhitam Chaudhury</title>
    <description>The latest articles on DEV Community by Rhitam Chaudhury (@hallowshaw).</description>
    <link>https://dev.to/hallowshaw</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%2F1200717%2Ff4c90b01-e047-4a02-a25c-6554df780dda.jpeg</url>
      <title>DEV Community: Rhitam Chaudhury</title>
      <link>https://dev.to/hallowshaw</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hallowshaw"/>
    <language>en</language>
    <item>
      <title>Efficient Techniques for Chunking Arrays in JavaScript: A Performance Comparison</title>
      <dc:creator>Rhitam Chaudhury</dc:creator>
      <pubDate>Sat, 06 Jul 2024 18:46:00 +0000</pubDate>
      <link>https://dev.to/hallowshaw/efficient-techniques-for-chunking-arrays-in-javascript-a-performance-comparison-3k2</link>
      <guid>https://dev.to/hallowshaw/efficient-techniques-for-chunking-arrays-in-javascript-a-performance-comparison-3k2</guid>
      <description>&lt;p&gt;Chunking an array means splitting it into smaller arrays of a specified size. This technique is useful for data processing, pagination, and more. In this blog, we'll explore four methods to chunk an array and compare their performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Initial Setup:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;First, let's create an array of numbers from 1 to 10:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const arr = Array.from({ length: 10 }, (_, i) =&amp;gt; i + 1);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Array.from() is used to generate an array with elements from 1 to 10. Now, we'll look at four ways to chunk this array.&lt;/p&gt;

&lt;h2&gt;
  
  
  Method 1: Using a For Loop
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function chunkArr(arr, size) {
    let res = [];
    for (let i = 0; i &amp;lt; arr.length; i += size) {
        res.push(arr.slice(i, size + i));
    }
    return res;
}

console.time("for");
console.log(chunkArr(arr, 2));
console.timeEnd("for");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Output:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]
for: 4.363ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This function iterates through the array in steps of the specified chunk size. It slices the array at each step and adds the resulting sub-array to the result array (res). The performance measurement shows it took about 4.363 milliseconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detailed Breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initialization: A result array res is initialized to hold the chunks.&lt;/li&gt;
&lt;li&gt;Looping: A for loop iterates over the array with a step size equal to the chunk size.&lt;/li&gt;
&lt;li&gt;Slicing: Within each iteration, a sub-array is created using slice and added to res.&lt;/li&gt;
&lt;li&gt;Return: After the loop completes, the function returns the result array containing all chunks.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method 2: Using Array.reduce()
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;function chunkArr2(arr, size) {
    if (size &amp;lt;= 0) throw new Error('Chunk size must be a positive integer');
    return arr.reduce((acc, _, i) =&amp;gt; {
        if (i % size === 0) acc.push(arr.slice(i, i + size));
        return acc;
    }, []);
}

console.time("reduce");
console.log(chunkArr2(arr, 2));
console.timeEnd("reduce");
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Output:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]
reduce: 0.069ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Here Array.reduce() is used to build the chunked array. It checks if the current index is a multiple of the chunk size and slices the array accordingly. This method is significantly faster, taking only about 0.069 milliseconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detailed Breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Validation: The function checks if the chunk size is valid.&lt;/li&gt;
&lt;li&gt;Reducer Function: The reduce method iterates over the array. For each element, it checks if the index is a multiple of the chunk size.&lt;/li&gt;
&lt;li&gt;Slicing: When the index is a multiple of the chunk size, it slices the array and pushes the sub-array into the accumulator.&lt;/li&gt;
&lt;li&gt;Return: The accumulator containing the chunked arrays is returned.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method 3: Using Array.splice()
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;let [list, chunkSize] = [arr, 2];

console.time('splice');
list = [...Array(Math.ceil(list.length / chunkSize))].map(_ =&amp;gt; list.splice(0, chunkSize));
console.timeEnd('splice');
console.log(list);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Output:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]
splice: 0.048ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This approach uses Array.splice() in combination with Array.map() to chunk the array. It creates a new array with the required number of chunks and uses splice() to remove and collect chunks from the original array. This method is also very fast, taking about 0.048 milliseconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detailed Breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initialization: Create an array with the number of chunks needed.&lt;/li&gt;
&lt;li&gt;Mapping: Use map to iterate over the new array.&lt;/li&gt;
&lt;li&gt;Splicing: Within each iteration, use splice to remove and collect chunks from the original array.&lt;/li&gt;
&lt;li&gt;Return: The resulting array of chunks is returned.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Method 4: Recursive Approach
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const chunk = function(array, size) {
    if (!array.length) {
        return [];
    }
    const head = array.slice(0, size);
    const tail = array.slice(size);
    return [head, ...chunk(tail, size)];
};

console.time('recursive');
console.log(chunk(arr, 2));
console.timeEnd('recursive');
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;Output:&lt;/code&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ], [ 7, 8 ], [ 9, 10 ] ]
recursive: 4.372ms
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Explanation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This recursive method splits the array into the first chunk (head) and the remaining elements (tail). It then recursively processes the tail, concatenating the results. While more elegant, this method is slower than the reduce and splice methods, taking about 4.372 milliseconds.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Detailed Breakdown:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Base Case: If the array is empty, return an empty array.&lt;/li&gt;
&lt;li&gt;Slicing: Split the array into the head (first chunk) and the tail (remaining elements).&lt;/li&gt;
&lt;li&gt;Recursion: Recursively process the tail and concatenate the results with the head.&lt;/li&gt;
&lt;li&gt;Return: The concatenated result is returned.&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;All four methods successfully chunk the array into sub-arrays of the specified size. However, their performance varies significantly:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;For Loop: 4.363ms&lt;/li&gt;
&lt;li&gt;Reduce: 0.069ms&lt;/li&gt;
&lt;li&gt;Splice: 0.048ms&lt;/li&gt;
&lt;li&gt;Recursive: 4.372ms&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;The splice and reduce methods are the fastest, making them preferable for performance-critical applications. While functional, the for loop and recursive methods are slower and might be less suitable for large datasets.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Recommendations
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Performance: For optimal performance, use the splice or reduce methods.&lt;/li&gt;
&lt;li&gt;Readability: The recursive method offers more readability and elegance, but at the cost of performance.&lt;/li&gt;
&lt;li&gt;Flexibility: The for loop method is straightforward and easy to understand, suitable for simple use cases.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>learning</category>
    </item>
    <item>
      <title>Version Control with Git and GitHub: The Importance and Effective Usage</title>
      <dc:creator>Rhitam Chaudhury</dc:creator>
      <pubDate>Sat, 06 Jul 2024 17:37:31 +0000</pubDate>
      <link>https://dev.to/hallowshaw/version-control-with-git-and-github-the-importance-and-effective-usage-2b2</link>
      <guid>https://dev.to/hallowshaw/version-control-with-git-and-github-the-importance-and-effective-usage-2b2</guid>
      <description>&lt;p&gt;&lt;strong&gt;In the world of software development, managing code changes efficiently is crucial. Version control systems (VCS) like Git and platforms like GitHub have become indispensable tools for developers. In this blog, we will explore the importance of version control and provide a comprehensive guide on how to use Git and GitHub effectively.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Version Control is Important
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;1. &lt;u&gt;Collaboration&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Team Coordination: Multiple developers can work on the same project simultaneously without conflicts.&lt;br&gt;
Code Review: Team members can review each other’s code, suggest improvements, and ensure code quality.&lt;br&gt;
Track Contributions: Easily track who made specific changes, which is crucial for accountability and understanding the codebase history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. &lt;u&gt;Backup and Restore&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Automatic Backups: Every change is stored in the repository, providing a comprehensive backup of the project.&lt;br&gt;
Restore Points: Easily revert to previous versions of the codebase if something goes wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. &lt;u&gt;Version History&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Detailed History: View a detailed history of the entire project, including what changes were made, when, and by whom.&lt;br&gt;
Branching and Merging: Experiment with new features or fixes in isolated branches without affecting the main codebase.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;4. &lt;u&gt;Efficient Workflow&lt;/u&gt;&lt;/strong&gt;&lt;br&gt;
Continuous Integration: Integrate changes into the main codebase frequently to detect errors early.&lt;br&gt;
Continuous Deployment: Automate the deployment process to release updates quickly and efficiently.&lt;/p&gt;
&lt;h2&gt;
  
  
  Getting Started with Git
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Installation&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Windows: Download and install Git from &lt;a href="//git-scm.com"&gt;git-scm.com&lt;/a&gt;.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mac: Install via Homebrew (&lt;code&gt;brew install git&lt;/code&gt;).&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Linux: Install using the package manager (&lt;code&gt;sudo apt-get install git&lt;/code&gt; for Debian-based systems).&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Configuration&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Set up your username and email:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Basic Git Commands&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initialize a Repository: Start a new repository or clone an existing one.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git init
git clone https://github.com/username/repository.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Check Status: View the current status of your working directory.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git status
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Add Changes: Stage changes for commit.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git add filename
git add .
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Commit Changes: Save changes to the local repository.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git commit -m "Your commit message"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;View Log: See the commit history.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git log
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Branching and Merging&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create a Branch
Branching allows you to create a separate line of development.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git branch new-feature
git checkout new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Merge a Branch
Merging integrates changes from one branch into another.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout main
git merge new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Delete a Branch
Clean up branches that are no longer needed.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git branch -d new-feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Using GitHub&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Repository Management&lt;br&gt;
Create a Repository: On GitHub, click on “New” and fill out the repository details.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone a Repository: Copy the repository URL and use git clone to clone it locally.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Push and Pull&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Push Changes: Upload local changes to the remote repository.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git push origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Pull Changes: Fetch and merge changes from the remote repository.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git pull origin main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Forking and Pull Requests&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Fork a Repository: Create a personal copy of someone else's project.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a Pull Request: Propose changes to the original project by submitting a pull request.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Advanced Git Techniques&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Rebasing
Rebase re-applies commits on top of another base tip.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git checkout feature-branch
git rebase main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Stashing
Temporarily save changes that are not ready to be committed.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git stash
git stash apply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;Cherry-Picking
Apply specific commits from one branch to another.
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;git cherry-pick commit-hash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;p&gt;&lt;strong&gt;Best Practices&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Commit Often: Frequent commits with descriptive messages make it easier to track changes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use Branches: Isolate new features and bug fixes in separate branches.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Write Clear Commit Messages: Describe what changes were made and why.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Regularly Pull Changes: Keep your local repository up to date with the remote repository.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Code Reviews: Encourage team members to review each other’s code.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;&lt;strong&gt;Version control with Git and GitHub is a fundamental skill for any software developer. It enhances collaboration, maintains a detailed history of changes, and ensures efficient workflow management. By following the guidelines and best practices outlined in this blog, you can effectively manage your code and contribute to projects with confidence.&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>github</category>
      <category>git</category>
      <category>githubactions</category>
      <category>versioncontrol</category>
    </item>
    <item>
      <title>Exploring Lesser-Known HTML Tags: Hidden Gems for Web Developers</title>
      <dc:creator>Rhitam Chaudhury</dc:creator>
      <pubDate>Fri, 05 Jul 2024 20:15:50 +0000</pubDate>
      <link>https://dev.to/hallowshaw/exploring-lesser-known-html-tags-hidden-gems-for-web-developers-26fm</link>
      <guid>https://dev.to/hallowshaw/exploring-lesser-known-html-tags-hidden-gems-for-web-developers-26fm</guid>
      <description>&lt;p&gt;&lt;strong&gt;As web developers, we often find ourselves relying on a set of familiar HTML tags to build our web pages. However, HTML is a rich language with many tags that can enhance your web projects in unique and powerful ways. In this blog post, we’ll delve into some of these lesser-known HTML tags, showcasing their utility and providing examples of how to use them.&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;details&amp;gt; and &amp;lt;summary&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag creates a disclosure widget that users can open and close. Paired with the &lt;code&gt;&amp;lt;summary&amp;gt;&lt;/code&gt; tag, it provides a heading that can be clicked to reveal or hide the content.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;details&amp;gt;
  &amp;lt;summary&amp;gt;More Information&amp;lt;/summary&amp;gt;
  &amp;lt;p&amp;gt;This section contains additional information that is hidden by default.&amp;lt;/p&amp;gt;
&amp;lt;/details&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;dialog&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag is used to define a dialog box or window, making it easier to create modals and pop-ups without relying heavily on JavaScript.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;dialog id="myDialog"&amp;gt;
  &amp;lt;p&amp;gt;This is a dialog box.&amp;lt;/p&amp;gt;
  &amp;lt;button onclick="document.getElementById('myDialog').close()"&amp;gt;Close&amp;lt;/button&amp;gt;
&amp;lt;/dialog&amp;gt;
&amp;lt;button onclick="document.getElementById('myDialog').showModal()"&amp;gt;Open Dialog&amp;lt;/button&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag represents a scalar measurement within a known range, such as disk usage or the relevance of a query result.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;label for="diskUsage"&amp;gt;Disk usage:&amp;lt;/label&amp;gt;
&amp;lt;meter id="diskUsage" value="0.6" min="0" max="1"&amp;gt;60%&amp;lt;/meter&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;progress&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Similar to &lt;code&gt;&amp;lt;meter&amp;gt;&lt;/code&gt;, this tag displays the completion progress of a task, such as a download or file upload.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;label for="file"&amp;gt;Downloading file:&amp;lt;/label&amp;gt;
&amp;lt;progress id="file" value="32" max="100"&amp;gt;32%&amp;lt;/progress&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;template&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag is used to declare fragments of HTML that can be cloned and inserted in the document by JavaScript, without being rendered when the page loads.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;template id="myTemplate"&amp;gt;
  &amp;lt;div class="myClass"&amp;gt;This is a template content.&amp;lt;/div&amp;gt;
&amp;lt;/template&amp;gt;

&amp;lt;script&amp;gt;
  const template = document.getElementById('myTemplate').content.cloneNode(true);
  document.body.appendChild(template);
&amp;lt;/script&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;datalist&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag provides an autocomplete feature on input elements, offering a list of predefined options to the user.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;label for="browsers"&amp;gt;Choose a browser:&amp;lt;/label&amp;gt;
&amp;lt;input list="browsers" id="browser" name="browser"&amp;gt;
&amp;lt;datalist id="browsers"&amp;gt;
  &amp;lt;option value="Chrome"&amp;gt;
  &amp;lt;option value="Firefox"&amp;gt;
  &amp;lt;option value="Safari"&amp;gt;
  &amp;lt;option value="Edge"&amp;gt;
  &amp;lt;option value="Opera"&amp;gt;
&amp;lt;/datalist&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;output&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag represents the result of a calculation or user action.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form oninput="result.value=parseInt(a.value)+parseInt(b.value)"&amp;gt;
  &amp;lt;input type="range" id="a" value="50"&amp;gt; +
  &amp;lt;input type="number" id="b" value="50"&amp;gt;
  &amp;lt;output name="result" for="a b"&amp;gt;100&amp;lt;/output&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;abbr&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag is used to define abbreviations or acronyms, providing an expanded description on hover.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;p&amp;gt;The &amp;lt;abbr title="World Health Organization"&amp;gt;WHO&amp;lt;/abbr&amp;gt; was founded in 1948.&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;time&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag represents a specific period in time, or a time on a 24-hour clock.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;p&amp;gt;The event will start at &amp;lt;time&amp;gt;14:00&amp;lt;/time&amp;gt; on &amp;lt;time datetime="2024-07-10"&amp;gt;July 10, 2024&amp;lt;/time&amp;gt;.&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;fieldset&amp;gt; and &amp;lt;legend&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag is used to group related elements within a form, and the  tag provides a caption for the &lt;code&gt;&amp;lt;fieldset&amp;gt;&lt;/code&gt;.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;form&amp;gt;
  &amp;lt;fieldset&amp;gt;
    &amp;lt;legend&amp;gt;Personal Information&amp;lt;/legend&amp;gt;
    &amp;lt;label for="name"&amp;gt;Name:&amp;lt;/label&amp;gt;
    &amp;lt;input type="text" id="name" name="name"&amp;gt;
    &amp;lt;label for="email"&amp;gt;Email:&amp;lt;/label&amp;gt;
    &amp;lt;input type="email" id="email" name="email"&amp;gt;
  &amp;lt;/fieldset&amp;gt;
&amp;lt;/form&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;samp&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag is used to define sample output from a computer program.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;p&amp;gt;The result of the computation is: &amp;lt;samp&amp;gt;42&amp;lt;/samp&amp;gt;.&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;var&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag is used to define a variable in a mathematical expression or programming context.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;p&amp;gt;The equation is &amp;lt;var&amp;gt;x&amp;lt;/var&amp;gt; = &amp;lt;var&amp;gt;y&amp;lt;/var&amp;gt; + 2.&amp;lt;/p&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;code&gt;&amp;lt;address&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The tag is used to define contact information for the author or owner of a document or article.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;address&amp;gt;
  Written by John Doe.&amp;lt;br&amp;gt;
  Visit us at:&amp;lt;br&amp;gt;
  Example.com&amp;lt;br&amp;gt;
  Box 564, Disneyland&amp;lt;br&amp;gt;
  USA
&amp;lt;/address&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>html</category>
      <category>webdev</category>
      <category>development</category>
    </item>
  </channel>
</rss>
