small medium large xlarge

The latest version of the book is B2.0, released 10 days ago. If you've bought a PDF of the book and would like to update it to this version (for free), visit your home page.

By default this page displays the errata for the latest version of the book. If you have a previous version, select it here:

If you've found a new error, please submit it.

  • Typo
  • Tech. error
  • Suggestion
  • Maybe next edition
  • Not a problem
  • Reported in: B2.0 (17-May-19)
#85251
PDF page: 6
I think the content is good, but I recommend removing the references to the broken windows theory in the context of policing and law enforcement. It's...more...
  • Reported in: B1.0 (09-May-19)
#85049
PDF page: 10
at least on my kindle paperwhite, when i click the footnote, it shows: Footnote [3] ...since hyperlinks not allowed....pragprog.com/titles/tpp20Cop...more...
  • Reported in: B1.0 (08-May-19)
#85042
Paper page: 14
Under the tile "Your Knowledge Portfolio": An investment in knowledge always pays the best interest. The word "interest" is split. If possible, ...more...
Dave Thomas says: Thanks. This is something we'll address when we do the final layout.
  • Reported in: B2.0 (25-May-19)
#85299
PDF page: 28
Very bottom of the page, sentence containing "helping you chose": I think you meant "helping you choose" (present tense verb rather than past tense). ...more...
  • Reported in: B2.0 (18-May-19)
#85255
PDF page: 32
Looks like in the code duplication example, in the original code, the _else_ in the first _if/else_ block should have _account.fees_ as the argument. ...more...
  • Reported in: B2.0 (16-May-19)
#85241
PDF page: 34
Paper page: 50
resident know-all bounces this code, claiming it’s a --> know-it-all DRY violation: both function bodies are the same. They are wrong. --> The know-...more...
  • Reported in: B2.0 (16-May-19)
#85242
PDF page: 34
Paper page: 50
Eat your vegetables. Get 8 hours sleep. Comment your functions. And so we often see something like this: Feels like a sentence is missing. "Time ...more...
  • Reported in: B2.0 (18-May-19)
#85256
PDF page: 36
In the code for _class Line_ containing the method _calculateLength_, in the interest of uniformity, I think all the _calculate_length_ (snake case) s...more...
  • Reported in: B1.0 (15-May-19)
#85236
PDF page: 36
Paper page: 2o
A good idea is an orphan without effective communication. Orphans without effective communication are a bad idea :-) Without effective communicati...more...
  • Reported in: B2.0 (17-May-19)
#85248
PDF page: 37

Footnote 3 the link for the OpenAPI is broken 404 error--Murray Taylor

  • Reported in: B2.0 (16-May-19)
#85244
PDF page: 37
Paper page: 53

Many data sources allow you to introspect on their data schema. --> to inspect their--Peter Whelan

  • Reported in: B2.0 (18-May-19)
#85260
PDF page: 53
Paper page: 69
I like that you are reconsidering the tendency to express ideas in military terms. Even the word target implies something that you are aiming at, so...more...
  • Reported in: B2.0 (19-May-19)
#85266
PDF page: 60
Regarding, how not to use prototypes, I offer a story: back in the 80s I met a consultant called Steve Weiss, who in a previous career had been a dent...more...
  • Reported in: B2.0 (20-May-19)
#85281
PDF page: 65
Top of page: "flexible in this regards", I think should be "flexible in this regard", i.e. singular (unless this is an American English usage with whi...more...
  • Reported in: B2.0 (22-May-19)
#85287
PDF page: 67
May I suggest another estimating tip? "Never provide a single number" - it can give the illusion of certainty, even you provide less precise time u...more...
  • Reported in: B2.0 (17-May-19)
#85253
Paper page: 70
Tip 11 -> Know Your Audience-> You’re communicating only if you’re conveying when you mean to convey—just talking isn’t enough. I think it should b...more...
  • Reported in: B2.0 (19-May-19)
#85263
PDF page: 81
Paper page: 65
parser generators such as bison or ANTLR, and parsing frameworks such as the many PEG parsers out there. First time mention of bison include link ...more...
  • Reported in: B2.0 (19-May-19)
#85264
PDF page: 81
Paper page: 65
In general, use off-the-shelf external languages (such as YAML, JSON, or CSV) I think of JSON and CSV (comma separated values) as data formats, not p...more...
  • Reported in: B2.0 (19-May-19)
#85265
PDF page: 83
Paper page: 67

First use of the acronym BNF --> Backus normal form (BNF) --Peter Whelan

  • Reported in: B2.0 (23-May-19)
#85296
PDF page: 84
In the callout box, "Shared Directories Are Not Version Control", the last two paragraphs are a bit confusing. Does "repository [...] on a network ...more...
  • Reported in: B2.0 (21-May-19)
#85286
PDF page: 92

I'm not sure but "nuf said" under the Tip 32 should read "nuff said".--Yoshiki Shibata

  • Reported in: B2.0 (20-May-19)
#85270
PDF page: 102
Paper page: 86

is the way then let you isolate ->they--Peter Whelan

  • Reported in: B2.0 (24-May-19)
#85298
PDF page: 106
some stylistic suggestions regarding the accept_deposit function: 1a. Change the name to "accept-deposit". In my experience, hyphens are preferred to...more...
  • Reported in: B2.0 (20-May-19)
#85271
PDF page: 108
Paper page: 92

interest_rate is 4.5 and should be 0.045. -> The 4.5 should be in the font of 0.045?
let’s see -> Let's--Peter Whelan

  • Reported in: B2.0 (20-May-19)
#85272
PDF page: 116
Paper page: 100

You company has now standardized -> Your--Peter Whelan

  • Reported in: B1.0 (12-May-19)
#85090
Paper page: 116

writing code such as --> writing code such as: (add a colon)

--Janet Furlow

  • Reported in: B1.0 (15-May-19)
#85237
PDF page: 116

replace ch by ans
assert((ans == 'Y') || (ans== 'N')) # Very bad idea!--Lucas Vieira

  • Reported in: B2.0 (20-May-19)
#85273
PDF page: 122
Paper page: 107
This is a better approach than simply checking your inputs; in this case, you simply can not call this function if your arguments are out of range. ...more...
  • Reported in: B2.0 (20-May-19)
#85274
PDF page: 125
Paper page: 110
For languages without built-in support, you would need to bracket the called routine with a preamble and/or postamble that checks these assertions.)...more...
  • Reported in: B2.0 (20-May-19)
