<?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: Aysha Muhammed</title>
    <description>The latest articles on DEV Community by Aysha Muhammed (@aysha).</description>
    <link>https://dev.to/aysha</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%2F1015047%2F142a5ff2-32b9-465e-9116-3de3fec34085.jpeg</url>
      <title>DEV Community: Aysha Muhammed</title>
      <link>https://dev.to/aysha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aysha"/>
    <language>en</language>
    <item>
      <title>Understanding Open-Source Licenses</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Thu, 28 Nov 2024 10:21:45 +0000</pubDate>
      <link>https://dev.to/aysha/understanding-open-source-licenses-3144</link>
      <guid>https://dev.to/aysha/understanding-open-source-licenses-3144</guid>
      <description>&lt;p&gt;The rise of open-source software (OSS) is significant in today's world. This is because it’s free and open to everyone, leading to its wide adoption. From small projects to billion-dollar businesses, OSS has been adopted for use.&lt;/p&gt;

&lt;p&gt;It also serves as an underlying resource to create other software and products. However, ignorance or misunderstanding of the license attached to OSS can lead to consequences.&lt;/p&gt;

&lt;p&gt;An &lt;a href="https://en.wikipedia.org/wiki/Open-source_license" rel="noopener noreferrer"&gt;open-source license&lt;/a&gt; defines the terms and conditions of using OSS. Understanding these licenses is crucial to developers and users to avoid unexpected situations. For example,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Choosing an inappropriate license can restrict adoption.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Misuse of an OSS license can lead to legal consequences and infringement of rights.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Incorrect use of OSS can lead to vulnerability and lack of security.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;At the end of this article, we will dive into what an open-source license is and how to identify it in an OSS, its categories, types, and implications.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is an open-source license?
&lt;/h2&gt;

&lt;p&gt;An Open-source license is a legally defined rule on how to use OSS, which is generally known as the terms. The terms specify the usage, modification, distribution, and commercialization of the software. According to the &lt;a href="https://opensource.org/license/" rel="noopener noreferrer"&gt;Open Source Initiative (OSI)&lt;/a&gt;, open-source licenses follow the open-source definition. These licenses allow the software to be freely used, modified, and distributed.&lt;/p&gt;

&lt;p&gt;Developers attach a license to OSS during or after its development. This license clarifies the terms of use. If the terms are followed, it ensures the rights of the software owner and removes legal consequences for the software user.&lt;/p&gt;

&lt;p&gt;There are various ways to attach a license. Tools like GitHub and GitLab allow developers to attach licenses for OSS.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to identify open-source license in a software
&lt;/h2&gt;

&lt;p&gt;On GitHub, users can view the software license by following these steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Navigate to the OSS repository on GitHub. Licenses are found in the root folder directory with a file name &lt;code&gt;LICENSE&lt;/code&gt; or &lt;code&gt;LICENSE.txt&lt;/code&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0ralp0gsif3qrcaen6h6.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%2F0ralp0gsif3qrcaen6h6.png" alt="CHAOSS OSS education repository" width="683" height="306"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Often, you can see a project's license near the top of the repository page, under the repository name. It comes after the list of files in the repository.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fxrzbac3rki2ql1t4a8eg.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%2Fxrzbac3rki2ql1t4a8eg.png" alt="CHAOSS OSS education repository" width="691" height="289"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Categories of open-source licenses
&lt;/h2&gt;

&lt;p&gt;There are two broad categories of open-source licenses.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The Permissive License&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The Copyleft Licenses&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The Permissive License
&lt;/h2&gt;

&lt;p&gt;The permissive license is sometimes labeled as “Anything goes”. This is because of the fewer restrictions in its term compared to other licenses. Permissive licenses permit the use, modification, or redistribution of the software and users don't need to publicize or make available such modifications unless they choose to.&lt;/p&gt;

&lt;p&gt;A permissive license also allows commercial use. This means, whether the software is modified or not, you can include it in your products for sale. The main requirement for permissive licenses is to add a copyright notice whether for personal or commercial use. This ensures that the right of the owner is acknowledged.&lt;/p&gt;

&lt;p&gt;Examples of OSS that use a permissive license include the MIT License and the Apache License.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Copyleft License
&lt;/h2&gt;

&lt;p&gt;The copyleft license is also labeled as a “restrictive license”. It is more restrictive than a permissive license. Like permissive licenses, copyleft licenses allow the use, modification, and distribution of OSS. However, every modification must be publicized or available to other users without restriction.&lt;/p&gt;

&lt;p&gt;In cases where modification or derivative work from a copyleft software needs a license, it must use the same copyleft license. Some examples of OSS that use a copyleft license include the GNU public license and Mozilla public license.&lt;/p&gt;

&lt;h2&gt;
  
  
  Types of open-source licenses
&lt;/h2&gt;

&lt;p&gt;There are several types of open-source licenses. Each of them falls into one of the broader categories above. However, we will discuss a few popular ones.&lt;/p&gt;

&lt;h3&gt;
  
  
  MIT License
&lt;/h3&gt;

&lt;p&gt;The MIT license is a type of permissive license. It is created at the Massachusetts Institute of Technology. It gives users the right to use, modify, or distribute the software. Users may choose not to make their modifications public.&lt;/p&gt;

&lt;p&gt;However, users must provide attribution to the owner of the software by including the license and copyright notice. Examples of projects that use the MIT license include Angular, Node Js, and React.&lt;/p&gt;

&lt;h3&gt;
  
  
  General Public License
&lt;/h3&gt;

&lt;p&gt;The General Public License (GPL) is a type of copyleft license. It is created by &lt;a href="https://en.wikipedia.org/wiki/Richard_Stallman%5C" rel="noopener noreferrer"&gt;Richard M. Stallman&lt;/a&gt;; the founder of the &lt;a href="https://www.fsf.org/" rel="noopener noreferrer"&gt;Free Software Foundation&lt;/a&gt;. In the case of distribution, OSS with a GPL license cannot make their modification proprietary. This means modifications cannot be privately owned or closed. Modifications must be public or made available to other users without limitations.&lt;/p&gt;

&lt;p&gt;Any modifications made to GPL-licensed software must be distributed under the same license terms. Examples of projects licensed under GPL include Linux kernel, Notepad++, and WordPress&lt;/p&gt;

&lt;h3&gt;
  
  
  Apache License
&lt;/h3&gt;

&lt;p&gt;The Apache License is a permissive type of license. It is created by the Apache software foundation. The Apache License allows users the freedom to use software by including copyright and patent information, trademark, and attribution notices.&lt;/p&gt;

&lt;p&gt;Unlike GPL licenses, modifications to Apache License software may not use the same license after a modification. However, if the Apache License software is used without any modification, it must be published under the Apache License.&lt;/p&gt;

&lt;p&gt;Modifications made to the software must be labeled clearly with a notice. The notice states that changes have been made to that part of the software. Examples of projects using the Apache License include the Apache HTTP Server and Swift.&lt;/p&gt;

&lt;h3&gt;
  
  
  BSD License
&lt;/h3&gt;

&lt;p&gt;The BSD License is a permissive type of license created at UC Berkeley. It has multiple variants and is similar to the Apache License. The BSD License allows you to use, modify, and distribute software if the copyright and license are included.&lt;/p&gt;

&lt;p&gt;It does not force modification to be distributed under the terms of the BSD license. However, you cannot promote your software using the name of the license. It is also compatible with other licenses. Examples of projects that use the BSD license include Go and Django Python framework.&lt;/p&gt;

&lt;p&gt;Users can find more licenses on the Open Source Initiative (OSI) website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Implications of open-source licenses
&lt;/h2&gt;

&lt;p&gt;There are different general implications of open-source licenses whether permissive or copyleft.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Consequence&lt;/strong&gt;: Developers and users need to understand the license they choose. Ignorance of license type can lead to legal issues. For example, if a user modifies GPL-licensed software and adds it to proprietary software, it may result in legal consequences. OSS developers and users must choose the right license.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Adoption&lt;/strong&gt;: Some open-source Licenses are more adopted than others. This is due to the flexibility and usability offered. For example, permissive licenses are more popular. This is because users can build on permissive-licensed software without making it public. This flexibility makes it easier to use and commercialize.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Commercial use&lt;/strong&gt;: Some businesses rely on OSS to create products. However, the license attached to the OSS can impact the commercialization of these products. For example, if a business uses GPL-licensed software to create its product, it may face commercialization restrictions. This is because GPL licenses require modifications to be open and available to the public. Product users may be unwilling to pay for publicly accessible software or products. This is exactly why businesses need to take note of license type if they rely on OSS.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Security&lt;/strong&gt;: Licenses often provide no guarantees about the quality or security of the software. Users must assume the risks associated with potential vulnerabilities, bugs, or defects. This means that issues arising from its use are at the user's risk. This lack of guarantee makes it important to vet any open-source resource before use.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;Understanding open-source licenses is important whether you are a developer or a user. By now, you should be familiar with the different categories of licenses. Selecting the right one can help you maximize the benefits of OSS the right way.&lt;/p&gt;

