<?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: Deborah Bello</title>
    <description>The latest articles on DEV Community by Deborah Bello (@timilehin08).</description>
    <link>https://dev.to/timilehin08</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%2F428213%2F881623d4-0905-4915-acad-876da4b32c8c.jpeg</url>
      <title>DEV Community: Deborah Bello</title>
      <link>https://dev.to/timilehin08</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/timilehin08"/>
    <language>en</language>
    <item>
      <title>Custodial vs. Non-Custodial wallets: What are the differences?</title>
      <dc:creator>Deborah Bello</dc:creator>
      <pubDate>Wed, 12 Apr 2023 18:14:05 +0000</pubDate>
      <link>https://dev.to/timilehin08/custodial-vs-non-custodial-wallets-what-are-the-differences-1d8m</link>
      <guid>https://dev.to/timilehin08/custodial-vs-non-custodial-wallets-what-are-the-differences-1d8m</guid>
      <description>&lt;p&gt;&lt;em&gt;Choosing the best type of wallet for storing and safeguarding digital assets is critical for crypto ownership. There are many different types of wallets on the market, and deciding which one to choose can be difficult. This article delves deeper into the differences between custodial and non-custodial wallets. Continue reading for a quick guide on whether you should keep your own crypto key or delegate responsibility.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;strong&gt;Important Takeaways:&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;With a custodial wallet, a third party manages your private key rather than you, the crypto owner.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With a non-custodial wallet, you control your own private key and thus your funds.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;One disadvantage of non-custodial wallets is the lack of recovery options if you forget your passwords.  &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Non-custodial wallets, on the other hand, give you complete ownership of your cryptocurrency, making you responsible for the security of your own private keys and funds.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Custodial Wallets&lt;/strong&gt;&lt;br&gt;
To understand how a custodial wallet works, you must first understand how crypto wallets work. A cryptocurrency wallet is a software or hardware device that allows you to store, access, and interact with cryptocurrencies such as Bitcoin and Ethereum. A user's funds are not stored in a crypto wallet. Instead, they contain the public key, which allows you to set up transactions as the user, and the private key, which is used to authorize transactions. Software wallets are installed on a user's device, whereas hardware wallets are standalone physical devices used to store digital assets. (desktop or mobile). &lt;/p&gt;

&lt;p&gt;Private keys—strings of letters and numbers that act as a highly sensitive password—are stored in both hardware and software wallets. Possession of a private key allows you to send crypto assets from a specific public address, making private key management critical.&lt;/p&gt;

&lt;p&gt;A custodial wallet, as the name implies, is one in which a third party stores private keys on behalf of users. The third-party has complete control over the crypto assets, managing the user's wallet key, signing transactions, and protecting the user's crypto assets. Custodial wallets are available from custodial wallet providers or cryptocurrency exchanges as mobile or web applications. You use the wallet provider's interface to manage your funds and make transactions once you log in to your wallet account. &lt;/p&gt;

&lt;p&gt;This implies that you must have trust in the service provider's ability to securely store your tokens and implement strong security measures to prevent unauthorized access. Two-factor authentication (2FA), email confirmation, and biometric authentication, such as facial recognition or fingerprint verification, are examples of such measures.&lt;/p&gt;

&lt;p&gt;Custodial wallets are a low-entry barrier if you are a newbie in the crypto space as they are simple to use and can be accessed from any device with an internet connection. Security, on the other hand, is a major concern because centralized exchanges have previously been victims of cyberattacks, compromising users' keys and cryptocurrency assets.&lt;/p&gt;

&lt;p&gt;Custodial wallets however have some advantages, such as requiring less user involvement in private key management. When you outsource wallet custody to a company, you effectively outsource your private information to that company. You are not responsible for keeping the private key to the wallet safe, so you rely on the company to do so. Binance and Coinbase are some examples of custodial wallets. Only after identity verification are you able to hold crypto assets on these custodial exchanges.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Non-Custodial Wallets&lt;/strong&gt;&lt;br&gt;
A non-custodial wallet, also known as a "self-custody wallet," is one in which you are entirely responsible for managing your own funds as a cryptocurrency owner. You have complete control over your crypto assets, as well as the ability to manage your own private key and handle transactions on your own. Non-custodial wallets are preferred by crypto experts, security advocates, and the larger decentralized community because they do not require trust to be outsourced to an institution, and no institution can refuse to complete transactions.&lt;/p&gt;

&lt;p&gt;Non-custodial wallets come in various forms. Browser-based wallets, which are browser extensions that allow you to enter your private key and initiate transactions, or mobile wallets, which are downloadable mobile apps, are two options. It could also take the form of hardware wallets, which are physical devices. Many people believe that hardware wallets are the most secure option because they can be accessed and managed while not connected to the internet. &lt;/p&gt;

&lt;p&gt;A seed phrase is provided by non-custodial wallets. When you create the wallet, you will be asked to write down and save a sequence of 12 randomly generated words known as a 'recovery, ‘seed,' or 'mnemonic' phrase. The public and private keys can be generated from this phrase. It also functions as a backup or recovery mechanism if users lose access to the original device. Anyone who knows the seed phrase will have complete control over the funds in your wallet.&lt;/p&gt;

&lt;p&gt;If the seed phrase is lost, you will no longer have access to your funds. Each transaction is your responsibility to manage and complete. To send money and complete other transactions, you'll need your private keys. The transaction can be reflected in real-time on-chain depending on the non-custodial wallet used, or it can be signed offline and uploaded to the blockchain for confirmation later. &lt;/p&gt;

&lt;p&gt;Hardware, or "cold" wallets, which store private keys offline on a standalone device that looks and feels similar to a USB drive, are one of the most popular types of non-custodial wallets. When you want to send a cryptocurrency transaction, hardware wallets connect to the internet. A non-custodial wallet, particularly a hardware wallet, may be the best option if you need to store a large amount of crypto assets. &lt;/p&gt;

&lt;p&gt;Furthermore, in order to interact with decentralized applications, you will need a non-custodial wallet if you want to invest in DeFi. Keep in mind that having complete control over your assets entails greater responsibility. You must backup your wallet and keep your private keys in a secure location. Non-custodial wallets, such as Bitpay, Electrum, Trust Wallet, and MetaMask, are examples of software that you install on your computer or mobile device.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How Can I Tell What Kind of Wallet I'm Using?&lt;/strong&gt;&lt;br&gt;
In contrast to custodial wallets, non-custodial wallets provide users with complete control over their private keys associated with the wallet's public address. You have a custodial wallet if you can only access it with a login and password and do not have your own private key. Otherwise, you have a non-custodial wallet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion — Choosing between a Custodial or Non-Custodial Wallet&lt;/strong&gt;&lt;br&gt;
Custodial and non-custodial wallets both have benefits and disadvantages. If you value convenience as well as backup and recovery options, custodial wallets are a good choice. Non-custodial wallets, on the other hand, may be exactly what you're looking for if you want complete control and ownership over your private keys. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do Your Own Research and Due Diligence&lt;/strong&gt;&lt;br&gt;
This article's examples are provided solely for informational purposes. Any of this information or other material should not be construed as legal, tax, investment, financial, cyber-security, or other advice. Past results do not assure or predict future outcomes. The value of crypto assets can fluctuate, and you could lose all or a portion of your investment. You must conduct thorough research and due diligence when evaluating a crypto asset in order to make the best possible decision, as any decision you make is solely your responsibility.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Cover Photo by Regularguy-eth from Unsplash&lt;/em&gt;&lt;/p&gt;