#85275
PDF page: 128
Paper page: 113

Maybe we’ve passed in a nil value, or an empty list. --> Same thing. nil is null with a LISP. ha ha--Peter Whelan

  • Reported in: B2.0 (20-May-19)
#85276
PDF page: 138
Paper page: 123

However, there is a catch. -> I laughed out loud (LOL) at that one.--Peter Whelan

  • Reported in: B2.0 (20-May-19)
#85277
PDF page: 142
Paper page: 127

Results in a REPL provide -> Read Evaluate Print Loop (REPL)--Peter Whelan

  • Reported in: B1.0 (13-May-19)
#85121
Paper page: 152
2 places - for consistency: ...flatten the nested lists into a single level. --> change the period to a colon ...are all words with that lengt...more...
  • Reported in: B1.0 (13-May-19)
#85123
Paper page: 158

Exercise 20: The overall transformation is described by --> add a : (colon) after "by"

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85126
Paper page: 162

...every item has getLocation and locationIsValid. --> period s/b a colon--Janet Furlow

  • Reported in: B2.0 (25-May-19)
#85300
PDF page: 163

tail -5 will write the last _5_ lines to stdout--Maximilian Karasz

  • Reported in: B1.0 (13-May-19)
#85128
Paper page: 165

...we can add the mixin to them, too. --> change period to colon

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85137
Paper page: 179
2 places: ...take a slice of pie in a single call. --> change the period to a colon ---protect it with a semaphore. --> change the period to a...more...
  • Reported in: B1.0 (13-May-19)
#85138
Paper page: 181

if something fails. --> change the period to a colon

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85145
Paper page: 187

The order you see may well be different. --> change period to a colon

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85147
Paper page: 191

... the following problems to contend with. --> change period to a colon (introducing a bulleted list)

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85151
Paper page: 199

Do the following. --> change the period to a colon

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85153
Paper page: 200

and look for patterns, If you can --> comma s/b a period, or lowercase "if"

--Janet Furlow

  • Reported in: B2.0 (17-May-19)
#85252
PDF page: 213

broken link
5. pragprog.com/tpp20/code/algorithm_speed/sort/--Lucas Vieira

  • Reported in: B1.0 (13-May-19)
#85160
Paper page: 219

...that performs the query. --> period s/b a colon

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85161
Paper page: 219

...change it while testing. --> period s/b a colon

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85162
Paper page: 219

potentially change it later. --> period s/b a colon

--Janet Furlow

  • Reported in: B1.0 (14-May-19)
#85201
PDF page: 227

"Confession": automated tests are also necessary to safely upgrade dependencies - which is a continuous process on its own. --Piotr Włodarek

  • Reported in: B2.0 (16-May-19)
#85239
PDF page: 227
If this guy is to be believed (www.leadingagile.com/2018/04/step-by-step-toward-property-based-testing/), you seem to have undersold the difficulty of...more...
  • Reported in: B1.0 (13-May-19)
#85167
Paper page: 230

...so that --> "so that:"

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85168
Paper page: 230

We wrote a basic unit test, which passes. --> period s/b a colon

--Janet Furlow

  • Reported in: B2.0 (20-May-19)
#85278
PDF page: 235
Paper page: 222

but how can they decide of the functionality of layers when they don’t know where they are heading?
Replace first of with on--Peter Whelan

  • Reported in: B1.0 (13-May-19)
#85180
Paper page: 252

January 1999 Wired magazine2, --> move footnote 2 notation after the comma

--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85182
Paper page: 256

noncomputer solution. --> "non-computer" ?

--Janet Furlow

  • Reported in: B2.0 (21-May-19)
#85282
PDF page: 286
Paper page: 274

whatehaveyou. -> what have you--Peter Whelan

  • Reported in: B2.0 (21-May-19)
#85283
PDF page: 289
Paper page: 278

Tip 89 Use Version Control to Drive Build, Test, and Releases ->
Use Version Control to Drive the Build, Test, and Release Process--Peter Whelan

  • Reported in: B1.0 (14-May-19)
#85212
Paper page: 292

Bibliography: [And10] Jackie Andrade. What does doodling do?. --> if possible, delete the period after the question mark--Janet Furlow

  • Reported in: B1.0 (14-May-19)
#85213
Paper page: 292

Bibliography: [Bro95] Frederick P. Brooks Jr. --> Frederick P. Brooks, Jr.--Janet Furlow

  • Reported in: B1.0 (14-May-19)
#85205
Paper page: 297

These Exercise Answers are still needed:

#'s 5, 7, 8--Janet Furlow

  • Reported in: B1.0 (13-May-19)
#85195
Paper page: 298
Answer 10: about 9, 000 seconds --> looks like there's an extra space between the 9 and the comma Answer 12: pre- and postconditions --> post-c...more...