&lt;p&gt;Before using, modifying, or distributing an OSS, take time to check the license attached to it. It will help you avoid legal or security issues while ensuring compliance with the terms of use.&lt;/p&gt;

&lt;h2&gt;
  
  
  Further reading
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.nber.org/system/files/working_papers/w9363/w9363.pdf" rel="noopener noreferrer"&gt;https://www.nber.org/system/files/working_papers/w9363/w9363.pdf&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://citeseerx.ist.psu.edu/document?repid=rep1&amp;amp;type=pdf&amp;amp;doi=0625aada49caa66436ee6e3fac88542678100d0e" rel="noopener noreferrer"&gt;https://citeseerx.ist.psu.edu/document?repid=rep1&amp;amp;type=pdf&amp;amp;doi=0625aada49caa66436ee6e3fac88542678100d0e&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://opensource.org/licenses" rel="noopener noreferrer"&gt;https://opensource.org/licenses&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://www.leanix.net/en/wiki/trm/open-source-licenses" rel="noopener noreferrer"&gt;https://www.leanix.net/en/wiki/trm/open-source-licenses&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>opensource</category>
      <category>github</category>
      <category>softwaredevelopment</category>
    </item>
    <item>
      <title>Evaluating the blockchain trilemma and its solution</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Tue, 24 Oct 2023 14:34:57 +0000</pubDate>
      <link>https://dev.to/aysha/evaluating-the-blockchain-trilemma-and-its-solution-4hak</link>
      <guid>https://dev.to/aysha/evaluating-the-blockchain-trilemma-and-its-solution-4hak</guid>
      <description>&lt;p&gt;Have you ever been excited about a solution that solves a long-standing problem? Amidst your excitement, you discovered that to use the solution satisfactorily, you needed to make some trade-offs.&lt;/p&gt;

&lt;p&gt;The disappointing news is that these trade-offs are essential parts of how this solution solves the problem! Do you have a headache already? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--CRJAbOF_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i35v8ckdmz3h4yclzerl.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--CRJAbOF_--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/i35v8ckdmz3h4yclzerl.png" alt="Credit: [Craftwork Studio]" width="800" height="467"&gt;&lt;/a&gt;&lt;br&gt;
Welcome to the world of the blockchain trilemma, where security, scalability, and decentralization intersect each other to achieve a solution where centralization is defeated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introduction
&lt;/h2&gt;

&lt;p&gt;If you are up to date with the latest developments in the tech ecosystem, then you must have heard of or be familiar with Web3, a decentralized web powered by blockchain technology.&lt;/p&gt;

&lt;p&gt;This technology has garnered praise over the years as it solves the problem of centralization. Different factors have contributed to its success. However, some core factors cannot be ignored. They include scalability, security, and decentralization.&lt;/p&gt;

&lt;p&gt;As fascinating as this decentralized solution may sound, it also has its challenges, and one of them is the blockchain trilemma.&lt;/p&gt;

&lt;p&gt;This article will give you a comprehensive understanding of the blockchain trilemma, how it affects the performance of the blockchain, the blockchain scalabity, and the layer 2 solution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Blockchain Trilemma
&lt;/h2&gt;

&lt;p&gt;The core concept of blockchain technology is decentralization through an &lt;a href="https://www.ledger.com/academy/glossary/ledger#:~:text=A%20ledger%20is%20a%20digital,designed%20to%20store%20data%20securely."&gt;immutable ledger system&lt;/a&gt;, and its main aim is to take control away from a central entity or authority while ensuring security.&lt;/p&gt;

&lt;p&gt;The immutable ledger system is achieved through transactional activity occuring in the blockchain network; these &lt;a href="https://www.upgrad.com/blog/what-is-blockchain-transaction/[](url)"&gt;transactions&lt;/a&gt; represents the exchange of data in the blockchain network. Transactions are recorded to ensure data integrity.&lt;/p&gt;

&lt;p&gt;To achieve decentralization through an immutable ledger system, several &lt;a href="https://worldcoin.org/articles/what-is-a-blockchain-node"&gt;nodes&lt;/a&gt; take part in a blockchain network to reach a consensus through validating and replicating confirmed transactions on every participating node. The &lt;a href="https://cleartax.in/s/consensus-in-blockchain"&gt;consensus mechanism &lt;/a&gt;plays a vital role in achieving the security of the blockchain through a technique called &lt;a href="https://en.wikipedia.org/wiki/Proof_of_work"&gt;Proof of Work (PoW)&lt;/a&gt; or another called &lt;a href="https://en.wikipedia.org/wiki/Proof_of_stake"&gt;Proof of Stake (PoS)&lt;/a&gt;, which requires a high level of intensive computational tasks or large stakes.&lt;/p&gt;

&lt;p&gt;Due to the computing power and resources required for these computations in the blockchain network, there are delays and slow validation of transactions that occur in the network, especially when more nodes are involved.&lt;/p&gt;

&lt;p&gt;More nodes in the blockchain network can improve decentralization.and adopting high-security techniques, such as complex consensus mechanisms, can improve blockchain security. Yet, these two factors can slow down transaction processing on the blockchain network.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--T0gseVSt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q74rbbcvcx7r91m8ak50.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--T0gseVSt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/q74rbbcvcx7r91m8ak50.jpg" alt="Source:Freepik" width="740" height="740"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The scenario above, whereby the blockchain achieves peak decentralization or most security, can lead to slower confirmation and validation as transactions increase in the blockchain network; this is a challenge for the blockchain and is popularly known as the blockchain trilemma.&lt;/p&gt;

&lt;h2&gt;
  
  
  Scalability of the blockchain
&lt;/h2&gt;

&lt;p&gt;The scalability of the blockchain refers to its ability to handle increasing transactions in the blockchain network. As transactions occur in the blockchain network, each transaction is validated through PoW or PoS and replicated on every node participating in the blockchain network.&lt;/p&gt;

&lt;p&gt;As explained earlier, PoW or PoS requires intensive computational tasks or large stakes, which take time to achieve, which could lead to slow validation of transactions and even cause network congestion which inevitably lead to higher transaction fees.&lt;/p&gt;

&lt;p&gt;The Bitcoin blockchain processes 4.6 TPS (transaction per second), and Ethereum processes around 14.3 TPS. In contrast, one of the largest electronic payment circuits, Visa, processes around 1,736 TPS (peaking at 47,000 TPS). Notice the difference between a centralized and decentralized system? &lt;/p&gt;

&lt;p&gt;Scalability is one of the objectives of the blockchain. If this is hard to achieve, this leads to questions of how effective and efficien the blockchain network solves the issue of centralization while considering cost.&lt;/p&gt;

&lt;p&gt;In 2022, according to Research Gate, the number of blockchain users continues to increase in parallel over the years as the number of transactions. As the increase in transactions continues, we need scalable blockchain technology that will be decentralized and secured and, at the same time, able to handle increasing transactions.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--KVFhDbCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_0A35BE8FC5A4D186AEB4E78950A4C691AA1258DFD82E866C0C7DCEBFF0873A66_1697686277765_RuOxmNpM.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--KVFhDbCE--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_0A35BE8FC5A4D186AEB4E78950A4C691AA1258DFD82E866C0C7DCEBFF0873A66_1697686277765_RuOxmNpM.png" alt="Number of blockchain users. Credit: Research gate" width="800" height="568"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The Intersection between security, scalability, and decentralization
&lt;/h2&gt;

&lt;p&gt;To achieve scalability and faster transaction validation in the blockchain network, either security or decentralization is sacrificed, and trading off any of them is a limitation of the blockchain.&lt;/p&gt;

&lt;p&gt;Trading off decentralization means fewer nodes in the network, which may place more power in the hands of a central authority while security trade-off means using a consensus mechanism that may require less computational power or reducing the level of validation, both of which will make the network more vulnerable to attack.&lt;/p&gt;

&lt;p&gt;To solve the scalability issue, there must be a balance among scalability, security and decentralization without trading off any of them. Over the past years, developers have come up with a solution to address this issue. This solution is called layer 2.&lt;/p&gt;

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

&lt;p&gt;Layer 2 is a scaling solution built on top of an existing blockchain. It inherits the security and decentralization of an existing blockchain. It can vary from designs to techniques used to scale growing transactions in the blockchain. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--hSKIzEql--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wv8pdus5xgwwazkd5wx2.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--hSKIzEql--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wv8pdus5xgwwazkd5wx2.jpg" alt="Credit: freepik" width="740" height="532"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Its main goal is to solve the issue of scalability &amp;amp; high transaction fees faced by existing blockchains by moving a significant number of the transactions from the main blockchain network to the layer 2 solution. &lt;/p&gt;

