<?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: Jemimah Nagasha</title>
    <description>The latest articles on DEV Community by Jemimah Nagasha (@nagasha).</description>
    <link>https://dev.to/nagasha</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%2F927712%2Fd235bfbc-57f4-43fe-8b78-75b9b050ba25.jpeg</url>
      <title>DEV Community: Jemimah Nagasha</title>
      <link>https://dev.to/nagasha</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/nagasha"/>
    <language>en</language>
    <item>
      <title>Setting Up a Bitcoin/Lightning Network Sandbox with Polar on Linux</title>
      <dc:creator>Jemimah Nagasha</dc:creator>
      <pubDate>Fri, 15 Mar 2024 09:04:21 +0000</pubDate>
      <link>https://dev.to/nagasha/setting-up-a-bitcoinlightning-network-sandbox-with-polar-on-linux-3mmo</link>
      <guid>https://dev.to/nagasha/setting-up-a-bitcoinlightning-network-sandbox-with-polar-on-linux-3mmo</guid>
      <description>&lt;p&gt;The &lt;a href="https://lightning.network/" rel="noopener noreferrer"&gt;Bitcoin Lightning Network&lt;/a&gt; is a second-layer scaling solution built on top of the Bitcoin blockchain. It is designed to enable faster and cheaper transactions. Developing and testing Lightning Network applications can be challenging, but tools like &lt;a href="https://lightningpolar.com/" rel="noopener noreferrer"&gt;Polar&lt;/a&gt; can simplify the process by providing a user-friendly environment. This article will guide you through the process of setting up a Bitcoin Lightning development environment on Regtest using Polar.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Prerequisites&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Docker Server (Installation guide &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-on-ubuntu-20-04" rel="noopener noreferrer"&gt;here&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Docker Compose (Installation guide &lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-and-use-docker-compose-on-ubuntu-20-04" rel="noopener noreferrer"&gt;here&lt;/a&gt;)&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Installing Polar&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Polar is a tool developed by Lightning Labs to create and manage Lightning Network nodes for development and testing purposes. To install Polar on Linux, follow these steps:&lt;/p&gt;

&lt;p&gt;Download the Polar application package from &lt;a href="https://lightningpolar.com/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Because the Polar application is an AppImage package, we will also install the AppImageLauncher to ease the installation of our Polar package.&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;sudo add-apt-repository ppa:appimagelauncher-team/stable
sudo apt-get update
sudo apt-get install appimagelauncher
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;When the above is complete, double-click the *“.AppImage ” *package you just downloaded and that will launch your polar application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Setting Up Lightning Nodes&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you run Polar, the following welcome screen will appear.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3200%2F0%2AyEMyhq1A6v5KeC7Z" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3200%2F0%2AyEMyhq1A6v5KeC7Z" alt="Polar welcome screen"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Click either the orange “Create a Lightning Network” button in the middle, or Create Network in the top right corner.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3060%2F1%2ALMaeMMMAT06VQhmw55xaSw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3060%2F1%2ALMaeMMMAT06VQhmw55xaSw.png" alt="Create a Lightning Network"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After clicking Create Network, the above screen will appear. You can specify how many of each node implementations your network will be composed of. For this guide, create a new Lightning Network with the following parameters:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Network Name = My Network
Number of Managed Nodes:
LND = 2
Core Lightning = 0
Eclair = 0
Bitcoin Core = 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You will always need at least one Bitcoin Core node!&lt;/p&gt;

&lt;p&gt;After clicking the orange Create Network button, Polar will display this new screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3064%2F1%2AXhEckN8LanRoJpA043aKiA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3064%2F1%2AXhEckN8LanRoJpA043aKiA.png" alt="New Network"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Polar allows you to play with any version for any implementation, including those in beta by providing the Network Designer Tab on the far right in the above screenshot. You can add a node of any version by dragging and dropping it onto the canvas to add it to the network you created.&lt;/p&gt;

