Hacker News new | past | comments | ask | show | jobs | submit login
Show HN: Jot: Rapid note management for the terminal, inspired by Obsidian (github.com/araekiel)
146 points by araekiel on Sept 24, 2022 | hide | past | favorite | 42 comments



I found Obsidian great, so if this reaches near feature parity and allows me to stay in the terminal, it's a great upgrade already.

Recently though I switched from vim to Doom Emacs and started learning org-mode. This turned out to quite literally be a career breakthrough for me, as I realized how much easier it is with both to remain productive throughout the day and to manage my personal knowledge base, or second brain.

I'd highly recommend everyone to try DE out [0]. I always thought Emacs to be unnecessarily complex, but majority of it is hidden away in special features. DE, especially for vimmers, delivers a lot of very useful IDE-like functionality out of the box, simplifies the hotkeys, provides stellar configurability and, in my experience, just lets fingers flow more smoothly across the keyboard.

Org-mode by itself may seem daunting as well, but it turns out to be designed in a similar fashion - take and use what you need, no hidden complexity or other strings attached. I can recommend Distrotube's tutorials on either [1].

[0]: https://github.com/doomemacs/doomemacs

[1]: https://www.youtube.com/watch?v=Ea_-TaEGa7Y


Org mode has a lot of rabbit holes, but to use org roam (which builds on org mode and Lets you manage a knowledge graph) effectively is surprisingly easy. You need to know how to link to something, how to view backlinks, how to format the tree of text using asterisks to indicate depth in the tree, how to define aliases in a note's Properties drawer, and that's pretty much it.


Cool! Will check it out.


I've got a few zsh functions that let me type "note" which creates a file named todays date (if it doesn't exist), inserts a timestamp, and opens it in vim. When I exit vim, the notes directory is committed to git then pushed up. This lets me keep my notes directory in sync across machines, and available via web (gitea).

  note () {
   DATE=`date +"%Y%m%d"` 
   TS=`date +"%Y%m%d %H:%M:%S"` 
   FILE=$HOME/Documents/notes/$DATE.txt 
   notegitpull
   echo $TS >> $FILE
   vi $FILE
   notegitpush
  }
  
  notegitpull () {
   pushd $HOME/Documents/notes
   if ping -c 1 git.server &> /dev/null
   then
    git pull
   else
    echo "Offline, not pulling changes"
   fi
   popd
  }
  
  notegitpush () {
   pushd $HOME/Documents/notes
   git pull
   git add \*
   git commit -m "Autocommit due to edit of $FILE"
   if ping -c 1 git.server &> /dev/null
   then
    git push origin main
   else
    echo "Offline, not pushing changes up"
   fi
   popd
  }


I have something similar, I made it check for a .notes folder in the current working directory so that I can have per-project notes just by adding that folder in first. I want to add custom filenames as I'm finding that easier to mentally keep track of, like "integration-bug-factfinding.note" is a little easer to find again than "12-22-2022.note". Currently I have these commands:

note //Adds a note to the current days notefile, in the current directory's .notes folder if present or ~/.notes if not

edit-note //Opens the same notefile as above in a text editor

notes //Concats todays notefiles echos displays them

all-notes //Concats all notes ever and echos them, useful to grep for keywords across my history of notes


> It uses the same format of storage as Obsidian...

Can Obsidian and Jot co-mingle in the same vault?

I use Obsidian and am very happy with the git plugin[0] and Working Copy(iOS)[1] for keeping things automatically synced between my phone and desktop(s). Often I find myself dumping notes into random places from the terminal; feeding markdown via pipes. But I then have to remember to collect these artifacts and ensure I fire Obsidian back up for a push. I'd love something that could work "together" with my present setup.

Looks like things are set out quite clearly[2], and Rust looks quite approachable. Very cool stuff!

[0]: https://github.com/denolehov/obsidian-git

[1]: https://workingcopyapp.com

[2]: https://github.com/araekiel/jot/tree/main/src


Now that I think about it, they can, just not right now. What Jot needs is a 'use existing folder as vault' feature like in Obsidian, or an 'import vaults from Obsidian' feature. As an Obsidian user myself, this would be neat. Thanks for the idea! I'll add this to the feature updates list :)


That was my thought / use case too. I'd love the ability to quickly add notes to my existing obsidian if I'm in the terminal. For longer notes, with images, links etc I'd rather use the GUI.

Nice work tho!!!


Funnily enough, this WAS the original idea, to have a cli tool that acts as a sort of plugin for Obsidian, to be used when in hurry. I looked for APIs and libraries that could make this possible but couldn't find any. This will be a great circle back :)


My notes system is established but this tool looks interesting. I essentially create a Github repository and journal computer and software ideas in the open in a README.md with a markdown heading for each note and number the notes.

You can find my journal of 450+ computer software ideas in my profile.

If you're on the fence over what tool to journal with, then I recommend my approach, it just works and it has low barrier to entry, you just need github account, you could even use the web interface to update your journal and edit the README.md.

Whatever tool you use it needs to have low friction so it encourages you to write and you don't forget how to create a post once you set it up.

The important thing about journalling is that it encourages you to write and keep writing which is where the reward comes from.


Sounds great :) Eventually, Jot will have git integration for cross device sync, maybe then, it could serve as a nice addition to your workflow.


That's awesome. I sometimes edit my notes in IntelliJ or in GitHub web interface.