&lt;p&gt;The time taken to confirm transactions on layer 2 is short but varies based on the mechanism of the layer 2 solution. While some confirmation is instant, some take time.&lt;/p&gt;

&lt;p&gt;Transaction Congestion in the main blockchain often leads to higher transaction fees due to users competing for transaction confirmation, cost is lower in the layer 2 solution because of less competition for transaction confirmation amongst users. &lt;/p&gt;

&lt;p&gt;The issue of trade-offs in the main blockchain is addressed by layer 2 solutions by balancing scalability with security and decentralization. This balance is achieved through layer 2’s ability to process and confirm transactions off the main blockchain network, reducing congestion and cost.&lt;/p&gt;

&lt;p&gt;Even though transactions occur, are processed, and confirmed in the layer 2 scaling solution, the main blockchain plays a crucial role by ensuring integrity as it is still the base layer for security and decentralization. &lt;/p&gt;

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

&lt;p&gt;Wrapping up, Layer 2 has significantly addressed the issue of blockchain trilemma. However, layer 2 comes in different forms and uses various techniques to achieve scaling transactions.&lt;/p&gt;

&lt;p&gt;As blockchain technology advances in research and development, layer 2 scaling solutions will continue to improve and play a significant role in solving the issue of the blockchain trilemma.&lt;/p&gt;

&lt;p&gt;As a blockchain user or enthusiast, understanding the blockchain trilemma and how layer 2 scaling solution solves this issue enhances your experience with the blockchain and help you make informed decision while using the blockchain network to solve centralization issue.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>A Beginner-Friendly Guide to Understanding the CLI and its Fundamentals</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Mon, 10 Jul 2023 09:29:47 +0000</pubDate>
      <link>https://dev.to/aysha/a-beginner-friendly-guide-to-understanding-the-cli-and-its-fundamentals-2imk</link>
      <guid>https://dev.to/aysha/a-beginner-friendly-guide-to-understanding-the-cli-and-its-fundamentals-2imk</guid>
      <description>&lt;p&gt;Have you seen a movie where the computer genius or a hacker is typing for a few seconds, and suddenly, a cascade of information unfolds on the computer non-stop? I bet you have seen them and wondered what magic is happening.  &lt;/p&gt;

&lt;p&gt;These scenes entertain you and show how computers are part of the greatest invention of all time. Nonetheless,  behind the sleek user interfaces and vibrant graphics is a complex system awaiting instructions and exploration. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DaQsKFql--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_D505E58E0214E58478F32246843263F199F578E1E173B01FE723A713BEDC2125_1687794207982_hffgf.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DaQsKFql--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_D505E58E0214E58478F32246843263F199F578E1E173B01FE723A713BEDC2125_1687794207982_hffgf.gif" alt="A cat pressing the keyboard to denote typing" width="610" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Instructions are orders or precise commands given to computers to execute a task or perform an action — an example is deleting a file on the computer. Providing specific instructions to computers allows you to interact with them, explore the complex system, and harness the power that it provides.&lt;/p&gt;

&lt;p&gt;Imagine for a second that you are the computer genius or the hacker behind a computer, you need it to execute some task and perform some action. You pull out your keyboard and type a couple of commands, giving instructions to the computer, and your task gets executed. This system of interaction with the computer is achieved using the &lt;strong&gt;Command line interface&lt;/strong&gt; (CLI).&lt;/p&gt;

&lt;p&gt;In this article, you will delve into understanding the  CLI, its fundamentals, and how it differs from the &lt;strong&gt;Graphical user interface&lt;/strong&gt; (GUI).&lt;/p&gt;

&lt;h2&gt;
  
  
  Understanding the Command Line Interface (CLI)
&lt;/h2&gt;

&lt;p&gt;Before we dive into the explanation, let’s understand what an interface is. An interface is how a user interacts with the computer system or software. It creates a way for the user to send commands and instructions to the computer to get a response or task executed.&lt;/p&gt;

&lt;p&gt;There are two methods of interacting with computer systems or software, they include:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Graphical User Interface (GUI):&lt;/strong&gt; The graphical user interface (sometimes pronounced as Goowi) is a graphical-based system of communicating with the computer system. It uses graphical components such as icons, menus, and buttons for communication. You can perform tasks or send commands by clicking and manipulating icons, buttons, and any other graphical element by pointing and clicking a mouse.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Command Line Interface (CLI):&lt;/strong&gt; The command line interface ( sometimes pronounced as cee-el-hi) is a text-based system of communicating with the computer system. It communicates using text typed as a command into the command line interpreter. It communicates using specific commands typed using a keyboard, and the computer system responds with a textual output. You can also perform tasks with these commands. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--JEUYrYxh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_D505E58E0214E58478F32246843263F199F578E1E173B01FE723A713BEDC2125_1688181234128_Screenshot%2B2023-06-30%2B201346.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--JEUYrYxh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_D505E58E0214E58478F32246843263F199F578E1E173B01FE723A713BEDC2125_1688181234128_Screenshot%2B2023-06-30%2B201346.png" alt="A CLI to list all files using Power Shell on Windows Operating System." width="800" height="416"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While some commands are the same across all Operating systems, most vary based on the type of operating system, software specificity, or application type. For example, the command &lt;code&gt;ls&lt;/code&gt; lists all the folders in a particular directory on the computer system. This particular command is used across all operating systems. Unlike commands like &lt;code&gt;git add&lt;/code&gt;, which can only work when you have Git installed on your computer system. &lt;/p&gt;

&lt;p&gt;However, most users interact with the computer system by using the GUI because of its convenience for everyday tasks. Users who are developers, programmers, and system administrators prefer using the CLI. You may be wondering, why subject yourself to the torture of typing a myriad of commands you may need to memorize when you could just click-click and get the work done?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--nvSCYmC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_D505E58E0214E58478F32246843263F199F578E1E173B01FE723A713BEDC2125_1688005699964_brooklyn-nine-nine-terry-jeffords.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--nvSCYmC4--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_D505E58E0214E58478F32246843263F199F578E1E173B01FE723A713BEDC2125_1688005699964_brooklyn-nine-nine-terry-jeffords.gif" alt="Why??!!" width="220" height="208"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Just as the GUI provides convenience for everyday tasks, certain benefits come with interacting with the computer system using the CLI. &lt;/p&gt;

&lt;h2&gt;
  
  
  Advantages of Command Line Interface (CLI)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Task Automation:&lt;/strong&gt; The CLI can automate tasks. Instead of doing repetitive tasks by clicking your mouse and remaining focused on a single activity, the CLI allows you to type commands that help you automate tasks, freeing up your time to focus on other vital tasks, which increases efficiency and productivity.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fast Response time:&lt;/strong&gt; The CLI executes tasks and commands quickly. Unlike a GUI, it takes less time when the user is already familiar with commands.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fewer Resources:&lt;/strong&gt; In situations where you have limited resources, using the CLI can be convenient and help you execute your tasks without relying on other resources to navigate or click on icons, buttons, and menus to get the work done.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Expert Feeling:&lt;/strong&gt; Working with the CLI gives you a sense of expertise because professionals such as developers, system administrators, and programmers are some of the people who work with the CLI.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Disadvantages of Command Line Interface (CLI)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Command Accuracy:&lt;/strong&gt;  it is essential to type commands accurately to get the desired output. A mismatch in commands, a missed alphabet, or a missed character can yield unexpected results or trigger an error.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unlimited Commands:&lt;/strong&gt; As mentioned earlier, commands may differ across all operating systems or software. Intending users may need to familiarize themselves with different types and numbers of commands. This can be overwhelming to memorize and cause confusion while using the CLI, reducing efficiency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Not Beginner Friendly:&lt;/strong&gt; It can be confusing for a user who is new to programming. They have to take their time to familiarize themselves with using the CLI and knowing the commands, unlike the GUI, where users can click and get tasks done. &lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Types of Command Line Interface (CLI)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Shell CLI:&lt;/strong&gt; This is the most common type of CLI. It takes a command from the keyboard and uses this command to interact with the operating system. An example is Bash for the Unix/Linux Operating system and Powershell/Command Prompt for the Windows Operating system.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Development CLI:&lt;/strong&gt; Software development frameworks and tools often come with their own CLI, which requires installation on your computer system. These CLIs are specifically designed to provide developers with framework-specific commands, making it convenient to compile code, run tests, manage dependencies, and perform various development-related tasks effortlessly. Examples include &lt;a href="https://docs.npmjs.com/about-npm"&gt;NPM&lt;/a&gt;, &lt;a href="https://git-scm.com/"&gt;GIT&lt;/a&gt;, &lt;a href="https://www.asyncapi.com/docs/tools/generator/installation-guide"&gt;AsncApi CLI&lt;/a&gt;, and so on.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Database CLI:&lt;/strong&gt; This CLI provides specific commands that allow users to execute SQL queries, perform data manipulation operations, and control the database structure. Some examples include &lt;a href="https://en.wikipedia.org/wiki/MySQL"&gt;MySQL&lt;/a&gt; CLI, &lt;a href="https://en.wikipedia.org/wiki/SQLite"&gt;SQLite&lt;/a&gt; CLI, and &lt;a href="https://en.wikipedia.org/wiki/MongoDB"&gt;MongoDB&lt;/a&gt; CLI.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal Emulator CLI:&lt;/strong&gt; This CLI enables users to connect to a remote computer or server over a network connection. It simulates a terminal interface, displaying a command prompt and allowing users to execute commands on the remote machine. SSH clients such as &lt;a href="https://en.wikipedia.org/wiki/PuTTY"&gt;PuTTY&lt;/a&gt; and &lt;a href="https://en.wikipedia.org/wiki/OpenSSH"&gt;OpenSSH&lt;/a&gt; are some of their examples.&lt;/li&gt;