&lt;p&gt;Initiate your local network by clicking the Start button located in the top right corner, highlighted in orange. Allow a few seconds for the nodes to initialize; you’ll know the process is complete when the indicator lights turn green. After this, select the “Alice” LND node to access the screen tabs below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Aji-tJTMJ6T3IrX2JzmP2-g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Aji-tJTMJ6T3IrX2JzmP2-g.png" alt="Overview of the Info, Connect, and Actions tabs available for each node selected"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AaTjBhEUctDINHLb3mA1g5g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2AaTjBhEUctDINHLb3mA1g5g.png" alt="Overview of the Info, Connect, and Actions tabs available for each node selected"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ATmiOFTTcMzE03hBnPDFuew.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2ATmiOFTTcMzE03hBnPDFuew.png" alt="Overview of the Info, Connect, and Actions tabs available for each node selected"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The details on this screen are mostly straightforward. Currently, the local regtest instance is only at Block Height = 1, resulting in both Alice’s Confirmed Balance and Unconfirmed Balance being 0 sats. To change this, navigate to the Actions tab for Alice, confirm that Deposit Funds is configured to 1,000,000 sats, and then click on Deposit.&lt;/p&gt;

&lt;p&gt;Starting with 1,000,000 sats in test environments like our local regtest instance provides a reasonable amount of satoshis for testing various Bitcoin functionalities without needing to worry about small fractions constantly. It offers enough satoshis to facilitate transactions, create different spending scenarios, and observe their effects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Polar’s Mining Simulation&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To mine more blocks, click the backend1 node, in the actions tab. A mine button will be visible.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3062%2F1%2AkSzBmpNSKg1HTABm4NuitQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3062%2F1%2AkSzBmpNSKg1HTABm4NuitQ.png" alt="Mining blocks in Polar"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;While Polar’s mining simulation might appear similar to real-world mining, it’s not generating real Bitcoin on the main Bitcoin network. Polar creates a regtest environment, which is a separate, simulated network for testing purposes. Regtest coins have no real-world value and cannot be transferred to the main Bitcoin network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Create and Pay an Invoice&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Having funded Alice’s on-chain wallet, the next step is to open a channel. Click on “Open Channel” -&amp;gt; “Outgoing,” choose Bob as the destination, keep the default Capacity at 250,000 sats, and then click the orange “Open Channel” button.&lt;/p&gt;

&lt;p&gt;After successfully opening the channel, select the new green line connecting Alice and Bob’s LND nodes to view the channel details below.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3064%2F1%2AGX2GTL3EzTAQGvTW4Z1ReQ.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3064%2F1%2AGX2GTL3EzTAQGvTW4Z1ReQ.png" alt="Channel Details"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Hover over the green dot on Alice’s node to reveal “Source,” and over the blue dot on Bob’s node to display “Destination.” This indicates that the side with a Source Balance of 246,530 sats is Alice’s, while the side with a Destination Balance of 0 sats belongs to Bob.&lt;/p&gt;

&lt;p&gt;Since Bob currently has no Destination Balance, right-click on his node to open an Actions panel. Choose “Create Invoice,” accept the default Amount of 50,000 sats, and click the orange “Create Invoice” button. If done successfully, this action should generate the following screen.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3064%2F1%2AMjkryY5FD9wdbQxR6oM-YA.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F3064%2F1%2AMjkryY5FD9wdbQxR6oM-YA.png" alt="Create Invoice"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Select “Copy &amp;amp; Close,” then right-click on Alice’s node and choose “Pay Invoice.” Paste the invoice copied into the Bolt 11 Invoice field and click the orange “Pay Invoice” button. Upon completion, the dashboards for Alice, Bob, and the channel will resemble the following:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ac2R4M1zUOF_t7tIRurRK1Q.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2Ac2R4M1zUOF_t7tIRurRK1Q.png" alt="Overview of the Info tabs for the Alice, Bob, and bitcoin core nodes after Invoice Payment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A4FNrAMlXD0ZirkrUzY0NOg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A4FNrAMlXD0ZirkrUzY0NOg.png" alt="Overview of the Info tabs for the Alice, Bob, and bitcoin core nodes after Invoice Payment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A2nhNP7EM-UU84uLbilrWCw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fcdn-images-1.medium.com%2Fmax%2F2000%2F1%2A2nhNP7EM-UU84uLbilrWCw.png" alt="Overview of the Info tabs for the Alice, Bob, and bitcoin core nodes after Invoice Payment"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Congratulations! You’ve made your first successful Lightning Network payment on regtest!&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;You may have noticed a “Launch” button below Terminal in the Actions tab of the different nodes. You can run also cli commands directly on each node you created by launching its terminal.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Polar makes setting up a Bitcoin-Lightning development environment on regtest a breeze. Its intuitive interface and powerful features provide a valuable sandbox for developers to test their applications and gain practical experience working with the Lightning Network.&lt;/p&gt;

