Category Archives: Books

Book Recommendation: Make it Stick

I read Make it Stick last year, and it’s the book that made the biggest impact on me in 2022. It’s about the “science of successful learning”, and is co-written by researchers in the field who based it on their work studying how we learn.

The core idea is that you must use “retrieval” in various forms to learn a subject. This means that you practice remembering and applying the material instead of re-reading it. Some of the suggestions are:

  1. Practice remembering with flash cards that are spaced, interleaved, and varied
  2. Generate your own answers to problems before learning the technique
  3. Elaborate on material by writing original text that draws from the material
  4. Reflect on your learning sessions by writing a meta description of the material and your relationship to it (e.g. where you struggle, how it’s going)
  5. Calibrate your knowledge with objective third-party sources

I had been primed to accept its suggestions because I was introduced to some of them already. I discovered the book in a video YouTube recommended to me because I watch videos about these topics often.

I learned about Spaced Repetition (using flash cards) a few years ago and have been using it nearly daily since then. I spoke about it at length in Episode 14 of my podcast. While reading this book, I created cards in my Anki deck to help me remember its core ideas. When those cards come up, they test my memory, but also remind me to use the practices.

The “Elaboration” suggestion is very much like Smart Notes, which I learned from How to take Smart Notes. I am writing this review to use “Elaboration” to help me remember its lessons.

And I’m a big believer in Calibration, so I wrote problem sets for beginning programmers trying to learn Swift.

But even with that background, I enjoyed the more expert coverage of the topics with more details on why these techniques work. Since I have been doing many of them for years, I was able to come to it with less skepticism.

An interesting side-note is that they use the techniques they suggest in the structure of the book, but they are limited by what you can do in a static text. If you are interested in this idea taken to a logical extreme, I would recommend reading Quantum Country, which embeds interactive flash cards in the text.

If you struggle in retaining material or need to learn a complex subject, I would certainly give this book a read and try to incorporate its suggestions into your process.

Review: How to Make Feeling Good Your Priority

My running coach, Holly, published a book last month called How to Make Feeling Good a Priority. The book is part advice and part memoir (as she learns and applies her advice to herself and clients). I am lucky to be a client and have heard much of this from her, but having it all in one place helped me see how it wasn’t just for running.

Holly is a serial marathoner (27 so far) and I have done two under her coaching (and training for a third). We often talk about how to make adjustments during training and during a race to prioritize feeling good. This book is about doing that outside of running—a connection I didn’t make.

There are many lessons, but the one that stuck with me is turning “I can’t” into “How can I?”. I have written about habit triggers before—how you can control your own behavior, in part, by controlling the triggers that prompt that behavior. Anchoring a problem-solving mindset to “I can’t” comes up surprisingly often.

So much of the book is about shrinking the impact of bad feelings and increasing the effect of good ones. There are a lot of actionable tips and strategies.

I can’t say that I related to everything, but a lot of it resonated with me. Her chapter on the Law of Attraction (which always seemed like mysticism to me) resonated with my beliefs about tapping into randomness. I have come to see “attraction” as “focussing”/”awareness”—I don’t think you attracted the thing you wanted, but I do think you were more likely to notice it. And mentioning it to others helps them notice it for you too.

Knowing Holly, I see her personality on the page. She’s a positive person, always trying to find ways to solve the issues I bring up with her. Under her training, I have very rarely missed a workout and I haven’t had an injury—the rest takes care of itself. After reading her book, I do think that her concept of the “runner’s mindset” can be applied to the rest of my life too.

Review of The Practice by Seth Godin

I started this blog in December 2003. Up to 2020, I made an average of 9 posts per year, with a high of 38 posts in 2008 and had several years with none.

During this time, I wrote a book, wrote on App-o-Mat and for Smashing, and so generally, I’m at peace with my writing output. Honestly, though, I had intended to write a lot more. I just never did it.

I finished reading The Practice: Shipping Creative Work by Seth Godin in early January. It’s essentially 219 short, blog-like chapters making the argument that you can choose to ship every day.

Here’s my review.

