Yank Note is a note-taking app I wrote for programmers. This is the first of several articles I will write about Yank Note.

origin

I’ve been experimenting with note-taking apps since college, from Sublime Text to direct file editing, to evernote, OneNote and other cloud note-taking, and finally I chose To take notes for knowledge.

But later, notes for knowledge began to charge, more and more bloated, slow response, Bug. Eventually, I gave it up. It took some work to back up my notes, and I began to lose faith in cloud products. What was on my computer was really mine.

So I started looking for a local note-taking app. Of all the products I used on and off, Joplin was the one I used the most, but I wasn’t completely satisfied. Later, I fell back to using Sublime Text to write Markdown.

Finally, one day three years ago, I decided to write a note-taking tool for my own use. Over the course of the afternoon, I cobbled together the first working version. Use Node.js as the server and Vue as the front end. How functional is it? Only reads and writes files; There are no buttons, only shortcut keys; Interfaces are haphazard. It’s an ugly notepad.

I didn’t know what I needed or what I was going to do. It was only later that I found that purpose

  • Interface word big eye 🙂
  • Markdown writing
  • Image files are saved locally, and exporting Markdown files makes it easy to work offline
  • Support for some process diagrams drawing plantuml Avi
  • Support encryption and decryption, used to save accounts and other private files, files can be set separately password
  • Don’t need any more fancy features, just simple enough to work with
  • Try to rely less on the tripartite library, also do not spend the effort to maintain, hash together the function, just work
  • Run the PHP Python Node.js code block in the document

And in this case, the interface looks like this

Generally speaking, at this time I am still in accordance with their own ideas to do this application, not considering whether beautiful, whether convenient, as long as the function to meet their needs.

Then one of my colleagues found it useful and started using it. I posted a post on the Nuggets Markdown editor (for my own use) and digger @kda commented, “Please update it. It works.” So I began to wonder if this thing could be perfected for someone else besides myself.

But at this point, IT turns out I haven’t given the editor a name yet. GitHub warehouse name is arbitrary “yn”, so follow that, officially named “Yank Note”

In order to facilitate the use of others, also decided to adopt Electron development, convenient start-up operation.

evolution

Here I thought again, what kind of note-taking app do I really need, and finally I decided on the following principles, in order of importance

  1. Reject cloud services: Data should be stored locally and applications should be run on the local computer. Backup and synchronization can be done through Git or cloud disk, private notes, and no collaboration function is required. Even map bed, do not use, save local.
  2. Reject proprietary formats: Use Markdown files for all information, don’t give me json or any other format, and make it easy to migrate if I ever quit.
  3. Open source: a piece of software that I want to use for a long time cannot be closed. If the app author doesn’t update one day, I want to be able to fork a copy myself to maintain basic running.
  4. Expandable: This application should have enough expandability. If I meet some specific needs of myself or have problems with the software, I should be able to write plug-ins or extensions to modify and realize them.
  5. Restraint: The app needs to be simple, not too bloated, not too flashy, not too much animation to interfere with my actions. Notion menu animation, for example, feels cool at first, but drags after use. Some of its tooltips are displayed too quickly and become distractions. I really agree with Sublime Merge’s philosophy here. Sublime Merge is the best-experienced Git client I’ve ever used, and it’s a joy to use.
  6. Cross-platform: I use Windows, macOS, Android, iOS. I needed the app to be cross-platform, at least on the desktop. However, most of my notes and articles are written on my computer. On my phone, I just need to record some ideas. Many software can do this well, such as the memo on iOS. And since file formats aren’t proprietary and aren’t tied to cloud services, many Markdown editors work well on mobile, so cross-platform needs aren’t as strong on mobile.

The above rules are all designed to keep me using a piece of software for a long time. If you agree with the above, Yank Note might be your thing.

I am a standard programmer, back-end front-end embedded are engaged in, occasionally also do a white hat, now mainly engaged in the front end. This makes my notes special. Here are some specific scenarios in which I use Yank Note.

  1. Take notes: This is a basic requirement, I need to take notes with a lot of code, preferably code that is easy to copy and run. For example, when learning some JS features, I will save the code snippets so that they can run immediately the next time I view them.
  2. Work journal: When I first graduated, I used to have a mental record of everything at work. Now I need a place to keep track of my to-do list, work schedule, etc.
  3. Writing articles: I don’t post much. I write a lot of my articles at work, including proposals and documents. It is important that note-taking applications support embedded graphics.
  4. Writing tools: usually in the work, there are a lot of script tools, before are scattered around or less description, the subsequent use is more troublesome. Now they are all organized in Yank Note. Many scripts and code are easier to open and have richer descriptions and UI interfaces.

After the above experience, the Yank Note looks like this

Some of the problems

Here are some of the questions that users have asked me and considered while I was making the Yank Note.

  1. Q: Why C/S architecture? A: I love the browser. I usually use Yank Note in the browser. I can do more things with the browser plug-in. The current architecture focuses on the client side over the server side and will continue to streamline the server side logic in the future.
  2. Q: Why use edit preview separately instead of WYSIWYG? A: One is because I like text. I like to control text. I prefer to write things in code. Second, for technical reasons, rich text editors are hard to do well. I’ve experienced quite a few rich text editors/components, and none of them are as straightforward as I want them to be.
  3. Q: Why is there no toolbar for formatting? A: Again, I like text, not too much UI. Users should use text to control formatting and write Markdown. Users of Yank Note should be familiar with Markdown. Of course, I can be lazy and not do this feature.
  4. Q: why not make VSCode plug-in? A: VSCode plug-ins are more limited, some functions are not very convenient to implement, I still prefer the browser to be simple and direct. This VSCode plugin is great if you need it.
  5. Q: Why not integrate Git and automatically push to Github? A: SEVERAL of my own note repositories are stored on Github, so this is an urgent need. But I still want to exclude Git integration from the Yank Note feature. Every user has their own habits for managing Git repositories, such as I like Sublime Merge. Of course, for convenience, I also wrote a Yank Note plugin to quickly submit and push content.
  6. Q: Why not make it online? A: Yank Note is A C/S architecture from the beginning, but now with some features of Electron, it is still easy to make an online version. For example, the current online Demo is a version that shields interface requests. But as a Web service, it violates my first principle, which is that I don’t want the editor to be out of the user’s control. Another reason is that Yank Note is very open, so it is difficult to consider security issues for the sake of extensibility (I am an amateur white hat).
  7. Q: Would you consider making a double chain note? A: Double-linked notes are hot, but I’ve experimented with some double-linked notes software, such as Obsidian, and FOUND that I don’t need it. Please don’t deify double chain notes. In my experience with actual notes, I most need one-way links between documents, but the granularity doesn’t need to be down to “blocks”, just to headings. I just need to know who is referring to the current document. I’m not a fan of flat note-taking structures, just like writing code, I’m not a fan of having all the logic in one file. I need hierarchy, I need to be able to refer to modules, and it’s enough to know who is referring to the current module. Yank Note needs to strengthen this aspect.

In the future

I’ve been using Yank Note for years, developing features that I and my users need. I’ve improved my programming skills while developing Yank Note, so I’ll continue to develop and maintain it, even for learning purposes.

A few improvements can now be expected in the future:

  1. Enhance the base experience
  2. Simplify server-side code
  3. Strengthen links between documents
  4. Develop simple mobile applications

If you’re interested in using or contributing to Yank Note, you can go to Github to learn more.

This article was written by Yank Note, a Markdown note-taking app for programmers