<?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: 🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</title>
    <description>The latest articles on DEV Community by 🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡 (@crispitipina).</description>
    <link>https://dev.to/crispitipina</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%2F540065%2F5d669fec-1e06-40b7-aaab-a5d6dcae4ae4.jpeg</url>
      <title>DEV Community: 🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</title>
      <link>https://dev.to/crispitipina</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/crispitipina"/>
    <language>en</language>
    <item>
      <title>My UX Design experience</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Thu, 19 Oct 2023 10:38:37 +0000</pubDate>
      <link>https://dev.to/crispitipina/my-ux-design-experience-5hec</link>
      <guid>https://dev.to/crispitipina/my-ux-design-experience-5hec</guid>
      <description>&lt;p&gt;&lt;em&gt;"UX designer, UI designer, Product designer… What is the difference?"&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This was my question when I heard for the first time about these roles. I thought they were somehow related to the look and feel of a website or an app. I was quite far from the right definition. In fact, a UX designer takes care of &lt;strong&gt;designing a great digital product experience on apps or websites&lt;/strong&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;Design is not just what it looks and feels like. Design is how it works&lt;/em&gt;,&lt;br&gt;
Steve Jobs&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--YOlG5FYA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/jv6p8tefslustem3fa7g.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--YOlG5FYA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/jv6p8tefslustem3fa7g.png" alt="theuncomfortable.com" width="800" height="197"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It is a simple definition with a complex process behind the scenes though. In order to create a user-friendly experience, a UX designer needs to understand the users needs and interests (&lt;strong&gt;expectations&lt;/strong&gt;), awake their emotions (&lt;strong&gt;product experience&lt;/strong&gt;) and make them come back (&lt;strong&gt;memory&lt;/strong&gt;) This requires finding answers to a lot of questions: who, what, when, where, why, how and everything that has to do with the user interaction with the product. Ah! and without forgetting about the business goals, of course!&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--sS0zi8co--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/6qpk4bumel5g75o1xf5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--sS0zi8co--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/6qpk4bumel5g75o1xf5a.png" alt="UX questions" width="500" height="350"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This complex and complete process catched my attention. I have always worked on digital marketing focused on user acquisition but also on market research, as it is crucial not only to get to know potential customers but also competitors.&lt;/p&gt;

&lt;p&gt;With my marketing and frontend development knowledge, I thought that learning UX design would give me the extra piece I needed to get a complete picture of the whole process: from understanding users needs, motivations and goals through the product creation till the final promotion and testing. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--UqunyyAx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/goxkteic3ff5rayhnvot.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--UqunyyAx--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/goxkteic3ff5rayhnvot.png" alt="UX &amp;amp; UI representation" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What did I learn?
&lt;/h2&gt;

&lt;p&gt;During the certified UX program I did, I went through a good combination of theoretical concepts and practical challenges. The goal was having a portfolio by the end of the program with &lt;a href="https://www.cristina-padilla.com/#projects"&gt;my first project&lt;/a&gt; focused on a fictitious city website for tourists. This project was meant to go through the &lt;strong&gt;UX design phases: analysis, strategy, architecture, interaction and aesthetics&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Although the project's main focus was creating a website with a user-friendly experience, it also touched some UI concepts at the last stage. As mentioned before, a UX and a UI designer are not the same roles. While a UX designer mainly focuses on a product's functionality, a UI designer cares about the aesthetics of the product (visual design elements like colors, icons, shapes, typography, transitions, etc.) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--y4zBl1XF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/i0yku2x0d0fwe76shazq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--y4zBl1XF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/i0yku2x0d0fwe76shazq.png" alt="UX vs UI example" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Having a mentor was another important part of the UX program. Recurring 1:1 talks were very useful to discuss the project, get feedback from an experienced UX designer and make me question, rethink and improve my project.&lt;/p&gt;

&lt;p&gt;If you are considering learning more or becoming a UX designer, you might be wondering what are the necessary skills. A good UX designer should be a:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Good listener&lt;/li&gt;
&lt;li&gt;Good communicator&lt;/li&gt;
&lt;li&gt;Empathetic&lt;/li&gt;
&lt;li&gt;Team player&lt;/li&gt;
&lt;li&gt;Analytical thinker&lt;/li&gt;
&lt;li&gt;Detail-oriented &amp;amp; problem solver&lt;/li&gt;
&lt;li&gt;Curious &amp;amp; life long learner&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>uxdesign</category>
      <category>career</category>
      <category>webdev</category>
      <category>inspiration</category>
    </item>
    <item>
      <title>A roller coaster career path</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Tue, 19 Sep 2023 14:45:21 +0000</pubDate>
      <link>https://dev.to/crispitipina/a-roller-coaster-career-path-3fn0</link>
      <guid>https://dev.to/crispitipina/a-roller-coaster-career-path-3fn0</guid>
      <description>&lt;p&gt;Once upon a time I was a journalism and psychology enthusiast and when I had to decide what to study, I went for something that combined both: advertising and public relations. I thought it would be a good mix of &lt;strong&gt;creativity, analysis and problem-solving&lt;/strong&gt; and luckily, I was right.&lt;/p&gt;

&lt;p&gt;I could define my bachelor as multidisciplinary. My subjects went from History, Economics and Law to Psychology, Sociology, Art and Communication Technologies. I was quite happy with my studies but life changes and when I finished my studies a huge economic crisis started and the job market situation was simply non-existent.&lt;/p&gt;

&lt;p&gt;I emigrated to look for any opportunity within the communication field. A foreign country, a new language to &lt;strong&gt;learn on-the-go&lt;/strong&gt;. It was very tough but I managed to find some opportunities, where surprisingly, my tasks were completely different from what I expected. The digital era was transforming the whole industry and what I once studied (traditional offline marketing) was evolving into digital marketing.&lt;/p&gt;

&lt;p&gt;In the beginning I was frustrated because I had the feeling that everything I learnt at the university had vanished all of a sudden. But what to do? I adapted to the circumstances of the digital world and learnt from scratch again. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--TzbpzB-8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/wz5p6ou5llapi1u62f4k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--TzbpzB-8--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/wz5p6ou5llapi1u62f4k.png" alt="Learning path" width="800" height="534"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Since then, &lt;strong&gt;I have never stopped learning&lt;/strong&gt;. I have gone through SEO, paid user acquisition, data attribution models, performance analysis, content creation,market and user research, brand promotion, digital marketing strategy conception, conversion rate optimization, marketing tech implementation, etc. All of them were a good combination of the things that I pursued in the past: creativity, analysis and problem-solving but with the need of &lt;strong&gt;being constantly up-to-date&lt;/strong&gt;. What I knew one day was totally outdated a couple of months later.&lt;/p&gt;

&lt;p&gt;The initial frustrating feeling suddenly turned into a personal challenge. Whenever I learn something new, I see &lt;strong&gt;opportunities for my personal growth&lt;/strong&gt;. I have always been a curious person and learning new things is not only a way to step out of my comfort zone but also a &lt;strong&gt;motivation&lt;/strong&gt;. Nevertheless, this digital era is transforming everything so fast that one needs to choose where to put the focus on to not get overwhelmed. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wsHrCkgQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/roonp272auzwv25j55rm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wsHrCkgQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/roonp272auzwv25j55rm.png" alt="Change/Chance" width="800" height="640"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;A few years ago I decided to dig into frontend development. In my different jobs I sometimes had to work with software developers and data engineers and this close contact awoke my curiosity for programming. I started to learn by myself, built my first projects and finally I joined &lt;a href="https://www.cristina-padilla.com/collablab"&gt;The Collab Lab&lt;/a&gt;, where I built a React project in a team. It was a good experience to understand how collaboration and communication work in frontend development when working in a team.&lt;/p&gt;

