<?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: Prerna Sharma</title>
    <description>The latest articles on Forem by Prerna Sharma (@prerna0202).</description>
    <link>https://forem.com/prerna0202</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%2F727831%2F73d97217-f8e9-41a5-ab89-0f6812103318.jpg</url>
      <title>Forem: Prerna Sharma</title>
      <link>https://forem.com/prerna0202</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/prerna0202"/>
    <language>en</language>
    <item>
      <title>Coding Period GSoC'23 | Week 11 + 12</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Sun, 27 Aug 2023 18:53:50 +0000</pubDate>
      <link>https://forem.com/prerna0202/coding-period-gsoc23-week-11-12-3pni</link>
      <guid>https://forem.com/prerna0202/coding-period-gsoc23-week-11-12-3pni</guid>
      <description>&lt;p&gt;It's with a bittersweet mix of emotions that I welcome you to the final of my exhilarating GSoC 2023 journey. Can you believe it? We've reached the end of this journey.&lt;/p&gt;

&lt;p&gt;Now, Let's take a look at the work done in the last two weeks.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Work Done (11th August - 24th August)&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;First and foremost, I started working on completing the 'Moving a component mess up the connected wire pull request'. As I mentioned in my previous blog, this PR was not yet completed. In this PR, I have mainly tried to improve the way wiring connections are handled. Previously, even a slight movement of components resulted in tangled wires, but the new implementation significantly mitigates this issue. This enhancement is expected to greatly benefit users. With the new implementation, now when components are moved, their connections are less likely to be disrupted. For this, I changed the positions of node creations.&lt;/p&gt;

&lt;p&gt;After that, I was looking for the data-integrity issues on #simulator-issues slack channel, and I came across an issue that error messages are being persistent and do not disappear even after resolving the issues. I addressed it by implementing a fix. Previously, when an error message was displayed on the canvas and a user clicked on it multiple times in quick succession, the message persisted even after the error was resolved. I resolved this problem, ensuring that error messages are now properly removed once the issue is resolved. For this, I declared a new global variable named fadeTimeOut, which is used to store the timeout ID for fading out an error message after a delay. Then, I added a check in the showError function, responsible for displaying errors on the canvas, to clear the previous timeout if it exists.&lt;/p&gt;

&lt;p&gt;After that, I discussed this task with my mentors: Identifying areas where defensive coding practices are needed instead of assuming data will always be in the proper format. We found that the reason this task was created is somewhat related to what we handled in another task where we created a state machine, so this task is a bit unclear to us. Therefore, we decided to leave this task.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Pull Request&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3928"&gt;Fix: Moving a component mess up the connected wires&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Feedbacks on Pull Requests&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--7yp1HDaV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/efs57m387legd505xmy2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--7yp1HDaV--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/efs57m387legd505xmy2.png" alt="Feedback" width="800" height="164"&gt;&lt;/a&gt;&lt;/p&gt;

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

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

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

&lt;h2&gt;
  
  
  &lt;strong&gt;Future Plan&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;Now, I have resolved to extend my efforts in aiding new contributors and helping to continue the maintenance of the CircuitVerse simulator.&lt;/p&gt;

&lt;p&gt;That's all for now. Thank you for reading!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>gsoc23</category>
      <category>webdev</category>
      <category>circuitverse</category>
    </item>
    <item>
      <title>Coding Period GSoC'23 | Week 9 + 10</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Sun, 13 Aug 2023 10:23:41 +0000</pubDate>
      <link>https://forem.com/prerna0202/coding-period-gsoc23-week-9-10-106m</link>
      <guid>https://forem.com/prerna0202/coding-period-gsoc23-week-9-10-106m</guid>
      <description>&lt;p&gt;Welcome back to another progress update on my GSoC'2023 journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Work Done (26th July - 10th August):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Let's begin with a dive into the work that's been accomplished. As I mentioned in my previous blog post, my primary focus this week was to complete a significant task: &lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3781"&gt;PR&lt;/a&gt;. This pull request involved designing and implementing a modal for an enhanced simulation area, where users could edit erroneous circuits. Over the course of 4-5 days, I brainstormed different approaches and attempted their implementation.&lt;/p&gt;

&lt;p&gt;My goal was to create a modal that allowed users to edit erroneous circuits directly in the simulation area. This required careful thought and effort, and I explored various techniques to achieve this. However, I encountered challenges in finding an effective solution. Seeking guidance, I had a discussion with my mentors, where I shared my ideas and concerns. They advised me that implementing a simulation area with error editing functionality could be quite complex, and suggested prioritizing the core functionality and addressing UI concerns later.&lt;/p&gt;

&lt;p&gt;Taking their advice, I focused on ensuring the proper working of the state machine and retaining the initially planned UI design. Essentially, whenever an error exists within the circuit, all tabs will remain hidden. Once the erroneous component is removed, all tabs become visible. This ensures a seamless user experience during circuit editing.&lt;/p&gt;

