Show HN: Heynote – A dedicated scratchpad for developers

2 years ago (heynote.com)

Hey!

I made Heynote entirely for my own use case. For many years, I always had an Emacs instance running with the scratch buffer open, even long after I had abandoned Emacs as my programming editor in favor of more recent IDE:s.

The simplicity of having just one big scratch buffer appeals to me, but I still want to separate the different things I jot down somehow (without using tabs or similar). Previously, my solution was to insert a bunch of blank lines between the notes, but hitting C-A would still select the entire buffer. That's why I came up with the concept of "blocks", which turned out really well for my use cases.

I decided to release Heynote, thinking it might be useful to others.

This is just outstanding. It's so exactly what I wish for out of a scratch pad.

My feature request to add to your pile (possibly a lonely one, since maybe it's just unique to how my brain works):

I really want a scratch pad like this to have UX that supports "inverted" order. Meaning, new blocks get added to the top of the page instead of the bottom. The blocks naturally flow in descending order of creation rather than ascending. The scratch pad always opens at the top of the page. Over time, blocks thus end up "decaying" toward the bottom, with the most relevant at the top.

It just fits better with how my brain works.

I also +1 the sentiment given elsewhere in this thread to bias toward ignoring the vast majority of these feature requests and preserve the simplicitly of what you've built. That includes mine!

  • Happy you like it :).

    I get the idea of the "inverted order". I wonder if it would be enough to make it configurable so that C-Enter inserts a new block before the current one + Heynote sets the cursor at the beginning of the buffer at startup (instead of last which is the current behavior)?

    • Another option might be to have the default scroll position at the bottom, to act more like a terminal or chat app. Scroll up to see the history, rather than scrolling down to see the latest.

      (Sorry if this is how it already works, I’m on my phone right now, so I can’t download it, but I’m very interested in the block idea. I like that concept a lot for a scratch pad. I’m definitely saving this for later.)

    • Yeah I was thinking similar. And/or a separate shortcut key that opens a new block at the very top of the page (regardless of where the current cursor is positioned).

    • Your app is awesome, it's just so satisfying to use. Really fantastic job!

      My two cents on block insertion: Personally, I would love if Cmd+Enter inserts a new block at the very top

      For inserting a new block in sequence, I feel like Cmd+Shift+Enter (splitting the current block) might already be enough - but I obviously haven't used heynote for long enough to have a very informed opinion on this :)

      Maybe there's some way to make the behavior configurable?

  • I also like this. But I don't like the distraction of seeing all the blocks below my cursor move every time I make a new line.

    The perfect UX would be to add a new buffer at the top, but with enough padding to fill the window so that you can't see the movement of previous blocks while you're typing.

    (Maybe this is already kinda how it works - I haven't downloaded the app yet, but I'm excited to try it, because it looks great!)

    • >I don't like the distraction of seeing all the blocks below my cursor move every time I make a new line.

      Uhm... They don't move. They stay the same distance, relative to your line. As you add more lines, they'll disappear below the fold.

      1 reply →

  • I agree that this addition would be very helpful as it is already how I take notes in a markdown document.

I would probably pay for this if:

- vi bindings

- show me where the file is so I can move it around, sync it across machines, back it up, etc.

- the inverse order stuff

It's really really good. thank you.

This looks awesome! I love the blocks idea. I’m gonna download and give it a try.

I see lots of comments about Electron (per usual here haha) and I just thought I’d shout out Tauri if you hadn’t run across it. It’s basically Electron-but-in-Rust and uses the system webview instead of Chromium, so bundle size and memory usage is reduced a bunch.

I took a look at the code and it looks like you haven’t got a ton of Electron-side code so if you felt like playing with Rust it might not be too hard to swap. I have a video editing app that I started building with Electron and then switched to Tauri midway and it’s been pretty nice.

I hope it’s clear this isn’t a request and please feel free to disregard this comment entirely :)

  • Yeah, I looked at Tauri in the beginning of the project. What made me go with Electron was the maturity and large user base. And it has actually been a bliss to work with Electron (my expectations after having worked with other cross-platform tools for mobile were extremely low), so I haven't regretted my choice. I've dealt with very few bugs. I love that there is a large ecosystem, and that it was easy to automate building (as well as auto-updating) for multiple platforms.

    • That makes a lot of sense. I miss a bit of that from Electron. Its auto-updater is nicer, and while I haven't had a ton of cross-browser issues there've been a couple that I had to fix with transpiling or avoiding some newer CSS stuff. Shipping everything with one browser engine lends a lot toward peace of mind.

      I wish there was a way to build a stripped-down Electron, like a configurator where you could uncheck things you don't need. Printing support? WebGPU? WebRTC? Video playback? PDF reader? Straight to jail. It would be lovely. I'd love to see what would happen to the bundle size.

  • My issue with Tauri is that it used WebKitGtk2 on Linux. Which is pretty poor from a performance perspective and missing feature support compared to WebKit on MacOS or Webview2 on Windows.

  • I read that the Rust part was unergonomic. Do you find Tauri productive?

    • Yeah, it works pretty well for me. Rust definitely took some getting used to (I was new to it when I started).

      There's a lot of functionality you can access from JS without needing to get into Rust, but on the Rust side Tauri has this notion of "commands" for calling Rust from the UI.

      You can write a Rust function and annotate it with #[tauri::command], and register it, and then you can call it from the JS side with invoke('your_command_name', args). Those commands can be async too, so you can do blocking work on the Rust side and the UI won't freeze.

      You can inject State variables into those commands, which get injected at call time and are effectively global to the Rust side. I would say the State stuff is a bit unergonomic in that you run up against needing to share them between threads, so everything inside them needs to be Arc<Mutex<>> and writing those wrappers was boilerplatey.

      I wish the JS <-> Rust calling overhead were lower. It serializes everything to JSON and back, so I try to avoid too many calls, and try to avoid sending lots of data between them.

I love this! Simple and solid execution. I've been wanting to build something similar for some time now, might fork and play around with it. Thank you for open sourcing it!

I've started using Obsidian with a new note for each day and separating "blocks" with a Markdown horizontal rule (`---`) to achieve something similar, but this is much cleaner.

The strength of such an approach is making capture extremely easy -- new block, start writing, no thinking about where this goes and how to fit it into pre-existing structure. I find that if I'm trying to do that, then by the time I find where my idea goes, I've lost the idea.

The downside, of course, is finding things again. The ability to tag or title a block and search by tag or title would be great. More ambitiously, it would be cool to experiment with incorporating LLMs and embeddings to automatically tag, summarize, categorize, cluster etc. your blocks.

There's a lot of different directions one could take this, but I'll echo the sentiment of others to refrain from adding too many features and losing the original appeal of simplicity. :)

