An introductory book about the Squeak/Smalltalk programming system, guiding students and developers through the environment, language, tools, and the Morphic framework by means of a series of examples and exercises.
"Clicking on one of the yellow exclamation marks sends a message to the Morph which then responds appropriately." As can be seen in the picture below there are no yellow exclamation marks as far as I can see. And I think it would be helpful to give a starting explanation into how to switch categories to something like "fill & border" to have more fun attributes to play with.
R2. Page 222
"So, for example, Color tan asMorph returns a StringMorph labeled with the result of Color tan printString. Let’s change this so that we get a colored rectangle instead.
Open a browser on the Color class and add the following method to it:"
In the current image the representation as a colored rectangle is already implemented in the standard Color class.
R3. Page 224
"From the world menu select “objects” and click on the button labeled “Graphics”.
"objects" cannot be found on the first level anymore but under "old desktop menu..."
Style / Formatting:
S1. Page 223
if down is printed in italic, right should also be printed in italics
S2. Page 223
two points is one to many :D
S3. Missing points after figure descriptions.
Class 11.2
Class 11.20
Class 11.24
Class 11.27
S4. Method information in figure descriptions
when named directly, as far as I can see, every method but horizontalBar and verticalBar have been identified with their Class in front like : SBECrossMorph>>drawOn:
S5. Space before return value
as the space before return value is used as a convention in the other examples those few with out it don't fit
Method 11.12
Method 11.14
Methods 11.31
S6. Exercises vs. only code descriptions
not really a problem but it feels kind of inconsistent
some provided code snippets come with a request to define / update etc. them oneself (identified by a squeak cat head before them). (E.g. Method 11.4) Others come with an description and saying how things can be done. (E.g. Method 11.5). I suppose the ones without an exercise aren't really necessary to follow the tutorial? But as this chapter feels like a - try every example - tutorial this for me personally just appeared a bit inconsistent.
S7. Copy problems
When copying the code snippet on page 232 (11.17) what appears like a single dash turns out to be two dashes, thus leading to debugging in Squeak instead of just being able to run the code
"keyValue = $-- asciiValue"
S8. Example abstraction levels
On page 244 Figure 11.6 provides an abstract explanation giving the method that one can use to get an Input Dialog, Figure 11.7 on the other hand provides a code sample which can be used directly.
S9. Parameter Names
Method 11.23 is the only place where an incoming event parameter is named ev and not anEvent
S10. Not using accessor methods
In Method 11.29 instance variables are set directly and not via accessor methods, which especially for faces: and dieValue: is weird, because we define those methods later on (and they do sensible sanity checks)
General:
G1. yellow / blue / red clicking
I am not sure if I might be touching on some treasured conventions here, but I think readability for beginners would be improved by referring to yellow, red and blue clicking by left, right and "option" clicking.
not everyone has a mouse like that :D
Content Clarity:
C1.Page 222
"You can create a morph to represent any object, although how good a representation you get depends on the object!" -
Mhm, here I was wondering if this statement meant the inherent characteristics of the object or the asMorph implementation of the class of said object.
C2.Page 223
"The position method returns a Point that describes the location of the morph’s upper left corner (or the upper left corner of its bounding box). "
the or is kind of confusing because it might imply two alternatives when position actually always returns the upper left corner of the bounding box of a Morph. Maybe just say it returns the upper left corner of its bounding box to be precise?
C3. Chapter summary
"You can compose morphs by embedding one onto another, either by drag and drop or by sending the message addMorph:."
Would rather be something like: "either by using the 'embed into' option, implementing an embedding drag and drop behaviour or by sending the message addMorph:"
C4. Chapter summary2
a last bullet point about Canvases would be nice I think :)
I am proofreading Chapter 11: Morphic and am using the SWA20/21 image as my test image. (https://www.hpi.uni-potsdam.de/hirschfeld/artefacts/lecture-image/SWA2021.zip)
Reproducibility of examples:
R1. Page 222
R2. Page 222
R3. Page 224
Style / Formatting:
General:
Content Clarity: