<?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: NEYAZ NAFIZ</title>
    <description>The latest articles on Forem by NEYAZ NAFIZ (@neyaznafiz).</description>
    <link>https://forem.com/neyaznafiz</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%2F830888%2F2ab2b727-23cb-4f5b-b09e-f029d7412714.jpeg</url>
      <title>Forem: NEYAZ NAFIZ</title>
      <link>https://forem.com/neyaznafiz</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/neyaznafiz"/>
    <language>en</language>
    <item>
      <title>Never Use Git Pull - The Beauty Of Rebase</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Mon, 22 Dec 2025 07:09:34 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/never-use-git-pull-the-beauty-of-rebase-10hf</link>
      <guid>https://forem.com/neyaznafiz/never-use-git-pull-the-beauty-of-rebase-10hf</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fwev9lcoerf252abi3fg2.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%2Fwev9lcoerf252abi3fg2.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Why developers should avoid the standard git pull command when collaborating on the same branch, using the default command often results in a cluttered commit history filled with unnecessary merge commits that make tracking changes difficult. It is recommended to use &lt;strong&gt;git pull --rebase&lt;/strong&gt; to maintain a linear and clean history by placing personal changes on top of existing remote updates. &lt;/p&gt;

&lt;p&gt;If merge conflicts occur during this process, users can easily revert the operation using &lt;strong&gt;git rebase --abort&lt;/strong&gt; to safely return to their previous state. Ultimately, adopting a rebase-first workflow improves project organization without losing work.&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%2Fr2lk6zj1yj9s9ex71419.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%2Fr2lk6zj1yj9s9ex71419.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Analogy for Understanding:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Imagine you and a friend are both writing chapters for the same book, starting from page 10. You both finish a chapter at the same time. A standard pull is like gluing your new pages together with a messy "Table of Contents" page in the middle to explain why the page numbers don't match. A rebase is like realizing your friend finished first, taking your new pages, and simply re-numbering them so they start exactly where your friend’s pages ended, creating one continuous, easy-to-read story.&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%2Fm3q8arqyym9ris8uazyi.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%2Fm3q8arqyym9ris8uazyi.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&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%2Frc5mgvi8rfcuisv4ss1w.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%2Frc5mgvi8rfcuisv4ss1w.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&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%2Fu2qp63fder3qdp6a63ml.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%2Fu2qp63fder3qdp6a63ml.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The rebase workflow maintains a cleaner and more linear commit history by avoiding the creation of "useless" merge commits that typically occur when local and remote branches diverge.&lt;/p&gt;

&lt;p&gt;Here is how the rebase workflow achieves this&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Avoiding the Merge "Clutter":&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When two developers work on the same branch starting from the same commit, their histories diverge. If you use a standard &lt;strong&gt;git pull&lt;/strong&gt; to reconcile these changes, Git creates a fresh merge commit to join your work with the other person's work. If every team member does this repeatedly, the history becomes a confusing web of extra merge commits, making it difficult to navigate or find specific features and bug fixes.&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%2Fb7z1bhmrhiet0fr6s9hu.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%2Fb7z1bhmrhiet0fr6s9hu.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Creating a Linear Sequence:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of merging the two paths together, the &lt;strong&gt;git pull --rebase&lt;/strong&gt; command changes where your local commits sit in the timeline:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Mechanism:&lt;/strong&gt; Git temporarily puts your local commits to the side, performs the pull to update your branch with the remote commits, and then tries to put your commits back on top of the new changes.&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;The Result:&lt;/strong&gt; Your work is placed directly after the other person's commits, ensuring the history stays linear and clean rather than branching and merging.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbl1mtnemfftdpz5ru6ap.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%2Fbl1mtnemfftdpz5ru6ap.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&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%2F3yt7eoo9w0mefwcvgcxk.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%2F3yt7eoo9w0mefwcvgcxk.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&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%2Foyg6ud6w7n9vucdfjf17.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%2Foyg6ud6w7n9vucdfjf17.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safety and Conflict Management:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Even if there are multiple commits or potential merge conflicts, the rebase workflow provides a way to maintain history integrity:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Rebase Abort:&lt;/strong&gt; If a conflict occurs during the rebase process that you aren't ready to handle, you can use &lt;strong&gt;git rebase --abort&lt;/strong&gt;. This restores your local repository to the exact state it was in before the pull, ensuring you don't break anything.&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Alternative Resolution:&lt;/strong&gt; Once aborted, you can choose to perform a regular &lt;strong&gt;git pull&lt;/strong&gt; to fix the conflict the traditional way, or use an interactive rebase for more granular control.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxic1y1g5u5vre971wxok.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%2Fxic1y1g5u5vre971wxok.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&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%2Fl8k2jtvbd12v1bb9olv7.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%2Fl8k2jtvbd12v1bb9olv7.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&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%2Fkhv7h7yfbog3087utw5q.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%2Fkhv7h7yfbog3087utw5q.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In conclusion, I recommend using &lt;strong&gt;git pull --rebase&lt;/strong&gt; as the primary method for updating your local branch to maintain a professional and readable project history.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The key takeaways  are:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Avoid "Useless" Commits:&lt;/strong&gt; Using a standard &lt;strong&gt;git pull&lt;/strong&gt; creates extra merge commits that clutter the timeline and make it difficult to find specific features or bug fixes.&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Maintain Linearity:&lt;/strong&gt; Rebasing ensures your work is placed directly on top of the latest remote changes, resulting in a clean, linear history.&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Safety First:&lt;/strong&gt; The rebase workflow is safe because you can always use &lt;strong&gt;git rebase --abort&lt;/strong&gt; to undo the process and return your repository to its original state if conflicts become too difficult to manage.&lt;/li&gt;
&lt;/ul&gt;



&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recommended Strategy:&lt;/strong&gt; The most effective approach is to try &lt;strong&gt;git pull --rebase&lt;/strong&gt; first; if merge conflicts occur and you are not ready to handle them via rebase, you can &lt;strong&gt;abort&lt;/strong&gt; and use a regular &lt;strong&gt;git pull&lt;/strong&gt; instead to handle those conflicts.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsxe5qeu9m81qj32ujlul.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%2Fsxe5qeu9m81qj32ujlul.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&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%2Fnbps0af746uarjv9wtt3.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%2Fnbps0af746uarjv9wtt3.png" alt="git rebase - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;center&gt;By adopting this workflow, you ensure that your commit history remains an organized story of development rather than a tangled web of merges.&lt;/center&gt;




