<?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>Forem: Olonts</title>
    <description>The latest articles on Forem by Olonts (@ifetolu5).</description>
    <link>https://forem.com/ifetolu5</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%2F1060427%2Ff7e2c7cc-61c4-4c27-b071-18485121bd9a.jpg</url>
      <title>Forem: Olonts</title>
      <link>https://forem.com/ifetolu5</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/ifetolu5"/>
    <language>en</language>
    <item>
      <title>How to build a horizontal date-picker</title>
      <dc:creator>Olonts</dc:creator>
      <pubDate>Tue, 25 Apr 2023 00:21:35 +0000</pubDate>
      <link>https://forem.com/ifetolu5/how-to-build-a-horizontal-date-picker-4o1k</link>
      <guid>https://forem.com/ifetolu5/how-to-build-a-horizontal-date-picker-4o1k</guid>
      <description>&lt;p&gt;Imagine the challenge of building a horizontal date-picker from scratch as a developer intern. It seemed like an impossible task, with little guidance available online. But with perseverance and creativity, I cracked the code and successfully built a sleek and functional horizontal date picker.&lt;/p&gt;

&lt;p&gt;In this guide, I will share my hard-earned insights and step-by-step approach on how I tackled this daunting project using React and Tailwind CSS. So, fasten your seatbelt and get ready to embark on an exciting journey to create a horizontal date picker that will impress your users.&lt;/p&gt;