&lt;p&gt;After my first programming steps, I got curious about &lt;a href="https://www.cristina-padilla.com/uxexperience"&gt;UX design&lt;/a&gt; because I think it is somehow the glue that joins marketing and frontend development. I went through a certified UX program that combined theory with a lot of practical exercises. At the end of the course I created my portfolio with a project about a fictitious city website for tourists. It was an experience that helped me get a theoretical and practical picture of all different UX design phases: user research, analysis, product strategies, requirements and planning, content, structures, processes, information architecture, interaction, user interface design and testing.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Intellectual growth should commence at birth and cease only at death", Albert Einstein&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;What a roller coaster! The frustrating feelings at the beginning of my career are fortunately gone as I have learnt to deal with &lt;strong&gt;uncertainty and constant transformation&lt;/strong&gt;. It hasn't been easy but being curious and the hunger for learning have made me feel self-fulfilled, more confident and less dependent. This can of course open you more doors professionally speaking, but in my case it has a rewarding feeling. It is a personal motivation.&lt;/p&gt;

&lt;p&gt;What about you? Are you also going through a roller coaster career path? Any learning plans on the horizon? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--lEtXM3jY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/p4rs4wgha87vokoep62d.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--lEtXM3jY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://community.codenewbie.org/remoteimages/uploads/articles/p4rs4wgha87vokoep62d.jpg" alt="Where next" width="800" height="800"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>career</category>
      <category>selfdevelopment</category>
      <category>productivity</category>
      <category>motivation</category>
    </item>
    <item>
      <title>My dev experience at The Collab Lab</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Mon, 06 Mar 2023 17:31:30 +0000</pubDate>
      <link>https://dev.to/crispitipina/my-dev-experience-at-the-collab-lab-j8l</link>
      <guid>https://dev.to/crispitipina/my-dev-experience-at-the-collab-lab-j8l</guid>
      <description>&lt;p&gt;As a self-taught developer, there are 2 things that I always missed during my learning journey: building projects in a team and getting feedback. I thought that both things could help me improve my coding skills much faster so I started to look for any kind of experience or community that could provide me that. And one day I luckily came across &lt;a href="https://the-collab-lab.codes/"&gt;The Collab Lab&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;The Collab Lab is a place to collaborate in a group project remotely with other early-career developers. It was a great opportunity for me as I did not only have the chance to gain practical experience on a real project but I could also get immediate feedback and support from professional developers. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--REx6PNde--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wwrroz236mknguz632s.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--REx6PNde--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3wwrroz236mknguz632s.png" alt="Collab Lab admission" width="711" height="775"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I was extremely excited when I got offered a spot! It would be my first and closest experience to a real developer job: I would be working for 8 weeks on a project within a team of 3 other developers and the support and guidance of 3 mentors. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--IkDEoPbt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dccfcijtogzain7cjctt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--IkDEoPbt--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/dccfcijtogzain7cjctt.png" alt="First week at the Collab Lab" width="711" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What does a week look like at the Collab Lab?
&lt;/h2&gt;

&lt;p&gt;Our main goal was to &lt;strong&gt;build a smart shopping list app&lt;/strong&gt;. The tasks were split into &lt;strong&gt;13 issues&lt;/strong&gt;. We started solving the functionality issues and finished with the design/styling part.&lt;/p&gt;

&lt;p&gt;Every week I was paired with a colleague to work on an issue. This was a great experience as I had the chance to do my first &lt;strong&gt;pair programming sessions&lt;/strong&gt; with 3 different collabies for 8 weeks.&lt;/p&gt;

&lt;p&gt;After solving the assigned issue, we did not only have to submit a PR (pull request) but also do a &lt;strong&gt;code review&lt;/strong&gt; of our collabies task and receive a code review from them and our mentors. At the end of the week we had an online sync all together to &lt;strong&gt;demo&lt;/strong&gt; our tasks, go through a &lt;strong&gt;learning module&lt;/strong&gt; and do a &lt;strong&gt;retrospective&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--pcO3wLQm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tie9hn1r4rq7muqwukhs.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--pcO3wLQm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/tie9hn1r4rq7muqwukhs.png" alt="Second week at the Collab Lab" width="711" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What did I learn?
&lt;/h2&gt;

&lt;p&gt;In terms of coding skills, I did not only learn a lot about &lt;strong&gt;ReactJS&lt;/strong&gt; (I had previous experience but it helped me refresh some concepts again and learn new ones), but also about other technologies I had no experience with, like &lt;strong&gt;Firebase&lt;/strong&gt; (collections, &lt;a href="https://www.cristina-padilla.com/localstorage.html"&gt;local storage&lt;/a&gt;, etc.), &lt;strong&gt;Tailwind CSS and Git&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--eQmsb4yV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84il2xidi9s7e4csgcoc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--eQmsb4yV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/84il2xidi9s7e4csgcoc.png" alt="Third week at the Collab Lab" width="711" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Collab Lab experience helped me specially improve my Git skills. As I had previously worked alone on my own projects, I only knew the &lt;a href="https://www.cristina-padilla.com/gitcommands.html"&gt;basic git commands&lt;/a&gt; to push my changes to GitHub. This time I had to use all necessary git commands when working on a team project to create a new branch, pull, push, merge, etc. And because mistakes happen on the way and are part of the learning journey, I faced situations where I had to learn commands that I never thought I would use, like &lt;a href="https://www.cristina-padilla.com/gitrebase.html"&gt;git rebase&lt;/a&gt; and &lt;a href="https://www.cristina-padilla.com/gitrebaseinteractive.html"&gt;git rebase interactive&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--u31gUypO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5mo8dng82pjlncm8jynm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--u31gUypO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5mo8dng82pjlncm8jynm.png" alt="Fourth week at the Collab Lab" width="711" height="527"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Regarding non-coding skills, The Collab Lab was an amazing experience that also helped me grow my &lt;strong&gt;communication skills&lt;/strong&gt;. On the one hand, writing was very important (submit well explained &lt;a href="https://www.cristina-padilla.com/codereview.html"&gt;PRs&lt;/a&gt;, asking the right questions or suggesting code ideas on the &lt;a href="https://www.cristina-padilla.com/codereview.html"&gt;code reviews&lt;/a&gt;, writing understandable commit descriptions, etc.) On the other hand, oral communication was equally important (sharing ideas during &lt;a href="https://www.cristina-padilla.com/pairprogramming.html"&gt;pair programming&lt;/a&gt; sessions, doing weekly demos explaining your code and problem-solving approach, etc.) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--6z81pFVr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/meb4s1mp9rcivyj3fe2p.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--6z81pFVr--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/meb4s1mp9rcivyj3fe2p.png" alt="Fifth week at the Collab Lab" width="711" height="472"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What I found great of the whole experience was &lt;strong&gt;the combination of technical and soft skills&lt;/strong&gt;. In both situations I often felt challenged and had to &lt;a href="https://www.cristina-padilla.com/comfortzone.html"&gt;step out of my comfort zone&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;There were **tough tasks, frustrating and self-doubting moments **where my collabies and I felt we wouldn't manage to find a solution but this is always part of the learning path. Instead of panicking, taking breaks and not being afraid of asking for help were very useful to beat &lt;a href="https://www.cristina-padilla.com/imposter.html"&gt;imposter syndrome&lt;/a&gt;. Our mentors were a big support in this sense. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xZlgyJwR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/34d2qtynec57xapfz5t3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xZlgyJwR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/34d2qtynec57xapfz5t3.png" alt="Sixth week at the Collab Lab" width="711" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What would The Collab Lab be without its amazing mentors? They were not only our 8 weeks support, but they also shared their expertise with very insightful &lt;strong&gt;learning modules&lt;/strong&gt; (about technical writing, &lt;a href="https://www.cristina-padilla.com/accessibility.html"&gt;accessibility&lt;/a&gt;, pair programming, code reviews, devs communication, etc.) and &lt;strong&gt;retrospectives&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--e0YMd-0y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjcsv43ghqvejk14tlax.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--e0YMd-0y--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bjcsv43ghqvejk14tlax.png" alt="Seventh week at the Collab Lab" width="711" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Retrospectives were a very important team exercise, which consisted of reviewing performance of the previous weeks. This allowed us not only to share feedback on how to improve the collaboration workflow but also to praise the whole team. For example, in the beginning pairing sessions worked quite well although there was still room for improvement (deliver a task faster, ask questions earlier, write better PRs, solve merging conflicts, etc.).&lt;/p&gt;

