By Developers, For Developers
PDF Pg | Paper Pg | Type | Description | Fixed on | Comments |
---|---|---|---|---|---|
49 | TYPO | Hide thirds-party APIs behind <- “third-party” | 2019-05-10 | ||
51 | TYPO | “interesting to consider how how to hit a target in a complex” | 2019-05-10 | ||
14 | SUGGEST | Under the tile “Your Knowledge Portfolio”: An investment in knowledge always pays the best interest. The word “interest” is split. If possible, I prefer the word would not be split, because there are spaces on the line. | 2019-06-12 | Thanks. This is something we'll address when we do the final layout. | |
2 | TYPO | Last line of the page: “They look at their skills become dated …” should be something like “They look on as their skills become dated and…” or something else. I can’t come up with a smooth way of saying this but I’m sure y’all can :) | 2019-05-10 | ||
132 | TYPO | “All the cars in a train our coupled together” | 2019-05-10 | ||
135 | TYPO | “Our experience is that this form of coupling is far less a barrier to changing | 2019-05-10 | ||
136 | TYPO | “And example of this comes when you’re writing unit tests for code that uses | 2019-05-10 | ||
10 | TYPO | at least on my kindle paperwhite, when i click the footnote, it shows: there is a space missing after the url and before Copyright | 2019-07-10 | ||
vii | TYPO | First para of preface ends with quotation marks but there are no beginning quotation marks. | 2019-05-10 | ||
ix | TYPO | Move footnote notation #3 to after the period. | 2019-05-10 | ||
14 | TYPO | 2nd para - …than you would every use - -> s/b ever | 2019-05-10 | ||
14 | TYPO | …day-to-day professional assets, - -> comma s/b a period | 2019-05-14 | ||
18 | TYPO | Next to last paragraph - …read up on and it study it. - -> s/b read up on it and study it. | 2019-05-14 | ||
19 | TYPO | Last paragraph. …. Always programmed in The same … - -> lowercase the | 2019-05-14 | ||
0 | TYPO | in Topic 9, the last code section of “DRY Violations in Data” isn’t formatted as code. This is the epub version. | 2019-05-14 | ||
41 | SUGGEST | You mention unit tests in “Simple components can be designed, coded, unit tested, and the forgotten […]”. I agree with the main point of orthogonal components being easier to implement. However I think only mentioning only unit tests is a bit narrow as integration tests should be run as well. Especially if you are about to forget everything about the component moments later :) | 2019-05-15 | ||
84 | TYPO | In the “Shared Directories Are NOT Version Control” box, in the sentence: Some folks do use version control, and keep the repository (the location which contains the history of the changes on a network or cloud drive). the closing paren should probably be after “changes” instead of at the end of the sentence | 2019-05-15 | ||
22 | TYPO | second paragraph, last sentence: Sometimes all it takes is the simple question “Is this a good time to talk about…?” —> Sometimes all it takes is the simple question, (add a comma). | 2019-05-14 | ||
23 | OK | After awl, their are spelling miss steaks that the checker can knot ketch. —> heh..cute. :-) | 2019-05-14 | ||
23/24 | TYPO | Online Communication sidebar, in the tips: Proofread before you hit SEND —> add a period at the end of this sentence 6th tip …If you wouldn’t say it someone’s face, —> to someone’s face | 2019-05-14 | ||
36 | TYPO | The quoted text from Object-Oriented Software Construction has ending quotation marks but no beginning ones. | 2019-05-15 | ||
37 | TYPO | Under heading Duplication Across External APIs, move footnote reference 2 to after the period. | 2019-05-15 | ||
37 | TYPO | Under heading Duplication With Data Sources, 3rd para: a simply table driven —> simple ? | 2019-05-15 | ||
46 | TYPO | last para - You’re asked to read a file line at a time. —> …read a file a line at a time. | 2019-05-15 | ||
49 | TYPO |
| 2019-05-15 | ||
58 | TYPO | 3rd para: You can prototype —> You can prototype: (add a colon) | 2019-05-15 | ||
63 | TYPO | Ansible9 is a tool that configures software, typicaly on —> typically | 2019-05-15 | ||
36 | ERROR | The source of class Line is not formatted as code, but normal text | 2019-05-14 | ||
64 | OK | A Cucumber test is converted into code to be run or a datastructure —> should “or” be “on”? | 2019-05-15 | ||
86 | TYPO | Version control system —> systems | 2019-05-15 | ||
88 | TYPO | 2nd paragraph under Challenges: …find a way add them —> …find a way to add them… | 2019-05-15 | ||
92 | TYPO | Bad Results | 2019-05-15 | ||
94 | TYPO | 3rd paragraph: Being able to do this is just on of the many benefits —> “on” s/b “one” | 2019-05-15 | ||
94 | TYPO | 3rd paragraph: picking releases for your —> “your” s/b “you” | 2019-05-15 | ||
94 | TYPO | 2nd para under Logging and/or Tracing: “got here”” —> remove second " mark | 2019-05-15 | ||
112 | TYPO | Exercise 12: Add appropriate pre- and postconditions —> post-conditions | 2019-05-15 | ce | |
115 | TYPO | Footnote 2: flag to enabled them, and —> enable | 2019-05-15 | ||
116 | TYPO | First line: add an descriptive —> add a descriptive | 2019-05-15 | ||
116 | TYPO | writing code such as —> writing code such as: (add a colon) | 2019-06-12 | ||
117 | TYPO | Should the be a colon at the end of each para, before the code examples? | 2019-05-15 | Dave: let's let the CE handle these... :) \n \nJanet: OK. There's a colon in some places and not in others. Seems like it needs to be consistent. | |
124 | TYPO | …environment with exceptions is —> need a colon after “is” before the code example? | 2019-05-15 | ||
76 | OK | While we’re at it, FIELD10 doesn’t help much either. Something like —> add a : (colon) after like | 2019-05-15 | I'll leave this for the CE: it's really just all one sentence with some funky formatting. | |
75 | TYPO | It can be as simple as a shopping list —> add a : (colon) after list | 2019-05-15 | ||
71 | TYPO | repeating the following steps. —> : (colon) instead of a period? since it’s introducing a bulleted list | 2019-05-15 | ||
67 | TYPO | All of the following examples should be accepted. —> : (colon) instead of a period? | 2019-05-15 | ||
66 | TYPO | the following input would draw a rectangle. —> : (colon) instead of a period? | 2019-05-15 | ||
127 | TYPO | designing for a uncertain —> an uncertain | 2019-05-15 | ||
127 | TYPO | Around the time of the first edition of The Pragmatic Programmer —> should “The Pragmatic Programmer” be in title font? | 2019-05-15 | ||
128 | TYPO | 2nd line : …heard of these technologiesas —> technologies as | 2019-05-15 | ||
129 | OK | In Decoupling we’ll show how to —> show you how to | 2019-05-15 | ||
131 | TYPO | the A is actually —> “then” A is actually… | 2019-05-15 | ||
131 | TYPO | • “Simple” changes to one module that: —> for consistent spacing, add a blank line before the last bullet point. | 2019-05-15 | ||
132 | TYPO | that cannot change in future —> “the” future | 2019-05-15 | ||
132 | TYPO | TDA would make us add an a applyDiscountToOrder(order_id) —> delete “a” | 2019-05-15 | ||
136 | TYPO | And example of this —> “An” example of this… | 2019-05-15 | ||
139 | TYPO | last line: the the contents of that cell are the new state. —> remove duplicate “the” | 2019-05-15 | ||
140 | TYPO | The code that implements the transitions between states on line 10. —> not sure what this sentence is supposed to say. | 2019-05-15 | ||
140 | TYPO | It’s only output is the final… —> “Its” | 2019-05-15 | ||
142 | TYPO | …using it to drive a state machines —> “machine” | 2019-05-15 | ||
145 | TYPO | a result in only generated when data —> a result is only… | 2019-05-15 | ||
147 | TYPO | …better decoupled that its more linear counterpart. —> “than” its more… | 2019-05-15 | ||
150 | TYPO | For example, you want want to create a web —> delete duplicate “want” | 2019-05-15 | ||
151 | TYPO | 2 places: … function on its right, so —> add a : (colon) after “so” ..is the same as writing —> add a : (colon) after “writing” | 2019-05-15 | c/e | |
152 | TYPO | 2 places - for consistency: …flatten the nested lists into a single level. —> change the period to a colon …are all words with that length. —> change the period to a colon | 2019-06-12 | ||
156 | TYPO | …thinking that we’ve moved the burden or error handling —> should “or” be “of” ? | 2019-05-15 | ||
158 | TYPO | Exercise 20: The overall transformation is described by —> add a : (colon) after “by” | 2019-06-12 | ||
161 | TYPO | Not only is the child class coupled to the parent, the parent’s parent, and so on; but the code that uses the child is also coupled to all the ancestors. —> I think it should be punctuated as follows: Not only is the child class coupled to the parent, the parent’s parent, and so on, but the code that uses the child is also coupled to all the ancestors: (change the semi-colon to a comma and the period to a colon) | 2019-05-15 | ||
163 | TYPO | …in an list of locatable items: —> “an” s/b “a” | 2019-05-15 | ||
162 | TYPO | …every item has getLocation and locationIsValid. —> period s/b a colon | 2019-06-12 | ||
165 | TYPO | And we’ll focus on just the functional that all —> “functionality” or “function” or “functional something” ? | 2019-05-15 | ||
165 | TYPO | …we can add the mixin to them, too. —> change period to colon | 2019-06-12 | ||
166 | TYPO | Can you achieves what you want with —> “achieve” | 2019-05-15 | ||
168 | TYPO | In the Sidebar: some 40,000 configuration —> is 40,000 supposed to be in italics? | 2019-05-15 | ||
173 | TYPO | about, that that potentially —> remove duplicate “that” | 2019-05-15 | ||
173 | TYPO | We’d like to find out what can happen at the same time and what must happen in a strict order. —> “can” is italicized. Do you want “must” in italics as well? | 2019-05-15 | ||
174 | TYPO | …still have time to server another customer —> “serve” | 2019-05-15 | ||
178 | TYPO | last para: She also see —> “sees” | 2019-05-15 | ||
179 | TYPO | There’s are some —> There are some… | 2019-05-15 | ||
179 | TYPO | 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 colon | 2019-06-12 | ||
181 | TYPO | if something fails. —> change the period to a colon | 2019-06-12 | ||
182 | TYPO | …for each. instead, —> capitalize “Instead” | 2019-05-15 | ||
184 | TYPO | …in the definition of actors. —> change the period to a colon (introducing a bulleted list) | 2019-05-15 | ||
185 | TYPO | waiter apologizes to the customer. —> remove period for consistency in the bulleted list | 2019-05-15 | ||
185 | TYPO | Nact library4. —> move footnote 4 notation to after the period | 2019-05-15 | ||
185 | TYPO | This code extends into the right margin: return dispatch(state.waiter, { type: “order”, customer: ctx.self, wants: ‘pie’ }) | 2019-05-15 | ||
186/7 | TYPO | 5 lines of code extend into the right margin on these two pages | 2019-05-15 | ||
187 | TYPO | The order you see may well be different. —> change period to a colon | 2019-06-12 | ||
189 | TYPO | Do you currently have does that uses mutual exclusion to protect shared | 2019-05-15 | ||
191 | TYPO | … the following problems to contend with. —> change period to a colon (introducing a bulleted list) | 2019-06-12 | ||
192 | TYPO | (A useful technique is to add a unique trace id when a particular There’s an opening paren, but no closing one. | 2019-05-15 | ||
192 | OK | Finally, these kinds of system can —> “systems” | 2019-05-15 | I _think_ this is OK | |
192 | TYPO | To some extend this —> “extent,” | 2019-05-15 | ||
199 | TYPO | Do the following. —> change the period to a colon | 2019-06-12 | ||
199 | TYPO | what you what to learn or do. —> what you “want” to learn or do. | 2019-05-15 | ||
200 | TYPO | and look for patterns, If you can —> comma s/b a period, or lowercase “if” | 2019-05-31 | ||
207 | TYPO | Your have written an app —> “You” | 2019-05-15 | ||
207 | TYPO | But you’re getting complaints that the the —> remove duplicate “the” | 2019-05-15 | ||
208 | TYPO | That’s when Big-O notation notation comes in useful. —> is “notation notation” correct? | 2019-05-15 | ||
210 | TYPO | where mand n are —> “m and” | 2019-05-15 | ||
210 | TYPO | it is likely to be logarithmic, O (lg(n)) A —> add a period before “A” | 2019-05-15 | ||
217 | TYPO | Sidebar: propagating the required changes changes, —> remove duplicate “changes” | 2019-05-15 | ||
219 | TYPO | …that performs the query. —> period s/b a colon | 2019-06-12 | ||
219 | TYPO | …change it while testing. —> period s/b a colon | 2019-06-12 | ||
219 | TYPO | potentially change it later. —> period s/b a colon | 2019-06-12 | ||
221 | TYPO | 4. Write the smallest amount of code needed to get the test to pass, and | 2019-05-15 | ||
222 | TYPO | Sidebar: flesh out the code, Involve the customer at each step, and have them guide the process. —> lowercase “involve” | 2019-05-15 | ||
227 | TYPO | sidebar: I believe the answer —> should “believe” be italicized? | 2019-05-15 | ||
229 | TYPO | In instead we wrote: —> “If instead we wrote:” | 2019-05-15 | ||
230 | TYPO | …so that —> “so that:” | 2019-06-12 | ||
230 | TYPO | We wrote a basic unit test, which passes. —> period s/b a colon | 2019-06-12 | ||
231 | TYPO | …quantity chosen from 1 to 4. —> period s/b a colon | 2019-05-15 | ||
232 | TYPO | Our property testing found an faulty assumption —> “an” s/b “a” | 2019-05-15 | ||
233 | TYPO | …you this about what must not change… —> you think about … ?? | 2019-05-15 | ||
234 | TYPO | Can you use a property-based testing framework to verify these automatically. —> period s/b a ? | 2019-05-15 | ||
235 | TYPO | 2 items: But perhaps you protest, “Oh no one will… —-> ”Oh, no one will… …its not important —-> it’s | 2019-05-15 | ||
236 | TYPO | A nefarious user could do damage with like this: —> delete “with” ?? | 2019-05-15 | ||
240 | TYPO | Sidebar: …with some recommendations from the NIST. —> period s/b a colon | 2019-05-15 | ||
242 | TYPO | name of each color as written.18 —> footnote 18 is blank | 2019-05-15 | ||
243 | TYPO | 4 items: Let’s look at a couple of examples. —> period s/b a colon First, deductPercent is what is does… —> “is” s/b “it” We’ve also change the… —-> “changed” …we never know it the value… —> “it” s/b “if” | 2019-05-15 | ||
245 | TYPO | Another way is top have … —-> “to” have | 2019-05-15 | ||
246 | TYPO | What other names to you habitually use… —> “to” s/b “do” | 2019-05-15 | ||
252 | TYPO | January 1999 Wired magazine2, —> move footnote 2 notation after the comma | 2019-06-12 | ||
254 | TYPO | 3 items: …asking them code the video game from —-> “to” code …need to know what they’ll be doing during. —-> during “what”? You’re enhancing the the feedback process —> delete duplicated “the” | 2019-05-15 | ||
256 | TYPO | noncomputer solution. —> “non-computer” ? | 2019-06-12 | ||
259 | TYPO | And we describe a great way to do that in is to keep an Engineering Daybook — > delete “in” ?? | 2019-05-15 | ||
18 | TYPO | The second paragraph from the bottom, second line: read up on and it study it. Should “it study it” read “study it”? | 2019-05-14 | ||
270 | TYPO | All of these different role and activities..—> “roles” | 2019-05-15 | ||
272 | TYPO | turned into six or eight-week —> “six-” | 2019-05-15 | ||
273 | TYPO | Sidebar: their staff “We should… —-> their staff, ”We should… | 2019-05-15 | ||
274 | TYPO | 2 items: You need the able to … —> You need “to be” able… “do Lean,” or whatehaveyou. —> what have you | 2019-05-15 | ||
275 | TYPO | …being able to delivery on —> “deliver” | 2019-05-15 | ||
278 | TYPO | …are triggered via a commits —-> delete “a” | 2019-05-15 | ||
23 | OK | After awl, their are spelling miss steaks that the chequer can knot ketch. -> After all, they are spelling mistakes that the checker can not catch (I’m not sure) | 2019-05-14 | Intentional irony. | |
280 | TYPO | …number from 0 to 999. —> period s/b a colon | 2019-05-15 | ||
284 | TYPO | …can deliver against them. —> period s/b a colon | 2019-05-15 | ||
287 | TYPO | …curiosity to an modern… —> “a” modern… | 2019-05-15 | ||
298 | TYPO | 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-conditions | 2019-06-20 | ||
300 | TYPO | Answer 19: 1. Shipping and sales tax are added to an order —> add a colon 2. …external file —> add a colon 3. … web application —> add a colon Answer 20: could be broken down into —> add a colon | 2019-05-15 | ||
21 | SUGGEST | “You’re communicating only if you’re conveying information.” Perhaps a better way of expressing this is with one of the Neurolinguistic Programming presuppositions: “The meaning of your communication is the response you get”. Conveying information is one thing, but as your section heading implies you need to tailor it for your audience. | 2019-05-14 | Indeed. I added a refererence | |
30 | SUGGEST | “…avoid the negatives and (as they say) accentuate the positives”? If this is an allusion to the old Bing Crosby & Andrew Sisters song, it’s “eliminate the negative [and] accentuate the positive”. :-) | 2019-05-14 | ||
25 | SUGGEST | In “Challenges” section, the second edition of “Peopleware” is referred, but the third edition should be. | 2019-05-14 | ||
227 | SUGGEST | “Confession”: automated tests are also necessary to safely upgrade dependencies - which is a continuous process on its own. | 2019-06-12 | ||
302 | TYPO | …may well be used it lots —> “it” s/b “in” | 2019-05-15 | ||
305 | TYPO |
| 2019-05-15 | ||
305 | TYPO | 2. On it’s own, —> “it’s” s/b “its” | 2019-05-15 | ||
297 | TYPO | These Exercise Answers are still needed: #’s 5, 7, 8 | 2019-06-12 | ||
291 | TYPO | Bib entry: [Arm07] Joe Armstring. Programming Erlang: Software for a Concurrent World_. —> s/b Joe Armstrong and “_” (underscore) is coming through after “World” | 2019-05-15 | ||
288 | TYPO | There is an order of magnitude more computers in embedded devices than | 2019-05-15 | ||
147 | TYPO | “code that’s crafted around events can be more responsive and better decoupled that its more linear counterpart.” | 2019-05-15 | ||
161 | ERROR |
Should be my_ride.move… ? Or my_car = Car.new? | 2019-05-15 | ||
173 | OK | There is no step 6, though step 6 is referred to in the text. We’re told that the steps are: | 2019-05-15 | I see it (and step 12) in my copy... | |
292 | TYPO | Bibliography: [And10] Jackie Andrade. What does doodling do?. —> if possible, delete the period after the question mark | 2019-06-20 | ||
292 | TYPO | Bibliography: [Bro95] Frederick P. Brooks Jr. —> Frederick P. Brooks, Jr. | 2019-06-20 | ||
13 | OK | …overembellishment and overrefinement. —> over-embellishment and over-refinement | 2019-05-14 | Apparently correct as is | |
88 | TYPO | nonproject —> non-project | 2019-05-15 | Left for CE | |
174 | TYPO | …can get the glassses and —> glasses (delete extra “s”) | 2019-05-15 | ||
175 | TYPO | …in which case it’s compilation —> “its” | 2019-05-15 | ||
176 | TYPO | sidebar: …on muticore machines. —> “multicore” | 2019-05-15 | ||
178 | TYPO | in footnote: Edsgar Dijkstra —> check spelling - Edsger? | 2019-05-15 | ||
179 | TYPO | …stored in the variable case_semapohore. —> “semaphore” ? | 2019-05-15 | ||
181 | TYPO | “apple pie à la mode” is it’s own resource —> “its” | 2019-05-15 | ||
191 | TYPO | …was Gelertner’s Linda. —> Gelernter ? | 2019-05-15 | ||
36 | OK | As well as the lost code formatting that someone else has reported, a minor inconsistency in the code sample: you’ve declared the commented-out setStart() method to be public, but not the other class methods setEnd(), getStart(), getEnd(), and getLength(). | 2019-05-15 | ||
19 | 2 | TYPO | “They look at their skills become dated and” should be “The look on as their skills go out of date”? | 2019-05-15 | |
20 | 4 | TYPO | The cat was playing with the red dot and I left it home. —> “at home” | 2019-05-15 | |
23 | 7 | OK | The broken windows theory is debatable, may not age well. Makes intuitive sense though. | 2019-05-15 | There's been a lot of discussion on this, but the upshot seems to be that the psychological features of hopeless spreading in the same manner as a disease vector is pretty solid, and anecdotal evidence is strong that the broken windows dynamic is very powerful on development teams. Plus, we've used this metaphor for 20 years and it's become part of the programmer's vocabulary, so I hesitate to change it at this point. |
27 | 11 | OK | boiling frog story is not literally true, point out that it’s a metaphor. | 2019-05-15 | I think "fabled" frog makes it clear the story is apocryphal in nature. |
30 | 14 | TYPO | you would every use, —> ever | 2019-05-15 | |
31 | 15 | SUGGEST | oddly worded | 2019-05-15 | |
3 | TYPO | Last line structure | 2019-05-15 | ||
34 | 18 | TYPO | we encourage you to read up on and it study it . > delete “to read up on and it” | 2019-05-15 | |
35 | 19 | OK | which is why “one size fits all” | 2019-05-15 | The implication reads as "one size fits all" do not "fit all." \n |
36 | 2o | OK | A good idea is an orphan without effective communication. Without effective communication, your best ideas remain a well kept secret. | 2019-05-28 | |
116 | ERROR | replace ch by ans | 2019-05-31 | ||
227 | OK | 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 doing Property-based testing well and perhaps choosing appropriate situations in which to apply it. Feels like the advice should be more like “Understand property-based testing and know when it’s the economic approach”. | 2019-06-12 | As with all our advice, it's contextual. It works for some, and not for others. But we feel everyone should at least try it and make up their own mind. | |
34 | 50 | OK | resident know-all bounces this code, claiming it’s a —> know-it-all | 2019-05-28 | |
34 | 50 | OK | Eat your vegetables. Get 8 hours sleep. Comment your functions. Feels like a sentence is missing. “Time honoured advice…”? | 2019-05-28 | |
37 | 53 | OK | Many data sources allow you to introspect on their data schema. —> to inspect their | 2019-05-29 | |
37 | ERROR | Footnote 3 the link for the OpenAPI is broken 404 error | 2019-05-28 | ||
6 | OK | 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 something that has been questioned and isn’t widely accepted. I do think that it’s true in the context of software. I think the changes are mostly removals on Page 6 - remove the paragraph that starts “In inner cities…” and the footnote link associated with this paragraph. There may be some more clean up on page 7. Once you get to the content about psychologists and their studies, I think it’s good. | 2019-06-12 | We have cut it down, but we still like the theory. Remember that "broken windows" is not the same as "zero tolerance" | |
213 | TYPO | broken link | 2019-06-20 | ||
70 | ERROR | 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 be “conveying what you mean to convey” rather than when. | 2019-05-29 | Dupe of 85318. | |
32 | TYPO | 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. Otherwise the duplication is hard to see. | 2019-05-29 | ||
36 | TYPO | In the code for class Line containing the method calculateLength, in the interest of uniformity, I think all the calculate_length (snake case) should be changed to calculateLength (camel case). | 2019-05-28 | ||
53 | 69 | SUGGEST | I like that you are reconsidering the tendency to express ideas in military terms. Most people have experienced learning to ride a bicycle. To ride in a straight line you must take feedback from where you are and adjust to reach your destination. | 2019-05-28 | |
81 | 65 | SUGGEST | parser generators such as bison or First time mention of bison include link www.gnu.org/software/bison/ | 2019-05-29 | We're going to take a different approach to using actual links, as we've learned things go stale over 20 years or more. |
81 | 65 | ERROR | In general, use off-the-shelf external languages (such as YAML, JSON, or CSV) | 2019-06-12 | |
83 | 67 | SUGGEST | First use of the acronym BNF —> Backus normal form (BNF) | 2019-06-12 | We kinda think that it's like SQL |
60 | SUGGEST | 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 dentist. When Steve made dental crowns, he took great care in matching the colour of the temporary crown to the rest of the patients’ teeth so they would be happy with their appearance while they waited for the permanent crown to arrive. To his dismay, many patients never came back for the permanent crown, because the temporary one was good enough. Eventually he started making the temps several shades lighter than the rest of the teeth, making them look dark, so the patient would be unhappy enough to come back for the permanent one. (Had he made the temp darker, he might be accused of producing bad work.) The patients came back for the permanent crowns much more often. The lesson is Don’t Let Your Prototype Get Mistaken for the Real Thing. Another lesson on prototyping is that in an effort to please, we often make prototypes fancier than they need to be, which causes delays and often a needlessly more complex end product. I suggest that the GOTO Berlin 2015 conference presentation, “To the Moon” by Russ Olsen is worth a look (it’s on YouTube, but I’m not allowed to add a link). The lesson from the early days of the USA’s mission to land on the Moon is at each stage Do The Simplest Thing That Could Possibly Work. This of course ties into mechanism of Test Driven Development. | 2019-05-29 | ||
102 | 86 | TYPO | is the way then let you isolate ->they | 2019-05-29 | |
108 | 92 | TYPO | interest_rate is 4.5 and should be 0.045. -> The 4.5 should be in the font of 0.045? | 2019-05-31 | |
116 | 100 | TYPO | You company has now standardized -> Your | 2019-05-31 | |
122 | 107 | OK | This is a better approach than simply checking your inputs; in this case, you | 2019-06-12 | It's better because it makes it clear that the caller is in error. |
125 | 110 | OK | For languages without built-in support, you | 2019-06-12 | We bracket the called routine, not the caller. |
128 | 113 | SUGGEST | Maybe we’ve passed in a nil value, or an empty list. —> Same thing. nil is null with a LISP. ha ha | 2019-05-31 | |
138 | 123 | SUGGEST | However, there is a catch. -> I laughed out loud (LOL) at that one. | 2019-05-28 | |
142 | 127 | SUGGEST | Results in a REPL provide -> Read Evaluate Print Loop (REPL) | 2019-06-12 | |
235 | 222 | TYPO | but how can they decide of the functionality of layers when they don’t know where they are heading? | 2019-05-31 | |
65 | OK | 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 which I’m unfamiliar.) | 2019-05-28 | ||
286 | 274 | TYPO | whatehaveyou. -> what have you | 2019-06-04 | |
289 | 278 | SUGGEST | Tip 89 Use Version Control to Drive Build, Test, and Releases -> | 2019-06-12 | |
92 | OK | I’m not sure but “nuf said” under the Tip 32 should read “nuff said”. | 2019-05-29 | ||
67 | SUGGEST | May I suggest another estimating tip? “Never provide a single number” - it can give the illusion of certainty, even you provide less precise time units as suggested on page 68. Where I work, we provide three numbers: Nano, Probable, and Catastrophic (or Ideal, Probably, Worst Case if you prefer). The low and high figure would roughly mark the 5% and 95% marks on the probability curve. There’s still no guarantee that a manager won’t take your “two or three months”, convert it to “eight to twelve weeks”, and then reduce it to “ten weeks”. This happened to me many years ago; when I finished the job in nine weeks, the manager said “great, you’re a week early”, having never had any conversation with me about his time conversions. But it also offers some protection again the manager starting the “are we there yet?” routine at the nine weeks plus one day mark. :-) | 2019-06-13 | ||
84 | SUGGEST | In the callout box, “Shared Directories Are Not Version Control”, the last two paragraphs are a bit confusing. Does “repository […] on a network or cloud drive” refer to an actual VCS repo, or a just shared directory that people are accessing as if it were a VCS repo? If the latter, then I agree with you, but the second last paragraph says that some people are using version control. Sharing a (say) Git repo is of course the normal way of using Git. Of course, if some people are accessing the repo via a VCS, and some are using the files directly through the file system, that’s clearly insane. :-) (Side note: in macOS Preview, highlighting the last paragraph in the callout across the page break is broken. When you go to the next page it highlights the entire page text instead of the continued callout text. Works fine when viewing in Chrome though, so not sure if this is a coding issue in the PDF or a Preview bug.) | 2019-05-29 | ||
106 | SUGGEST | some stylistic suggestions regarding the accept_deposit function: | 2019-05-31 | ||
28 | TYPO | Very bottom of the page, sentence containing “helping you chose”: I think you meant “helping you choose” (present tense verb rather than past tense). | 2019-05-28 | ||
163 | TYPO | tail –5 will write the last 5 lines to stdout | 2019-05-31 | ||
94 | OK | “Logging and/or Tracing” seems to cover some of the ground already dealt with by “Trace Bullets” on p51. That notwithstanding, it might be worth mentioning that some IDEs offer conditional breakpoints, that can display and/or log messages when a breakpoint has been hit. This save making possibly invasive (or forgotten) code changes that can alter the behaviour of the code. Example: back in the mid-80s, I found a bug in Microsoft’s MASM that appeared only when the code ended exactly at a 1K byte boundary. Adding any code to determine what was happening - even a NOP - would make the problem disappear. | 2019-06-12 | Not sure I see the relationship between logging and the iterative development style of tracer bullets? \n | |
95 | SUGGEST | Regarding “pot plant”. In the Queen’s English, “pot plant” has the same meaning as “potted plant”. I would have thought that in modern 4/20 America such usage would also be acceptable. Especially when using a “high” level language. :-) | 2019-05-29 | ||
107 | TYPO | Second bullet point in the “DBC and Test-Driven Development” box: “where as” should be “whereas”. | 2019-05-31 | ||
301 | 289 | SUGGEST | “If you enable a scumbag, you are a scumbag” | 2019-06-12 | No: the difference is that an alcoholic does it to themselves. If you enable a murderer, you're an accessory. |
316 | TYPO | “you this about what must not change, and what must be true.” This should be think | 2019-05-31 | ||
86 | TYPO | Second line of first paragraph: “then” should be “they” | 2019-05-29 | ||
92 | SUGGEST | Fourth paragraph under “Bad Results”, there are two values cited, 4.5 and 0.045. The two numbers appear to be shown in different fonts. I assume you intended them to be using the same font as the name of the variable cited in that sentence. | 2019-05-29 | ||
94 | TYPO | There is an errant equal sign in the last sentence of the page. | 2019-05-29 | ||
186 | TYPO | the error is in this sentence: Concurrency is when the execution of two or more pieces of code act as if they time twice | 2019-05-31 | ||
50 | 34 | SUGGEST | “Eat your vegetables. Get 8 hours sleep. Comment your functions.” —> | 2019-06-12 | |
46 | 30 | SUGGEST | DRY: I think it’s worth expounding just a bit on why duplication is evil—something as wrong as “evil” warrants it, and I wasn’t really sold quickly on why it mattered. Duplicate code:
| 2019-06-12 | We think this is covered |
0 | 0 | DEFER | I’m not sure if it’s in here, but “reading the API code” is a very useful skill in 2019—particularly since many environments (Java, Javascript, Clojure, …) allow you to get at the underlying source. In addition to teaching me interesting things about how to code (sometimes good things), step-debugging the library code helps me at times figure out why things aren’t working in my code. | 2019-10-27 | |
37 | 21 | TYPO | in the first sentence of the “Know Your Audience” section, I | 2019-05-29 | |
168 | 153 | TYPO | in the first sentence of “Putting It All Together”, the word | 2019-05-31 | |
189 | 175 | ERROR | in the UML activity diagram, it appears that the line from | 2019-05-31 | |
199 | 185 | TYPO | On PDF page 199, paper page 185, in the three bullet points describing the messages that the * you’re hungry (sent by the external context) | 2019-05-31 | |
204 | 190 | TYPO | in the paragraph after the bullet points, second sentence, the | 2019-05-31 | |
276 | 263 | TYPO | the first paragraph of the section “And This Drives Design”, near | 2019-05-31 | |
0 | OK | A chapter or even section about personal wellbeing (mental and physical) would be a good addition. | 2019-06-12 | We actually have a full book in this :) | |
134 | TYPO | In the first sentence under “The Law of Demeter” there is a lone closing parenthesis. | 2019-06-12 | ||
61 | TYPO | Let’s look a a few examples where folks have done just that. To Let’s look at a…. | 2019-06-12 | ||
143 | TYPO | “[…]pattern had been used for decades[…]” I think “has” is more grammatically correct here than “had”. | 2019-06-12 | ||
150 | SUGGEST | While “lin” might be a word in whatever version of the macOS dictionary you have, I couldn’t find it on Mojave, at least in any of the Oxford dictionary offerings. Just sayin’ :-) | 2019-06-12 | ~~~ \n$ egrep '^lin$' /usr/share/dict/words \nlin \n~~~ | |
23 | SUGGEST | Section: Be A Listener. In the section be a listener the authors suggest that the reader “Encourage people to talk by asking questions, or have them summarize what you tell them.” in order to help establish a dialog in a conversation. I understand what the authors are attempting to communicate, and in personal experience have found summary a helpful way to convey understanding. My question to the authors is: Could you provide some examples of ways to ask for summary in a conversation or meeting that do not come off as condescending? When I imagine scenarios with a coworker or superior, the question “Could you summarize that back to me?” seems very condescending. While you certainly wouldn’t pose the question in this way, are there any examples of ways to lead others to summarize in respectful ways? | 2019-06-12 | ||
212 | 199 | TYPO | Page 212 in the PDF (page 199 printed on that page), I think “Andy and Dave have both spent hours looking an empty editor buffers” should be changed to “Andy and Dave have both spent hours looking AT empty editor buffers”. | 2019-06-12 | |
165 | SUGGEST | Bullet point at the bottom of the page: “validating a hashed password matches…”. I had to read this a few times to understand it. I think that “Verifying that a hashed password matches…” would be a bit clearer. Or at least including the word “that” in the original sentence. (May be an American- vs Queen’s- English thing) | 2019-06-13 | ||
275 | 263 | TYPO | in teams where no one talks to each OTHER at all, | 2019-06-20 | |
1 | 1 | SUGGEST | In the preface it is mentioned that a seperate document of the tips exist / should exist. can we please have that together with the PDF document etc. as well? | 2019-06-13 | Yes, but it will have to wait until the book goes into production. |
263 | TYPO | the the Pair programming is one the the practices of eXtreme Programming | 2019-06-20 | ||
268 | 256 | TYPO | In the PDF, on page # 268 (says page # 256 at the top ) - under “Requirement Documents are for Planning”, in the second paragraph, “when” should be replaced with “what”, i.e. “They describe when a small portion of the application should do from the perspective of” -> “They describe WHAT a small portion of the application should do from the perspective of” | 2019-06-20 | |
107 | ERROR | The ordering of the “accept_deposit” function definitions within the Deposit module should be reversed: as it is now, the second and third function clauses can never be called. | 2019-06-20 | ||
293 | ERROR | Page doesn’t break on EPub and Mobi versions between footnotes for Chapter 9 and the quote and title for Chapter 10 | 2019-07-10 | ||
8 | OK | Hi, I’m actually reading throught the free sample chapters of this book. I found a technical error on the 8-9 page of chapter the evils of duplication. Here the code is not properly highlighted. This is last code example of page 8. | 2019-07-10 | ||
228 | SUGGEST | Last paragraph: “One way around this is to have different people write tests and the code under test, but we don’t like this[…]” Suggestion: it might be a good time to suggest that pair programming can be useful, with one person creating tests (in consultation with the other, as they tease out the requirements for the code to be written), and the other making the test pass. This can be especially useful when one of the parties does not yet understand the benefits of TDD, or is otherwise in a bit of a rush to implement. The parties can also switch roles during this process. | 2019-07-10 | ||
231 | SUGGEST | proptest/stock.py, take_from_stock method: Maybe you just omitted it to keep the code simple, but there is no guard clause to catch quantity < 0, which could play havoc with your stock levels. :-) | 2019-07-10 | ||
240 | SUGGEST | I know you already included one XKCD reference in this chapter, but I think your Password Antipatterns list entry on composition rules warrants a reference to the XKCD comic on password strength (xkcd.com/936/). | 2019-07-10 | ||
260 | OK | I’m all for thinking outside the box, so the phrasing of Tip 81 disappoints me. But your point about knowing your constraints and assumptions is a good one. May I suggest, “Tip 81: Find the box before you think outside it.” | 2019-07-10 | ||
263 | SUGGEST | A facsimile of Mel Conway’s article, “How do Committees Invent?” [Con68] is also available on Conway’s website, at www.melconway.com/Home/pdf/committees.pdf, so perhaps it would be worth including the link as well as the bibliography entry. | 2019-07-10 | ||
302 | TYPO | In the following sentence, I believe “event” is supposed to be “even”. | 2019-10-27 | ||
170 | TYPO | I believe “feed” should be “feel”. | 2019-10-27 | ||
298 | TYPO | Answer 10: 1TGB should be 1TB | 2019-10-27 | ||
151 | SUGGEST | “…Many languages have something similar: Elm, F#, and Swift have |>.” | 2019-10-27 | ||
127 | TYPO | throw out your code and replace it with something better suited. Making code replaceable will also help with cohesion, “coupling”, and DRY, leading to a better design overall. ->“decoupling” | 2019-10-27 | ||
149 | SUGGEST | in the Note 7 Motif and OpenLook were GUI standards for “X-Windows” based Unix workstations. X-Windows->X-Window without s | 2019-10-27 | ||
140 | ERROR | in the 3nd paragraph, talking about a table of FSM Is it a table generating error?? or this is by design? | 2019-10-28 | I don't see that. I see \n \n> The neat thing about FSMs is that we can express them purely as data. Here’s a table representing our message parser: \n \nfollowed by a blue/cya table. | |
163 | TYPO | a Typo?? We now expose none of the framework API to the clients of our Account class: that “decoupling” is now broken. “coupling”?? | 2019-10-27 | ||
238 | SUGGEST | in Note 18 and i think the version in the book is grayscale version??? is it? | 2020-01-17 | Effectively, the book version is grayscale (although technically it is dither black and white). | |
315 | TYPO | 2 typo i think: in page 315 No, but the index is of concepts, not words….. in page 316 in the index, there is one for “Program Evaluation Review i think the second line is a mistake. | 2020-01-22 | Ovicide: but the index is of concepts, not words..... \n \nPert: indeed it is. fixed in next printing | |
134 | SUGGEST | “Don’t chain method calls” tip should really be expanded out more or be removed. With the revitalization of functional programming, chaining becomes common practice. I assumed the issue before would have been over null pointers, but nulls are blasphemous in FP style coding. Focusing the topic on applications volatility is a red herring for a reason not to chain. Type-safe languages will easily pick up issues at compile time. | 2020-01-17 | The discussion in the book is in the context of OO languages, where chaining means objects are passed around. \n \nIn functional languages, pipelines pass values, divorced from the functions themselves, so the issue is different (although still there). | |
151 | TYPO | PG 151, Footnote 5, typo in name of the language … Isobelle/ML … -> | 2020-01-22 | ||
79 | ERROR | In the `packages.sh` example script: The regex used to find import statements is ` ‘^import ’, which will match lines that begin with `import`. But the sed command will match on `’.import …’. The ’.’ will probably never match and can be omitted. | 2020-01-22 | Good catch | |
8 | ERROR | In the topic “DRY - The Evils of Duplication”, in the subtopic “DRY Violations in Data”, there is a non formatted code. I am not sure whether it was the intention or not. | 2020-01-22 | I don't see this in my copy. Is your's up to date? | |
120 | OK | In update_customer() function, you forgot to add write_customer() function after changing the balance. | 2020-01-22 | Good catch | |
233 | TYPO | It looks like something when wrong when formatting a code block, on page 233 about Ruby The code: puts “Enter a file name to count: ” appears as a formatted code block, however right below it, I see the following text: That section looks like it should have been formatted in some way (Also given away by the triple tilde before and after the section), but was not. | 2020-01-22 | ||
290 | TYPO | In citation [WH82], the last name of author George L. Kelling is misspelled as “Helling” | |||
29 | SUGGEST | Add “Topic 22, Engineering Daybook, on page 100”, to the “Related Sections Include” section, because p.29, paragraph 5 mentions an engineering daybook. | |||
8 | ERROR | Page 8 of the sample for DRY at media.pragprog.com/titles/tpp20/dry.pdf Source code is not formatted under DRY Violations in Data | |||
305 | 289 | TYPO | Tom DeMacro -> Tom DeMarco | ||
299 | SUGGEST | This might be nitpicking, but the introduction of the Gregorian calendar has nothing to do with the Gregorian Reform(ation). Also, the September 1752 issue only applies to Britain and the colonies. |