Category Archives: Books

Playing Non-programming Books

Yesterday, I wrote about how to play a programming book by adding bosses to chapters so that you can’t move on until you beat the chapter.

I think it’s clear how you can do this with programming books. I published “bosses” for (as of now) the first ten chapters of The Swift Programming Language. I have more coming.

But, this basic concept can be applied to other books as well, and I am using two tools, Anki and Obsidian to do this for myself. Anki is where I put the facts of the books, Obsidian is where I manage my own thinking.

Anki

Anki is a flash card system that uses spaced-repetition algorithms to aid memorization. You make flash cards while you read to help remember the facts you want to keep top of mind, and then you just “study” them once a day. All the cards you ever make are in one pile, mixed together.

You tell Anki how confidently you remembered the answer, and it will show it to you less often the more confident you are. Over time, when you have made hundreds or thousands of cards, you will still only study 10-15 per day, but Anki will have chosen the ones you were most likely to forget.

Obsidian

Obsidian is just a personal system to manage your own writing. There are many apps in this category, but I use Obsidian because it creates simple markdown files in a folder on my computer, and has all of the features I need (tags, links, search). I like that it is an app on my laptop, not a website.

I am following the note taking system outlined in How to Take Smart Notes, by Sönke Ahrens. I recommend this book for the full details. The high-level summary is that you write notes while you read to develop your own thinking.

Your notes are not quotes from the book. A simple note might be your original restatement of the ideas of the book. My favorite kind of note is applying the ideas of the book to a problem I am working on. If you want to remember a quote from the book, put it in Anki or in a research note in Obsidian (a folder you create just to hold the source material notes). Most of your note taking should be original writing.

Once you have written a note, you link it to related notes, and over time you develop an interconnected web of short bits of writing. Each note is short and represents a single idea—it should be developed as finished, polished paragraphs.

When you want to publish something—a blog post, an article, a podcast script—you can draw on your notes with pre-made bits of writing that you can simply assemble, and then write the connective bits to develop it as an argument.

Playing the book

I have only been following this system for a few weeks, and I have written over 14k words in 81 individual notes. This post draws from some of my notes.

To get back to how to play books, I make writing notes and cards a gate to moving on in a book. If I literally have no original thoughts or nothing in the book is worth remembering, I give serious thought to whether I should continue reading it.

Playing a Book

I’ve been thinking a lot about what books are for. Specifically, non-fiction books, and more specifically programming books. I’ve finally figured out how to describe what I’ve been thinking: You don’t read a programming book, you play one.

I mean play, like playing a game. In a game, you progress through levels by learning and applying skills. At the end of the level, you play against a boss that you have to beat to progress.

In books, you progress through chapters. But, there is nothing that stops you from just reading and reading and reading and well, not learning or applying anything. At the end of a chapter, you can just turn the page and keep going.

Over on App-o-Mat, an iOS content site I maintain, I’ve been working off and on a companion to the The Swift Programming Language book by Apple. I started the companion on Dev.to with a short section on how to read the book, where I said you should it read it side-by-side with an Xcode Playground page open. That you should not copy any code into it, but type code as you learn it. Get used to typing code.

Then, for each chapter, I offer some simple exercises that let you know that you understood the chapter.

I now realize that I was turning chapters into levels with bosses, which make The Swift Programming Language a book you can play.