&lt;p&gt;Nevertheless, every feedback was a new opportunity to learn. For example, there was one occasion during the last two weeks, where everybody was a bit tired and sick, so I decided to jump in and prepare a Wireframe proposing some design ideas to make the whole process a bit faster and easier. I also split the design issue into smaller and more digestible issues so that we could split the tasks between us. This helped finish the project faster.&lt;/p&gt;

&lt;p&gt;After 8 weeks, my team and I built the amazing &lt;a href="https://tcl-49-smart-shopping-list.web.app/"&gt;Shoppr. app&lt;/a&gt; and wrote a recap about the work process and our experiences. Check it out &lt;a href="https://dev.to/the-collab-lab/the-collab-lab-tcl-49-recap-429d"&gt;here&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--D0NsVsOo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6n68zgixu0tisx5qtdj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--D0NsVsOo--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/o6n68zgixu0tisx5qtdj.png" alt="Last week at the Collab Lab" width="711" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Next steps: The Career Lab
&lt;/h2&gt;

&lt;p&gt;The project was over so what's next? The Collab Lab also offers an optional 2 week program that helps rock the interview process. I decided to participate and had the opportunity to: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;get great tips to update &lt;a href="https://www.linkedin.com/in/cristina-padilla-plasencia/"&gt;my Linkedin profile&lt;/a&gt; and get it reviewed by a mentor.&lt;/li&gt;
&lt;li&gt;assist to a Q&amp;amp;A session with a technical recruiter.&lt;/li&gt;
&lt;li&gt;watch two mentors practising a team fit and a technical interview.&lt;/li&gt;
&lt;li&gt;work on a take-home-assignment and present it at a technical mock interview.&lt;/li&gt;
&lt;li&gt;practise a job fit mock interview.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After this amazing experience and as a self-taught developer, I can only recommend anyone to participate in The Collab Lab or any similar group project. Transitioning into a new career is tough and when you do it alone, it can be very scary. Learning to code can be a more gratifying, fun and less frustrating experience when you have others alongside you. The Collab Lab can also help you find out what you are good at or you like the most (frontend development, accessibility, technical writing, UX-UI design, project management, etc.) So what are you waiting for? &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Accessibility: what, why and how?</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Wed, 01 Mar 2023 07:57:21 +0000</pubDate>
      <link>https://dev.to/crispitipina/accessibility-what-why-and-how-2cih</link>
      <guid>https://dev.to/crispitipina/accessibility-what-why-and-how-2cih</guid>
      <description>&lt;p&gt;If you are learning to code, you will come up against the concept of accessibility at some point, which is very important to take into consideration when building your World Wide Web project.&lt;/p&gt;

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

&lt;p&gt;Accessibility is a crucial task (specially for designers and developers), who need to make sure that everybody can access sites information and functionality equally.&lt;/p&gt;

&lt;p&gt;You will often find accessibility written as the acronym &lt;strong&gt;a11y&lt;/strong&gt;. The number 11 simply represents the letter count between a and y. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5_pxcqla--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j10o91zqdmw6k81s5ulr.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5_pxcqla--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/j10o91zqdmw6k81s5ulr.png" alt="a11y image explanation" width="407" height="87"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Why?
&lt;/h2&gt;

&lt;p&gt;Have you ever thought about how people with physical disabilities, situational disabilities and socioeconomic restrictions on bandwidth and speed access websites? By using assistive technologies like screen readers, screen magnifiers, speech input, assistive keyboards and braille displays. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--GNdAL9Tu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cd8ag4qzfpyjhwomse98.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--GNdAL9Tu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/cd8ag4qzfpyjhwomse98.png" alt="Assistive technologies" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Let's have a look at some facts about how internet behaviors are changing overtime and how important accessibility becomes in this matter:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;a href="https://www.statista.com/topics/1145/internet-usage-worldwide/#topicOverview"&gt;Two thirds&lt;/a&gt; of the global population are internet users&lt;/strong&gt;. China, India and the US are the countries with the largest digital population.&lt;/li&gt;
&lt;li&gt;Around &lt;a href="https://www.statista.com/statistics/368609/us-online-access-householder-disability-status/"&gt;60% of the US population with disabilities&lt;/a&gt; live in a household with internet access.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://webaim.org/projects/million/"&gt;WebAIM&lt;/a&gt; conducted an accessibility evaluation of the top 1.000.000 websites in 2022 and detected around &lt;strong&gt;51 million accessibility errors&lt;/strong&gt;. An average of 50.8 errors per home page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--49lbPQu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3n81ce0bb5u5wrj6y8ix.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--49lbPQu2--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3n81ce0bb5u5wrj6y8ix.png" alt="Accessibility issues graph" width="568" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  How?
&lt;/h2&gt;

&lt;p&gt;What can we do to make the World Wide Web more accessible to everyone? We can adapt our websites according to the &lt;a href="https://www.w3.org/TR/WCAG20/"&gt;accessibility guidelines maintained by W3C&lt;/a&gt;. The accessibility rules are called &lt;a href="https://www.w3.org/TR/html-aria/#allowed-aria-roles-states-and-properties"&gt;ARIA&lt;/a&gt; (Accessible Rich Internet Applications), which collect the main practices. For example, some of them are:&lt;/p&gt;

&lt;p&gt;👀 Use &lt;a href="https://www.w3schools.com/html/html5_semantic_elements.asp"&gt;semantic HTML elements&lt;/a&gt; (&lt;strong&gt;&lt;em&gt;header, article, section, footer&lt;/em&gt;&lt;/strong&gt;, etc.), which offer more context and have a more specific meaning about the tags content, unlike non semantic HTML elements (div, span, etc.)&lt;/p&gt;

