Emacs Carnival Aug 2026: Information management and knowledge graphs
Cet article est disponible en français : Carnaval d'Emacs d'août 2026 : la gestion d'information et les graphes de connaissances
This article was inspired by the Emacs Carnival on the search for knowledge. Thanks to Charlie Holland for hosting! It's a good excuse to reflect on how I manage my notes, which is something I'm really interested in.
Capture: I want to capture and publish what I'm learning as quickly as possible because my memory is not very reliable. I prefer plain text because that's easier to search, and it's easier to archive it for the long term. I'm away from my computer most of the time, so I use Orgzly Revived on my phone to capture short notes in my inbox.org or my posts.org drafts file. Once I'm back at my computer, I can develop these notes using Org Mode in Emacs. I use org-refile to move notes to other files like organizer.org. I use a few large Org files instead of a lot of small ones. For repetitive tasks like my workflows, I try to add as many details as possible to make the tasks easier to do even if I just do them once a year.
Search: I often use Google to search my public notes. Sharing my notes allows me to find things again easily. If I publish my notes, other people can benefit from them and even send me additional notes. Of course, I also have personal notes. I use org-refile to search titles or consult-ripgrep to navigate my private notes. I also use consult-line and isearch if I want to search for specific words in the body. These rely on exact matches, so if I try similar words, I might not be able to find what I'm looking for. That's why I'm interested in the p-search package or sentence embeddings for approximate search, but I haven't yet gotten around to setting up a good workflow for that. I'd love to have a system that automatically suggests links to my other posts, my configuration, and my private notes, which could help refresh my memory about things I've forgotten. But I haven't really gotten around to doing a proper evaluation of this yet; maybe when I have more free time.
Navigation: I use C-u org-refile to navigate through my headings wherever they are, as long as the files are in my org-refile-targets. I also reread my inbox and my drafts from time to time. I have a function sacha-blog-edit-org that opens the Org source code from a link, whether it's in my posts.org or only in the published copy of my Org source.
Linking: Many of my ideas are inspired by posts from other people, so when I find an interesting post on my phone, I send it to Orgzly Revived so I can add it to my inbox. This lets me include the link(s) in the post once I finally manage to write and publish it.
Sometimes it takes a lot of clicks to dig up someone's e-mail address or Mastodon handle, so I usually save those into my people.org file. I have a small function sacha-org-contacts-suggest-mentions that helps me get in touch with the author of the previous article and perhaps other people who might be interested using my people.org file, where I've specified regular expressions to match against the text of the message.
To help me link the post to other resources, I have functions for linking to:
- posts on my blog, using the "blog" link type.
- other sites based on the link text.
(Hmm, I could automate links to other parts of my configuration that define functions I've used…)
My thoughts are often disconnected because my brain likes to jump from one thing to another. (Which is kind of obvious just from this post alone…) While writing an article, I add many ideas to my inbox. Come to think of it, I could add a link type to Org Mode that would resolve to a real link once the linked post is published, kind of like WikiWords, which could help me connect them. There are probably packages out there that already offer this this functionality.
Publishing: I use the 11ty static site generator with ox-11ty.el. When I publish a note, the Org source code is also copied to the same directory.
Visualization and Exploration
I've always wanted knowledge graphs like the one in Jerry's Brain. I think displaying the neighborhood around the current article is a bit more useful than a global overview (like those in ), which is impressive but a bit too difficult for me to use.
I also love large public knowledge gardens like Andy Matuschak's, even if there isn't a real map or graph. There are so many links, making it fun to explore. I like these inline links more than plain lists or connections without explanation. I'm also curious about the Anagora project, which tries to create a large network of personal knowledge graphs and make it easy to jump from one to another by subject or tag.
On the other hand, I don't want to invest a lot of effort into doing the necessary linking myself. Most of my posts (except the Emacs News newsletter and reviews) contain few links. If I stay at the category level, there'd be too many connections just to the topic of Emacs. Maybe I could convert the subcategories in my topic index into data for visualization… (The index really needs an update, though!)
I use other types of graphs frequently. I often draw while I'm writing. I make mind maps and sketchnotes. Actually, I really just end up throwing many words on a page, and then I move, connect, and organize them gradually. This is one of the ways I figure out what I want to say and how to organize it. From time to time, I include drawings in articles or publish them in my public sketchbook. It's nice when other people find these interesting.
I accumulate a lot of drafts in my posts.org file, which I sync with my phone via Syncthing to edit in Orgzly Revived. Sometimes I use a treemap visualization to see the sizes of forgotten drafts (which might be almost finished; they could just need tiny revisions or additions). (Hmm, I wonder how I can add the subtree size to Org headings…)
In addition, I like analyzing seasonal or annual trends in my posting frequency, which reassures me that busy summer days are normal and I'll have more free time soon:
Monthly trends
import json
import seaborn as sns
import re
from collections import defaultdict
import requests
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
with open('/home/sacha/proj/static-blog/_site/blog/all/index.json') as jsonfile:
posts = json.load(jsonfile)
jsonfile.close()
monthly_counts = defaultdict(lambda: defaultdict(int))
for post in posts:
title = post.get("title", "")
date_str = post.get("date", "")
if re.search(r'emacs news', title, re.IGNORECASE):
continue
if date_str and len(date_str) >= 7:
year = date_str[:4]
month = int(date_str[5:7])
monthly_counts[year][month] += 1
months_labels = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'June', 'July', 'Aug', 'Sept', 'Oct', 'Nov', 'Dec']
years = ['2022', '2023', '2024', '2025', '2026']
df = pd.DataFrame(index=range(1, 13), data={'Month': months_labels})
for year in years:
df[year] = [monthly_counts[year][m] for m in range(1, 13)]
df.iloc[8:, -1] = None
df_long = df.melt(id_vars=['Month'], value_vars=years, var_name='Year', value_name='Count')
num_old_years = len(years) - 1
gray_shades = np.linspace(0.8, 0.3, num_old_years) # 0.8 is lighter, 0.3 is darker
custom_colors = {year: str(shade) for year, shade in zip(years[:-1], gray_shades)}
custom_colors['2026'] = "#000000" # Force the current year to pure black
widths = {year: 1 for year in years}
widths['2026'] = 3
plt.figure(figsize=(10, 5))
ax = sns.lineplot(data=df_long, hue='Year', x='Month', y='Count', size='Year', palette=custom_colors, sizes=widths, sort=False)
ax.set_xticks(range(12))
ax.set_xticklabels(months_labels)
plt.title("Monthly post count (except for Emacs News)", fontsize=12, fontweight='bold')
plt.xlabel("Month", fontsize=10)
plt.ylabel("Count", fontsize=10)
plt.grid(True, linestyle='--', alpha=0.5)
plt.legend(loc='upper right')
plt.tight_layout()
plt.savefig('frequence-en.svg')
return df
| Month | 2022 | 2023 | 2024 | 2025 | 2026 | |
|---|---|---|---|---|---|---|
| 1 | Jan | 6 | 19 | 20 | 23 | 16.0 |
| 2 | Feb | 0 | 3 | 0 | 10 | 8.0 |
| 3 | Mar | 0 | 5 | 1 | 24 | 15.0 |
| 4 | Apr | 0 | 2 | 1 | 14 | 22.0 |
| 5 | May | 0 | 1 | 1 | 9 | 15.0 |
| 6 | June | 0 | 3 | 1 | 9 | 13.0 |
| 7 | July | 1 | 0 | 0 | 6 | 9.0 |
| 8 | Aug | 7 | 2 | 1 | 5 | 11.0 |
| 9 | Sept | 1 | 8 | 12 | 17 | nan |
| 10 | Oct | 2 | 12 | 29 | 11 | nan |
| 11 | Nov | 5 | 1 | 19 | 8 | nan |
| 12 | Dec | 4 | 15 | 6 | 6 | nan |
and the gradual growth of my French vocabulary, according to my journal:
Even though these aren't classic knowledge graphs, they help me see trends that aren't obvious from day to day.
Collective Knowledge
I'm more interested in the network of collective knowledge than in my personal notes. For more than ten years, I've been gathering and categorizing lots links for Emacs News, which makes them easy to skim. I love coming across so many ideas and people along the way. It's easy to do and doesn't take much time, so I've been able to continue it despite the interruptions of life as a mom. In terms of knowledge graphs, the newsletter helps connect nodes and people. I love occasionally hearing how one post has inspired another, and another, and then maybe a collaboration… That's the wonderful thing about creating links between people who appreciate similar things. If someday I have to stop doing this weekly newsletter, I really hope that someone else continues it.
Thanks to my link collection for Emacs News, I often come across opportunities to recommend an post or a person in response to a question or message. If I can find the post in my Emacs News archive with consult-line or isearch, I can paste the exact link. Occasionally, I want to introduce someone to someone else, which is a bit difficult on Mastodon because handles are often very different from real names. I note Mastodon handles in my people.org file, and I have a small function sacha-mastodon-insert-handle-from-contacts to complete them. I have another function sacha-mastodon-insert-interested-handles that adds people who might be interested based on regular expression matches in the message, just like when I write my posts.
In addition to the connections between articles and people, I'm also interested in the connections between subjects. Before learning one thing, what would be helpful to learn first? Once you get the hang of something, what's nearby and easy to learn next? This might be useful for giving advice or suggestions (like coaching!), or for self-directed learning. Everyone's got different needs and paths, so it's impossible to map one path that fits everyone. I started making a resource map for beginners, but I think it's still a bit intimidating, even for me. EmacsWiki is probably the natural home for this sort of thing, since that allows other people to find and add to the links. I just want a good way to back up the data, and I think I still need to resolve a problem I had with editing some pages. I'm also curious about trying to classify workflows by aspects, which could help someone find resources that are similar to their ideas.
I also want to identify gaps to focus on when I have free time. There are tons of resources for beginners since people tend to have similar information needs at that point, but because Emacs is super-customizable, there is a combinatorial explosion of possibilities at the intermediate level. I look forward to exploring my ideas and other people's questions too. It's difficult to find and navigate stuff, so if I start with personal improvements or concrete questions from specific people, that's probably better than writing in isolation. I'm sure that in the process of answering individual questions, common ideas and needs will emerge.
I also enjoy exploring other subjects. I'm learning French, and I'm having so much fun tinkering with my Emacs environment and learning process. One tip for beginners is to develop "language islands": words around a subject you're interested in. (Like the way I'm writing the current article in French to force myself to enrich my vocabulary.) I wonder how I can visualize these things… For example, if I get word lists sorted by frequency (maybe by analyzing the lexique database), I could create a matrix of squares for a heatmap or something… Hmm.
The kiddo's growing up, so my mom obligations are gradually decreasing too. I'm looking forward to spending more time exploring, writing down, and sharing interesting things!