&lt;/ol&gt;

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

&lt;p&gt;As a beginner, there is much to learn regarding technologies, especially if you are following the path of programming, cloud engineering, or System Administration. As you advance, you may need to do a lot of installations and work with different development tools and even frameworks that may require you to use the CLI.&lt;/p&gt;

&lt;p&gt;An adequate understanding of the CLI will help you get acquainted and make it easy to use without confusion. I hope this helps to unravel the command line interface.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can check the resources below for further reading.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.lifewire.com/what-is-a-command-line-interpreter-2625827#toc-other-names-for-a-command-line-interpreter?"&gt; What is a Command Line Interpreter?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.freecodecamp.org/news/how-to-use-the-cli-beginner-guide/"&gt;How to use the command line interface for Beginners&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
    </item>
    <item>
      <title>Unlocking Your Open Source Impact: How to Easily Retrieve and Share Your GitHub Contribution Link</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Tue, 13 Jun 2023 07:49:01 +0000</pubDate>
      <link>https://dev.to/aysha/a-simple-guide-to-identifying-your-open-source-contributions-on-github-goj</link>
      <guid>https://dev.to/aysha/a-simple-guide-to-identifying-your-open-source-contributions-on-github-goj</guid>
      <description>&lt;p&gt;Having established that contributing to open-source projects can help you improve at your chosen career path in tech while also boosting your portfolio, consistently contributing over time can help you increase your visibility and give you a higher chance of success when shooting for opportunities.&lt;/p&gt;

&lt;p&gt;As someone who has contributed to some open-source projects over time, I struggled with putting together direct links to all the issues I had contributed to, which can help my portfolio stand out or show my contributions explicitly.&lt;/p&gt;

&lt;p&gt;In this article, I will explain a simple guide that can help you identify all the open-source projects you've worked on and your contribution to each project.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Open-Source?
&lt;/h2&gt;

&lt;p&gt;With so many unending definitions on the internet, I define open-source as a free, redistributable codebase that different people can collaborate on simultaneously. Users and developers can build, contribute, and improve upon open-source software as it is free and, as the name implies, open to all. &lt;/p&gt;

&lt;h2&gt;
  
  
  Benefits of Contributing Open-source
&lt;/h2&gt;

&lt;p&gt;Open-source is free for both users and developers. There are more benefits for open-source contributors. The benefits of contributing to open-source are as follows:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Skill Development&lt;/strong&gt;: Contributing to open-source can help you upskill in your chosen path by working on real-life use cases of projects and getting feedback that helps improve over time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Networking&lt;/strong&gt;: With open-source, contributors can connect with people with the same interest locally and globally. There are no restrictions to how far you can build your network.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Portfolio building&lt;/strong&gt;: Another benefit of contributing to open-source is portfolio building. Open-source acts like a free institution where you can gather experience that can be relevant and added to your portfolio.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Identifying Projects to which you have contributed
&lt;/h2&gt;

&lt;p&gt;Every open-source project has an existing Github repository that contributors can fork, clone, and push their contributions. If you have contributed to a project before, there is a 100%  chance that you have the project in your repository. &lt;/p&gt;

&lt;p&gt;To see all the projects you have contributed to over time, navigate to your profile, then click on the repository tab; this is where your forked project resides. View all projects in the repository. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LvL18Hbc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684803362543_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LvL18Hbc--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684803362543_image.png" alt="View all projects in the repository." width="643" height="295"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Step-by-step guide to Identifying your Open-Source Contributions on GitHub.
&lt;/h2&gt;

&lt;p&gt;Contributions are issues you have picked and successfully executed. These contributions are checked and closed by the maintainers of the project.&lt;/p&gt;

&lt;p&gt;Contributions like this are the metrics that show success in open-source. To identify your open-source contributions on GitHub, follow the step-by-step instructions below:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 1&lt;/strong&gt;: Open your forked repository&lt;/p&gt;

&lt;p&gt;The first step in this process is to navigate to the repository you contributed to. This project already exists in your repository pool. To see your repositories, navigate to the Repositories tab and click on the project you made your contribution.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XS0IMvKy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684804684377_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XS0IMvKy--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684804684377_image.png" alt="Ansible Open-source Project" width="487" height="246"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 2&lt;/strong&gt;: Navigate to the parent repository&lt;/p&gt;

&lt;p&gt;After picking the project you want, navigate to the parent repository. It is the repository you forked and cloned at the beginning of contributing to the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--p54RhVkh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684805210363_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--p54RhVkh--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684805210363_image.png" alt="Parent repository screenshot" width="651" height="297"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 3&lt;/strong&gt;: Click on the pull request&lt;/p&gt;

&lt;p&gt;Click on the pull request tab to see all pull requests made on the project. The pull request you see here is all pull requests made on that particular project. You can also navigate to issues and click on the dropdown arrow to see your pull request.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EGF-GQuN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684805950833_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EGF-GQuN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684805950833_image.png" alt="Pull Request tab screenshot" width="800" height="395"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 4&lt;/strong&gt;: Filter your pull request&lt;/p&gt;

&lt;p&gt;The next step is to filter your pull request. By clicking on the filter dropdown button, you can filter all the pull requests you have made on the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_kniLSjT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684806330286_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_kniLSjT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684806330286_image.png" alt="Pull request filter screenshot" width="575" height="280"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 5&lt;/strong&gt;: Navigate to “Closed”.&lt;/p&gt;

&lt;p&gt;Click on your closed pull request and check if it has been Closed in the project codebase.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--3JJDpabX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684806503162_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--3JJDpabX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684806503162_image.png" alt="Closed screenshot" width="575" height="282"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 6&lt;/strong&gt;: Check the merged pull request&lt;/p&gt;

&lt;p&gt;Click on your closed pull request and check if it has been merged into the existing codebase of the project.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--gZiLKpmr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684806988992_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--gZiLKpmr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://paper-attachments.dropboxusercontent.com/s_B46091BB38D8C7379D43C37F5BD67EFA2AE0A2B48F718CE8C4082242217EA948_1684806988992_image.png" alt="Merged screenshot" width="640" height="333"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Step 7&lt;/strong&gt;: Copy the merged contribution link.&lt;/p&gt;

&lt;p&gt;Lastly, you can copy the link to your merged pull request in your browser and paste it into your portfolio or any other place you want or prefer.&lt;/p&gt;

&lt;h2&gt;
  
  
  Open-source Contributors
&lt;/h2&gt;

&lt;p&gt;The following are different entities that can contribute to open-source:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Senior Developers&lt;/li&gt;
&lt;li&gt;Junior Developers&lt;/li&gt;
&lt;li&gt;Technical Writes&lt;/li&gt;
&lt;li&gt;UI/UX designers&lt;/li&gt;
&lt;li&gt;Non-Profit Organisation&lt;/li&gt;
&lt;li&gt;Companies and Cooperations&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this article, you used the pull request tab and filters option to get contributions you made on a particular project. Voila! If you read up to this point, you know how to get links to all your contributions on GitHub. &lt;/p&gt;

&lt;p&gt;I hope this helps you identify your contributions to a particular project. You can connect with me on &lt;a href="https://twitter.com/fav_watchgirl"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/aishat-muhammed/"&gt;LinkedIn&lt;/a&gt;, or &lt;a href="//m.aishat9890@gmail.com"&gt;Email&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>github</category>
    </item>
    <item>
      <title>Iterating through a multidimensional array in JavaScript.</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Tue, 02 May 2023 08:29:59 +0000</pubDate>
      <link>https://dev.to/aysha/javascript-before-framework-iterating-through-a-multidimensional-array-using-javascript-22gp</link>
      <guid>https://dev.to/aysha/javascript-before-framework-iterating-through-a-multidimensional-array-using-javascript-22gp</guid>
      <description>&lt;p&gt;Have you ever heard about frameworks in software development? Many developers tend to make use of frameworks because they have a basic underlying infrastructure already in place. All developers need to do is build on it to make their work easier and faster. Such frameworks are React, Angular, and Vue.js for front-end development. These frameworks use JavaScript as their underlying infrastructure.&lt;/p&gt;