&lt;p&gt;I hope this article serves as a helpful guide for setting up your Bitcoin-Lightning development environment with Polar. Feel free to explore the additional resources and documentation available within the Lightning ecosystem to further your knowledge and development efforts.&lt;/p&gt;

</description>
      <category>bitcoin</category>
      <category>polar</category>
      <category>blockchain</category>
      <category>lightning</category>
    </item>
    <item>
      <title>Open Source Contributions — How I Started Contributing To Open Source</title>
      <dc:creator>Jemimah Nagasha</dc:creator>
      <pubDate>Mon, 31 Oct 2022 13:15:59 +0000</pubDate>
      <link>https://dev.to/nagasha/open-source-contributions-how-i-started-contributing-to-open-source-33j3</link>
      <guid>https://dev.to/nagasha/open-source-contributions-how-i-started-contributing-to-open-source-33j3</guid>
      <description>&lt;p&gt;You've probably heard about the open source community by now. You might have even tried your hand at contributing to a project. But how did you get started? Should you just jump on a project and start contributing? I'm going to share with you my experiences in starting out, what worked for me, and what I've learned so far.&lt;/p&gt;

&lt;h2&gt;
  
  
  Starting Out
&lt;/h2&gt;

&lt;p&gt;For any tech newbie, contributing to open source projects can seem a daunting fit to accomplish. I chose to start my journey with the &lt;a href="https://hacktoberfest.com/"&gt;Hacktoberfest&lt;/a&gt; 2022 challenge. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Hacktoberfest is a month-long celebration run by DigitalOcean to celebrate and give back to open source projects and software. The initiative is open to everyone, and the goal is to encourage everyone in our global community to contribute to open source.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;During hacktoberfest, maintainers from all around the world tag issues as "hacktoberfest" and "good-first-issue". Most of the issues are beginner friendly, especially for first time contributors. This was a good time for me to start out because of the worldwide support for contributors. &lt;/p&gt;

&lt;h2&gt;
  
  
  First PR - Hydrogen &lt;em&gt;(Social media web app)&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;I found a &lt;a href="https://github.com/harshmangalam/hydrogen-solidjs-client#hydrogen---social-media-web-app-powered-by-solidjs"&gt;project&lt;/a&gt; to contribute to through the hacktoberfest discord channel. Whenever I am starting something new, I always want to start with something familiar and easy to get a feel of how things are done before diving into the deep end. This project provided a great starting point for me. &lt;br&gt;
Hydrogen is a social media web app powered by SolidJS. My first &lt;a href="https://github.com/harshmangalam/hydrogen-solidjs-client/pull/34#event-7502173932"&gt;issue&lt;/a&gt; was the simplest; adding a delete account tab in the settings section of the web app. The maintainer was very responsive and helpful. Even though this contribution was tiny, having it merged gave me an immense confidence boost.&lt;/p&gt;

&lt;h2&gt;
  
  
  More PRs
&lt;/h2&gt;

&lt;p&gt;I had planned to make a total of 4 contributions for the month of October (one for every week). I decided to tackle other issues within the same project, now that I was familiar with the codebase. The other 3 &lt;a href="https://github.com/harshmangalam/hydrogen-solidjs-client/issues/29#event-7547971991"&gt;issues&lt;/a&gt; I worked on revolved around fixing accessibility issues for various pages. I learned a lot about accessibility and using the lighthouse tool to make checks and improvements. I'll be sharing more about making accessible web pages as I learn. I hope you stick around for that 😉&lt;/p&gt;

&lt;h2&gt;
  
  
  Lessons
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest 🎃 has come to an end and I am so glad for choosing to participate. And even though getting swag was not my intention, I managed to qualify for it 🤣 yey! Anyway, here are a few take aways;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Start small. All contributions matter.&lt;/li&gt;
&lt;li&gt;There is always someone in the community willing to help. Don't be scared to ask.&lt;/li&gt;
&lt;li&gt;Always aim to make meaningful contributions to the projects you commit to.&lt;/li&gt;
&lt;li&gt;Most importantly, before you make that PR, Read the contribution guide. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Thank you for reading this far!😀 Contributing to open source projects and software does not end with Hacktoberfest. Find a &lt;a href="https://goodfirstissue.dev/"&gt;good first issue&lt;/a&gt; and give back to the world through your contributions. &lt;br&gt;
May the merge be with you 🚀🚀🚀&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>hacktoberfest</category>
    </item>
  </channel>
</rss>
