<?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: kidme</title>
    <description>The latest articles on DEV Community by kidme (@kidme).</description>
    <link>https://dev.to/kidme</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%2F61955%2F84e3c14b-f99a-42f4-9fb0-0fd6ec2a2d2d.jpeg</url>
      <title>DEV Community: kidme</title>
      <link>https://dev.to/kidme</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/kidme"/>
    <language>en</language>
    <item>
      <title>Buildspace Project: Build a web 3 app … My notes</title>
      <dc:creator>kidme</dc:creator>
      <pubDate>Wed, 29 Dec 2021 21:44:49 +0000</pubDate>
      <link>https://dev.to/kidme/buildspace-project-build-a-web-3-app-my-notes-3le0</link>
      <guid>https://dev.to/kidme/buildspace-project-build-a-web-3-app-my-notes-3le0</guid>
      <description>&lt;p&gt;Small Intro&lt;/p&gt;

&lt;p&gt;Hi I’m David a Full stack developer, looking to transition from Web2 → Web3 👾&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I’ve been in tech for 3-4 years now&lt;/li&gt;
&lt;li&gt;Self taught Fullstack dev, I love the ability to make complete end to end solutions&lt;/li&gt;
&lt;li&gt;Studied some CS in college and have been exposed to a lot of different languages but my favorite is javascript&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;This is my first exposure programming ANYTHING web 3&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Here are my notes for the BuildSpace tutorial: &lt;a href="https://app.buildspace.so/projects/CO02cf0f1c-f996-4f50-9669-cf945ca3fb0b" rel="noopener noreferrer"&gt;Build a Web3 App with Solidity + Ethereum Smart Contracts&lt;/a&gt; tutorial&lt;/p&gt;

&lt;p&gt;ENS → &lt;a href="https://islands.xyz/@kidme/gallery" rel="noopener noreferrer"&gt;kidme.eth&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;twitter -&amp;gt; &lt;a href="https://twitter.com/SAINt_KIDME" rel="noopener noreferrer"&gt;@SAINt_KIDME&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Tools
&lt;/h3&gt;

&lt;p&gt;Buildspace Project: Build a web 3 app … My notes&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Hardhat + ?? dependencies

&lt;ul&gt;
&lt;li&gt;Tool used for testing Smart Contracts&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Solidity &lt;code&gt;.sol&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;Language similar to Java, EVN breaks it down to binary I believe&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;replit ( &lt;a href="https://replit.com/~" rel="noopener noreferrer"&gt;link&lt;/a&gt; )

&lt;ul&gt;
&lt;li&gt;online programming environment&lt;/li&gt;
&lt;li&gt;using it for our frontend, done in React&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Keep in mind these are my notes while doing the tutorial, they are meant to display what stood out to me and nothing more. My intent is not to replace the tutorial only to help make sense of what we are doing, even though the tutorial does a good job of this. I am still learning, not a Web 3 dev… yet.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;code&gt;Tip&lt;/code&gt;:&lt;br&gt;
Keep track of the address in an organized manner. With blockchain tech there is a lot of deploying and keeping track of things on the Rinkeby test net.&lt;/p&gt;

&lt;h2&gt;
  
  
  Getting Started
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Lesson: Get your local Ethereum networking running
&lt;/h3&gt;

&lt;p&gt;Hardhat → a fake local ETH network, with fake money 💸&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson: 👩‍💻 Write your first smart contract in Solidity
&lt;/h3&gt;

&lt;p&gt;In IDE (VSCode) look up Solidity to have your theme coloring in this programming language as well. This helps a lot.&lt;/p&gt;

&lt;p&gt;WavePortal.sol → Smart Contract&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;This is what gets compiled into instructions for the EVM (Ethereum Virtual Machine)

&lt;ul&gt;
&lt;li&gt;I knew smart contracts got broken into byte code or something&lt;/li&gt;
&lt;li&gt;This was looked up for this post&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;ONE THING TO NOTE HERE: DON’T GET FARZA SAD I encourage everyone to do all steps and participate in this tutorial end to end&lt;/p&gt;

&lt;h2&gt;
  
  
  Lesson: Compile contract locally and run it 🔥