At one point I created an autocommit script that commits every second which you can change the commit message by setting it in a file called "current-task"

Could combine this with automatic synchronization with pulling too.

  #!/bin/bash

  while true; do

     sleep 1

     (cd app ; git status -z;
     git add . && git commit -m "autocommit $(cat ../current-task)" ; git push -f app);

  done > autocommit.log 2>&1


Cool! Just took a screenshot, might need this later. Thanks!

Will add a reference to this comment, if I end up using it. :)


Consider using inotifywait to commit only on changes, rather than just committing every minute.


That's the higher quality solution.

Git commits without any changes added are noops, that's the behaviour I rely on.


Oh it’s does not? What happen if the vault happen to be a git repo? I assumed that would allow to synchronize.

( nothing automatic, no concurrency management of course )


Yes, that would work, requiring a bit more manual work. Git integration within the tool would make that easier & a tad quicker.


Maybe I'm dumb, but I don't see what this is doing besides aliasing `cd`, `mkdir`, `ls` and `nvim note.md`?


Jot's purpose is to ease note management, using vaults stored in different parts of your storage, that can be accessed from anywhere, essentially eliminating the need to manually cd to different locations. This is still in its initial phase, hence the rudimentary features (I prioritized everything I considered basic necessities). I am working on adding more fancy features though, for example, a fuzzy finder.


Fwiw (maybe not much :-)), for me the the killer feature of obsidian is the combination of markdown + inline image rendering + local storage. My notes are typically screenshots + text. Being able to drag and drop a screenshot into a note is primarily why I use obsidian.


Obsidian is an absolute dream, I know. I do still use it for college/research projects (basically anything information heavy), but I've found it to be a bit of an overkill in most of my daily use cases <- one of the reason why I am working on this tool.


I like that this is editor agnostic, but I also think that obsidians killer feature is the effortless linking between notes. That seems to me like it would be much easier to do with an editor plugin.

Do you have any plans to add something like that?


I just wrote a super simple nvim plugin in fennel that allows you to go straight to your daily note using your existing obsidian config. https://git.sr.ht/~hermiod/obsidianlite.nvim

What I really want to do is build a language server for "backlinking markdown". In that case any editor could consume it to get references, go to definition, etc. Does that sound like the right experience?


Yes, lsp integration is what I’ve also thought about. I definitely think that’s the way to go. That way the experience would seamlessly integrate into the usual editor motions. Would love to see something like that!


Yes :) I do have plans for something similar, but its a bit low on my priority list since I'm keeping this project focused on note management right now.


Cool, I'll keep an eye on it then. Linking and jumping between notes IS what I'm using to manage my notes, so it doesn't fit my workflow quite yet, but I'd love to ditch obsidian for something that works with vim / in the terminal.

But keep going. The note taking space has made some serious progress in the last few years with things like obsidian, dendron, logseq, and many others, but terminal tools have not caught up yet and I'd love to see more progress there.


Thanks! This will take a minute to figure out, but I'll definitely work on it eventually.


Personally, I'd like to take notes with vim (or helix), however somehow it's still an unsolved problem to sync files with end-to-end encryption between devices, without also having to use some specialized application.

Obsidian is so far the most seamless way to write and sync notes between Linux and iOS. I'd pay money for a daemon that could do E2EE encryption of any files on my machine and also worked on iOS.


Have you looked at syncthing? I believe it ticks off all your boxes. I'm using it to sync my obsidian vault and Todo list between multiple android, Windows, and Linux devices and it Just Works. I do have an always on server running it as well to both maintain a backup and to catch any notes devices powered down might miss, but it's not a requirement.


Personally, I use Syncthing to sync all my notes between computers and my phone, it works great!


I do plan on adding vault encryption and cross device sync (literally making a list of updates atm). Like tacostakohashi mentioned, I too have been thinking of using git for cross device sync.


> it's still an unsolved problem to sync files with end-to-end encryption between devices, without also having to use some specialized application.

How about using git, over https or ssh? Or are those 'specialized'?


Git is not that convenient to use on the phone.


I don't plan on making jot mobile compatible. Maybe in the future, but not right now.


Is vim?


I do this with termux + keybase git.


Feedback on commands:

> jt note newnote

> jt folder newfolder

I have to type "note" or "folder" twice, just to create a new one. I prefer the convention that most other tools follow whereby "new" is the base command, and then the thing you want to create is the noun. Eg

> jt new note

If you really want the noun to be first and the verb second, at least simplify it to:

> jt note new

Though I much prefer the verb first since it reads more like an action sentence.


I did try this before, just instead of 'new' I used 'make'. I'll consider this again! Thanks! :)


I appreciate this effort, and I want to try it out... but in the README, I did not see how to literally make a note from the terminal.

Is this intended to make something like Nano easier to integrate with an extra tool set provided by Jot, or is there a feature I missed? I'm not sure what problem this is trying to solve.


Hey, try the note command to make notes. Example -> https://github.com/araekiel/jot#create-notes-and-folders

And yes, this tool is meant for integration with text editors. Jot is simply for creating and managing notes (markdown files). You can use the text editor that you fancy, like nano or vim, or something like vscode, if you need a GUI.


Awesome! I quite like the trend in note-taking software lately, I'm also currently building a similar obsidian-compatible tool: https://github.com/tionis/glyph


Is this is about the default freebsd command?




Join us for AI Startup School this June 16-17 in San Francisco!

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: