Week 3 Haocheng Lu Post
Team Collaboration on Browser Extension Development
With our team’s collaboration, we successfully developed a browser extension that allows users to open a sidebar for note-taking, supporting Markdown and LaTeX syntax. Users can save and load notes locally at any time, choosing their preferred storage path. We also provided separate panels for source code editing and previewing, enhancing user experience with a friendly interface.
Progress and Achievements
The most satisfying achievement was successfully implementing Markdown and LaTeX syntax rendering, allowing users to preview their notes in real-time. The extension supports both source code editing mode and preview mode, making the note-taking process more efficient.
Challenges Faced by the Team
Despite the progress, we encountered several challenges during development:
- Markdown and LaTeX Rendering Issues: Direct compilation was not possible, and we had to find appropriate libraries for parsing and rendering.
- Note Saving Path Issue: By default, notes were stored in Firefox’s download directory, but we wanted users to choose their preferred save location. To achieve this, we created a URL for targeted downloads.
- Editing Mode Interaction Issue: Since we provided both source code mode and preview mode, managing the interaction between the two text boxes was complex. Size inconsistencies often occurred, which we resolved by encapsulating them into a class.
- Undo Functionality: The extension did not support
Ctrl+Z
undo functionality, so we had to implement a custom save and undo logic to allow users to revert changes conveniently.
My Role and Contributions
Regarding team responsibilities, our collaboration was well-structured. I was mainly responsible for setting up the overall project structure and ensuring a logical division of functional modules. Specifically, I worked on the data integration between source code mode and preview mode, enabling seamless switching between the two. Additionally, I actively participated in discussions, identifying new features with teammates, testing each other’s work, and fixing errors promptly.
Personal Growth and Surprises
During this collaboration, I was surprised to discover my ability to quickly translate verbal discussions into code implementations. This skill allowed me to efficiently understand team requirements and immediately consider how to implement them in code, improving both development speed and team communication.
Conclusion
This project not only enhanced my technical skills but also deepened my understanding of the importance of teamwork. Clear division of tasks, timely communication, mutual testing, and iterative improvement are key factors for a smooth development process. Through this experience, I gained valuable insights into effective collaboration and look forward to participating in more team projects in the future.