Show HN: VNote, a fresh Markdown note-taking app
tamlok.github.io
tamlok.github.io
Jokes aside, this looks nice! Especially good to see that native C++ development (even if it's in Qt) isn't dead.
I am not very satisfied about current Markdown editors or note-taking apps. Most Markdown editors use side-by-side live preview to minimize the gap between the edit and read of Markdown. People usually think of "live preview" when it comes to Markdown, which is really a MISUNDERSTANDING about Markdown.
So I want to develop a note-taking app with pleasant Markdown experience, which try to minimize the gap of Markdown by carefully-tuned syntax highlights and in-place image preview.
Give VNote a try and you will be surprised by the simple and pleasant experience VNote provides. :)
I'm wondering how would you go about keeping notes with many links readable? For example, in this note imported from Wikipedia [1] the left side is hard to read while the right side doesn't have this problem. Some users have also been importing entire web pages, which are a mess of tables and links. They render fine in HTML but are not readable in Markdown.
About side-by-side live preview, I hate the feeling of moving eyes left and right frequently and try hard to keep track of where you are.
I commented about that a few days ago:
> It's funny. Every week there is a new note-taking app being shown in HN. (and the usual guy raving about org.mode :) )
> Many of them are similar but not equal. It really shows that there is a need for these apps but the problems they are thought to solve are unique from person to person.
> I know this because I'm starting to build my own note-taking app.
I keep on seeing people complaining about Electron here, but it's brought about an age of hundreds of thousands of applications that have compatibility across OS' to do very specific tasks.
I just feel that the ~80MB memory usage and large file size (30-60MB) is inconsequential in modern computing.
Performance in Electron-based editors (e.g., Atom) is horrible. When you're used to vim or fast GUI-based editors like Sublime, even typing in Atom feels sluggish. That's not even talking about loading large files, search-and-replace operations, multiple cursors, etc.
Example stats: https://blog.xinhong.me/post/sublime-text-vs-vscode-vs-atom-...
Resource usage can be justified if the that resources is used toward something meaningful. C is "slower" than assembly, yes; however both assembly can be inlined into C, and magnitudes more can be done with C at near-assembly speeds.
I develop in C/C++/Python mainly and in some other languages for fun and curiosity. Python is easy, but it's not as performant unless the underlying library is native, hence nobody is using it if it can't obtain very high performance in my field (scientific computing, HPC, and related areas).
Actually, writing a low performance GUI is pretty hard since most of its cycles are idle. If you can write an application with a GUI which slow to respond to low-complexity, common tasks (naive text editing, input, menus, moving windows), something is very, very wrong (to be clear, GUI can trigger resource intensive background tasks, but that's not what I'm saying).
This is an over exaggeration, and quite a large one. Facebook just released information on the average memory usage of "nuclide" (their Atom editor bundled with a metric ton of plugins which use quite a lot of memory) to be around 600mb. And that's not indicative of a "normal" Atom user (if there can be such a thing).
I personally have currently 5 windows open in atom, with about a combined 40 tabs, and about 30 plugins installed, and my instance is using 360mb of memory right now across all processes. And those windows have been open for about a week now.
And that Atom instance is running a lot of what your Eclipse instance is running. Linters, autocomplete, code analysis tools, CI server integration, a webserver for serving up my application in the editor, a debugger that links the live preview in the editor with the code in the editor, and a ton more.
Switching to something which uses a few hundred less MB of RAM for a fraction of the capability would be a monumentally stupid thing to do, as Atom makes me significantly more productive than any other editor I've tried has ever before.
There are a lot of problems with Electron, but memory usage isn't one of them any more. It can be, just like with any language/platform, but it's not "inherent" to the technology.
* 1 front-end react monorepo which contains a handful of front-end projects with about 50k LOC of js files only across them all
* 1 backend node.js projects with about 7k LOC
* 2 npm packages that I'm working on. One that's like 300 LOC total, and another that probably hits around 1k (haven't measured, just a guess)
* 1 go project that I'm hacking on in my spare time, but I just keep the window open because why not? this has about 1k loc.
It looks like you're a web developer, I'm not. I develop at the system level, and for development scenarios Atom is nowhere capable as Eclipse, and seriously that's OK. Every IDE has its niche. I used atom as a pretty text and script editor for my needs, but its auto complete capabilities left too much to be desired for me.
Honestly, maybe atom was not optimized for better memory usage before. Maybe there were memory leaks. Maybe my build was buggy (I used an official deb package BTW), or maybe he tested a buggy version, but these problems were (or are) real for some other people, and they may have been solved or not; but I'm neither the only, nor the last people who talked about excessive memory usage of atom.
I loved atom when it first came out. I tried to migrate to it, but it has burned me with its radioactivity. So I returned to my dark corner under Eclipse to work and recover.
Atom has made significant strides in the last year reducing that overhead, but the 800 mb from that article was a bug, and was if i recall fixed in the very next version, reducing the total memory usage from opening that large xml file to basically nothing. Even your article shows that it started with a ~250mb memory usage, but the article didn't go into detail about what happens when you open a ton of files (the memory usage only increases a small amount with each file). The overhead is large, but it's fairly static. And judging a program by it's baseline memory usage when using it for it's most trivial tasks seems silly. It's like complaining that your OS takes a minute to boot up just to edit a text file, when VIM can start up in a hundred milliseconds!
>I develop at the system level, and for development scenarios Atom is nowhere capable as Eclipse, and seriously that's OK.
I completely agree! I just hate when there are perfectly valid problems and issues with a technology, but people ignore them and jump on the bandwagon of a non-problem.
Just like how there was a time when Emacs was a laughing stock for being so resource intensive, things improve, bugs are fixed, programs are optimized, and hardware gets more capable. Judging programs by what they once were is an easy trap to fall into, but it's not helpful for anyone.
Same for me. I didn't intend to 'bash' atom and electron. I just wanted to point some problems with it. If my style sounded like bashing, I'm sorry, it was unintended.
> Atom has made significant strides in the last year...
Honestly, I may give it another shot, as a semi-IDE rather than a complete replacement to my Eclipse setup. I love to explore new applications and see what they do right and where they lack.
>I may give it another shot...
If you do, I recommend doing a complete uninstall of it, delete your `~/.atom` folder (or `%USERNAME%\.atom` on windows), and reinstall from scratch. I'd also recommend trying out the new-ish "Atom IDE" set of plugins [0] which works fantastically for languages that have an IDE plugin (javascript/typescript, C#, Java, PHP, and some still-kinda-early-stage ones for Go, C++, and rust right now). I don't know what it is about the "IDE-*" packages, but they don't install well to "aged" setups, and they don't uninstall well either. If you don't like them, i'd recommend wiping clean again before moving on... (all the customizability in atom comes with the major downside of needing change-management in your goddamn editor...)
I'll freely admit that the amount of time I sunk into getting my atom install the way I like it probably approaches "not worth it" levels (I tend to do that with any editor!), but spending an hour or 2 looking for and playing with packages really pays off now.
Java will probably always be better off in a "made-for-java" IDE, but i've done a fair amount of C++, PHP, and Go work in Atom and it's a breeze.
I sometimes make the same thing. It's perfectly OK, we are all human. We all have some technology we like to protect as our only child (my soft spot is low-level & high performance tech). The key is to be able to recognize one's reaction and tune it little by little. I had my share in both sides of a flamewar and I'm very well done in that respect. BTW, I didn't feel like you did. I just wanted to say we sometimes overreact, and even if we don't project it to otherside or just to outside, we can learn from the experience.
> If you do, I recommend doing a complete uninstall of it...
I've completely removed every atom related folder from my home folder some time ago. I'll install the latest .deb package and progressively experiement with it. I won't tie anything important to that setup, so it will be an experiment bench for me.
I'm using Eclipse for ~10 years, so I know the effort you put into setting it up. It's always worth it, don't worry. I maintain three eclipse installations (home, office, laptop) and they sync their settings over Oomph. So when I improve something in one, all three benefits :) When you use something for a very long time and set it up to your liking, it feels like home. :)
Meanwhile, my very well kitted-out MacVim is currently cruising along at 35.9MB.
Quantity over quality seems to be the recent trend.
The general reason for the performance of C/C++ apps is that the language forces you to care about your memory usage. The lack of a garbage collector ensures that you think twice about what memory you allocate and free. Someone with a background in c/c++ will write efficient electron apps. Their past experience ensures that they reflexively write good code.
I wrote an electron based music player that uses less memory than a native player developed in c# that i wanted to replace. I spend an hour reviewing and profiling every feature that I add to ensure that i am not wasting memory. And it shows.
People need to understand that it is not the platform that is slow. It is the stupid code that you write without a thought that is the problem.
I previously use [CMD Markdown](https://www.zybuluo.com/mdeditor) to edit notes, which is developed in Electron. It is really painful to alternate between multiple note tabs in it.
VNote is faster though it combines C++ and JS via QWebEngineView.
Nowhere is Electron mentioned and still comes the hate. A close friend of mine (not a web-developer, unlike me) has a very popular app (>10K users) which uses Electron and he got only around 30 performance complaints last year and all of them could be solved without rewriting the damn thing. The app has a giant "Feedback" button in the main view and there are at least 10 bug reports / suggestions per day (I manage the support desk).
This is getting to the levels of this silly Java hate because everyone thought the performance of Eclipse from years ago still is the state-of-the-art for Java development. There are many bad electron-based apps, that is for sure and completely normal because the barrier to entry is so low. Yeah and there is Slack, but don't complain if you gave up IRC for that incompatible piece of... Whatever.
Sorry for the rant.
- uses more RAM than an electron app
- takes up more disk space than an electron app
- looks no more native than an electron app
- resizing is jankier than an electron app
So where are the advantages again?
For pure writing, I use iA Writer, but its library/organizational features are lacking.
I like the UI, and the mixed edit/syntax view.
The documentation hasn't really been written yet, which is a bit sad, as I kinda wanted to dive into themes and templates, but I don't think it'll take too long to work out how to make them.
Search is lacking, but high priority so hopefully I'll see it soon.
Thanks!
Thank you, I will use it and see if it will stick, thanks for making it.
If you click "Screenshots" and then "Features" in the top menu, it will just add the "#feature" anchor to the page (instead of going to the home page.
The obvious differences to code editors may be:
1. In-place image preview. Preview of formulas and flowcharts will come soon. This really help user to focus on the content without a side-by-side live preview or alternating between read/edit mode frequently. 2. Note management. VNote handle stuffs like images, attachments, and tags in the future.
Do you have any thoughts/future plans of making these accessible from mobile platforms or web?
Currently I use other apps to record thoughts anytime and anywhere via phone and reorganize them in VNote.
VS comparing to a product such as Bear:
Does this mean it will support multiple formats?
(Asciidoc is my favorite and I'm currently using https://github.com/asciidocfx/AsciidocFX or just edit in VSCode or directly on GitHub/GitLab.)
I plan to enable it to support managing and editing source files, with which we could use VNote to store code snippets.
I also want to support infinite list format like WorkFlowy. But it seems that cerrently I need to focus on md files first.
VNote is a Vim-inspired Note-taking app. That is where "VNote" from. Give it a try :)
2) Would be especially useful if it had a mobile client. (Although I know there’s several mobile markdown editing apps, if it had Jekyll / static site generation - that’d be really nice)
VNote uses notebook to manage notes. A notebook could be local, or synced via Dropbox. So you could use git to manage your notebook, too. Integration with git will be considered in the future.
https://github.com/amitmerchant1990/electron-markdownify#key...
This is an H1
=============
and This be H2
----------
I find those to be more readable sometimes, but it seems Vnote doesn't recognize them as headings.