</description>
      <category>git</category>
      <category>development</category>
      <category>code</category>
      <category>neyaznafiz</category>
    </item>
    <item>
      <title>The API Handbook: Every Type You Must Know</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Tue, 16 Dec 2025 04:55:53 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/the-api-handbook-every-type-you-must-know-5hl9</link>
      <guid>https://forem.com/neyaznafiz/the-api-handbook-every-type-you-must-know-5hl9</guid>
      <description>&lt;p&gt;A comprehensive overview of several Application Programming Interface (API) types, detailing how different communication protocols are used in modern software development, such as REST API, SOAP API, gRPC, GraphQL, Webhooks, Websockets, and WebRTC.&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%2F7tn9kqwixdvdv8qlv7w7.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%2F7tn9kqwixdvdv8qlv7w7.png" alt="API" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If you've ever wondered how your favorite apps seem to magically talk to each other—like how Google Maps appears inside a ride-sharing app—you've seen an API at work. At its core, an API (Application Programming Interface) is simply a set of rules that allows different software applications to communicate and exchange data with one another.&lt;/p&gt;

&lt;p&gt;Think of it like a translator who helps two people speaking different languages have a conversation. In the digital world, an API is that translator for software. This guide will walk you through the seven most common types of APIs, using simple analogies to help you understand what makes each one unique and when you might use 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%2Fxbbd4qrd0xny7g8g51sa.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%2Fxbbd4qrd0xny7g8g51sa.png" alt="Data Query Paradigms" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. REST API: The Universal Waiter&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;A REST API is the most common and flexible type of API you'll find on the web today.&lt;/p&gt;

&lt;p&gt;Think of a REST API like a waiter at a restaurant. You (your app) tell the waiter what you want from the menu, the waiter goes to the kitchen (the server), gets it, and brings it back to you.&lt;/p&gt;

&lt;p&gt;REST stands for Representational State Transfer, which is a formal way of describing a simple and standard approach for applications to talk over the internet. It's popular because it's easy to understand and use.&lt;/p&gt;

&lt;p&gt;Here are its most important characteristics:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Uses Standard HTTP Methods: REST uses the same simple, familiar actions that web browsers use. This makes it intuitive for developers.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GET: To retrieve data (e.g., "Show me this user's profile").&lt;/li&gt;
&lt;li&gt;POST: To create something new (e.g., "Add this new user").&lt;/li&gt;
&lt;li&gt;PUT: To update existing data.&lt;/li&gt;
&lt;li&gt;DELETE: To remove data.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Stateless: Each request is completely independent. The server doesn't remember anything about previous requests, which makes the system simpler and allows it to easily handle millions of users at once without getting confused.&lt;/p&gt;&lt;/li&gt;

&lt;li&gt;&lt;p&gt;Platform Independent (JSON): REST commonly uses JSON (JavaScript Object Notation), a clean, text-based data format. This makes it easy for any type of application—whether it's on an iPhone, Android, or a website—to use the same API.&lt;/p&gt;&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;It's the perfect choice for building general-purpose applications, like a social media app where you need to fetch user profiles and post updates.&lt;/p&gt;

&lt;p&gt;REST is incredibly flexible and popular, but for situations demanding high security and formal rules, like a bank transfer, a more structured approach is needed.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;2. SOAP API: The Formal Business Contract&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Before REST became the standard, SOAP was the dominant choice for enterprise-level communication.&lt;/p&gt;

&lt;p&gt;If REST is like a casual phone call, SOAP is more like a formal business contract. Every message must follow strict rules and comes wrapped in a very specific structure.&lt;/p&gt;

&lt;p&gt;SOAP, which stands for Simple Object Access Protocol, is an older and more formal communication method. It requires that all messages be formatted in a strict, XML-based structure that includes an envelope, a header, and a body to hold the actual data. This rigidity provides powerful benefits.&lt;/p&gt;

&lt;p&gt;Here are its key strengths:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol Independent: While SOAP often uses HTTP (like REST), it isn't limited to it. It can also run over other protocols like SMTP (for email), which provides more flexibility in certain enterprise environments.&lt;/li&gt;
&lt;li&gt;Built-in Standards: SOAP has built-in, industry-standard rules for security, error handling, and transactions. This makes it highly trusted for systems where precision and reliability are non-negotiable.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because of these features, SOAP is still heavily relied upon by banks, healthcare providers, and government systems. For example, when you transfer money between banks, there’s a good chance a SOAP API is working behind the scenes, ensuring the transaction is secure and processed correctly.&lt;/p&gt;

&lt;p&gt;While SOAP provides enterprise-grade reliability, modern applications often require raw speed and performance, leading to the creation of a high-performance alternative.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;3. gRPC API: The Formula 1 Race Car&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Developed by Google, gRPC is an API built from the ground up for maximum speed and efficiency.&lt;/p&gt;

&lt;p&gt;Think of gRPC as the Formula 1 race car of APIs—built for speed, performance, and precision.&lt;/p&gt;

&lt;p&gt;gRPC is a modern, high-performance version of RPC (Remote Procedure Call). The core idea of RPC is simple: allow an application to call a function on another machine across a network as if it were a local function in its own code. gRPC perfects this concept for today's massive, real-time apps.&lt;/p&gt;

&lt;p&gt;Here are the main reasons for its incredible speed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Protocol Buffers (Protobuf): Instead of sending text-based JSON like REST, gRPC uses Protocol Buffers. This is a compact binary format that compresses data, making it much faster to process and send across the network.&lt;/li&gt;
&lt;li&gt;HTTP/2: gRPC is built on HTTP/2, a modern version of the HTTP protocol that allows multiple requests to run over a single connection at the same time, dramatically improving efficiency.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Beyond simple request-response, gRPC supports four powerful communication patterns: server streaming (for live updates), client streaming (for sending continuous data), and even bi-directional streaming, where both sides can "chat" at once in real time.&lt;/p&gt;

&lt;p&gt;The performance gains are massive, with gRPC often being 7 to 10 times faster than a comparable REST API. This is why it's the secret weapon behind performance-critical systems at companies like Netflix and Uber.&lt;/p&gt;

&lt;p&gt;gRPC is unmatched for server-to-server speed, but what if the challenge isn't speed, but rather getting exactly the data you need without waste? A different approach was needed.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;4. GraphQL API: The Precision Shopper&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Created by Facebook, GraphQL is a revolutionary way to fetch data that solves common frustrations developers have with REST APIs. Its main goal is to prevent over-fetching (getting too much data) and under-fetching (not getting enough data and needing to make multiple requests).&lt;/p&gt;

&lt;p&gt;With GraphQL, you write one query asking for exactly what you want... one endpoint, one request, perfect data every time.&lt;/p&gt;

&lt;p&gt;Instead of having many different endpoints for different data (like /users/1 and /users/1/posts), GraphQL uses a single endpoint. You send a query that specifies the exact fields you need.&lt;/p&gt;