&lt;p&gt;🖼️ Include alt attributes on the image tags: &lt;em&gt;img src=”#” &lt;strong&gt;alt&lt;/strong&gt;=”The Guernica painting”&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;🧑‍🎨 Use &lt;a href="https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA"&gt;ARIA attributes&lt;/a&gt;, if necessary, which provide more context about a website's content: &lt;strong&gt;aria-label&lt;/strong&gt;=”Artist”&amp;gt;Pablo Picasso.&lt;/p&gt;

&lt;p&gt;🎨 Use sufficient &lt;a href="https://contrastchecker.com/"&gt;color contrast&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;⚙️ Don't use only color to signify state, as it is very hard to imagine for people who suffer from a color vision deficiency.&lt;/p&gt;

&lt;p&gt;⌨️ Make your website's content reachable via keyboard.&lt;/p&gt;

&lt;p&gt;Aren't you sure if your web content is accessible? Check these &lt;a href="https://www.w3.org/WAI/ER/tools/"&gt;online tools &lt;/a&gt;to evaluate if your website meets accessibility guidelines. &lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>programming</category>
      <category>a11y</category>
    </item>
    <item>
      <title>How to get the most out of a code review</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Wed, 15 Feb 2023 11:04:43 +0000</pubDate>
      <link>https://dev.to/crispitipina/how-to-get-the-most-out-of-a-code-review-nmj</link>
      <guid>https://dev.to/crispitipina/how-to-get-the-most-out-of-a-code-review-nmj</guid>
      <description>&lt;p&gt;During my time as a self-taught developer, one of the things that I always missed was &lt;strong&gt;interaction&lt;/strong&gt;: someone I could discuss certain coding doubts with and someone who could give me feedback about my projects. My learning journey started to move much faster when I decided to get a mentor and participate at &lt;a href="https://dev.to/the-collab-lab/the-collab-lab-tcl-49-recap-429d"&gt;The Collab Lab&lt;/a&gt;, where I built an app in a team for 8 weeks.&lt;/p&gt;

&lt;p&gt;This was my first coding experience collaborating with other developers in the same project and one of the things that helped me improve my coding and communication skills was not only &lt;a href="https://www.cristina-padilla.com/pairprogramming.html"&gt;pair programming&lt;/a&gt; but also doing &lt;strong&gt;code reviews&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;We were a team of 4 developers and 3 mentors. Each week, 2 developers would pair to work on a task. By the end of the week the goal was not only having the task solved but also reviewing our colleague’s code.&lt;/p&gt;

&lt;p&gt;We would start analyzing the task individually and doing some pair programming sessions. Once the task was solved, we would write a &lt;strong&gt;PR (Pull Request)&lt;/strong&gt; with the following information: &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Description: what kind of issue did we solve? What was the goal?&lt;/li&gt;
&lt;li&gt;Link to the related issue&lt;/li&gt;
&lt;li&gt;Acceptance criteria: main pain points to be solved&lt;/li&gt;
&lt;li&gt;Type of changes: is this a bug fix, a new feature, etc.?&lt;/li&gt;
&lt;li&gt;A before and after app preview or a short video showing the new functionality&lt;/li&gt;
&lt;li&gt;A link to the app so that others can test it&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--dWNXdr3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/3nfv0k610l6gsgbitqjt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--dWNXdr3A--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/3nfv0k610l6gsgbitqjt.png" alt="Pull request example" width="834" height="617"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;See a complete PR example &lt;a href="https://www.cristina-padilla.com/codereview.html"&gt;here&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;After that, our task would be reviewed by the other team and we would also start reviewing their task. The whole process would look like this: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Ik8WbK6f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/z5x74k41uyj30yw99d3k.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Ik8WbK6f--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/z5x74k41uyj30yw99d3k.png" alt="Team code process" width="880" height="226"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What is a code review?
&lt;/h2&gt;

&lt;p&gt;It is an &lt;strong&gt;open conversation&lt;/strong&gt; where everyone has the chance not only to &lt;strong&gt;share their knowledge&lt;/strong&gt; but also to &lt;strong&gt;learn from each other&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;A code review is also about &lt;strong&gt;collaboration: sharing your work and asking questions&lt;/strong&gt;. It will not only &lt;strong&gt;help you become a better developer&lt;/strong&gt;, but also &lt;strong&gt;help your team&lt;/strong&gt; decentralize knowledge, share responsibility and improve code base quality.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get the most out of a code review?
&lt;/h2&gt;

&lt;p&gt;✨ Be kind and empathetic. It is not about criticizing other people's work but helping them improve their code.&lt;br&gt;
✨ Ask questions. It is also a chance for you to learn a different problem solving approach.&lt;br&gt;
✨ Suggest other solutions that can help writing cleaner or more quality code.&lt;br&gt;
✨ Don't focus too much on stylistic changes like “you missed a semicolon or a space here”. There are tools like Prettier for that.&lt;br&gt;
✨ Test the feature locally.&lt;br&gt;
✨ Praise your colleagues!&lt;/p&gt;

&lt;p&gt;👀 Don't forget that everyone made an effort to solve the issue (even if the solution is not completely perfect), that you are part of the same team and are working together towards the same goal! 🚀 &lt;/p&gt;

</description>
      <category>beginners</category>
      <category>programming</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>How pair programming can change your coding experience</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Tue, 07 Feb 2023 09:49:55 +0000</pubDate>
      <link>https://dev.to/crispitipina/how-pair-programming-can-change-your-coding-experience-jnh</link>
      <guid>https://dev.to/crispitipina/how-pair-programming-can-change-your-coding-experience-jnh</guid>
      <description>&lt;p&gt;As a self-taught developer, I have mostly spent my time doing online courses, following tutorials, coding and building projects alone. I hardly got any feedback to know if I was learning the right technologies or writing clean code.&lt;/p&gt;

&lt;p&gt;This situation changed when I joined &lt;a href="https://dev.to/the-collab-lab/the-collab-lab-tcl-49-recap-429d"&gt;The Collab Lab&lt;/a&gt;. It was my closest experience to a “real developer job”, as I had the chance to work in a team building an app.&lt;/p&gt;

&lt;p&gt;During that time I had several pair programming sessions with 3 different colleagues. So every week two of us would sync remotely (as each of us was located in a different country) to have a discussion about the issue we had to solve. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqmp0t71m014f1csuogs.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flqmp0t71m014f1csuogs.gif" alt="Remote call gif" width="480" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I like preparing pair programming sessions in advance so the way I proceed was reading the issue in detail, doing some research and noting down some potential solutions to be discussed with my colleague.&lt;/p&gt;

&lt;p&gt;How did we do pair programming remotely? We hopped on a video screen share call, where one of us was acting as the driver and the other one as the navigator. What does this exactly mean and what does each of them do? &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1o7n7mxt2b1ic6br8df.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp1o7n7mxt2b1ic6br8df.png" alt="Driver &amp;amp; navigator image" width="743" height="475"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;driver&lt;/strong&gt; takes full control of the keyboard and is responsible for writing the necessary code to complete the task. This person will also speak out loud the thinking process behind the code.&lt;/p&gt;