&lt;p&gt;Developing on top of frameworks can be easy, but understanding the technology in the underlying infrastructure is better. It makes it easier to understand and work with these frameworks.&lt;/p&gt;

&lt;p&gt;In this article, you will learn how to iterate through a multidimensional array using JavaScript. It will help you understand the concept of iteration if you ever come across it in any framework you choose to work with in the future.&lt;/p&gt;

&lt;h3&gt;
  
  
  What is Iteration?
&lt;/h3&gt;

&lt;p&gt;According to the Oxford Dictionary, "Iteration is the process of repeating a mathematical or computing process or set of instructions, each time applying it to the result of the previous stage."&lt;/p&gt;

&lt;p&gt;In JavaScript, iterating through the values in an array means applying a specified function or set of instructions to every value in that array. Iteration uses several methods, but for this article, you will use the &lt;code&gt;forEach&lt;/code&gt; method to iterate over values in an array.&lt;/p&gt;

&lt;p&gt;An array is a variable that can hold multiple values at once. It's a collection of values in a container, denoted by square brackets ([]). These values are stored in the bracket container with a number assigned to them in ascending order. The number attached to each value is known as the index, and it starts counting from 0.&lt;/p&gt;

&lt;p&gt;In this example, you have an array of items called Cars.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;Cars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Honda&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Toyota&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Benz&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lexus&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sienna&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Jeep&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code explanation:&lt;/p&gt;

&lt;p&gt;The name of the array above is called Cars, with some values in it. Each value is associated with an index starting from 0. Each value is assigned to a number as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Honda has an index of 0.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Toyota has an index of 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Benz has n index of 2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lexus has an index of 3.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Sienna has an index of 4.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Jeep has an index of 5. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now that you understand what arrays are and how their indexes are assigned, you will learn how to iterate through arrays using the &lt;code&gt;forEach&lt;/code&gt; method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;Cars&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;  &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Honda&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Toyota&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Benz&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Lexus&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Sienna&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Jeep&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="nx"&gt;cars&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;car&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;car&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;Code explanation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;forEach&lt;/code&gt; method performs the same function on each value in the array.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The &lt;code&gt;forEach&lt;/code&gt; method has a callback function that gets executed for each item of the array.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The callback function is then passed as an argument to &lt;code&gt;forEach&lt;/code&gt; method, and it gets executed whenever it is called.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result of this iteration will be the value of each car in your Cars array. See the output below.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Honda&lt;/span&gt;
&lt;span class="nx"&gt;Benz&lt;/span&gt;
&lt;span class="nx"&gt;Lexus&lt;/span&gt;
&lt;span class="nx"&gt;Sienna&lt;/span&gt;
&lt;span class="nx"&gt;Jeep&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Multidimensional Array.
&lt;/h3&gt;

&lt;p&gt;Now that you understand arrays and how to iterate through them, let's talk about multidimensional arrays. A multidimensional array is more than one array within another array.&lt;/p&gt;

&lt;p&gt;In this example, you have a multidimensional array called Groups.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;Groups&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Stacey&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Karen&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Julia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Kate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Baron&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;James&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Brown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Aaron&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dariella&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Code explanation:&lt;/p&gt;

&lt;p&gt;The name of the above multidimensional array is called Groups. You have three different arrays within the super array called Groups. Each array value is assigned to a number as follows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Array 1 has an index of 0.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Array 2 has an index of 1.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Array 3 has an index of 2.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Breaking it down further:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Array 1 has 3 values within it, array 2 has 4 values within it, and array 3 has 2 values within it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Each value in these arrays is attached to an index starting from 0.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Array 1: Stacey has an index of 0, Karen has an index of 1, and Julia has an index of 2.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Array 2: Kate has an index of 0, Baron has an index of 1, James has an index of 2, and Brown has an index of 3.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;For Array 3: Aaron has an index of 0, and Dariella has an index of 1.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Multidimensional Array Iteration.
&lt;/h3&gt;

&lt;p&gt;Iterating through multidimensional arrays means repeating the same functions for every value present within the array present in a super-array.&lt;/p&gt;

&lt;p&gt;It's like going one step deeper to execute a function call on values within an array of another array. The iteration of a multidimensional array uses several methods, but for this article, you will use the &lt;code&gt;forEach&lt;/code&gt; method to iterate over values in a multidimensional array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;groups&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Stacey&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Karen&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Julia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Kate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Baron&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;James&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Brown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;],[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Aaron&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dariella&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;span class="nx"&gt;groups&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;group&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;forEach&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;function&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;groupie&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
  &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;groupie&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;The first &lt;code&gt;forEach&lt;/code&gt; method performs the same function &lt;code&gt;(console.log)&lt;/code&gt; on each value in the superarray.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The function gets executed on the superarray, which simply means the function executes for each value in the superarray (3 array values)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The second &lt;code&gt;forEach&lt;/code&gt; method performs another deep iteration and executes the same function &lt;code&gt;(console.log)&lt;/code&gt; on the resulting array from the first &lt;code&gt;forEach&lt;/code&gt; method, one after the other.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the output below from the first &lt;code&gt;forEach&lt;/code&gt; method execution. &lt;/p&gt;

&lt;p&gt;P.s: This is not the final output of the code&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Stacey&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Karen&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Julia&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Kate&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Baron&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;James&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Brown&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Aaron&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Dariella&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;See the final output of the code below after the second forEach method execution.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;Stacey&lt;/span&gt;
&lt;span class="nx"&gt;Karen&lt;/span&gt;
&lt;span class="nx"&gt;Julia&lt;/span&gt;
&lt;span class="nx"&gt;Kate&lt;/span&gt;
&lt;span class="nx"&gt;Baron&lt;/span&gt;
&lt;span class="nx"&gt;James&lt;/span&gt;
&lt;span class="nx"&gt;Brown&lt;/span&gt;
&lt;span class="nx"&gt;Aaron&lt;/span&gt;
&lt;span class="nx"&gt;Dariella&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Wrapping up
&lt;/h3&gt;

&lt;p&gt;Arrays and iteration of arrays in JavaScript are one of the core concepts that you will always come across in your development journey. As a front-end or back-end developer, you would work with these two concepts at some point.  In this article, you have learned about arrays, multidimensional arrays, and using the &lt;code&gt;forEach&lt;/code&gt; method to iterate over both of them.&lt;/p&gt;

&lt;p&gt;I hope this helps you understand the concept of array and iteration better. &lt;/p&gt;

&lt;p&gt;If you have read this far, I would love to know how you feel about this article. You can reach me on &lt;a href="https://twitter.com/fav_watchgirl"&gt;Twitter&lt;/a&gt;, &lt;a href="https://www.linkedin.com/in/aishat-muhammed/"&gt;LinkedIn&lt;/a&gt;, or &lt;a href="//m.aishat9890@gmail.com"&gt;Email&lt;/a&gt;, or connect with me on &lt;a href="https://github.com/Aysha-py"&gt;Github&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>beginners</category>
      <category>tutorial</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Breaking Down DeFi: The Simplest Guide to Understanding Decentralized Finance.</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Thu, 06 Apr 2023 09:26:14 +0000</pubDate>
      <link>https://dev.to/aysha/breaking-down-defi-the-simplest-guide-to-understanding-decentralized-finance-3hpd</link>
      <guid>https://dev.to/aysha/breaking-down-defi-the-simplest-guide-to-understanding-decentralized-finance-3hpd</guid>
      <description>&lt;p&gt;Whether you are a beginner, intermediate, or expert in the Web3 ecosystem, nearly everyone is talking about decentralized finance— a pool of financial services provided using the blockchain ecosystem as the underlying infrastructure. Recently, many individuals, particularly beginners, have confused the entirety of decentralized finance with the term "cryptocurrency." &lt;/p&gt;

&lt;p&gt;Cryptocurrency has been in existence and has gained popularity since the inception of Bitcoin in 2009, while decentralized finance came into existence after the creation of the Ethereum blockchain in 2013. However, because of Bitcoin's widespread acceptance and popularity, many people misunderstand the concept of decentralized finance for cryptocurrency.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--R_bBu7rV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5c7cai63rqv4iewgl69.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--R_bBu7rV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/s5c7cai63rqv4iewgl69.gif" alt="Confused person" width="360" height="202"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This article will guide you to understand the concept of decentralized finance by breaking it down and relating it to a traditional finance system. Without wasting too much time, let’s get into it!&lt;/p&gt;