&lt;/h2&gt;

&lt;p&gt;Nice the contract is done now we are trying to &lt;code&gt;run&lt;/code&gt; it.&lt;/p&gt;

&lt;p&gt;(Keep in mind these are my initial notes and my first experience working with smart contracts and blockchain in general. Writing this blog is also supposed to help me cement these concepts.)&lt;/p&gt;

&lt;p&gt;&lt;code&gt;run.js&lt;/code&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this also mean deploy local version??&lt;/li&gt;
&lt;/ul&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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640806997607%2FZGIMjqUj3.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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640806997607%2FZGIMjqUj3.png" alt="Annotations of run.js"&gt;&lt;/a&gt;&lt;br&gt;
Nice tutorial goes through it line by line! ☺️&lt;/p&gt;

&lt;p&gt;Lines:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Grabs our contract and when compiled make the necessary files we need for the EVM&lt;/li&gt;
&lt;li&gt;Looks like this might be overkill since this is creating an entire local blockchain for this one contract&lt;/li&gt;
&lt;li&gt;deploys…. nice&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This section provides some nice insight into &lt;code&gt;hardhat&lt;/code&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson: Store 👋 data on….. . . . .
&lt;/h3&gt;

&lt;p&gt;The biggest thing I wanted to focus on here was to show how similar Solidity is to something a lot more people are familiar with… java&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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807132221%2F_FbkTZyVP.jpeg" 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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807132221%2F_FbkTZyVP.jpeg" alt="Comparing Solidity and Java"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;More on Solidity variables:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://medium.com/coinmonks/solidity-variables-storage-type-conversions-and-accessing-private-variables-c59b4484c183" rel="noopener noreferrer"&gt;Solidity variables documentation&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I feel like the tutorial does a good job about explaining what is being done.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;run.js&lt;/code&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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807397356%2F7fiW2YAK0.jpeg" 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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807397356%2F7fiW2YAK0.jpeg" alt="Notating run.js new parts"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One thing to point out that hre (hardhat) is providing us with &lt;code&gt;[owner, randomPerson]&lt;/code&gt; values.&lt;/p&gt;

&lt;p&gt;Nice! we waved to ourselves.. Note: In order to deploy something to the blockchain we need to have a wallet address. Also looking at the console it shows what is happening&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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807446641%2F3g3RCMD_G.jpeg" 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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807446641%2F3g3RCMD_G.jpeg" alt="New line in run.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;With this we are now waving to another wallet!!! 👋&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson: Deploy locally….👀 start building the website
&lt;/h3&gt;

&lt;p&gt;This lesson is important. Now introducing deploying our contract and interacting with it. This script &lt;code&gt;npx hardhat node&lt;/code&gt; creates a local blockchain that stays alive.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;deploy.js&lt;/code&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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807528234%2FzXeqSZrFM.jpeg" 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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807528234%2FzXeqSZrFM.jpeg" alt="notes on deploy.js"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After running another hardhat script in a separate window, we are finally given an address for our contract. This makes it easy for our site to locate this contract.&lt;/p&gt;

&lt;p&gt;The receipts: 👀&lt;/p&gt;

&lt;p&gt;After this part I was super excited! This new tech can be intimidating but we have accomplished a lot!!&lt;/p&gt;

&lt;h2&gt;
  
  
  Section 2
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Lesson: Setup a basic react app, setup Metamask
&lt;/h3&gt;

&lt;p&gt;This part was a bit weird for me as Metamask is not used as my main wallet. However, I feel like Metamask is so seamless it makes it a strong candidate as a development wallet.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What I was trying to do was to import this project, host it on Vercel and connect it to my mobile, wallet. That turned own to be quite the bump in the road that I just didn’t want to deal with.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I recommend just using Metamask and the Replit page they provided, that journey was pretty seem less.&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson: 📤 Deploy smart contract to a real testnet
&lt;/h3&gt;