&lt;p&gt;The &lt;strong&gt;navigator&lt;/strong&gt; pays attention to the driver's code and offers guidance, suggests new ideas and finds answers to the questions that might be raised during the process. &lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The driver has a low-level code thinking approach, while the navigator has a bird-eye view on the code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;During pair programming sessions, developers can swap roles so that each of them has the chance to experience both perspectives (two modes of thinking) and learn.&lt;/p&gt;

&lt;p&gt;What did I learn from the whole experience? &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Be open and eager to learn.&lt;/li&gt;
&lt;li&gt;Embrace doubt and possibility.&lt;/li&gt;
&lt;li&gt;See another person's problem solving approach opens up your mind/ideas.&lt;/li&gt;
&lt;li&gt;Don't be afraid of sharing your ideas or asking questions.&lt;/li&gt;
&lt;li&gt;Communication is key to make your code or ideas understandable.&lt;/li&gt;
&lt;li&gt;Take breaks when both get stuck.&lt;/li&gt;
&lt;li&gt;It is not about teaching nor mentoring, but looking for a solution and growing together.&lt;/li&gt;
&lt;li&gt;The driver (seek agreement before proceeding) and navigator (asking, not telling) approach.&lt;/li&gt;
&lt;li&gt;Collaboration, team work.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Pair programming has definitely been a much more efficient, enriching and fun experience than all hours I spent coding by myself. If you are a codenewbie, I can only recommend you start with pair programming sessions as soon as possible to learn faster. &lt;/p&gt;

</description>
      <category>devto</category>
      <category>announcement</category>
      <category>web3</category>
      <category>blockchain</category>
    </item>
    <item>
      <title>What is the Local Storage for?</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Tue, 31 Jan 2023 09:54:29 +0000</pubDate>
      <link>https://dev.to/crispitipina/what-is-the-local-storage-for-1fpp</link>
      <guid>https://dev.to/crispitipina/what-is-the-local-storage-for-1fpp</guid>
      <description>&lt;p&gt;The first time I heard about &lt;strong&gt;local storage&lt;/strong&gt; was when I joined &lt;a href="https://dev.to/the-collab-lab/the-collab-lab-tcl-49-recap-429d"&gt;The Collab Lab&lt;/a&gt; to build an app with other developers. We created “Shoppr.”, a Smart Shopping List app, that learns users' buying habits and helps them remember what they are likely to need on their next trip to the store. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--c6H3Cuks--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/32o8qmd6o0lgxf7rka07.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--c6H3Cuks--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/32o8qmd6o0lgxf7rka07.png" alt="Shoppr. app preview" width="880" height="587"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Users can create a shopping list and start entering items. Each time users buy an item, they can mark it as purchased. The app will understand the intervals at which they buy different items over time.&lt;/p&gt;

&lt;p&gt;Try it out &lt;a href="https://tcl-49-smart-shopping-list.web.app/"&gt;here&lt;/a&gt;! &lt;/p&gt;

&lt;h2&gt;
  
  
  What does local storage have to do with Shoppr.?
&lt;/h2&gt;

&lt;p&gt;The app preview offers 2 possibilities: users can create a new shopping list or enter a 3 word token to access an existing shopping list. Let's say I am a new user and don't have a token, so I will need to create a new list. What happens when I click on the “create list” button? I get redirected to the “Add Item” screen. But what happens behind the scenes?&lt;/p&gt;

&lt;p&gt;One of the technologies involved to create the Shoppr. app is &lt;strong&gt;Firebase&lt;/strong&gt;, a Google platform that provides different services like Cloud Firestore, which helps storing and synching real-time data (in this case, stores tokens and list items)&lt;/p&gt;

&lt;p&gt;As soon as I want to create a new list in the Shoppr. app, I automatically get a new token but, where is it? There are 2 ways to find the token: one of them is checking the Firestore Database in Firebase and another one is checking the local storage in the browser dev tools under &lt;strong&gt;Application &amp;gt; Local storage&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--P4yl4fCA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/7fwuz186dsi09gzupiui.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--P4yl4fCA--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/7fwuz186dsi09gzupiui.gif" alt="Local Storage overview" width="600" height="317"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is happening here? As you can see, &lt;strong&gt;the browser provides something called local storage, which saves data as key-value pairs&lt;/strong&gt;, in this case my list's 3 word token. These key-value pairs are an object, which we can inspect on the console by typing localStorage. This will display an object with a key (tcl-shopping-list-token) and a value (my token) &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--xIN7Dsr3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/yj1d50mrnlwrh0tgv1fm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--xIN7Dsr3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/yj1d50mrnlwrh0tgv1fm.png" alt="Local storage object" width="557" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Unlike session storage, &lt;strong&gt;local storage data doesn't expire&lt;/strong&gt;. If I close the browser, the local storage will continue storing data, meaning, my shopping list will remain open.&lt;/p&gt;

&lt;p&gt;I learnt a lot by building the Shoppr. app. As you see, not everything was about writing code. In order to understand the whole context, it is good to dig into some behind the scenes concepts 😉&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--8LvqiMKj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/vlxpwdr3h1549um0gwpv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--8LvqiMKj--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/vlxpwdr3h1549um0gwpv.png" alt="Learning by doing quote" width="880" height="495"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>beginners</category>
      <category>database</category>
      <category>browser</category>
    </item>
    <item>
      <title>Git rebase interactive: the story of a clean repo history</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Fri, 06 Jan 2023 16:24:09 +0000</pubDate>
      <link>https://dev.to/crispitipina/git-rebase-interactive-the-story-of-a-clean-repo-history-16ag</link>
      <guid>https://dev.to/crispitipina/git-rebase-interactive-the-story-of-a-clean-repo-history-16ag</guid>
      <description>&lt;p&gt;If you have ever worked on a team project, you probably have some experience with Git, creating branches and making commits.&lt;/p&gt;

&lt;p&gt;Working on a branch is a safe way to make changes on the code without affecting the main branch. But what about commits that you regret about?&lt;/p&gt;

&lt;p&gt;There would be 2 options to solve that:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Undo the changes you made and pushing them back to your branch.&lt;/li&gt;
&lt;li&gt;Using git rebase interactive commit.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In a previous post, I talked about a scary command: &lt;a href="https://www.cristina-padilla.com/gitrebase.html" rel="noopener noreferrer"&gt;git rebase&lt;/a&gt;. Scary just because it was new but also very useful. I can say that git rebase interactive is also very useful as it helps keeping a clean repo history.&lt;/p&gt;

&lt;p&gt;Let's say that I committed some changes, kept working on a project and now I realized that the changes I did some commits ago were not really necessary. Instead of just undoing the code changes (they would still be visible on my repo's history), I could simply remove that commit as it had never happened. How to do that?&lt;/p&gt;

&lt;p&gt;Let's first check my list of commits with the following command:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;git log --oneline&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzokis2onbpve4nqsmc64.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzokis2onbpve4nqsmc64.png" alt="Commit ids view" width="362" height="179"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;All these commits have an ID, a description and are displayed in a bottom-top order. Let's say I am not very proud of the commit with the 07a1629 ID (render list). How can I remove it? I need to select 1 commit before my “failed commit”:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;git rebase -i 9e6a8ea&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This way I will get a shorter list of commits including the one I want to remove. Now I only need to select the desired commit by placing my cursor on it: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz73p8ey3r8z2u79qf8c.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcz73p8ey3r8z2u79qf8c.png" alt="select commit view" width="427" height="174"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;By pressing “d” twice the commit will disappear (this is specific for Vim as text editor): &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh1jnuh9tcyxgpe3k7vd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fuh1jnuh9tcyxgpe3k7vd.png" alt="Commit removed view" width="427" height="160"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;If by any chance you need to stop git rebase, you can type:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;git rebase --abort&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Now we only need to save changes with :wqa and push them to our branch with:&lt;/p&gt;