Also: How do you handle performance when the buffer gets very large?

  • It's not open source, as it uses the Commons Clause which severely limits what can be done with it (the name is misleading).

    • I didn't put too much consideration into picking a license. If someone has compelling arguments for why I should license it differently, I would absolutely consider it.

      1 reply →

  • Performance is mostly handled by CodeMirror (https://codemirror.net/), the underlying editor that Heynote is built upon. It seems to handle quite large buffers well. Where I have seen some minor performance issues is when working with very large blocks in certain language modes.

  • I use Obsidian for my programming notes, troubleshooting logs, thinking on “paper”, writing and checking assumptions. It’s very powerful and quite performant. AMA.

I just downloaded and installed and I am really impressed. I liked the concept of math blocks though it took me a few seconds to figure out how to change a new block into a math block. This note at the top wasn't clear to me:

⌘ + L Change block language

The phrase block language didn't trigger my "change the type of block" thinking. I might slightly rephrase like:

⌘ + L Change block language (Math, Markdown, etc.)

Otherwise, I think this is a great "scratches an itch" type project. Congrats!

  • Good suggestion, I'll change that!

    • "Change block type" makes more sense then "Change block language". "Language" sounds like it could mean English, French, etc. whereas "block type" is unambiguous.

    • All blocks should be collapsable - I was playing with it and had to enter a comment marker in some to be able to get the collapse arrow in the bar, like # in a python block, however the behavior for a python block collapsing vs another - is that the python block collapses to ' ... ' Whereas, other blocks maintain the firt row as a header, so if I label another block NOTES and collapse it, I can still see the header.

      So a collapse button on every block would be nice.

      I love this. Thank you.

      2 replies →

    • It would be nice with some documentation of what the Math mode supports, e.g. syntax, units, functions.

      It can be difficult to figure out why some lines are interpreted ok and while others fail.

      How to convert between fahrenheit and celsius?

      3 replies →

Love this. This is exactly what I need. I have been using a WhatsApp group with just me, for this purpose, until now.

Feature requests: - arch package

- would really like the results of the math to be in buffer.txt and in Ctrl+a and copy.

- changing font and color theme(I like the Nord one right now though!) Please keep it minimally colored as it is now so that changing color is just a simple matter of configuring a handful of colors as opposed to custom css. That would make it too complicated.

- support for images and media in markdown blocks would be nice to whatever extent possible. I would love it if you could copy the way vscode markdown works. Ctrl+v an image in the editor and it inserts the markdown for it and saves the image to a file. Markdown preview would be nice but I understand if you think that's out of scope.

- timestamp for blocks. especially would be nice if you could store createdAt updatedAt in the line with the infinity symbols in buffer.txt to make it easily extractable using grep and cut.

- saw that you mentioned downthread that you're working on reloading the file so that we can back it up with git or whatever. Would love that!

- is mobile possible? Through Cordova or something

Thanks for making this!

  • > would really like the results of the math to be in buffer.txt and in Ctrl+a and copy.

    Adding the results to lines that are copied from Math blocks should be doable, and I like that idea! I agree that it would also be nice with the results in buffer.txt, but because of implementation details it's harder to implement I think.

    > changing font and color theme

    At the moment, I'm leaning towards keeping the number of configurable settings down and not add have font color theme settings.

    > timestamp for blocks. especially would be nice if you could store createdAt updatedAt in the line with the infinity symbols in buffer.txt to make it easily extractable using grep and cut.

    yes, this is on the TODO

    > saw that you mentioned downthread that you're working on reloading the file so that we can back it up with git or whatever. Would love that!

    Yes, this too :)

    > is mobile possible? Through Cordova or something

    Probably not :/

    • Changing the font is accessibility, not customization. I downloaded the app, opened it up, and the font was too small for it to be practical for me to use. I know it doesn't take much to fix, because I did a Ctrl-Shift-I, changed the font from 12px to 18px, and problem solved. It's not something I'm going to do over and over.

      4 replies →

    • > At the moment, I'm leaning towards keeping the number of configurable settings down and not add have font color theme settings.

      Alright, if you ever lean the other way a tad bit, please allow configuration of fonts, I can try to contribute that feature next week. I don't mind fixed colors nearly as much.

      >> is mobile possible? Through Cordova or something

      > Probably not :/

      Understandable. Check my comment (sibling to my parent comment) for a suggestion for the PWA you mentioned though!

  • Adding to it:

    Saw you mentioned below that you were planning to add a pwa + local storage version. In that case you can disregard my mobile request, and replace it with a download button on mobile so we can sync it to our desktop through git or drive or something.

  • Font and color could be implemented by letting us add some CSS to the html page (as it is made using Electron).

    This would enable using fancy CSS for some notes.

This is really, really good. Just earned a permanent spot on my dock in short order.

One request (which I would happily pay for): make it so that you can run the code blocks and generate an output. I routinely crack open the browser console to test out some JS and it would be great to be able to do this right alongside my other notes.

