diff --git a/asset/style.scss b/asset/style.scss
index 8998fa5ba..323a6e387 100644
--- a/asset/style.scss
+++ b/asset/style.scss
@@ -286,7 +286,7 @@ nav.narrow {
}
// Make ellipses follow Chicago style. The `…` entity puts a tiny amount
-// of space between each `.`, but not as much as Chicago style specificies. It
+// of space between each `.`, but not as much as Chicago style specifies. It
// also doesn't put any space before. Instead, the build system writes a span
// of this class with thin-space separated dots. This class here ensures there
// is no splitting between the dots.
diff --git a/book/compiling-expressions.md b/book/compiling-expressions.md
index 4a6d859c9..299da4f91 100644
--- a/book/compiling-expressions.md
+++ b/book/compiling-expressions.md
@@ -595,7 +595,7 @@ The function we will use as the infix parser for `TOKEN_PLUS`, `TOKEN_MINUS`,
^code binary
When a prefix parser function is called, the leading token has already been
-consumed. An infix parser function is even more *in medias res* -- the entire
+consumed. An infix parser function is even more *in media res* -- the entire
left-hand operand expression has already been compiled and the subsequent infix
operator consumed.
diff --git a/book/hash-tables.md b/book/hash-tables.md
index b010e8f32..70485ac2f 100644
--- a/book/hash-tables.md
+++ b/book/hash-tables.md
@@ -1067,7 +1067,7 @@ then *everything* is slow.
function, load factor, and growth rate.
All of this variety wasn't created just to give CS doctoral candidates
- something to publish theses on: each has its
+ something to publish thesis on: each has its
uses in the many varied domains and hardware scenarios where hashing comes
into play. Look up a few hash table implementations in different open source
systems, research the choices they made, and try to figure out why they did
diff --git a/book/inheritance.md b/book/inheritance.md
index 3eac233ab..6dd1da5f9 100644
--- a/book/inheritance.md
+++ b/book/inheritance.md
@@ -523,7 +523,7 @@ with cream.
### Invalid uses of super
As with previous language features, our implementation does the right thing when
-the user writes correct code, but we haven't bulletproofed the intepreter
+the user writes correct code, but we haven't bulletproofed the interpreter
against bad code. In particular, consider:
```lox
diff --git a/book/methods-and-initializers.md b/book/methods-and-initializers.md
index 085326a45..9da2fe39a 100644
--- a/book/methods-and-initializers.md
+++ b/book/methods-and-initializers.md
@@ -1233,23 +1233,23 @@ is one of the fundamental balancing acts of language design: similarity to other
languages lowers learning cost, while divergence raises the compelling
advantages.
-I think of this balancing act in terms of a **novelty
+I think of this balancing act in terms of a **novelty
budget**, or as Steve Klabnik calls it, a "[strangeness budget][]". Users
have a low threshold for the total amount of new stuff they are willing to
accept to learn a new language. Exceed that, and they won't show up.
[strangeness budget]: https://words.steveklabnik.com/the-language-strangeness-budget
-