One of the most thought provoking languages I've come across recently is Pollen. It was created by Matthew Butterick to write and publish his books, Practical Typography, Typography for Lawyers, and Beautiful Racket.

I'll let him explain!

At the core of Pollen is an argument:

  1. Digital books should be the best books we’ve ever had. So far, they’re not even close.

  2. Because digital books are software, an author shouldn’t think of a book as merely data. The book is a program.

  3. The way we make digital books better than their predecessors is by exploiting this programmability.

The book is a program! What an evocative idea. I'm predisposed to interpret almost anything as a program, but there's something partcularly enticing about casting the flagship carrier of knowledge as something computational. If our books should be programs, what else should be? Our notes?? But I'm getting ahead. First, why would we even want our books to be programs?

What might we do with a book-program?

In introducing Pollen, Butterick offers suggestions like automating repetetive tasks, adding cross-references, or pulling in data from external sources.

Already that's miles ahead of plain old inert "text" books. A book-program can generate it's own table of contents, or fetch and process up to the minute data to make it's arguments.

For futher ideas take a look at Quantum computing for the very curious, presented in a "new mnemonic medium" by Andy Matuschak and Michael Nielsen.

Embedded through out the text are questions in the form of flash cards. The reader can answer these questions as they come up, and over time the ones they consistently answer well will show up less (this is spaced repetetition). Basically this is a book that helps you remember it.

Reading as programming

However, there is a seperation here. If you take a look at Beautiful Racket, even though it was written in Pollen it isn't a program. After it's been written it's run and the readers get the output. The author can make great use of programming when writing to make it easier for them to organize and grapple with their ideas, but when it get's to a reader the book is

But, if books are programs, what if reading could be programming?. Things like Quantum computing for the very curious show us that complex mechanisms for interacting with with text can be powerful for learning. By why should those ways be limited to only to the "features" the author can anticipate?

Of course this doesn't obviate the need to just read something static. That's still just as valid a method of engaging with text as before. But using computation to interact with ideas opens up a whole new way to understand and build on them.

How might we program to read?

Because the close relationship between programming and mathematics, it might be a good place to start in envisioning the possibilities here. If the author has performed some computation to make a point (perhaps taking a table of data and extracting some statistic from it) the read could modify their calculations, or use the same data to make their own (much like you could do in an observable notebook).

To take another example, closer to the kind of programming the author would've done, a reader could reorganize the book to fit their needs, moving chapters they already know to the appendices, and the one most relevant to their learning journeys to the fore. Or perhaps, if reading Quantum Computing... they could pull the flash cards for the points that challenge them the most and integrate them into a larger bank for their whole course of study.

Then, as reading extends into writing, they could create citations that directly reference the relevant lines.

I know, many of these things are possible on the internet today, and many more in existing visions, like Ted Nelson's Project Xanadu or the Vannevar Bush's Memex.

But Pollen is the first time I was exposed to the idea of medium as a program (at least in terms as explicit as that).

In defense of books as artifacts

It's important to note that books as we know them today often provide refuge from computation. Curling up with a book is a way to get far from the horrors of "interactive" websites and the apps that fill the rest of our lives. We certainly don't want "software eating books" and producing attention grabbing.

Books are currently artifacts. They don't "move fast and break". They're slow moving, but dependable. You can return to them, and reference them over time, mark them up, lend them. They're reliable in ways almost nothing on the internet is.

These properties shouldn't be lost. To realize books as programs we need to get better at programming such that we can have all the possibilities of programs but with the reliablity neccesary for a medium of ideas.

We need:

  • editors that can easily toggle between interacting with output and source code
  • immutable references to documents and their subsections
  • better programming languages
    • Errors that don't feel like errors
    • Intuitive type systems!

And probably much more.

If you have any thoughts on this, or pointers to people working on related things (I know there are lots!) I'd love to hear about them. You can reach me on twitter or email me at jared(at)awarm.space! (even if you just want to be excited about this stuff together, say hi!)

built with nextjs, mdx, and typescript view source