Hello there, fellow basement dwellers.
I'm Christian and you are watching "
Zettelkasten for Regular Emacs Hackers,"
my Emacs Conference 2025 talk submission.
In this presentation,
I'll be showing you a couple of things
about Zettelkasten, very basic mechanics and habits
that you can pick up and implement in Emacs,
the most malleable of all environments,
to make a thinking environment happen in your life
that stays with you potentially forever.
The subtitle "For Regular Emacs Hackers" implies at least
the possibility of irregular Emacs hackers
and regular Emacs non-hackers, so the target audience here
is people who are comfortable tweaking their setup
when they run into issues and use Emacs to write,
no matter if it's prose or code.
So that's regular Emacs hacking.
You don't need to be an irregular Emacs hacker,
for example, being a core maintainer or whatever.
You just need to be a normal user
who also modifies the setup.
However, you should probably not be an Emacs non-hacker.
Or maybe you shouldn't stay an Emacs non-hacker,
someone who is not tweaking their setup ever.
So, if you just open your application
to write with a double click,
and it happens to be Emacs, this may not be for you,
but you ultimately be the judge there.
It is my sacred duty to, of course,
advocate all the essential freedoms during this presentation.
These are the following.
You shall not be shackled by a proprietary tool.
(You shall be shackled by Emacs. (Which is free software.))
You shall also not be shackled by an esoteric method
that turns out to be a grift
where you need to visit annual workshops, walk on broken glass
and stuff to be a true ""knower"".
You shall be empowered to do great things
for the rest of your life after this session alone.
This is not a sales pitch.
Finally, you should also not be shackled
by whichever sources of information you rely on in the future.
You shall be free to think and explore new ideas,
ideally forever, in an environment you built to your liking,
without the degrading web searches and the dead internet
getting in your way. No libraries, no dead trees.
It's you and your knowledge base
that can truly produce magnificent things.
So what is this about? In the teaser text for this session,
I brought up that when people talk about Emacs
pulling in everything that people do on their computer,
it's usually things they used other software for in the past.
Like email, chat, playing music, browsing the web,
managing tasks, you know, stuff like that.
We don't have a good blueprint for thinking environments though.
So it's not a trivial task,
just port this or that to Emacs
and then you'll be happy and productive.
That's different from doing your emails
or task management or writing in Emacs,
where we have a lot of experience with existing software
to adapt and deviate from, where we can essentially
port the task to Emacs. We can practice to think,
purposefully and productively, on complex things
over long periods of time
when we create bespoke environments that help with that.
The first assumption is this:
Writing is very important to form complex thought.
Without writing, you won't be able to cross
a certain complexity threshold.
Thinking in your head alone without any externalization
makes you prone to loops, repetitions,
and worst of all: jumps.
Jumps that get you to a point,
but not backed by reason or argument.
So you and your future and others cannot follow.
Written words direct thought.
The linearization or sequence-making of thoughts
frames your next idea. That's the same for reading,
which enables you to pick up existing ideas
and continue to write about them later.
So for "good thinking", writing, reading,
and writing is mandatory.
Emacs is good at showing text to read.
It's good at processing keyboard inputs to write.
So let's go. Let's set up an environment within Emacs
to make this thinking thing happen.
I'll walk you through some mechanics
of the Zettelkasten machine and habits for you,
dear thinker and regular Emacs hacker.
And for your reference, highlight these things
as I present them in the bottom left corner of the screen.
So working with Zettelkasten as a thinking environment
only requires very simple mechanics.
First one is to write. I mentioned this.
It could be one large text file, could be many small ones.
We use the power of Emacs and small files because Emacs is cool,
and individual files put boundaries around ideas
that force you to decide what goes where.
Most importantly though, write like you mean it.
The principle of "garbage in and garbage out" holds.
You don't need to use your novelist voice when taking notes,
but it also shouldn't be shorthand only,
so that your future you has an easy time
reading and digesting what you wrote.
Next mechanic, which is also essential, is to connect.
We think in associations.
Connect notes to capture the associations that come to mind
and that you want the reader, which is the future you,
to make. Traveling a path of connections
indirectly via tags or keywords
and directly with links
can feel like reading an essay you make up as you go.
That's where connections show their power.
The next essential habit is to read and correct
and reconnect as you go.
You spend time and effort at the writing stage,
you are the primary audience,
so do your past self a favor and read what you wrote.
And then as you read it, make it better.
Make it better, continuously make things better
and capture new ideas as they come up as you read.
And things you can only now remember
because you learned about things in the meantime.
You'll also get better at this whole thing with practice.
So improve old notes when you find them lacking in detail,
their tone pretentious, their mere existence
an insult to your intelligence.
Pay [knocks on table] attention [knocks again]
to pain points in using notes.
Yes, I knocked on my desk to emphasize.
And fix things on the fly.
From this principle follows
a lot of common practices and tips.
This principle truly is essential.
Too long and you didn't read it?
Add a summary at the beginning.
You can't understand what you wrote a year ago?
Do your best to rewrite it in your own words.
It only gets worse if you wait longer.
Can't find anything in the mess?
Collect links to what you could find
in a new "meta" note so next time,
you have a navigational help.
This practice will form the basis
for structure notes, maps, and overviews,
which we will come to later.
The next habit, non-essential though,
is to create notes with intent to use them.
It's one thing to write about facts, capture information,
but all this is just collecting stuff.
It's another thing altogether to write about
a train of thought, about an argument you found compelling,
about a model to understand the world, or yourself,
in a better way. So collect to remember,
but work in your Zettelkasten to think.
What does that even mean, though?
Recreate how intriguing books
lay out their premises and arguments, for example.
First this, then that, also that supports the premise,
and so on. That's the structure of an argument.
You can recreate it in list form, as a graph,
you can draw and import the image, whatever.
The structure of that argument is one thing,
and the details, like the evidence for each claim,
can be separate things.
These can become their own sub-networks over time.
To facilitate all that,
you will be needing to create structures.
You've connected notes, so links already leave trails
to traverse between your notes.
Structures can emerge from these with a sheer volume,
but they also can be designed by you to be
navigational hubs of similar shape and form over time.
Patterns like that reduce confusion
and improve feeling at home
and finding your way around, so that's worth investing in.
For example, use outlines for complex topics.
Tables of contents of a book, for example,
that you love and processed in great detail.
Just recreate the table of contents,
the nested structure of it, in your notes,
and then you have something to hang your future thoughts onto.
Another example is a pro/contra table or list
to discuss opposing facets and perspective of a thing.
Another example would be models or metaphors
like the iceberg model
where you point out something has a hidden depth to it
or the metaphor of a tree to model a thing
as a branching and growing idea.
Another habit which is also not essential
is to start in your Zettelkasten.
Starting in your Zettelkasten removes the cost of deciding
what goes in there and what doesn't.
It gets you moving and up to speed
with the method and the tool much easier.
Importing stuff later into the Zettelkasten
can feel like a chore,
but starting the work you need to do anyway in it?
That reduces the mental hurdle.
As a regular Emacs hacker,
you'll eventually develop your own tools
to make initial exploration smoother over time,
like do you start in a particular place
or just create a new note from scratch somewhere.
You won't know this until you experience this stuff
for a while and try different things.
So don't worry and be open for change.
The final habit, also non-essential, is to start with a link
and not with the creation of a new file.
Start with a link, create the file later.
This avoids orphaned notes.
Orphaned notes are those no others are linking to.
To these you can only get with a full-text search
or maybe by accident when you browse your notes,
but there is no orderly way to get to them.
To recap: Write. Don't be sloppy.
Put in effort early to get faster at this.
This is essential, because without putting effort
into writing, you won't have anything to use.
Connect and leave trails to navigate.
That can tell a story when you traverse the trail later.
This is essential because without connection,
you will not get anywhere.
Correct and improve things as you go.
The last essential thing: well,
don't worry about perfection, and then,
be gentle to your past self.
Adapt to what you learn along the way.
It's essential, because without this attitude,
you can easily get stuck in analysis paralysis,
like where do I need to put this,
or what would be the perfect way to phrase this.
Design for use. This helps both finding your voice,
and to have criteria for selecting
what to spend time and effort on in the first place.
It takes into account the opportunity cost
of high quality work from writing and connecting.
Create structures. You won't be able to scale
and stay organized and find your way around
without structures. You can practice this early
and design structures deliberately,
but it's also okay to ignore this for a while and wing it.
So it's not marked essential,
although it may hurt you sooner than later.
The habit to start in the Zettelkasten?
Well, do the work you need to do in a place
that can pay back dividends
on the effort you put in.
That's powerful, but also not essential.
You could just as well continue to write and think
and scribble somewhere else,
and then do the Zettelkasten importing stuff later.
Start with a link.
That's really useful practice,
but more like a lifehack and not an essential habit.
So you can also create new files from scratch
for ideas that come up as they come up
and then try to connect them later.
Well, that's better than not writing at all, right?
So if you look at this, you may ask yourself,
why is this create structure thing a mechanic and not a habit?
What's the difference? It seems kind of random.
Well, do create structures as an imperative
is a good habit, yes.
Structures facilitate growth of the Zettelkasten
and help you discover useful patterns
and the things you care about.
Patterns that work for you personally,
which make navigation easier
because they fit your personal expectations
for what is and what is not.
That's something for you to do. That's a process.
But from the perspective of the Zettelkasten as a system,
that's a mechanic or rather dynamic,
the Zettelkasten grows organically.
Thanks to your constant intervention and usage of course.
That's how time passes in your Zettelkasten.
That's how a process of transformation enters the system.
The transformation affects the network.
Every new or updated note,
every new connection changes the network.
The existing network then imposes demands
for new stuff to fit in, slowly solidifying
how things are organized to be perceived as orderly.
This is calcifying.
That's emergent creation of structure from use.
Structure here is expectation for what could come next.
On top of this interplay of emergent structure
in your notes and processes
that operate these constraints,
you can design and influence and architect
and have explicit structures and patterns,
and therefore you can influence what is expected,
what is unexpected and what fits
and what needs to change to fit in.
So the time you spend designing these things
will influence how the Zettelkasten
will behave in the future.
To prepare for growth
you will probably encounter thresholds along your journey.
Like 1-10 notes, well,
you can easily remember all of them.
10-100, you will have forgotten some details,
but will probably remember writing most of these notes
in some way. 100-1000?
Bad luck, you will have a hard time going through everything
one by one to find what you have. You will have to rely on
filtering results. For example, with a full text search,
you will crave to use tags and keywords more
to group notes into more manageable departments or collections.
By this mark, search results produce way too many results.
Popular tags become overcrowded,
and you have the same problem you had in the last stage,
but for each of these tags.
So manual structures will take you through this.
Anticipate growth pains by starting from structures.
That's the recommendation here. Design your entry points
into your current projects and research topics
and interests as 'departments' of your Zettelkasten.
Keep a list of, for example, 12 darlings,
like Feynman did: a list of 12 things
that you can check mechanically
where you capture something new,
and then you can see whether the newfound knowledge
can also push one of your darling projects forward.
Now, finally, let's get to the demonstration in Emacs.
Here is a very minimal init file.
I will share it with you in the show notes.
And this is the Denote default configuration.
Here I'm using the shortcut to create a new note
immediately for this talk. And there you see.
That's an empty new note. Here,
sped up like two or three times the normal typing speed of me,
is how I would process this very Emacs conference talk.
The essential mechanics and habits, additional habits,
mechanics, and then from there after I capture everything.
Make sure that I have a reference.
This is not a thought-out implementation in Emacs,
so this is just plain text. Christian Tietze,
Zettelkasten for Regular Emacs Hackers at the bottom.
You can use reference management systems that you like,
but I don't want to get into these details.
Here I'm creating a note with the denote shortcut.
Based on the selected text,
I'm starting a link. This link is creating the note for me.
It's also default Denote functionality
and garbage in garbage out.
I needed to edit the title because the selected text
became the note title. Didn't want that.
That was the abbreviation.
Notice that the default configuration does not in fact
include auto-fill-mode, so the lines get infinitely long.
Looks a bit weird. Just garbage in, garbage out.
Processing this from Wikipedia.
So we have a detail note from this overview.
So that's an overview with one link already.
Starting from here, now I want to write more about my talk.
And next we create structure, types of structures, etc.
It creates a weird link, but I can edit this easily
thanks to Emacs being so nice to work with.
A couple of examples. I mentioned some of these
in previous minutes of this conference talk,
like position pair, one note for the pair,
one note per pro and contra, table of contents,
like lists of things you like,
to talk about recreating a book's content,
table of contents so you can process the book in detail,
argument structures, I believe I mentioned these.
Look at this up if you're not into arguments,
but arguments are very well structured, usually.
A table of things like two-dimensional table or grid.
Graphics. You can also include graphics, images,
and then write about these. And then there are metaphors.
And into one metaphor that I'm presenting here,
iceberg, black box, and then atom, molecule, and organism,
I want to get into this. Atom, molecule, organism.
That's a composition and recursion
because I have Big Ideas there. Atom, smallest part;
molecule, comprised of atoms;
and organism is comprised of molecules.
Different level of analysis. Because this is irreducible.
In fact, if you have no clue about reducibility,
irreducibility -- that doesn't mean much to you? --
but look this up. You can go very deep
with this kind of stuff. It's basically that if you
decompose organs into atoms,
you cannot get back to the organs.
You just have a bunch of atoms. There's information loss,
more or less.
Here you see that I create a new thing at the end
so that I can write about Denote. The tool doesn't matter,
but when you use Emacs, use Denote because, well, why?
Let's get into this. Fix the link.
These are good reasons to use Denote.
Denote is very simple. Denote has a couple of sane defaults.
That makes life easier. Backlinks.
We will see a backlink view at the end.
I have to create a couple of things.
I'm copying the source code there, the Elisp source,
so that you can see, hey, this is just an Org Mode file.
You can style it to your liking
and then you can even execute the code if you want.
Very powerful. Create notes as links first to avoid orphans.
Forward link again.
At least I wanted to create a forward link.
I pressed the wrong shortcut.
But anyway, I can fix this easily.
You see, there's no link. Dammit.
Now I need to create the link after the fact.
Here's a list of shortcuts. The denote keymap.
It's a recommended practice by me,
starting your note with a link.
You've heard this all just a couple of minutes ago.
It reduces orphans and supposedly teaches you
about thinking in connections early.
It's a good practice to practice.
So with that note, trying to switch back.
Denote note switching, that wasn't as smooth,
but inserting links is.
And there you go. Here's a backlink view. And that's it.
In a somewhat self-documenting way,
here you see a structure note
which is an overview that represents the gist
of this Emacs conference talk,
with a couple of links to details.
From these details, as you've seen,
you can go into even more detail. That's all there is to it.
Repeat this for infinity,
and you get really really complex networks
and can do a lot of amazing things in parallel
without interference.
I just want to stress that the Zettelkasten
can help you to learn when you publish, when you share,
and when you grow it and yourself in the process.
Again, design the Zettelkasten to be used.
Publish something, write a blog, share stuff with co-workers.
That's powerful and that's so rewarding.
This can in turn influence how you do it
the next time in your Zettelkasten,
because now you can anticipate these kinds of arguments,
maybe I can do this early on,
and then you're prepared even more for the future
to share what you learn.
You are also invited very warmly to our
community of practice in the Zettelkasten forums.
Just share your journey, write about your projects,
ask questions. Everyone's welcome, newbie to pro.
Just get in touch with people, talk about the processes,
improve them, and eventually you'll figure out, well,
reaching enlightenment in that regard may not be that hard after all,
and then you're fine and good to go for the next projects
that you tackle. Most importantly is to make this thing your own.
The Zettelkasten, the method, the environment.
Create a thinking environment for you.
Create your own tools to think with.
This goes back to the meme of Shuhari,
which is basically imitate and then deviate and innovate.
And this invitation here is to imitate what I just laid out.
Imitate for a couple of years. One, two, three years.
The time goes by faster [snaps fingers] than you think.
And then figure out ways to deviate from the doctrine,
to figure out ways to improve
and change the processes to fit you better.
But you need to try to manifest
the best practices in your life first,
for a while, to then figure out, well,
they are not that best after all
and I need to change some of them.
But you wouldn't know if you didn't try. So do try.
Yeah, and with that I want to thank you.
Thank you so much for watching. That's it.
That was the conference talk,
my short introduction to the Zettelkasten mechanics and habits.
I want to thank you so much for watching
and spending time with me on this topic,
on these two topics actually,
that are very near and dear to my heart.
Do share questions, ask questions in the etherpad.
And if you watch this after the conference
and all the live participation is long over,
step into the forums and ask around there.
Thanks also to Sacha and team for organizing EmacsConf 2025,
for having me. Well, I'm looking forward to hearing from
every one of you. So that's it.
Peace out and see you in the next one.