&lt;p&gt;Moving forward, I tackled two key tasks related to data integrity:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Delay 0 on Non-Input/Output Components:&lt;/strong&gt;&lt;br&gt;
The challenge here was that components could be set with a delay of 0, but this setting couldn't be saved. To address this, I implemented a solution by introducing a condition that allows components with a propagation delay of zero to be saved with the appropriate value. This ensures that components behave as expected, even with a delay of zero.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;- Maintaining Wire Connections While Moving Components&lt;/strong&gt;&lt;br&gt;
In this challenge, I encountered issues with connected wires becoming disarrayed when moving a component. The existing system only checked if a component's nodes had moved to different y or x-coordinates. To prevent overlapping or collisions, I'm in the process of developing a more robust collision detection system. While this task is still a work in progress, I'm dedicated to finding a comprehensive solution.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What's Next?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As the end of the Google Summer of Code (GSoC) program draws near, I have a clear roadmap for the remaining tasks. With only a few days left, I have one task left to tackle:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Identifying areas where defensive coding practices are needed instead of assuming data will always be in the proper format.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This task will be my focus in the upcoming weeks. Additionally, I'll be working on completing the pending work in &lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3928"&gt;PR&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Stay tuned for more updates and progress in the coming weeks!&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>gsoc23</category>
      <category>circuitverse</category>
    </item>
    <item>
      <title>Coding Period GSoC'23 | Week 7+8</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Tue, 25 Jul 2023 13:55:36 +0000</pubDate>
      <link>https://forem.com/prerna0202/coding-period-gsoc23-week-78-2jch</link>
      <guid>https://forem.com/prerna0202/coding-period-gsoc23-week-78-2jch</guid>
      <description>&lt;p&gt;Welcome back to another progress update on my GSoC' 2023 journey.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Journey So Far&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;My GSoC journey so far has been absolutely amazing.&lt;br&gt;
I am delighted to share that I have successfully passed the mid-term evaluation, and I couldn't be happier with the progress made so far! My journey has been a fulfilling one, with ample support from my mentor, making this experience smooth and enjoyable. 💃🥳&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--jwnqN3DY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zkjhz9onuehb20oxz0d7.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--jwnqN3DY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zkjhz9onuehb20oxz0d7.gif" alt="Pikachu-Happy_dance" width="420" height="258"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;
  
  
  &lt;strong&gt;Work Done (11th July - 25th July):&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;After the mid-term evaluation, I began working on the state machine task, following the valuable suggestions provided by my mentors. The primary objective was to implement a modal that opens whenever an uncaught exception error occurs during the simulation. Inside the modal, I endeavored to create a simulation area similar to the one found in the simulator canvas. This task has progressed significantly, but I encountered some challenges during testing, leading to several failed tests. To ensure a robust solution, I have decided to put this task on hold temporarily.&lt;/p&gt;

&lt;p&gt;Moving forward, I aim to focus on loading the error circuit on the modal, implementing delete and undo functionality to remove the erroneous component within the modal, and closing the modal once the circuit is back to its normal state. I plan to discuss this with my mentors and aim to complete it within the upcoming two weeks.&lt;/p&gt;
&lt;h4&gt;
  
  
  &lt;strong&gt;Identifying and Modifying Currently Selected Components:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;After that, I started working on the following task:&lt;br&gt;
There should be a way to identify the currently selected component on the canvas and modify that component's object in the globalScope.&lt;/p&gt;

&lt;p&gt;For achieving this, I created two functions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;getCurrentlySelectedComponent()&lt;/code&gt;: This function is responsible for returning the currently selected component on the canvas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;modifyCurrentlySelectedComponent(property, value)&lt;/code&gt;: This function takes two parameters. The first parameter is the property of the currently selected component that needs to be modified, and the second parameter is the new value that will replace the existing value of the specified property. This function effectively modifies the specified property of the currently selected component within the globalScope.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Currently, identifying a specific component in a circuit and modifying its property in globalScope is challenging. However, with the implementation of these functions, we can now easily find and modify the currently selected component.&lt;br&gt;
Let me provide you with an example to illustrate how this functionality can be utilized. Consider a circuit, and now select any component whose properties you want to modify. Suppose we want to modify the bitWidth property of a particular node from 1 to 10. We can do this by running the following command in the console.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;globalScope.getCurrentlySelectedComponent();
globalScope.modifyCurrentlySelectedComponent('bitWidth', 10);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;strong&gt;Find and fix Data Integrity Issues:&lt;/strong&gt;
&lt;/h4&gt;

&lt;p&gt;Next, I took on the challenge of resolving data integrity issues that were causing data corruption for many users. These issues were crucial to address for a smoother user experience. &lt;/p&gt;

&lt;p&gt;Under this task, I worked on &lt;a href="https://github.com/CircuitVerse/CircuitVerse/issues/103"&gt;Issue #103&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;In this, The previous implementation of simulation queue uses a linear implementation for managing the priority queue, which involves sorting the elements in an array to maintain the priority order. As a result, the &lt;code&gt;add&lt;/code&gt; method uses linear time complexity (O(n)) to find the correct position for adding an element based on its timestamp.&lt;/p&gt;