&lt;p&gt;Here are its killer features:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Precise Data Fetching: You can ask for just a user's username and email without receiving their entire profile, saving bandwidth and making mobile apps faster.&lt;/li&gt;
&lt;li&gt;Self-Documenting: GraphQL APIs come with a built-in "playground" that allows developers to explore the available data and test queries instantly, making them incredibly easy to work with.&lt;/li&gt;
&lt;li&gt;Real-Time Subscriptions: This powerful feature allows an application to listen for live data updates automatically, letting the server push changes to the client as they happen.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Major tech companies like GitHub and Shopify have built their entire APIs on GraphQL because it gives front-end developers the flexibility and efficiency they need.&lt;/p&gt;

&lt;p&gt;GraphQL is perfect for requesting specific data, but sometimes you need the server to notify you automatically when something changes, without you having to ask.&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%2F2n8bro78mnde2q4jjhok.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%2F2n8bro78mnde2q4jjhok.png" alt="Real Time Pradigms" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. WebHook API: The Doorbell Notification&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;WebHooks completely flip the traditional API communication model on its head.&lt;/p&gt;

&lt;p&gt;With most APIs, your app is like someone constantly checking their mailbox... you walk outside, open it, see nothing, and walk back. WebHooks are like the mailman ringing your doorbell the moment a letter arrives—instant, direct, and efficient.&lt;/p&gt;

&lt;p&gt;WebHooks are often called "reverse APIs" because instead of your application asking the server for new information (a process called polling), the server sends information to your application the moment a specific event happens.&lt;/p&gt;

&lt;p&gt;It works like this: you provide a "callback URL" from your app to another service. When an event you care about occurs on that service, it automatically sends a POST request with the event details straight to your URL. No polling, no wasted requests—just real-time updates.&lt;/p&gt;

&lt;p&gt;You see WebHooks everywhere:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub fires a WebHook when new code is pushed.&lt;/li&gt;
&lt;li&gt;Shopify triggers a WebHook when a new order is placed.&lt;/li&gt;
&lt;li&gt;Slack and Discord bots rely on WebHooks to react to commands.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WebHooks are excellent for event-based notifications, but for continuous, two-way conversations, you need a connection that stays permanently open.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;6. WebSockets API: The Open Phone Line&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;WebSockets are designed for persistent, real-time, two-way communication.&lt;/p&gt;

&lt;p&gt;Think of WebSockets like opening a permanent phone line between your app and the server. Once the connection is established, both sides can talk to each other anytime, instantly.&lt;/p&gt;

&lt;p&gt;A WebSocket connection starts with a special HTTP request called a "handshake." The client asks the server to upgrade the connection, the server agrees, and from that moment on, a persistent, two-way communication channel is open.&lt;/p&gt;

&lt;p&gt;Unlike traditional HTTP where the client must always initiate a request, a WebSocket allows the server to push data to the client at any time. This makes it perfect for applications where information needs to be updated live, without delay. The protocol is also flexible; you can send plain text, JSON for structured data, or even binary files like images and videos.&lt;/p&gt;

&lt;p&gt;Ideal use cases include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Live chat messages&lt;/li&gt;
&lt;li&gt;Real-time stock price updates&lt;/li&gt;
&lt;li&gt;Live game events and scoreboards&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;WebSockets are the technology behind many of the instant, interactive experiences you enjoy on the web.&lt;/p&gt;

&lt;p&gt;WebSockets create a powerful client-server connection, but what if you want to bypass the server entirely and connect two users directly for even faster communication?&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;7. WebRTC API: The Direct Peer-to-Peer Call&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;WebRTC (Web Real-Time Communication) is a powerful framework that enables something truly magical. While a server may help the browsers find each other initially, the magic of WebRTC is that the actual data—your video, audio, and files—flows directly between users in a peer-to-peer connection.&lt;/p&gt;

&lt;p&gt;When you're on a video call, your video and audio are sent straight from your device to the other person's device. No server in the middle storing or processing your private conversation. It's direct and real-time.&lt;/p&gt;

&lt;p&gt;WebRTC handles all the messy networking details automatically, allowing browsers to find and connect to each other directly. This results in faster communication with no server bottlenecks.&lt;/p&gt;

&lt;p&gt;It is the technology that powers many of today's most popular real-time applications:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Video and audio calls (like Google Meet)&lt;/li&gt;
&lt;li&gt;Screen sharing&lt;/li&gt;
&lt;li&gt;Online gaming&lt;/li&gt;
&lt;li&gt;Instant peer-to-peer file transfers&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Behind the scenes, WebRTC uses features like adaptive bit rate streaming, which constantly adjusts the video quality depending on your internet speed to ensure a smooth experience. It provides the backbone for real-time communication directly in your browser with no extra software required.&lt;/p&gt;




&lt;h3&gt;
  
  
  &lt;strong&gt;At a Glance&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;This table provides a quick summary to help you compare the seven API types.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;API Type&lt;/th&gt;
&lt;th&gt;Core Analogy&lt;/th&gt;
&lt;th&gt;Communication Style&lt;/th&gt;
&lt;th&gt;Best For&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;REST&lt;/td&gt;
&lt;td&gt;The Universal Waiter&lt;/td&gt;
&lt;td&gt;Client-to-Server Request/Response (Stateless)&lt;/td&gt;
&lt;td&gt;General-purpose web and mobile apps, public APIs.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SOAP&lt;/td&gt;
&lt;td&gt;The Formal Business Contract&lt;/td&gt;
&lt;td&gt;Client-to-Server Request/Response (Strict XML Contract)&lt;/td&gt;
&lt;td&gt;Enterprise systems, banking, healthcare, government transactions.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gRPC&lt;/td&gt;
&lt;td&gt;The Formula 1 Race Car&lt;/td&gt;
&lt;td&gt;Client-to-Server RPC (High-performance, bi-directional)&lt;/td&gt;
&lt;td&gt;High-speed internal microservices, real-time systems.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphQL&lt;/td&gt;
&lt;td&gt;The Precision Shopper&lt;/td&gt;
&lt;td&gt;Client-to-Server Query (Client specifies exact data)&lt;/td&gt;
&lt;td&gt;Mobile apps, complex front-ends where performance and flexibility matter&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebHook&lt;/td&gt;
&lt;td&gt;The Doorbell Notification&lt;/td&gt;
&lt;td&gt;Server-to-Client Push (Event-driven)&lt;/td&gt;
&lt;td&gt;Real-time notifications, automating workflows between services.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebSocket&lt;/td&gt;
&lt;td&gt;The Open Phone Line&lt;/td&gt;
&lt;td&gt;Persistent Two-Way Connection (Bi-directional)&lt;/td&gt;
&lt;td&gt;Live chat, real-time dashboards, collaborative apps, online gaming.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebRTC&lt;/td&gt;
&lt;td&gt;The Direct Peer-to-Peer Call&lt;/td&gt;
&lt;td&gt;Direct Browser-to-Browser Connection (Peer-to-Peer)&lt;/td&gt;
&lt;td&gt;Video/audio calls, screen sharing, real-time peer-to-peer applications.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7thc2rxgkwy7p94dpw1k.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%2F7thc2rxgkwy7p94dpw1k.png" alt="Table" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;As we've seen, there is no single "best" API. Each type was designed to solve a specific kind of problem. A REST API is a fantastic general-purpose tool, but it can't provide the real-time push notifications of a WebHook or the peer-to-peer speed of WebRTC. The key is to understand the strengths and weaknesses of each one.&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%2Fasjobh9w47bv8rpmaa2r.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%2Fasjobh9w47bv8rpmaa2r.png" alt="Choice" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By learning these core concepts, you've taken a crucial step in understanding how the modern digital world is built. As you continue your journey as a developer or tech enthusiast, you'll be well-equipped to choose the right tool for any job.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>programming</category>
      <category>neyaznafiz</category>
    </item>
    <item>
      <title>A Quick Overview Of Zig</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Fri, 12 Dec 2025 09:55:33 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/a-quick-overview-of-zig-4926</link>
      <guid>https://forem.com/neyaznafiz/a-quick-overview-of-zig-4926</guid>
      <description>&lt;p&gt;Zig, a modern, high-performance system programming language created by Andrew Kelly in 2016 as a potential alternative to C.&lt;/p&gt;

