[Newbies] Cannot change font in Squeak5.2 + updates image

David T. Lewis lewis at mail.msen.com
Mon Oct 8 11:53:25 UTC 2018


On Mon, Oct 08, 2018 at 08:41:19AM +0200, Tobias Pape wrote:
> 
> > On 08.10.2018, at 04:41, David T. Lewis <lewis at mail.msen.com> wrote:
> > 
> > Hello Christian,
> > 
> > Thank you for reporting the problem :-)
> > 
> > I am having trouble reproducing the error. Can you please say how you
> > open the default font dialog? There may be more than one way to do
> > this in Squeak, so I might be looking at the wrong thing.
> > 
> > If I open a World menu by clicking on the background of the display,
> > then open 'appearance...'  -> 'system fonts...' -> 'default text font...'
> > Then I am able to change the default font as expected.
> > 
> 
> Even if you change to Bitstream Vera Sans?
> 

Yes, it still works for me, no DNU. I wonder if it could be related to
a locale setting of some sort? Confused...

Dave


> 
> > Thanks,
> > Dave
> > 
> > 
> > On Sun, Oct 07, 2018 at 10:27:35PM +0200, Christian Kellermann wrote:
> >> Dear list,
> >> 
> >> when I open up the default font dialog and select a different font,
> >> then hit apply I get the following DNU message.  Tobias told me
> >> that should be sent to the list, so here it is. If there's any
> >> further information I can provide, please tell me.  Also there's
> >> nothing I changed intentionally from the defaults wrt fonts, so
> >> while I cannot rule out user error, I have to claim that I didn't
> >> do anything???.
> >> 
> >> This is done on an amd64 OpenBSD 6.4 System with an uptodate
> >> opensmalltalk-vm.
> >> 
> >> Kind regards,
> >> 
> >> Christian
> >> 
> >> 
> >> 7 October 2018 10:24:14.896383 pm
> >> 
> >> VM: unix - Smalltalk
> >> Image: Squeak5.2beta [latest update: #18199]
> >> 
> >> SecurityManager state:
> >> Restricted: false
> >> FileAccess: true
> >> SocketAccess: true
> >> Working Dir /home/ckeen
> >> Trusted Dir /home/ckeen/secure
> >> Untrusted Dir /home/ckeen/My Squeak
> >> 
> >> UndefinedObject(Object)>>doesNotUnderstand: #hasProperty:
> >> 	Receiver: nil
> >> 	Arguments and temporary variables: 
> >> 		aMessage: 	hasProperty: #hasCustomBackground
> >> 		exception: 	MessageNotUnderstood: UndefinedObject>>hasProperty:
> >> 		resumeValue: 	nil
> >> 	Receiver's instance variables: 
> >> nil
> >> 
> >> MorphicProject>>setWorldBackground:
> >> 	Receiver: a MorphicProject (<no name -- garbage?>) in nil
> >> 	Arguments and temporary variables: 
> >> 		force: 	false
> >> 	Receiver's instance variables: 
> >> 		dependents: 	nil
> >> 		world: 	nil
> >> 		uiManager: 	a MorphicUIManager
> >> 		changeSet: 	a ChangeSet named <no name -- garbage?>
> >> 		transcript: 	a TranscriptStream
> >> 		parentProject: 	a MorphicProject (Unnamed1) in a PasteUpMorph(2434915) [world]
> >> 		previousProject: 	a MorphicProject (Unnamed1) in a PasteUpMorph(2434915) [world]...etc...
> >> 		displayDepth: 	32
> >> 		viewSize: 	159 at 97
> >> 		thumbnail: 	Form(159x97x32)
> >> 		nextProject: 	nil
> >> 		projectParameters: 	an IdentityDictionary(#disabledGlobalFlapIDs->a Set('Paintin...etc...
> >> 		version: 	nil
> >> 		urlList: 	nil
> >> 		lastDirectory: 	nil
> >> 		lastSavedAtSeconds: 	nil
> >> 		projectPreferenceFlagDictionary: 	an IdentityDictionary(#enablePortraitMode->fal...etc...
> >> 		resourceManager: 	nil
> >> 		uiProcess: 	nil
> >> 
> >> MorphicProject>>applyUserInterfaceTheme
> >> 	Receiver: a MorphicProject (<no name -- garbage?>) in nil
> >> 	Arguments and temporary variables: 
> >> 
> >> 	Receiver's instance variables: 
> >> 		dependents: 	nil
> >> 		world: 	nil
> >> 		uiManager: 	a MorphicUIManager
> >> 		changeSet: 	a ChangeSet named <no name -- garbage?>
> >> 		transcript: 	a TranscriptStream
> >> 		parentProject: 	a MorphicProject (Unnamed1) in a PasteUpMorph(2434915) [world]
> >> 		previousProject: 	a MorphicProject (Unnamed1) in a PasteUpMorph(2434915) [world]...etc...
> >> 		displayDepth: 	32
> >> 		viewSize: 	159 at 97
> >> 		thumbnail: 	Form(159x97x32)
> >> 		nextProject: 	nil
> >> 		projectParameters: 	an IdentityDictionary(#disabledGlobalFlapIDs->a Set('Paintin...etc...
> >> 		version: 	nil
> >> 		urlList: 	nil
> >> 		lastDirectory: 	nil
> >> 		lastSavedAtSeconds: 	nil
> >> 		projectPreferenceFlagDictionary: 	an IdentityDictionary(#enablePortraitMode->fal...etc...
> >> 		resourceManager: 	nil
> >> 		uiProcess: 	nil
> >> 
> >> [] in [] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 	Receiver: a SqueakTheme 'Squeak'
> >> 	Arguments and temporary variables: 
> >> 		cc: 	a MorphicProject (<no name -- garbage?>) in nil
> >> 		o: 	an IdentitySet(BottomRightGripMorph NetworkTerminalMorph UpdatingTextMorph QuickGuideMorph...etc...
> >> 	Receiver's instance variables: 
> >> 		properties: 	a Dictionary(size 336)
> >> 		name: 	'Squeak'
> >> 		next: 	nil
> >> 		ignoreApply: 	false
> >> 		lastScaleFactor: 	1.0
> >> 
> >> Array(SequenceableCollection)>>do:
> >> 	Receiver: {nil . false . true . #('collection' 'position' 'readLimit') . #('scale' 'translation') . ...etc...
> >> 	Arguments and temporary variables: 
> >> 		aBlock: 	[closure] in [] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 		index: 	992872
> >> 		indexLimiT: 	1234460
> >> 	Receiver's instance variables: 
> >> {nil . false . true . #('collection' 'position' 'readLimit') . #('scale' 'translation') . ...etc...
> >> 
> >> SystemNavigation>>allObjectsDo:
> >> 	Receiver: a SystemNavigation
> >> 	Arguments and temporary variables: 
> >> 		aBlock: 	[closure] in [] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 		object: 	nil
> >> 		lastObject: 	nil
> >> 		allObjects: 	{nil . false . true . #('collection' 'position' 'readLimit') . #('s...etc...
> >> 	Receiver's instance variables: 
> >> 		browserClass: 	Browser
> >> 		hierarchyBrowserClass: 	nil
> >> 		environment: 	Smalltalk
> >> 
> >> [] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 	Receiver: a SqueakTheme 'Squeak'
> >> 	Arguments and temporary variables: 
> >> 		cc: 	an IdentitySet(BottomRightGripMorph NetworkTerminalMorph UpdatingTextMorph QuickGuideMorph...etc...
> >> 	Receiver's instance variables: 
> >> 		properties: 	a Dictionary(size 336)
> >> 		name: 	'Squeak'
> >> 		next: 	nil
> >> 		ignoreApply: 	false
> >> 		lastScaleFactor: 	1.0
> >> 
> >> BlockClosure>>ensure:
> >> 	Receiver: [closure] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 	Arguments and temporary variables: 
> >> 		aBlock: 	[closure] in CursorWithMask(Cursor)>>showWhile:
> >> 		complete: 	nil
> >> 		returnValue: 	nil
> >> 	Receiver's instance variables: 
> >> 		outerContext: 	[] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 		startpc: 	215
> >> 		numArgs: 	0
> >> 
> >> CursorWithMask(Cursor)>>showWhile:
> >> 	Receiver: ((CursorWithMask
> >> 	extent: 16 at 16
> >> 	depth: 1
> >> 	fromArray: #(
> >> 		2r0
> >> 		2r11111111111111000000000...etc...
> >> 	Arguments and temporary variables: 
> >> 		aBlock: 	[closure] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 		oldcursor: 	((CursorWithMask
> >> 	extent: 16 at 16
> >> 	depth: 1
> >> 	fromArray: #(
> >> 		2r0
> >> 		2r1...etc...
> >> 	Receiver's instance variables: 
> >> 		bits: 	a Bitmap of length 16
> >> 		width: 	16
> >> 		height: 	16
> >> 		depth: 	1
> >> 		offset: 	-1@ -1
> >> 		maskForm: 	Form(16x16x1)
> >> 
> >> [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 	Receiver: a SqueakTheme 'Squeak'
> >> 	Arguments and temporary variables: 
> >> 		cc: 	an IdentitySet(BottomRightGripMorph NetworkTerminalMorph UpdatingTextMorph QuickGuideMorph...etc...
> >> 	Receiver's instance variables: 
> >> 		properties: 	a Dictionary(size 336)
> >> 		name: 	'Squeak'
> >> 		next: 	nil
> >> 		ignoreApply: 	false
> >> 		lastScaleFactor: 	1.0
> >> 
> >> IdentitySet(Object)>>in:
> >> 	Receiver: an IdentitySet(BottomRightGripMorph NetworkTerminalMorph UpdatingTextMorph QuickGuideMorph...etc...
> >> 	Arguments and temporary variables: 
> >> 		aBlock: 	[closure] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 	Receiver's instance variables: 
> >> 		tally: 	677
> >> 		array: 	{nil . BottomRightGripMorph . nil . NetworkTerminalMorph . UpdatingTextMorph...etc...
> >> 
> >> [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 	Receiver: a SqueakTheme 'Squeak'
> >> 	Arguments and temporary variables: 
> >> 
> >> 	Receiver's instance variables: 
> >> 		properties: 	a Dictionary(size 336)
> >> 		name: 	'Squeak'
> >> 		next: 	nil
> >> 		ignoreApply: 	false
> >> 		lastScaleFactor: 	1.0
> >> 
> >> SqueakTheme(UserInterfaceTheme)>>fixFontsAndScaleAround:
> >> 	Receiver: a SqueakTheme 'Squeak'
> >> 	Arguments and temporary variables: 
> >> 		block: 	[closure] in SqueakTheme(UserInterfaceTheme)>>apply
> >> 		scale: 	nil
> >> 	Receiver's instance variables: 
> >> 		properties: 	a Dictionary(size 336)
> >> 		name: 	'Squeak'
> >> 		next: 	nil
> >> 		ignoreApply: 	false
> >> 		lastScaleFactor: 	1.0
> >> 
> >> SqueakTheme(UserInterfaceTheme)>>apply
> >> 	Receiver: a SqueakTheme 'Squeak'
> >> 	Arguments and temporary variables: 
> >> 
> >> 	Receiver's instance variables: 
> >> 		properties: 	a Dictionary(size 336)
> >> 		name: 	'Squeak'
> >> 		next: 	nil
> >> 		ignoreApply: 	false
> >> 		lastScaleFactor: 	1.0
> >> 
> >> Preferences class>>setSystemFontTo:
> >> 	Receiver: Preferences
> >> 	Arguments and temporary variables: 
> >> 		aFont: 	TTCFont(BitstreamVeraSans 12 Roman)
> >> 		aStyle: 	a TextStyle BitstreamVeraSans
> >> 		newDefaultStyle: 	a TextStyle BitstreamVeraSans
> >> 	Receiver's instance variables: 
> >> 		superclass: 	Object
> >> 		methodDict: 	a MethodDictionary()
> >> 		format: 	0
> >> 		instanceVariables: 	nil
> >> 		organization: 	('as yet unclassified')
> >> 
> >> 		subclasses: 	{ServicePreferences . PreferencesTestPreferences}
> >> 		name: 	#Preferences
> >> 		classPool: 	a Dictionary(#DesktopColor->(Color r: 0.742 g: 1 b: 0.839) #Parameters...etc...
> >> 		sharedPools: 	nil
> >> 		environment: 	Smalltalk
> >> 		category: 	#'System-Preferences'
> >> 		preferencesDictionary: 	an IdentityDictionary(size 309)
> >> 
> >> FontChooserTool>>apply
> >> 	Receiver: a FontChooserTool
> >> 	Arguments and temporary variables: 
> >> 		font: 	TTCFont(BitstreamVeraSans 12 Roman)
> >> 	Receiver's instance variables: 
> >> 		dependents: 	a DependentsArray(a PluggableSystemWindow<Default font...>(124961) ...etc...
> >> 		title: 	'Default font...'
> >> 		selectedFontIndex: 	11
> >> 		fontList: 	#(#Accuat #Accujen #Accula #Accumon #Accuny #Accusf #Accushi #Accuve ...etc...
> >> 		target: 	Preferences
> >> 		getSelector: 	#standardSystemFont
> >> 		setSelector: 	#setSystemFontTo:
> >> 		pointSize: 	12
> >> 		emphasis: 	0
> >> 		window: 	a PluggableSystemWindow<Default font...>(124961)
> >> 		result: 	nil
> >> 		offerStyleList: 	true
> >> 
> >> PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction
> >> 	Receiver: a PluggableButtonMorphPlus(376770)
> >> 	Arguments and temporary variables: 
> >> 
> >> 	Receiver's instance variables: 
> >> 		bounds: 	252 at 694 corner: 540 at 720
> >> 		owner: 	a PluggablePanelMorph(581106)
> >> 		submorphs: 	#()
> >> 		fullBounds: 	252 at 694 corner: 540 at 720
> >> 		color: 	(Color r: 0.91 g: 0.91 b: 0.91)
> >> 		extension: 	a MorphExtension (2313122) [other:  (minWidth -> 10) (clipSubmorphs ...etc...
> >> 		model: 	a FontChooserTool
> >> 		label: 	'Apply'
> >> 		font: 	a StrikeFont(Bitmap DejaVu Sans 7 10)
> >> 		getStateSelector: 	nil
> >> 		actionSelector: 	#apply
> >> 		getLabelSelector: 	nil
> >> 		getMenuSelector: 	nil
> >> 		shortcutCharacter: 	nil
> >> 		askBeforeChanging: 	false
> >> 		triggerOnMouseDown: 	false
> >> 		offColor: 	(Color r: 0.91 g: 0.91 b: 0.91)
> >> 		onColor: 	(Color r: 0.71 g: 0.71 b: 0.71)
> >> 		feedbackColor: 	(Color r: 0.61 g: 0.61 b: 0.61)
> >> 		showSelectionFeedback: 	nil
> >> 		allButtons: 	{a PluggableButtonMorphPlus(376770) . a PluggableButtonMorphPlus(21...etc...
> >> 		arguments: 	nil
> >> 		argumentsProvider: 	nil
> >> 		argumentsSelector: 	nil
> >> 		style: 	nil
> >> 		hoverColor: 	(Color r: 0.81 g: 0.81 b: 0.81)
> >> 		borderColor: 	Color gray
> >> 		textColor: 	Color black
> >> 		labelOffset: 	0 at 0
> >> 		wantsGradient: 	nil
> >> 		enabled: 	true
> >> 		action: 	nil
> >> 		getColorSelector: 	nil
> >> 		getEnabledSelector: 	nil
> >> 		updateMap: 	nil
> >> 		disabledColor: 	Color transparent
> >> 		disabledTextColor: 	Color aluminum
> >> 
> >> PluggableButtonMorphPlus>>performAction
> >> 	Receiver: a PluggableButtonMorphPlus(376770)
> >> 	Arguments and temporary variables: 
> >> 
> >> 	Receiver's instance variables: 
> >> 		bounds: 	252 at 694 corner: 540 at 720
> >> 		owner: 	a PluggablePanelMorph(581106)
> >> 		submorphs: 	#()
> >> 		fullBounds: 	252 at 694 corner: 540 at 720
> >> 		color: 	(Color r: 0.91 g: 0.91 b: 0.91)
> >> 		extension: 	a MorphExtension (2313122) [other:  (minWidth -> 10) (clipSubmorphs ...etc...
> >> 		model: 	a FontChooserTool
> >> 		label: 	'Apply'
> >> 		font: 	a StrikeFont(Bitmap DejaVu Sans 7 10)
> >> 		getStateSelector: 	nil
> >> 		actionSelector: 	#apply
> >> 		getLabelSelector: 	nil
> >> 		getMenuSelector: 	nil
> >> 		shortcutCharacter: 	nil
> >> 		askBeforeChanging: 	false
> >> 		triggerOnMouseDown: 	false
> >> 		offColor: 	(Color r: 0.91 g: 0.91 b: 0.91)
> >> 		onColor: 	(Color r: 0.71 g: 0.71 b: 0.71)
> >> 		feedbackColor: 	(Color r: 0.61 g: 0.61 b: 0.61)
> >> 		showSelectionFeedback: 	nil
> >> 		allButtons: 	{a PluggableButtonMorphPlus(376770) . a PluggableButtonMorphPlus(21...etc...
> >> 		arguments: 	nil
> >> 		argumentsProvider: 	nil
> >> 		argumentsSelector: 	nil
> >> 		style: 	nil
> >> 		hoverColor: 	(Color r: 0.81 g: 0.81 b: 0.81)
> >> 		borderColor: 	Color gray
> >> 		textColor: 	Color black
> >> 		labelOffset: 	0 at 0
> >> 		wantsGradient: 	nil
> >> 		enabled: 	true
> >> 		action: 	nil
> >> 		getColorSelector: 	nil
> >> 		getEnabledSelector: 	nil
> >> 		updateMap: 	nil
> >> 		disabledColor: 	Color transparent
> >> 		disabledTextColor: 	Color aluminum
> >> 
> >> [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
> >> 	Receiver: a PluggableButtonMorphPlus(376770)
> >> 	Arguments and temporary variables: 
> >> 		evt: 	a PluggableButtonMorphPlus(376770)
> >> 		m: 	[524 at 708 mouseUp ( red ) 29661574]
> >> 	Receiver's instance variables: 
> >> 		bounds: 	252 at 694 corner: 540 at 720
> >> 		owner: 	a PluggablePanelMorph(581106)
> >> 		submorphs: 	#()
> >> 		fullBounds: 	252 at 694 corner: 540 at 720
> >> 		color: 	(Color r: 0.91 g: 0.91 b: 0.91)
> >> 		extension: 	a MorphExtension (2313122) [other:  (minWidth -> 10) (clipSubmorphs ...etc...
> >> 		model: 	a FontChooserTool
> >> 		label: 	'Apply'
> >> 		font: 	a StrikeFont(Bitmap DejaVu Sans 7 10)
> >> 		getStateSelector: 	nil
> >> 		actionSelector: 	#apply
> >> 		getLabelSelector: 	nil
> >> 		getMenuSelector: 	nil
> >> 		shortcutCharacter: 	nil
> >> 		askBeforeChanging: 	false
> >> 		triggerOnMouseDown: 	false
> >> 		offColor: 	(Color r: 0.91 g: 0.91 b: 0.91)
> >> 		onColor: 	(Color r: 0.71 g: 0.71 b: 0.71)
> >> 		feedbackColor: 	(Color r: 0.61 g: 0.61 b: 0.61)
> >> 		showSelectionFeedback: 	nil
> >> 		allButtons: 	{a PluggableButtonMorphPlus(376770) . a PluggableButtonMorphPlus(21...etc...
> >> 		arguments: 	nil
> >> 		argumentsProvider: 	nil
> >> 		argumentsSelector: 	nil
> >> 		style: 	nil
> >> 		hoverColor: 	(Color r: 0.81 g: 0.81 b: 0.81)
> >> 		borderColor: 	Color gray
> >> 		textColor: 	Color black
> >> 		labelOffset: 	0 at 0
> >> 		wantsGradient: 	nil
> >> 		enabled: 	true
> >> 		action: 	nil
> >> 		getColorSelector: 	nil
> >> 		getEnabledSelector: 	nil
> >> 		updateMap: 	nil
> >> 		disabledColor: 	Color transparent
> >> 		disabledTextColor: 	Color aluminum
> >> 
> >> 
> >> --- The full stack ---
> >> UndefinedObject(Object)>>doesNotUnderstand: #hasProperty:
> >> MorphicProject>>setWorldBackground:
> >> MorphicProject>>applyUserInterfaceTheme
> >> [] in [] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> Array(SequenceableCollection)>>do:
> >> SystemNavigation>>allObjectsDo:
> >> [] in [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> BlockClosure>>ensure:
> >> CursorWithMask(Cursor)>>showWhile:
> >> [] in [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> IdentitySet(Object)>>in:
> >> [] in SqueakTheme(UserInterfaceTheme)>>apply
> >> SqueakTheme(UserInterfaceTheme)>>fixFontsAndScaleAround:
> >> SqueakTheme(UserInterfaceTheme)>>apply
> >> Preferences class>>setSystemFontTo:
> >> FontChooserTool>>apply
> >> PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction
> >> PluggableButtonMorphPlus>>performAction
> >> [] in PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
> >> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
> >> Array(SequenceableCollection)>>do:
> >> PluggableButtonMorphPlus(PluggableButtonMorph)>>mouseUp:
> >> PluggableButtonMorphPlus(Morph)>>handleMouseUp:
> >> MouseButtonEvent>>sentTo:
> >> PluggableButtonMorphPlus(Morph)>>handleEvent:
> >> PluggableButtonMorphPlus(Morph)>>handleFocusEvent:
> >> MorphicEventDispatcher>>doHandlingForFocusEvent:with:
> >> MorphicEventDispatcher>>dispatchFocusEvent:with:
> >> PluggableButtonMorphPlus(Morph)>>processFocusEvent:using:
> >> PluggableButtonMorphPlus(Morph)>>processFocusEvent:
> >> [] in [] in [] in HandMorph>>sendFocusEvent:to:clear:
> >> BlockClosure>>ensure:
> >> MouseButtonEvent(MorphicEvent)>>becomeActiveDuring:
> >> [] in [] in HandMorph>>sendFocusEvent:to:clear:
> >> BlockClosure>>ensure:
> >> HandMorph>>becomeActiveDuring:
> >> [] in HandMorph>>sendFocusEvent:to:clear:
> >> BlockClosure>>ensure:
> >> PasteUpMorph>>becomeActiveDuring:
> >> HandMorph>>sendFocusEvent:to:clear:
> >> HandMorph>>sendEvent:focus:clear:
> >> HandMorph>>sendMouseEvent:
> >> HandMorph>>handleEvent:
> >> HandMorph>>processEvents
> >> [] in WorldState>>doOneCycleNowFor:
> >> Array(SequenceableCollection)>>do:
> >> WorldState>>handsDo:
> >> WorldState>>doOneCycleNowFor:
> >> WorldState>>doOneCycleFor:
> >> PasteUpMorph>>doOneCycle
> >> [] in MorphicProject>>spawnNewProcess
> >> [] in BlockClosure>>newProcess
> >> 
> >> 
> >> -- 
> >> May you be peaceful, may you live in safety, may you be free from
> >> suffering, and may you live with ease.
> > 
> > 
> > 
> >> _______________________________________________
> >> Beginners mailing list
> >> Beginners at lists.squeakfoundation.org
> >> http://lists.squeakfoundation.org/mailman/listinfo/beginners
> > 
> > _______________________________________________
> > Beginners mailing list
> > Beginners at lists.squeakfoundation.org
> > http://lists.squeakfoundation.org/mailman/listinfo/beginners
> 
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners


More information about the Beginners mailing list