It is 30 days since I finished reading The Practice, and I have shipped 30 blog posts and an update to one of my apps. Will I keep this up? I have evidence and confidence that I will, mostly because I buy his argument that I can just do it, and doing it will improve my writing. It’s a practice only if I practice it. It’s an infinite game.

The Practice helped me understand “the why” to shipping daily, and that’s enough for me. Doing it with this mindset has made me realize that it’s actually not that hard.

That’s it. That’s the review. I read the book. It changed by behavior.

I have a lot more to say about my practice, but to add more info to prior posts, my daily Big 3 almost always includes writing a post, and a time-block is reserved for it. I chose my yearly theme, Hone, because it’s about improvement via repetition. I put “Practice” on my Habit Totem so that I am reminded to do it constantly.

Soundtracks for Books

When you read, your visual senses are completely flooded. You should also be engaging in Slow Thinking (System II type thinking) as described in Thinking, Fast and Slow. This is self-aware, effortful thinking.

You are generally not capable of directing slow thinking at two tasks, which is why you shouldn’t text and drive. And it’s why you can’t read and listen to a podcast.

But what if you could listen to something? What ever the book is for, could your audio senses augment what you are reading?

I am not just talking about an embedded audio clip. To listen to that, you’d stop reading. I am talking about a book’s soundtrack.

In a movie, the soundtrack is integrated to provide a deeper experience. Sometimes it’s meant to be as prominent as the foreground, and other times, it might not be consciously noticed.

Movie visuals and audio are synchronized. So, to do this, the reading device would need to know exactly what you were reading at any point. In this sense, it’s more like a video game soundtrack, which is also synchronized, but has to follow the player’s actions.

Let’s assume that’s possible. Given a book device that knows exactly what you are reading at any point and can produce sound, here are things it could do:

  1. If you stop and stare at a word or phrase that is jargon the book defined, it quickly reminds you of the definition.
  2. Like Peter and the Wolf, we could assign small musical themes to the major ideas of the book. When you are reading something that is related to one of those ideas, the theme would play.
  3. It could use generated sound or music that goes from calm to more of crescendo as you progress through a chapter, giving you a sense of how close you are to the next break. For example, rainfall that becomes more of a storm—an audio progress bar.
  4. I think fiction would use this more for entertainment/art, but one exception is trying to read Shakespeare. I remember the left-hand side page having contextual information for the script on the right-hand side—maybe the context could be delivered aurally while you read.

If we could do this, it would drive book design to take sound into account (rather than it just be guessed at by a device) and eventually evolve the medium further away from text-only books.

Playable, not Gamified

In Playing a Book, I said:

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.

I want to clarify that I don’t mean “Gamification”. I don’t want a book to seem like a game—I want it to literally be a game.

In a gamified book, you would just write the book as normal and then give the user a badge when they complete a chapter. Or maybe you’d assign points to various things.

The distinction I am trying to draw is that playability is something you start with to drive your design. Gamification is something you slap on at the end.

Programming Tutorials Should be Vaguer

The basic template for programming tutorials is:

  1. An introduction with a motivating example
  2. Step-by-step how-to style instructions with code
  3. Conclusion

But, if the way to learn programming is to write programs, this template breaks down at step 2. At the end of the tutorial, you have working code, but since your brain was engaged in reading and typing (or copying), it’s hard to absorb the information. I know that when I have “done” tutorials, I didn’t really learn the material in a way where I could do it on my own later.

So, perhaps tutorials shouldn’t give you all of the code, but instead provide enough information for you to write it yourself.

For example, here’s a code sample from a tutorial I wrote about GameplayKit:

