The Pensieve
During a 1:1 with a colleague, I was asked this question: how is it that you manage to write such rich, substantive pieces?
The question caught me off guard. It’s true that over the past two years my publishing frequency has fallen off a cliff, but frankly speaking — flatly speaking — if I wanted to write and had the time to write, a piece a day would be no trouble at all. Recently I started teaching my little one, Xiaobao, some lessons, and on the side I opened a rather private WeChat account to record the running log of those classes (mainly so that when the time comes to teach Xiaobei, I can simply pick up what’s already there). In the space of a month I’ve already written thirty-odd pieces, of wildly uneven quality.
So the crux of it is: having something to say.
Which raises the question. We all get twenty-four hours a day. Subtract work and sleep, eating and drinking and the bathroom, and not much remains. If we’re all roughly equally diligent, what entitles me to output more thinking?
I thought and thought, and found it comes down to two things.
The first is purpose. This is what struck me most over the past month. I used to watch Teacher Li Yongle, Mami Shuo, 3Blue1Brown — but always in the spirit of novelty-hunting: sprawled at a 45-degree angle on the couch, lazily finishing the video at 1.5x speed, having little epiphanies, going “holy crap, that’s brilliant,” letting the information make one lap around my head, losing a good chunk of it, with the remainder taking up only shallow quarters. Understood? Sure, understood — but if you asked me to explain the same material to someone else the way they do, it would be nearly impossible.
Now, because I have to teach Xiaobao, when I watch these videos I still use 1.5x speed, but I sit up straight, fully focused, hands on the keyboard ready at any moment to hit pause, cmd+shift+4 for a screenshot, then jot notes in the vscode window I’ve already opened. A different purpose yields a different quality of absorption: the brain running at full revs, turning things over again and again, stopping to think wherever understanding falls short — and while thinking, also wondering how I’d rephrase this in plainer terms for Xiaobao. That’s how information gets dismantled into knowledge and branded into the mind. Later I reflected: the videos that truly “went in” — Rich Hickey’s Simple Made Easy, Scott Wlaschin’s Railway Oriented Programming, Bret Victor’s Inventing on Principle, Spotify Engineering Culture — were all discovered while I was preparing to write something. I watched with purpose, clearly knowing what I hoped to get out of them. So I watched attentively and thought attentively, and in the end I could naturally fuse other people’s thinking with my own; when it came time to write, everything flowed from the pen of its own accord.
The second is note-taking. A good memory is no match for a worn-down pen tip, as the saying goes: when the information flowing through the brain is intercepted by your fingers, the valuable parts don’t just wash away.
So we need a place where knowledge, thoughts, and inspiration can be recorded at any time. My own note-taking system has gone through several generations — from some Windows-era note app whose name I’ve long forgotten, to a brief dalliance with Trelby, to Scrivener, to Evernote, none of them satisfactory — until I arrived at my own proprietary weapon: a toolkit I call the pensieve. The pensieve is Dumbledore’s basin of memory; the name fits perfectly.
My pensieve toolkit has evolved over time and now consists of these components:
- vscode + markdown all in one + markdown math + marp for vscode + plantuml. The editing and preview tools.
- pandoc + Makefile + chrome-headless-render-pdf. The build system, for the presentation layer — anything I record can be rendered into html, epub, and pdf.
- git + github. Version control and storage. I own all the content myself, and can access it from any of my devices, anytime, anywhere.
Together this toolkit is powerful, and it requires almost no code — well, just a small amount of Makefile code to serve as glue, holding everything together. It scales well: from a short essay to an entire book, it can handle it. If I must name a downside, it’s that it isn’t friendly enough to non-programmers; not everyone knows git and Makefile, after all.
And so, one by one, the pensieves on my hard drive began to multiply of their own accord. My early WeChat articles (with 2016 as the watershed) and my books (The Tuke Circle Startup Chronicles, Dr. Qi’s Management Lessons, and others) live in a repo called craftsman; later WeChat articles live in the book_wechat repo. My Uncle Tian’s Curious Tales lives in book_tianshu, while the math book I’m preparing for my children sits in book_math. So when I watch a newly posted Strange Loop talk, say “Performance Matters” by Emery Berger, I can open book_wechat, start a new md file, and begin recording the interesting bits — while thinking about what angle I’d take and what material I’d choose if I were to write an article about performance. And when I’m learning middle-school math along with Eddie Woo, I open book_math and knead the new knowledge into the appropriate directory (algebra, say), and while kneading I’m thinking about how to teach the same content to Xiaobao — how to simplify it, how to use diagrams to teach it better. That’s how it goes: I write as I think, writing whatever comes to mind, paying little attention to format (occasionally throwing in a ## to separate content with too big a jump). When I hit something thought-provoking that’s hard to put into words, I simply screenshot it, stash the captured screen under the repo’s assets, and reference it in the md. Thus and so.
Finally, when I need to review the material or publish it outward, I can render the whole thing into a pdf in one go, load it onto my phone or iPad, and flip through it whenever I like. For some content a pdf isn’t the most convenient form (the Zizhi Tongjian slides I made, for instance), and there’s no real privacy concern, so I set up Travis to build html on every commit and auto-deploy it to Netlify — and then it’s reachable anywhere there’s a network.
Once information has been dumped down into knowledge, I express it in my own way, fused with my experience and my thinking — and that becomes my knowledge.
So it doesn’t look all that hard, does it?