&lt;p&gt;&lt;em&gt;git push origin mybranchname --force-with-lease&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;This command won't overwrite my work on the remote branch. &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Git rebase: the scary command</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Fri, 23 Dec 2022 11:04:20 +0000</pubDate>
      <link>https://dev.to/crispitipina/git-rebase-the-scary-command-35kh</link>
      <guid>https://dev.to/crispitipina/git-rebase-the-scary-command-35kh</guid>
      <description>&lt;p&gt;&lt;em&gt;git init, git branch mybranch, git checkout mybranch, git add, git commit, git push, git pull, git merge&lt;/em&gt;… These are the &lt;a href="https://www.cristina-padilla.com/gitcommands.html" rel="noopener noreferrer"&gt;commands&lt;/a&gt; I use the most and I honestly thought they would be enough (at least while working for the first time in a collaboration project) But all of a sudden reality hit me (in a good sense) and I had to face it: I couldn't run away from git rebase.&lt;/p&gt;

&lt;p&gt;Although it might sound scary because it was an unknown commit for me and I didn't really understand the difference between merge and rebase, practice made me finally learn and understand why it is worth using it. &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%2Fmedia.tenor.com%2F4puBOghdIHQAAAAC%2Ffrench-bulldog-scared.gif" 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%2Fmedia.tenor.com%2F4puBOghdIHQAAAAC%2Ffrench-bulldog-scared.gif" alt="Scared cat"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Git rebase&lt;/strong&gt; integrates changes from one branch onto another. It is basically like cutting your branch and moving it to the very last commit in main/master. It is an alternative to git merge because it offers a cleaner repo history.&lt;/p&gt;

&lt;p&gt;Let's have a look at the following case scenario:&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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2F0ojv5d2j211spskooccp.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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2F0ojv5d2j211spskooccp.png" alt="Branches example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I have a new repository that only contains a README file so far. I want to start working on it so I create a branch: &lt;em&gt;git checkout -b mybranch&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;I have switched from &lt;em&gt;main&lt;/em&gt; to &lt;em&gt;mybranch&lt;/em&gt; and want to start creating files but suddenly another colleague pushes some changes into &lt;em&gt;main&lt;/em&gt; (an index.html file) If I pull changes from &lt;em&gt;mybranch&lt;/em&gt;, Git will inform me that &lt;em&gt;mybranch&lt;/em&gt; is “already up to date”: &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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2F3hv6siyesp5cpap9x0pa.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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2F3hv6siyesp5cpap9x0pa.png" alt="Branch up to date Terminal example"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;But of course, if I switch to &lt;em&gt;main&lt;/em&gt; and pull the changes, I will see the html file there: &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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2Fmy5zecyazqombnn3yv1k.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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2Fmy5zecyazqombnn3yv1k.png" alt="Main branch Terminal overview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What is happening here? I don't have the latest changes from &lt;em&gt;main&lt;/em&gt; because &lt;em&gt;mybranch&lt;/em&gt; is behind &lt;em&gt;main&lt;/em&gt;. How can I fix this? The scary command is everything I need. I only need to type &lt;em&gt;git rebase main&lt;/em&gt; and I will automatically move &lt;em&gt;mybranch&lt;/em&gt; on top of &lt;em&gt;main&lt;/em&gt; getting the latest updates and voilá: I can see now the index.html file on &lt;em&gt;mybranch&lt;/em&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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2Fr55jk87nz3xz1n02156k.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%2Fcommunity.codenewbie.org%2Fremoteimages%2Fuploads%2Farticles%2Fr55jk87nz3xz1n02156k.png" alt="Git rebase command"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;One lesson learnt, one less problem. What about you? Do you dare putting git rebase into practise? &lt;/p&gt;

</description>
      <category>git</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>The Collab Lab TCL-49 Recap</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Thu, 15 Dec 2022 15:00:22 +0000</pubDate>
      <link>https://dev.to/the-collab-lab/the-collab-lab-tcl-49-recap-429d</link>
      <guid>https://dev.to/the-collab-lab/the-collab-lab-tcl-49-recap-429d</guid>
      <description>&lt;h2&gt;
  
  
  About the Collab Lab
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://the-collab-lab.codes/" rel="noopener noreferrer"&gt;The Collab Lab&lt;/a&gt; is an 8-week coding program for early career developers who want to work on real-world projects with guidance from experienced mentors filled with lots of pair programming, office hours, retrospectives, and code reviews. At the end of every cohort, there is an optional 2-week career lab session for all Collabies to prepare for interviews.&lt;/p&gt;

&lt;p&gt;This article recaps the Collab Lab 2022 Q4 cohort for &lt;a href="https://the-collab-lab.codes/developers/" rel="noopener noreferrer"&gt;group tcl-49&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxdaqndq69g6fw85wup9.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frxdaqndq69g6fw85wup9.png" alt="TCL-49 collabies &amp;amp; mentors"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Contributors:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/cristina-padilla-plasencia/" rel="noopener noreferrer"&gt;Cristina Padilla&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/terieyenike/" rel="noopener noreferrer"&gt;Teri Eyenike&lt;/a&gt;&lt;br&gt;
&lt;a href="https://github.com/thatgirldorian" rel="noopener noreferrer"&gt;Debbie Otuagomah&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/victoria-emoka-75a341242/" rel="noopener noreferrer"&gt;Victoria Emoka&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Mentors:
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.linkedin.com/in/faysvas/" rel="noopener noreferrer"&gt;Golfo Vasiliou&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/pmbanugo/" rel="noopener noreferrer"&gt;Peter Mbanugo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://www.linkedin.com/in/patrick-niyogitare-76b469184/" rel="noopener noreferrer"&gt;Patrick Niyogitare&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Project goal &amp;amp; work process
&lt;/h2&gt;

&lt;p&gt;During 8 weeks, we worked on building a smart shopping list that learns about the user’s buying habits and helps them remember what to buy next. To create our “Shoppr” app, we used the following technologies: ReactJS, JavaScript, Firebase, Tailwind CSS, and Git. We didn’t only learn and improve our technical skills but also soft skills like communication, (remote) teamwork, and COLLABoration. Additionally, for project management and tracking our work, we used GitHub projects.&lt;/p&gt;

&lt;p&gt;Every week we were paired with another collabie to work on an issue, and the pair-programming experience began. Different time zones can sometimes make teamwork a bit tricky, but we organized our schedules and synced to work together on the assigned issue. That way, we could look at the code from different perspectives and learn from our colleagues' problem-solving approaches. Luckily, we also had a weekly session with one of our mentors for potential questions/doubts. &lt;/p&gt;