&lt;p&gt;The language prioritizes speed and low-level control while avoiding hidden memory allocations, instead shipping explicit allocators with the standard library to maximize portability across architectures like ARM and WebAssembly.&lt;/p&gt;

&lt;p&gt;Zig enforces strict control flow by eliminating exceptions and requiring functions that can fail to return an explicit error value, which must be handled using keywords like try. Unique features include the comptime keyword, which allows the execution of code during compilation without needing preprocessors or macros. The language also boasts native support for cross compilation via LLVM and includes a built-in testing framework.&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%2Fdpe3o15yzovu038bhse1.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%2Fdpe3o15yzovu038bhse1.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fqrq5xwxleo0278ko5uu4.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%2Fqrq5xwxleo0278ko5uu4.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fi139uo87dp9a3lpkz0uq.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%2Fi139uo87dp9a3lpkz0uq.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fscy0xiw99soodjvf4wqp.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%2Fscy0xiw99soodjvf4wqp.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fbn1k9pqscrmjdu6r8jcq.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%2Fbn1k9pqscrmjdu6r8jcq.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fcdjjdve6rit1a5p6vwok.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%2Fcdjjdve6rit1a5p6vwok.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Femhtxr0nard2r0wfgoy0.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%2Femhtxr0nard2r0wfgoy0.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fzwcucowfruqus35buvqi.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%2Fzwcucowfruqus35buvqi.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fzif0dtgy5q3fmphuzz5m.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%2Fzif0dtgy5q3fmphuzz5m.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2F2bhdqedpcz4uceglytmf.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%2F2bhdqedpcz4uceglytmf.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2F6o5c398fhk1zpwssmrgz.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%2F6o5c398fhk1zpwssmrgz.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&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%2Fq8jjillaunlic7lsmv82.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%2Fq8jjillaunlic7lsmv82.png" alt="Zig - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>zig</category>
      <category>programmingl</category>
      <category>neyaznafiz</category>
    </item>
    <item>
      <title>Your Git Confusion Ends Here</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Fri, 12 Dec 2025 09:14:50 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/your-git-confusion-ends-here-1fc0</link>
      <guid>https://forem.com/neyaznafiz/your-git-confusion-ends-here-1fc0</guid>
      <description>&lt;p&gt;A comprehensive, conceptual explanation of the Git version control system to help developers move beyond memorized commands and truly understand its inner workings. &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%2Feazowdt8wisk3divs759.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%2Feazowdt8wisk3divs759.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The explanation begins by defining Git as a database where the fundamental unit is the commit, which is a complete snapshot of the project history connected in a Directed Acyclic Graph (DAG) structure. It then clarifies that branches and HEAD are merely pointers or "sticky notes" used to navigate this history. &lt;/p&gt;

&lt;p&gt;The transcript further breaks down the three layers of Git—the working directory, staging area, and repository—before detailing the distinct and potentially destructive operations of key commands like checkout (moving the view), reset (moving a branch), revert (creating a corrective commit), and rebase (rewriting history by creating new commits). &lt;/p&gt;

&lt;p&gt;Finally, the source offers the ref log as a crucial recovery mechanism for finding "lost" commits after errors.&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%2Fay115wp2mgkgxgqlr35y.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%2Fay115wp2mgkgxgqlr35y.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2F21ya3znee06e0b7dau2a.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%2F21ya3znee06e0b7dau2a.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2F7kj2cgtfsmvhzt0rs118.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%2F7kj2cgtfsmvhzt0rs118.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Flxndfj822svhba86oef8.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%2Flxndfj822svhba86oef8.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Fjdrvvtygmlerjjmtdpey.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%2Fjdrvvtygmlerjjmtdpey.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Fzpl99zexxk438nlcvouu.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%2Fzpl99zexxk438nlcvouu.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2F5g05cime3pbeosrp07tv.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%2F5g05cime3pbeosrp07tv.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Fv1kilh7x4jlsbkulqvvf.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%2Fv1kilh7x4jlsbkulqvvf.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2F8z1ut40v0w4utoj8mvvo.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%2F8z1ut40v0w4utoj8mvvo.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Fn800g7p3lk77yx2t6nm7.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%2Fn800g7p3lk77yx2t6nm7.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Fshnuugb41ein8h88akqv.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%2Fshnuugb41ein8h88akqv.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Fwxuf5lfs5em2nxomvrq0.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%2Fwxuf5lfs5em2nxomvrq0.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&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%2Fh8j7ph50n0gmbip1t4zv.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%2Fh8j7ph50n0gmbip1t4zv.png" alt="Git - neyaznafiz" width="800" height="446"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>github</category>
      <category>programming</category>
      <category>neyaznafiz</category>
    </item>
    <item>
      <title>Introducing GlobeFlags – A Beautiful, Open-Source Collection of World Flags</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Fri, 18 Jul 2025 11:28:29 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/introducing-globeflags-a-beautiful-open-source-collection-of-world-flags-1pbg</link>
      <guid>https://forem.com/neyaznafiz/introducing-globeflags-a-beautiful-open-source-collection-of-world-flags-1pbg</guid>
      <description>&lt;p&gt;Flags are more than just colorful rectangles — they represent people, culture, and identity. Whether you’re building a travel app, an education platform, a data dashboard, or even a global game, there’s a good chance you’ll need high-quality national flags.&lt;/p&gt;