&lt;h3&gt;
  
  
  Decentralized Finance: What exactly is it?
&lt;/h3&gt;

&lt;p&gt;You've heard about decentralized finance since you joined the Web3 space, but they say it's not "crypto," so what exactly is decentralized Finance if it's not crypto? Don't worry; it will be clear soon.&lt;/p&gt;

&lt;p&gt;Decentralized finance refers to a collection of financial products and services that uses blockchain technology as the underlying infrastructure. Banking, Insurance, and Lending are examples of such financial services.&lt;/p&gt;

&lt;p&gt;In contrast to the traditional finance system, where financial services are provided by financial institutions / Intermediaries (banks), which serve as the central authority, decentralized finance has no central point of authority, and services are provided by various blockchain networks (the blockchain is already decentralized). Financial transactions are carried out using the blockchain, which is the technology that confirms all transactions that occur while making various financial decisions. &lt;/p&gt;

&lt;p&gt;Using financial products and services on the blockchain is possible in decentralized finance, thanks to cryptocurrency - a digital currency. Similarly to how traditional finance systems require physical currency to conduct transactions such as depositing, withdrawing, investing, and so on, decentralized finance requires a currency that allows its users to purchase products and services from the various blockchain networks that provide these financial services.&lt;/p&gt;

&lt;p&gt;In a nutshell, decentralized finance is a collection of products and services provided by various blockchain networks, whereas cryptocurrency is the currency that allows you to make transactions and effectively use these services.&lt;/p&gt;

&lt;h3&gt;
  
  
  Brief History of Decentralized Finance
&lt;/h3&gt;

&lt;p&gt;Bitcoin was the first digital currency created in 2009 on the Bitcoin blockchain network. This blockchain network only facilitates the creation of its currency (bitcoin). However, for a decentralized system to work in the Web3 ecosystem, a physically functional platform where financial transactions and services can take place is required. This led to the creation of the Ethereum Blockchain network.&lt;/p&gt;

&lt;p&gt;Ethereum blockchain was founded in 2013 by Vitalik Buterin. It was designed to support Smart Contracts, which are programs that run on the blockchain-based on predefined conditions. This smart contract allows you to create decentralized applications that provide and serve as financial services platforms. Dapps stands for decentralized application. The Smart Contract represents the backend, while the Dapps created have a frontend interface that can make calls to the smart contract and execute instructions based on predefined conditions.&lt;/p&gt;

&lt;p&gt;To summarize, decentralized finance emerged in 2013 through the Ethereum blockchain, allowing for the creation of decentralized applications and new alternative cryptocurrencies asides from bitcoin. Solana, AAVE, and OpenSea are examples of Dapps, while ether and sol are some alternative currencies. Some Dapps specialize in particular financial services; an example is AAVE, a lending and borrowing Dapp that allows users to borrow and lend digital currencies. OpenSea is another Dapp which is a marketplace for buying and selling NFTs.&lt;/p&gt;

&lt;h3&gt;
  
  
  Use Cases of Decentralized Finance
&lt;/h3&gt;

&lt;p&gt;Now that you know what decentralized finance is and how and when it started, let’s talk about its use cases while relating it to traditional finance. There are several use cases for decentralized finance, but you will learn 5 in this article.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;Assets management: Defi assists you in managing all cryptocurrency assets you have accumulated over time. Individuals can manage their assets in decentralized finance without involving a third party, compared to traditional finance, where assets are managed by financial institutions such as banks. &lt;/p&gt;

&lt;p&gt;With Defi, you can be your bank and start making financial decisions through decentralized applications. These decisions are made by you without interference or fear of third-party policies, exceeding limits or having your assets frozen. Some Dapps that can help you manage your assets include Metamask, Binance, and Gnosis.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Decentralized Exchanges: In decentralized finance, decentralized exchanges help you carry out your daily transactions, from sending and receiving to buying and selling your cryptocurrency. Individuals carrying out these transactions determine all fees associated with making transactions, the time the transactions are sent, and how long it takes to deliver. &lt;/p&gt;

&lt;p&gt;Decentralized exchanges can be compared to your traditional exchanges, where banks determine the time your transactions are sent, the fees associated with them, and when they deliver (which sometimes does not happen on time, and you have to wait extra days for banks to correct this issue).&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Lending: Lending works the same way in decentralized finance as it does in traditional finance, except that individuals can lend their cryptocurrency to others directly from their end by joining a pool of lenders in a lending Dapp, allowing them to earn interest directly. Unlike traditional finance, where your bank lends you money, and you do not directly own the interest. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Borrowing: Individuals can use decentralized finance to borrow cryptocurrency without having to go through the traditional "know your customer" stress. This allows for increased speed and efficiency. Individuals can borrow from any DeFi platform that provides lending services without a long history of the association.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Insurance: Decentralized finance can provide a decentralized insurance system in which individuals are paid when certain conditions are met. Payments can be made quickly without the need for claims or traditional documentation presented because smart contracts are already in place and ready to execute once insurance conditions are met.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Advantages of Decentralized Finance
&lt;/h3&gt;

&lt;p&gt;You cannot ignore the many advantages decentralized finance has given people and businesses thriving in the Web 3 ecosystem. It is currently the rage. Among the advantages are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;It gives individuals financial control because they have control over their assets in the Defi ecosystem.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The efficiency and speed of transactions in the Defi ecosystem are unprecedented when compared to traditional finance systems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Smart contracts can be audited when used to build or develop Defi applications and projects. This is due to the transparency provided by blockchain technology.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Users of the Defi ecosystem do not require third-party policy or approval before conducting transactions.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Disadvantages of Decentralized Finance
&lt;/h3&gt;

&lt;p&gt;Even with its growing benefits, you can't deny that decentralized finance has drawbacks. Some disadvantages include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One disadvantage of the Defi ecosystem is the lack of trust. This is due to the lack of a physical establishment or third party to turn to if a Defi project goes wrong.&lt;/li&gt;
&lt;li&gt;Another issue is the issue of irreversibility. Due to the immutability of the blockchain, if an individual makes a mistake or does not verify before making a transaction, it cannot be recognized or revered&lt;/li&gt;
&lt;li&gt;Smart Contracts are written by humans, who are prone to making mistakes that could result in individuals losing their assets.&lt;/li&gt;
&lt;/ul&gt;

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

&lt;p&gt;In this article, I explain decentralized finance by comparing it to the traditional financial system you are used to. Decentralized finance has many advantages over disadvantages, but the trust and irreversibility issues that come with it prevent some individuals from exploring it as they should. Nonetheless, decentralized finance is being adopted by various industries to address specific issues, and as Web3 grows and evolves, so will the Defi ecosystem. &lt;/p&gt;

&lt;h3&gt;
  
  
  Resources
&lt;/h3&gt;

&lt;p&gt;You can check the resources below for further reading.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://csimq-journals.rtu.lv/article/view/csimq.2021-26.03/2570"&gt;An Introduction to Decentralized Finance (DeFi)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.investopedia.com/decentralized-finance-defi-5113835"&gt;What Is Decentralized Finance (DeFi) and How Does It Work?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.coinspot.com.au/learn/what-is-defi"&gt;What is DeFi: History and Use Cases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://academic.oup.com/jfr/article/6/2/172/5913239"&gt;Decentralized Finance &lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
    </item>
    <item>
      <title>Beginner’s guide to contributing to open source through documentation</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Thu, 09 Mar 2023 09:37:21 +0000</pubDate>
      <link>https://dev.to/aysha/beginners-guide-to-getting-started-with-contributing-to-open-source-through-documentation-1n1d</link>
      <guid>https://dev.to/aysha/beginners-guide-to-getting-started-with-contributing-to-open-source-through-documentation-1n1d</guid>
      <description>&lt;p&gt;When starting out in some tech careers, open source is an absolute goldmine for moving from a beginner to an intermediate or expert level, and I wish someone had told me this sooner. Congratulations if you are a beginner who came across this article while looking for answers on how to contribute to open source or getting hands-on experience while learning.&lt;/p&gt;

&lt;p&gt;When starting a tech career, as you are learning, it is easy to get lost in something called "tutorial hell," where you read or watch tutorials non-stop without putting what you have learned into practice. You can waste time without getting any feedback regarding what you should improve or where you should improve.&lt;/p&gt;

&lt;p&gt;An open source project can help you practice what you've learned over time by participating in projects that require the skills you already have, whether you're starting as a software developer, technical writer, UI/UX designer, or any other tech-related field.&lt;/p&gt;

&lt;p&gt;However, a general misconception about open source, especially among beginners, is you can only contribute to open source by writing codes. This is false, as you can make contributions through documentation and designs. &lt;/p&gt;

&lt;p&gt;Open source projects, like any other, go through various stages of development. Different open source projects are built with varying programming languages, and it necessarily requires designs to achieve a well-structured format and documentation for users to understand and use the project effectively.&lt;/p&gt;

