Playing around with org-db-v3 and consult: vector search of my blog post Org files, with previews

| emacs, org

I tend to use different words even when I'm writing about the same ideas. When I use traditional search tools like grep, it can be hard to look up old blog posts or sketches if I can't think of the exact words I used. When I write a blog post, I want to automatically remind myself of possibly relevant notes without requiring words to exactly match what I'm looking for.

Demo

Here's a super quick demo of what I've been hacking together so far, doing vector search on some of my blog posts using the .org files I indexed with org-db-v3:

Screencast of my-blog-similar-link

Play by play:

  • 0:00:00 Use M-x my-blog-similar-link to look for "forgetting things", flip through results, and use RET to select one.
  • 0:00:25 Select "convert the text into a link" and use M-x my-blog-similar-link to change it into a link.
  • 0:00:44 I can call it with C-u M-x my-blog-similar-link and it will do the vector search using all of the post's text. This is pretty long, so I don't show it in the prompt.
  • 0:00:56 I can use Embark to select and insert multiple links. C-SPC selects them from the completion buffer, and C-. A acts on all of them.
  • 0:01:17 I can also use Embark's C-. S (embark-collect) to keep a snapshot that I can act on, and I can use RET in that buffer to insert the links.

Background

A few weeks ago, John Kitchin demonstrated a vector search server in his video Emacs RAG with LibSQL - Enabling semantic search of org-mode headings with Claude Code - YouTube. I checked out jkitchin/emacs-rag-libsql and got the server running. My system's a little slow (no GPU), so (setq emacs-rag-http-timeout nil) was helpful. It feels like a lighter-weight version of Khoj (which also supports Org Mode files) and maybe more focused on Org than jwiegley/rag-client. At the moment, I'm more interested in embeddings and vector/hybrid search than generating summaries or using a conversational interface, so something simple is fine. I just want a list of possibly-related items that I can re-read myself.

Of course, while these notes were languishing in my draft file, John Kitchin had already moved on to something else. He posted Fulltext, semantic text and image search in Emacs - YouTube, linking to a new vibe-coded project called org-db-v3 that promises to offer semantic, full-text, image, and headline search. The interface is ever so slightly different: POST instead of GET, a different data structure for results. Fortunately, it was easy enough to adapt my code. I just needed a small adapter function to make the output of org-db-v3 look like the output from emacs-rag-search.

(use-package org-db-v3
  :load-path "~/vendor/org-db-v3/elisp"
  :init
  (setq org-db-v3-auto-enable nil))