&lt;p&gt;To make the performance better, I have worked on decreasing it's complexity to O(log n), I am making use of a binary heap data structure to manage the priority queue. A binary heap is a specialized tree-based data structure that maintains the heap property, where the parent node has a higher priority (smaller timestamp) than its child nodes. In this implementation, the &lt;code&gt;add&lt;/code&gt; method uses heapify-up to find the correct position for adding an element, and the &lt;code&gt;remove&lt;/code&gt; method uses heapify-down to maintain the heap property after removing an element. These heapify operations have logarithmic time complexity (O(log n)), which makes the binary heap implementation much more efficient for managing a priority queue compared to the linear implementation.&lt;br&gt;
It will be leading to better performance for larger event queues due to the more efficient O(log n) time complexity for insertion and removal operations.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Pull Requests:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3916"&gt;Change the implementation of the priority queue to use a heap data structure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3870"&gt;Added helpful functions for debugging of circuit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;What's Next?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;As I look ahead to the next two weeks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;I will continue to focus on addressing data integrity issues and aim to resolve the remaining issues.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Completing Pull Request &lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3781"&gt;#3781&lt;/a&gt; is another priority, and I will ensure the proposed changes are thoroughly reviewed and integrated.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next, I will start working on the task of identifying areas in the codebase where we can implement more defensive coding practices, reducing dependencies on data always being in the correct format.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The journey through Weeks 7 and 8 of GSoC'2023 has been both challenging and rewarding. &lt;/p&gt;

&lt;p&gt;Stay tuned for more updates and progress in the coming weeks!&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>javascript</category>
      <category>webdev</category>
      <category>circuitversesimulator</category>
    </item>
    <item>
      <title>Coding Period GSoC'23 | Week 3 + 4 + 5</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Thu, 06 Jul 2023 09:38:12 +0000</pubDate>
      <link>https://forem.com/prerna0202/coding-period-gsoc23-week-3-4-5-388b</link>
      <guid>https://forem.com/prerna0202/coding-period-gsoc23-week-3-4-5-388b</guid>
      <description>&lt;p&gt;Welcome back to another progress update on my Google Summer of Code (GSoC) 2023 journey! If you haven't already, make sure to catch up on my previous blog posts covering Week 1 and Week 2. In this blog, I'll be sharing my accomplishments and developments from Weeks 3, 4, and 5.&lt;/p&gt;




&lt;h2&gt;
  
  
  &lt;strong&gt;Work Done (12th June - 5th July):&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As mentioned in my previous blog, I had almost completed the state machine task and the simulator crash recovery task. However, during third and half of the fourth weeks, I had scheduled university exams that required my attention, so I couldn't work on the project during that time. I had informed my mentors about this in advance. Once my exams concluded, I resumed working on my project. During the last meeting with my mentors just before my exams, we discussed making some changes to the simulator crash recovery task. Also, I identified an issue with the state machine task.&lt;/p&gt;

&lt;p&gt;So, I started my work back by addressing these changes and issues and completed the necessary pull requests for both tasks. Here are the changes we decided upon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Simulator Crash Recovery Task&lt;/strong&gt;: Initially, I was calling the autosave function alongside the scheduleBackup() function. However, after discussions, we agreed to schedule autosave at specific time intervals. So, I modified the code accordingly. Now, we check for any increments in the backups every three seconds. If an increment is detected in the length of backups, the autosave function is triggered, otherwise, it is skipped.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;State Machine Task&lt;/strong&gt;: There was an issue where the state would change from normal to an error in real-time, but to revert from error to normal, we had to click on the simulation area, which was not an optimal user experience. I addressed this issue and now, the state revert from error to normal in real time. Additionally, some suggested changes by mentor were made and pushed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After completing these tasks, I started working on a new task, which involved creating a better system for handling high impedence values. In CircuitVerse, we have two elements related to high impedence conditions: tristate and controlled inverter. The controlled inverter was broken initially, so first, I fixed it. Following that, I identified and resolved several issues related to the tristate element, which involved fixing shortcomings and ensuring proper functionality. I verified the changes using Logisim, and now both the tristate and controlled inverter are functioning correctly.&lt;/p&gt;

&lt;p&gt;Next, I began working on another task, which involved exposing helpful functions for debugging circuits. I created four functions for this purpose:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;load()&lt;/strong&gt;: This function takes circuit data as a parameter and draws the circuit on the canvas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;removeBugNodes()&lt;/strong&gt;: This function removes nodes with bugs from the circuit.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Next()&lt;/strong&gt;: This function takes the circuit to the next state.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Previous()&lt;/strong&gt;: This function takes the circuit to the previous state.
These functions will greatly aid in debugging circuits. I plan to discuss the implementation and explore other helpful functions which we can implement during my upcoming meeting.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Pull Requests:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3767"&gt;Implemented safe recovery from simulator crash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3781"&gt;Implemented state machine for simulator&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3858"&gt;Better system for high impedence values&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3870"&gt;Added helpful functions for debugging of circuit&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;So, What's Next?&lt;/strong&gt;
&lt;/h2&gt;

