Week 3 - Quick Note, our firefox extension
This week, my teammates (Haocheng Lu and Alvaro Martinez) and I developed Quick Notes, a efficient note-taking extension for Mozilla Firefox. Click ‘READ MORE’ to see more details!
Progress So Far
So far, we implemented the following functions in Quick Notes:
- open a sidebar and take notes.
- save and load notes locally.
- render support for Markdown and LaTeX; seamless switch between source mode and preview mode.
- scroll down or drag to change the size of the editor.
Ctrl-Z
to undo previous changes, which is not naturally supported in the editor.
Problems \& Solutions
During the process of development, we faced several technical problems:
- the logic for Markdown and LaTeX rendering is very complicated, almost impossible to implement from scratch in less than 2 weeks.
- solved by using existing packages, Marked and MathJax.
- we could not choose the path to save notes. They are saved to
Downloads/
by default. The JS script does not have access to the file system of the local machine. - we leveraged the
browser.downloads
API as a workaround - the editor still fails to render LaTeX code enclosed by ‘$’. Some documents indicate this is due to conflict between Markdown parsing and LaTeX parsing. Maybe we need to re-configure the 2 packages to solve it.
Collaboration \& Contributions
My team mates and I had frequent communication by text message and seamless collaboration with Git. As for me, I mainly contributed to the Markdown \& LaTeX rendering function, switch between modes, custom save \& load path, and most of the documents in this project.
Surprises
I was not fluent in Javascript and HTML before I joined this class (the only experience I had in these 2 languages was a graduate Computer Graphics course I took last semester). However, I was surprised to notice as long as I understand the structure of the project, it’s easy to pick up the relevant HTML and JS grammar and apply it to this project.
Besides, through this project I realized contributing to an open-source project is such a pleasure. The moment you see your push is completed, all the effort seems worth it.