&lt;p&gt;this looks cool → Alchemy&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Looks incredibly impressive, has a full suite of dev tools and features&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;🚰 Rinkeby and it’s fake ETH money was a roadblock I couldn’t get around through the main channels. HOWEVER the discord has a channel #faucet-request, that is the easiest and fastest way I was able to get some development ETH.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Now once that contract is deployed this should live on Rinkeby public test network 🤯🤯&lt;/em&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson: Connect our wallet to our web app 🌅
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;In React ..App.jsx:&lt;/code&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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807737788%2FPd-8PHNe2.jpeg" 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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640807737788%2FPd-8PHNe2.jpeg" alt="Small breakdown of .jsx code"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;useEffect&lt;/code&gt; gets called anytime the state of the second parameter changes, in this case we are using it to be called once the page is rendered&lt;/li&gt;
&lt;li&gt;If not familiar with React, it is a good choice for a frontend framework&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;going through tutorial…. Alot is being added&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;We now have state&lt;/li&gt;
&lt;li&gt;Connect to the users wallet

&lt;ul&gt;
&lt;li&gt;Also check if we are have been given permission to use this wallet&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Just in general try, catch blocks are good development practices&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lesson: Call the our deployed smart contract…
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Back in React ..App.jsx&lt;/code&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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640812273571%2FO8iB4gtOO.jpeg" 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.hashnode.com%2Fres%2Fhashnode%2Fimage%2Fupload%2Fv1640812273571%2FO8iB4gtOO.jpeg" alt="Notes on new stuff added to frontend"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;contractAddress: Where this contract is in the Rinkeby testnet.

&lt;ul&gt;
&lt;li&gt;&lt;em&gt;told you save all addresses when developing smart contracts&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;contactAbi: For the site to know how to interact with our contract, the abi comes from the artifacts we moved over&lt;/li&gt;

&lt;li&gt;signer: validates a proper signer is interacting with contract (I believe)&lt;/li&gt;

&lt;li&gt;Added some useful links to the bottom of the doc :)&lt;/li&gt;

&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;Here’s a thing I learned from now developing on web 3!&lt;/p&gt;

&lt;p&gt;If you need to retest website, the connection to Metamask does effect the state of our site. If needing to retest these are the steps.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open Metamask extension&lt;/li&gt;
&lt;li&gt;Setting ( 3 dots on the right of the account )&lt;/li&gt;
&lt;li&gt;Click the trash can near the correct repl project

&lt;ul&gt;
&lt;li&gt;Something like this …xxxx.id.repl.co&lt;/li&gt;
&lt;li&gt;If you delete the wrong one it will just kind of sign you out of that site&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  Lesson: 📦 Storing messages from users on the blockchain
&lt;/h3&gt;

&lt;p&gt;Tasks&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Update Smart Contract (WavePortal.sol)&lt;/li&gt;
&lt;li&gt;Test in run.js&lt;/li&gt;
&lt;li&gt;Re-deploy (deploy.js)&lt;/li&gt;
&lt;li&gt;Update new info on frontend&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;WavePortal.sol&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Added an event&lt;/li&gt;
&lt;li&gt;Added struct (Similar to js object?)&lt;/li&gt;
&lt;li&gt;Created array to hold Wave structs&lt;/li&gt;
&lt;li&gt;Wave now has a message

&lt;ul&gt;
&lt;li&gt;This pushes our new wave to our wave array&lt;/li&gt;
&lt;li&gt;This means we store who waved, what did they say and when&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;emit NewWave → triggers an event in Solidity&lt;/li&gt;

&lt;li&gt;new function getAllWaves() returns our fancy new array of Wave structs&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;run.js&lt;/code&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;deploy contract up top&lt;/li&gt;
&lt;li&gt;get all waves
&amp;gt; Remember contracts on the blockchain are immutable, lose all contract data when we redeploy&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A small thing I noticed was that our smart contract was able to handle emojis 🥳 so use them up!&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson: Fund contract, set a prize …. .. send users ETH Ξ 💸
&lt;/h3&gt;

&lt;p&gt;Take some time on this section, there is a lot to unpack&lt;/p&gt;

&lt;p&gt;&lt;code&gt;WavePortal.sol&lt;/code&gt;: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Check to see if contract has enough funds&lt;/li&gt;
&lt;li&gt;(bool success, )