&lt;p&gt;As per my proposal timeline, I aim to complete the remaining two tasks before the mid-term evaluation. I am determined to put in my utmost effort to accomplish these tasks and ensure their completion before the mid-term evaluation.&lt;br&gt;
In the upcoming week, my primary focus will be on completing the following tasks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;'Simulation Stack Exceeded' Error: I plan to develop a solution that allows the identification of components that are being added to the simulation stack an unusually large number of times, leading to the error. By addressing this issue, we can enhance the stability and efficiency of the simulator.&lt;/li&gt;
&lt;li&gt;Identifying and Modifying Selected Components: Another task on my agenda is to implement a feature that enables the identification of the currently selected component on the canvas. This functionality will empower users to modify the properties of the selected component conveniently within the global scope.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That concludes my progress update for Weeks 3, 4, and 5 of my GSoC23 project. I will continue to share regular updates on my journey, so stay tuned for more.&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>javascript</category>
      <category>programming</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Coding Period GSoC'23 | Week 1 + 2</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Sat, 10 Jun 2023 14:18:35 +0000</pubDate>
      <link>https://forem.com/prerna0202/coding-period-gsoc23-week-1-2-51dp</link>
      <guid>https://forem.com/prerna0202/coding-period-gsoc23-week-1-2-51dp</guid>
      <description>&lt;p&gt;The Google Summer of Code 2023 Coding Period kicked off on May 29th, following a community bonding period of approximately three weeks. As I have completed the second week I am happy to share my accomplishments and future plans with you all.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Checkout my previous blog about &lt;a href="https://dev.to/prerna0202/my-journey-to-gsoc2023-656"&gt;My Journey to GSoC'23&lt;/a&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Community Bonding Period (May 4th - May 28th)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;During the community bonding period, we had two meetings. The first meeting involved all the contributors and mentors, where we introduced ourselves and had a discussion on how we work in the GSoC program. The second meeting was specifically with my project mentors, where we discussed the project's timeline and the tasks of the project. Also, I must admit, I was quite nervous during the second meeting and ended up rambling a bit! ;-)&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Work done (29th May - 11th June)&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I initially started with the task of "implementing a safe recovery from simulator crashes". However, After having a discussion, we decided to complete the task of "implementing a state machine for the simulator to handle uncaught exception errors" before working on the simulator crash recovery task. So, I put the crash recovery task on hold and began implementing the state machine.&lt;/p&gt;

&lt;p&gt;In state machine task, I created two states for the simulator that are "normal" and "error". When there are no errors in the circuit, the simulator remains in the normal state. However, as soon as an uncaught exception error occurs, the state transitions from normal to error. In the error state, the user can only delete or undo components in the circuit. So, Once the user removes the erroneous component, the simulator returns to the normal state and resumes its proper functioning.&lt;/p&gt;

&lt;p&gt;After completing the state machine implementation, I resumed working on the recovery from simulator crash task. Previously, when a simulator crashed, all the circuit data would be lost. To address this, I developed an autosave feature where the circuit's data is saved in the local storage every time we click on the simulator. This allows us to restore the circuit to a previous state after a simulator crash.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;Pull Requests:&lt;/strong&gt;
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3767"&gt;Implemented safe recovery from simulator crash&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/CircuitVerse/CircuitVerse/pull/3781"&gt;Implemented state machine for simulator&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;So, what's next?&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;I will be working on the task of "Making a better system for high-impedance values handling" and then moving on to "expose helpful functions while debugging the circuit." My aim is to complete these tasks by the end of the fourth week.&lt;/p&gt;

&lt;p&gt;As I wrap up the initial weeks of coding, I'm filled with enthusiasm to continue learning alongside CircuitVerse. The journey ahead is filled with excitement, and I can't wait to see what lies ahead!🚀&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--5f80ir6t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7ts2sfqktx1jn1pyr39.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--5f80ir6t--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r7ts2sfqktx1jn1pyr39.gif" alt="Dancing cat" width="498" height="392"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>javascript</category>
      <category>programming</category>
    </item>
    <item>
      <title>My Journey to GSoC'2023</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Mon, 08 May 2023 15:32:08 +0000</pubDate>
      <link>https://forem.com/prerna0202/my-journey-to-gsoc2023-656</link>
      <guid>https://forem.com/prerna0202/my-journey-to-gsoc2023-656</guid>
      <description>&lt;h3&gt;
  
  
  About GSoC
&lt;/h3&gt;

&lt;p&gt;Google Summer of Code is an incredible opportunity for students around the world to work on open-source software projects, receive a stipend for their contributions, and gain valuable experience under the guidance of experienced mentors.&lt;/p&gt;

&lt;h3&gt;
  
  
  My journey from rejection to acceptance
&lt;/h3&gt;