</description>
      <category>crypto</category>
      <category>blockchain</category>
      <category>beginners</category>
      <category>cryptowallet</category>
    </item>
    <item>
      <title>A BlockChain Glossary for Beginners</title>
      <dc:creator>Deborah Bello</dc:creator>
      <pubDate>Tue, 24 Jan 2023 22:46:39 +0000</pubDate>
      <link>https://dev.to/timilehin08/a-blockchain-glossary-for-beginners-a96</link>
      <guid>https://dev.to/timilehin08/a-blockchain-glossary-for-beginners-a96</guid>
      <description>&lt;p&gt;Blockchain terminology can be difficult to grasp, especially if you are just starting out. It is also a relatively new concept for almost everyone, both inside and outside the world of technology, so learning more about it reveals a plethora of unfamiliar terms, and the best way to learn them is to understand what each one entails. &lt;em&gt;Hence, here is a list of a few of the most common blockchain terminologies, along with their definitions, to serve as a guide to help you navigate the exciting frontier of Web3.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;51% Attack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A 51% attack occurs when a single malicious miner or group of miners consumes more than half of a network's computing power or mining hash rate. This means that this entity has complete control over the network and has the ability to harm a cryptocurrency by taking over mining operations, halting or changing transactions, and spending coins twice. If he controls 51% of the network, he becomes the network's authority, with the ability to spend the same coins multiple times, issue transactions that conflict with others', and prevent the confirmation of others' transactions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Address&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Much like a URL, a blockchain address is the location to or from which transactions occur on the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Altcoin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an abbreviation of “Bitcoin alternative. Because Bitcoin was the first cryptocurrency, the term "altcoin" was coined to describe "any cryptocurrency other than Bitcoin." In Ethereum or smart contract-enabled blockchain communities, the term is less commonly used. Currently, the majority of altcoins are forks of Bitcoin with usually minor changes to the proof of work (POW) algorithm of the Bitcoin blockchain (e.g., the most prominent altcoin; Litecoin).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bitcoin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the first documented cryptocurrency based on and supported by the Proof of Work (PoW) blockchain, which was developed from a whitepaper written by Satoshi Nakamoto in 2008. The plural of bitcoin is simply bitcoin, and the abbreviation is BTC.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Block&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A block is a record of some or a group of most recent Bitcoin transactions entered into a blockchain that have not yet been recorded in any previous blocks. It is comparable to a page in a ledger or record book.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blockchain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A shared, trusted, public, and digital ledger made up of unchangeable, digitally recorded data in packages called blocks that everyone can inspect but no single user controls. Each block is 'chained' to the next using a cryptographic signature, making it nearly impossible to forge, hack, or disrupt.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Bounty / Bug Bounty&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A reward offered for exposing computer code flaws, vulnerabilities and issues.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;BUIDL&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It was coined by Gitcoin's Kevin Owocki and reflecting the Ethereum-focused mindset of not just investing in a cryptocurrency as a store of value, but rather as an ecosystem and a platform for building public goods and software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Byzantine Fault Tolerance (BFT)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A distributed, decentralized system's ability to withstand total failure even when some nodes fail or act maliciously.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Coin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an identical token issued on a blockchain, either as the network's transactional token or via a smart contract deployed on that network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cold wallet / cold storage&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An offline wallet disconnected from the internet and thus protects cryptocurrencies from online hacking.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Crypto-&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This prefix was originally Greek as its usage comes from cryptography. Cryptographic processes (such as public/private key pairs) that enable innovative functionality and security underpin technologies referred to as ‘crypto’. Of course, because ‘cryptocurrency’ is often abbreviated to ‘crypto,’ this emerging field is rife with instances where something ‘crypto’ is added to or shortened.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cryptocurrency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Digital currency based on mathematics and employs encryption techniques to control the generation of coins/tokens as well as to verify the transfer of funds. They are generally decentralized and operate independently of central authorities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cryptography&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A science and method of securing communication that employs individualized code so that only the parties involved can read the messages. Various blockchain networks use symmetric-key cryptography for cryptocurrency transfer, in which blockchain addresses generated for wallets are paired with private keys that allow cryptocurrency transfer. Funds can be unlocked using the paired public and private keys.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DAO&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Digital Decentralized Autonomous Organization is a powerful and highly adaptable organizational structure based on blockchain technology. The DAO was a type of investor-directed venture capital fund that sought to give new decentralized business models to firms. The DAO's code was open source and based on Ethereum. In 2016, the group broke the record for the most crowdfunded project. It consists of a governance structure without a central authority that rewards good behavior and penalizes bad behavior through a set of pre-defined rules that can only be changed through a vote, which typically requires a stake, adding risk to the process in order to discourage bad actors among the participants.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decentralization&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The transfer of power and responsibility from a centralized organization, government, or party to a distributed network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decentralized application (dapp)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is an acronym for "decentralized application." It is an open source software program with backend code that does not rely on a central system or database and can distribute information among its users using a decentralized peer-to-peer network such as a blockchain. To be deemed a decentralized application, an application must be totally open-source, function autonomously, and have no entity holding the bulk of its tokens. The application must also generate tokens based on a common cryptographic algorithm, which serves as evidence of value nodes contribute to the application.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Decentralized exchange (DEX)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is a platform for exchanging cryptocurrencies based on blockchain functionality (i.e., in smart contracts). The trading is done peer-to-peer or between liquidity pools. A centralized exchange, on the other hand, is more similar to a bank or financial institution that specialized in cryptocurrencies. The two have significant technical and regulatory distinctions that are constantly evolving.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distributed Denial of Service (DDoS) Attack&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A cyberattack style where the attacker repeatedly floods the system with requests in an effort to block the fulfillment of valid requests.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Distributed Ledger Technology (DLT)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The broader category of technology, of which blockchain is a component, is this. There is no central data storage or administration, and it is a digital system for documenting asset transactions in which the transactions and their specifics are stored in several identical copies at the same time.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Double spend&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A situation in which a network user tries to send the same bitcoin transaction simultaneously to two different recipients. The likelihood of successfully double spending decreases the more confirmations there are for a given transaction. Early in 2009, Bitcoin was the first to design a system that prevents double spending by checking each transaction uploaded to the blockchain to make sure the inputs for the transaction have not already been used for another transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Encryption&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is the method of turning a clear-text message (plaintext) into an information stream (cypher-text) that seems like a pointless and random sequence of bits.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Entropy&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the context of cryptography, ‘entropy’ refers to ‘randomness’; generally, the more random something is (the more entropy it has), the more secure it is.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ERC-20 Token Standard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;ERC is the abbreviation for Ethereum Request for Comment and is followed by the assignment number of the standard. It is a technical standard for smart contracts which is used to issue the majority of tokens (in particular, cryptocurrency tokens) within the Ethereum network. This list of rules is defined by a series of functions which states the requirements that a token must fulfill to be supported, compliant and function within the Ethereum network. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ERC-721 Token Standard&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;As stated above, this is another standard for Ethereum smart contracts, which allows for the issuance of a non-fungible token, also known as an NFT. This token standard is used to represent a unique digital asset that is not interchangeable. It is also defined by a series of functions that must be supported, including functions to retrieve the total supply, transfer from one wallet to another, and approve a transaction.   &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ether (ETH)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Ether is also referred to as ETH. It is the native token of the Ethereum blockchain network which functions as the fuel of the ecosystem and is used to pay for transaction fees, miner rewards and other essential operations on the network.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ethereum&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an open-source, public blockchain technology and decentralized software platform that allows developers to write smart contracts, build and deploy localized or decentralized applications(Dapps). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ENS&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The Ethereum Name Service is a protocol to assign human-readable and easy-to-remember addresses to Ethereum addresses and assets, similar to the traditional internet’s domain name. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;EVM (Ethereum Virtual Machine)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The EVM is a virtual machine that operates on the Ethereum network. It is the programming language within which accounts on the Ethereum blockchain will contain code.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fiat currency&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is government-issued currency or legal tender which is declared to be valid for meeting a financial obligation. For example, US Dollars (USD), Euros (EUR), Yuan (CNY), Naira(NGN) and Yen (JPY). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gas&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a fee charged to write a transaction to a public blockchain on the Ethereum network. This then equates to a fee for network users paid in small units of ETH specified as Gwei. It is also used to reward the miner which validates the transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gas limit&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the maximum amount you’re willing to pay for any given transaction to go through the Ethereum network. Another way of looking at it is as a “rough estimate” of how much computing power your transaction will take.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gas price&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the cost the network is paid for the computational work being performed in a given transaction. It is paid in units of ETH called Gwei. Depending on network congestion, the gas price may vary significantly.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gwei&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A minuscule and common denomination of ETH, and the unit in which gas prices are often specified.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Halving&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Many cryptocurrencies have a finite supply, which makes them a scarce digital commodity. For example, the total amount of Bitcoin that will ever be issued is 21 million. The number of bitcoins generated per block is decreased 50% every four years. This is called “halving.” The Bitcoin block mining reward halves every 210,000 blocks. The final halving will take place in the year 2140. Learn more &lt;a href="https://breach.club/cryptocurrency-1669794045917/what-is-bitcoin-halving-meaning-how-it-works-why-it-matters-1669807985568" rel="noopener noreferrer"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hard fork&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This occurs when there is a change in the blockchain that is not backward compatible (i.e not compatible with older versions), thus requiring all participants to upgrade to the new version in order to be able to continue participating on the network. An example of a hardfork in public blockchains is the Ethereum hardfork which happened on July 21st, 2016. The hardfork changed the Ethereum protocol, therefore a second blockchain emerged (Ethereum Classic, ETC) which supports the old Ethereum protocol. In order to continue existing,  ETC needs miners, which would validate the transactions on the blockchain. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hardware wallet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A physical device that can be connected to the web and interact with online exchanges, but can also be used as cold storage (not connected to the internet).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hash&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A programmatic function that receives an input of any size and returns a unique alphanumeric string of a uniform length known as the “hash value” or “digital fingerprint.” Simply, hashes confirm transactions on the blockchain. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hot wallet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a wallet that is directly connected to the internet at all times, for example one that is held on a centralized exchange. They are considered to have lower security than cold storage systems or hardware wallets. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Hyperledger&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an ecosystem of open-system tools, libraries, and products designed to enable and support enterprise-grade blockchain technology I.e non-public blockchains. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Immutability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The inability to be altered or changed or the property of being unchangeable. This is a key element of blockchain networks as once a transaction is written onto a blockchain ledger, the data cannot be changed and therefore is immutable.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Know Your Customer (KYC)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the legal process in which a business must verify the identity and background information (address, financials, etc) of their customers. KYC requirements vary from jurisdiction to jurisdiction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Lightning Network&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a decentralized network using smart contract functionality on the blockchain to enable instant payments across a network of participants. The Lightning Network allows bitcoin transactions to happen instantly, without worrying about block confirmation times, and allows millions of transactions in a few seconds, at low costs, even between different blockchains, as long as both chains use the same cryptographic hash function. As for now, the bitcoin network is capable of processing up to 7 transactions per second. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Liquidity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is the ease of converting an asset (or, in this case, cryptocurrency) to cash (fiat). The harder the ability to turn an asset into cash the more illiquid the asset. The liquidity of an asset affects its risk potential and market price. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MetaMask&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;MetaMask, either in its mobile app form on iOS and Android, or in its browser extension form, is a tool to access and interact with blockchains and the decentralized web. Its functions include that of a wallet, a dapp permissions manager, and token swap platform.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mining&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the process by which blocks or transactions are verified and added to a blockchain using a Proof of Work (PoW) consensus mechanism and written to the blockchain for which the successful miner is rewarded in the cryptocurrency of the blockchain. In order to verify a block, a miner must use a computer to solve a cryptographic problem. Once the computer has solved the problem, the block is considered “mined”. In the Bitcoin or Ethereum PoW blockchains, the first computer to mine or verify the block receives bitcoin or ether as a reward. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Multisignature Wallet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A wallet that requires multiple digital signatures to execute a transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Node (full node)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Any computer connected to the blockchain network is referred to as a node. A full node is a computer that enforces all of the rules of the blockchain, fully validates transactions, downloads the entire data of a specific blockchain, holds a copy of the blockchain ledger and forms the backbone of the network. In contrast, a “light” node does not download all pieces of a blockchain’s data and uses a different validation process. Most nodes on the network are lightweight nodes instead of full nodes. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;NFT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When discussing Non-Fungible Tokens (NFTs), “fungibility” refers to an object’s ability to be exchanged for another. A non-fungible token is a type of token that is a unique digital asset and has no equal token. This is in contrast to cryptocurrencies like ether that are fungible in nature. For example, a Stratovarius violin is non-fungible because the value of it cannot be expressed in a number of other violins.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nonce&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This was originally formed from a contraction of a phrase meaning “not more than once”. On the Ethereum mainnet, “nonce” refers to a unique transaction identification number that increases in value with each successive transaction in order to ensure various safety features (such as preventing a double-spend). It is a thing to note that due to its broader use in cryptography, you may encounter ‘nonce’ being used differently on other decentralized projects.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Off-chain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Data stored external to the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;On-chain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Data stored within the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Open Source&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Software products that include permission to use, enhance, reuse or modify the source code, design documents, or content of the product.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;P2P (Peer-to-peer)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;P2P refers to a direct connection or interaction that happens between two parties, usually two separate individuals of which it can be computer to computer or person to person. A P2P network can be any number of individuals. In regards to a blockchain network, individuals are able to transact or interact with each other without relying on an intermediary or single point of failure. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private blockchain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A blockchain or distributed ledger that has a closed network where participants are controlled by a single entity and where write permissions are kept centralized to one organization. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Private key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is an alphanumeric string of data that, in MetaMask, corresponds to a single specific account in a wallet. It can be thought of as a password that enables an individual to access their crypto account and transact over the blockchain. It should never be revealed to anyone, as whoever controls the private key controls the account funds. If you lose your private key, then you lose access to that account. Online wallets are mostly provided by exchanges and keep user’s private keys on their servers. If the service provider goes offline users would lose access to their funds. Hardware wallets for example store user’s private keys in a secure device which looks like a USB flash drive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proof of Authority (PoA)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A consensus mechanism used in private blockchains, granting a single private key the authority to generate all of the blocks or validate transactions. Instead of staking cryptocurrency (wealth), in PoA you stake your identity. This means voluntarily disclosing who you are in exchange for the right to validate blocks. Any malicious actions you undertake as a validator will reflect back on your identity. PoA blockchains require a thorough form of KYC (Know Your Customer - a verification process that determines you actually are who you claim to be).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proof of Burn (PoB)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PoB allows the miners to “burn” or destroy cryptocurrency which grants them the right to add blocks in proportion to the coins destroyed. To burn, miners send currency to a verifiably un-spendable address. This process does not consume many resources, thus PoB is often called PoW without energy waste. Depending upon the implementation, miners are allowed to burn the native currency or the currency of an alternative chain, and in exchange, they receive a reward in the native currency of the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proof of Capacity (PoC)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;PoC allows the mining devices in the network to use their available hard drive space to decide the mining rights, instead of using the mining device’s computing power (as in PoW) or the miner’s stake in the cryptocurrency (as in PoS).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proof of Stake (PoS)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A consensus mechanism in which an individual or “validator” validates transactions or blocks in order to achieve distributed consensus. Validators “stake” their cryptocurrency, such as ether, on whichever transactions they choose to validate. Proof-of-stake asks users to prove ownership of a certain amount of currency (their “stake” in the currency). If the individual validates a block (group of transactions) correctly then the individual receives a reward. Typically, if a validator verifies an incorrect transaction then they lose the cryptocurrency that they staked. PoS requires a negligible amount of computing power compared to Proof of Work consensus. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Proof of Work (PoW)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A consensus mechanism in which each block is ‘mined’ by a group of individuals or nodes on the network to deter denial of service attacks and other service abuses such as spam on a network by requiring some work from the service requester, usually meaning processing time by a computer. As many miners are racing to solve the formula which requires a great deal of computing power, PoW is resource intensive.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Protocol&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A set of rules that dictate how data is exchanged and transmitted across a specific network in blockchain. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public blockchain&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a globally open network where anyone can participate in transactions, execute the consensus protocol to help determine which blocks get added to the chain, and maintain the shared ledger. As a substitute for centralized trust, public blockchains are secured by crypto economics – the combination of economic incentives and cryptographic verification using mechanisms such as proof of work or proof of stake, following a general principle that the degree to which someone can have an influence in the consensus process is proportional to the quantity of economic resources that they can bring to bear. These blockchains are generally considered to be “fully decentralized”. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Public key&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In cryptography, you have a keypair: the public and private key. You can derive a public key from a private key, but cannot derive a private key from a public key. The public key, is therefore obtained and used by anyone to encrypt messages before they are sent to a known recipient with a matching private key for decryption. The public key encrypts a message into an unreadable format and the corresponding private key makes it readable again for the intended party, and the intended party only.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Satoshi Nakamoto&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The name used by the person who created the Bitcoin protocol, solving the digital currency issue of the “double spend.” Nakamoto first published their white paper describing the project in 2008 and the first Bitcoin software was deployed one year later. As part of the implementation, Nakamoto also created the first blockchain database. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Scalability&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This a blockchain project’s ability to change in size or scale to handle a network’s demands, traffic, capacity and future growth in its intended application. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Seed (phrase) / Secret Recovery Phrase&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The seed phrase, mnemonic, or Secret Recovery Phrase is a crucial part of public blockchain technology. It was initially created for Bitcoin, and goes by these names. However, they all refer to a random sequence of words which can be used to restore a lost wallet. These values never change, and therefore the same string of words in the same order will always produce the same number–this is the underlying functionality that allows seed phrases to back up wallets. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SHA(Secure Hash Algorithm)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a family of cryptographic hash functions published by the National Institute of Standards and Technology (NIST) as a U.S. Federal Information Processing Standard (FIPS). SHA256 is an algorithm used in Bitcoin that takes an input of any size which can be any form of data(text, jpeg, pdf, etc.), mixes it up and creates a fixed size output(a hash) which is 256-bit (32-byte) long. You can think of the hash as the fingerprint of the data as they are one-way functions – they cannot be decrypted back. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Smart contracts&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;These are programs whose terms are recorded in computer code once a set of conditions is met, and are the dominant form of programming on the Ethereum Virtual Machine. While they often contain agreements or sets of actions between parties that emulate a traditional legal contract, they are not, in and of themselves, legal documents. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Softfork&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This is a change to the bitcoin protocol wherein only previously valid blocks/transactions are made invalid. This kind of fork requires only a majority of the miners upgrading to enforce the go new rules&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Solidity&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a JavaScript-like object oriented programming language developers use to write and develop smart contracts on the Ethereum network. Its syntax is similar to that of JavaScript, and it is built to compile into bytecode for the Ethereum Virtual Machine(EVM). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Stablecoin&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It is always spelled as one word and it is a cryptocurrency pegged to a stable asset, like fiat currency or gold designed to minimize the volatility of the price of the coin/token. It theoretically remains stable in price as it is measured against a known amount of an asset less subject to fluctuation. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Staking&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In the Ethereum context, ‘staking’ of tokens carries the traditional meaning of ‘setting aside currency for a determined purpose’. However, for decentralized exchanges (DEXes), there is no centralized authority putting up the funds to allow transfers to happen between parties; so here someone might ‘stake’ tokens into a liquidity pool, often for a promised rate of return in exchange for the use of their tokens, with the option to withdraw their tokens later.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Testnet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;An alternative blockchain or staging blockchain environment developers use to test applications in a near-live environment before being put into production (or onto the mainnet). &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Token&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A token represents an asset built on an existing blockchain. It can also be referred to as a digital identity for something that can be owned.They are accessible only by the person who has the private key for that address and can only be signed using this private key.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Tokenomics&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the study, design and implementation of monetary management and distribution based on blockchain technology.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transaction block&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a collection of transactions on a blockchain network, gathered into a block that can then be hashed and added to the blockchain.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Transaction fee&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a small fee imposed on some transactions sent across a blockchain network. The transaction fee is awarded to the miner that successfully hashes the block containing the relevant transaction.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Trustless&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The elimination of trust from a transaction. Blockchain is called a trustless system because the two entities performing a transaction do not need to trust one another. The properties of blockchain - digital signatures, cryptography, etc. help to provide the trust.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Turing completeness&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A machine is Turing complete if it can perform any calculation that any other programmable computer is capable of. All modern computers are Turing-complete in this sense. The Ethereum Virtual Machine (EVM) which runs on the Ethereum blockchain is Turing complete. Thus it can process any “computable function”. It is, in short, able to do what you could do with any conventional computer and programming language&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vyper&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a Python-like programming language for the Ethereum blockchain built for security, language and compiler simplicity, and auditability.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wallet&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is a digital file or a designated storage location for digital assets (cryptocurrency) that holds coins and token held by the owner and has an address for sending and receiving funds. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Web3 / Web 3.0&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Web3, or Web 3.0, are terms used similarly with “the decentralized web” and are often used to refer, broadly, to the blockchain and decentralized technology ecosystems as a whole.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zeppelin/Open Zeppelin&lt;/strong&gt;&lt;br&gt;
