- 27 Dec, 2025 *
Don’t have much to say today. Been hard-focused on reading From Mathematics to Generic Programming; decided to stop bouncing between different books all day and give myself three hours to read and take notes and do the exercises, if the chapter has any. Three hours broken into 90 minute chunks (three Pomodoro sessions) is a decent amount of work, but not enough to cause burnout.
Like the exercise I have to do for Chapter 10 (Fundamental Programming Concepts) is Prove the Binary Search Lemma. That’s the only exercise in the chapter; some chapters have had four or five exercises, and they’re all brain-busters. I’m saving that proof for this afternoon, when I can go back and dissect the binary search lemma. I remember Professor Malan talking about binary searc…
- 27 Dec, 2025 *
Don’t have much to say today. Been hard-focused on reading From Mathematics to Generic Programming; decided to stop bouncing between different books all day and give myself three hours to read and take notes and do the exercises, if the chapter has any. Three hours broken into 90 minute chunks (three Pomodoro sessions) is a decent amount of work, but not enough to cause burnout.
Like the exercise I have to do for Chapter 10 (Fundamental Programming Concepts) is Prove the Binary Search Lemma. That’s the only exercise in the chapter; some chapters have had four or five exercises, and they’re all brain-busters. I’m saving that proof for this afternoon, when I can go back and dissect the binary search lemma. I remember Professor Malan talking about binary search in CS50, and Professor Harvey also talked about binary search in CS61A1. But this is asking me to prove it using mathematical language, and we’ve already established how illiterate I started out, mathematically.
To be a good programmer, you need to understand the principles of generic programming. To understand the principles of generic programming, you need to understand abstraction. To understand abstraction, you need to understand the mathematics on which it’s based. – Alexander Stepanov
That quote is hanging on a notecard on my wall near my desk as a reminder to myself that this book isn’t teaching programmers how to write code; they already know how to write code. It’s teaching programmers how to extract the essence of their future code so they can build bigger and more complicated programs, or so other programmers can read and understand what they’re trying to do. Which is something I still struggle with. I’ve written programs that are over 100 LOC, and some that are over 500 LOC, and some that are over 1,000. Some of them I use every day and some of them I ended up tossing onto a flash drive and forgetting about. There have been times where I have written hundreds of lines of code, then gone back the next day and been like What the hell was I smoking when I wrote this?
(One of them, The Big Project, is a text-based mystery game I’m writing in JavaScript and luckily not one of the ones I struggle to decipher the next day. I’ve been building on it week by week. But at this point it could strongly benefit from some more abstraction of the code. I’m thinking I’m going to need to modularize it some more, but I’m also still fleshing out the individual scenes and making sure the story is cohesive. So the fact that I got the first act coded and have started the second act is exciting, but The Big Project is beyond the scope of this blog post.)
So I’ve finished my first 90-minute chunk for the day. Processing what I’ve read is part of learning. I had to look up what an interface was, and refresh my recollection on what concepts were, and that was when I reminded myself of the quote on my wall. I need to be thinking in levels of abstraction, not at the same level of minute detail as I was focused on C++ by working through Dawson and Spraul concurrently.
The hard-focusing is good. It’s not possible to multitask. I can say I’m multitasking all I want, but really I’m just bouncing around between different things2. And I’m distracted and not able to fully attend to the thing that I’m doing because I was just doing something else. Or I want to be doing the next thing on my list that I saved for last because I wanted to do the things I’m less jazzed up about first to like, trick my brain into thinking it’s being rewarded when I move onto the subjects I’m excited about. Like the actual coding that Dawson had us doing.
If I’m going to pick up a craft, I want to do it well. That’s why I’m slowing down. I’m glad I took such thorough notes. That’s something I wouldn’t have been able to do if I was bouncing between topics in the same notebook. It’s a lot easier to follow my patterns of thought and to find the information I’m looking for. Who would’ve thought~
I watched Malan’s Spring 2025 CS50 Introduction to Computer Science lecture series in the library once a week for about six weeks before I saw that the topic was going to shift to SQL and I went "Ew, no," and bailed out. Part of me wishes I had done the entire course, so I am going to "retake" it when the spring semester starts up. And I’ve previously mentioned that Brian Harvey has his Spring 2010 lecture series on the Berkeley website along with archives of his course reader and assignments etc. Just want to make it clear that I did not attend either Berkeley or Harvard, I just watched the videos on YouTube.↩ 1.
Estes, Adam Clark. "What Podcasts Do to Our Brains." Vox, 3 Dec. 2025, www.vox.com/technology/470004/podcasts-tiktok-attention-brains-multitasking↩