From serge.stinckwich at doesnotunderstand.org Tue Oct 7 16:00:22 2008 From: serge.stinckwich at doesnotunderstand.org (Serge Stinckwich) Date: Tue, 7 Oct 2008 16:00:22 +0200 Subject: [sbe-discussion] SBE-fr now indexed by Google Books Message-ID: <1ea823c30810070700q46dca41elcc713c57f788e66e@mail.gmail.com> Here : http://books.google.fr/books?id=FKj3C0NSZuoC&printsec=frontcover&sig=ACfU3U0cINw_1TjcG4S8BVKBvKtH3kw1Eg -- Serge Stinckwich Smalltalkers do: [:it | All with: Class, (And love: it)] http://blog.doesnotunderstand.org/ From bakotaco at gmail.com Sat Oct 11 03:41:20 2008 From: bakotaco at gmail.com (Bas Kok) Date: Sat, 11 Oct 2008 03:41:20 +0200 Subject: [sbe-discussion] some feedback for ch 1 and 2 of SBE Message-ID: <88872ed0810101841y3e535b0y4ff1d938fff500a4@mail.gmail.com> Hi! I am currently working my way through the SBE book and really like it so far! It's well written and fun to follow. I just finally managed to finish chapter two. I had some issues getting the Quinto game up and running. With the help of the guys over at #squeak I managed to determine what went wrong: - I copied and pasted most of the code from the pdf right into squeak - when running the game a click on a cell did not result in any cells to toggle - also no errors occured, so it didn't seems a software bug What happened was that: while copy and pasting the following line of code from "SBEGame >> toggleNeighboursOfCellAt": ifTrue: [(cells at: i - 1 at: j) toggleState]. it got pasted into squeak as: ifTrue: [(cells at: i - - 1 at: j) toggleState]. Which is still syntactically correct but inverses the effect of the line below: ifTrue: [(cells at: i + 1 at: j) toggleState]. Which explains the non toggling cells mistery. I think it would be good to put a warning somewhere in the text about copy and pasting code from the pdf directly! This might be a problem for other beginning smalltalkers as well, at this stage it sure cost me quite some time to figure out how to debug this. Some other notes: * at the end of 1.4 (p.12) it says: "You never tell an object what to do ? instead you politely ask it to do something by sending it a message." This is a bit confusing I believe as it seems the terminology is being mixed up. For instance alec sharp writes: "Procedural code gets information then makes decisions. Object-oriented code tells objects to do things. ". Also see for instance http://www.pragprog.com/articles/tell-dont-ask * in 1.10 (p.23) it says: "Open a browser on the class StringTest, and select an appropriate protocol for our method, in this case tests - converting , as shown in Figure 1.20.". Figure 1.20 however shows "testing-converting" selected instead of "tests-converting". This confused me. * 1.10 (p.23) it says: " So select accept (s) from the yellow-button menu in the bottom pane, or just type CMD?s". This is the first time I saved something in squeak and subsequently it asked me for my initials. You might want to explain what these are, and perhaps even point to things like the squeakmap. * general note: one thing I found confusing at first were the dots at the end of statements, especially because they are not used for the last statement of a method in the examples. I once missed one while typing the code from chapter 2 and immediately ran into a messageNotUnderstood, which I did not understand yet at that time. I will try and take notes while i'm going through the rest of the chapters as well if that is appreciated. Thanks for writing such a great book. Cheers, -- Bas From stephane.ducasse at free.fr Sat Oct 11 08:28:59 2008 From: stephane.ducasse at free.fr (stephane ducasse) Date: Sat, 11 Oct 2008 08:28:59 +0200 Subject: [sbe-discussion] Re: some feedback for ch 1 and 2 of SBE In-Reply-To: <88872ed0810101841y3e535b0y4ff1d938fff500a4@mail.gmail.com> References: <88872ed0810101841y3e535b0y4ff1d938fff500a4@mail.gmail.com> Message-ID: <0B46528F-B6C1-4918-8FA2-0F898020404E@free.fr> Thanks > I am currently working my way through the SBE book and really like it > so far! It's well written and fun to follow. > > I just finally managed to finish chapter two. I had some issues > getting the Quinto game up and running. With the help of the guys over > at #squeak I managed to determine what went wrong: > > - I copied and pasted most of the code from the pdf right into squeak > - when running the game a click on a cell did not result in any > cells to toggle > - also no errors occured, so it didn't seems a software bug > > What happened was that: while copy and pasting the following line of > code from "SBEGame >> toggleNeighboursOfCellAt": > > ifTrue: [(cells at: i - 1 at: j) toggleState]. > > it got pasted into squeak as: > > ifTrue: [(cells at: i - - 1 at: j) toggleState]. > > Which is still syntactically correct but inverses the effect of the > line below: > > ifTrue: [(cells at: i + 1 at: j) toggleState]. > > Which explains the non toggling cells mistery. I think it would be > good to put a warning somewhere in the text about copy and pasting > code from the pdf directly! This might be a problem for other > beginning smalltalkers as well, at this stage it sure cost me quite > some time to figure out how to debug this. > > Some other notes: > > * at the end of 1.4 (p.12) it says: "You never tell an object what to > do ? instead you politely ask it to do something by sending it a > message." This is a bit confusing I believe as it seems the > terminology is being mixed up. For instance alec sharp writes: > "Procedural code gets information then makes decisions. > Object-oriented code tells objects to do things. ". Also see for > instance http://www.pragprog.com/articles/tell-dont-ask indeed the pattern is really "tell don't ask". so the sentence "never tell...." is wrong to me. > > > * in 1.10 (p.23) it says: "Open a browser on the class StringTest, and > select an appropriate protocol for > our method, in this case tests - converting , as shown in Figure > 1.20.". Figure 1.20 however shows "testing-converting" selected > instead of "tests-converting". This confused me. > > * 1.10 (p.23) it says: " So select accept (s) from the yellow-button > menu in the bottom pane, or just type CMD?s". This is the first time I > saved something in squeak and subsequently it asked me for my > initials. You might want to explain what these are, and perhaps even > point to things like the squeakmap. > > * general note: one thing I found confusing at first were the dots at > the end of statements, especially because they are not used for the > last statement of a method in the examples. I once missed one while > typing the code from chapter 2 and immediately ran into a > messageNotUnderstood, which I did not understand yet at that time. > > I will try and take notes while i'm going through the rest of the > chapters as well if that is appreciated. Thanks for writing such a > great book. > > Cheers, > -- > Bas > > _______________________________________________ > Sbe-discussion mailing list > Sbe-discussion at iam.unibe.ch > https://www.iam.unibe.ch/mailman/listinfo/sbe-discussion > From mark at ociweb.com Tue Oct 14 03:45:46 2008 From: mark at ociweb.com (Mark Volkmann) Date: Mon, 13 Oct 2008 20:45:46 -0500 Subject: [sbe-discussion] reporting minor typos Message-ID: Is this the place to report minor typos in the book? BTW, I love this book! It's definitely one of the best books I've read in years. --- Mark Volkmann -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 5706 bytes Desc: not available Url : http://www.iam.unibe.ch/pipermail/sbe-discussion/attachments/20081014/9d054e01/smime.bin From tapplek at gmail.com Tue Oct 14 05:00:49 2008 From: tapplek at gmail.com (Matthew Fulmer) Date: Mon, 13 Oct 2008 20:00:49 -0700 Subject: [sbe-discussion] Re: reporting minor typos In-Reply-To: References: Message-ID: <20081014030049.GP5308@tacobell> On Mon, Oct 13, 2008 at 08:45:46PM -0500, Mark Volkmann wrote: > Is this the place to report minor typos in the book? Yes, it is. Report bugs about the book here -- Matthew Fulmer -- http://mtfulmer.wordpress.com/ From mark at ociweb.com Tue Oct 14 18:19:31 2008 From: mark at ociweb.com (Mark Volkmann) Date: Tue, 14 Oct 2008 11:19:31 -0500 Subject: [sbe-discussion] book feedback Message-ID: <0F721954-C2C1-4C68-87CB-0F4F22637581@ociweb.com> I love this book! I bought a printed copy from LuLu and am very happy with the quality of the printing and the binding. I've read up to page 162 so far. Here is some feedback. section 1.4 (page 11) - "can resize windows either by dragging one of the corners ..." In the image I'm using (squeak-dev), you can also resize windows by dragging edges. section 1.10 (page 22) - Method 1.1 The parentheses aren't needed. section 1.11 (page 27) - "The most important of these are ..." I suggest adding "browse it (CMD-b)". section 2.7 (page 41) - "and then answers the new value." It's not clear to me why setter methods should do this. I suggest adding an explanation. section 3.1 (page 54) This briefly discusses "primitives". I'd like to see a little more detail. Are these always implemented in C? Are these always things that just can't be implemented in Smalltalk? Can there every be a situation where I'd want to call them directly from my code? section 5.3 (page 84) This gives three examples of protocol names. I'd like to see more. section 5.3 (page 87) - method 5.3 This includes the code "count := count + 1" which raises a couple of questions for me. Why isn't there a ++ or increment method? Are Integer objects immutable? section 5.6 (page 97) - "Return a value only when you intend for the sender to use the value." What if you just want to exit a method early? Shouldn't "^self" be used for that even though the caller probably won't use the return value? section 5.7 (page 103) - "Sometimes we need to share some data amongst all the instance of a class and the class itself." I suggest adding to the end of this "and subclasses". section 6.2 (page 114) - Change "focussed" to "focused"? It looks like both are acceptable, but the latter is preferred. This occurs somewhere else as well, but I can't find it now. page 122 on "Refactoring" - The OmniBrowser doesn't have the "R" button. page 123 on "Browsing programmatically" - "a number of utility method" should be "a number of utility methods". page 124 - There are three SystemNavigation code examples. Why do the first and third end with ": ."? Why do any of them end with a period? section 6.5 (page 138) - "Incidentally, if you want to open an full inspector ..." Change "an" to "a". section 6.9 (page 148) - "general-purpose tool from browsing ..." Change "from" to "for". section 6.9 (page 150) - "each of the top four panes ..." Change "four" to "three". --- Mark Volkmann -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 5706 bytes Desc: not available Url : http://www.iam.unibe.ch/pipermail/sbe-discussion/attachments/20081014/647c4ef6/smime-0001.bin From stephane.ducasse at free.fr Wed Oct 15 22:54:39 2008 From: stephane.ducasse at free.fr (stephane ducasse) Date: Wed, 15 Oct 2008 22:54:39 +0200 Subject: [sbe-discussion] Re: book feedback In-Reply-To: <0F721954-C2C1-4C68-87CB-0F4F22637581@ociweb.com> References: <0F721954-C2C1-4C68-87CB-0F4F22637581@ociweb.com> Message-ID: <91318FE0-51CE-43B5-9044-165209FFC17C@free.fr> Thanks a lot. Stef On Oct 14, 2008, at 6:19 PM, Mark Volkmann wrote: > I love this book! I bought a printed copy from LuLu and am very > happy with the quality of the printing and the binding. > > I've read up to page 162 so far. Here is some feedback. > > section 1.4 (page 11) - "can resize windows either by dragging one > of the corners ..." > In the image I'm using (squeak-dev), you can also resize windows by > dragging edges. > > section 1.10 (page 22) - Method 1.1 > The parentheses aren't needed. > > section 1.11 (page 27) - "The most important of these are ..." > I suggest adding "browse it (CMD-b)". > > section 2.7 (page 41) - "and then answers the new value." > It's not clear to me why setter methods should do this. I suggest > adding an explanation. > > section 3.1 (page 54) > This briefly discusses "primitives". I'd like to see a little more > detail. Are these always implemented in C? Are these always things > that just can't be implemented in Smalltalk? Can there every be a > situation where I'd want to call them directly from my code? > > section 5.3 (page 84) > This gives three examples of protocol names. I'd like to see more. > > section 5.3 (page 87) - method 5.3 > This includes the code "count := count + 1" which raises a couple of > questions for me. > Why isn't there a ++ or increment method? > Are Integer objects immutable? > > section 5.6 (page 97) - "Return a value only when you intend for the > sender to use the value." > What if you just want to exit a method early? Shouldn't "^self" be > used for that even though the caller probably won't use the return > value? > > section 5.7 (page 103) - "Sometimes we need to share some data > amongst all the instance of a class and the class itself." > I suggest adding to the end of this "and subclasses". > > section 6.2 (page 114) - Change "focussed" to "focused"? > It looks like both are acceptable, but the latter is preferred. > This occurs somewhere else as well, but I can't find it now. > > page 122 on "Refactoring" - The OmniBrowser doesn't have the "R" > button. > > page 123 on "Browsing programmatically" - "a number of utility method" > should be "a number of utility methods". > > page 124 - There are three SystemNavigation code examples. > Why do the first and third end with ": ."? > Why do any of them end with a period? > > section 6.5 (page 138) - "Incidentally, if you want to open an full > inspector ..." > Change "an" to "a". > > section 6.9 (page 148) - "general-purpose tool from browsing ..." > Change "from" to "for". > > section 6.9 (page 150) - "each of the top four panes ..." > Change "four" to "three". > > --- > Mark Volkmann > > > > > _______________________________________________ > Sbe-discussion mailing list > Sbe-discussion at iam.unibe.ch > https://www.iam.unibe.ch/mailman/listinfo/sbe-discussion From mark at ociweb.com Sun Oct 19 20:56:10 2008 From: mark at ociweb.com (Mark Volkmann) Date: Sun, 19 Oct 2008 13:56:10 -0500 Subject: [sbe-discussion] book feedback - part 2 Message-ID: I finished reading the book and want to provide feedback on pages 163 to the end. Refer to my earlier post for feedback on the first 162 pages. section 8.1 (page 176) - "The default implementation simply write the class name ..." should be "The default implementation simply writes the class name ..." section 8.1 (page 177) - discussion about "self-evaluating representation" It's not clear why I should care whether an object is self-evaluating. How is it relevant to the code I'm writing? section 8.1 (page 182) - In the section on "Debugging", consider adding a 1 footnote reference to the first sentence of the second paragraph. This same paragraph says "Otherwise an exception will be raised." I suggestion specifying which kind is raised. section 9.5 (page 210) - "When the method do: is sent ..." should be "When the message do: is sent ..." section 10.3 (page 221) - "until it finds an element equals to its parameter" should be "until it finds an element equal to its parameter" section 10.3 (page 224) - In the code example in the "About Concatenation" section "(ms)" is used in one place and "(milliseconds)" is used in another. Make it consistent. section 10.4 (page 228) - What's the difference between fileNamed: and oldFileNamed:? The description of oldFileNamed: says "If the file already exists ..." implying that it doesn't have to exist. section 10.4 (page 229) - Explain what kind of file is represented by a file with a .pgm extension. section 11.1 (page 232) - "s openViewerForArgument" What argument? section 11.5 (page 239) - Change "mouseUp" to "mouseUp:". section 11.5 (page 240) - What's the purpose of drawOn:? Is it to repaint a morph? section 11.7 (page 245) - Explain the purpose of addDeferredUIMessage:. section 11.8 (page 249) - "to show quickly all the faces" should be "to quickly show all the faces". chapter 11 - general comment - Why were morphs for basic things like labels, text fields, buttons, checkboxes and lists not even mentioned? This omission makes Morphic seem like a toy instead of something to be used for building UIs for typical applications. section 12.5 (page 262 and 265) - Add ProtoObject to figure 12.7, 12.8, 12.9 and 12.10. section 12.5 (page 263) - "(i.e., representation and number)" Should "number" be replaced by "count"? FAQ 9 - Clarify that "new methods" means methods that are not only defined by a superclass (can be methods only defined in the current class or methods that the current class overrides). FAQ 16 - What does "chf" stand for? Once again I'll say I think this is a great book! Perhaps the biggest omission is that it doesn't discuss what to do after you're written an application. How to you make it available to users that aren't Squeak developers? How do users launch it? --- Mark Volkmann -------------- next part -------------- A non-text attachment was scrubbed... Name: smime.p7s Type: application/pkcs7-signature Size: 5706 bytes Desc: not available Url : http://www.iam.unibe.ch/pipermail/sbe-discussion/attachments/20081019/9c41a14a/smime.bin From oscar at iam.unibe.ch Mon Oct 20 14:39:02 2008 From: oscar at iam.unibe.ch (Oscar Nierstrasz) Date: Mon, 20 Oct 2008 14:39:02 +0200 Subject: [sbe-discussion] Re: book feedback - part 2 In-Reply-To: References: Message-ID: <9D2062A9-DCA5-4E1F-9559-263AC9A2D6FF@iam.unibe.ch> Thanks for the comments, Mark! We really appreciate the effort you put into improving the text. It may be a little while before we get around to fixing things, but we will try to get to it as soon as someone can spare the time. Cheers, - on On Oct 19, 2008, at 20:56, Mark Volkmann wrote: > I finished reading the book and want to provide feedback on pages > 163 to the end. Refer to my earlier post for feedback on the first > 162 pages.