This is a community of like-minded Smart Contract developers.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Thanks for reading&lt;/em&gt;. I hope you have picked up a few of the vocabulary used in web3 and that it is no longer just buzzwords or jargon to you. If you liked it, kindly share with someone so they may learn as well. See you next time!&lt;/p&gt;

</description>
      <category>career</category>
      <category>discuss</category>
      <category>gratitude</category>
    </item>
    <item>
      <title>Reflections Of A CodeCollab Fellow</title>
      <dc:creator>Deborah Bello</dc:creator>
      <pubDate>Thu, 27 May 2021 16:26:44 +0000</pubDate>
      <link>https://dev.to/ourtimefortech/reflections-of-a-codecollab-fellow-5hag</link>
      <guid>https://dev.to/ourtimefortech/reflections-of-a-codecollab-fellow-5hag</guid>
      <description>&lt;h1&gt;
  
  
  It’s Demo Day!🎉
&lt;/h1&gt;

&lt;p&gt;&lt;em&gt;Generally&lt;/em&gt;, I’m grateful to be a fellow in CodeCollab Cycle 2.&lt;br&gt;
We had two weeks of Testing the App before Demo week and it was such a learning experience for me. It gave me a deeper understanding of its importance and how it can make you a better dev. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;In Our case&lt;/em&gt;, we did the testing after building the app so we had to test the methods we already had in place. Writing Tests helped us to see the faults in the App and minimize the breaking changes in the app(as that’s what they are for, isn’t it?😁). One of the major things, writing tests helped me understand is that the final goal isn’t to make the test pass but to make sure the test is testing what you’re meant to test. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;I also appreciate how writing tests is very encapsulated&lt;/em&gt;, in the sense that writing tests for one controller(e.g shifts), doesn’t affect another controller(e.g workers). Testing is definitely something I look forward to doing more. &lt;br&gt;
I also learned how it’s beneficial to communicate Coding Fatigue effectively when you are experiencing it. Coding Fatigue allows you to miss out on your little mistakes and hence, makes you stuck. It’s real and a normal thing that happens to devs but it becomes a problem when it’s not properly communicated with your team members. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;It’s okay to be tired. It doesn’t mean you’ve lost your competence. ~Arit&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Overall&lt;/strong&gt;, I’m glad at how much my teammates and I have grown in our professional team communication,  collaboration, and technical skills in the past 12 weeks. This Cycle is gonna be a wrap at Demo Day and it’s one that gives me mixed feelings. 😅&lt;br&gt;
Thank you for the honor of reading and staying through on the CodeCollab Cycle 2 journey with this blog!❤️&lt;/p&gt;

