[Journal] Knowledge Work - Mauro
2025-10-25 Learning C++
Following Sascha’s example I decided to start journaling my Zettelkasten practice.
I’m a computer engineering student, and in the meantime, I do some freelance projects for some local enterprises. My areas of interest at the moment are mainly math and programming.
Today I’ve started brushing up my C++ skills by going through the learncpp.com lessons. These past years, I've worked on lots of web-related stuff, and I want to start doing more low-level programming.
I’m becoming more selective about what I put in my Zettelkasten. Before I would write about anything, but now only about things that I think are useful to my areas of interest.
Howdy, Stranger!

Comments
Do you schedule specific coding training sessions?
My bias (as a trainer) is obvious and intrusive. But I am wondering how to incorporate deliberate practice into a coder's schedule.
The one paper that haunts me is this: Argenta M. Price, Candice J. Kim, Eric W. Burkholder, Amy V. Fritz, and Carl E. Wieman (2021): A Detailed Characterization of the Expert Problem-Solving Process in Science and Engineering: Guidance for Teaching and Assessment, CBE---Life Sciences Education 3, 2021, Vol. 20, S. ar43. full text
In boxing, there is a hierarchy of exercises:
My own strength was my willingness to drill isolated techniques right from the beginning. My trainer said to me (perhaps, just randomly as he sometimes went to impulsive extremes) that I should throw 1000 jabs and 1000 crosses per day. This is what I did for weeks or months (felt like an eternity). The result was that my technique got better much more quickly.
So, I am wondering: What can you drill, isolate and repeat, in software engineering?
I am a Zettler
On a syntax level, you could use Anki or read other people’s code. I suspect drilling on syntax meets diminishing returns early on. To make an analogy with natural languages, I know of the existence of the word “Puissant”, but it’s more likely that I will say “A person with great power” instead. Between a word that fits better and one that is more understandable, I think I will choose the latter.
I currently work alone, or at most with people at my same level, so I’m not exposed to the best programming practices. I plan on starting to read good open source projects on GitHub to be exposed to better code.
On a program architecture level, there are tons of websites that allow you to practice individual skills. For example, Codeforces has a huge selection of algorithms and data structures problems. My doubt with this approach stems from the fact that competitive programmers have their code become more intelligible the better they become. I don’t doubt that good competitive programmers are also great programmers in general, but I wonder if spending time building projects would be more efficient.
At what point does doing a thousand jabs and a thousand crosses per day become less important than spending that time sparring and getting a real sense of how a fight is?
Said so, I thank you for your comment. I’ve never thought of structuring my programming practice as if I were going to the gym, and I think it would be useful to do that.
2025-10-26 Investing time in what matters
As mentioned in my previous entry, I am dedicating time to brush up on my C++ skills. Given that I’m not unfamiliar with the main concepts, I am trying to be efficient and process only what will help my skill improve.
Said so… I enjoy writing zettels, and sometimes I make notes about ideas that are maybe not top tier, but still somewhat useful.
An example of a note:
# How to use comments
Comments should be used for three things:
Using Sascha’s items of knowledge, I would consider this note a concept, but it could be an argument if you want to be pedantic. It is in a state of superposition
This other note was formalised into an argument. I think it is overkill, given that the concept is quite trivial, but I am practicing writing arguments.
# If a comment needs to explain how the code works, the code should be rewritten
I am still getting the hang of using the items of knowledge, but I believe it is a great addition to the Zettelkasten method.
P.S. I think the levels in the guide to atomic notes are useful, but they should have descriptive names rather than 1,2,3,4.
To the orbit of 'comments in code', you can add assertions to codify expectations, which get rid of some needs to explain what's supposed to be done, and why (invariants upheld, rules protected, OS tweaks worked around); the how should be the code itself, arguably.
Assertions and static analyzers are useful tools to have executable or "active comments"(1:06:25h, 20220922carmack)
The name is telling the whole story: assertions codify assumptions, world-views, expectations about data.
They are a tool to document invariants.(32:40min, 20230419theobugs)
20220922carmack: "John Carmack: Doom, Quake, VR, AGI, Programming, Video Games, and Rockets | Lex Fridman Podcast #309", 2022-08-04, https://www.youtube.com/watch?v=I845O57ZSy420230419theobugs: Sebastian Theophil: Nobody Can Program Correctly - Lessons From 20 Years of Debugging C++ Code, CppCon (2023-02-16) https://www.youtube.com/watch?v=2uk2Z6lSamsFor comments in particular, I like to point out how writing them helps think about the accuracy of what the code expresses. I've found myself in the need to explain crappy implementations because I could tell that I wouldn't be able to grok the code in a year's time, and then found a better factoring:
https://christiantietze.de/posts/2024/03/you-absolutely-do-not-need-comments/
For C++, watch Jason Turner (makes the language accessible -- and has interesting demos; the link will make you see zero overhead abstractions), Herb Sutter, and Sean Parent, esp. the "Better Code" series that's still unfolding. Many CppCon videos from all of these on YouTube
And Alex Stepanov. See https://elementsofprogramming.com/ -- which will offer a unique, superficially maths-like introduction into algorithmic thinking. With very short definitions of things that can go into a Zettelkasten.
Author at Zettelkasten.de • https://christiantietze.de/
Thank you! Assertions are something I've never written about.
All the links you've sent me seem very promising, the elementsofprogramming is probably going to be the next thing I'll process in my Zettelkasten.
2025-10-25 Formal logic and Japan
This morning at the gym, I saw a link in Hacker News to a formal reasoning introduction guide, so, like a dog seeing a squirrel, I got sidetracked and started processing it.
I know most of the basic concepts in propositional and predicate logic, but I took advantage to formalise pre-existing definitions in my Zettelkasten, for example:
This note is diatomic, but the second concept did not seem worthy enough to deserve its own note.
On a side note, at the end of November, I will be leaving for a month and a half for a solo trip to Japan. I know basically nothing about Japanese culture, so I am reflecting if the Zettelkasten can help me, both before leaving and when I stay there.
This was one of the most important and useful changes I made to my own Zettelkasten. Congratulations on taking this step. It saves so much time and effort.
I agree. When you start focussing on "feeding" the Zettelkasten only with what is truly important you gain so much more from it.
This is the linchpin question.
It is quite late. Much later than many people think. I think you'll benefit of truly honing (mindlessly drilling mindfully) years into any mastery journey.
I have a friend who plays in an orchestra (he is one of the best clarinet players in Germany). He said to me, that he never abandoned a set of very basic exercises which he considers a key to his general performance.
I think that a basic set of drills should never be removed of someone's overall practice.
I wrote an article in this sentiment: https://zettelkasten.de/posts/athletic-training-zettelkasten-value/
The first step in coding should be separating actual coding and coding specific exercises. Problems that are specifically designed to induce aha-effects. Deepening theoretical knowledge. Critical thinking skills. System thinking skills. Creative thinking. Design thinking.
I can tell you from first-hand experience that just the practice of regularly deep-processing sources, especially books, already has a profound effect on the mind.
I am a Zettler
This is interesting. What do you mean by “It is quite late”?
Ah, my English. I mean that in boxing and anecdotally in music you'll benefit from simple drills for a very long time. Well, into the intermediate and advanced stages.
I am a Zettler
Do you have any suggestions about books or papers about this?
Do you mean about how to develop a practice in general or what do you mean specifically?
I am a Zettler
Both about how to develop a practice and about the efficacy of drilling basic exercises.
The best general book on developing a practice I know is "Peak" by Anders Ericson.
I can't give you a general justification of basic drilling. But in Peak and the references you'll find the rational of finding current bottle necks in your ability, developing drills that fulfil the criteria for deliberate practice and then attack your weaknesses with full force.
I am a Zettler