My Grimoire

Introduction

A Grimoire is a book of magic.

Mine is the most valuable tool I own. It's made from the collection of ten thousand notes I've assembled over the past twenty years. Stored knowledge from a generation's worth of time.

Sure, you could call it an second brain, a developer's notebook, or, simply, a notes app.

But, words matter.

I'd rather have a book of magic than any of those more mundane tools.

Casting Content

The notes in my grimoire can be about anything. A list of gift ideas, how to center text on a web page, or steps to reset the check-engine light on my car when they forget to do it at the oil change place. Anything I care to learn or remember is a candidate for inclusion.

But, it's not just for me. My grimoire is the foundation for everything I make. The pages and posts for my site are written in it. It's where I'm writing the post you're reading now.

When I want to send something out into the world, I simply update a little metadata section at the bottom of the note to set a "status" flag to "published". Something like this:

-- metadata
-- created: 2022-11-02T23:29:42-04:00
-- id: 2h1iv27a
-- type: post
-- status: published

The next time I run my site builder1 the new note gets picked up, turned into a web page, and delivered to the site. Because it's so low friction it's easy to do the "working-in-public" thing and constantly publish to my digital garden.

Invoking Code

Beyond holding my notes, my grimoire is alive. I can write little apps and proggrams and put them directly in the notes. Here's what that looks like:

TODO

Link Youtube video

Starting The Magic

My grimoire didn't start out with so much power. In the beginning, it was nothing more than a plain-text notes app. It was like that for years. I'd go back to that in a heartbeat if I somehow lost the ability to run code or publish directly from it. Those features are great to have, but the notes are where the power lies.

Keeping a grimoire has been one of the most beneficial I've done. It's helped me in both my personal life and in my career. I really can't speak highly enough about it, other than to say this: If you want to get better at making your way in the world, my most general piece of advice is to take more notes.

~ fin ~

Endnotes

  • I got the suggestion to call my collection of notes a Grimoire from an article in 2600 - The Hacker Quarterly Magazine. I'm a huge fan of tweaking the langauge we use in our heads to change the way we think and move in the world. This switch was one of the most impactful I've ever made.

    I still have my original copy of the ariticle, but I haven't found a version on any public facing website I can link to.

  • I'm still working on improvements for my grimoire software. If you've ever read The Diamond Age: Or, A Young Lady's Illustrated Primer by Neal Stephenson you'll have an idea of where I'd like to take it.

  • The abilty to run code inside notes is from Literate Programming. I originaly used Org Mode in the Emacs text editor for the ability. Later, I switched to Neovim and wrote my own plugin on top of Telescope to provide the functionality.

    If you do anything with code and have a chance to use an app that lets you run code it's absolutely worth giving it a try. It like having a superpower.

    (If you know a little python, jupyter notebooks kinda has a similar vibe. It's worth a quick look.)

  • There's a billion and a half notes apps out there. The one that really got me started taking notes was nvAlt for the mac.

    The person who made nvAlt stopped updating it a long time ago and started working on a new app called nvUltra. It's been in "private beta" for years but I'd been able to keep nvAlt running long enough that I never tried it before moving to Emacs and then my own Neovim plugin.

    The key for me with nvAlt was the single text field of the primary interface. As you start typing, it would start searching for notes that matched what you typed, but you could hit a hot key to make it start a new note with whatever you'd just typed as the title. The result is that it was super fast at both finding existing notes and start new ones.

    When I finally decided to switch away from nvAlt I looked for apps that had the same interface. Obsidian was just out and was the closest thing, but didn't quite get it right. It was just enough friction that I gave up on it and went down my own path (which should give you an idea of just how important the functionality was/is to me).

  • How you keep notes is very much a personal preference thing. For me, it comes down to wanting nothing more than a good search (for which I use Meilisearch) and using nonce words for top level tagging via file names.

    For example, I use the nonce string py- for notes that are primarly about Python. If I want to look up my note on how to do case insensitive regex with python I'll start typing something like:

    py- regex ins

    and this is what I'll see:

    My apologies. Alt text is currently offline. I'm working on an update to fix it.

    I'm not interested in spending time trying to come up with and manage links between my notes and with 10K+ notes I've long since given up trying to sort things in folders. In fact, I realized having to make a decision about what folder to store a note in created a friction that prevented me from taking some notes I otherwise would have. So, my approach is to just throw everything into a single bucket and use a solid search tool to find things.

  • I used the Markdown plain-text format during the years I spent with nvAlt. I was still free-handing HTML for my site at that point but eventually started to use Markdown for my online content as well. It always felt too limited for me. I tried switching to MDX, but gave up after not being able to get any of the four modules I tried for it to work properly.

    That frustration lead me to make my own markdown replacment format called Neopolitan. And that, in turn, lead to the creation of my Nepoligen static site generator becuase I needed something to actually publish the format.

    It's mostly a personal project at this point but the goal is to polish it up so other folks who like to tinker with things can play with it too. (It's open-source so you can check it out on GitHub if you want to poke at it in the mean time.)

Footnotes