&lt;p&gt;That’s exactly why I created &lt;strong&gt;&lt;a href="https://github.com/neyaznafiz/globeflags" rel="noopener noreferrer"&gt;GlobeFlags&lt;/a&gt;&lt;/strong&gt; — an open-source, developer-friendly repository of &lt;strong&gt;every national flag in the world&lt;/strong&gt;, neatly organized, and available in multiple formats.&lt;/p&gt;




&lt;h2&gt;
  
  
  📦 What Is GlobeFlags?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;GlobeFlags&lt;/strong&gt; is a curated collection of national flags from every recognized country on Earth. Unlike many flag resources that are incomplete, inconsistent, or limited in format, GlobeFlags is made with creators in mind:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🎨 &lt;strong&gt;Multiple Formats&lt;/strong&gt;: SVG, PNG, EPS, and PSD
&lt;/li&gt;
&lt;li&gt;🧱 &lt;strong&gt;Two Styles&lt;/strong&gt;: Round corners and square corners
&lt;/li&gt;
&lt;li&gt;📐 &lt;strong&gt;Consistent Dimensions&lt;/strong&gt; and export quality
&lt;/li&gt;
&lt;li&gt;💼 &lt;strong&gt;Ready to Use&lt;/strong&gt; in apps, websites, maps, dashboards, and more&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s designed to be simple, reliable, and customizable.&lt;/p&gt;




&lt;h2&gt;
  
  
  🔍 Why I Made It
&lt;/h2&gt;

&lt;p&gt;As a developer and designer, I’ve often found myself searching for decent flag assets — sometimes only finding low-res PNGs, inconsistent file names, or missing formats altogether. So I decided to compile a high-quality, well-structured, and complete resource that others can use freely.&lt;/p&gt;




&lt;h2&gt;
  
  
  📁 Folder Structure Overview
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;globeflags/
├── round/
│   ├── svg/
│   ├── png/
│   ├── eps/
│   └── psd/
└── square/
    ├── svg/
    ├── png/
    ├── eps/
    └── psd/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each flag is placed in both round and square variants, and available in four formats to meet the needs of developers and designers alike.&lt;/p&gt;

&lt;h2&gt;
  
  
  ⚡ Who Should Use This?
&lt;/h2&gt;

&lt;p&gt;GlobeFlags is great for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Web and app developers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🧑‍🏫 &lt;strong&gt;Educational platform builders&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🗺️ &lt;strong&gt;Interactive map designers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;Data dashboard creators&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;UI/UX and graphic designers&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;Hackathon and personal project tinkerers&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Whether you're a solo indie hacker or part of a dev team, &lt;strong&gt;GlobeFlags can save you time and improve your work&lt;/strong&gt;.&lt;/p&gt;




&lt;h2&gt;
  
  
  🚀 How to Get Started
&lt;/h2&gt;

&lt;p&gt;You can download the full flag pack as a ZIP archive:&lt;/p&gt;

&lt;p&gt;🔗 &lt;a href="https://github.com/neyaznafiz/globeflags/archive/refs/heads/main.zip" rel="noopener noreferrer"&gt;&lt;strong&gt;Download ZIP&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Or clone it directly using Git:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git clone https://github.com/neyaznafiz/globeflags.git
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Everything is organized, cleanly named, and ready to plug into your project.&lt;/p&gt;




&lt;h2&gt;
  
  
  🤝 Contributions Welcome
&lt;/h2&gt;

&lt;p&gt;I plan to continue improving GlobeFlags over time — adding variants, optimizing assets, and accepting contributions from the community. If you’d like to help:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;⭐ Star the repo to show support&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🍴 Fork and contribute improvements&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;🛠️ Suggest missing flags or better formats&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Also, I am planning to write a library package for flags. You are welcome to contribute if you are interested.&lt;/p&gt;




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

&lt;p&gt;Designing and building globally-focused apps shouldn’t come with friction.&lt;br&gt;
With GlobeFlags, I hope to make it easier for creators to access the assets they need — free, open-source, and with zero hassle.&lt;/p&gt;

&lt;p&gt;👉 GitHub: &lt;a href="https://github.com/neyaznafiz/globeflags" rel="noopener noreferrer"&gt;neyaznafiz/globeflags&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thanks for reading — and happy flagging! 🏁&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>flags</category>
      <category>design</category>
      <category>tools</category>
    </item>
    <item>
      <title>𝗔 𝗖𝗼𝗺𝗽𝗿𝗲𝗵𝗲𝗻𝘀𝗶𝘃𝗲 𝗢𝘃𝗲𝗿𝘃𝗶𝗲𝘄 𝗼𝗳 𝗥𝘂𝘀𝘁, 𝗛𝗼𝘄 𝗥𝘂𝘀𝘁 𝗰𝗮𝗻 𝗲𝗹𝗲𝘃𝗮𝘁𝗲 𝘆𝗼𝘂𝗿 𝘀𝗼𝗳𝘁𝘄𝗮𝗿𝗲 𝗱𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 !</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Sat, 30 Sep 2023 18:35:12 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/--3lb0</link>
      <guid>https://forem.com/neyaznafiz/--3lb0</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffy0anm60aiua9d3f95ga.jpg" 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%2Ffy0anm60aiua9d3f95ga.jpg" alt=" " width="800" height="457"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Regarding modern programming languages, Rust has emerged as a compelling choice for developers seeking a powerful, reliable, and secure foundation for their software. The purpose of this article is to explore the world of software development in Rust, its key features and advantages, and why it has garnered such widespread attention in recent years.&lt;/p&gt;

&lt;p&gt;𝗠𝗲𝗺𝗼𝗿𝘆 𝗦𝗮𝗳𝗲𝘁𝘆 𝗮𝗻𝗱 𝗖𝗼𝗻𝗰𝘂𝗿𝗿𝗲𝗻𝗰𝘆:&lt;br&gt;
One of Rust's standout features is its robust memory safety guarantees. The ownership system, borrowing, and lifetimes ensure that programs are free from null pointer dereferences and data races, making Rust an ideal choice for building concurrent and parallel software.&lt;/p&gt;

&lt;p&gt;𝗣𝗲𝗿𝗳𝗼𝗿𝗺𝗮𝗻𝗰𝗲 𝗮𝗻𝗱 𝗘𝗳𝗳𝗶𝗰𝗶𝗲𝗻𝗰𝘆:&lt;br&gt;
Rust's performance rivals that of C and C++ while offering a more secure development experience. Its zero-cost abstractions allow developers to write high-level, expressive code without sacrificing performance.&lt;/p&gt;