&lt;p&gt;Open source is a vast and exciting world, and I knew I wanted to be a part of it. In September'21, while I was exploring open source, I got to know about CircuitVerse, a circuit simulation platform that I had used for my COA practical labs, which was also an open-source project. I was excited to contribute to a platform that was already being used by me and my classmates(Secret🤫:-I was excited to flex in my class XD) and then I started fixing bugs and adding features to the CircuitVerse organization. Over the next few months, I continued my contributions and learning with the organization. A few months later, I heard about the Google Summer of Code program. I was lucky that CircuitVerse was part of the program, so I planned to participate as a student developer in GSoC'22 with CircuitVerse. The projects were announced around mid-February 2022, but at that same time, my end-semester exams were going on. So, I started researching the projects by the end of March 2022, and the last date to submit the proposal was 20th April. I had hardly 10-15 days to research, complete the pre-tasks, and propose.&lt;/p&gt;

&lt;p&gt;Despite the time crunch, I put my best efforts into making a good proposal. However it got rejected, and that was a disappointing moment for me. I remember, I cried for an hour and also deactivated my Slack community account immediately. I even thought of never going back to it again. But, my mentor helped me understand that rejection is part of the journey. His kind words gave me the motivation to continue contributing to open-source, improve my technical skills, and strengthen my understanding of the codebase.&lt;/p&gt;

&lt;p&gt;Then, I started contributing again to the same organization and decided to try again for GSoC'23, and this time I was determined to succeed. I worked on my technical skills more, and this time thankfully, my exams were not between that time. I researched the project to the best of my ability and made my proposal. Finally, my efforts paid off, my proposal was accepted, and I was selected to participate in GSoC 2023.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--coa1T242--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t0ld92q9f47ztf9b847i.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--coa1T242--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/t0ld92q9f47ztf9b847i.gif" alt="Celebration Image" width="360" height="270"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;My journey to Google Summer of Code 2023 was a challenging journey .It taught me that rejection is not the end, and we can always try again with a better approach. I am grateful for this experience, and I look forward to contributing more to the open-source community.&lt;/p&gt;

&lt;p&gt;To all the aspiring GSoC participants out there, my final note is to never give up. Failure is not the end but the beginning of a new learning journey. Start early, communicate with your mentors and the community, and always be open to feedback. Focus on making quality contributions, and don't be afraid to ask for help when you need it. With dedication and hard work, you can achieve your dreams of participating in GSoC and contributing to open-source.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Believe in yourself and all that you are. Know that there is something inside you that is greater than any obstacle." - Christian D. Larson&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Follow for more..&lt;/p&gt;

</description>
      <category>gsoc</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>CSS Shorthand Properties</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Sun, 12 Feb 2023 12:09:12 +0000</pubDate>
      <link>https://forem.com/prerna0202/css-shorthand-properties-boa</link>
      <guid>https://forem.com/prerna0202/css-shorthand-properties-boa</guid>
      <description>&lt;p&gt;Here are some CSS Shorthand Properties which are helpful for every developer:-&lt;/p&gt;




&lt;h2&gt;
  
  
  Transition
&lt;/h2&gt;

&lt;p&gt;Transition properties allow elements to change values over a specified duration, animating the property changes, rather than having them occur immediately.&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; transition-property: font-size;
 transition-duration: 2s;
 transition-timing-function: ease-in-out;
 transition-delay: 1s;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; transition: font-size 2s ease-in-out 1s
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Text-Decoration
&lt;/h2&gt;

&lt;p&gt;The text-decoration property adds an underline, overline, line-through, or a combination of lines to selected text.&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;text-decoration-line: underline;
text-decoration-color: red;
text-decoration-style: dotted;
text-decoration-thickness: 0.2rem ;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; text-decoration: underline red dotted 0.2rem;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Flex
&lt;/h2&gt;

&lt;p&gt;The flex property is a sub-property of the Flexible Box Layout module(CSS Flexible Box Layout is a module of CSS that defines a CSS box model optimized for user interface design, and the layout of items in one dimension).&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;flex-grow: 3;
flex-shrink: 4;
flex-basis: 10%;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; flex: 3 4 10%
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Gap
&lt;/h2&gt;

&lt;p&gt;The gap property in CSS is for row-gap and column-gap, specifying the size of gutters, which is the space between rows and columns within grid, flex, and multi-column layouts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;row-gap: 10%;
column-gap: 5%;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;gap: 10% 5%;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Font
&lt;/h2&gt;

&lt;p&gt;The font property in CSS allows us to change the styling of texts.&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;font-style: small-caps;
font-weight: bold;
font-size: 10px;
line-height: 2.3;
font-family: cursive;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;font: small-caps bold 10px/2.3 cursive;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Background
&lt;/h2&gt;

&lt;p&gt;The Background  CSS property allows us to sets background style properties, such as color, image, origin and size, or repeat method. &lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;background-color: yellow;
background-image: url('https://....');
background-repeat: no-repeat;
background-attachment: scroll;
background-position: right top;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;background: yellow url('https://....') no-repeat right top;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Border
&lt;/h2&gt;