enum GameOutcome: String {
    case win
    case reset

Instead of showing this, I could have written: “Declare a string-based enum named GameOutcome with two cases: win and reset.” There could have been a button that revealed the code.

Another way would be to use Steve McConnell’s coding technique from Code Complete. He suggests writing the comments first and then writing the code beneath (and between the comment lines), so like this:

// GameOutcome is an enum of the possible final states: win and reset.
// It needs to be a String-based enum because we use the
// raw value in GameplayKit methods that take an AnyObject.

This really only works for very simple code (I know because I tried to write the above example for more complex samples and couldn’t). A tutorial like this would get the reader playing instead of reading and help them practice composing code instead of copying it.

Review of Quantum Country

Yesterday, I wrote about how Quantum Country is helping me understand what books are for. As a recap, QC is a series of essays about quantum computing. You should think of it like a text book—they are not trying to write a pop-sci, hand-wavy, high-level overview, but a serious science/math book suitable for a college level class. Basic linear algebra is a pre-requisite to understanding it.

The book is also an exercise in a new form they call the “mnemonic medium”. Embedded throughout the text are interactive flash cards that test you on the material you just read. Depending on how you rate your own memory, they will used spaced-repetition algorithms to show you cards more or less often—the aim is to show you a card just before you will forget the answer. Using this system, you should be able to remember the content indefinitely (and need to visit and test yourself less often over time).

Does this work? I was tempted to review the book by just listing out the facts I remember, but honestly I think that would be boring to read. I did do that exercise, and I can remember quite a bit right now, but I just finished the book last week. I read it fairly slowly over six weeks and did the cards as prompted. I also did a few of the proposed exercises (which involve linear algebra), but not all of them.

In addition to the mechanics of quantum computing, I do think I also understand the higher level “point” of it. I don’t think I could make my own circuit to do something, but I could do the math to analyze a circuit. I have also gone on youtube and watched the more challenging presentations on quantum computing (the similarly math-y ones) and was able to follow them quite easily. If the “What is it for?” for Quantum Country is to teach the reader quantum computing, I can say that it was successful at that for me.

Here is a motivating example of why you’d want to know about quantum computing. In quantum computing, the fundamental unit of computation is a qubit (or quantum bit). They are quite a bit harder to make than our classical bits, but a system of N of them can represent 2^N states, and a state change on that system (affecting every qubit) can be done in constant time.

We are currently extremely limited in the number of qubits we can make and keep stable. Reading the result of the system is noisy and imperfect. However, we have still been able to do computations that are impossible on classical computers (just because of sheer size). This feat is called quantum supremacy, and has been achieved by a few research groups.

The essays include a description of a quantum computing search algorithm that can (probabilistically) find a value in an unordered list in O(π/4*(sqrt(n))) time (instead of O(n)). Just knowing that that is possible and the basics of how it is done was worth the read to me (even though I can’t say I fully understand it).

So, if you can multiply matrices, I would say to read Quantum Country enough to see if it interests you. I would at least try to get through some of the embedded flash cards to experience the mnemonic medium.

What are books for?

Questions are places in your mind where answers fit. If you haven’t asked the question, the answer has nowhere to go.

– Clayton Christensen

Clayton Christensen said that he came up with the disruptive innovation theory by asking the question “why do well-run companies go out of business” when he entered business school. He attributed having a unifying question to guiding his research and being open to answers.

I am similarly thinking about the question “what are books for?” I don’t have a lot of good answers yet, but I have seen something that I think is part of my answer.

I just finished “reading” Quantum Country, which is a series of essays about quantum computing. The material is very challenging, but they have a novel technique for helping you process and remember the content. They embedded flash cards in the text, and the site uses spaced repetition algorithms like I described yesterday in my post about Anki.

So, their answer to what books are for is something like “to transfer knowledge from the writer to the reader”, which is an obvious answer, but I have rarely read a book that tries to do this so thoroughly.

There is another answer in this text, somewhat meta, which is “to advance the idea of mnemonic media”, which is what they call this style of book. It’s not surprising that a new form of media would need to explain itself—it’s like how music in new genres needs to explain the genre they are in (see “Rock and Roll is Here to Stay” and “Rapper’s Delight”)

In the world of publishing, there are other possible answers such as “to increase the reputation of the author”, “to entertain while reading”, “to sell related services”.

It’s not so much that I want to know what books are for generally, but more about what I think they should be for. And once I know what they are for, to question whether books are even the right way to deliver on that.

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 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 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 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.