<?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: joaoHass</title>
    <description>The latest articles on DEV Community by joaoHass (@joaohass).</description>
    <link>https://dev.to/joaohass</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%2F639451%2F56646428-b969-4077-ade0-dd666b4ae953.jpeg</url>
      <title>DEV Community: joaoHass</title>
      <link>https://dev.to/joaohass</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/joaohass"/>
    <language>en</language>
    <item>
      <title>Tutorial hell: The escape (part two)</title>
      <dc:creator>joaoHass</dc:creator>
      <pubDate>Thu, 05 May 2022 15:24:40 +0000</pubDate>
      <link>https://dev.to/joaohass/tutorial-hell-the-escape-part-two-2efi</link>
      <guid>https://dev.to/joaohass/tutorial-hell-the-escape-part-two-2efi</guid>
      <description>&lt;h1&gt;
  
  
  Hi!
&lt;/h1&gt;

&lt;p&gt;I've made some progress on the project since my first post here! First, I wanna show a quick overview of what I've implemented so far:&lt;/p&gt;

&lt;blockquote&gt;
&lt;ul&gt;
&lt;li&gt;User can now add/remove cards&lt;/li&gt;
&lt;li&gt;Tasks are now stored on localStorage&lt;/li&gt;
&lt;li&gt;Now displaying the number of cards in each stack and the name of the stack &lt;em&gt;(hey, it's a feature, ok?)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;

&lt;p&gt;Yes, I know these are basic things (looking from a perspective of who's already have some experience with frameworks), but that's fine, I'm learning at my own pace 😄&lt;/p&gt;

&lt;h2&gt;
  
  
  What I struggled with
&lt;/h2&gt;

&lt;p&gt;There are a couple of things and concepts that went over my head, even when I tried over and over again. I'll cover one by one to keep things organized!&lt;/p&gt;

&lt;h3&gt;
  
  
  Ability to create new cards
&lt;/h3&gt;

&lt;p&gt;Seriously, I just couldn't figure out how to properly implement it. I was like &lt;em&gt;"ok, how am I supposed to do it?"&lt;/em&gt;. Only after reading multiple times the docs, googling, and writing down what I expected the component to do, I was able to implement it &lt;strong&gt;and understand why it works&lt;/strong&gt; &lt;em&gt;(that's the most important thing for me)&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  The difference between declaring a variable inside and outside  the component (even on the same file)
&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;To be honest, I'm not 100% sure that I understand completely this, so if you know any source explaining in-depth this, I'd be happy to read it!&lt;/em&gt; 😃&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This one was trickier for me. I just couldn't wrap my head around the fact that I needed to use hooks in order to the component keep track of the state that I wished. It took me more than I like to admit &lt;em&gt;(hours)&lt;/em&gt; to grasp the concept.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--0xB0tDmo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gw7celqisuqpczmrlt1y.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--0xB0tDmo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/gw7celqisuqpczmrlt1y.png" alt="Using useState hook (React)" width="880" height="344"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  How to pass information up
&lt;/h3&gt;

&lt;p&gt;To be honest, It wasn't that difficult to understand, I just had to get some real practice to get comfortable with how it works. &lt;em&gt;(thinking of it, I already used the concept of passing functions as parameters, but I didn't make the link until now)&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Typo ☠
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;sighs&lt;/strong&gt;. I spent like 30 minutes checking the logic of my code trying to debug why the new tasks weren't being added properly when I created them. Then I gave up.&lt;br&gt;
Just kidding 😁&lt;br&gt;
I found out that the bug was related to each child in a list not having a unique key &lt;em&gt;(but, they did have)&lt;/em&gt;, but I just couldn't see where I was making a mistake, so I asked for help &lt;em&gt;(thank you, Sinc02)&lt;/em&gt;. Turns out that my problem was a typo! I had added an extra 's' on my code. It should have been &lt;code&gt;task.id&lt;/code&gt; but I coded as &lt;code&gt;tasks.id&lt;/code&gt;, which messed up the rest of the functionality of the code.&lt;br&gt;
So, I removed that sneaky extra letter, and everything worked like a charm!&lt;br&gt;
&lt;a href="https://i.giphy.com/media/zOvBKUUEERdNm/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/zOvBKUUEERdNm/giphy.gif" alt="Monkey coding" width="320" height="180"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Final thoughts
&lt;/h3&gt;

&lt;p&gt;I have a lot to do, but I'm happy with my progress. The next step is to implement the ability to drag the cards around to change their current state (in progress, done, etc). I've also learned more about prop drilling, component composition and, the context api.&lt;/p&gt;

&lt;p&gt;Doing this project has been fun so far and things look promising. I had a lot of difficulties and problems along the way, but these hard things taught me a lot, so in the end, they were good things.&lt;/p&gt;