&lt;p&gt;The border property in CSS is used to drawing a line around the element it is applied to.&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;border-width: 2px;
border-style: dotted;
border-color: green;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;border: 2px dotted green;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Margin and Padding
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Margin:-&lt;/strong&gt;&lt;br&gt;
The margin property defines the outermost portion of the box model, creating space around an element, outside of any defined borders&lt;br&gt;
&lt;strong&gt;Padding:-&lt;/strong&gt;&lt;br&gt;
The padding property in CSS defines the innermost portion of the box model, creating space around an element’s content, inside of any defined margins and/or borders.&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;margin-top: 2px;
margin-right: 3px;
margin-bottom: 4px;
margin-left: 5px;
padding-top:  2px;
padding-right: 3px;
padding-bottom: 4px;
padding-left: 5px;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;margin : 2px 3px 4px 5px;
padding : 2px 3px 4px 5px;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Outline
&lt;/h2&gt;

&lt;p&gt;The outline property in CSS draws a line around the outside of an element. It’s similar to border except that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It always goes around all the sides, you can’t specify particular sides.&lt;/li&gt;
&lt;li&gt;It’s not a part of the box model, so it won’t affect the position of the element or adjacent elements (nice for debugging!).&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;outline-width: 2px;
outline-style: solid;
outline-color: black;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;outline: 2px solid black;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Animation
&lt;/h2&gt;

&lt;p&gt;The animation property in CSS can be used to animate many other CSS properties such as color, background-color, height, or width. Each animation needs to be defined with the &lt;u&gt;@keyframes&lt;/u&gt; at-rule which is then called with the animation property.&lt;/p&gt;

&lt;h4&gt;
  
  
  Longhand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; animation-name: round;
 animation-duration: 3s;
 animation-timing-function: ease-in;
 animation-delay: 0.5s;
 animation-iteration-count: reverse;
 animation-direction: both;
 animation-fill-mode: running;
 animation-play-state: slideout;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Shorthand
&lt;/h4&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;animation: round 3s ease-in 0.5s infinite reverse both running slideout;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Happy learning...&lt;br&gt;
Follow for more..🎉🎉&lt;/p&gt;

