I remember installing an operating system for a friend back in middle school — I was already obsessed with computers by then. Something went wrong. The system seemed bricked. If you’ve been there, you know the feeling: sweaty palms, mind going blank. I did eventually get it working, but that experience along the way? I really didn’t want to go through it ever again.
But it kept happening. Accidental file deletions. Systems I tinkered into unusability. Code I modified until nothing ran. Anyone who’s been through this knows the feeling. It makes you hesitant, second-guessing yourself. Over the long run it’s even harmful: you stop daring to try things, and slowly lose your passion for computers.
Knuth or someone once said — don’t fear errors in programming. Same principle.
What Is Mental Load#
I chalk all of this up to mental load. In programming, you see it everywhere —
“If it ain’t broke, don’t touch it.”
— which is probably the best phrase to capture this mindset. But mental load isn’t exclusive to programmers. It exists in everyone’s daily life, and many don’t even notice it.
This reminds me of GTD. When I was reading the GTD book, the author gave an example: one of the exercises he had people do was to write down everything that was weighing on their mind. Many felt a sudden sense of relief afterwards, like someone living under constant pressure finally putting down a heavy burden. It made me realize: our mind is meant to be flexible and light, but in reality it gets weighed down by invisible things — and then we freeze.
My Toolkit#
Over the years I’ve found a few tools for clearing mental load. Let me go through them one by one.
Git#
Starting with git — no programmer is unfamiliar with it. You have to convince your mind that nothing is truly lost, and only then will it stay flexible and willing to act. I’ve seen plenty of people who use git but only commit after making a mountain of changes. My own practice is this: commit at every atomic step — a single function written, a checkpoint I’d want to return to. That way, when I need to go deep and experiment, my mind knows there’s always a fallback: just roll back to the previous commit. Nothing lost.
Emacs and NixOS#
I group these two together because they share a common trait: both are tools you shape through configuration. I won’t go into Emacs’s strengths as an editor here. What matters more is that with a configuration in place, you have a rollback point.
It feels like home — you go out, face setbacks, and come back to regroup before heading out again.
NixOS takes this further: the entire system is generated from configuration. Once you manage that config with git, you can mess around fearlessly. Even for those who don’t want to use NixOS, I’d still recommend trying flake for managing project dependencies and build environments — give yourself a way back.
Note-taking#
This is a big topic — maybe worth its own post someday. For now I’ll keep it short: write down whatever comes to mind and get it into an inbox right away. In the world of linked-note tools, this means journaling your thoughts as they come. I used to use Logseq and loved its workflow; now I’ve returned to Emacs: org + denote. The core purpose is the same: clear your brain and let the external system remember for you.
GTD#
I won’t go into a full explanation of GTD here. Just the two things I’ve found most valuable:
- The inbox mechanism — this ties directly into note-taking: empty your mind as things come up
- A system you can trust — GTD offers a complete framework that your mind can learn to rely on. You have to believe in the tool to truly let go and hand over the management of your life to it
Building that trust takes time. You might need to use it for a while before you fully believe in it. But the payoff is more than worth it.