&lt;p&gt;Step 1: Create a new React app Open your terminal in VSCode and run the following command to create a new React app using Create React App:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npx create-react-app horizontal-date-picker
horizontal-date-picker
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 2: Install Tailwind CSS Next, we need to install Tailwind CSS, which is a popular CSS framework that we’ll use to style our date picker. Run the following command in your terminal:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;npm install -D tailwindcss
npx tailwindcss init
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Step 3: Configure Tailwind CSS Open the tailwind.config.js file and configure it like this.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/** @type {import('tailwindcss').Config} */
module.exports = {
  content: [
    "./src/**/*.{js,jsx,ts,tsx}",
  ],
  theme: {
    extend: {},
  },
  plugins: [],
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This will create a default configuration file for Tailwind CSS in your app’s root directory.&lt;/p&gt;

&lt;p&gt;Step 4: Import Tailwind CSS into your app To use Tailwind CSS in your React app, you need to import its CSS file. Open the src/index.js file in your app and add the following line at the top:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@tailwind base;
@tailwind components;
@tailwind utilities;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Main Component
&lt;/h2&gt;

&lt;p&gt;Now that we have all the dependencies installed and ready, let’s dive right into the implementation.&lt;/p&gt;

&lt;p&gt;Start by navigating to your ‘src’ folder in your project directory and create a file called ‘Calendar’. Inside this file, we’ll begin building our horizontal date picker.”&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import React, { useLayoutEffect, useState } from 'react'
import styled from "styled-components";
import leftArrowDate from "./assets/left-arrow-date.svg";

function Calendar() {
const [dateList, setDateList] = useState([]);
  const [day, setDay] = useState({});
  const [intervalsLeft, setIntervalsLeft] = useState([]);
  const [intervalsRight, setIntervalsRight] = useState([]);
  const [intervalIdLeft, setIntervalIdLeft] = useState();
  const [intervalIdRight, setIntervalIdRight] = useState();

const toDayName = (n) =&amp;gt; {
    switch (n) {
      case 0:
        return "Monday";
      case 1:
        return "Tuesday";
      case 2:
        return "Wednesday";
      case 3:
        return "Thursday";
      case 4:
        return "Friday";
      case 5:
        return "Saturday";
      case 6:
        return "Saunday";
    }
  };

  const toMonthName = (n) =&amp;gt; {
    switch (n) {
      case 1:
        return "JAN";
      case 2:
        return "FEB";
      case 3:
        return "MAR";
      case 4:
        return "APR";
      case 5:
        return "MAY";
      case 6:
        return "JUN";
      case 7:
        return "JUL";
      case 8:
        return "AUG";
      case 9:
        return "SEP";
      case 10:
        return "OCT";
      case 11:
        return "NOV";
      case 12:
        return "DEC";
    }
  };

 const generateDateList = () =&amp;gt; {
    let date = new Date();
    let newDateList = [];
    for (let i = 0; i &amp;lt; 90; i++) {
      newDateList.push({
        number: date.getDate(),
        day: toDayName(date.getDay()),
        month: date.getMonth() + 1,
        year: date.getFullYear(),
      });
      date.setDate(date.getDate() + 1);
    }
    return newDateList;

 useLayoutEffect(() =&amp;gt; {
    const newDateList = generateDateList();
    setDateList(newDateList);
    setDay(newDateList);
  }, []);
  };

  return (
    &amp;lt;div&amp;gt;

    &amp;lt;/div&amp;gt;
  )
}

export default Calendar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Basically, this is a React component called “Calendar” that generates a list of dates for the next 90 days using the JavaScript “Date” object. It pushes date objects with day, month, year, and day of the week information into an array. The component returns an empty div element and is exported for use in other parts of the application.&lt;/p&gt;

&lt;p&gt;Inside the loop, the function pushes an object into the “newDateList” array. This object contains four properties:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;“number” — which represents the day of the month using the “getDate()” method of the “Date” object.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;“day” — which represents the name of the day of the week using the “getDay()” method of the “Date” object, and passing it to a helper function called “toDayName()” to get the name of the day.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;3.“month” — which represents the current month using the “getMonth()” method of the “Date” object, and adding 1 to it as JavaScript months are zero-indexed.&lt;/p&gt;

&lt;p&gt;4.“year” — which represents the current year using the “getFullYear()” method of the “Date” object.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The useLayoutEffect hook is used to perform an effect after the component is initially rendered and laid out. It generates a new list of dates, updates the state variables dateList and day with the new values, and triggers a re-render of the component. It only runs once during the component's lifecycle due to the empty dependency array [] passed as the second argument.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;6.The component also defines two helper functions toDayName and toMonthName that convert numeric values representing days of the week and months to their corresponding names.&lt;/p&gt;

&lt;h2&gt;
  
  
  Render component
&lt;/h2&gt;

&lt;p&gt;Next, let’s add the following code inside the div element of the 'Calendar' component we created earlier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;&amp;lt;DateContainer id="scroll"&amp;gt;
          {dateList.map((d, index) =&amp;gt; (
            &amp;lt;div
              key={index}
              className="flex flex-col justify-center items-center font-bold"
            &amp;gt;
              &amp;lt;span className="text-[13px] leading-10"&amp;gt;{d.day[0]}&amp;lt;/span&amp;gt;
              &amp;lt;div className="w-[40px] m-0 p-0 h-0 border-2 border-purple-400" /&amp;gt;
              &amp;lt;div
                onClick={() =&amp;gt; setDay(d)}
                className={`rounded-full ${
                  day.number === d.number &amp;amp;&amp;amp;
                  day.month === d.month &amp;amp;&amp;amp;
                  day.year === d.year
                    ? "bg-purple-500"
                    : "bg-transparent"
                } w-[30px] h-[20px] flex justify-center items-center cursor-pointer my-3 0 4`}
              &amp;gt;
                &amp;lt;span className="text-xs leading-40"&amp;gt;
                  {("0" + d.number).slice(-2)}
                &amp;lt;/span&amp;gt;
              &amp;lt;/div&amp;gt;
              &amp;lt;span
                className={`text-xs ${
                  day.number === d.number &amp;amp;&amp;amp;
                  day.month === d.month &amp;amp;&amp;amp;
                  day.year === d.year
                    ? "font-bold text-purple-600"
                    : "font-medium text-purple-400"
                } ${
                  d.number === 1 ||
                  index === 0 ||
                  (day.number === d.number &amp;amp;&amp;amp;
                    day.month === d.month &amp;amp;&amp;amp;
                    day.year === d.year)
                    ? "visible"
                    : "invisible"
                }`}
              &amp;gt;
                {toMonthName(d.month)}
              &amp;lt;/span&amp;gt;
            &amp;lt;/div&amp;gt;
          ))}
        &amp;lt;/DateContainer&amp;gt;

&amp;lt;--- make sure Datacontainer style is not placed inside the Calender component ---&amp;gt;

const DateContainer = styled.div`
  height: 130px;
  color: #727070;
  display: flex;
  justify-content: left;
  flex-wrap: nowrap;
  overflow-x: scroll;
  width: 80%;
  ::-webkit-scrollbar {
    display: none;
  }
`;

&amp;lt;--- make sure Datacontainer style is not placed inside the Calender component ---&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Here’s a summarized and comprehensive overview of what’s happening:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;DateContainer component is being used with an id of "scroll", which may indicate that it is meant to be a scrollable container for the date list.&lt;/li&gt;
&lt;li&gt;The dateList array is being iterated using .map() function to generate a list of date elements.&lt;/li&gt;
&lt;li&gt;Each date element is wrapped in a  element with the flex, flex-col, justify-center, and items-center classes, which aligns its children in a column with vertical and horizontal center alignment.
&lt;/li&gt;
&lt;li&gt;Overall, the code generates a list of date elements with specific styles and behaviors based on the day and d objects' properties, and uses Tailwind CSS classes to define the styling and layout of the date container and its children elements.&lt;/li&gt;

&lt;h2&gt;
  
  
  Navigation Arrow
&lt;/h2&gt;


&lt;pre class="highlight plaintext"&gt;&lt;code&gt; const autoScroll = (direction) =&amp;gt; {
    if (direction === "left") {
      setIntervalIdLeft(
        setInterval(() =&amp;gt; {
          document.getElementById("scroll")?.scrollBy(-3, 0);
        }, 5)
      );
      setIntervalsLeft([...intervalsLeft, intervalIdLeft]);
    } else {
      setIntervalIdRight(
        setInterval(() =&amp;gt; {
          document.getElementById("scroll")?.scrollBy(3, 0);
        }, 5)
      );
      setIntervalsRight([...intervalsRight, intervalIdRight]);
    }
  };
  const clearRunningIntervals = () =&amp;gt; {
    intervalsLeft.map((i) =&amp;gt; {
      clearInterval(i);
      return null;
    });
    intervalsRight.map((i) =&amp;gt; {
      clearInterval(i);
      return null;
    });
  };
&lt;/code&gt;&lt;/pre&gt;


&lt;p&gt;In this code snippet, there are two functions and an image element with event handlers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;autoScroll: This function takes a direction ("left" or "right") as an argument and sets up an interval using setInterval() to repeatedly scroll a DOM element with an id of "scroll" in the specified direction (-3 pixels for "left" and 3 pixels for "right") every 5 milliseconds. The interval IDs are stored in state variables intervalIdLeft and intervalIdRight using respective setter functions. The current intervals IDs are also appended to intervalsLeft or intervalsRight arrays using setIntervalsLeft or setIntervalsRight setter functions.&lt;/li&gt;
&lt;li&gt;clearRunningIntervals: This function is called to clear all the intervals stored in intervalsLeft and intervalsRight arrays using clearInterval() function.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Navigation Implementation
&lt;/h2&gt;



&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{window.innerWidth &amp;gt; 10 ? (
          &amp;lt;img
            src={leftArrowDate}
            alt="left"
            style={{
              position: "absolute",
              left: "15px",
              height: "15px",
              cursor: "pointer",
            }}
            id="scroll-left"
            // onClick={() =&amp;gt; autoScroll("left")}
            onMouseDown={() =&amp;gt; autoScroll("left")}
            onMouseUp={() =&amp;gt; {
              clearInterval(intervalIdLeft);
              clearRunningIntervals();
            }}
            onDrag={() =&amp;gt; {
              clearInterval(intervalIdLeft);
            }}
          /&amp;gt;
        ) : null}

&amp;lt;-- &amp;lt;DataContainer should be placed here ---&amp;gt;

{window.innerWidth &amp;gt; 10 ? (
          &amp;lt;img
            src={leftArrowDate}
            alt="right"
            style={{
              position: "absolute",
              right: "15px",
              height: "15px",
              transform: "rotate(180deg)",
              cursor: "pointer",
            }}
            // onClick={() =&amp;gt; autoScroll("right")}
            onMouseDown={() =&amp;gt; autoScroll("right")}
            onMouseUp={() =&amp;gt; {
              clearInterval(intervalIdRight);
              clearRunningIntervals();
            }}
            onDrag={() =&amp;gt; {
              clearInterval(intervalIdRight);
            }}
          /&amp;gt;
        ) : null}
&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;In this code snippet, there is an image element with event handlers.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The image element: This image is conditionally rendered based on the inner width of the window being greater than 10 pixels. It has event handlers attached for onMouseDown, onMouseUp, and onDrag events. These event handlers trigger the autoScroll and clearRunningIntervals functions with different parameters to control the scrolling behavior. The image has specific styles for a position, left offset, height, and cursor. If the inner width of the window is not greater than 10 pixels, the image is not rendered (null).&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Here is the expected outcome:&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%2Fhctt3omotb9f5mgwo3y8.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%2Fhctt3omotb9f5mgwo3y8.png" alt="horizontal datapicker" width="800" height="140"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Thank you for taking the time to read my article. I hope you find it valuable and useful. If you have any further questions or need additional information, please don’t hesitate to ask. Thank you for your support!&lt;/p&gt;


&lt;/ol&gt;

</description>
      <category>react</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Finding Inspiration in Unexpected Places: How My Friend's Success Motivated Me to Pursue Tech Skills</title>
      <dc:creator>Olonts</dc:creator>
      <pubDate>Fri, 21 Apr 2023 16:04:58 +0000</pubDate>
      <link>https://forem.com/ifetolu5/finding-inspiration-in-unexpected-places-how-my-friends-success-motivated-me-to-pursue-tech-skills-392h</link>
      <guid>https://forem.com/ifetolu5/finding-inspiration-in-unexpected-places-how-my-friends-success-motivated-me-to-pursue-tech-skills-392h</guid>
      <description>&lt;p&gt;As the COVID-19 pandemic led to lockdowns and remote work becoming more prevalent in 2020, I saw an opportunity to make some quick money by investing in what seemed like online investment schemes. I fell for the Ponzi schemes hook, line, and sinker, and made good money during that time. I even treated myself to the latest iPhone, the iPhone 11, which was a status symbol for me. It felt like a big win, and I was enjoying my financial stability without realizing the need to invest in my own skills for the future.&lt;/p&gt;

&lt;p&gt;Looking back, I realized that investing in a tech skill would have been a wiser move, given the shift towards remote work. But I was complacent, content with my earnings from the Ponzi schemes. It wasn’t until I caught up with a friend during a school break in 2021 that I was forced to rethink my life choices.&lt;/p&gt;

&lt;p&gt;My friend had started learning graphic design and landed a job with a modest monthly pay of 300,000 naira. At first, I shrugged it off, thinking the pay was too low and saying, “I don’t think I would work for anybody.” But as we continued talking, I realized that my friend’s success was not something to be taken lightly. This was a friend I went to school with, and we even started learning website development together. Now he was a graphic designer making a significant monthly salary, while I had no job, no stable income, and no clear plan for my future. I felt empty, but I didn’t let him know. I acted normal, but deep down, I was inspired.&lt;/p&gt;

&lt;p&gt;My friend’s success became my motivation to take tech skills seriously. He had no idea that he had become a source of inspiration for me, and I found myself telling everyone I met about my friend earning 300,000 naira monthly. I mean, I remember him telling me how he would scout for the best deals on snacks, negotiate with the vendor, and then sell them at a markup during the night prep sessions. I was genuinely happy for him, but at the same time, I felt foolish for not following a similar path.&lt;/p&gt;

&lt;p&gt;Despite the initial shock, I acknowledged the need to step up my own game. I resolved to be more focused and determined in pursuing my own goals. While I cheered on my friend’s accomplishments, I also drew inspiration from his achievements and sought ways to enhance my own prospects.&lt;/p&gt;

&lt;p&gt;Fast forward a few months, and I landed a job in the tech industry as well. It wasn’t easy, and I had to work hard to build my skills and network, but eventually, I found a job that aligned with my interests and offered a stable income. It was a major turning point for me. I learned from my friend’s example and realized the value of investing in tech skills and pursuing a career in a field that was in demand, especially in the era of remote work and digital transformation.&lt;/p&gt;

&lt;p&gt;Now, I’m excited about my job and the opportunities it presents. I’m constantly learning and growing, and I’m grateful for the motivation my friend provided. I no longer chase after get-rich-quick schemes, but instead, I focus on building a solid foundation for my career. I’ve also started exploring entrepreneurial endeavors on the side, inspired by my friend’s success. I’m determined to create my own success story and share it with others&lt;/p&gt;

&lt;p&gt;Lessons Learned:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Be cautious of get-rich-quick schemes, such as Ponzi schemes, and avoid falling for them.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Invest in your own skills and education for future career prospects, especially in fields that are in demand.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Surround yourself with motivated and successful individuals who can inspire and motivate you to achieve your own goals.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>webdev</category>
      <category>tec</category>
    </item>
    <item>
      <title>How React Determines Updates: The Difference Between Reconciliation and React Fiber</title>
      <dc:creator>Olonts</dc:creator>
      <pubDate>Sun, 09 Apr 2023 17:21:49 +0000</pubDate>
      <link>https://forem.com/ifetolu5/how-react-determines-updates-the-difference-between-reconciliation-and-react-fiber-24in</link>
      <guid>https://forem.com/ifetolu5/how-react-determines-updates-the-difference-between-reconciliation-and-react-fiber-24in</guid>
      <description>&lt;p&gt;If you’ve ever clicked on a button on a webpage, you have triggered a change to the Document Object Model(DOM). React is a JavaScript library that renders components based on these changes, a process known as DOM manipulation. In this article, we will discuss how these triggers are used to update components in React.&lt;/p&gt;

&lt;p&gt;React uses two types of DOM nodes: The Virtual DOM and the Real DOM. The virtual DOM is a clone of the Real DOM; the Real DOM is the Rendered DOM that you see when you visit a website.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;DOM Manipulation&lt;/strong&gt;&lt;br&gt;
Whenever a change, such as a button click, is made to a component’s state, React creates a tree-like structure of all the components that need to be updated. It generates a new Virtual DOM, which is compared to the Real DOM using a technique called “snapshotting.” Based on the differences between these two versions of the DOM, React updates the rendered DOM accordingly. Importantly, the Virtual DOM is updated before the Real DOM, which reduces unnecessary updates and improves performance.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Reconciliation Algorithm&lt;/strong&gt;&lt;br&gt;
Before React version 16, the library used a process called the Reconciliation Algorithm to analyze the rendered DOM and the Virtual DOM. It traversed the DOM nodes and updated the DOM according to the class or element that needed to be updated. This process occurred after every User Interface (UI) update.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;React Fiber&lt;/strong&gt;&lt;br&gt;
With version 16, React introduced an upgraded version of the Reconciliation Algorithm called React Fiber. It breaks down the tree-like structure discussed earlier into smaller units called fibers. This allows React Fiber to prioritize which unit of the tree needs to be updated first.&lt;/p&gt;

&lt;p&gt;React Fiber introduces a concept called “reconciliation and rendering phases” to make the updating process more efficient. It breaks the updating process into two distinct phases:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Reconciliation Phase&lt;/strong&gt;: React Fiber compares the old and new Virtual DOM and calculates the differences. It then breaks down the work into smaller units called fibers and prioritizes them based on their importance. During this phase, React can pause, abort, or even delegate work to another thread to keep the UI responsive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Commit phase&lt;/strong&gt;: Once the reconciliation phase is complete, React Fiber enters the commit phase. In this phase, it applies the changes to the actual DOM, updating only the necessary parts of the UI. This ensures that the user sees a consistent and updated UI as soon as possible.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;blockquote&gt;
&lt;p&gt;In the earlier version of React, there was no provision to temporarily halt the traversal to process other renders in between. As a consequence, this often led to sluggish and unresponsive inputs, and caused the frame rates to be choppy.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;Difference between Reconciliation and React Fiber&lt;/strong&gt;&lt;br&gt;
Here are the key differences between the Reconciliation Algorithm and React Fiber:&lt;br&gt;
&lt;a href="https://dev.to%20embed%20&amp;lt;br&amp;gt;%0A%20"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Rendering architecture: The old version of React used a stack-based architecture for rendering components, which caused performance issues in large applications. The React Fiber architecture was introduced to address these issues by introducing a more efficient fiber-based approach for rendering and prioritizing components.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Incremental rendering: React Fiber enables incremental rendering, which means that rendering can be broken down into smaller chunks, allowing the UI to be displayed more quickly. This also means that the UI can be updated more frequently, resulting in a more dynamic user experience.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rendering priorities: React Fiber introduces the concept of rendering priorities, which allows developers to specify which parts of the UI should be rendered first, based on their importance. This ensures that critical parts of the UI are rendered first, resulting in a more responsive user interface.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved error handling: React Fiber includes improved error handling, which makes it easier to diagnose and fix issues in the UI. This is particularly important in larger applications where issues can be more complex.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Improved reconciliation: React Fiber includes an improved reconciliation algorithm, which is the process of comparing the current state of the UI with the new state and updating the UI accordingly. This improved algorithm makes the reconciliation process more efficient and results in faster UI updates.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Overall, React Fiber introduces significant improvements over the previous version of React, particularly in terms of rendering performance, prioritization, and error handling. These improvements result in a better user experience and make React a more powerful tool for building complex user interfaces.&lt;/p&gt;

</description>
      <category>dom</category>
      <category>react</category>
      <category>startup</category>
      <category>webdev</category>
    </item>
    <item>
      <title>My Tech Journey: Lessons Learned as a Junior Developer</title>
      <dc:creator>Olonts</dc:creator>
      <pubDate>Thu, 06 Apr 2023 22:18:17 +0000</pubDate>
      <link>https://forem.com/ifetolu5/my-tech-journey-lessons-learned-as-a-junior-developer-1k28</link>
      <guid>https://forem.com/ifetolu5/my-tech-journey-lessons-learned-as-a-junior-developer-1k28</guid>
      <description>&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5QUuuN7P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g3ncfhcu3r49qd2zd32k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5QUuuN7P--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/g3ncfhcu3r49qd2zd32k.jpg" alt="My Tech Journey: Lessons Learned as a Junior Developer" width="880" height="691"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In 2021, I graduated from university with a degree in mathematics, I realized that pursuing a career in that field was not something that interested me. Instead, I found myself drawn to website development, something I had already enjoyed even before attending university. In this article, I will share my experiences as a junior developer and the lessons I learned along the way.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Learning JavaScript and React&lt;/strong&gt;&lt;br&gt;
In 2022, I began my journey to become a web developer by learning JavaScript, followed by React. I quickly fell in love with React — everything from its name to its popularity drew me in, building all my projects on GitHub with it. However, in hindsight, I now realize that I rushed into React without fully grasping the basics of JavaScript. This made it challenging for me to learn other aspects of frontend development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Getting a Job as a Junior Developer&lt;/strong&gt;&lt;br&gt;
In March 2023, I landed a job. However, I did not get the job based on my technical competence, as the interview process focused on non-code-related topics. Although I was excited to join the team, I struggled with impostor syndrome, worrying about how I would cope with working alongside experienced coders.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The Reality of Being a Junior Developer&lt;/strong&gt;&lt;br&gt;
During my first week on the job, I experienced significant stress and headaches. I was working in a paid internship with a clause stating that I would retain my position if I performed well. This only added to my anxiety, as I did not want to mess up and risk losing my job. However, with the help of the internet and a React course on Udemy, I slowly began to learn and gain confidence in my abilities.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusion:&lt;/strong&gt;&lt;br&gt;
My journey so far has taught me a few key lessons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Getting a job is one thing, but performing well on the job is another issue that junior developers should be prepared for.&lt;/li&gt;
&lt;li&gt;It’s important to learn the core basics of JavaScript before moving on to any framework, as it will give you a better foundation for understanding and working with different frameworks.&lt;/li&gt;
&lt;li&gt;Don’t be afraid to ask for help or seek out additional resources to broaden your knowledge and skills. The internet is a great tool for finding information and courses that can help you grow as a developer.&lt;/li&gt;
&lt;/ul&gt;

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