</description>
      <category>css</category>
      <category>webdev</category>
      <category>beginners</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>JavaScript Higher Order Methods</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Fri, 03 Feb 2023 18:39:11 +0000</pubDate>
      <link>https://forem.com/prerna0202/javascript-higher-order-methods-4jp4</link>
      <guid>https://forem.com/prerna0202/javascript-higher-order-methods-4jp4</guid>
      <description>&lt;h2&gt;
  
  
  &lt;strong&gt;METHODS :-&lt;/strong&gt;
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;forEach()&lt;/li&gt;
&lt;li&gt;filter()&lt;/li&gt;
&lt;li&gt;sort()&lt;/li&gt;
&lt;li&gt;map()&lt;/li&gt;
&lt;li&gt;reduce()&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Consider an example:-&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const product = [
  {id: 1,category: "IPhone",name: "Iphone11Pro", start:2007, price:100000},
  {id: 2,category: "MI",name: "Note8", start:2008, price:90000},
  {id: 3,category: "Samsung",name: "GalaxyS45", start:2009, price:80000},
  {id: 4,category: "OnePlus",name: "Nokia24", start:2010, price:50000},
  {id: 5,category: "Nokia",name: "Iphone11Pro", start:2011, price:60000},
  {id: 6,category: "Iphone",name: "Iphone14pro", start:2012, price:120000}
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;1. FOREACH&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Foreach loop (or for each loop) is a control flow statement for traversing items in a collection.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
//for loop
for(let i=0;i&amp;lt;product.length;i++){
   console.log("[Product]", product[i]);
}

//forEach loop
product.forEach((input) =&amp;gt; {
   console.log("[Product]",input);
})
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:-&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;[Product] {id: 1, category: 'IPhone', name: 'Iphone11Pro', start: 2007, price: 100000}&lt;br&gt;
VM70:2 [Product] {id: 2, category: 'MI', name: 'Note8', start: 2008, price: 90000}&lt;br&gt;
VM70:2 [Product] {id: 3, category: 'Samsung', name: 'GalaxyS45', start: 2009, price: 80000}&lt;br&gt;
VM70:2 [Product] {id: 4, category: 'OnePlus', name: 'Nokia24', start: 2010, price: 50000}&lt;br&gt;
VM70:2 [Product] {id: 5, category: 'Nokia', name: 'Iphone11Pro', start: 2011, price: 60000}&lt;br&gt;
VM70:2 [Product] {id: 6, category: 'Iphone', name: 'Iphone14pro', start: 2012, price: 120000}&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;2. FILTER&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The filter() method creates a new array with all the elements that pass the test implemented by the callback() function.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//for loop
let filter_product = [];
for(let i=0;i&amp;lt;product.length;i++){
  if(product[i].category === 'MI'){
     filter_product.push(product[i]);
  }
}
console.log(filter_product);

//filter
let filter_product = product.filter(
  input =&amp;gt; input.category === 'MI'
);
console.log(filter_product);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:-&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;0:{id: 2, category: 'MI', name: 'Note8', start: 2008, price: 90000}&lt;br&gt;
length:1&lt;br&gt;
[[Prototype]]: Array(0)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;3. MAP&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The map() method creates a new array with the results of calling a function for every array elements.&lt;br&gt;
The map() method calls the provided function once for each element in an array.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//map
//Create array of product name
const product_name = product.map((input) =&amp;gt; input.name);
console.log(product_name);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:-&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;(6) ['Iphone11Pro', 'Note8', 'GalaxyS45', 'Nokia24', 'Iphone11Pro', 'Iphone14pro']&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;4.SORT&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The sort() method is used to sorts the items of an array. It takes two arguments to compare and sort it accordingly.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;//sort
const sort_product = product.sort((input1,input2) =&amp;gt; (
  input1.price &amp;gt; input2.price ? 1 : -1)
);
console.log(sortProduct);
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:-&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;0: {id: 4, category: 'OnePlus', name: 'Nokia24', start: 2010, price: 50000}&lt;br&gt;
1:{id: 5, category: 'Nokia', name: 'Iphone11Pro', start: 2011, price: 60000}&lt;br&gt;
2:{id: 3, category: 'Samsung', name: 'GalaxyS45', start: 2009, price: 80000}&lt;br&gt;
3:{id: 2, category: 'MI', name: 'Note8', start: 2008, price: 90000}&lt;br&gt;
4:{id: 1, category: 'IPhone', name: 'Iphone11Pro', start: 2007, price: 100000}&lt;br&gt;
5:{id: 6, category: 'Iphone', name: 'Iphone14pro', start: 2012, price: 120000}&lt;br&gt;
length: 6&lt;br&gt;
[[Prototype]]: Array(0)&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;strong&gt;5. REDUCE&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The reduce() method iterates through an array and returns a single value.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const product_ids = [1, 2, 3, 4];
const reduce_product_ids = product_ids.reduce((previous, current) =&amp;gt; {  
  return previous + current;
});
console.log(reduce_product_ids);

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output:-&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;10&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Follow for more.&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%2Flmevg7vh1lu5knckm8cb.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%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Flmevg7vh1lu5knckm8cb.gif" alt="Done"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>JAVASCRIPT : AJAX AND FETCH</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Sun, 29 Jan 2023 17:57:44 +0000</pubDate>
      <link>https://forem.com/prerna0202/javascript-ajax-and-fetch-5oh</link>
      <guid>https://forem.com/prerna0202/javascript-ajax-and-fetch-5oh</guid>
      <description>&lt;h2&gt;
  
  
  &lt;u&gt;&lt;strong&gt;INTRODUCTION:-&lt;/strong&gt;&lt;/u&gt;
&lt;/h2&gt;

&lt;p&gt;&lt;u&gt;&lt;/u&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  AJAX
&lt;/h3&gt;

&lt;p&gt;AJAX is a technique for sending or requesting data without have to perform a page load. If you have ever used a single-page application like Gmail and Google Maps, this is how you are able to go through your inbox and navigate through the map without changing the page you are on. AJAX stands for Asynchronous JavaScript and XML. Asynchronous code is code that runs in parallel with something else, so in this case, you can request or send data without affecting your browsing experiences.&lt;/p&gt;

&lt;h2&gt;
  
  
  XML
&lt;/h2&gt;

&lt;p&gt;XML, standing for Extensible Markup Language, is similar to HTML but is used for data transfer, just like JSON. The only problem is that XML is typically heavily, harder to read and doesn't integrate as gracefully as JSON does with JavaScript.&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;dog&amp;gt;
  &amp;lt;name&amp;gt;Rishi&amp;lt;/name&amp;gt;
  &amp;lt;age&amp;gt;10&amp;lt;/age&amp;gt;
  &amp;lt;weight&amp;gt;30&amp;lt;/weight&amp;gt;
&amp;lt;/dog&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Because of XML's downsides, AJAX originally created to be used in conjunction with XML, is now more popularly used with JSON instead.&lt;/p&gt;




&lt;h2&gt;
  
  
  MAKING AJAX CALLS WITH FETCH
&lt;/h2&gt;

&lt;p&gt;Instead of making AJAX calls using the original method, via and XMLhttpRequest, we will be using the modern fetch instead.&lt;/p&gt;

&lt;p&gt;We will be using JSONplaceholder as the source of the information, and get their posts. If you were to click here, you will see the data that we are going to try and fetch.&lt;/p&gt;

&lt;p&gt;With this data, you can do then do whatever it is that you had like with it. You can add it to the page, perform calculations on it, or pretty much anything.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;// base url
let base = '&amp;lt;u&amp;gt;https://jsonplaceholder.typicode.com&amp;lt;/u&amp;gt;';

//use fetch on the /posts route, then pass the response along
fetch(base + "/posts").then(function(response){
      // with the response, convert it to JSON, then pass it along
      response.json().then(function(response){
           //print that JSON
           console.log(json);
     });
});
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Transferring JSON via AJAX from a server is not the only way you can provide your website with the data it needs to function. You can take advantage of client-sided methods of storing information, like cookies.&lt;/p&gt;

&lt;p&gt;Follow for more.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>tutorial</category>
      <category>programming</category>
    </item>
    <item>
      <title>CSS-Flexbox</title>
      <dc:creator>Prerna Sharma</dc:creator>
      <pubDate>Tue, 30 Aug 2022 13:05:10 +0000</pubDate>
      <link>https://forem.com/prerna0202/css-flexbox-3cd6</link>
      <guid>https://forem.com/prerna0202/css-flexbox-3cd6</guid>
      <description>&lt;h2&gt;
  
  
  What is Flexbox?
&lt;/h2&gt;

&lt;p&gt;Flexible Box Layout (Flexbox) is a CSS3 web layout model. The flex layout allows responsive elements within a container to be automatically arranged depending upon screen size.Flexbox consists of Flexbox Container and Flex items&lt;/p&gt;

&lt;h2&gt;
  
  
  Flex-Container
&lt;/h2&gt;

&lt;p&gt;The outer box, which contains flex-items, is created using display: flex;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
display: flex
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This defines a flex container; inline or block depending on the given value. It enables a flex context for all its direct children.&lt;/p&gt;

&lt;h3&gt;
  
  
  Flex-Items
&lt;/h3&gt;

&lt;p&gt;Direct children of the flex container&lt;/p&gt;

&lt;h2&gt;
  
  
  Flex-Direction
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Column
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bTAiPy_H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hkimbemicf7y4laj0xxw.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bTAiPy_H--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/hkimbemicf7y4laj0xxw.png" alt="Image description" width="756" height="3073"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 flex-direction: column;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Row
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--bFmfUWbu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/277savq0lst53c74fjwj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--bFmfUWbu--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/277savq0lst53c74fjwj.png" alt="Image description" width="800" height="198"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 flex-direction: row;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Column-reverse
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s---e_LLjIl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixoqlyauv19x50bqr4ki.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s---e_LLjIl--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ixoqlyauv19x50bqr4ki.png" alt="Image description" width="750" height="3053"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 flex-direction: column-reverse;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Row-reverse
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--h5Tb79eH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wx6navws71hbhog0nxul.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h5Tb79eH--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/wx6navws71hbhog0nxul.png" alt="Image description" width="800" height="214"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 flex-direction: row-reverse;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Justify-Content
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Space-between
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--EHKgmAgW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/spbv92yulpc78aembyc8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--EHKgmAgW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/spbv92yulpc78aembyc8.png" alt="Image description" width="800" height="198"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 justify-content: space-between;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Space-Evenly
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--rVl5CmMO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9q0ew2bq6u3js59m4cuj.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--rVl5CmMO--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/9q0ew2bq6u3js59m4cuj.png" alt="Image description" width="800" height="203"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 justify-content: space-evenly;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Space-around
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--I5Oq2TEb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mkvwiw6i21hdvvx5t6a0.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--I5Oq2TEb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/mkvwiw6i21hdvvx5t6a0.png" alt="Image description" width="800" height="191"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 justify-content: space-around;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Align Items
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Center
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--B948P1_G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zne92dturzbukrvbqt5a.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--B948P1_G--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/zne92dturzbukrvbqt5a.png" alt="Image description" width="800" height="226"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 align-items: center;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Flex-start
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--XKMf_gtW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvgk1lugxf53o85gqnr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--XKMf_gtW--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/bvgk1lugxf53o85gqnr2.png" alt="Image description" width="800" height="205"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 align-items: flex-start;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Flex-end
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--aEG9t7bG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r97h39uqcns6o8mvtobm.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--aEG9t7bG--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/r97h39uqcns6o8mvtobm.png" alt="Image description" width="800" height="197"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 align-items: flex-end;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Flex-Wrap Properties
&lt;/h2&gt;

&lt;h4&gt;
  
  
  Nowrap
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ocQZjGnb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsma1yl4g750nf803fr2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ocQZjGnb--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fsma1yl4g750nf803fr2.png" alt="Image description" width="800" height="211"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
  flex-wrap: nowrap;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Wrap
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--Xz6F8sYT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c2lmai2qfrekncob9s8b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--Xz6F8sYT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c2lmai2qfrekncob9s8b.png" alt="Image description" width="800" height="963"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
 flex-wrap: wrap;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  Wrap-reverse
&lt;/h4&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--vLxapvy6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/903jh40wiwobzv5z3ueu.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--vLxapvy6--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/903jh40wiwobzv5z3ueu.png" alt="Image description" width="800" height="989"&gt;&lt;/a&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.flexbox {
  flex-wrap: wrap-reverse;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>css</category>
    </item>
  </channel>
</rss>