&lt;ul&gt;
&lt;li&gt;success if we sent the money&lt;/li&gt;
&lt;li&gt;If it failed return “Failed to withdraw money ….. “&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;require();

&lt;ul&gt;
&lt;li&gt;this is an important function&lt;/li&gt;
&lt;li&gt;It means we are able to cancel a transaction if certain criteria isn’t met&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;run.js&lt;/code&gt;  some new parts:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;const waveContract = await waveContractFactory.deploy({ value: hre.ethers.utils.parseEther("0.1"), });&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;⭐️ This is the deployment of our contact and with 0.1 ETH at that&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hre.ethers.provider.getBalance(waveContract.address)&lt;/code&gt;

&lt;ul&gt;
&lt;li&gt;Gets balance of our contract&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Notice if we want to log our current balance you have to use &lt;code&gt;utils.formatEther(currentBalance)&lt;/code&gt;
&lt;/li&gt;

&lt;li&gt;Our wave now can handle a message in it!

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;waveContract.wave("A message!");&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;/ul&gt;

&lt;h3&gt;
  
  
  Lesson: Randomly pick a winner
&lt;/h3&gt;

&lt;p&gt;This is where developing on the block chain gets tricky. How do we implement randomness in something that is both immutable and public? …… take some time to guess 👀 I did …. I guessed wrong but still tried.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Not sure if Solidity has built in library but a util for randomness would be nice&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Lots of stuff happening here but now we know moving forward when developing smart contracts, dealing with randomness will have its own set of unique challenges.&lt;/p&gt;

&lt;p&gt;Going through the tutorial …. ….&lt;/p&gt;

&lt;p&gt;Notice in &lt;code&gt;function wave&lt;/code&gt; there is a new require section with its own parameters&lt;/p&gt;

&lt;p&gt;&lt;code&gt;require( lastWavedAt[msg.sender] + 15 minutes &amp;lt; block.timestamp, "Wait 15m" );&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Cancels transaction if that parameter does not pass&lt;/p&gt;

&lt;h3&gt;
  
  
  Lesson: Finalize and celebrate! 🎨
&lt;/h3&gt;

&lt;p&gt;Another thing we are adding is a gas limit to ease the friction in using our new web 3 app, is it safe to call this a dapp?&lt;/p&gt;

&lt;p&gt;Really cool that it goes through &lt;code&gt;emit&lt;/code&gt;s/events and also points out how to add it in the code&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the second useEffect now updates the UI any time it notices a new emitter event happening on the Smart Contract&lt;/li&gt;
&lt;li&gt;This allows for our UI to keep up with the contract on the blockchain&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  And that is it! Congratulations 🎉
&lt;/h2&gt;

&lt;p&gt;I did run into issues when going through this tutorial, the trick is to kinda stick with it and be resourceful. I found that these new concepts are abit tough however it is pretty easy to relate them to things we already do in tech.&lt;/p&gt;

&lt;p&gt;I do want to say thank you for taking the time in reading this and good luck on the journey.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Links on documentation:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/ethers-io/ethers.js/blob/master/packages/contracts/src.ts/index.ts#L1135" rel="noopener noreferrer"&gt;ether repo&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.ethers.io/v5/api/contract/contract/" rel="noopener noreferrer"&gt;ether documentation/ contract&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.ethers.io/v5/api/signer/#signers" rel="noopener noreferrer"&gt;ether documentation/ signer&lt;/a&gt;&lt;/p&gt;

</description>
      <category>web3</category>
      <category>javascript</category>
      <category>solidity</category>
      <category>buildspace</category>
    </item>
    <item>
      <title>Best ways to prepare for an interview?</title>
      <dc:creator>kidme</dc:creator>
      <pubDate>Tue, 29 May 2018 00:58:11 +0000</pubDate>
      <link>https://dev.to/kidme/best-ways-to-prepare-for-an-interview-3e3b</link>
      <guid>https://dev.to/kidme/best-ways-to-prepare-for-an-interview-3e3b</guid>
      <description>&lt;h3&gt;
  
  
  So I have an interview coming up! 😳
&lt;/h3&gt;