&lt;p&gt;In this article, you will learn how to find open source projects and how to contribute to them through documentation using the AsynAPI website repository as a use case. You will understand the following:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Definition of open source.&lt;/li&gt;
&lt;li&gt;How to find open source projects.&lt;/li&gt;
&lt;li&gt;How to pick document-related issues to contribute to.&lt;/li&gt;
&lt;li&gt;How to fork and clone open source projects.&lt;/li&gt;
&lt;li&gt;How to make contributions.&lt;/li&gt;
&lt;li&gt;How to create a pull request after contributing.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Prerequisites.
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Basic usage knowledge of vscode (or any editor of choice).&lt;/li&gt;
&lt;li&gt;Knowledge of git.&lt;/li&gt;
&lt;li&gt;Basic knowledge of GitHub.&lt;/li&gt;
&lt;li&gt;Knowledge of markdown syntax.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Definition of open source
&lt;/h3&gt;

&lt;p&gt;Open source refers to any project that is publicly available for contribution, use, modification, and distribution. Open source has a codebase that is available for anyone, no matter their location, to see, modify, and enhance. Some firms develop open source projects for important factors like collaboration, adoption, speedy advancement, and transparency.&lt;/p&gt;

&lt;p&gt;Anyone with a Github profile can access the codebase of an open source project, and it’s not limited to being an expert. This gives a beginner advantage to work on projects while they are learning. Even though open source projects are free and simple to access, this does not imply that all software built on open source is free to use.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to find open source Projects
&lt;/h2&gt;

&lt;p&gt;A good example is the AsyncAPI website project. AsyncAPI website is an open source project that is built using Nextjs and deployed on Netlify. This website is built to help users understand the AsyncAPI tools. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--n_JF2cdk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677246223517_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--n_JF2cdk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677246223517_image.png" alt="Async Api open source project overview" width="880" height="482"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Here is a list of places to look when searching for open source projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Google Search:&lt;/strong&gt; As the saying goes, "Google has an answer for everything," you can search for available open source projects using the Google search feature on your browser. As a beginner, you can tailor your search to open source projects for beginners using the “Beginner” keyword to optimize your search. Google would provide you with articles that have been written over time about open source and available projects.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wLh7BtKI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677242716629_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wLh7BtKI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677242716629_image.png" alt="Google search for open source project for brginners" width="880" height="330"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Twitter:&lt;/strong&gt; Twitter is another goldmine to search for active open source projects asides from being an abode for techies. Using the Twitter search option can help you reach people, topics which may include projects and the latest information about open source. Following this topic and people gives you quick access to updates on new open source projects and what is happening in the open source community.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pT44AvZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677244105253_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pT44AvZK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677244105253_image.png" alt="Twitter search for open source projects" width="880" height="548"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. Github search and explore:&lt;/strong&gt; Github is another place to search for open source projects and almost like the most perfect. it is easier to search for issues to contribute to after choosing a project to contribute to. You can use the search in the left corner on GitHub or the explore feature to look for topics related to open source.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--SVom_mkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677245013250_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SVom_mkW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677245013250_image.png" alt="Github search for open source project" width="880" height="420"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Pick document-related issues in a GitHub repository
&lt;/h3&gt;

&lt;p&gt;After selecting an open source project to contribute to, the next step is to select an issue, and because you are dealing with document-related issues, you will learn what to look for in the list of issues. Let's go over the steps for selecting an issue to contribute to.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Navigate to issues on the open source repository.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vRGLZ5o7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677249410332_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vRGLZ5o7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677249410332_image.png" alt="Issues tab to show list of issues to contribute to" width="880" height="372"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check out and read contributing guidelines to avoid making mistakes while contributing.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--utEWDR0M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677249603288_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--utEWDR0M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677249603288_image.png" alt="Contributing guidelines" width="880" height="381"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Look for issues that have tags, including docs. Notice how other issues carry tags like enhancement and javascript? These are code-related issues.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rNxO84S7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677249975640_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rNxO84S7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677249975640_image.png" alt="Documentation issues" width="880" height="381"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Open and comment on the issue to know if it is still available to be contributed to.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--AvBQ_Jbn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677250629928_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--AvBQ_Jbn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677250629928_image.png" alt="Comment on issue picked" width="880" height="396"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;once the maintainer replies that it is available to be contributed to; the next is to fork and clone the project.&lt;/p&gt;

&lt;h2&gt;
  
  
  Fork and clone the open source project
&lt;/h2&gt;

&lt;p&gt;Now that you have picked an issue, it’s time to fork the project into your personal repository and clone it to your local machine.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Forking the repo: Navigate to the right corner of the project repository and click Fork&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aIOXU3IX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677251635316_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aIOXU3IX--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677251635316_image.png" alt="Fork the pproject Repository" width="880" height="404"&gt;&lt;/a&gt;&lt;br&gt;
it replicates the project repository into your personal repository&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Clone the repo: Navigate to your personal repository on GitHub where the project is now copied. Navigate to the right-top corner and click on Clone&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ra1MRNhK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677252230104_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ra1MRNhK--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677252230104_image.png" alt="Clone the project Repository" width="880" height="422"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Make your contributions
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;After cloning your repository, open up the project on your local machine (PC) using the vscode editor or your preferred editor.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--cF5GsOd7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677265639068_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--cF5GsOd7--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677265639068_image.png" alt="Project codebase on your local machine (PC)" width="880" height="382"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Make your contributions as described in the issue you selected, and add them by using the code snippet &lt;/p&gt;

&lt;p&gt;git add .&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create a branch for your changes &lt;/p&gt;

&lt;p&gt;git checkout -b newchanges&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Add a commit message to your changes before pushing&lt;/p&gt;

&lt;p&gt;git commit -m "I just worked on issue #12345”&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Push your changes to the project repository &lt;/p&gt;

&lt;p&gt;git push set upstream origin --newchanges&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--d2cKuU8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677266945538_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--d2cKuU8O--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677266945538_image.png" alt="Terminal to add contribution step by step" width="880" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Create a pull request after making a contribution
&lt;/h2&gt;

&lt;p&gt;After pushing your contributions, the last thing to do is to create a pull request. A pull request is a request asking the project maintainer to check and merge your contribution into the project codebase. If the project is successfully merged, you have made your first contribution to open source. &lt;/p&gt;

&lt;p&gt;To create a pull request&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Navigate to GitHub and into your forked project repository, click on compare and pull request.&lt;br&gt;
&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oFSimjeH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677267422713_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oFSimjeH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677267422713_image.png" alt="Alert to compare and pull request" width="880" height="382"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After clicking on the compare and pull request, click on create a pull request on the next screen.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--oRE7JzVk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677267581249_image.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--oRE7JzVk--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://paper-attachments.dropboxusercontent.com/s_8D5BB2DB141EC84197FD0F98960CE3A7B2D94E6318C72D3ED9E404A1CA91F4B0_1677267581249_image.png" alt="Creating pull request" width="880" height="418"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the final step. Maintainers get notified of your created pull request and go ahead to merge it once it satisfies all requirements.&lt;/p&gt;

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

&lt;p&gt;In this article, you learned how to contribute to open source through documentation as a beginner, how to search for them, identify them and push your contributions. After you push your changes, project maintainers may leave comments on your pull request requesting more changes or additional modifications. If you're confused by the comments or don't understand the requirements, don't be afraid to ask questions; this is another benefit of open source. &lt;/p&gt;

&lt;p&gt;It provides you with more knowledge and clarity, as well as an excellent opportunity to learn something new. If you have any questions or need clarification on how to contribute to open source, you can connect with me on &lt;a href="https://twitter.com/fav_watchgirl"&gt;Twitter&lt;/a&gt; | &lt;a href="https://dev.tourl"&gt;LinkedIn &lt;/a&gt;| or &lt;a href="https://github.com/Aysha-py"&gt;Github&lt;/a&gt;. See you in my next article, cheers.&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>github</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Typescript for beginners: Setting up a new project using ReactJs</title>
      <dc:creator>Aysha Muhammed</dc:creator>
      <pubDate>Mon, 06 Feb 2023 08:43:31 +0000</pubDate>
      <link>https://dev.to/aysha/typescript-for-beginners-setting-up-a-new-project-using-reactjs-3l91</link>
      <guid>https://dev.to/aysha/typescript-for-beginners-setting-up-a-new-project-using-reactjs-3l91</guid>
      <description>&lt;p&gt;As a developer, you will almost certainly have to work with Javascript at some point in your career, regardless of whether you're a front-end or back-end engineer. Sometimes it can be tiring to work with Javascript due to runtime errors when it comes to type checking, which is why Typescript, a superset of Javascript that extends Javascript, was introduced. &lt;/p&gt;