&lt;p&gt;By the end of the week, we didn’t only have our task solved and described on a PR but also had the chance to review our colleagues' code, which was very useful in getting an understanding of how to implement a different feature. The last step was meeting all together (collabies and mentors) to demo our tasks, discuss challenges and successes, suggest improvements during a retrospective, and learn something new with the great learning modules our mentors presented.  For example, we learned how to make our app accessible.&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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73lmgtikk6yvamonbhhb.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F73lmgtikk6yvamonbhhb.png" alt="Shoppr. app preview"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Test our app &lt;a href="https://tcl-49-smart-shopping-list.web.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;! &lt;/p&gt;

&lt;h2&gt;
  
  
  Our Collab Lab experience
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;My experience at the Collab Lab was highly positive. Before joining, my expectation was to get first contact with how to work on a real project with other developers. Still, I couldn’t have imagined how many other things I would learn on the way: not only technical aspects but also communication, organization, team collaboration, and of course, getting to know amazing people. I am so grateful for this opportunity!&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Cristina&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Going through The Collab Lab has been an incredible journey. From showing you how to do thorough code reviews to collaborating with brilliant developers and helping you pick up solid best practices, the program has it all. Aside from the technical nitty-gritty, I also learned how to communicate with members of a remote team in a helpful way that keeps everyone in sync and signals varying degrees of capacity. I learned how to work with design constraints and incorporate great feedback into a technical project. My teammates all taught me something new every week. Our mentors were exceptional in how they guided us and were generous with their knowledge. If you’re an early-career developer looking for real-world experience in a mistake-friendly environment, TCL is your best bet!&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Debbie&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;The opportunity to work with fellow developers on a real-world project is gratifying, especially the code reviews and pair programming session with your teammates makes it one of the best ways to see how things work in a modern workplace. The Collab Lab experience will make you more proficient as you get to improve your communication as well as your technical skills. The best recommendation for any early career developer is to join TCL and become a true Collabie&lt;/em&gt;&lt;br&gt;
&lt;strong&gt;Teri&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Written with ❤️ by &lt;a href="https://www.linkedin.com/in/terieyenike/" rel="noopener noreferrer"&gt;Teri Eyenike&lt;/a&gt;, &lt;a href="https://github.com/thatgirldorian" rel="noopener noreferrer"&gt;Debbie Otuagomah&lt;/a&gt; &amp;amp; &lt;a href="https://www.linkedin.com/in/cristina-padilla-plasencia/" rel="noopener noreferrer"&gt;Cristina Padilla&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>react</category>
      <category>career</category>
      <category>programming</category>
    </item>
    <item>
      <title>DOM Manipulation: part II</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Wed, 30 Nov 2022 19:18:43 +0000</pubDate>
      <link>https://dev.to/crispitipina/dom-manipulation-part-ii-4pka</link>
      <guid>https://dev.to/crispitipina/dom-manipulation-part-ii-4pka</guid>
      <description>&lt;p&gt;In a previous article, we talked about DOM selectors, styling, text modifiers and events. Let's focus now on the following DOM concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM create &amp;amp; remove elements&lt;/li&gt;
&lt;li&gt;DOM classes&lt;/li&gt;
&lt;li&gt;DOM attributes&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DOM create &amp;amp; remove elements
&lt;/h2&gt;

&lt;p&gt;If we want to add certain elements to our app or website with JavaScript, we can use the following methods:&lt;/p&gt;

&lt;p&gt;document.&lt;strong&gt;createElement&lt;/strong&gt;(name of the tag) → creates an HTML element: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fn4mvpl5kw82b0idcxu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2fn4mvpl5kw82b0idcxu.png" alt="createElement method" width="800" height="229"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;document.&lt;strong&gt;appendChild&lt;/strong&gt;() or element.&lt;strong&gt;append&lt;/strong&gt;() → adds an HTML element where we want: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F673ll7nja0h1fr92rzkf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F673ll7nja0h1fr92rzkf.png" alt="appendChild method" width="800" height="354"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;document.&lt;strong&gt;insertAdjacentElement&lt;/strong&gt;(position, element) → adds an HTML element before or after another element, in the position we indicate (afterbegin or beforeend) and using template literals. It is commonly used with lists: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3iadnu81bxvkd880i3i.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fi3iadnu81bxvkd880i3i.png" alt="insertAdjacentElement method" width="800" height="396"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;element.&lt;strong&gt;remove&lt;/strong&gt;() → removes an element from the DOM: &lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/pcrispitipina/embed/RwMyrzx?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;h2&gt;
  
  
  DOM classes
&lt;/h2&gt;

&lt;p&gt;JavaScript also allows us to play with classes to show or hide an element in the DOM. The basic methods to add and remove a class or check if an element has a class are:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;element.&lt;strong&gt;classList.add&lt;/strong&gt;(“className”)&lt;/li&gt;
&lt;li&gt;element.&lt;strong&gt;classList.remove&lt;/strong&gt;(“className”)&lt;/li&gt;
&lt;li&gt;element.&lt;strong&gt;classList.contains&lt;/strong&gt;(“className”) → returns a boolean (true or false) whether the class exists or not.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Let's have a look at an easy example and see how to play with classes with JS: &lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/pcrispitipina/embed/NWYBKom?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;We create the class in CSS with the styling we would like to apply to an HTML element and afterwards we simply add the class to the desired element with element.classList.add(“className”)&lt;/p&gt;

&lt;p&gt;Another example to reveal and hide content using classes:&lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/pcrispitipina/embed/eYMjyBM?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Very similar to the previous concepts is element.&lt;strong&gt;classList.toggle&lt;/strong&gt;("className"), which adds or removes a class depending on whether the class already exists or not. Have a look at the following simple example: &lt;/p&gt;

&lt;p&gt;&lt;iframe height="600" src="https://codepen.io/pcrispitipina/embed/qBoyOMy?height=600&amp;amp;default-tab=result&amp;amp;embed-version=2"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;We can also replace a class name with a new one with: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnwdea217fd2iohtpk78.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnnwdea217fd2iohtpk78.png" alt="remove classList" width="800" height="279"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DOM attributes
&lt;/h2&gt;

&lt;p&gt;HTML elements can have attributes like class, id or disabled. In order to manipulate them we can use the following methods:&lt;/p&gt;

&lt;p&gt;element.&lt;strong&gt;getAttribute&lt;/strong&gt;(key) → takes an attribute's value: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvihj877tqfr06zrdjn9h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvihj877tqfr06zrdjn9h.png" alt="getAttribute example" width="800" height="368"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;element.&lt;strong&gt;removeAttribute&lt;/strong&gt;(key) → removes an attribute's value. According to the previous example: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgfthp2vdagt4k98rlhdt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgfthp2vdagt4k98rlhdt.png" alt="removeAttribute example" width="800" height="250"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;element.&lt;strong&gt;setAttribute&lt;/strong&gt;(key, value) → adds an attribute and gives it a name or value: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bl43rqrhttzh27dokk0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6bl43rqrhttzh27dokk0.png" alt="setAttribute example" width="800" height="327"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;element.&lt;strong&gt;hasAttribute&lt;/strong&gt;(key) → checks if an attribute exists and returns a boolean: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ee26glku8wvllm80tuz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2ee26glku8wvllm80tuz.png" alt="hasAttribute example" width="800" height="255"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Put in practise all DOM concepts that you have learnt with the following fun projects from Freecodecamp! &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpln0s9sbbwelzk472j1e.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpln0s9sbbwelzk472j1e.png" alt="DOM challenges" width="800" height="290"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Find all challenges &lt;a href="https://dom-manipulation-challenges.netlify.app/" rel="noopener noreferrer"&gt;here&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>neovim</category>
      <category>vscode</category>
      <category>vue</category>
    </item>
    <item>
      <title>DOM Manipulation: part I</title>
      <dc:creator>🧩【ℂ𝕣𝕚𝕤𝕥𝕚𝕟𝕒】💡</dc:creator>
      <pubDate>Wed, 02 Nov 2022 19:21:43 +0000</pubDate>
      <link>https://dev.to/crispitipina/dom-manipulation-part-i-33f2</link>
      <guid>https://dev.to/crispitipina/dom-manipulation-part-i-33f2</guid>
      <description>&lt;p&gt;DOM manipulation is one of the fun parts of JavaScript. If you have heard about the DOM but are unsure what it is, keep reading. I promise practical and fun examples! I will go through the following concepts:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DOM selectors&lt;/li&gt;
