[Cuis-dev] About complexity in the face of the user

Hilaire Fernandes hfern at free.fr
Sun Mar 17 03:33:50 PDT 2024

Hi folks,

Some thinking related to a recurring issue I have with end-user edited 
Smalltalk sketch script, particularly when debugging.

For the record, in DrGeo a user can design interactive geometric sketch 
with mouse and clic operation. There is also the possibility for the 
user to design such script with programming instruction. It is a way of 
doing part of the DrGeo genome since its early development.

When DrGeo was coded in C++, scripts were written in Scheme, an Italian 
teacher wrote some contents about it[1]. When porting to Squeak, I was 
hoping to describe script with Etoys, to be honest it is the main reason 
I ported from C++ to Squeak then. So I started to add Etoys tile to 
control DrGeo points, but I did not have the time to go far enough[2], 
then Etoys long term visibility was in question.

*At some point we should have a tile framework for Cuis for general use 
in end user scripting.

While tile are nice, it has a tendency to not be very compact, but it 
could be fixed with tile representing more high level concept.

Anyway, when editing script, at some point the user has to deal with 
complexity when debugging its script. It is true with Scheme and 
Smalltalk, with C++ version of Squeak, Etoys, Pharo and Cuis version of 

Adele Goldberg, at her June 2022 talk for Camp Smalltalk 50th 
Anniversary, insisted a lot, at several moment, in how a system with a 
perspective of educating should be able to present meaningful information:

    /*The Simulation Kit*
    An important point made by our teaching experience is that, because
    we expect the learner to
    extend a model through programming new methods, not just by
    parameter modification, it is
    critical that some outcome that the learner mistakenly creates does
    not get explained using
    vocabulary outside of what has been already been introduced.
    The obvious example from the Smalltalk system itself is its class
    browser and the debugger.
    *Imagine you are creating a weather forecasting model and an error
    occurs in execution. But
    instead of seeing the error at the level of weather activity and the
    buttons and dials of the weather
    station, you see a bug in how text is displayed on the screen,
    thereby introducing an underlying
    part of the modeling environment that you have not yet learned about
    (and maybe do not want to
    learn about!). Certainly, dealing with an error outside of a kit is
    a distraction, potentially
    defocusing the learner’s modeling intentions.*/

You can read her full presentation "Smalltalk research through the eyes 
of an educational mission"[3].  Her speeches and writing are always 
pleasant to read with actionable ideas.

What Adele describes are the challenges I am facing in DrGeo end user 
scripting. The extended model is the interactive geometry model of Dr. Geo.

Below in latest stable release of DrGeo (23.12), the user wrote a one 
line script causing an obvious error. From the end user perspective, the 
situation is not great, the debugger pop-up in the classical distinct 
debugger window. So far I did  not find how to have it integrated in the 
Smalltalk sketch editor but the context of the bug is not that bad, it 
is one line off:

debug 23.12

For the next release of DrGeo (now in Cuis6.3), I want to improve the 
debugger experience by integrating the debugger window in the sketch 
editor. But so far I fail to find how to do that, and the experience is 
even worst, as there is error after error. If you want to help contact me:

drgeo 24.xx

What I am doing now to try to capture the window is:

	self  stopSketch.
	codeView  scroller  acceptContents.
	self  switchToPauseButton.
	DrGeoSketch  when:  #newSmalltalkSketch  send:  #compiledSketch:  to:  self.
	sketchProcess  :=  [|  t  |
		t  :=  DateAndTime  now.
		[Compiler  evaluate:  model]
			on:  Exception  
			do:  [debugger  :=  Debugger  
					openMinimalDebuggingProcess:  sketchProcess  
					context:  sketchProcess  suspendedContext  .
				self  plugDebugger  ].
		" When we get there, sketch has been entirely executed, switch back to 
play button "
		self  switchToPlayButton.
		Transcript  show:  DateAndTime  now  -  t  ;cr]newProcess.
		priority:  Processor  userSchedulingPriority  ;
		name:  '[DrGeo] Smalltalk Sketch execution';

Thanks to take the time to read that far!

[2] https://inria.hal.science/inria-00531636v1
[3] https://drive.google.com/file/d/15vUiDzClBMAN8931bWe7O9oYHtNMzoQG/view

GNU Dr. Geo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20240317/a4399ffe/attachment-0001.htm>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: drgeo23.12-debug.png
Type: image/png
Size: 23912 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20240317/a4399ffe/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: drgeo24.xx-debug.png
Type: image/png
Size: 35308 bytes
Desc: not available
URL: <http://lists.cuis.st/mailman/archives/cuis-dev/attachments/20240317/a4399ffe/attachment-0003.png>

More information about the Cuis-dev mailing list