</description>
      <category>womenintech</category>
      <category>testing</category>
      <category>devjournal</category>
    </item>
    <item>
      <title>How It’s Going</title>
      <dc:creator>Deborah Bello</dc:creator>
      <pubDate>Mon, 19 Apr 2021 11:24:11 +0000</pubDate>
      <link>https://dev.to/ourtimefortech/how-it-s-going-20g</link>
      <guid>https://dev.to/ourtimefortech/how-it-s-going-20g</guid>
      <description>&lt;p&gt;Another week in Our Time for Tech has gone by. In the past week, we had a variety of discussions as regards the development process.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;First&lt;/strong&gt;, we had to stop the use of the Devise Gem and the reason was that as we worked further on different features of the App, it was seen (with our Senior Engineers’ help) that it is too complex to fit into the needs of our App. This caused us to have another version of the App on the GitHub repo, of which everything has been running smoothly so far. &lt;/p&gt;

&lt;p&gt;This also taught me that;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Just because something is popular doesn’t mean that it’s going to fix your current project.” - Arit&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;Additionally&lt;/em&gt;, we decided to reduce our App’s MVP by removing the worker-slots feature which allows businesses to alert workers as regards their availability which is specific for upcoming shifts. The removal of this feature was because working on this is far more complex for the time we have which is now less than 7 weeks, including QA(Quality Assurance/smoke testing) and User feedback.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Furthermore&lt;/em&gt;, I learned how important it is to document/write down your progress in whatever you’re learning as it helps you to communicate effectively what you’ve done, which is a vital skill for a developer. &lt;br&gt;
We were also advised and told of the importance of keeping our PRs(Pull Requests) small due to its efficiency and how it makes reviews easier. Everybody likes Small PRs while Long PRs are not liked as they are known to stay for a long time.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Currently&lt;/em&gt;, we’re all working on the UI styling of the App of which we are using SASS and Bootstrap which gives us readable code. In advance, I’m excited about how the guide on using the MiniTests Library is going to look like. As promised by Arit, a collaboration is ongoing with her and Chris Oliver Of GoRails in creating the guide for the testing of the App. &lt;/p&gt;

