This summary really undersells the book IMO. It's one of the more interesting books I've read in that it is not structured linearly. He introduces a few ideas which have very particular language he defines in the remainder of the book which is essentially a dictionary. If you don't come from a math-y background and you are trying to get into serious mathematics, this definitely helps to 'lift the veil' on how you might think about math. Most of the criticism I've heard about the book comes from
Paraphrased from memory:
"I'm not claiming to have discovered anything special here. What I think I'm doing is describing the mental operations that lots of people perform, consciously or unconsciously, to solve different sorts of problems. You probably already do some or all of what I'm describing."
I found that he was describing some thought patterns that I am extremely familiar with because I use them so often. Making them explicit was pretty cool. I haven't gotten around to his follow-up works yet, but I look forward to them.
If you don't come from a math-y background and are trying to "get into serious mathematics", the only way to do this is to get a PhD.
I realize this might come across as gatekeeping, but the reality is that each subfield of math (or any scientific discipline) has its own set of tactics for approaching problems, which have been developed over the years by the people actually in the trenches. These problem solving strategies and habits of mind aren't written up anywhere, and even if they were, they wouldn't be useful to read. The way you learn them is by getting the training that comes with a PhD: they are passed down as part of the mentoring process. It's not clear to me that it could happen any other way.
I think the right way to look at this is that someone getting a PhD is basically a "journeyman researcher", much like a journeyman in one of the trades. Unfortunately, this often goes sideways (particularly if an advisor is bad or if there aren't enough support systems). But much like the only way to become an electrician is to apprentice yourself, the same goes for becoming a researcher. I think this is for good reason.
There are a few books which admirably explain the assumptions etc.
- A Programmers Introduction to Mathematics (amazing for building intuition, explaining how to read mathematics papers, understanding beauty of proofs etc.)
- Elements of Mathematics for Economics and Finance (a quick jog through typical the high school and college math a non-mathematician would study)
- Papula's Mathematik für Ingenieure und Naturwissenschaftler (rigorous (for practitioners) and comprehensive. Starts from nothing, with sets, then teaches you fractions, then quadratic equations until you're doing vector analysis and Laplace transformations)
- Foundations and Fundamental Concepts of Mathematics by Howard Eves (wide overview of the man developments in mathematics, up to its publication)
> If you don't come from a math-y background and are trying to "get into serious mathematics", the only way to do this is to get a PhD.
> I realize this might come across as gatekeeping, but the reality is that each subfield of math (or any scientific discipline) has its own set of tactics for approaching problems, which have been developed over the years by the people actually in the trenches.
There are degrees of seriousness. Sure, even a very good foundation is not enough to do novel work in say, algebraic geometry (but then again, sometimes it is enough to make progress in combinatorics) - but the strongest undergrads are still much closer to freshly minted PhDs than they are to laymen.
Mathematical maturity is the first and hardest step; after that, people will know where to go for the folklore if they want it.
"How To Solve It" does not account for actual ability. It was recommended in high school to those of us interested in math contests. My big lesson was that if you need this book, you're going to be roadkill in math contests. If you have the chops to be a successful mathlete, you don't need this book. And so it came to pass.
There are some people who have the ability to see a problem well enough to analyze it and make progress. Some people can do this in math, some in other technical disciplines, others in the arts, and so forth. Umpteen years later, I have not seen anyone including Polya successfully /teach/ this ability. If you want to be good at math, piano, chess, sculpture, or whatever you need the talent and then it can be nurtured.
In college I took organic chemistry[0]. The exam problems would often have redundant and/or contradictory information. The student had to figure out what to NOT believe to get anywhere.
As others have mentioned, none of Polya matters for selecting and attacking research problems.
[0] It was taught well and none of the cliches of "It's all memorization" applied. I struggled but look back fondly on it because I had to think along many axes at the same time.
> if you need this book, you're going to be roadkill in math contests
> I have not seen anyone including Polya successfully /teach/ this ability.
This is a pretty wild take. For alternate takes, see John Horton Conway's foreword to the most recent edition of the book. There he talks about how amazing the book is for both students and teachers, including the things he learned from it as both a student and teacher. Or see Terry Tao's blog post on solving mathematical problems [0], in which he says he learned from the Polya book when preparing for Mathematics Olympiads. Conway and Tao are widely considered outside the "roadkill" category of mathematicians.
> If you want to be good at math, piano, chess, sculpture, or whatever you need the talent and then it can be nurtured.
The "either you got it or you don't" theory used to be common wisdom, but it's not supported by empirical evidence and these days it's mostly relegated to grouchy coach stock character stereotypes. You need a sustained level of interest, you need practice, and you need some amount of courage, but there's no real evidence for an innate ability that some people got and some people don't.
Thank you for taking the time to debunk such comments. I have serious imposter syndrome as a minority woman in software, literally the only one among 60 others and everyday is a battle with my inner thought process. For an onlooker, I have amazing achievements behind me and there's no reason I shouldn't be confident, but I'm not and seeing such comments as before has made it worse over time, without me questioning it.
>If you want to be good at math, piano, chess, sculpture, or whatever you need the talent and then it can be nurtured.
No offense, but you sound like you don't really know anything about these disciplines, or about the science of learning (Peak is a good book to read). Getting a good piano teacher will absolutely accelerate your progress and being talented at piano as a kid is a pretty bad predictor of how good you'll be as an adult. Every outstanding Piano "talent" you see on stage today has been nurtured and nurtured themselves through practice, to hell and back.
None taken but you don't know about my (adult) piano adventure with good teachers over 15+ years, either. I didn't say practice was not important. You can't squeeze blood from a stone.
You say that if someone has the chops to be a real mathlete they won't need Polya's _How To Solve It_
I'll say I went to college 25 years ago with people who had competed internationally in high school and who placed competitively on the Putnam, and they LOVED Polya's book.
I think whether you enjoy seeing strategies laid out well--—whether or not you've been able to figure some of it out yourself---depsnds more on your personality than on how good you are at solving creative math problems.
> As others have mentioned, none of Polya matters for selecting and attacking research problems.
While I am not familiar with research problems, and do not pretend to be, some of the strategies to tackle problems in this book are universal. Like finding a similar problem, or a simplified case, or divide and conquer, etc. etc.
Yea, these are 100% exactly how you should approach a research problem, in mathematics or otherwise.
Literally the first part of almost every research paper is outlining how this thing you're about to talk about is similar and dissimilar to other things. That's often followed by a simplified description of the idea. Then that's usually followed by the thing in full generality.
beyond the book, what contributions did he make? it would seem like the techniques should have helped him solve problems but Wikipedia does not show anything else
Surely you’re joking. Polya pioneered so much combinatorics I don’t even know where to begin. Heck, a lot of counting problems reduces to polya’s enumeration theorem. The page of “references” to stuff named after him should be a clue to you.
Definitely. Whatever one may think of "How to Solve It," Polya was a renowned mathematician. The book is like the Richard Hamming lectures that often come up on HN: Great thoughts from a great mind but not easily applied by the average or even above average Joe.
Every so often there's a comment on here that's simultaneously so ignorant and so arrogant that it crosses from offensive to hilarious. Congrats, this one is up there with the likes of "it could just be rsync".
go look at the wikipedia page for george polya and tell me what state of mind you need to be in to conclude that he didn't accomplish anything outside of publishing that book.
also btw
>born in 1887
he lived very long and had a very long career so you're still not close
I am not exactly quoting anyone. So now that's settled, you can't use that as a dodge to get out of responding to the point.
> "I don't know how it's possible to "misread" a wiki"
Great, thanks for your informative contributions. Don't forget to be offended and accuse someone of ignorance and arrogance just because you don't understand. That's useful.
> "Still not close to any semblance of a convincing rebuke"
His death was still so long ago that more than half the population of Earth wasn't even born at the time.
On a totally orthogonal axis: My biggest problem with tackling math problems early in life was psychological. My inner critic would say nasty things to me when I didn't get the answer right away, making it impossible to stick with exploring the problem. Once I overcame that, I got lots better at math.
And working on yet another axis, the most useful tip I've gotten on how to think about problems is to "think in extremes". Perhaps more applicable to physics than math, but a classic example is the puzzle where a ship in a lock (closed system/giant bathtub) has an engine break down. As the engine is being hauled out for repairs, the chain breaks and the engine drops into the lock beside the ship and falls to the bottom of the lock. Does the water in the lock rise, fall or stay the same? The only person I ever told the problem to that solved it described his technique: Imagine the engine is the size of a pea and weighs 20 tons. Shazaam: The water in the lock falls because it is now displacing its volume, instead of its weight in water.
I like to use extremes and the intermediate value theorem, ie if you have two extreme points, and some continuous curve connecting them, it passes through all the points in the middle. It's a good shortcut for "is it possible to balance X and Y" questions. Like is there a hexagon with 'equal' area and perimeter? It's easy to conceptualize ones on each side of the ratio, and you can smoothly deform between them so the ratio is continuous, hence there is such a hexagon.
Thinking in extremes helped me to understand the Monty Hall problem. Imagine there are a hundred doors instead of three and 98 wrong ones are eliminated. Should you switch?
If you don't mind, could you share how you overcame that? I think for me at least a lot of it is/was not being able to be comfortable struggling with a hard problem for an extended amount of time, probably due to being used to only solving fairly trivial exercises and thus feeling dumb/the problem feeling impossible if it wasn't clearly solvable under a short timeframe.
Mostly, talk therapy. As you say, struggling with a hard problem for an extended period of time and feeling dumb is part of the process. For me, the shame was excruciating, so I'd turn my attention to anything else to stop feeling shame. The shame was intense enough that the underlying "felt sense/thought" was "I don't deserve to be on this planet". With the help of a therapist, I managed to start looking at myself and _managing_ the shame, so I could then examine my behavior and experience: Oh, I said that mean thing to somebody - I (deservedly) feel bad and want to change how I treat people. Oh, I couldn't get a math problem right away: I don't need to feel negatively about myself because of that. Frustrated, sure, but NOT "I don't deserve to be on the planet". Shame that intense tends to be (and was for me) rooted in childhood: Weak/bad parenting. It's a project to overcome it.
The Feynman algorithm is very underrated. I think some people see it as a joke, as though it's clearly not a working method. But it's how I do most of my difficult work, possibly as a result of majoring in physics where "stare at the problem for a few hours" is the standard approach.
I think my strongest asset is not understanding when a problem is difficult and staring at the problem for hours anyway.
There are classes of problems that don't trivially decompose into a series of easier problems. The only way is to punch your way through them.
3. Carry out incantations handed down from above, regardless of whether they could be applicable to this problem; they are not understood which leaves room for them being potentially powerful and relevant.
4. Give up. If the incantations of power didn't help, what else is there to do? Don't look back.
Are these steps from How To Solve It in 1945 so different from Eric Raymond's "how to ask smart questions" from the 1990s(?) or from Eric Lippert's "How to debug small programs" from 2014 ( https://ericlippert.com/2014/03/05/how-to-debug-small-progra... )? His example "I wrote this program for my assignment and it doesn’t work." is still a common approach to "problem solving" nearly a decade later, not just for student coders either.
People seem to be missing:
- the belief that problems are solvable. (Instead apparently believing that some people know the answer or that the problem cannot be solved; not understanding that someone can start unknowing, work to solve, and then know).
- that solving something involves a mental model of how a thing works, in some context. (Instead apparently believing that solving is random or guesswork or luck or flash of inspiration, but not solved by any kind of knowable process).
- that solving something involves a feedback loop of gathering information, testing hypotheses, learning from the result, looking back (Instead trying one thing and stopping, not seeing if anything could be learned from the result, not trying to expand a mental model from what was known).
Even that this is a pet frustration of mine with some of my coworkers and internet programming askers, I still resist writing down the problem or thinking real hard (as far as I can do such a thing).
What helps with solving problems like math and algorithmic problems is to go through a lot of problems to see different patterns and strategies of solving problems. I'm talking about going through thousands of problems. That is very effective.
> I'm talking about going through thousands of problems.
you don't need thousands of problems. you don't even need hundreds, unless, no offense, your medium-term memory is very poor.
personal anecdote 1: in between undergrad and grad school i decided i was gonna try this "solve all of the problems" approach, as opposed to my usual "sit there and ponder approach", in order to prepare for eventual quals in grad school. i started with calculus, using apostol's calculus (famous for its rigor and difficulty right?). some sections have double digits (maybe even 100? i don't remember) problems and invariably (no pun intended) by the time i got about a quarter of the way through they got trivially easy. i did finish and do all the problems in both volumes. i didn't feel i learned any of it better than the first time i took calc (wherein i didn't solve many at all beyond assignments). i did not keep on with this kind of slavish dedication and just skimmed the rest of the books. i didn't end up doing a phd in math but i did take math and cs theory classes and i did well.
personal anecdote 2: after my MS i did hundreds of leetcode problems. it was roughly the same phenomenon: in every category it only took about a dozen to be able to solve the remainder trivially (yes even hard DP problems).
and i'm willing to bet (if you're on this board) your memory is better than mine (i smoked incredible amounts of pot in high school...).
100% agree. I went through a similar phase of being infatuated with work ethic, and all I got were the following three lessons learned:
1. Trying to "put more effort" into artifacts (e.g. note taking) while learning something the first time is counterproductive. Write something lightweight and put your focus on paying attention.
2. Do one intensive review session while you still remember the content. Either teach someone else or write a document that could teach someone else. It's an ineffective use of time to do that more than once, for later review of the material just skim what you wrote on your first review.
3. Everyone who offers advice is just telling you their life story, dressed up as a simple directive. "Work harder" often means they wished they worked harder in some part of their life. Treat it like any other life story: learn the lessons they did, but don't let it become baggage that you irrationally follow.
Back on topic of Polya's How to Solve It, I took a no-credit uni course where the professor taught in Socratic style that expected us to (loosely) follow Polya's process. It was a great experience, and I've always been fond of Polya's steps because of it.
> Everyone who offers advice is just telling you their life story, dressed up as a simple directive. "Work harder" often means they wished they worked harder in some part of their life. Treat it like any other life story: learn the lessons they did, but don't let it become baggage that you irrationally follow.
I don't know how old you are but bravo - it took me a very very very long time to realize this. The converse to this is to always be very transparent and very careful when giving novices advice - when junior PhD students ask me about some kind success I've had I always make sure to emphasize the ways in which I got lucky first and only after talk about how I applied myself.
Edit: and in full transparency, I believe i had this epiphany after at some point listening to the funny poem/song/thing (from the 90s):
Everybody’s Free (to Wear SUNSCREEN): THE SUNSCREEN SONG (Class of ’99)
> Everyone who offers advice is just telling you their life story, dressed up as a simple directive. "Work harder" often means they wished they worked harder in some part of their life.
I think both parts of these are wrong.
There are a lot of times that folks who will advise others to do the thing(s) they wished they'd done themselves, but it's definitely not everyone all the time, and I'm not even sure if it's most people most of the time.
As often, probably more often, folks advise others to do the thing(s) that they _did_ do.
Occasionally, folks are able to give advice that is specific to the recipient. It's definitely not the norm, but I've run into it often enough.
tl;dr Don't dismiss someone's advice because you think it's all about them, particularly because you think it's all about their mistakes.
it absolutely is most people most of the time. just ponder how many advice columns and platitudinous commencement speeches and gurus and old cranky uncles and pretentious 8th grade teachers (and etc etc etc) there are. hell think of the likelihood of getting XYed in our very own industry.
> folks advise others to do the thing(s) that they _did_ do.
the meat of the point isn't that people exaggerate. even giving people the benefit of the doubt, that they don't exaggerate, they're giving you advice that's 99% of the time non-transferrable, i.e., completely useless for you and serving only the purpose of enabling them to take a nice trip down memory lane. if i'm asking someone for advice, that's an expert, i'm not asking them what worked for them in the instance of the problem they face; i'm asking them about my instance. and it is a very rare person that knows you well enough and takes the time and care and effort to advise someone individually and/or germainely.
Yes you'd need to go through a lot of problems because every problem is slightly different
Realistically, it is rare that you would encounter hundreds of identical problems.
Take realistic examples: topcoder.com, Facebook's Hacker cup, and Google codejam. Or any university exam. Or SAT. Or Olympiam math. Their problems are unique because they can't just create the same problems over and over again.
There are also other aspects like solving the problems faster and being able to write up a solution correctly. Coding it correctly at the first try is really a magical moment.
What part of "apostol's calculus" and "hard DP" did you not understand?
I love when people are so confident in their reflexive dismissal that they're literally blinded by it. So confident that they don't even stop to consider whether their dogma might be wrong.
is hard for a calculus book, i.e. is an introductory real analysis book. If you can master analysis at the level of baby Rudin without doing hundreds of problems, you're very talented. If you still don't need to do hundreds of problems by the time you finish papa Rudin, you're a mathematical genius.
Yes but I was talking about calculus as an anecdotal example. Not analysis.
> baby Rudin
This is definitely starting to look like "no true Scotsman". Anyway I did the regular amount (5-10) per section and got an A.
> you're very talented.
Trust me not the case. Just average person doing average number of pset problems.
> papa Rudin
I didn't read this, I went on to read Schilling's Measures, Integrals, and Martingales instead because I already knew enough functional analysis and wasn't interested in complex analysis.
Not only that, my take on this book is it's meant to help you classify those patterns and better recall them by going through consistent triage and process.
<snark>
Yes, yes. I get it. We should all invest in your "LLM, but for Ride-Sharing" startup.
</snark>
Seriously thought... the pattern matching vs. rational directed approaches to general problem seem to have analogs to CNNs vs. Constraint Programming approaches to GAI. Maybe, in the same way that neural-networking solves certain types of problems brilliantly but not so much with other problems, rational directed problem solving and "work a lot of problems" / pattern matching have different problem domains in which they excel.
>George Pólya, one of his university teachers, said, “I came to a certain theorem, and I said it is not proved and it may be difficult. Von Neumann didn’t say anything but after five minutes he raised his hand. When I called on him, he went to the blackboard and proceeded to write down the proof. After that I was afraid of von Neumann.”
Mathematics and Plausible Reasoning, in two volumes also by Polya, is the closest thing I've ever found to an explanation of how a working mathematician goes about her business. It has exercises, too. Great fun when I was in undergrad.
I have both the book discussed here, and How to prove it, and back in the day the Proof book was a revelation, unlike Polya's one, which was interesting but that's about it
How to prove it just made proofs click, and I wish I understood the material earlier, by high school the latest.
I am convinced that all the half intuitive half ("kind of like") mechanical ("just remember this") explanations we get in school and undergrad years are a huge waste of everyone's time.
There are other books in the literature that mainly focus on how to go about proving things rather than proving specific things.
Some titles that come up are:
Mathematical Proofs: A transition to Advanced Mathematics by Chartrand, Polimeni and Zhang.
Book of Proof: Richard Hammack
Jay Cumming’s Proofs
I remember I once had a book that advertised itself as a book on Discrete Mathematics but it turned out to be more in line with the titles above, was a gem, if I find it I'll let you know.
But it's nice to see I'm not the only guy who gets a kick out of this stuff.
I wouldn't bother with things from the foundations of mathematics area, like Russel or Frege and whoever else came from that era, back when people still wrote an 800 page treatise on what a "number" even is. A lot of the material coming from that period seems to have been thrown down the drain.
> I remember I once had a book that advertised itself as a book on Discrete Mathematics but it turned out to be more in line with the titles above, was a gem, if I find it I'll let you know.
Every discrete math book I've ever seen has a strong proof component; it's supposed to be an undergraduate's introduction to rigor. The classes taught out of those books may not actually be that rigorous, depending on whether the students are going to be expected to rigorously prove things later, or if it's just Leetcode combinatorics.
> What is the unknown? What are the data? What is the condition?
…
> Did you use all the data? Did you use the whole condition? Have you taken into account all essential notions involved in the problem?
What sort of problems are they solving, that they can somehow identify the relevant data to the point that they know once they’ve chomped their way through the data, the problem is done? It seems oddly constructed (I can only imagine that I know I’ve only been given relevant data if I’m working a textbook problem or playing a video game; somebody has set the problem up for me, but clearly this was written by somebody prestigious, so that isn’t it).
It's a good articulation that informs one while working on complex stuff. Here's a recent example of this where the above advice came to mind while reading over this advice the other day (I believe someone linked it on HN)
> A good way to stress-test this sort of false argument is to try to run the same argument without the initial assumption that X is false. If one can easily modify the argument to again lead to a contradiction, it shows the problem wasn’t with X – it was with the argument.
https://terrytao.wordpress.com/career-advice/be-sceptical-of....
I think the author is talking about maths problems, or proofs of theorems/propositions.
A problem might give you one or more mathematical objects, and ask you to show that some further condition holds true. To get started, you might consider how the given properties of those objects will help you to achieve your goal (and typically you would need to use every given property).
It's about advanced school exercises or math contest questions that are designed by someone, not real-world/research problems, where you don't even know how to best frame the issue or whether it's even solvable or the appropriate thing to tackle at the time.
The best people I work with don't use this stuff. They solve problems based on pattern matching.
Having read hundreds of books and papers over the years, no problem seems new to them. They can rapidly find a solution, especially compared to someone trying to derive a answer from first principles like Polya suggests.
I've long been impressed by Hickey's problem solving skills, so I took much of this talk to heart, and even bought a copy of HTSI. Can't say it really helped me any more than Rich's talk (as a programmer) but I'm thinking I'll give it another look.
What is meant by “the condition”? I am imagining that in x + 3 = 7 that x is the unknown and 3 and 7 are the data? Is the condition equality and, if so, how do you use that information?
Some more complicated examples would probably help me understand.
It's more relevant in a word problem, where you need to extract the condition from text and translate it into syntactical math notation so you can compute.
"John wants to have 7 pizzas. He has already made 3 pizzas. How many more pizzas does he need to make?"
Data: 7 pizzas needed. 3 pizzas made.
Unknown: X pizzas more to make
Condition: X+3=7
Or for geometry diagram problems (diagram geometry is word problems where the words are pictures), where you have to extract the relationships from the diagram.
Loved the way polia's explained the basics of solving challenges by asking questions -
- Can you find a problem analogous to your problem and solve that?
- Can you add some new element to your problem to get closer to a solution? etc
we always asks new onboard people to read this .It's like a bible for problem solving .
Baby Rudin, despite the somewhat patronizing name, is a second analysis text. There are many things that should have explanations that he expects you to already know. Swallow your pride and start with Abbott. You'll thank me later.
Now here's what I really think: I don't know your situation, but the odds are better than even that you should forget about it entirely. Doubly so if you're out of school. The bizarre math pride held by college kids (I did Math 55! I took a class with Stephen Wolfram's kid! I did all the exercises in Hartshorne! I proved X at age Y!) is real fucking stupid, coming from someone who badly wanted it. Your academic career or lack thereof will be determined about 90% by the people around you. It may piss you off, but you'll find it to be the same bitter truth I did.
My question was more rhetorical and for _synchronicity's_ sake than anything; I wanted to see what sort of replies would pop out.
As a recreational student, I've already committed to this text, difficulty be damned. I am no stranger to intellectual masochism. Nor do I care one iota for an "academic career," only for an understanding of results that were taken for granted in my prior CS mathematics undergraduate education at UWaterloo, which involved a few years of formal proof.
Would that I could have finished said undergraduate program, but tuition is expensive, and being rendered homeless partway through a CS program certainly complicates the financing, especially absent the monetary privileges afforded to one of a more affluent upbringing.
I appreciate the elitist and somewhat exclusionary language, though, despite admitted lack of knowledge regarding my situation.
I used Rudin in school. I got the highest grade in my class that included several future PhDs and professors. It's an old, not very good pedagogical book. It's a useful reference, if you are living in the pre+Internet, pre color-illustration, mid 20th century.
I learned analysis mainly from the guidance of my amazing professor (a postdoc who was an enthusiastic caring, clear communicator).
Like most textbooks, Rudin it has focused exercises, examples to build intuition, and proofs with little steps removed, not free-range problems. Thebanswe to a problem is based on the 20 previous pages in the text.
How to Solve It is like advice for solvimg a jigsaw puzzle (edges first, sort by shape and color and texture, ...)
It is for solving problems after you've learned a whole year(s) of material, and don't know which of your knowledge contains the pieces of the answer. It's a way of searching through your knowledge and evaluating which pieces are useful for the problem at hand, and how they fit together.
You're right, I'm sorry. I took my frustrations out on you. Funny, I was also homeless in the middle of undergrad. I don't know what real analysis has to do with CS, except as a pre-pre-prerequisite to boring old ML math, but it's not my place. Good luck.
In our team we recommend this book to new joiners. The principles and methods shared by polya is valid for solving the not only the mathematical problems also engineering problems in effective way.
Paraphrased from memory: "I'm not claiming to have discovered anything special here. What I think I'm doing is describing the mental operations that lots of people perform, consciously or unconsciously, to solve different sorts of problems. You probably already do some or all of what I'm describing."
I found that he was describing some thought patterns that I am extremely familiar with because I use them so often. Making them explicit was pretty cool. I haven't gotten around to his follow-up works yet, but I look forward to them.