&lt;p&gt;I'm still learning how to write these blog posts, but I think I'm getting the handle of it 😄&lt;/p&gt;

&lt;p&gt;Well, I gotta go for now! Thanks for reading and I wish you the best, fellow stranger! Godspeed.&lt;br&gt;
&lt;a href="https://i.giphy.com/media/me2X35MH2ir7Ix7U6v/giphy.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://i.giphy.com/media/me2X35MH2ir7Ix7U6v/giphy.gif" alt="Godspeed!" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>beginners</category>
      <category>react</category>
      <category>javascript</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Tutorial hell: The escape (part one)</title>
      <dc:creator>joaoHass</dc:creator>
      <pubDate>Tue, 03 May 2022 13:50:36 +0000</pubDate>
      <link>https://dev.to/joaohass/my-first-34dk</link>
      <guid>https://dev.to/joaohass/my-first-34dk</guid>
      <description>&lt;h1&gt;
  
  
  Hi!
&lt;/h1&gt;

&lt;p&gt;Sooo, after months of postponing it, I'll finally start to develop a project from the ground up using React. I tried a few times following tutorials, but I &lt;strong&gt;always&lt;/strong&gt; got that feeling of &lt;em&gt;"Ok, what do I do know?&lt;/em&gt; So, this time &lt;strong&gt;I decided to not follow any tutorials&lt;/strong&gt; because:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;I want to escape tutorial hell;&lt;/li&gt;
&lt;li&gt;I want to improve my problem-solving skills;&lt;/li&gt;
&lt;li&gt;Why not?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;em&gt;Oh, I'm João, by the way!&lt;/em&gt; I currently live in Brazil and I'm a 20 years old self-taught developer. It's nice to have you here, fellow stranger! 😄&lt;/p&gt;

&lt;h2&gt;
  
  
  The Project
&lt;/h2&gt;

&lt;p&gt;I'm going for a kanban-styled app. You didn't read it wrong, it's not a to-do list! &lt;em&gt;yikes&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I plan to &lt;strong&gt;develop new features gradually&lt;/strong&gt;, a*&lt;em&gt;s I get more comfortable&lt;/em&gt;* with the logic and with React. I thought of plan everything from the get-go, but that was overwhelming, so I decided to go with basics first, features later.&lt;/p&gt;

&lt;h2&gt;
  
  
  Structure
&lt;/h2&gt;

&lt;p&gt;The project, at the current stage, has the following structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;    &lt;span class="se"&gt;\-&lt;/span&gt;--modules
        &lt;span class="se"&gt;\-&lt;/span&gt;--kanban
            +---Card
            |       Card.css
            |       Card.jsx
            |
            +---ColumnStack
            |       ColumnStack.css
            |       ColumnStack.jsx
            |
            &lt;span class="se"&gt;\-&lt;/span&gt;--KanbanApp
                    KanbanApp.css
                    KanbanApp.jsx
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Now, explaining each component:&lt;/em&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;KanbanApp:&lt;/strong&gt; contains the entire project;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ColumnStack:&lt;/strong&gt; the column of cards &lt;em&gt;(to do, in progress, in revision, concluded)&lt;/em&gt;. Each column holds its respective cards.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Card:&lt;/strong&gt; contains the info from each task; belongs to one of the columns.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ok, I know that a lot of things are missing &lt;em&gt;(add new cards, edit existing cards, move cards arounds, etc)&lt;/em&gt;, but as I said, I plan to implement these things later, for now I just want to get started.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Oh, And i'm following the modules/domain structure!&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What to expect?
&lt;/h2&gt;

&lt;p&gt;Frankly, I don't think I'll be able to write daily about the project, but you can stay tunned on &lt;a href="https://github.com/joaoHass/kanban-react"&gt;my github repo&lt;/a&gt;! &lt;strong&gt;I do plan to fully develop this app&lt;/strong&gt;, or at least, most of it, because I know that's the only way to keep moving forward.&lt;/p&gt;

&lt;p&gt;Also, I know that &lt;strong&gt;I need to improve my writing skills.&lt;/strong&gt; I have to make things enjoyable not only for me, but for you as well, dear reader.  English is not my primary language,  so I know that creating the habit of writing a blog or something will greatly improve my fluency.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Buuut I'm enjoying racking my brains&lt;/strong&gt;, trying to figure things out on my own. You see, when you follow a tutorial, you are just... following. So, starting fresh with no directions is kinda freeing and exciting? &lt;/p&gt;

&lt;p&gt;Well, I gotta go back to develop this little project of mine. &lt;strong&gt;I    really hope to see you here next time&lt;/strong&gt;, fellow stranger. &lt;strong&gt;Godspeed&lt;/strong&gt;! 😊&lt;/p&gt;

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