&lt;p&gt;𝗘𝗰𝗼𝘀𝘆𝘀𝘁𝗲𝗺 𝗮𝗻𝗱 𝗣𝗮𝗰𝗸𝗮𝗴𝗲 𝗠𝗮𝗻𝗮𝗴𝗲𝗺𝗲𝗻𝘁:&lt;br&gt;
Rust boasts a growing ecosystem of libraries and tools thanks to its package manager, Cargo. This dependency management system simplifies project setup and makes it easy to integrate third-party libraries, fostering rapid development.&lt;/p&gt;

&lt;p&gt;𝗧𝗵𝗲 𝗰𝗼𝗺𝗺𝘂𝗻𝗶𝘁𝘆 𝗮𝗻𝗱 𝗱𝗼𝗰𝘂𝗺𝗲𝗻𝘁𝗮𝘁𝗶𝗼𝗻:&lt;br&gt;
The Rust community is known for its inclusivity and commitment to producing high-quality documentation. Official resources like "The Rust Programming Language" book and the Rust documentation website provide a wealth of knowledge for developers at all levels.&lt;/p&gt;

&lt;p&gt;𝗖𝗼𝗺𝗽𝗮𝘁𝗶𝗯𝗶𝗹𝗶𝘁𝘆 𝗮𝗰𝗿𝗼𝘀𝘀 𝗽𝗹𝗮𝘁𝗳𝗼𝗿𝗺𝘀:&lt;br&gt;
Rust's ability to compile on various platforms, including Windows, Linux, and macOS, ensures that developers can target a wide range of environments with ease.&lt;/p&gt;

&lt;p&gt;𝗪𝗲𝗯 𝗗𝗲𝘃𝗲𝗹𝗼𝗽𝗺𝗲𝗻𝘁 𝘄𝗶𝘁𝗵 𝗥𝘂𝘀𝘁:&lt;br&gt;
Web development in Rust has gained momentum with frameworks like Rocket and Actix. These frameworks empower developers to create efficient, high-performance web applications while leveraging Rust's safety features.&lt;/p&gt;

&lt;p&gt;𝗘𝗺𝗯𝗲𝗱𝗱𝗲𝗱 𝗮𝗻𝗱 𝗜𝗼𝗧:&lt;br&gt;
Rust's suitability for systems programming extends to embedded and IoT (Internet of Things) applications. Its low-level capabilities and memory safety make it an ideal choice for building firmware and IoT devices.&lt;/p&gt;

&lt;p&gt;𝗦𝗲𝗰𝘂𝗿𝗶𝘁𝘆 𝗮𝗻𝗱 𝗥𝗲𝗹𝗶𝗮𝗯𝗶𝗹𝗶𝘁𝘆:&lt;br&gt;
Rust's strict adherence to memory safety and its fearless concurrency model make it inherently resistant to common security vulnerabilities, such as buffer overflows and data races.&lt;/p&gt;

&lt;p&gt;The Rust programming language continues to evolve, with regular releases introducing new features and improvements. As more organizations adopt Rust, its ecosystem will likely expand further.&lt;/p&gt;

&lt;p&gt;Software development in Rust represents a paradigm shift, combining high performance with enhanced security and safety. Its thriving ecosystem, community support, and versatility across a range of domains make it a formidable choice for modern software development. Whether you are building web applications, system utilities, or embedded systems, Rust empowers developers to create robust and reliable software. As Rust continues to gain traction, it is poised to shape the future of programming.&lt;/p&gt;

</description>
      <category>rust</category>
      <category>softwaredevelopment</category>
      <category>overview</category>
      <category>neyaznafiz</category>
    </item>
    <item>
      <title>Collect system disk drive information using Rust.</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Sun, 09 Jul 2023 05:49:47 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/how-to-collect-syatem-disk-drive-information-5afo</link>
      <guid>https://forem.com/neyaznafiz/how-to-collect-syatem-disk-drive-information-5afo</guid>
      <description>&lt;h2&gt;
  
  
  system_diskinfo
&lt;/h2&gt;

&lt;p&gt;A package for collect information about disk drive means SSD/HDD etc of a windows operating system.&lt;/p&gt;

&lt;p&gt;You will be able to collect disk information from any device with just a function call. you will be able to collect the &lt;code&gt;disk name&lt;/code&gt;, &lt;code&gt;disk model&lt;/code&gt;, &lt;code&gt;disk size&lt;/code&gt; and &lt;code&gt;disk serial number&lt;/code&gt; information of a windows system with this package.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Install Package&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cargo add system_diskinfo
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Add Dependencies&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;system_diskinfo = "0.1.4"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  &lt;strong&gt;Modules&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;driveName&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;driveSize&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;driveModel&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;driveSerialNumber&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

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

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;drive_name()&lt;/code&gt; for collect the name of system disk drive.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;drive_size()&lt;/code&gt; for collect the total capacity of disk drive.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;drive_model()&lt;/code&gt; for collect the model of system disk drive.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;drive_serial_number()&lt;/code&gt; for collect the serial number of system disk drive.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Guideline&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;First of all add this package to your &lt;code&gt;dependencies&lt;/code&gt; in &lt;code&gt;cargo.toml&lt;/code&gt; file, then open a file where you want to use and add the package in the top of the file like &lt;code&gt;use system_diskinfo&lt;/code&gt;, after that, to get the correct output use it like this: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;First write the package name. ( &lt;code&gt;system_diskinfo&lt;/code&gt; )&lt;/li&gt;
&lt;li&gt;Add double clone. ( &lt;code&gt;::&lt;/code&gt; )&lt;/li&gt;
&lt;li&gt;Write module name using camel case. ( &lt;code&gt;driveName&lt;/code&gt; )&lt;/li&gt;
&lt;li&gt;Add double clone. ( &lt;code&gt;::&lt;/code&gt; )&lt;/li&gt;
&lt;li&gt;Call the function using snake case. ( &lt;code&gt;drive_name&lt;/code&gt; )&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Example&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;We are printing here the total capacity information about the disk drive of a windows system.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;cargo.toml&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;[dependencies]
system_diskinfo = "0.1.4"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;main.rs&lt;/em&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;use system_diskinfo;

