Why I stopped using Apple Notes for my code notes
I've been an Apple Notes person for years. Meeting notes, rapid-fire thoughts, things to remember. I don't think about it, I just use it. For most notes, it's all I need.
It has one problem, and I could never get past it: it cannot handle code.
The specific gap
Some mess in my notes was fine. But once I started picking up Kubernetes and heavy AWS infra, it kinda got out of hand. Half the note would be me explaining something, the other half would be a command or a config block. My actual notes looked like this:
Quick commands
kubectl config get-contexts
kubectl config current-context
kubectl config use-context <context-name>
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"dynamodb:CreateTable",
"dynamodb:DeleteTable",
...
]
}
]
}
Apple Notes has a monospace toggle, but my markdown muscle memory is to wrap code in backticks, like this, then press enter. But Apple Notes doesn't register that as monospace code. So I end up with no monospace at all.
For a while I just lived with it. The notes were still useful, even if they looked bad.
Why I didn't just use something else
The obvious response is to pick a notes app that handles code well. I tried:
VS Code. It works for markdown, but I always needed a preview extension to see it rendered, which felt clunky. And I wanted notes to live outside of any specific codebase, not tied to a repo. Something small, open on the side of my desktop.
Obsidian. Didn't feel right at all. Not designed for the kind of simplicity I was looking for.
Bear, Craft, Notion. Too clunky. Not as minimal or fast as I wanted.
Dedicated snippet apps. Opposite problem. Great for code, no place for the notes around it.
So I had a weirdly specific gap. I wanted something as minimal and fast as Apple Notes, but with real code blocks and a beautiful design.
What I built
I called it Rook. The goal was narrow: a minimal notes app where text feels like Apple Notes, and code feels like code. Basically, Apple Notes and VS Code had a child.
Here's what it does:
- Fully local. Everything stays on your Mac. Nothing to sign in to, nothing to sync.
- Code blocks with automatic language detection. Paste a bash one-liner, it gets highlighted as bash. Paste Swift, it figures out Swift.
- Four themes. Dark, paper, terminal, midnight. All readable. I almost cut this for v1 and I'm glad I didn't. The paper theme is my favorite, but some days dark is perfect.
-
Slash commands. Headers, lists, code blocks, links, all via
/. - Minimal UI. Sidebar, note list, editor. Skipped the graph views, daily notes, and plugin marketplaces. If I add those later, I will. Starting without them is on purpose.
What surprised me
A few things I didn't expect going in:
The text editor took longer than I thought. Highlightr covered the syntax highlighting. What took actual time was the regex for inline code, heading auto-format, code block boundaries, and paragraph breaks that don't fight you. On top of that, because it's a custom NSTextView, I had to manually wire things you normally get out of the box: undo/redo, select all, and the selection toolbar.
Local-first made everything simpler. No account flow, password reset, or sync conflicts to wrangle. You open the app and type. I didn't realize how many apps feel heavy until I built one that isn't.
I still use Apple Notes for non-code things. Rook didn't kill it. Rapid-fire meeting notes stay in Apple Notes. Anything with code or commands goes in Rook. Honestly, it feels great. Using a notes app I built for my own problem is weirdly satisfying.
If this resonates
I'm launching Rook on Product Hunt May 19. If you're a Mac dev who's been living with the same Apple Notes gap, you can check it out at userook.app, or grab early access right now at userook.app/early. Free to use, Mac only for now. First 100 people who sign up get a lifetime discount on Pro features once I ship those.
Would genuinely love to hear what you use today for code notes, and what's missing. Even if Rook isn't it, I want to know.
Top comments (0)