&lt;p&gt;I’m also glad about how my team and I (now 4 of us) have improved on collaborating, communicating more effectively, and growing together.  &lt;/p&gt;

&lt;p&gt;Some Noteworthy points I learned in the past week:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It’s great to be comfortable with uncertainty”. &lt;br&gt;
“Uncertainty is something that’s part of a developer’s life.”&lt;br&gt;
“Get comfortable with being uncomfortable”&lt;br&gt;
“Assume best intentions when giving and receiving feedback.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I’m looking forward to more learning and excited to see where we go from here. Thanks for reading!&lt;/p&gt;

&lt;p&gt;Follow along with DEV posts from my cohort: &lt;br&gt;
&lt;a href="https://dev.to/ourtimefortech"&gt;https://dev.to/ourtimefortech&lt;/a&gt;&lt;br&gt;
Check out Our Time for Tech: &lt;br&gt;
&lt;a href="https://ourtimefortech.org/"&gt;https://ourtimefortech.org/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@ilyapavlov?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Ilya Pavlov&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/4096-by-4096-coding-picture?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>weeklylearn</category>
      <category>weeklyretro</category>
      <category>devsjournal</category>
      <category>rails</category>
    </item>
    <item>
      <title>Lessons from PostgreSQL</title>
      <dc:creator>Deborah Bello</dc:creator>
      <pubDate>Mon, 19 Apr 2021 10:37:55 +0000</pubDate>
      <link>https://dev.to/ourtimefortech/lessons-from-postgresql-4lem</link>
      <guid>https://dev.to/ourtimefortech/lessons-from-postgresql-4lem</guid>
      <description>&lt;p&gt;Hello there! Today, I’ll be talking about some noteworthy lessons I learnt while using PostgreSQL for Our Shiftwork App.&lt;br&gt;
 As much as we didn’t go in-depth using PostgreSQL on the App, they were still quite some things to learn using PostgreSQL. &lt;br&gt;
