Coding Period GSoC'23 | Week 3 + 4 + 5
Tags: gsoc, javascript, programming, webdev
Published: 2023-07-06 09:38:12


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.

---
## **Work Done (12th June - 5th July):**

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.

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:

- **Simulator Crash Recovery Task**: 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.
- **State Machine Task**: 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.

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.

Next, I began working on another task, which involved exposing helpful functions for debugging circuits. I created four functions for this purpose:

1. **load()**: This function takes circuit data as a parameter and draws the circuit on the canvas.
2. **removeBugNodes()**: This function removes nodes with bugs from the circuit.
3. **Next()**: This function takes the circuit to the next state.
4. **Previous()**: 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.

## **Pull Requests:**

- [Implemented safe recovery from simulator crash](https://github.com/CircuitVerse/CircuitVerse/pull/3767)
- [Implemented state machine for simulator](https://github.com/CircuitVerse/CircuitVerse/pull/3781)
- [Better system for high impedence values](https://github.com/CircuitVerse/CircuitVerse/pull/3858)
- [Added helpful functions for debugging of circuit](https://github.com/CircuitVerse/CircuitVerse/pull/3870)

## **So, What's Next?**

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.
In the upcoming week, my primary focus will be on completing the following tasks:
1. '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.
2. 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.

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.