(defun my-org-db-v3-to-emacs-rag-search (query &optional limit filename-pattern)
  "Search org-db-v3 and transform the data to look like emacs-rag-search's output."
  (org-db-v3-ensure-server)
  (setq limit (or limit 100))
  (mapcar (lambda (o)
            `((source_path . ,(assoc-default 'filename o))
              (line_number . ,(assoc-default 'begin_line o))))
          (assoc-default 'results
                         (plz 'post (concat (org-db-v3-server-url) "/api/search/semantic")
                           :headers '(("Content-Type" . "application/json"))
                           :body (json-encode `((query . ,query)
                                                (limit . ,limit)
                                                (filename_pattern . ,filename-pattern)))
                           :as #'json-read))))

I'm assuming that org-db-v3 is what John's going to focus on instead of emacs-rag-search (for now, at least). I'll focus on that for the rest of this post, although I'll include some of the emacs-rag-search stuff just in case.

Indexing my Org files

Both emacs-rag and org-db-v3 index Org files by submitting them to a local web server. Here are the key files I want to index:

  • organizer.org: my personal projects and reference notes
  • reading.org: snippets from books and webpages
  • resources.org: bookmarks and frequently-linked sites
  • posts.org: draft posts
(dolist (file '("~/sync/orgzly/organizer.org"
                "~/sync/orgzly/posts.org"
                "~/sync/orgzly/reading.org"
                "~/sync/orgzly/resources.org"))
  (org-db-v3-index-file-async file))

(emacs-rag uses emacs-rag-index-file instead.)

Indexing blog posts via exported Org files

Then I figured I'd index my recent blog posts, except for the ones that are mostly lists of links, like Emacs News or my weekly/monthly/yearly reviews. I write my posts in Org Mode before exporting them with ox-11ty and converting them with the 11ty static site generator. I'd previously written some code to automatically export a copy of my Org draft in case people wanted to look at the source of a blog post, or in case I wanted to tweak the post in the future. (Handy for things like Org Babel.) This was generally exported as an index.org file in the post's directory. I can think of a few uses for a list of these files, so I'll make a function for it.

(defun my-blog-org-files-except-reviews (after-date)
  "Return a list of recent .org files except for Emacs News and weekly/monthly/yearly reviews.
AFTER-DATE is in the form yyyy, yyyy-mm, or yyyy-mm-dd."
  (setq after-date (or after-date "2020"))
  (let ((after-month (substring after-date 0 7))
        (posts (my-blog-posts)))
    (seq-keep
     (lambda (filename)
       (when (not (string-match "[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]-emacs-news" filename))
         (when (string-match "/blog/\\([0-9]+\\)/\\([0-9]+\\)/" filename)
           (let ((month (match-string 2 filename))
                 (year (match-string 1 filename)))
             (unless (string> after-month
                              (concat year "-" month))
               (let ((info (my-blog-post-info-for-url (replace-regexp-in-string "~/proj/static-blog\\|index\\.org$\\|\\.org$" "" filename) posts)))
                 (let-alist info

                   (when (and
                          info
                          (string> .date after-date)
                          (not (seq-intersection .categories
                                                 '("emacs-news" "weekly" "monthly" "yearly")
                                                 'string=)))
                     filename))))))))
     (sort
      (directory-files-recursively "~/proj/static-blog/blog" "\\.org$")
      :lessp #'string<
      :reverse t))))

This is in the Listing exported Org posts section of my config. I have a my-blog-post-info-for-url function that helps me look up the categories. I get the data out of the JSON that has all of my blog posts in it.

Then it's easy to index those files:

(mapc #'org-db-v3-index-file-async (my-blog-org-files-except-reviews))

Searching my blog posts

Now that my files are indexed, I want to be able to turn up things that might be related to whatever I'm currently writing about. This might help me build up thoughts better, especially if a long time has passed in between posts.

org-db-v3-semantic-search-ivy didn't quite work for me out of the box, but I'd written an Consult-based interface for emacs-rag-search-vector that was easy to adapt. This is how I put it together.

First I started by looking at emacs-rag-search-vector. That shows the full chunks, which feels a little unwieldy.

2025-10-09_10-05-58.png
Figure 1: Screenshot showing the chunks returned by a search for "semantic search"

Instead, I wanted to see the years and titles of the blog posts as a quick summary, with the ability to page through them for a quick preview. consult.el lets me define a custom completion command with that behavior. Here's the code:

(defun my-blog-similar-link (link)
  "Vector-search blog posts using `emacs-rag-search' and insert a link.
If called with \\[universal-argument\], use the current post's text.
If a region is selected, use that as the default QUERY.
HIDE-INITIAL means hide the initial query, which is handy if the query is very long."
  (interactive (list
                (if embark--command
                    (read-string "Link: ")
                  (my-blog-similar
                   (cond
                    (current-prefix-arg (my-11ty-post-text))
                    ((region-active-p)
                     (buffer-substring (region-beginning)
                                       (region-end))))
                   current-prefix-arg))))
  (my-embark-blog-insert-link link))

(defun my-embark-blog--inject-target-url (&rest args)
  "Replace the completion text with the URL."
  (delete-minibuffer-contents)
  (insert (my-blog-url (get-text-property 0 'consult--candidate (plist-get args :target)))))

(with-eval-after-load 'embark
  (add-to-list 'embark-target-injection-hooks '(my-blog-similar-link my-embark-blog--inject-target-url)))

(defun my-blog-similar (&optional query hide-initial)
  "Vector-search blog posts using `emacs-rag-search' and present results via Consult.
If called with \\[universal-argument\], use the current post's text.
If a region is selected, use that as the default QUERY.
HIDE-INITIAL means hide the initial query, which is handy if the query is very long."
  (interactive (list (cond
                      (current-prefix-arg (my-11ty-post-text))
                      ((region-active-p)
                       (buffer-substring (region-beginning)
                                         (region-end))))
                     current-prefix-arg))
  (consult--read
   (if hide-initial
       (my-org-db-v3-blog-post--collection query)
     (consult--dynamic-collection
         #'my-org-db-v3-blog-post--collection
       :min-input 3 :debounce 1))
   :lookup #'consult--lookup-cdr
   :prompt "Search blog posts (approx): "
   :category 'my-blog
   :sort nil
   :require-match t
   :state (my-blog-post--state)
   :initial (unless hide-initial query)))

(defvar my-blog-semantic-search-source 'org-db-v3)
(defun my-org-db-v3-blog-post--collection (input)
  "Perform the RAG search and format the results for Consult.
Returns a list of cons cells (DISPLAY-STRING . PLIST)."
  (let ((posts (my-blog-posts)))
    (mapcar (lambda (o)
              (my-blog-format-for-completion
               (append o
                       (my-blog-post-info-for-url (alist-get 'source_path o)
                                                  posts))))
            (seq-uniq
               (my-org-db-v3-to-emacs-rag-search input 100 "%static-blog%")
               (lambda (a b) (string= (alist-get 'source_path a)
                                      (alist-get 'source_path b)))))))

It uses some functions I defined in other parts of my config:

When I explored emacs-rag-search, I also tried hybrid search (vector + full text). At first, I got "database disk image is malformed". I fixed this by dumping the SQLite3 database. Using hybrid search, I tended to get less-relevant results based on the repetition of common words, though, so that might be something for future exploration. Anyway, my-emacs-rag-search and my-emacs-rag-search-hybrid are in the emacs-rag-search part of my config just in case.

Along the way, I contributed some notes to consult.el's README.org so that it'll be easier to figure this stuff out in the future. In particular, it took me a while to figure out how to use :lookup #'consult--lookup-cdr to get richer information after selecting a completion candidate, and also how to use consult--dynamic-collection to work with slower dynamic sources.

Quick thoughts and next steps

It is kinda nice being able to look up posts without using the exact words.

Now I can display a list of blog posts that are somewhat similar to what I'm currently working on. It should be pretty straightforward to filter the list to show only posts I haven't linked to yet.

I can probably get this to index the text versions of my sketches, too.

It might also be interesting to have a multi-source Consult command that starts off with fast sources (exact title or headline match) and then adds the slower sources (Google web search, semantic blog post search via org-db-v3) as the results become available.

I'll save that for another post, though!

View org source for this post

Slowing down and figuring out my anxiety

| parenting, life, reflection

I am going through a lot. It is not much compared to what other people are going through. But it is more than what I usually go through, so it's a good idea to slow down and give myself space to learn how to handle it.

Part of handling times like these is touching base with what I know. I know that to be human is to have challenging times, so I don't find this surprising. I know that it is objectively difficult and that other people have a hard time with situations like this, so it's not a personal failure and there are no easy solutions. I know that it is temporary and that things will eventually settle into a new normal. I know there will be many such transitions ahead, and I'm getting used to the process of leaving old normals behind and focusing on the next step.

I know the way my brain tends to behave when it's overloaded. My attention hiccups. I hang up my keys on a coat hook instead of the one near the door. My fingers stutter on the piano. I can't multitask. When that starts to get in my way, it's a good reminder to get more sleep and do fewer things. There are very few firm commitments in my life, and I appreciate the flexibility that my past self planned. There's room to wobble1 without bringing everything crashing down.

Text from sketch

A few of my brain's failure modes 2025-09-13-05

  • Tired
    • Sometimes not obvious! Can turn up as fogginess, sluggishness, or grumpiness.
    • Prioritize sleep.
    • Try a 30-min nap, and extend if needed.
    • Can't run on 7h sleep, probably like 8.5+ regularly
  • Over-stimulated
    • Too noisy, too visually overwhelming, too crowded.
    • Go to a quieter place, or take the edge off with earplugs.
    • Draw
    • Nap
  • Decision fatigue
    • Too much research/shopping.
    • Take a break.
    • Take a chance.
  • Fragmented, stuck
    • Argh! I just want to finish this thought!
    • Better to breathe and postpone it to one of my focused time chunks. (Maybe I can move BB to Fri)
  • Anxious, catastrophizing
    • Oh no, what if…
    • Breathe, calibrate
  • Fretful
    • "Remember to…" "I'm not 5, Mom."
    • Breathe, hold my tongue.
    • Let her experiment.
  • Distracted
    • Can overlook things
    • Slow down, make a Conscious effort
  • Overloaded
    • Can't do two things at once.
    • Slow down, prioritize.
  • Craving stimulation
    • Doomscrolling, revenge bedtime procrastination
    • Rest or channel into writing/drawing.
    • Enjoy proper break.
  • Grumpy with the world
    • Try to find something positive to focus on.
  • No clear answers
    • Weighing difficult choices, dealing with complex issues
    • It's just life.
    • Experiment?

I still notice my anxiety spike from time to time. My anxiety spills out as trying to either control too much, or (knowing that control is counterproductive) stepping back, possibly too much. It tends to latch onto A+'s schoolwork as the main thing it could possibly try to do something about. I feel partially responsible for helping her develop study skills and navigate the school system, but these things are mostly outside my control. It's good that it's not in my control. Then there's space for her to learn and grow, and for me to learn along with her.

Instead of trying to push futilely, it's better to step back, simplify, focus on getting myself sorted out, and build up from a solid base. Better to focus on connecting with rather than correcting A+, especially as she takes her own steps towards autonomy. It's okay for now to focus on making simple food, washing dishes,2 combing out the tangles in hair and in thoughts. Maintenance.

Here's the core I'm falling back to for now:

  • Sleep
  • A good walk outside, maybe 30-60 minutes
  • Making an effort to eat a variety of healthy food, picking up ideas from DASH/Mediterranean3
  • Piano, maybe 20 minutes: low stakes, not intense, just enough to notice when my mind wanders or my breathing stops, and the ever so gradual improvement from familiarity;
  • A little bit of exercise: doesn't have to be much, just enough to begin the habit (15-25 minutes)
  • Writing and drawing to untangle my thoughts
  • A little bit of fun for myself. Might be tinkering with Emacs, might be drawing. Simple lines and colours are nice.
  • Giving myself permission to tell other people "That's not one of my priorities for now." There's only so much I can focus on at a time.
  • The reminder that other people have their experiments too. It's not about me; how freeing! It's good to not let my anxiety (just my ego's occasional fears of not doing enough, not being enough) engulf what properly belongs to other people. Learning is mostly A+'s experiment, and I can see this time as collecting data for a baseline. I'm happy to help her when she wants my help. Let's find out what can she do when I'm not pushing.

It's important to me to start from where I am and work with what I've got. Where else could I be, and what else could I use? Only here, only this, and it's enough.

I'm working on embracing my limits. It would be unproductively egotistic to think I have to do this all on my own. It helps to unload my brain into my Org Mode / Denote text files, my sketches, and my index cards so I can see beyond the single dimension of thought. Some days, even that is difficult. It's okay for my brain to not feel cooperative all the time. Some days are more blah than others, and it's hard to shape enough of the thought-fog4 into a post or a diary entry. There's no point in grumping at myself over it. It's okay for those days to be rest days, "take it easy" days, "there's room for this too" days. Goodness knows I've had slow months, slow years.5 (And if that's good for me, why not extend the same grace to A+? She'll figure things out when she's ready.)

I'm practising asking other people for help and letting them actually do so. I know A+ benefits from a wider world, and I'm glad she can chat with her aunts and cousins. I can slowly experiment with finding tutors and enrichment activities for A+, maybe even starting out with classes for me sometimes. She's been going to 1-on-1 gymnastics class for three weeks now. I love seeing how she's slowly learning to check in with her body and catch her breath so that she has more energy and can work on her flips safely. I love the way she gets up and tries again.

I wonder what other teachers and peers I can help A+ find. Next week, A+ will join a small-group art class so that she can have fun with art outside the requirements of school. A friend of hers is in the same extracurricular class, and maybe the fun will get her over the initial hump of practising fine motor skills and tolerating the frustrating gap between taste and skill.6 I want playfulness to be the core of her experience with art, not the pressure my anxiety feels about getting her art homework done. Knowing what my anxiety whispers, I can keep that from leaking out to her. The goal is not to get things done; the goal is simply to have the opportunity to find joy. Someday, when she reaches for a pencil or a brush, I want that feeling to come with warmth, a smile, curiosity: what will we encounter on the page today?

As she learns to read and write and think more deeply, I want the same for her: not the compliance of "have I checked the boxes,7" but "where can these thoughts take me?" Can I find her role models who can share that ineffable joy or opportunities where she can discover it for herself? Can it take root deep within her, something to touch as she goes through her own challenges, something that grows as she grows?

A wider world could help me, too. How wonderful it is to deal with something that so many people have gone through, are going through, even if there are no universal answers. I'm checking out workbooks from the library, and it might be interesting to experiment with seeing a therapist. I have mild anxiety according to the screening tools, but it might still be handy to pay for the accountability and structured exploration of my thoughts. Consulting an intern therapist might be a more affordable starting point that can help me figure out if I need more qualified care. We don't have medical benefits, so I want to be thoughtful about how I use resources, and I want to push myself to try out more help so that I know what that could be like instead of trying to handle everything on my own. Like the way A+'s gymnastics teacher thinks about the next skill that might be in her zone of proximal development8 (not too easy, not too hard), maybe someone else can help me map out what nearby betters could be and how I might get there.

Text from sketch

My brain at its best 2025-09-14-01

  • curious: I notice something interesting and I experiment with it.
  • always improving: I try little ways to make things better.
  • taking notes along the way: This helps me and other people.
  • satisfied: I did something good for me.
  • appreciative: I see and reflect the good around me.
  • supportive: I encourage people.
  • scaffolding: I break things down to make them easier to learn.
  • playful: I make silly puns and use funny voices.
  • adaptable: I work with what I've got.
  • connecting: I combine ideas.
  • resourceful: I solve problems, sometimes creatively.
  • prepared: I anticipated what could happen and my preparations paid off!

I know what it feels like when I can handle tough situations well: when I'm ready with a Band-aid or a hug, when I keep our basic needs sorted out so that we have a solid foundation to experiment on, when I get the hang of spelling new terms and organizing my hasty research into coherent understanding and ideas for things to try, when I can be warm and affectionate and appreciative and supportive.

I know what I hope A+ will feel: believed in, excited about her growing capabilities, supported when she wants help, open to things she might not know to ask about, able to straddle both wanting to be cuddled and wanting to be on her own. I want her to feel like she's the one figuring things out, so I want to get better at being a supporting character instead of letting my ego get in the way. (It's not a power struggle, it's not a moral judgment of me or of her, it's just life.)

When my anxiety wrings her hands, frets, whispers, worries that I'm not enough, I can think: ah, she is just trying to keep all of us safe, figure out how to make things better. I can use this imperative, this desire to try to help A+ live her best life. I know I don't want A+ to be driven by anxiety or controlled by conditional esteem.9 There'll be hard times for A+, like for everyone. I want her to be able to check in with herself, figure out what she needs, and feel her strength grow as she stretches. So I can work on getting better at that myself.

It's good to practise these things now, in this time that seems hard compared to the recent past but will seem easy compared to the future. Embrace the stress test while the stakes are low, so that I can reflexively use the skills when the stakes get higher, and so that A+ can take what she likes (kids are always watching) and use them as she figures out her own way.

Step by step. It's manageable. I can manage it. Could be interesting to see how we can make it slightly better. I'm not looking for answers. No one has them, and things change all the time. But the figuring out, that's the work of being human, isn't it?

This blog post was nudged by the October IndieWeb Carnival theme of ego.

Footnotes

2

The repetitive tasks of daily life remind me of my reflection on renewal.

6

Looking at landscapes; art and iteration and the quote from Ira Glass about the gap between taste and skill

7

More about motivation in Richard M. Ryan, Edward L. Deci, Intrinsic and Extrinsic Motivations: Classic Definitions and New Directions, Contemporary Educational Psychology, Volume 25, Issue 1, 2000, Pages 54-67, ISSN 0361-476X, https://doi.org/10.1006/ceps.1999.1020. (https://www.sciencedirect.com/science/article/pii/S0361476X99910202)

9

Brueckmann, M., Teuber, Z., Hollmann, J. et al. What if parental love is conditional …? Children’s self-esteem profiles and their relationship with parental conditional regard and self-kindness. BMC Psychol 11, 322 (2023). https://doi.org/10.1186/s40359-023-01380-3

Also: Assor A, Roth G, Deci EL. The emotional costs of parents' conditional regard: a self-determination theory analysis. J Pers. 2004 Feb;72(1):47-88. doi: 10.1111/j.0022-3506.2004.00256.x. PMID: 14686884.

View org source for this post

2025-10-27 Emacs news

| emacs, emacs-news

Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, Mastodon #emacs, Bluesky #emacs, Hacker News, lobste.rs, programming.dev, lemmy.world, lemmy.ml, planet.emacslife.com, YouTube, the Emacs NEWS file, Emacs Calendar, and emacs-devel. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at sacha@sachachua.com. Thank you!

View org source for this post

Drawing trees

| drawing

Following the tips in How to draw when you don't have time by Javi can draw!, I have been drawing trees. The video is 6.5 minutes long so it's easy to fit in. From the video:

Your main goal is to create a habit of drawing for drawing's sake.

Here are some of my trees:

Text from sketch

Trees sachachua.com/2025-10-20-07

  1. cypress tree
  2. pine tree
  3. oak tree
  4. spruce tree
  5. baobab tree
  6. tree
  7. tree
  8. tree
  9. tree
  10. tree
  11. tree
  12. tree
  13. tree
  14. willow tree
  15. tree
  16. tree
  17. tree
  18. tree
  19. tree
  20. tree
  21. tree
  22. tree
  23. tree
  24. tree
  25. tree
  26. tree
  27. tree
  28. tree
  29. tree by A+
  30. tree
  31. tree
  32. tree
  33. birch tree
  34. mango tree
  35. banana tree

Or in the little icon collection I've been building: trees.

tree--2025-10-20-07-3-1.jpeg

I think my favourite simple tree is this one. I like the way it gives me a little bit of a feeling of leaves being in front or behind, and it looks like something I can get the hang of drawing quickly.

tree--2025-10-20-07-2-5.jpeg

My favourite tree drawn from life is this one. I can think about where I was sitting when I drew it.

oak-tree--2025-10-20-07-0-2.jpeg

It's hard to pick my favourite from a tutorial or a reference photo. Maybe this one. I like the way it has light and dark.

tree-by-a--2025-10-20-07-4-0.jpeg

A+ drew a tree too.

A number of related tutorials and references:

I found the video via Mike Rohde's Sketchnote Lab post for October. Looking forward to drawing more trees!

View org source for this post

2025-10-20 Emacs news

| emacs, emacs-news

: Fixed org-linkin link, thanks gnomon-!

Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, Mastodon #emacs, Bluesky #emacs, Hacker News, lobste.rs, programming.dev, lemmy.world, lemmy.ml, planet.emacslife.com, YouTube, the Emacs NEWS file, Emacs Calendar, and emacs-devel. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at sacha@sachachua.com. Thank you!

View org source for this post

Connecting ideas

| writing

One of the things I like about going through elementary education as a parent is thinking about my processes for making sense of things and how I can help A+ figure out her own way to do that. A+ is in grade 4, and she has a research project that's due in a few weeks. I helped her take notes on different websites using a stack of index cards. The next time she lets me help her with homework,1 I can show her how to sort those index cards into piles by topic. Then she can take each pile and figure out their sequence.

Index card sorting is the slightly-larger version of the way I used to help her with writing by letting her brainstorm a whole bunch of keywords in any order she wants. Ideas for a paragraph or a school essay fit on a page, but a longer report needs more space and tactile experience. I write keywords as she dictates them, we move things around to cluster similar ideas, and then she can pick whatever she wants to write about first (or jump into the middle) and thread her sentences through those words. Get the chunks down first, get them to be the right size for your brain, and then figure out the flow. Someday I'll show her mindmapping programs (or even maybe Org Mode!). For now, index cards and drawing programs help us focus on ideas without getting lost in interfaces. She's still far from making her own Zettelkasten. I don't even know if that'll suit her brain. But if I show her the ideas in miniature and shift some of my thinking to forms she can observe, maybe that'll give her some tools that work for where she is right now. Like the way physical math manipulatives make abstract numbers more real, I hope that that moving ideas around helps her think about thinking.

Cognitive load

This challenge of helping A+ figure out how to make sense of things and convert that understanding into a form her teacher can grade is similar to something I've been working on for many years. My mind finds it hard to settle on one topic. It likes to jump from one thing to another. I'm learning to accept that. I like writing non-linearly. I like connecting ideas. To write something sensible, I sometimes need to summarize ideas enough so that I can fit them within my working memory. (In one blog post? On one page? On their own index cards?) Too much cognitive load means the ideas fall apart. There's no getting around intrinsic cognitive load, but sometimes it's easier to look at smaller chunks. I can get around extraneous cognitive load by rewriting or redrawing things to cut out the fluff, like the way business books are padded with lots of filler. Managing my germane load–my working memory, the particular ways of encoding the knowledge into schemas in my head or in my notes that will work for my brain–is the work I get to focus on.

Figuring things out

I use blog posts, sketches, and hyperlinks to chunk thoughts into building blocks. Then I need to figure out the order I want to discuss them in. It's difficult to run a single coherent line through the ideas. Sometimes I experiment with tangents in side notes or collapsible sections. Sometimes I can't get the ideas all straightened out. Sketchnotes and maps sometimes help show the spatial relationship between ideas, when I can squish things down into two(ish) dimensions.2

Even if I had all the continuous quiet time I wanted, I'd still need these rough notes to get things out of my head and into a form I can look at. It's okay for them to not be coherent and polished. I figure out what I think by writing and drawing. This is the doing of it. Other people's essays also evolve out of notes that are gradually fleshed out. There's hope for it yet. Slosh enough mnemonic slurry around in various buckets, and something interesting might precipitate. The idea of an atomic note is nice, but I'm not there yet. For now, I think I'm better off letting my mind explore these branches instead of pruning things down to a singular focus.

Sharing the digressions and connections

It's reassuring to know that I'm not the only one whose mind wants to go down all the different paths. In "The utility of digressions," Ruben Schade wrote:

In my original post I joked that my blog is often full of nonsensical or meandering digressions. This is because I have an odd sense of humour, but it’s also fun making connections between disparate things. … Digressions and tangents are one of the key ways that human writing is interesting. I’ve gone down so many wonderful rabbitholes just by reading a digression note on a blog I first read because we had a common interest.

Maybe it's okay to leave these little signposts in case someone wants to take those forks in the path.

This reminded me of busybody, hunter, and dancer archetypes for curiosity. Sometimes people are curious about lots of different things, like a bee visiting different flowers. Sometimes people are focused on a particular topic and want to know as much as they can about it. Sometimes the joy is in the leap from one topic to another, like when interesting blog posts are juxtaposed in my feed reader or my to-think-about list3.

Connecting one sentence to another is the job of the transition words that A+ learns about in class: first, then, finally. My connections tend to be along the lines of "Similarly…." It's easy for me to connect the ideas that feel the same.

"But" is an interesting transition word I want to use more. It surprises. I wonder where I can practise noticing when two ideas contrast, especially when two seemingly-contradictory things can be true,4 or when there's a general idea but a specific exception. It's not just about looking for an opposite, but thinking more critically about things and seeing the gaps. To practise this, though, I have to be comfortable with writing more for myself than for readers who might not be able to follow the uncertain not-quite-trails I meander down. I'm in good company. Jerry's Brain is quite the knowledgebase, but it might be hard for anyone to use if they're not Jerry. It's better to start, even when the beginning is awkward and I know I'll still need to slog through the plateau of mediocrity.

An example

Henrik Karlsson's recent preview of a paywalled post on agentic fragments had this:

Where I saw a sweater, she saw a thread temporarily shaped as one—it could just as well be a scarf, a pair of socks, a hat, or six gloves. She saw more degrees of freedom than I did, and acted on it.

… which branched off myriad thoughts: MacGyver, my dad's Swiss Army Knife, Henrik's essay on agency? The fun of building things in Emacs, the things I love about free/libre/open source software, the master builder scenes in The LEGO Movie? The way my sister unravels her health challenges and turns them into poignant reflections? Sewing and re-making things, Jacob Lund Fisker's book Early Retirement Extreme, and the skills I want to get better at?5 (Even though I'm starting to have more time for myself, I don't find myself using that time for practising sewing or picking up woodworking again. If anything, at the moment, I'm probably focused on getting by with less stuff instead of more.) Maybe this will eventually be multiple posts, like the way I responded to the IndieWeb Carnival theme of "Take Two" with three posts.6 Maybe I need to lightly sketch out my thoughts with drawings and words until I figure out what I want to say, like moving index cards around on the floor.

Into the unknown

Connecting the dots
Figure 1: Connecting the dots

I wonder what better could look like. There's that meme of connecting the dots, when someone is trying to show a complex theory in an incoherent way. When connections are too lightly supported or too overwhelming in number, it only makes sense to me and not to other people. (Maybe not even to my future self.) A good connection, on the other hand, might lead to "Hmm, I hadn't thought of it that way," or maybe the insights you can get by extending a metaphor. Like when you start to fill in a visual framework and it guides you to think about things you might have missed. Mashing up ideas can reveal different aspects of them: similarities, differences, gaps.

There's something here, I think. A digression doesn't have to be to something I know. A connection can be to an amorphous question I haven't fleshed out. If I mash ideas together with enough energy, what particles come out of the collision? If I connect the ideas that feel similar, can I begin to sense the lacunae, the questions I may want to ask? Here are more signposts to things I'm still figuring out: not so much "Here there be dragons," but pointers to territory I've yet to explore.

Footnotes

1

I'm backing off from homework assistance right now so that I can help her develop autonomy and I don't overwhelm A+ with fretting. Perhaps this index card technique will come in handy for her science project, or perhaps it will wait until her brain is ready.

3

I also like capturing snippets into a sort of commonplace book.

4

This idea often comes up on Dr. Becky's parenting podcast/book, Good Inside: two things are true.

5

Early Retirement Extreme: I remember seeing a chart about how increasing skills decreases expenses and increases freedom.

View org source for this post

2025-10-13 Emacs news

Posted: - Modified: | emacs, emacs-news

: Fixed org-social link, thanks gnomon-!

Links from reddit.com/r/emacs, r/orgmode, r/spacemacs, Mastodon #emacs, Bluesky #emacs, Hacker News, lobste.rs, programming.dev, lemmy.world, lemmy.ml, planet.emacslife.com, YouTube, the Emacs NEWS file, Emacs Calendar, and emacs-devel. Thanks to Andrés Ramírez for emacs-devel links. Do you have an Emacs-related link or announcement? Please e-mail me at sacha@sachachua.com. Thank you!

View org source for this post