For the Shiftwork app, my team and I are building, the major thing PostgreSQL was to do was in creating the database. &lt;br&gt;
As I had said before in my blogpost &lt;a href="https://dev.to/ourtimefortech/journeying-as-a-codecollab-fellow-with-our-time-for-tech-1b28"&gt;here,&lt;/a&gt; I jumped from one error to another trying to get the database to be created with most of my issues; PostgreSQL related.&lt;/p&gt;

&lt;h1&gt;
  
  
  PostgreSQL Power
&lt;/h1&gt;

&lt;p&gt;Postgres is an incredibly powerful database that’s packed with many different features. Some of its most interesting and productive capabilities, however, aren’t always evident.&lt;br&gt;
 When we started the initial setup of the app, I wondered why we chose PostgreSQL over MySQL, but I got to learn that PostgreSQL is a superior choice over MySQL based on its rich features, active community, and support.&lt;/p&gt;

&lt;p&gt;As much as PostgreSQL and MySQL are both immensely popular open-source databases, and a variety of real-time applications today utilize both. MySQL is known to be the world’s most popular database, whereas PostgreSQL is known as the world’s most advanced RDBMS database(Relational Database Management System).&lt;/p&gt;

&lt;p&gt;As an RDBMS database, MySQL is not fully SQL compliant and does not have many of the features that PostgreSQL has. This is why PostgreSQL has become a great choice for developers, and its popularity is growing exponentially with each passing day.&lt;br&gt;
PostgreSQL also makes setting up and using databases easier and simpler both on-premises or in the cloud. PostgreSQL can also be a very good data warehouse for running complex reporting queries and procedures on large volumes of data. &lt;/p&gt;

&lt;p&gt;PostgreSQL is an easy-to-use database with its full stack of RDBMS database features and capabilities that can handle structured and unstructured data. Installations can be easily done on Linux-flavored environments using yum or source code from the PostgreSQL website. Installing from source code gives you much more fine-grained control over the installation.&lt;br&gt;
Just as it’s the same with Rails, I learned that a lot can be going under the “hood” despite how deceptively easy it might be to use.&lt;/p&gt;

&lt;p&gt;Another thing I learned was that there are no “users” in PostgreSQL, just roles. &lt;br&gt;
 By running psql Postgres in your terminal, you’ll automatically log in with your username to PostgreSQL, therefore accessing the role created. Once a role is created, you can see it by using the &lt;code&gt;\du&lt;/code&gt; command.&lt;/p&gt;

&lt;p&gt;The following roles attributes are seen by default:&lt;br&gt;
&lt;code&gt;Superuser&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Create role&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Create DB&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Replication&lt;/code&gt;&lt;br&gt;
&lt;code&gt;Bypass RLS&lt;/code&gt;&lt;br&gt;
and it’s possible not to be a member of any of the roles (Herein lies some of the major errors that might be encountered with PostgreSQL). &lt;/p&gt;

&lt;p&gt;Creating a new role&lt;br&gt;
A new role is created using the CREATE ROLE command:&lt;br&gt;
&lt;code&gt;CREATE ROLE &amp;lt;role&amp;gt;;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Quick Summary of useful commands in postgreSQL&lt;br&gt;
&lt;code&gt;sudo -u Postgres psql&lt;/code&gt;&lt;br&gt;
&lt;code&gt;postgres=# create database mydb;&lt;/code&gt;&lt;br&gt;
&lt;code&gt;postgres=# create user myuser with encrypted password 'mypass';&lt;/code&gt;&lt;br&gt;
&lt;code&gt;postgres=# grant all privileges on database mydb to myuser;&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;As I had to consume some documentation and go through resources, I learned a tip which is the importance of reading the PostgreSQL Manual. The official documentation (or docs as they are referred to in short) of any product is the best place to find the largest wealth of information.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Little Things
&lt;/h2&gt;

&lt;p&gt;I remember running into this bug, &lt;strong&gt;“ActiveRecord::AdapterNotSpecified: 'PostgreSQL database is not configured”, “Rails Aborted”&lt;/strong&gt; when I was trying to migrate into the database.&lt;br&gt;
After checking and trying several solutions on StackOverflow, I found out the problem was because there was a space before development in the db config file. &lt;br&gt;
This was fixed by simply removing space from the first line and following the indentation. This got me past my hour+ blockade as I didn't know leading spaces were an issue.  Haha funny, isn’t it? &lt;/p&gt;

&lt;p&gt;From here I learned that: &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“It can be the simplest things that can cause the most aggravating errors.”  - Arit Amana&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Below are some links to the helpful resources/documentations I used with the bugs I encountered, if you desire to know more: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/25608062/activerecordadapternotspecified-postgresql-database-is-not-configured"&gt;https://stackoverflow.com/questions/25608062/activerecordadapternotspecified-postgresql-database-is-not-configured&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://flaviocopes.com/postgres-user-permissions/"&gt;https://flaviocopes.com/postgres-user-permissions/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e"&gt;https://medium.com/coding-blocks/creating-user-database-and-adding-access-on-postgresql-8bfcd2f4a91e&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://stackoverflow.com/questions/52610485/how-to-restart-postgresql-in-ubuntu-18-04/52610486#52610486"&gt;https://stackoverflow.com/questions/52610485/how-to-restart-postgresql-in-ubuntu-18-04/52610486#52610486&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart"&gt;https://www.digitalocean.com/community/tutorials/how-to-install-postgresql-on-ubuntu-20-04-quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://stackoverflow.com/questions/31645550/postgresql-why-psql-cant-connect-to-server"&gt;https://stackoverflow.com/questions/31645550/postgresql-why-psql-cant-connect-to-server&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="https://serverfault.com/questions/159339/ubuntu-get-postgresql-running"&gt;https://serverfault.com/questions/159339/ubuntu-get-postgresql-running&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://computingforgeeks.com/installing-postgresql-database-server-on-ubuntu/"&gt;https://computingforgeeks.com/installing-postgresql-database-server-on-ubuntu/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;While I initially felt quite anxious and tired about how I kept running into one error from another, I’m glad that it has helped foster my learning process. I hope to learn more facets of PostgreSQL soon! Thank you for reading!&lt;/p&gt;

