return to table of content

Show HN: Edna, note taking app for developers

michaelrpeskin
12 replies
2d

Is desktop on the roadmap? I use HeyNote (desktop) every day and the only feature I _really_ want is multiple notes. You added that, but I need desktop because of corporate rules.

pax
6 replies
1d22h

desktop, or offline? isn't the PWA satisfactory?

kiratp
3 replies
1d16h

I can’t back up the data in a PWA.

michaelrpeskin
1 replies
1d16h

For me, I like that HeyNote auto saves to buffer.txt and I can have a crib job auto commit that to git at regular intervals.

kjksf
0 replies
1d11h

You can do that with Edna too.

Store notes on disk (https://edna.arslexis.io/help-win#storing-notes-on-disk) and you can auto commit the whole directory with git.

Personally I store my notes (encrypted with a password) on directory managed with OneDrive.

Edna also auto-saves files.

kjksf
0 replies
1d11h

If you store notes on disk, which is what I do, you can back them up with any file backup tool.

I store my notes (encrypted with a password) on OneDrive.

See https://edna.arslexis.io/help-win#storing-notes-on-disk

I even have a settings option for a daily backup which exports all notes into a single .zip file in `backups` sub-directory. Not sure if it makes much sense, but it's there.

stronglikedan
1 replies
1d20h

not everyone has 24-hour online access

spartanatreyu
0 replies
1d18h

PWAs don't need online access. They only need initial access to download them.

Same with plain old websites if they're made to run offline (e.g. https://devdocs.io/offline).

kjksf
3 replies
1d20h

Desktop would be easy to do but seems a bit pointless.

You can install a PWA shortcut which gives you even more desktop experience in the sense that it looks like an app separate from the browser.

That is what I do.

What are those corporate rules and how are they enforced?

Is it about storing data? Because Edna stores the notes on your computer, it's never sent to any server.

vunderba
0 replies
1d14h

Uhh no... desktop isn't pointless unless you're wildly optimistic about the app website remaining online indefinitely into the future.

Whereas if I have an installer or an electron app, I can copy it to a thumb drive and install it years later on a totally different machine even if your website is long gone.

I personally dislike PWAs because they gave the deceptive illusion that you're installing an actual application as opposed to just a bunch of ephemeral stuff that's thrown inside the user data folder of the respective browser.

acoustic_ghost
0 replies
58m

not entirely, requiring an internet connection at the start does limit use, e.g. lets say you need to travel and don't have an internet connection or just have your notebook out and about the PWA doesn't entirely cover that case

NoahKAndrews
0 replies
1d18h

I have Heynote configured to float on top of all other windows, to close to the tray instead of exiting entirely, and to open when I press a hotkey combo. I don't think I can do all of that with a PWA.

babo
0 replies
1d21h

If you have git, golang and bun/nodejs on your machine it works from localhost.

  git clone git@github.com:kjk/edna.git
  cd edna/server && go get && go build && cd ..
  ./server/server -build-local-prod
  ./server/server -run-local-prod

Arjuna144
6 replies
1d8h

Now there are three "newish" Markdown / PWA / Note apps that I am aware of:

- Silverbullet.md (https://silverbullet.md)

- Eidos (https://eidos.space/)

- and this ofc (https://edna.arslexis.io/)

Is someone aware of more of these?

I am liking all of them and they seem to have different perspectives, goals and philosophies.

Sadly none of them have a quick capture experience on android that I am satisfied with...

mk12345
1 replies
1d3h

I created https://floatynotes.app a while ago, which might fit your list :). It provides virtual sticky notes, using the new Document Picture-in-Picture API.

royaltjames
0 replies
21h3m

hey this is awesome, thanks for sharing!

deskr
1 replies
1d6h

quick capture experience

How would that experience look like? (I think I'm after the same thing!)

wonger_
0 replies
1d1h

I'm working on quick capture! Just a prototype so far for saving text snippets: https://wonger.dev/posts/in-the-works#gimme-that

Ideally, note capture is as easy as screenshots. It means removing nonessential menus, decisionmaking, buttons, etc. For example, having the app start with an editor and keyboard open, versus having the app start with a list of existing notes. It may mean gesture shortcuts.

For a published app with adjacent ideas, check out Bebop for iOS: https://www.jackcheng.com/bebop-design-dev-process/

bobajeff
0 replies
1d5h

Silverbullet.md looks really good to me. With a few more features it might be able to replace vscode as my note taking app.

spartanatreyu
4 replies
1d18h

This is nice, but I'm surprised you went with "P" for shortcuts since they're already taken by browsers.

Ctrl/Cmd + P = Print Ctrl/Cmd + Shift + P = New Private Window

bjeanes
2 replies
1d18h

Command + P worked for me in Firefox, but Command + Shift + P did not.

Further, because I don't type in QWERTY, I noticed that _some_ shortcuts seem correctly mapped in my layout, but others are not. The Option+N shortcut for a new note just starts the "˜" combining character (expecting a following character like "n" to form "ñ") when using the "n" key in my layout. However it works if I use the physical "n" key (which is my "k").

I feel like that explanation is pretty poor, but yeah basically some shortcuts seem bound to the physical key location whereas others seem bound to the mapped key. I wonder if they are declared differently?

spartanatreyu
1 replies
1d14h

Sounds like it's using event.keyCode (deprecated) or event.code (key button number) instead of event.key (the character that the button represents).

kjksf
0 replies
1d11h

I only use that for `Alt + 1` - `Alt + 9` quick access shortcuts.

`Alt + N` for new scratch note is implemented via `Mod-n` CodeMirror keymap (keymap.js) so I'm not sure why it wouldn't work.

kjksf
0 replies
1d11h

Undocumented: Ctrl + K and Ctrl + O also work.

Ctrl + K was actually the first. Ctrl + O because it's naturally "open". And you can switch to command palette with `>`, like in vs code.

I've added Ctrl + P and made it the documented one because I also use VS Code heavily and I was tired of context switching.

It's unfortunate that it conflicts with browser's Print but I figured that you do this often and print rarely.

The ultimate solution, of course, is to allow customizing keybindings.

tarasglek
3 replies
1d9h

Took me a while to realize that I can't execute JS blocks. Kind of unexpected that go works and js doesn't in JS a web app :)

kjksf
1 replies
1d8h

Yeah, the reason I could add Go quickly is because I already did the hard work of figuring out how to execute Go code when I built https://tools.arslexis.io/goplayground/

Executing JavaScript safely is actually hard. You don't want to just execute code in browser context because then an attacker could trick you to execute his JavaScript code and e.g. grab all your notes.

So you need to sandbox it via e.g. iframe or by running using wasm-compiled quickjs

Which is something I might do.

Additionally I'm thinking about allowing to run a javascript function over content of a block so e.g. you could base64-encode a text block etc.

kjksf
0 replies
1d8h

To expand on this even more: it would be possible to make it a lightweight web playground like codepen.io

By convention, if a note has html block and javascript block (and optionally css block), I could consider that a small website with index.html, index.js and index.css files and provide a preview of html output.

swah
0 replies
8h46m

Me too - I currently use https://runjs.app/ while developing but this would fit better.

mcintyre1994
3 replies
1d3h

This is really cool, I think I'll end up using this instead of a random VSCode window. Multiple blocks and especially the math ones are really nice for this use case.

FYI in every browser I use on Mac, command + L highlights the current page URL, so that shortcut to change language/block type doesn't work for me. Not a huge deal because you can change it from that bar at the bottom or the command palette, but figured I'd flag in case it's worth changing that shortcut.

DiggyJohnson
2 replies
1d1h

That is probably the most useful shortcut that I haven't been using. I have been up the creek since my workplace implemented and actually-effective browser extension plugin and I lost my precious Vim Vixen.

wonger_
0 replies
21h39m

Ctrl/Cmd + L is very useful. It also works in Windows File Explorer, Spotify Desktop, and presumably many other apps.

mcintyre1994
0 replies
21h27m

It’s a really useful one. Arc also has cmd + shift + c to copy the current URL, which I very much miss everywhere else now!

filcuk
3 replies
1d9h

This looks really good. Have you come across SilverBullet? Similar concept. https://silverbullet.md/

SB can be hosted on Docker, which has the benefit of being able to access your data from any device. Do you have any such plans for Edna?

kjksf
1 replies
1d8h

Regarding accessing from any device: at least for desktop you can store notes on disk, in a folder managed by DropBox or OneDrive or Google Drive (https://edna.arslexis.io/help-win#storing-notes-on-disk).

You can then access the note on every computer where you replicate that folder.

This doesn't cover accessing from mobile or computers you don't own but it's just a different kind of a problem of auth.

Edna is actually a self-contained go binary that you could run yourself on a server or your desktop.

Currently the backend (Go server) is there to just serve HTTP files but it wouldn't be hard to add storage API to Go server and modify Edna to use that. I already have 2 storage backends: local storage and file system api.

I would say it would be at most a few days of work to make it work similarly to SB but that's not something I plan right now. I still have some UI functionality to add to Edna and then we'll see.

filcuk
0 replies
2h23m

Thanks for the detailed answers, I'll definitely be keeping an eye on this.

kjksf
0 replies
1d8h

Funny you would say that.

Earlier I also made a fork of silverbullet: https://notedapp.dev/ with similar goals to Edna (which is a fork of heynote).

But don't use it. I stopped working on it half-way. In retrospect, I've made a mistake there of doing my note storage backend.

Then I was thinking about re-starting it and re-doing the backend for notedapp but then I saw heynote and used that as a based and I'm quite happy with the result.

I do like SilverBullet so it's a possibility that I'll do another project which combines the UX ideas of Edna with SilverBullet editing UI. But for now I still have some ideas for Edna, will keep me busy for at least a week :)

dcuthbertson
3 replies
1d6h

Thanks for sharing. This is an impressive tool. Well done!

Would you mind sharing a little about your workflow? 528 commits over 40 workdays seems like a lot of work that must have been well organized. I'd guess each commit is a small amount of work on a focused aspect of the program. If that's so, did you have clear goals for what you wanted to achieve, break down the work ahead of time, or plan out what you wanted to change/add?

kjksf
0 replies
1d4h

Yeah, that was for a different project that I no longer work on.

kjksf
0 replies
1d4h

As far as individual commits, you can see the scope yourself: https://github.com/kjk/edna/commits/main/

Yes, I like to work in relatively small, but logical, commits.

Yes, I did have clear goals in mind. I knew I wanted multiple notes, storing notes on disk, command palette, encryption etc.

I was writing the app for myself and using it every day, which helps with motivation and knowing what to do next.

There were also changes based on usage. For example, I've added a top nav bar but occasionally it would obscure the text so I made it hidden when typing.

One of the uses of Edna is keeping track of what I want to do next.

I have a note for each project, including Edna, and I keep a list of ideas there, sorted by the most important things at the top.

That way I can jump start the day quickly by looking at that note and picking one of the items to implement.

bdcravens
3 replies
2d

Supports Go, JSON, JavaScript, HTML, CSS and Markdown

What is required to add additional language support?

kjksf
0 replies
1d20h

Actually, it's based on CodeMirror

kjksf
0 replies
1d20h

The above is a partial list, Edna supports about 30 langs.

To add another one, you need to find library that implements CodeMirror mode for that language, add it to package.json and update languages.js

viccis
2 replies
1d22h

I will check this (and Heynote) out. I have long wanted to get into something like Obsidian, but have always had trouble finding a good example of a workflow in the development world that makes good use of their features. Almost all example workflows I've seen are from people whose job it is to work on and evangelize note taking tools, and it's mostly things like organizing their notes on how to take notes. Seemed like a bad sign. This seems a bit more focused and could at least replace my habit of opening up Notepad++ (on Windows) or a text document in a scratch folder (on Linux) to jot down a query to tweak and reference later. Thanks!

kjksf
0 replies
1d20h

This is one of the uses for me as well: jotting temporary notes when programming.

One of the default notes is `scratch` for exactly that and you can summon it quickly with `Alt + 1`

Vegenoid
0 replies
20h48m

I had the same experience as you, and held off on getting into note taking with Obsidian for quite a while. Eventually someone said to me "Don't worry about workflow at all, just start taking notes with no flow or organization. You will develop a flow that works for you as you use it more." That's what I did, and it was very true. I don't think my flow matches any popular workflow, I just started taking notes and it naturally developed.

If you have something you want to write down to be able to reference in the future, create a note and put that in it. The next time you want to write something down, you can either put it in the note you already created, or you can make another note if that sounds nicer. Up to you. You'll find out what works.

You can do basically what you're doing right now, which is opening a random file and putting it in there, except now instead of your files being spread across your system they're all in one place, and if you want to start doing fancier stuff with them in the future you can. I use a small percentage of Obsidian's features, and they don't get in my way if I'm not using them.

thesunny
2 replies
1d22h

This is a really cool idea. I especially like the math blocks where you can add blocks of information that actually do things. I could see this potentially even growing beyond math, but other types of functionality as well.

One optimization that might be interesting is to simply use Markdown as your main document all the time and then when you want to add special functionality like the math block to simply have that as a code block in Markdown. For example, using the triple back tick followed by the word math. Then anything inside of that math block works just like you already have.

This also makes it easy to add other types of blocks incrementally.

One challenge for me in reading the sample document was that it wasn’t clear that a math block was a math block without the comments that you wrote. Using the triple back tick with the block type would solve that problem

kjksf
1 replies
1d20h

Yeah, so far this behavior is inherited from Heynote.

I've been thinking about making math an option within markdown.

The type of the block is shown at the bottom, in the status bar.

geoelectric
0 replies
1d17h

FWIW, doing it as a special code block would align with how Obsidian handles stuff like that from its extensions.

For example, ```tasks blocks are used in Obsidian Tasks to denote queries. The extension replaces the block with the rendered task list, when in wysiwyg editing or in the rendered view.

In your case the results would just appear, a la soulver, but the way of setting it up would be familiar.

jxy
2 replies
1d14h

This is slick. Are there plans for rendering LaTeX equations and/or diagrams/flowcharts, such as mathjax and/or mermaid.js?

kjksf
1 replies
1d4h

It's a possibility but I'm not using those myself so I don't have good intuition on what is a good UI for that.

A relatively simple thing would be to add "preview block" which e.g. for mermaid blocks would add a panel with rendered diagram.

A much more complicated solution would be to add codemirror view which renders diagram when cursor is outside the markup and switches to editing when inside markup.

But that's significantly more complicated.

geoelectric
2 replies
1d17h

Any capacity for inter-note links there or planned?

I guess the OG NV didn’t have that but I used them pretty extensively in nvAlt and in Obsidian (not that I’d expect anywhere near what the latter does with analyzing them).

mrtesthah
0 replies
1d4h

Nope, OG NV had inter-note linking, Simplenote syncing, file saving, encrypting, etc. long before the NVAlt fork existed[1]. Just about the only thing NVAlt added was a Markdown preview pane.

1. https://notational.net

kjksf
0 replies
1d11h

I guess I could add 2 helpful features:

    - autocomplete for note name when `[`
    - if there's note `foo` and `[foo]` in markdown block, Ctrl + click could open to that note

ThinkBeat
2 replies
1d19h

This reminds me of an earlier project posted here: https://heynote.com/

I have been using that for quite a while and I like it.

sadeshmukh
1 replies
1d19h

It is a fork of Heynote.

ThinkBeat
0 replies
1d7h

oh. Thank you. I stand corrected.

SoftTalker
2 replies
1d21h

I like the idea of a developer focused note environment, but I've got such deep muscle memory for emacs that any other editor is a non-starter for me.

kjksf
0 replies
1d20h

Edna actually has Emacs mode which you can choose in settings.

You can see implementation: https://github.com/kjk/edna/blob/main/src/editor/emacs.js

I can't say how well it works. I just noticed that I would need to change some keybindings because they conflict with Emacs keybindings.

bitwize
0 replies
22h8m

org-mode has entered the chat.

simplify
1 replies
1d20h

I was going to say this looks exactly like Heynote, but then saw you said you forked it. Is there a fundamental difference in vision between the two apps? Both taglines are notes "for developers", so I'm a little confused on why the separate project.

kjksf
0 replies
1d20h

Heynote is a scratchpad, a single note, and has no plans to support multiple notes or really grow it beyond what it is right now.

Which I respect but I needed at least multiple notes, bringing this much closer to apps like Obsidian, Bear etc.

And then I added a bunch of features that I wanted to have, like UI for opening/creating/deleting nots inspired by Notational Velocity, encryption, command palette, history, Ctrl + B for navigating between blocks.

Edna is basically a superset of Heynote: it does everything Heynote does and lots more.

So yeah, the vision is pretty different.

rodneyzeng
1 replies
1d21h

No support for math.js or katex

NoahKAndrews
0 replies
1d12h

It has math blocks, which are powered by math.js

lordgrenville
1 replies
1d22h

Glad that you led with having made SumatraPDF, I love that app and it's a big recommendation for me.

slyfox125
0 replies
1d14h

Agreed. Sumatra is great. The addition of night/dark mode was a game changer. It's lightweight and effective, and thus efficient. Accordingly, knowing that this project originates from someone involved with Sumatra speaks volumes.

florieger
1 replies
1d9h

Wow, i really like this, especially the Math blocks. How do I create them?

CMD + L is not working on Safari, since it will open the address bar.

kjksf
0 replies
1d9h

Block type is also displayed at the bottom in the status bar. Click on that to change.

Or: context menu (right click), Block / Change Language.

Or: command palette, "Block: Change Language" command.

syngrog66
0 replies
1d

vi notes

(and the like.)

has worked fine since 70/80s onward. an (overly & well-) solved problem space

suranyami
0 replies
1d21h

This is remarkably similar to Calca.app, which I still use occasionally. http://calca.io/

I love that yours is web based! Can see it being much more reusable in a number of use-cases.

Calca was originally MacOS/iOS, but has since been ported to Windows.

I think that the notation in Calca to use a `=>` to display results maybe adds a bit more clarity to the math expressions, but your display style seems to work pretty well too.

The only advantage Calca seems to have is they’ve had almost a decade to add things like extra functions (compound interest, trig, …), constants, operators, etc.

I’ve always thought that style of simple but highly visible calculation is a far superior alternative to spreadsheets. Jupyter, LiveBook, Mathematica, etc… have shown that it works, but the world is still enamored with Excel, despite its propensity to hide mistakes.

smusamashah
0 replies
1d5h

This looks a lot like Unforget https://unforget.computing-den.com/demo (which was a Show HN few weeks back) also Heynote which others have mentioned already.

propeller_head
0 replies
1d7h

Math blocks are truly great. I did try converting `2 tbsp butter in grams` and nothing happened, which I half expected.

I guess a "cooking" block would go a long way - at least for me!

omerhac
0 replies
1d10h

I love the minimalistic UI and keyboard shortcuts - cool!

liquid_bluing
0 replies
20h49m

I am a prolific note-taker, and I use vim. Many of these features and more are supported in vim with the vim-markdown plugin, which has support for markdown syntax highlighting and syntax highlighting in code blocks, and a hierarchical table of contents using the location list, which is my favorite feature. I have scripts and functions that implement some other features. The one important thing that vim necessarily lacks that is very useful for note-taking is the ability to render images and mathematical equations, which is why I still sometimes use Word.

This is a neat piece of software, but it would seem to me that the tools available on the command line - Unix or PowerShell - cover just about all the use cases, and importantly, are customizable, lightweight, and interoperable. For instance, I have scripts that use fzf and/or ripgrep to quickly search my notes directories and open notes for editing.

This is just me - it's definitely possible that I'm missing out on a better way of doing things, but I can't easily see the value, for a developer at least. Maybe folks just aren't that familiar with what can be done with common tools that already exist? Maybe it's because the CLI can be a pain to learn? I guess that's what a GUI note-taking app is for...

BTW, I'm not trying to be negative, just sharing my possibly idiosyncratic perspective.

jsilence
0 replies
12h1m

If only it would support Quarto flavored Markdown, that would be awesome.

haxzie
0 replies
23h1m

This is pretty neat! I had built snipp.in to solve my own problems with other note taking app. It works completely offline + looks a lot like VS code for folks who love using .txt files

hawski
0 replies
23h39m

Not long time ago I started making a note taking thing and some of your goals align with mine - minimal, keep your data local. What is different about my thing besides being very crude (EasyMDE and a few CGI programs in C served by BusyBox httpd) is the goal of using it as my new tab on devices to cut down on using tabs as bookmarks.

I see myself adopting your solution for my case or maybe extending it. What I'm missing: image support and ToC.

fud101
0 replies
1d4h

Anything good that integrates with vscode?

fayazara
0 replies
1d13h

As someone who uses heynote almost everyday, having it in the browser makes so much sense.

Heynote is ~200mb, eats a lot of ram, I think I am switching over to this.

danielvaughn
0 replies
1d22h

I love this.

SuperNinKenDo
0 replies
1d17h

I clicked in here and then realised I really don't need to be looking at yet another note taking app. As I was clicking off my eyes managed to skim "I took a small break from coding SumatraPDF" which had me reopening this thread quicksmart.

Thanks so much for the high quality, light-weight, native applications you put out. You're a saint.

That said, I will not eat the bugs, and I will not live in the browser. Project isn't for me. But I just wanted to say that you always have my attention.