&lt;li&gt;DOM styling&lt;/li&gt;
&lt;li&gt;DOM modify text&lt;/li&gt;
&lt;li&gt;DOM events
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can think of the DOM (Document Object Model) as a &lt;strong&gt;tree&lt;/strong&gt; that represents the structure of an HTML document. Why as a tree? Because an HTML page contains different tags organized by a certain hierarchy, as you can see below: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--LL2aTgMR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/5hv5hqfrjt8zdzhd32p0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--LL2aTgMR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/5hv5hqfrjt8zdzhd32p0.png" alt="DOM tree example" width="880" height="847"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The DOM tree contains items called nodes, which can be:  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Element Node&lt;/strong&gt; → node that has an element&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Text Node&lt;/strong&gt; → node that has text&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All these nodes are like a big family: there are &lt;strong&gt;parent nodes&lt;/strong&gt; (nodes that have 1 or more children), &lt;strong&gt;sibling nodes&lt;/strong&gt; (nodes that share the same parent node), *&lt;em&gt;child nodes *&lt;/em&gt;(nodes that have parent nodes) or *&lt;em&gt;descendent nodes *&lt;/em&gt;(nodes that are nested in the tree).&lt;/p&gt;

&lt;p&gt;In the previous example, the h1, img and ul are siblings, as they are at the same level and have the same parent (div) The li elements are childnodes of ul.&lt;/p&gt;

&lt;p&gt;Thanks to JavaScript &lt;strong&gt;we can manipulate the DOM structure, content and styles&lt;/strong&gt; and have a lot of fun! In order to access the DOM, we can use the variable &lt;strong&gt;document&lt;/strong&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  DOM selectors
&lt;/h2&gt;

&lt;p&gt;There are many different methods to select elements from the DOM like &lt;em&gt;getElementById(), getElementsByClassName()&lt;/em&gt; or &lt;em&gt;getElementsByTagName()&lt;/em&gt;, but let's focus on the most modern ones:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;querySelector()&lt;/strong&gt;, selects only 1 element from the DOM and returns nulls if it doesn’t find any. Below you can see an example of how to select DOM elements per tag, class and id. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--1gy6YAlM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/2vwzr53ziyhc47w23xsd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--1gy6YAlM--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/2vwzr53ziyhc47w23xsd.png" alt="QuerySelector example" width="880" height="579"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;querySelectorAll()&lt;/strong&gt;, selects several elements returning a Nodelist (a collection of DOM elements). &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--tC9KoQjH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/86apj2vi8dfpvprryhjj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--tC9KoQjH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/86apj2vi8dfpvprryhjj.png" alt="QuerySelectorAll example" width="880" height="649"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DOM styling
&lt;/h2&gt;

&lt;p&gt;Once we have the selectors, what can we do with them? We can start with modifying any kind of DOM element, for example its styling by combining the style property and the CSS property (always written in CamelCase: fontSize, backgroundColor, etc.). For example: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--waNoHHjO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/rb2cw0v4d58oszdzcsx2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--waNoHHjO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/rb2cw0v4d58oszdzcsx2.png" alt="Styling manipulation example" width="880" height="507"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In the above example, we would apply a blue background color to the container.&lt;/p&gt;

&lt;h2&gt;
  
  
  DOM modify text
&lt;/h2&gt;

&lt;p&gt;We can also manipulate the existing content in our HTML with the following tricks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;textContent&lt;/strong&gt; → returns all content between the html tags like h1, p, div, etc, considering also the styling. It doesn't work with input, select and textarea. In this case we need to use .value.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;innerText&lt;/strong&gt; → returns visible without considering any styling.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;innerHTML&lt;/strong&gt; → returns the content and the styling tags. Not recommended to use due to security risk (it allows the user to manipulate the JS) It is better to use innerText.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--NQfupJ_M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/kti2w1priub4mif017yf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--NQfupJ_M--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/kti2w1priub4mif017yf.png" alt="Manipulate text content" width="880" height="593"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  DOM events
&lt;/h2&gt;

&lt;p&gt;What happens when a user clicks on a button? If we want anything to happen after the click, we should work with event listeners. This is how we apply an event listener to a button: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--_4RDrgc3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/ejskxn4r5049go9xynsq.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--_4RDrgc3--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/ejskxn4r5049go9xynsq.png" alt="Event listener example" width="880" height="679"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We select the button, apply to it an addEventListener that contains 2 pieces of information: the user’s click and the function or action we want to happen. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Yhf43obG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/bou2s8x7nfsibrvp71uv.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Yhf43obG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/bou2s8x7nfsibrvp71uv.gif" alt="Button click interaction" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;We can also use addEventListener() to execute an action when a user &lt;strong&gt;submits&lt;/strong&gt; a form: the browser takes the values entered by the user and sends them to the backend. This makes the whole website load again. In order to avoid this we can use the method &lt;strong&gt;preventDefault()&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--DFO6PodQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/5oyculbl6yf7q559u3dw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--DFO6PodQ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/5oyculbl6yf7q559u3dw.png" alt="Prevent default example" width="880" height="716"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--536AtyjC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/ec891qcsc7iu19bqkg7q.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--536AtyjC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/ec891qcsc7iu19bqkg7q.gif" alt="Form example" width="640" height="360"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;There is an alternative to addEventListener, which works the same way but it is applied directly on the HTML document: the onclick() event handler.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Zqd1nxXl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/2lisl6omd13zt0x7dosj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Zqd1nxXl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/2lisl6omd13zt0x7dosj.png" alt="Onclick example" width="880" height="628"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Time to practise! Below you can find some projects to go deeper into the previous concepts: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--btMWa_oI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/cbhwzc1ura7k8weqgpc0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--btMWa_oI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://community.codenewbie.org/remoteimages/uploads/articles/cbhwzc1ura7k8weqgpc0.png" alt="Practise projects" width="794" height="293"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://the-magic-ball.netlify.app/"&gt;The magic ball&lt;/a&gt;&lt;br&gt;
&lt;a href="https://pass-message.netlify.app/"&gt;Pass the message&lt;/a&gt;&lt;br&gt;
&lt;a href="https://practical-sinoussi-c6403c.netlify.app/"&gt;A movie sinopsis&lt;/a&gt;&lt;/p&gt;

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