&lt;p&gt;It allows for type checking before runtime, improves the productivity of developing complex applications, and reduces type errors drastically before production.&lt;/p&gt;

&lt;p&gt;In this article, as a beginner familiar with React JS, you will learn how to create your first typescript project using the Visual Studio code editor or any other editor you choose.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Vscode editor Installed (or any other preferable editor).&lt;/li&gt;
&lt;li&gt;Node installed on your device.&lt;/li&gt;
&lt;li&gt;Basic understanding of ReactJs.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why I chose Typescript
&lt;/h2&gt;

&lt;p&gt;"Hi Aisha, we will be using Typescript in our next project."&lt;/p&gt;

&lt;p&gt;This was the message I received from my colleague recently. Let me introduce myself. My name is Aisha, and I am a front-end developer who uses JavaScript and is now going to work with Typescript. Who am I to say no when it involves learning new things? &lt;/p&gt;

&lt;p&gt;Before my colleague informed me of it, I had already heard about Typescript on the internet, but I never gave it a shot or a second glance. Some developers believe it is superior to Javascript, while others believe vice-versa. However, I conducted my research, but first, let us define Typescript.&lt;/p&gt;

&lt;h2&gt;
  
  
  What is Typescript?
&lt;/h2&gt;

&lt;p&gt;Typescript, according to its official documentation page, is a superset of Javascript. According to our high school mathematics knowledge of SETS, set A is a superset if it contains all of the elements of set B. Relating this to the definition of Typescript above, this means that Typescript contains all elements of Javascript.&lt;/p&gt;

&lt;p&gt;However, Typescript is a statically typed language compared to Javascript, meaning you must explicitly indicate its value type. It is a more readable version of Javascript thanks to type-checking and intuitive compilation. Typescript adds syntax rules about how to use different values, which aid in type error checking before execution.&lt;/p&gt;

&lt;h2&gt;
  
  
  Setting up a new Typescript project using react
&lt;/h2&gt;

&lt;p&gt;If you've used reactJs libraries to build Javascript projects in the past, you might wonder if there's a different way to build Typescript projects with the same library. No need to worry because in this section, you will learn how to create a Typescript from scratch using the React library.&lt;/p&gt;

&lt;h3&gt;
  
  
  Steps to set up a Typescript project
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Open your editor and navigate to the terminal.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FIaeilz2E6EFuLilNINeBoRl1MbLLWoCKXoadqBMH7y0-emhe82SJx05fE9kx3NodU1O2eYABt9AgjujMYlMAa3GtbR6S3MpBggr2miWD_tsNL90nLSi4nv_o65g1NmsObldXYP6XMRLsOmFidviI2p2gFQRWcyPtJiNjc2mdhKdKsZZJl4WuYL24EhVO7A" 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%2Flh5.googleusercontent.com%2FIaeilz2E6EFuLilNINeBoRl1MbLLWoCKXoadqBMH7y0-emhe82SJx05fE9kx3NodU1O2eYABt9AgjujMYlMAa3GtbR6S3MpBggr2miWD_tsNL90nLSi4nv_o65g1NmsObldXYP6XMRLsOmFidviI2p2gFQRWcyPtJiNjc2mdhKdKsZZJl4WuYL24EhVO7A" alt="Vscode Terminal" width="1033" height="571"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cd into the desktop and make a new directory on the desktop and name it Typescript-project-tutorial.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2FDKqku7_QcBkrkFL1I0wVpDA0-lEDwOyaRA6UVHWMbrvnuS1iEp1vnXxStuQiszvU6jOTkBwe_oarvB1jYUBS2klNylHKSCnMtsYZYo_CJnMFbJIB_qy8tMVUg4SFyOUEifwCdRChKi5zdAYBZ09qmPyosL0GJb8cYfgSyyAAPjaoqwbQjvNDIQc76Rjj1Q" 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%2Flh5.googleusercontent.com%2FDKqku7_QcBkrkFL1I0wVpDA0-lEDwOyaRA6UVHWMbrvnuS1iEp1vnXxStuQiszvU6jOTkBwe_oarvB1jYUBS2klNylHKSCnMtsYZYo_CJnMFbJIB_qy8tMVUg4SFyOUEifwCdRChKi5zdAYBZ09qmPyosL0GJb8cYfgSyyAAPjaoqwbQjvNDIQc76Rjj1Q" alt="Vscode Terminal" width="1560" height="368"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cd into the new directory created on the desktop.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2FMhPTpdb_pwzEeOkpnerTjkzX8LNcOygphOcCeP3RwWFuixZ18cGFxpZ2Wdtb9zYq0yvufE7QjRPBWftVs6bxKLv8ozlJ6iaTJYIGyDJozT0XUv_9YD5pDzjIAxD_pwk3ubmy9SIyrJQc3xJQSVAFo3RkCDgvA6kGU1DMWsY3iFx-KjfEVTbnFZ23oRj5-w" 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%2Flh4.googleusercontent.com%2FMhPTpdb_pwzEeOkpnerTjkzX8LNcOygphOcCeP3RwWFuixZ18cGFxpZ2Wdtb9zYq0yvufE7QjRPBWftVs6bxKLv8ozlJ6iaTJYIGyDJozT0XUv_9YD5pDzjIAxD_pwk3ubmy9SIyrJQc3xJQSVAFo3RkCDgvA6kGU1DMWsY3iFx-KjfEVTbnFZ23oRj5-w" alt="Vscode Terminal" width="1560" height="368"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a new Typescript project using react by adding &lt;code&gt;--template typescript&lt;/code&gt;.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh4.googleusercontent.com%2Fy4bITr0OOXSvkEzhks0RUJlvplvacVpuntyGl491xUOTgrpXPLr-zK4sRefOLu7L8XeSBJRLC8Nqt7byE80qOMBtfaHz6xr9V8vfh5OzioQ0wLNeTABIEeVaaM5i_ZAxYfpgfxIAwKYqA_17xwF9yEibqz1QB7_dQm4rGoZuh0J23gzl_g-HRZEqLctWsg" 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%2Flh4.googleusercontent.com%2Fy4bITr0OOXSvkEzhks0RUJlvplvacVpuntyGl491xUOTgrpXPLr-zK4sRefOLu7L8XeSBJRLC8Nqt7byE80qOMBtfaHz6xr9V8vfh5OzioQ0wLNeTABIEeVaaM5i_ZAxYfpgfxIAwKYqA_17xwF9yEibqz1QB7_dQm4rGoZuh0J23gzl_g-HRZEqLctWsg" alt="Vscode terminal" width="1560" height="368"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After Installation, you get the folder structure below, including a Typescript config file.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Flh5.googleusercontent.com%2Fv_m45VD5J1p4my474l4I2p21EAwM_VYqXRHH9uQERysDrhisza64YWSh5PhUAWjieR4ViD4Cvj2cHvzTCDf9xzaB8DKdY96NOc9qHHBLrgMhkyIAorfoPMczniNgki9z3CDAdL24J18DNzCJgVWqCCW98lmPSGdoVKBLCIkUglCUKOhT9EXureKq_LEggA" 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%2Flh5.googleusercontent.com%2Fv_m45VD5J1p4my474l4I2p21EAwM_VYqXRHH9uQERysDrhisza64YWSh5PhUAWjieR4ViD4Cvj2cHvzTCDf9xzaB8DKdY96NOc9qHHBLrgMhkyIAorfoPMczniNgki9z3CDAdL24J18DNzCJgVWqCCW98lmPSGdoVKBLCIkUglCUKOhT9EXureKq_LEggA" alt="Typescript project folder structure" width="1225" height="595"&gt;&lt;/a&gt;&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Now that you've successfully started a Typescript project with the Reactjs library, you can remove unnecessary files and rearrange your project directories anyhow you want it.&lt;/p&gt;

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

&lt;p&gt;In this article, you learned what Typescript is and how to create a Typescript project using the ReactJs library. For further understanding of Typescript, you can check out the following resources.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.typescriptlang.org/docs/" rel="noopener noreferrer"&gt;Typescript documentation page.&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.typescriptlang.org/docs/handbook/react.html" rel="noopener noreferrer"&gt;React Typescript documentation page.&lt;/a&gt; &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for sticking with me this far. You can connect with me on &lt;a href="https://twitter.com/fav_watchgirl" rel="noopener noreferrer"&gt;Twitter&lt;/a&gt; | &lt;a href="https://github.com/Aysha-py" rel="noopener noreferrer"&gt;Github&lt;/a&gt;| and &lt;a href="https://www.linkedin.com/in/aishat-muhammed/" rel="noopener noreferrer"&gt;LinkedIn&lt;/a&gt;&lt;br&gt;
See you in my next article! cheers.&lt;/p&gt;

</description>
      <category>data</category>
      <category>dataengineering</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