This reminds me a lot of org-mode(https://orgmode.org/). Do you have plans to add other org-like features, like evaluating code blocks? I don't personally see myself moving away from org-mode, but it would be nice to have something to recommend to people who are reluctant to use emacs, even if it's only for a single application.

  • Oh, I haven't seen orgmode before, so I don't know what its features are. I'm not planning to add evaluation of code blocks (apart from Math blocks that is) due to the complexity it would add.

    • I'm very surprised you haven't heard of org mode - your product is essentially a reimplementation.

    • This is so much like org mode (or rather, a small subset of org mode) its fascinating and cool to me you had never even heard of it! Great minds...

      Make sure to also look at org roam, it is more specifically why I won't personally have a need for Heynote any time soon, but it could maybe be inspiring for you going forward.

      https://www.orgroam.com/

    • > Oh, I haven't seen orgmode before, so I don't know what its features are.

      Essentially, it’s an environment for writing+outlining+task tracking+time management. It’s incredibly useful — you should definitely try it since you’ve used Emacs.

      1 reply →

This is great. I always resort to textedit for this stuff, i am going to use heynote instead and see how it goes.

love seeing stuff like this on HN like the good old days.

Any plans to add vi keybindings support by any chance?

  • yes, this is cool, but without vi keybindings it's not very practical for me

    now I wonder if I can get or write a vim plugin to do something similar... that would also have the advantage of being in a terminal so it can live in a persistent tmux session and be accessible remotely...

    • This is where my mind went too -- currently I use VimWiki for this and it can be pretty nasty. Just a little bit of sugar could go a long way.

I'd love to get some feedback also :).

Heynote Github Repo: https://github.com/heyman/heynote

  • Hey! Nice app, I've always had scratch pads around for things like this and never had a particularly good solution for them. Soulver is nice but too maths focused, a tab in VSCode in nice but it's a pain to manage multiple buffers for different languages. I like the feature set here.

    A few bits of feedback for potential improvements or clarifications...

    - I couldn't find the shortcut to change the language until I hovered over the status bar element for it. It should have a menu item with the keyboard shortcut on it.

    - Toggling light/dark mode doesn't live in the status bar in any other app I know, probably best to put it in settings.

    - Doesn't respect the system light/dark mode, it should by default (but perhaps with an app specific override as some people like that).

    - Check for update doesn't live in the status bar either in any other app I've used, this could be in settings.

    - If there's not enough stuff to put in a status bar, maybe drop the status bar? It feels like things have been scraped together to justify having it.

    - The green branding is ok, but it's quite a strong personality for an app to have. Do you want the app to have a strong personality? (Nothing else about it suggests so). Perhaps consider a more neutral palette that fits in with macOS more, or perhaps several choices for accent colour including a neutral option.

    - 427MB is huge. Thankfully it's not particularly memory hungry at least with small documents, but damn that's a big bundle for what it is. Why is it bundling ffmpeg? Does it really need GLES? Is a base Electron framework really >300MB?

    - Options for a keymap, but after deleting the initial content I've lost the actual keymap! Would be great to have a help reference in the app, or at least a docs page on the website that the help menu links to.

    - Would be great to be able to change the font.

    - I don't understand the saving model. Where is the data saved? Can I control this? Is saving necessary? If not, how often is the data persisted? Can I put it in cloud storage so it syncs across machines, or if it does this already, can I opt-out of that?

    - Not personally a fan of putting the name of the app in the icon. Most apps don't, I'd suggest something more subtle.

    • > I couldn't find the shortcut to change the language until I hovered over the status bar element for it. It should have a menu item with the keyboard shortcut on it.

      Noted. Will fix!

      > Doesn't respect the system light/dark mode, it should by default (but perhaps with an app specific override as some people like that)

      The light/dark toggle has three states. Light/Dark/Whatever the system is set to (default). If it's set to the third mode, it should respect the system mode. Otherwise it's a bug!

      > The green branding is ok, but it's quite a strong personality for an app to have. Do you want the app to have a strong personality?

      I do like the design (though I'm sure it could be improved ofcourse).

      > - 427MB is huge

      Yes, unfortunately that comes with Electron.

      > Would be great to have a help reference in the app, or at least a docs page on the website that the help menu links to.

      Yeah, goo point, will fix!

      > Would be great to be able to change the font.

      Maybe :)

      > Where is the data saved?

      The whole buffer is stored in a file called buffer.txt located in the user data directory (varies depending on platform, on Mac it's ~/Library/Application Support/Heynote, on Linux ~/.config/Heynote). It's saved as soon as you edit with a small debounce.

      The data location is currently not configurable, and Heynote currently doesn't support reloading changes from the disk (except on startup), so at the moment it wouldn't work well to synchronize through a file syncing service if you were running Heynote on multiple machines. This is something I'd like to fix though.

      2 replies →

  • This is great! One small suggestion: I'd love a shortcut to be able to insert the current date/time. Or perhaps track the time a block was created, and have an option to display that somewhere small on the UI for each block? I find it super helpful to have the date when search back through old notes like this.

  • Any chance of an arm64 build for Linux? I'm sure I could build it myself but it'd be nice if I didn't have to!

    • I configured the Linux builds yesterday, and I don't personally run Linux on any desktop machine, but I'll look into it!

  • hey! i really like this. it's a great idea and implemented neatly. my MacOS arm install is <100mb. i know some asked for tabs. i would like to be able to open multiple windows.

Hey congrats, this looks great for macOS! Trying it now!

With a similar mindset and an Emacs background, I wanted a scratch-like experience on iOS, so I built one https://xenodium.com/scratch-a-minimal-scratch-area. Seems to work for others too https://irreal.org/blog/?p=11202

While there's a new built-in iOS journaling app, I'm building one to save to plain text (and no lock-in). https://xenodium.com/an-ios-journaling-app-powered-by-org-pl...

I love this! I typically use a separate text editor for things like this, but the block idea is great and works with how my brain likes to group things.

I know this is expanding the scope and complexity and probably opposite to what you're trying to do, but one thing that would be cool is to have different tabs. In my current workflow, I have a notepad for "working memory" which Heynote will easily replace. I also have a separate one to track the things I worked on each day. I need to have a record of who I charged for what incase I get audited. I could totally see having a block for each day - and I wouldn't want that intermingled with the other data.

Oh I would love it if you could render markdown as formatted html a la Typora

  • Yeah, at the moment I'm hesitant to add tab support (for the reasons that you stated), though I've definitely thought about it.

    • Probably better not to. From my experience tabs (in the long run) are more annoying than helpful. Take vscode: I use the "open editors" menu, because tabs work just up to 3 of them. Then they either not fit (scroll-x), have titles far too short to be identifiable or take half the screen when using tab wrapping.

      I haven't used heynote yet (in a train rn), so you may've that already in place, but:

      I suggest implementing bookmarks with fuzzy search. Press ctrl+b a prompt comes up, type the thing, press enter and get your file scrolled to that section (markdown title)

      1 reply →

    • Right - not sure tabs is the right metaphor. I definitely want the ability to keep some blocks around, put them aside, return to them later...

      Maybe a block 'tagging' mechanism? Let me 'stash' a block and label it with tags... then later on I can 'restore' stashed blocks by searching for tags. Or open a new window easily containing every block that shares a particular tag?

    • Perhaps you could consider documenting/specifying the file format. Seems to me that this could potentially become some kind of standard (if you're open to that). Perhaps with a .mixt extension (for "mixed text")?

      Seems to me that this would be a pretty good general document format for a lot of use cases.

    • I think tabs could be interesting if coupled with a way to filter the list of blocks (ex: I only want to see math blocks, or only blocks containing the #daily tag, or only blocks from this month).

      Then each tab would be an opportunity to apply a new set of filter on top of the same document.

The calculations alongside the notes remind me of the "dynamic annotations" in Ink and Switch's "Potluck" [0] demo. I wish there were more examples of this in note taking applications - this sort of progressive enhancement from unstructured notes to structured data is useful.

[0]: https://www.inkandswitch.com/potluck/

This is so neat. Good work! I've tried Obsidian, Notion, Typora, and a myriad of other local editors only to come back to vim every time.

My ideal text editor is one that has syntax highlighting, scratchpad, markdown support, block based editing, ability to link between documents and vim keybindings. No cloud login, AI assistant, cross-device sync, or other bloat.

I try to avoid using electron apps for lightweight tasks, but Heynote looks like its worth a try.

Initial thoughts:

1. It looks beautiful and useful. Very nice work! 2. I love the math sections. 3. I was shocked how large the download was. 4. It's chewing enough memory between the GUI and the (3!) helper processes that I will probably continue to use BBEdit for this kind of thing.

I think it will be useful to a lot of people... I like it and could see myself using it sometimes even if it feels too heavy to keep it running all the time.

  • Yeah, large file sizes and some RAM overhead is a drawback that comes with Electron apps.

    However, it would never have been possible for me to make Heynote for all of Mac, Windows and Linux, on my spare time and within a reasonable timeframe, without Electron.

    Also, the CPU usage overhead for Heynote is minimal. It's one of the apps I use the most, and it's never among the programs that have used the most CPU. Yes, 200+ MB of RAM seems quite excessive in theory, but in practice it's less than 1% of the total RAM memory of my laptop (24 GB).

    • > However, it would never have been possible for me to make Heynote for all of Mac, Windows and Linux, on my spare time and within a reasonable timeframe, without Electron.

      I'm confused - browsers already do this for you - From what I can tell you aren't using any specific APIs necessitating electron?

      You also could easily have a live demo since it's a client side app.

      > Yes, 200+ MB of RAM seems quite excessive in theory, but in practice it's less than 1% of the total RAM memory of my laptop (24 GB).

      You should consider that people would be adding this to their workflow. So it's not not 200MB/Total RAM but instead it's 200MB/Remaining memory

      Mine has 32GB Total total but less then 2GB free (and the only reason it's free is because it was swapped), which would make this ~10% of my free memory. This means when I run webpack or other things like that it swaps even worse.

    • This feels like one of those situations where a PWA with local storage might be a winning play. Since it doesn't actually need filesystem access or some of the other integrations electron provides. In my case, at least, I do pretty well always have at least one chromium-type browser running, so that would cross off the download objection (which was mild) and the RAM overhead (which was more serious, today at least).

    • Consider Tauri[1] as well. It uses the native WebViews on the various platforms instead of bundling Chromium.

      FWIW, we also have an Electron app, in part because the integration with native APIs (which we use) is fairly full-featured with Electron. But if I was greenfield starting an app today I'd probably try Tauri. For your app it looks like you're not trying to do too much outside the WebView so might be worth checking out.

      [1] https://tauri.app/

    • Could it have been a PWA? I have seen some progressive web apps give an option to install as an app when you open them in your browser. Have thought about making a PWA for my kid which I could then install on my phone.

    • I have a total of 4 GB ram on my laptop. Background programs consume about 2 gb and windows around 1.5. Thay leaves me with around 500 MB free.

    • You might consider Flutter for desktop apps next time, as they are compiled to machine code and won't be nearly as heavy as Electron, plus you get automatic mobile and web support.

      5 replies →

I was expecting to not like this, but it's actually pretty cool. I love how simple it is and that it's not trying to replace everything.

I used to use the scratch buffer in Emacs all the time, and it is something I missed from emacs. I go between using Obsidian and Trillium for notes, but I'm going to try using Heynote for a scratchpad / quick notes type of thing and copy things from it if it's worth saving.

Maybe a feature request would be the ability to export a block? I wouldn't want it to be complicated so maybe just something like "Export block to command" and then the command could be a customizable curl command or some other command that copies stdin to another app.

I absolutely fucking love this concept, this is basically my Sublime Text but with steroids, everyone using Notion, Obsidian and such apps and here I am with a +10000 lines of plain text where I dump everything and I am more than happy, and this concept only makes it better, it's how I prefer to organize myself but now I can make blocks of it and format it, I love it, really.

This blocks thing reminds me of Toad for SQL which I used extensively years ago, where you could execute queries based on the position of the cursor, great feature.

Any plans to change font and such things? Any general roadmap?

  • I'm happy you like it :).

    There's a roadmap in my head and some tickets in my private Trello, but I should probably create Github issues for those.

    There are a couple of main things that I want to add (file syncing support, timestamp metadata to blocks) and some general improvements. However I want to keep its simplicity, and I currently see Heynote as kind of complete when it comes to new concepts. Currently, I don't think I'm going to add tabs, and I'm not planning to make it into a "real" editor by adding the ability to open and save files.

I love the idea of this after playing with it for a few minutes. My main gripe is that the font size is way too small for my old-man eyes, and it doesn't seem to remember or restore the previous zoom-level when launching (meaning I need to re-zoom-in every time). If it were possible to set a larger font-size or if the previous zoom level was saved and restored on each launch that would be a greatly welcome addition to what seems like a super useful tool.

Nice work, I like the simplicity, math blocks, and mixed syntax highlighting. My workflow for the past few years has been within all my sublime projects to have a gitignored folder named scratchpad with mixed files for this exact use case. It's annoying having to create separate tiny files if i want syntax highlighting though for a mixed bag of stuff. I would LOVE this exact app as a sublime plugin on a per project basis that created a .scratchpad file i could gitignore with this same feature set. I haven't ever gone deep on capabilities/limitations of sublime text plugins and if this would even be feasible. I definitely would want this ability for different blocks but on a per project basis or I can see the scrolling easily getting out of hand.

This project definitely hits on one of those things just about every dev probably has a slightly different approach to and nobody has really targeted a solution towards so kudos on that.

Congrats! I really like this. I use Boop on Mac now for my "scratchpad", but the separate blocks here is really ideal for me - the one thing that was a problem for me with Boop is that it was a single buffer and all the helpful commands (not solely stuff like formatting but helpful things like "decode JWT) ran against the whole buffer. Great work!

Looks great. Quick question. When I started it up, Little Snitch immediately told me it made a connection to GitHub and currencies.heynote.com.

Why does a scratch pad need to phone home?

I don't like software that connects to internet for no good reason.

I don't want your app to check for updates, I'll decide if and when I'd like to update it.

It also sucks that you haven't provided an option to disable update checks.

Since I am on linux and your app is distributed as an .AppImage - the binary gets random name on each run, so I can't set a permanent network rule to forbid it connecting to the internet - instead I get prompted every time.

Also, although blocks feature is nice - I still would like to be able to use tabs as well.

Also, I'd like to know where that info is getting stored on FileSystem: it is nice that the app saves it on the go, but I still would like to be able to work with the files directly.

  • > I don't like software that connects to internet for no good reason.

    It makes HTTP requests to fetch current exchange rates (for currency conversion) and to check for updates.

    > I don't want your app to check for updates, I'll decide if and when I'd like to update it.

    It still requires user interaction to actually apply the update.

    > I'd like to know where that info is getting stored on FileSystem

    See https://github.com/heyman/heynote?tab=readme-ov-file#where-i...

    It shouldn't be hard to fork it and disable currencies and auto updates. However, it sounds like Heynote might not be a good fit for you :).

Cool, been looking for new tools to help collect the mess that is my notes.

Nice and simple, as a tool like this should be.

A few questions after playing for a few minutes:

* Where are the notes stored?

* Can I delete a block easily?

* After creating an additional cursor (great extra feature btw) how do I stop creating them, and/or remove one I've created?

  • > Where are the notes stored?

    The whole buffer is stored in a file called buffer.txt located in the user data directory (varies depending on platform, on Mac it's ~/Library/Application Support/Heynote, on Linux ~/.config/Heynote).

    > Can I delete a block easily?

    I do that by pressing: C-A Backspace Backspace.

    > After creating an additional cursor (great extra feature btw) how do I stop creating them, and/or remove one I've created?

    Pressing ESC (or C-G in Emacs mode) should remove all extra cursors.

  • Answered my own question on the additional cursor, Esc takes you back to a single cursor.

    Great way to make a list. Start with a number, make your list, then use the additional cursor to add in a checkbox.

Kinda crazy that it took this long to get a Note++ equivalent (or similar) for macOS! Until now I've been using Sublime for all my quick dev-related scratch notes. This should make things way way better!!

Absolutely love it! I've been looking for such a tool for a long time. Just a looooong text file when I can write my snippets. I like UI, icon and even the name :) One suggestion - make it collapsable.

  • Thanks :)!

    Do you mean that the blocks should be collapsable? If so, blocks should be collapsable by clicking the small arrow to the right of the first line number. For some reason it seems that Markdown blocks aren't collapsable though - I'm going to investigate why.

Really nice execution of a simple but compelling idea. And the presentation on the site is solid too - I get what this is immediately, and I could see how it would be useful to me. A replacement for that Sublime text window I keep around where I paste stuff to keep for later, or to examine some JSON I just grabbed from somewhere!

I do find myself wanting more features, but of course the beauty of this is how simple it is, so you definitely need to strongly resist the urge to add and add as people suggest ways to 'improve' it. Apply the old 'every feature starts with -100 points' mindset (attributable to Anders Hjelsberg, I think?).

But that said, I'm going to give you some feature requests anyway :D

The thing I feel like I most immediately want from a tool like this is something close to the common SQL notebook behavior where you can select a few lines of text and hit F5 to run just the selection. Obviously only makes sense in language blocks which have a script engine associated. But the ability to write a chunk of JS or Python or shell and instantly execute it might be powerful. Where does it run, what happens to the output, etc? All good questions. No idea.

I'd love to see markdown blocks get formatted in place (still monospaced, just some bold and italic and stuff) - probably whenever the cursor is not focused in the block... though the potential shift in line wrap that would cause might be annoying. Maybe just have an edit/display toggle on markdown blocks to flip them into formatted mode. Additionally, making markdown-formatted tables elastically align in place while editing them would be a huge quality of life boost....

... Which (since formatting markdown tables correctly amounts to the same thing) makes me think this could be an opportunity to implement a classic 'elastic tabstops' plain text mode... the fact that the tab key only increases line indent is... an interesting choice that reduces the need to indulge any tabs vs spaces discussions - though obviously it's possible to paste in text that contains tabs even if you can't type them. Coming up with something better to do with inline tabs than just 'snap to next multiple of tab width' is tricky, but I would suggest maybe enabling 'elastic tab' rules: https://nickgravgaard.com/elastic-tabstops/ - because this is a place that's meant to handle copy/pasted text and stuff natively typed in, NOT a place that is expected to open and correctly format files.

  • > I do find myself wanting more features, but of course the beauty of this is how simple it is, so you definitely need to strongly resist the urge to add and add as people suggest ways to 'improve' it.

    Definitely! I'm happy that you preface the feature requests with this comment :).

    I've thought about the possibility of some kind of evaluation of code blocks, but at the moment I'm not planning to add it. Mainly because of the questions you posed :).

    Heynote currently gets most of its Markdown features (basically everything except the checkboxes) "for free" from CodeMirror's Markdown mode (https://github.com/codemirror/lang-markdown).

    Regarding tab size, I realize that it's something that I'm going to have to add settings for. Up until now, me and a few friends have been the only users of Heynote, and it seems like none of us favors tabs before spaces (or at least no one has asked me to fix it).

A few suggestions: On Macos a menubar item would be nice to pop the app up. Also, expanding the Language set to include bash and a few other common languages would be ace. Finally, if you remove the canvas background or set it to the same as the app background color, it will eliminate the white flicker when you resize the app window. If I get time, I may take a look and put in a PR.

  • Yes, I'd like to add more languages. It's currently limited to what Lezer (https://lezer.codemirror.net/) supports . However I just found this repo (https://github.com/withfig/lezer-bash) which seems to be Lezer grammar for bash, so I can probably use that for bash syntax support.

    > Finally, if you remove the canvas background or set it to the same as the app background color

    Will look into that. Thanks!

    > On Macos a menubar item would be nice to pop the app up

    Hm, not sure what this means, sorry :)?

    EDIT: Now I googled "macos menubar" and see what you mean :). I'll look into it!

Looks great - I've been using markdown files and a markdown editor for my dev notes.

But I tend to create a file per week, with notes about what I have to do / have done, etc. by day within the weekly file.

Having one big file for a project that lasts months (or years) would be unworkable.

I'd like to see the ability to create and open whatever files I want, rather than just saving a single pre-determined file.

Good job, though - thanks!

It would be perfect that you add this on brew because most corporate mac users have no permission to download these type dmg except brew

Great work, I like this a lot. Some feedback:

- It would be great to have the options of having tabs so that I could group my notes into a Math specific tab, or raw notes, code, etc.

- Another option to the above tabs would be to sort the blocks by type (grouping all the Math at the top for example).

- Having the ability to then save each block into a separate file.

This looks super nice! I have been using either a plain text file, or telegram's saved messages, or the clipboard history for basically the same purpose, and it never really occured to me that there would be such an elegant solution. Looking forward to trying this out when I get back tonight.

Nitpicks:

* On Linux, clicking the main "Download / Linux AppImage" button results in Windows .exe download instead of an .appimage. Clicking on the down arrow and selecting Linux does work, however.

* The opening sentence of the description includes "it's" instead of the more correct "its".

  • The link has been fixed. Thanks!

    And thanks for the grammar correction - I always keep doing that error (it's instead of its).

  • > "it's" instead of the more correct "its".

    "It's" = Contraction of "it is"

    "Its" = possessive (but the origin long ago was also a contraction, that is a grammatical rabbit hole)

    So "its" here is not just *more correct*, it is *correct*. The use of the contraction here is not *less correct*, it is *incorrect*. --Cheers!

The Slack use case highlighted on the front page would be better if Slack markup was an available syntax. Slack is not really Markdown, so composing messages in Heynote won't have high fidelity.

One thing that often trips me up is that links and code formatting cannot coexist:

    [`method_name`](https://github.com/example/example/blob/main/src/foo.rs)

Would be rendered by most Markdown engines as a link with fixed-width text. Do the same thing in Slack and text will be fixed-width, but won't be a link.

There's a partial summary of the differences here: https://www.markdownguide.org/tools/slack/

  • Not only that. It seems that with all the millions they have, Slack devs were unable to implement the most basic bracket balancing in the link parser.

    Try to send a link with a title including square brackets, and contemplate the disaster that gets interpreted from it:

       [Unmarshal(data []byte, v any)](https://github.com/golang/go/blob/go1.21.0/src/encoding/json/decode.go#L97)
    

    (spoiler: it just thinks that the link title is "Unmarshal(data [" and somehow inserts links into the rest of the words.)

  • I agree with the use case, but also wonder if it’s more on Slack, Jira, etc., to try harder to adopt Markdown.

And the clouds parted, and the angels sang...

Oh my God, where has this program been my entire life? I've been hackily using a Python interpreter to do back of napkin math and trying to keep track of units etc in my head (and making frequent use of the up arrow key when I need to save a result from a previous equation). This program would have been a game changer if I'd discovered it a few months earlier before I finished my university physics course. It probably still will be next semester. I'm sincerely blown away by the automatic unit conversion. Each variable has a unit, and when I divide joules by meters I get newtons. This is fantastic and I cannot believe it is free, much less open source!

Do you have a donation link?

This is cool. I was recently looking for something to use for quick notes. This should serve my use case

This is rock solid. I keep a plaintext file with all my daily notes in it, but still find myself formatting code before/after dropping it in. The formatting feature alone is a draw here. The math part is great as well - I use a REPL all the time just to do napkin math.

Amazing! While I come from a tech background (DevOps) I no longer work in tech (Operate my own companies - completely unrelated).

Point being: This still fits my needs perfectly well as a general scratchpad! I usually have dozens of separate text files spread around the place, this should be a good fit to replace.

Suggestions: - Make it clear that things are auto-saving - Option to save a block to file - Option to change the background color of alternating blocks; whether that's just allowing two colors - dark and light to alternate - or on an individual basis - Allow titling of blocks and some sort of table of contents - I can see this eventually having dozens that I'd like to reference and quick jump to

I prefer the simplicity of a single `notes.md` for this,always open in vim in a terminal tab.

To do the separation, I've a keybinding to insert current timestamp, and but me on a new line:

`nnoremap <leader>t :r! date "+\%F \%T"<CR>I#<space><esc>o`

Hi. Great work! I'll be giving this a try, as I always type my notes on txt files.

Any plans on adding support for tabs/multiple files? I usually have different files for different types of notes (todos, project notes, tmp file for random things, etc).

Thank you, this is very cool. It'll probably replace my current "keep a random vscode/sublime tab" method of notekeeping. Shift+Alt+Down clones the current line, but this is not indicated in the keybinds info. Since the next large version will add the feature to customize the buffer storage path, perhaps it's only a small leap from there to add save/load of different buffer files? I imagine it would already be possible at that point by changing the path and reloading or restarting the program, but a slightly more UX friendly version would be neat.

This looks really promising! I just tried it out. A few pieces of feedback!

1. It seems like the save delay is a bit too long. If you reload the page within like 1s of writing, what you just wrote disappears. Maybe make that faster and/or include a confirmation that there's unsaved changes if you try to close so you don't lose changes.

2. I was expecting some of the other languages to evaluate too (specifically JS). Maybe I missed something, but it seems like just the Math blocks are evaluable? Does it work with JS too?

Some things I love: 1. Block concept! 2. It's a scratchpad, there's no files to save. I'd love to use this as a dev journal.

  • > It seems like the save delay is a bit too long.

    This is now fixed by making sure the buffer is flushed on reload / exit. Should be released in a beta version in a couple of minutes. Turn on the beta channel in Heynote's settings if you want to update to it right away.

    2. Only Match blocks evaluate, and it's likely to stay that way.

Good for you if this is useful to you. But from my point of view this is another low effort slap it together web technology text editor, with emphasis first on a cool name branding - false promises title (coolname.tld), with barely any features and added value on top of stack it is running, almost indistinguishable from next to dozen other so called productivity apps that usually stop being supported few years after launch, and overall almost unnecessary compared to fast, reliable, extendible but hard to make software like Sublime Text that probably outlast most software like this by decades.

I thought this looked pretty cool, and downloaded. Messed around with the demo for a second and hit CMD+s to save my thing somewhere and realized this was actually literally just a simple scratchpad. This will be my daily driver!

I use org mode which was great in emacs but the plugin kinda sucks for VS code. The main feature there is the ability to fold and nest sections.

I see you have a "blocks" concept which seems roughly equivalent to a top level foldable bullet in org mode. Are blocks nestable? Otherwise what is the recommended way to organize a multi-block set of notes? Typical example for me might be tackling a larger problem/feature (top level block) and then having sub blocks/bullets for each part of the problem which are also foldable. I usually don't go more than a few levels deep but could get by with just 2 if need be.

I _really_ like it --- have you thought about a more abstract icon? Agree w/ folks elsethread that just removing the text would be a huge improvement --- perhaps have an option for displaying total number of blocks and collapsed blocks?

Where are the currency conversion ratios pulled from? I guess that requires 'net access?

Possible to add a right-click menu (say to collapse blocks and so forth)?

There seems to only be one fold point for a given block? (The markdown one for instance) --- it would be nice if the first and second line were always possible collapse/folding points.

Perhaps menu commands for collapse all/show all?

This is great and I quite enjoy it. I would love the ability to create multiple cursors from a selection (within a block of course). Intelij (and others) have a hotkey like Ctrl+G to add another cursor at the next instance of a word and Ctrl+Cmd+G to select all instances of a word. That's something I do in IDEA's scratch pads constantly but I'd like an ever-running note of what I'm doing divided into blocks.

Also it would be awesome to have some metadata on each block that is toggle-able (or just inserts as text) so I can have the current date/time added or shown.

  • > I would love the ability to create multiple cursors from a selection (within a block of course)

    Ctrl-D (CMD-D on Mac) does this (currently not limited to the current block though, but that is something I'd like to change).

    > Also it would be awesome to have some metadata on each block that is toggle-able (or just inserts as text) so I can have the current date/time added or shown.

    Yeah, I've been thinking of adding timestamp (of last edit) as metadata for each block

The webpage is great. loads INSTANTLY. So noticeably fast that I checked the source. Looks more or less hand-done.

Just want to give a nod and say thanks for the craft and care.

& +1 I downloaded the scratchpad. Looks useful.

I don't think I've ever seen so many positive comments. It must be Christmas.

What really amazed me was the Command-Tab icon. My brain registers what it is faster than all the other icons.

Really cool idea. I ran it on Windows and noticed the text rendering was off (incorrect/missing subpixel anti-aliasing) but at the same time I got distinct Electron vibes which threw me off: Electron does text rendering correctly and lack of subpixel rendering usually means a custom (native) gui. Is everything a canvas? If so, using text gives you accessibility plus better text rendering.

But maybe it's just the font. Is there a way to change which font is used?

This is awesome.... I'm super interested in polyglot file formats like this one. Huge congrats and I will definitely be giving it a try.

I've actually been working on my own project to combine Python+SQL+Markdwown+Rich Text into one reactive executable document. If any of you are interested here is a link: https://github.com/Zero-True/zero-true.

I was bummed since it uses the entry point DiscardVirtualMemory and for some reason it won't work on Windows 7 (Yea, I'm still using W7 for "Work Reasons")

  • Out of curiosity, what use case can possibly warrant using Windows 7 in 2023?

    • Very old PLC controllers in a mfg plant. You would be wildly (de)(im)pressed with the amount of equipment that is tied to W7 because of dongles, etc.

    • The usual reason is business-critical software that only runs on Windows 7.

      Source: I've worked for multiple companies with very niche software that only works on certain OSes.

Cool app! Reminds me of Quiver[1], which is the note-taking app I used throughout my college degree with varying amounts of success. It is also in part what inspired me to build my own note-taking app, as it opened me up to the idea that there are still a lot of unexplored modalities in the note-taking / knowledge-management space.

[1] https://yliansoft.com/

I saw the unit conversions and it immediately reminded me of Fend (https://github.com/printfn/fend). If you're looking to expand on your maths / unit conversion feature, it could be a good option. It also supports forum-style since rolling (e.g. 3d6+4), which some people could find pretty useful

This is really cool and I see myself using this a lot. I tried it out but one thing doesn't seem to work now

I was able to toggle language using `⌥ + Shift + F` once before, but that does not seem to be working anymore.

I’ve been using iA Writer for this exact purpose. A place to quickly dump text I don’t want to lose or quickly create drafts I don’t want to accidentally send.

I’m not sure whether blocks would be better than just separate files, which can be created quickly using Cmd+N.

However, the lack of syntax highlighting in iA writer has been less than ideal, so I’m definitely trying this out!

  • First impressions:

    - resizing the window creates white borders when the content of the window hasn’t been updated yet to reflect the new window size. these are a bit jarring / look non-native.

    - I try to keep electron apps to a minimum, as I’ve had only bad experiences with them so far (Discord, Warp, Unity Hub) and they take up a lot of resources.

    - While writing code, it does not keep indentation when entering a closing bracket.

    These are more nitpicks, but I love the concept :) Great work!

Oh wow, i do exactly the same but with vim. After leaving vim for a period of flirtation with intellij i settled for vscode, well recently I am leaning towards cursor. But I always have a macvim window handy for notes and snippets. This might be a better suited tool though. Thanks!

This looks great. I currently use Sublime Text for this. Can easily see using this. Thank you for building it.

This is pretty cool. I particularly like the Math block.

One issue I noticed while doing a calculation: "belt_pitch = 5/8 in" evaluates to "0.625 in^-1". To get the behavior I expected, I had to add parenthesis around the fraction. Maybe this could be fixed by adjusting precedence rules?

  • Interesting. It's Math.js that is powering the Math blocks. I'll have to investigate if it can be configured.

I like the execution and minimalist UI.

It would be awesome if this was a native or Tauri / Wails app, moving away from Electron would really de-bloat the application and set it apart from say using another VScode extension etc... I already have far too many chrome instances running due to Electron.

This is fantastic, thank you for making and sharing it?

Is there any chance of Heynote supporting Clojure syntax one day?

This could be a real boon for shell snippets, I hope you'll consider adding support for them.

Nice! Is the single buffer feature, non-negotiable?

I've found myself using Sublime Text in a similar manner (because it's crash-proof without saving to a named file).

I do use multiple buffers though (often ending up with too many and culling them like I do browser tabs).

  • I do the exact same thing. It's very handy that I don't have to save anything. I even use it for putting together longer prompts for ChatGPT.

How does syntax highlight work, or how to activate it for each block? What are the supported languages?

edit: now I get it. Suggestion, change the explanation of CTRL+L to "Change syntax highlight language for the current block"

Great utility. I rely on Sublime to quickly jot down my thoughts. I will use Heynote going forward. A few suggestions:

1. Can we create multiple tabs with split view? 2. Display stats like word, character count in the status bar. 3. Export options for the notes.

Thanks

Somewhat off topic, I love your website designs. They are simple but look great with a good use of color and space. The copy is also very well done.

What do you use to design your websites (Heynote and Locust)? Are you working off a template?

It seems strange for the website to only give the Apple shortcut keys for a cross-platform app. It gives the actual keys when I run it on Linux, but I can't figure out what "Ctrl + ⌥ + Up/Down" means.

Looks quite neat though.

  • Oh good catch. When I added linux support yesterday, I updated the download button, but I forgot to update the Ctrl/Cmd button. Should be fixed now.

    I'll also fix the "⌥" in the editor. Thanks!

This looks great. And after reading the description I immediately thought of emacs. Only then I read this post.

Have you tried emacs org-mode with code blocks? One can even execute them. (I never tried myself)

Have you considered any other emacs-based options?

I’ve always wanted something like this but integrated into the terminal or vim. Like you could have a hotkey that sends a json object from your debug session over to this scratch pad to save for later.

  • If you’re on macOS:

    pbpaste >> ~/Scratchfile

    You can probably hook that up to Alfred or whatever to have a hotkey for it.

Haven't gotten a chance to try yet but thank you for having an icon that actually looks unique. My dock is filled with purplish blue circles and squares and I have no idea which app any of them are for anymore.

I just tried it and it runs nicely. I'm sure you get this request all the time, but I'd love to have VIM key binding. I'm still using vim/neovim and I open a "temp.txt" for scratch.

I love this. I currently use an app like this. Ctrl-: opens and closes. But it is just one big blob and the Cmd-a thing gets me as well. Looking forward to giving this a go.

I'll try this out! I use a Slack DM with myself to persist scratch notes. The main benefit of this is that I'd easily be able to view notes on my phone and other computers.

This is excellent

Please add a donation button to allow us to thank you for your work

  • Thanks!

    Please send that donation to some organization that help people in greater need than me, on my behalf instead :).

Wanted to ask if it was cool with you if I created a Flatpak repo for Flathub for this? That was it can be distributed with Flatpak.

ah a fellow electron app publisher! qq - have you figured out automatic updates yet? i tried to do that in my app (https://github.com/smol-ai/GodMode) but everyone just complains about a blank white screen whenever i push an update, if they even receive it at all. feels very flimsy. what do uou recommend for update push best practice?

This is awesome. I've downloaded and added by todos to it. But then I remembered, how do I backup my notes and todos?

Can you add a feature to back up this to git?

Hey jonatanheyman, how do you render markdown? I tried to use the shortcut ⌥ + Shift + F but it doesn't look works for me.

⌘ + N to name the current note, and then a command to search notes by name, would be a great UX boost for a large volume of notes

Downloading now! I'm already excited! There's a couple of similar apps but they are 99% mac-only. Thanks for making a cross-platform one!

I love this concept, blocks with different language is great! Can drop my sublime plain text now

  • can we save the content into different files? Then I can split my lines into different subject

I always have a text editor open for notes and snippets like this. This sounds like a perfect replacement. Tabs would be a very nice addition.

The idea of Pages/Tabs would be useful to me. I'm a bit of a scratch-pad hoarder. I currently have 200+ notepad++ documents open.

I'd love to share this between computers (cross-platform) like I do my notes via IMAP. Is there an underlying file I can sync with?

Thank you jonatanheyman. This is absolutely brilliant and I see myself using this daily.

I've always used multiple tabbed unsaved files in notepad++ to do the same. Funny how things converge, this is very similar.

Amazing UX. I'm hopeful something like this can be done to replace the hellish experience of Jupyter notebooks.

Really well done. This will be replacing Sublime Text which I use as a scratch pad.

Please add inverted add and syncing to iCloud Drive.

Props for the default install location to be %LOCALAPPDATA% and not %APPADATA% (which ends up being AppData\Roaming...).

Seriously, nice work. If you are going to eventually offer a web version of it it would be great to be able to self-host.

This is super cool, nice work! I've just used apple notes for this in the past when on my mac, but this is way nicer.

I'd love a macOS menubar icon for Heynote. I currently use Evernote's Quick Note feature from its menubar app.

  • I'll look into it!

    Not what you asked for, but slightly related: You can set a global hotkey that shows/hides Heynote.

    • Yes, that might be adequate, thank you. I can't quite put my finger on what I like about the menubar app, but I do click it 30 times a day. Maybe just habit now.

      The hotkey is very responsive. Nice!

This is amazing, I, too will always open notes/logseq/typora/sublime text for such purposes.

Heynote is next level.

It's perfect. I've been using bbedit's scratchpad for this. This is a perfect alternative.

This is awesome. Consider fitting in as a browser extension so that when you open a new tab this comes up

Great app. Thanks for making it available.

Is there an option to rearrange blocks using drag-and-drop or a keyboard shortcut?

With the soaring popularity of Electron apps we need Electron to be distributed as a shared runtime.

  • so you want something akin to how the .NET Framework was included in Windows...

    what about different applications requiring different Electron versions?

    • In such rare case, it would download the required version. Having two separate Electron versions is still better than having ten in total, for each app separately.

      1 reply →

This is great! Thank you for creating this. Would love to see unix timestamp conversion in there too

I use Apple Notes for this. It doesn’t do the calculations, or the syntax highlight. But, it mostly just revives whatever I paste into it, and allows me to copy it to wherever when needed. Including images(screenshots), text with links etc.

The side benefit from using Apple Notes is that it is constantly and reliably syncing to my phone. So, I can always refer to stuff on the go.

  • I've recently started migrating from using Sublime Text to Notes for these scenarios too. I downloaded Heynote and am struggling to understand how/where it's better than either of those apps. Clearly I'm missing something, based on the other comments here.

awesome... I've always dreamed of a notepad that I could dump any text which includes numbers and it automatically simply made the sum of all the numbers found in the text (also averages)

maybe you could add a "Math adder/Math averager" block languages?

This is great! I've been using Caret or Sublime for note taking for years, love this.

i immediately tried e^(pi i) and is delightfully surprised that it works! not only the math supports complex numbers, it also allows functions

however, something like f(x)= sin(x)/x, f(0) returns NaN.

Are there any plans to support derivatives, integration and summation?

Great work! I´ve been looking for something like this for quite a time!

C# syntax support would be welcomed.

Units handling in maths blocks is awesome.

Exemple 1:

g = 9.81 m/s^2

time = 60s

Then "g*time" shows "588.6 m / s"

Exemple 2:

energy = 14 J

distance = 5m

"energy/distance" shows "2.8 N"

Wow.

EDIT: I just found out that behind the scenes it's using maths.js. This library does this natively. Input "14J/5m" into maths.js and you get "2.8 N" as output. Glad I discovered this library.

very good concept! i really would like to have this as a Web-app instead of downloading it...

  • I've entertained the thought of adding a web version of Heynote to heynote.com (using local storage for persistence).

great application and something i didnt ask for but needed somehow ;) Sometimes i have to quickly write something down for the reasons you stated. Then i have to open a text editor like Windows Editor or Notepad++. These are nice but they really don't have the feeling to write things down. You have somewhat of an anxiety that you'll lose that data if you forget to save it. Also there is no vim support and stuff like that. So i really liked the idea and would definitely use it if it gets vim support! Also one thing i realized is that the cursor starts at the bottom of 'the note' or whatever i should call it. It would be great too if i got the cursor position where i left it when i closed the app. Also on Windows there is a black bar on the top which should be removable i think looking at obsidian and other js apps. Whatever these are just some small things and im sure they'll get fixed soon. Thank you for the great application and i hope it succeeds!!

  • What's Windows Editor? Do you mean the good old Notepad? :)

    • yeah yeah suure Notepad of course. If Windows is set to german its "Editor" and not Notepad for some weird reason. Thanks for reminding me of that <)

This is absolutely fantastic well crafted app that I was looking for. Kudos to you(/u/jonatanheyman). The UX is all around friendly and not 10x bloated feature crapyard. Also thanks for not pumping the whole landing page with 20k emojis, something I honestly truly appreciate.

Aside: This may (or not) have issues with hey.com people.

This looks fantastic. I will definitely give it a spin. I've been tracking what I call "computational scratchpad" apps for a while now but haven't found one that fits my environment/workflow yet. Maybe Heynote will. Here are some others that I've looked at:

* https://soulver.app Granddad of them all, Mac-only, proprietary, expensive

* https://numi.app Mac-only, proprietary, semi-expensive. Has a Github and claims to be MIT-licensed but I don't see how you could build a working application with what's in the repo.

* https://calca.io Windows- and Mac-only, proprietary, not expensive, nice docs.

* https://notepadcalculator.com Web-based, not open source, hosted but uses local storage. You can optionally create an account to sign in and have your notes saved in plaintext on his server.

* https://github.com/bbodi/notecalc3 Web-based, open source, self-hostable. But it seems to save your document in the URL string itself, which means the URL gets updated with almost every keystroke. Worth it for quick calculations and very small notes, I guess.

* https://numpad.io Web-based, hosted, not open source. Also stores entire doc in URL, but doesn't update the URL bar the whole time you're typing.

* https://numbr.dev/ Web-based, hosted. Has a Github but is not open source and the repo does not have all the bits needed to self-host it. Stores entire doc in URL.

* https://github.com/metakirby5/codi.vim Vim/NeoVim plugin that is less like a "smart notepad" and more like Jupyter but with results printed on the right side of the screen instead of in a cell below. Supports lots of programming languages.

  • I would consider Emacs to be the granddad of "computational scratchpads". Being able to run a repl in a buffer, tangle code blocks in org-mode, create buffers against which to run code, etc. Plus the calculator is fire.

  • Great list! It looks exhaustive, you've managed to include all I have tried and a few more.

    Myself I have ended up with mostly using Soulver and TextMate. TM is not really the same thing but it has nice built in text manipulation for more advanced things like "diff selection with clipboard", regex and "sorta and remove duplicates". The thing it lacks is on the scratchpad/autosaving... So I just abuse the window restoration feature and never close or save any documents but have 50 textmate windows :-)