&lt;p&gt;Referencing: &lt;br&gt;
&lt;a href="https://www.enterprisedb.com/blog/postgresql-vs-mysql-360-degree-comparison-syntax-performance-scalability-and-features"&gt;https://www.enterprisedb.com/blog/postgresql-vs-mysql-360-degree-comparison-syntax-performance-scalability-and-features&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Photo by &lt;a href="https://unsplash.com/@cgower?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Christopher Gower&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/4096-by-4096-tech-pictures?utm_source=unsplash&amp;amp;utm_medium=referral&amp;amp;utm_content=creditCopyText"&gt;Unsplash&lt;/a&gt;&lt;/p&gt;

</description>
      <category>postgres</category>
      <category>whatilearned</category>
      <category>rails</category>
    </item>
    <item>
      <title>The World Of Testing</title>
      <dc:creator>Deborah Bello</dc:creator>
      <pubDate>Tue, 13 Apr 2021 23:14:21 +0000</pubDate>
      <link>https://dev.to/ourtimefortech/the-world-of-testing-4j75</link>
      <guid>https://dev.to/ourtimefortech/the-world-of-testing-4j75</guid>
      <description>&lt;p&gt;As much as I wasn’t the one in the team that started working actively and researching on the issue created that would have to do with Testing later on, it was still definitely important that every one of us on the team knew what testing is all about, as it is an important skill for a developer and we would split the test writing tasks among ourselves in few weeks to come. &lt;/p&gt;

&lt;p&gt;Before my research on understanding the importance of Testing and the different approaches to it, The idea of creating Tests felt very intimidating a skill to learn. This was probably because I had no former experience in it and from hearsay’s, it seemed hard, and not a joyful thing to do. However, I decided to see it as a learning ground and stepping stone into the world of Testing. &lt;/p&gt;

&lt;h1&gt;
  
  
  What are Tests?
&lt;/h1&gt;

&lt;p&gt;These are scripts that produce a consistent result and prove that an application does what it is expected to do. Tests are developed concurrently with the actual application. &lt;br&gt;
Often what to include in functional Tests(controller testing) are Testing for things such as: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Knowing if the web request was successful?&lt;/li&gt;
&lt;li&gt;Knowing if the user was redirected to the right page?&lt;/li&gt;
&lt;li&gt;If the user was successfully authenticated?&lt;/li&gt;
&lt;li&gt;If the correct object is stored in the response template?&lt;/li&gt;
&lt;li&gt;If the appropriate message is displayed to the user in the view?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An important piece of advice I learned in the documentation is to include a test for everything which could break and that it is best practice to have at least one test for each of your validations, and at least one test for every method in your model.&lt;/p&gt;

&lt;p&gt;Approaches to Testing/Testing in Rails&lt;br&gt;
In learning on testing, I saw different approaches, which are: &lt;/p&gt;

&lt;h4&gt;
  
  
  Unit Testing
&lt;/h4&gt;

&lt;p&gt;Broadly speaking, unit testing is a testing method where individual units of source code, program modules, usage procedures, and operating procedures are tested to determine if they are fit for use. They make sure that a section of an application, or a “unit”, is behaving as intended. Unit tests are used to test models. &lt;br&gt;
Although it is possible in Rails to run all tests simultaneously, each unit test case is tested independently to isolate issues that may arise.&lt;/p&gt;

&lt;p&gt;Unit testing finds problems early in the development cycle rather than later. It’s always better to find bugs earlier so that features that are added later in the cycle are using the correct parts. Additionally, unit testing forces developers to structure functions and objects in better ways, since poorly written code can be impossible to test. &lt;br&gt;
Finally, unit testing provides living documentation of the system as it is developed.  The description of the tests can give an outsider a basic understanding of the unit’s API and its features. The goal of unit testing is to isolate each part of the program and show that the individual parts are correct.&lt;/p&gt;

&lt;h3&gt;
  
  
  Model Specs/RSpecs
&lt;/h3&gt;

&lt;p&gt;Model specs are similar to unit tests, in that they are used to test smaller parts of the system, such as classes or methods. Sometimes they interact with the database, too. They should be fast and handle edge cases for the system under test. &lt;/p&gt;

&lt;h2&gt;
  
  
  MiniTests
&lt;/h2&gt;

&lt;p&gt;Minitest is a testing suite for Ruby. It provides a complete suite of testing facilities supporting test-driven development (TDD), behavior-driven development (BDD), mocking, and benchmarking. It’s small, fast, and it aims to make tests clean and readable.&lt;br&gt;
Minitest is the default testing suite used with Rails, so no further setup is required to get it to work. Along with RSpec, it is one of the two most commonly used testing suites used in Ruby.&lt;/p&gt;

&lt;p&gt;I initially thought we were going to make use of Unit Tests over Mini Tests. However, It was indeed a joy and not too great a surprise when Arit (one of our senior Engineers), told us we would be creating MiniTests in few weeks to come. &lt;br&gt;
MiniTest can handle both TDD and BDD syntax and comes with a bunch of testing tools to make automation easy.&lt;br&gt;
There are even several extensions to customize MiniTest to your needs plus I learned it is even fairly easy to port Unit Test to MiniTest. It does have to be installed via bundler and MiniTests are often used over Unit Tests because the syntax encourages human-readable tests!&lt;/p&gt;

&lt;p&gt;Ultimately, this process of researching testing has been very helpful. I now find it quite exciting to know that in few weeks to come I would have more knowledge on this as Arit(one of our Senior Engineers) is working on creating a video that explains, How to create MiniTests in simpler terms and details for the Team. I know it won’t be too difficult once we get fully started. &lt;br&gt;
Additionally, I am also starting to have a bit of understanding in seeing its importance to maintaining well-organized and clean code which would make the development of Our Shiftwork app more resilient to bad data. &lt;br&gt;
 I am looking forward to exploring more facets of testing soon! &lt;/p&gt;

&lt;p&gt;Referencing:&lt;br&gt;
 &lt;a href="https://guides.rubyonrails.org/testing.html"&gt;https://guides.rubyonrails.org/testing.html&lt;/a&gt;&lt;br&gt;