&lt;p&gt;I am definitely excited and would like to use this thread as a reference on what people do in order to prepare for an interview, or even advice. The one I have is software related but this discussion is open for any general interview. Thanks!&lt;/p&gt;

</description>
      <category>discuss</category>
      <category>career</category>
    </item>
    <item>
      <title>I've Completed my personal website now what?</title>
      <dc:creator>kidme</dc:creator>
      <pubDate>Sun, 27 May 2018 01:16:04 +0000</pubDate>
      <link>https://dev.to/kidme/ive-completed-my-personal-website-now-what-23ne</link>
      <guid>https://dev.to/kidme/ive-completed-my-personal-website-now-what-23ne</guid>
      <description>&lt;h4&gt;
  
  
  BACKGROUND
&lt;/h4&gt;

&lt;p&gt;I started looking at web development off and on for about a year. I am currently pursuing a degree in the field of computer science and have a background working with C++. &lt;/p&gt;

&lt;p&gt;In the beginning of teaching myself web development I was religiously checking out free code camps website, but I was not really focused on doing the front end projects. I remember I was more focused on the general algorithm section of it, somehow that just seemed easier. ‘Probably due to my work with a lower-level language’&lt;/p&gt;

&lt;p&gt;Since then I have been in the rabbit whole of self teaching myself ‘web-development’. And with that I have been bouncing around different resources and topics never really focusing on one. There is so much out there!! 💀💀&lt;/p&gt;

&lt;p&gt;With that I have found a great deal of resources to take advantage of.&lt;/p&gt;

&lt;h4&gt;
  
  
  QUICK NOTE
&lt;/h4&gt;

&lt;p&gt;There are so many resources here a full list if you want to check them out however I would say although it is good to use different resources sticking to the same topic is important!&lt;/p&gt;

&lt;h4&gt;
  
  
  List
&lt;/h4&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="//freecodecamp.org"&gt;freecodecamp.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="//beta.freecodecamp.org"&gt;beta.freecodecamp.org&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="//udacity.com"&gt;udacity.com&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="//codeacademy.com"&gt;codeacademy.com&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="//taniarascia.com"&gt;taniarascia.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="//egghead.io"&gt;egghead.io&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="//hackerrank.com"&gt;hackerrank.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="//teamtreehouse.com"&gt;teamtreehouse.com&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a href="//scrimba.com"&gt;scrimba.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;a href="//frontendmasters.com"&gt;frontendmasters.com&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;
&lt;a href="//wesbos.com"&gt;Wesbos's Video Series&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;….&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  RANT
&lt;/h4&gt;

&lt;p&gt;Unfortunately I was jumping from free code camps algorithms, to code academies guided classes, to going on udacity to learn how to set up sites with pyhon. &lt;br&gt;
‘I’ve never worked with python prior to this?!’&lt;br&gt;
And I didn’t have intent to pursue anything that took advantage of python afterward.&lt;/p&gt;

&lt;h4&gt;
  
  
  RESOLUTION
&lt;/h4&gt;

&lt;p&gt;I was stuck and my work was showing it. I decided to focus on front end for a while and I noticed how frustrating css is. However around this time css grid was gaining popularity and I decided to follow it. I ended up setting up my very first portfolio webpage and I am incredibly exited to share.&lt;/p&gt;

&lt;p&gt;The has inspiration from various sources I have taken advantage of throughout my journey.(They’ll be listed in the code)&lt;/p&gt;

&lt;p&gt;Feel free to check it out!!!&lt;/p&gt;

&lt;p&gt;The way I wanted to set it up was that it would update anytime I were to post any public repository to GitHub, as I see GitHub as a major way to show off what you can do. Also it being responsive was incredibly important to me so I was able to take advantage of css grid and flexbox for that aspect of the project. I'm incredibly exited to know that any future work I share as public on my github will be displayed on my website!🎉🎉 Let me know your thoughts!!!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://dfimbres.github.io" rel="noopener noreferrer"&gt;dfimbres.github.io&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5y24sg617lh46hsygmse.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%2Fthepracticaldev.s3.amazonaws.com%2Fi%2F5y24sg617lh46hsygmse.png" alt="website image"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>design</category>
    </item>
  </channel>
</rss>
