My Tsundoku
The stack of books you haven’t read yet, tracked as a reserve of surprises.
The blank page
When I open a book, I usually no longer have the faintest idea what it’s about. Not why I bought it, not whether it suits my taste, not who recommended it. Between the moment a title lands on my list and the moment I start it, enough time has passed for everything to fade. I come to it with a blank page, on which an impression will form.
After years of reading, it’s the only thing I’m sure of. A book doesn’t leave me a summary — months later I’d be quite unable to recall a plot or name a character. It leaves me an impression: a world I was pulled into or wasn’t, a savage humour, a melancholy. Ask me my favourite book and I’ll say A Confederacy of Dunces without hesitating; ask me what it’s about and I’ll mumble that it’s the story of a self-important man unfit for the world; ask me why I love it and I’ll say the humour, and a kind of sad cynicism. That’s all that’s left of it, and it’s a lot.
This amnesia isn’t a manufacturing defect. It’s the whole point. My stack of books isn’t a debt to clear: it’s a reserve of potential surprises. Every spine I haven’t opened yet is a promise whose terms I’ve forgotten.
A Japanese word to justify yourself
There’s a word for this pile: tsundoku (積ん読), the books you accumulate and haven’t read yet. It’s always handy to have a Japanese word to justify yourself — it lends depth and exoticism to what would otherwise be a slightly odd habit. But the word does more than decorate. Where French would hear a reproach (“you bought all this and read none of it”), the Japanese simply describes, without judgement, the perfectly ordinary state of a reader who loves books a little faster than they finish them.
That’s what reading apps have never wanted to understand. Goodreads, Babelio, StoryGraph: three columns — to read, reading, read. In that model the pile is a transit zone you’re meant to clear, and the bigger it grows, the more the app becomes a quiet reproach. None of them have a column for “I wanted this” — a title spotted, not yet bought. None have a column for “I’m letting this go.” The linear model doesn’t fit a real reader’s life, which isn’t a queue but a movement.
So I watched how my books actually lived at home. I found four states, not three.
Wishlist → Tsundoku → Library → To part with.
I discover titles through recommendations — contacts, newsletters, the internet. I let them pile up on a list, then buy them in one go, once or twice a year: the wishlist becomes the Tsundoku. I then work through them one at a time, in no order, and the survivors earn a place in the library. When a book doesn’t — or no longer — deserves its place, it goes. No percentages, no daily reading streak, no notification fretting that I “haven’t read in three days.” Just an honest inventory that follows the movement.
The journey of La nuit au Moyen Âge
One book made the full trip, and it made it with an irony I hadn’t ordered.
It starts with an essay by Razmig Keucheyan, Les besoins artificiels (artificial needs), which sets out to denounce consumer society. Its goal missed me — I’m not actively trying to bring down capitalism — but the book makes a passing remark that stayed with me: Western modernity has cut man off from what may be his only universal mystical experience, the contemplation of a starry sky. Whether you see in it the power of a Creator, gods, an astrological future, a field of exploration or simply beauty, raising your eyes to a sky full of stars is a spiritual experience. I came out of that essay with a question: what was night like before artificial light was everywhere? And in particular, what was it like in the Middle Ages?
As it happens, a book exists, soberly titled La nuit au Moyen Âge (“Night in the Middle Ages”), one of the volumes the medievalist Jean Verdon devoted to the period (he also wrote Boire, Rire, and L’amour au Moyen Âge — drinking, laughing, and love in the Middle Ages; the man is nothing if not consistent). The subject doesn’t exactly draw crowds: no recent edition. I first had to overcome a small mental block and resign myself to buying it secondhand — a modest victory over myself, all the more delicious given the anti-capitalist inspiration behind the hunt. Even then, a copy was nowhere to be found at a decent price, including in the specialist bookshops of a neighbourhood that’s full of them. At last came the blessed day when I could order a reasonable secondhand copy online — only to spot it, two days later, on a bouquiniste’s stall.
The book joined my Tsundoku, where it waited. Then I read it. And I began to regret having invested so much for so little: I expected an analysis of the dark night, of how people of the time related to darkness, of its concrete consequences; I got a string of anecdotes pulled from old records, with no commentary or effort beyond thematic proximity. A seasoned medievalist will get something out of it. For me, the book remained — the word fits — obscure. It ended up in the “to part with” column, and I gave it away recently. (I told the whole journey in a post from my newsletter; if I point back to it, it’s not for the pleasure of quoting myself, but because the whole story of my pile is contained in that of this one book.)
So I made one
Babelio, which I’d tried on the internet’s advice, didn’t stick — probably because the app doesn’t match the way books live at my place. A few years ago, that would have been the end of it. But ever since I can build almost any app with AI, I’ve picked up a habit: whenever no service matches my need exactly, I make one.
My Tsundoku follows, to the letter, the flow I’ve just described. Four columns, cards you drag from one to the next, and the verb changing at each step: buy, start, shelve, give away. The first working version took an evening or two.
The rest got added as I warmed to it. Scanning a barcode triggers an ISBN lookup on Open Library — I hadn’t thought of it when I started, and how easily it worked remains one of my pleasant surprises of the build. Search within the library, on the other hand, gave me more trouble: a session of frustration, rewrites, to the point of changing the very way I work with Claude — but that’s another story.
The rest is craft
A few deliberate choices, because they matter. A reading tracker has no business living in someone else’s cloud: the app stores everything on the device, in IndexedDB, and works offline by default. Sync exists — Supabase, magic link — but as an option, never a condition of use. Books were mainly the excuse to learn the architecture I want for everything personal: my data, my device, sync when I ask for it and not before. The code is public, under AGPL — not so people contribute, but so they can see how it’s made.
That leaves the name. It may seem counterintuitive to have chosen an English name for an app born in French, but I have a tropism for these choices: trying not to insult the future. You never know — perhaps one day I’ll have readers around the world, each with their own stack of surprises.
P.S. — The app is made to track your Tsundoku, not to show off mine. If you recognise your own relationship with books in any of this — the pile that grows, the desire you forget, the impression that stays — that’s what it’s for. I set down my way of building a Tsundoku in the newsletter; you’ll meet the same books there, out of order.