548 karma · joined September 22, 2016
Aside:
I work (and lead the development) on Notesnook, an end-to-end encrypted, open source alternative to Evernote. Since we are based in Pakistan, our pricing has been really competitive at just $4.49/mo (compared to $17.99/mo of Evernote). And best of all, we have one of the best Evernote Importers around: https://importer.notesnook.com/
If you'd like to learn more about Notesnook: https://notesnook.com/
Feel free to ask me any and all questions!
Deno doesn't intentionally control where and how you import dependencies as long as the code in the dependency is valid and I think that's better than gatekeeping domains. Deno has permissions built-in just for this - i.e., if a dependency goes rogue, there's some level of control.
Consider node/bun on the other hand. If a dependency goes rogue, there's virtually nothing stopping it except system permissions. That's a lot worse than deno.
I think Deno tries to solve the core issue with running untrusted code (like a browser does to some extent). Dependency control can only go so far. So no complaints here.
This also gives Deno flexibility to support package.json with the same exact security guarantees. Isn't that better?
Once I thought that there's no mastery in programming. That you just learn and kept of learning until you were ashes and bones. But that isn't true just as it isn't true for chefs, blacksmiths, painters, and other artists. If they have a certain standard where a practitioner becomes a "master" then so should programming.
I don't have a lot of experience/knowledge of how masters in other areas are judged but I see one common theme:
If you give a piece of rusted metal to a novice blacksmith, he wouldn't know what to do with it. Or even if he works it, it won't be something to be proud of. Give the same piece to a master and you won't believe what he makes of it.
Similarly, give an egg and some onions to a master chef and see what magic he brings.
Sure, knowledge about the trade matters and years of experience as well but if you strip all of that away, you'll see this steady confidence to be able to do anything (not bravado or foolhardiness) in their trade regardless of the resources and tools.
If we translate that to programming, we slowly realize that the toughest programmers are ones who can solve problems at every level, in any environment, under any condition. I am not saying that they are happy doing it (just as a blacksmith won't be happy working with rusty metal) but that they have the ability to just make things work and work in a good way.
All that may be very vague since its all just theory and I am basically thinking out loud but in these times when every one has the same access to the same information, I don't think it'd be a fair criteria to judge based on how many books you have read.
There's so much to be said on this to better classify the "mastery" of programming. In my opinion, masters of the trade are always rare. There are many who are close to this level of expertise but only a few you reach and surpass it.
Note: As I said, I am thinking out loud. I could be wrong and if so, feel free to point that out.
This is really exciting because:
1. There aren't any good fully featured GUI text editors on Windows (aside from vscode). No, IDEs don't count because they are either too bloated or too focused on a single stack.
2. An integrated terminal finally allows Kate to be feature complete on Windows. It was one of the biggest missing features compared to other platforms.
Really excited to try this out!
Otherwise looks really cool.
A lot of code smells arise from this attitude. DRY is not mandatory. Oftentimes, repeating yourself is better and clearer. It allows you to grow both functions at their own pace, handle edge cases separately, prevent spaghetti code, write better & simpler tests.
We are working on open sourcing the sync server so it can be hosted later on.
F-Droid is also coming.
No, and the main deterrent for this is our commitment to keeping everything E2E and client-side. Something like Tessaract or Paddle might work for OCR but I haven't looked too deeply into it.
Yep. Everything is offline-first stored right on your device. Syncing works mostly well but there a few rough edges which we are sorting out.
> Can I import my existing Evernote notes?
Yes. We have an official importer: https://importer.notesnook.com/
I might be mistaken in my viewpoint however, of later I have noticed a huge trend toward providing user experiences that target a team workflow. Personal workflows are an afterthought, at best. For some tools this works out but for note taking apps I think it creates a huge void. Not everyone wants a thousands ways to integrate, publish whole websites, buy & sell, and create presentations using their notes app.
This is not a problem specific to bi directional linked note taking systems. Anyone who takes a lot of notes knows that majority of their note database is never touched again. Most notes have a very limited time span after which they are just garbage. Note taking systems are not optimized for this. They try to be a "second brain" excluding the forgetting part. It can't be done no matter how you organize or connect your notes.
After a time you'll realize organization of notes is an unnecessary burden. If you really want to find a note, you'll almost always use search.
We used to ask our users 90% of the standard password requirements (min length 8, 1 special character, 1 digit, 1 capital etc). The result was a lot of people forgetting their password and having a really bad first impression. We were following "best practices" but the user didn't care.
In the end, we took out all the requirements except one: password must be 8 characters long. While we knew this wasn't recommended, especially for a private note taking app, it was a necessary choice because a lot of people either just modified their old passwords or used new ones which they forgot and got locked out. Good security but...if you also get locked out, what's the point? As for people who used password managers, it doesn't matter either way.
A lot of people sign up just to try out the app. Nothing serious. Nothing too critical. If they get locked out after their first usage, it's goodbye from them. I think there are a few things apps can do to improve security without annoying the user too much:
1. Show user a notice inside the app if the password is below a certain strength threshold, recommending them to change it.
2. If the password is reused or compromised, show a permanent warning either on startup or somewhere noticeable inside the app.
3. Promote use of password managers during sign up (and other places)
Ultimately, it should be up to the user to decide if they really want to change their password or risk having their account comprised.
None of these are tested though so I am not sure what the UX would be...
You still have to remember those keywords you added so you haven't gotten rid of the memory problem. If even one moving part fails to function properly, the whole system will break so you haven't solved the maintainability problem. And clearly, this doesn't solve the time problem either.
When I bookmark something on HN, it is usually because I don't have enough time to read it or I want to read it again later on. I don't bookmark comments or save them. Not because they aren't interesting but because informal content like comments are really easy to understand. They are short and to the point.
So I take what information I can and move on. If I forget...well, maybe it wasn't that important to remember in the first place. If I forget but want to remember, which is rare, I can just go through the bookmarks, open the relevant link, and go through the comments again or Ctrl + F if I remember something. This is rare. So rare that I can afford to do it manually.
The problem with "knowledge assimilation" aka note taking is that after a certain point, you have more "knowledge" than you even want. The extra becomes noise. At first, the idea to clip and save anything interesting seems so fascinating but soon you realize that you have saved so much that it's become a problem.
That's why using the right tool for the right job is important. Bookmarks are perfect for things you want to save without them getting in the way of more important things. They are just a list. Nothing overkill. No complex organization. No complicated processes. Just press a button and viola!
I do, however, commend the ingenuity of the OP in making such a system. I wonder how long it took to set this all up.
In the end, it's money so I get why it has to be so long form and time consuming but I think a lot of really good projects will either not take the time to enroll or give up in the middle.
In my opinion, such a fund should be set up for both big projects with orgs behind them and small projects with only a few people. Otherwise, it doesn't actually benefit or encourage anyone. Of course, the amount of funding could be relative to the size and impact but everyone should be encouraged to enroll. That way OSS can become a truly sustainable system.
There's a limit to how much integration you can add via an API. Not to mention that a lot of services don't even have an API or have outdated ones.
> By displaying directing the content you save one click and you make the workflow more natural (and it also gives the idea to do it, if a user see a link in a blank document he will like "meeh why would you do that", whereas when you see an iframe, you get the logic easily).
Not sure what you mean here by "link in a blank document". Why not just directly open the 3rd party app in a new tab when you click on an entry in a side menu? There's no click saving, really. You are just embedding the tab that'll be opened.
The other problem is that most apps are not built to be embedded in an iframe. While they might appear to work normally initially, one click could break them because iframe is not the same thing as a normal browser window. Of course, you could provide various workarounds for it but the experience will be subpar at best.
About storage: since the app is electron based, it stores everything in IndexedDB. I didn't want to use something separate because it'll add extra stress. However, your point about mentioning where things are getting stored is important. I'll make those changes ASAP.
> Ideally the note taking system would have open and documented format.
It's really just HTML. It's not stored in local files but the content of notes is actually just plain, normal HTML.
> When importing a .md document, the first line "# heading" was set to be paragraph type.
Hmm. That's probably because I turned of H1 since there's already a title at the top. Should the title be separate?
> but Pro version popup is triggered.
This can be annoying. It has been on my backlog to fix this and make it less annoying but I haven't gotten to it so far.
> It would be much cleaner cut if only syncing service is paid.
I took the opposite route with Notesnook. App functionality is limited but you get unlimited syncing to unlimited devices.
> In general I would love to be able to restrict formatting UI to just markdown features. I don't want to accidentally change font size or mess with text alignment. All included options for text formatting are just noise to me and I prefer simplicity in note taking.
Or in other words, a way to hide the toolbar. I noted it down for later.
Thank you so much for taking the time to point all these small things out. Means a lot.
Noticed this so wanted to pitch in. Notesnook [0] solves most of these.
There is full markdown support, import from all the big note apps, you can share notes with anyone via Monograph [1].
Internal linking between notes is planned.
Google Keep is a awesome but only for taking quick notes. You are stuck as soon as you want to write something longform. Not to mention the privacy implications.
This is so important. I feel most note taking apps approach note taking the wrong way: organization first, ideas later. Most of our notes are random and the only real organization they can fit into is time.
I have recently launched a note taking app [0] that keeps this in focus. In my opinion, "organizing notes" is often done after "writing notes" and that is how the app is built.
1. Note taking is a fast activity - you can take notes from any where in your phone, opening the app is fast, the steps to actually writing a note are frew, the note editor is uncluttered and stays out of the way, and the app works anywhere you have a browser & an internet connection.
2. Time is a first class citizen: all notes are sorted by date created, grouped by modifiers like year, week, month & alphabetical.
3. The app doesn't force you to organize your notes i.e., there's no special distinction between organized and unorganized notes. Some apps put unorganized notes in a specific folder or tag. Not so with my app. The focus is on writing notes; organization comes later.
4. Recalling notes is currently not the most amazing thing. There is full text search, however I feel like that's not enough. Things like similarity search (based on tags) or advanced filtering are yet to be implemented.
I think all these fit well into the incremental note taking system. However, that's a coincidence really.
There's a lot missing in Joplin. Notesnook is not going after Joplin though; it has already crossed it in terms of privacy, security, portability, and UI.