fn main() {
  let size = system_diskinfo::driveSize::drive_size();
  println!("Disk Drive Size: {}",  size);
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Open your terminal with the correct path of your project and run &lt;code&gt;cargo run&lt;/code&gt; command&lt;br&gt;
&lt;/p&gt;

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

Disk Drive Size: 512105932800 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h5&gt;
  
  
  Best Regards. Enjoy.
&lt;/h5&gt;

</description>
      <category>programming</category>
      <category>rust</category>
      <category>package</category>
      <category>neyaznafiz</category>
    </item>
    <item>
      <title>Why TailwindCSS is better !</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Wed, 05 Apr 2023 15:01:44 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/why-tailwindcss-is-better--138k</link>
      <guid>https://forem.com/neyaznafiz/why-tailwindcss-is-better--138k</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0z7zlk1ctu6vwsca0uds.jpg" 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%2F0z7zlk1ctu6vwsca0uds.jpg" alt=" " width="800" height="351"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;TailwindCSS is a modern CSS framework that allows us to develop easy and efficient web user interfaces. There are several reasons why TailwindCSS is the better choice for web developers, Here are some reasons why some developers prefer Tailwind CSS over other CSS frameworks:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Utility-first approach:&lt;/strong&gt;&lt;br&gt;
TailwindCSS has a utility-first approach, which means that it uses utility classes to apply styles. This approach allows developers to easily create multiple styles and layouts for a single page using pre-defined classes. By using utility classes, developers can write code faster and more efficiently, resulting in a faster development process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Customizable:&lt;/strong&gt;&lt;br&gt;
One of the best things about TailwindCSS is its customization options. It comes with a large number of pre-defined styles and components, but you can easily customize them to fit your specific needs. You can change colors, fonts, padding, and more, or create your own styles from scratch. This customization flexibility allows developers to create unique and visually appealing designs without sacrificing efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Consistency:&lt;/strong&gt;&lt;br&gt;
Consistency is key in web development, and TailwindCSS helps ensure consistency across your entire project. By using pre-defined classes, developers can ensure that elements are styled consistently throughout their projects, which helps create a cohesive and professional-looking design.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bundle size:&lt;/strong&gt;&lt;br&gt;
TailwindCSS also boasts a small bundle size, which is important for website performance. By using only the styles that you need, you can significantly reduce the size of your CSS file, which can improve load times and overall website performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reusability:&lt;/strong&gt;&lt;br&gt;
TailwindCSS allows reusability, which is important for a streamlined development process. By using pre-defined classes, developers can easily reuse styles and layouts throughout their projects, reducing the amount of code that needs to be written and improving efficiency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Speed:&lt;/strong&gt;&lt;br&gt;
Another advantage of using TailwindCSS is its speed. Because it uses pre-defined classes, developers can write code faster and more efficiently, resulting in a faster development process. Additionally, TailwindCSS includes a purge feature that removes any unused styles, reducing the overall file size and improving load times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Responsive design:&lt;/strong&gt;&lt;br&gt;
TailwindCSS also offers excellent responsive design features. It includes pre-defined classes for breakpoints, allowing developers to easily create responsive designs that work seamlessly across various screen sizes. This makes it easy to create a single design that looks great on desktop, mobile, etc devices.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Community support:&lt;/strong&gt;&lt;br&gt;
Finally, TailwindCSS has a strong and supportive community. There are a number of resources available, including documentation, tutorials, and plugins, that make it easy for developers to learn and use the framework. Additionally, the community is active and engaged, providing support and feedback to developers who use TailwindCSS.&lt;/p&gt;

&lt;p&gt;Overall, TailwindCSS is a powerful and efficient CSS framework that provides a number of advantages over other frameworks. Those points mentioned above make it an ideal choice for web developers who want to streamline their development process and create a beautiful and efficient user interface.&lt;/p&gt;



&lt;p&gt;In the world of modern web development, styling has evolved far beyond&lt;br&gt;
writing long, repetitive CSS files. Frameworks like Tailwind CSS have&lt;br&gt;
redefined how developers approach design by introducing a&lt;br&gt;
&lt;strong&gt;utility-first workflow&lt;/strong&gt;. But what actually makes Tailwind CSS better&lt;br&gt;
than traditional CSS?&lt;/p&gt;
&lt;h4&gt;
  
  
  1. Faster Development Speed
&lt;/h4&gt;

&lt;p&gt;With traditional CSS, you often write custom classes for every&lt;br&gt;
component:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.button&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;background-color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="no"&gt;blue&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;padding&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;10px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nl"&gt;border-radius&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;5px&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then apply it in HTML:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"button"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Tailwind CSS, you skip writing custom CSS and use pre-built utility&lt;br&gt;
classes directly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;button&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"bg-blue-500 px-4 py-2 rounded"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Click&lt;span class="nt"&gt;&amp;lt;/button&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Why it's better:&lt;/strong&gt; - No context switching between CSS and HTML -&lt;br&gt;
Faster prototyping - Less time naming classes&lt;/p&gt;
&lt;h4&gt;
  
  
  2. No More Naming Problems
&lt;/h4&gt;

&lt;p&gt;One of the hardest parts of traditional CSS is naming classes.&lt;/p&gt;

&lt;p&gt;Tailwind eliminates this problem entirely by using descriptive utility&lt;br&gt;
classes like: - &lt;code&gt;text-center&lt;/code&gt; - &lt;code&gt;mt-4&lt;/code&gt; - &lt;code&gt;flex&lt;/code&gt; - &lt;code&gt;justify-between&lt;/code&gt;&lt;/p&gt;
&lt;h4&gt;
  
  
  3. Highly Reusable and Consistent Design
&lt;/h4&gt;

&lt;p&gt;Tailwind enforces consistency through a design system: - Predefined&lt;br&gt;
spacing scale - Standard color palette - Typography rules&lt;/p&gt;
&lt;h4&gt;
  
  
  4. Smaller CSS Bundle Size
&lt;/h4&gt;

&lt;p&gt;Tailwind removes unused CSS automatically, resulting in smaller file&lt;br&gt;
sizes and better performance.&lt;/p&gt;
&lt;h4&gt;
  
  
  5. Better Maintainability
&lt;/h4&gt;

&lt;p&gt;Utility classes reduce conflicts, avoid deep nesting, and make styles&lt;br&gt;
predictable.&lt;/p&gt;
&lt;h4&gt;
  
  
  6. Built-In Responsiveness
&lt;/h4&gt;

&lt;p&gt;Instead of writing media queries manually, Tailwind uses responsive&lt;br&gt;
prefixes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;div&lt;/span&gt; &lt;span class="na"&gt;class=&lt;/span&gt;&lt;span class="s"&gt;"p-4 md:p-6 lg:p-8"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&amp;lt;/div&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  7. Encourages Component-Based Thinking
&lt;/h4&gt;

&lt;p&gt;Tailwind works seamlessly with modern frameworks like React, Vue, and&lt;br&gt;
Next.js.&lt;/p&gt;

&lt;h4&gt;
  
  
  8. Customization Without Complexity
&lt;/h4&gt;

&lt;p&gt;You can easily customize: - Colors - Fonts - Spacing - Themes&lt;/p&gt;

&lt;h4&gt;
  
  
  9. Modern Features Out of the Box
&lt;/h4&gt;

&lt;p&gt;Includes: - Flexbox &amp;amp; Grid - Dark mode - Animations - Container queries&lt;/p&gt;

&lt;h4&gt;
  
  
  10. Better Developer Experience
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;  Autocomplete support&lt;/li&gt;
&lt;li&gt;  Predictable class system&lt;/li&gt;
&lt;li&gt;  Less debugging&lt;/li&gt;
&lt;li&gt;  Faster workflow&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Final Thoughts
&lt;/h3&gt;

&lt;p&gt;Tailwind CSS offers a faster, cleaner, and more efficient way to build&lt;br&gt;
modern user interfaces compared to traditional CSS.&lt;/p&gt;

&lt;p&gt;If traditional CSS is like crafting everything from scratch, Tailwind is&lt;br&gt;
like having a well-organized toolkit that lets you build faster and&lt;br&gt;
smarter.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Drop your feedback about TailwindCSS in the comment section.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>css</category>
      <category>tailwindcss</category>
      <category>design</category>
    </item>
    <item>
      <title>JavaScript Promise !</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Tue, 28 Mar 2023 07:13:33 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/promise-in-javascript-33eo</link>
      <guid>https://forem.com/neyaznafiz/promise-in-javascript-33eo</guid>
      <description>&lt;p&gt;In JavaScript, a Promise is an object that represents the eventual completion (or failure) of an asynchronous operation and its resulting value. Promises provide a way to handle asynchronous operations that involve waiting for some action to complete before proceeding with the rest of the code. This can be very useful when dealing with time-consuming or resource-intensive tasks, such as network requests or database queries.&lt;/p&gt;

&lt;p&gt;A Promise can be in one of those three states: &lt;strong&gt;pending&lt;/strong&gt;, &lt;strong&gt;fulfilled&lt;/strong&gt;, or &lt;strong&gt;rejected&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;When a Promise is in the pending state, it means that the asynchronous operation is still in progress and the result is not yet available. &lt;/li&gt;
&lt;li&gt;When the operation completes successfully, the Promise is fulfilled with the resulting value. &lt;/li&gt;
&lt;li&gt;The Promise is rejected with an error object if an error occurs during the operation.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Promises can be created using the &lt;strong&gt;Promise()&lt;/strong&gt; constructor, which takes a function that defines the asynchronous operation to be performed. The function should accept two parameters: &lt;strong&gt;resolve()&lt;/strong&gt; and &lt;strong&gt;reject()&lt;/strong&gt;. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;resolve() is called when the operation completes successfully and returns the resulting value. &lt;/li&gt;
&lt;li&gt;reject() is called if an error occurs during the operation and returns an error object.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Promises can be consumed using methods like &lt;strong&gt;then()&lt;/strong&gt;, &lt;strong&gt;catch()&lt;/strong&gt;, and &lt;strong&gt;finally()&lt;/strong&gt;, which allow you to handle the result of the Promise or any errors that may occur. Chaining these methods together can make it easier to write and manage complex asynchronous code.&lt;/p&gt;

&lt;p&gt;Overall, Promises are a powerful tool in modern JavaScript development and provide a simpler, more organized way to handle asynchronous operations.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>JavaScript DOM</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Mon, 13 Mar 2023 16:19:40 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/javascript-dom-d7h</link>
      <guid>https://forem.com/neyaznafiz/javascript-dom-d7h</guid>
      <description>&lt;p&gt;The JavaScript DOM (Document Object Model) is a programming interface for web documents. Programs can use it to change the structure, style, and content of a document. JavaScript is used to interact with the DOM and manipulate web page elements.&lt;/p&gt;

&lt;p&gt;When a web page is loaded in a browser, the browser creates a Document Object Model of the page, which is essentially a hierarchical tree-like representation of the HTML elements on the page. Each element on the page is represented as an object in the DOM tree, and JavaScript can access and manipulate these objects to modify the page.&lt;/p&gt;

&lt;p&gt;JavaScript provides a number of methods and properties to interact with the DOM. As an example, you can use JavaScript to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Select and modify HTML elements and attributes on a page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create/add new HTML elements, Attributes and add them to the page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Remove HTML elements, Attributes from the page.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The content and style of HTML elements can be changed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;User events such as mouse clicks and keyboard input are handled.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In summary, the JavaScript DOM allows developers to create dynamic and interactive web pages by manipulating the HTML elements and their properties in response to user interaction or other events.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>About AWS - Bangla Session</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Fri, 04 Nov 2022 18:56:14 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/about-aws-1jki</link>
      <guid>https://forem.com/neyaznafiz/about-aws-1jki</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8w9fix1m61ywo6mcllgv.jpg" 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%2F8w9fix1m61ywo6mcllgv.jpg" alt=" " width="800" height="385"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Many of us have an interest in AWS and various job requirements also seek and prefer candidates with knowledge of AWS. From all these things, an interest in AWS was sparked, but it was never discussed.&lt;/p&gt;

&lt;p&gt;Suddenly I saw a free online seminar and I registered. It was very useful for me, it was a 3-hour workshop, first some theoretical stuff and then practically everything is shown here. Account Create, S3, AWS Bucket, etc., all the basics are covered pretty well. I didn't expect so much to be covered here.&lt;/p&gt;

&lt;p&gt;Below is a link to the recorded video of the session, which hopefully will be useful to anyone interested in learning more about Amazon Web Services.&lt;/p&gt;

&lt;p&gt;Session Video Link: &lt;a href="https://drive.google.com/file/d/1wbePrtdZaVbd6DsSfcpxp9riSbM9YkPb/view?usp=sharing" rel="noopener noreferrer"&gt;https://drive.google.com/file/d/1wbePrtdZaVbd6DsSfcpxp9riSbM9YkPb/view?usp=sharing&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>undefined and null in JavaScript</title>
      <dc:creator>NEYAZ NAFIZ</dc:creator>
      <pubDate>Wed, 07 Sep 2022 16:56:28 +0000</pubDate>
      <link>https://forem.com/neyaznafiz/undefined-and-null-in-javascript-3om8</link>
      <guid>https://forem.com/neyaznafiz/undefined-and-null-in-javascript-3om8</guid>
      <description>&lt;p&gt;Undefined means a variable has been declared but there is no value assigned yet in that variable. Unassigned variables are initialized by the default value of undefined in JavaScript. Good to said, the value does not exist in the compiler. It is the global object.&lt;/p&gt;

&lt;p&gt;Null means an empty or non-existent value, null is also an object. Good to said, It is the intentional absence of the value. It is one of the primitive values of JavaScript.&lt;/p&gt;

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