&lt;a href="https://en.m.wikipedia.org/wiki/Unit_testing#"&gt;https://en.m.wikipedia.org/wiki/Unit_testing#&lt;/a&gt;&lt;br&gt;
&lt;a href="https://dev.to/milandhar/unit-testing-in-rails-4oke"&gt;https://dev.to/milandhar/unit-testing-in-rails-4oke&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.tutorialspoint.com/ruby-on-rails-2.1/rails-unit-testing.htm"&gt;https://www.tutorialspoint.com/ruby-on-rails-2.1/rails-unit-testing.htm&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devjournal</category>
      <category>testing</category>
      <category>rails</category>
      <category>womenintech</category>
    </item>
    <item>
      <title>JOURNEYING AS A CODECOLLAB FELLOW WITH OUR TIME FOR TECH</title>
      <dc:creator>Deborah Bello</dc:creator>
      <pubDate>Mon, 22 Mar 2021 16:48:03 +0000</pubDate>
      <link>https://dev.to/ourtimefortech/journeying-as-a-codecollab-fellow-with-our-time-for-tech-1b28</link>
      <guid>https://dev.to/ourtimefortech/journeying-as-a-codecollab-fellow-with-our-time-for-tech-1b28</guid>
      <description>&lt;p&gt;Hello there! &lt;br&gt;
It is an absolute delight to be part of the team for CODECOLLAB Cycle 2. I would be sharing my learning journey throughout the CODECOLLAB Track organized by Our Time For Tech, a nonprofit online program that empowers early career and career-changing Women in Tech. &lt;/p&gt;

&lt;p&gt;For the next three months, we(a team of five early-career developers) will be building a complex web-application with the guidance of 2 senior engineers. The stack for our application is Rails, React, PostgreSQL and Bootstrap. We plan to share our MVP(Minimum Viable Product) with a community demo in May. Until then, it would be such an honor for you to follow along on my journey with this blog. &lt;/p&gt;

&lt;p&gt;I remember the thrill, the Onboarding Tasks/Orientation Mail brought to me as I saw it on the 24th of February. We were instructed to set up the environment for developing the app of which I faced a lot of issues as we are to build a structure for the rest of the project. &lt;/p&gt;

&lt;p&gt;It was enlightening for me as I learned how to collaborate effectively using the tool-&lt;em&gt;GitHub&lt;/em&gt;. We were also instructed and given a proper walk-through of how to create our first issues, create a pull request(PR), link a pull request to an issue, and assign them to the project board on GitHub. GitHub project board is a new tool I discovered. I appreciate how it makes it easy to see what the team is working on and helps for easy distribution of tasks. We were also given a high-level summary of CodeCollab's goals.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CODECOLLAB’S GOALS FOR EARLY-CAREER/CAREER CHANGING DEVELOPERS&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Improving professional team communication and collaboration skills while building software with a team. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Adequate, structured mentorship for early-career devs as they take ownership of a product. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learning how to interpret client needs, manage requirements, and implementing projects to meet those needs whilst stretching and growing beyond current tech stacks and skillsets. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learning on understanding and consuming technical documentation. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For the past two to three weeks, point 4 is one that I have found to be so apt and true as I have had to consume and understand technical documentation. &lt;br&gt;
Before our First Sprint Retro and Planning, we(the team of 5) had a first meeting to get to know each other and talk a bit about the business requirements given. &lt;/p&gt;

&lt;h1&gt;
  
  
  THE ENVIRONMENT SETUP
&lt;/h1&gt;

&lt;p&gt;Installing Rails 6, Node JS, Yarn, and PostgreSQL. As I had no experience with Ruby on Rails and I’m on a Windows PC, I ran into environment issues as Ruby on Rails works best in a Linux environment. I had warnings like; “shebang line ending with /r may cause problems”, the need for a different Ruby version and I ran into PostgreSQL-related errors. For some reason, my Windows environment was conflicting with the Ubuntu installed on WSL(Windows Subsystem for Linux). I tried using a virtual machine(VMware) but I still ran into Intel-V issues with my computer. It was frustrating, to say the least as it was moving from solving one bug to another. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;However&lt;/em&gt;, I felt supported as Arit, one of the senior engineers and founder of Our Time for Tech, helped in reassuring I wasn’t alone, as I felt not on target with the tasks. Coupled with my research of resources on Google/Stack overflow, I was also helped with resources, solutions to solve the problems I faced. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;Eventually&lt;/em&gt;, I was advised and sent a guide to get Virtual box, downloading Ubuntu in it. I was so joyous as this Virtual box worked with no bugs in setting up my environment. &lt;br&gt;
It makes me glad now that I went through the hassle of setting up my environment, as it helped me to read wider about Ruby on Rails, PostgreSQL, and generally know more about my PC, seeing various possible errors and its solutions. I'm glad it has helped broaden my perspective.&lt;/p&gt;

&lt;h2&gt;
  
  
  What has been done so far?
&lt;/h2&gt;

&lt;p&gt;About three weeks of CODECOLLAB have gone by and we are currently in Week 2 as Week 0 was our Orientation week. &lt;/p&gt;

&lt;p&gt;&lt;em&gt;During our first Sprint Retro and Planning&lt;/em&gt;, the App Shiftwork’s business requirements were discussed. Shiftwork will serve as an online meeting place for shiftwork-type businesses and shift-workers. We were advised then not to think about implementation but to focus on business and user needs, drawing out the MVP. &lt;br&gt;
We planned out what data will be stored in the database and at the end of the meeting, we split the tasks between ourselves. &lt;br&gt;
I appreciate how we split the tasks of creating the issues and communicated effectively.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;As a self-taught developer(quote and unquote)&lt;/em&gt;, who has never worked on a team, I’m learning how Teamwork is such an essential skill that offers endless ways for learning. I am indeed glad to be a part of Our Time for Tech and the CODECOLLAB track. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;For this past few weeks, here is what I have learned&lt;/strong&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Creating a rationale in the deliberation of what to do before the implementation of an app is good for a developer. It is important to know your why, putting the user into consideration. You’ve to put yourself in the user’s shoes to know if he or she will have a great user experience. I learned this from Cam, my fellow Dev, on the team. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Our goal isn’t to build a perfect, ‘beautiful’ application or stay in our comfort zones. It is more beneficial to focus on functionality than more aesthetics for this project. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Speaking up on time when running into or having issues. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Identifying and managing scope creep. It’s okay to recognize what we cannot build within a certain amount of time. Managing our scope helps us focus and deliver quality software in the time we promised. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Learning something new every day, documenting my journey/little learnings with a notepad, making necessary efforts to be on target with tasks, and knowing that no question/observation is stupid. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I’m looking forward to more learning. Thanks for reading!&lt;/p&gt;

&lt;p&gt;Kindly follow along with DEV posts from my teams: &lt;br&gt;
&lt;a href="https://dev.to/ourtimefortech"&gt;https://dev.to/ourtimefortech&lt;/a&gt;&lt;br&gt;
Register/Signup to be notified of when the next cycle, Cycle 3 starts here: &lt;br&gt;
&lt;a href="https://ourtimefortech.org/"&gt;https://ourtimefortech.org/&lt;/a&gt;&lt;/p&gt;

</description>
      <category>devjourney</category>
    </item>
  </channel>
</rss>
