Hi,
wiki.squeak.org/squeak is an excellent resource for Squeakers. However, it's interface is a bit dated and could do with some improvements. I hope I am not burdening maintainers with my site suggestions.
* search could be a text field instead of a button. This will ease the interface for beginners * The search results prints lots of text (including the IP address of the machine from which the author last edited the text!). Printing the page title and modification timestamp (ISO) should be sufficient.
VM Command Line Options, 2006-11-12 9:12 pm
* Is it possible to tag pages (say with #obsolete or #beginner #developer). Pages with #obsolete tags could be listed at end of the search results making them more relevant.
A ton of thanks to the team that keeps the wiki running.
Regards .. Subbu
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers. However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
Tim,
And all Squeakers who take the time to update Wiki pages - Thank You!
When you are investing time in this valuable effort, please keep in mind the audience of beginners and (#('CS' 'CP' 'CIS' 'MIS' 'EE' 'ETC') includes: myDegree) not when writing things up. Since I have a very small amount of formal education in IT, I have been updating pages lately and trying to rewrite or add language that makes more sense to me. Using MorphicModel http://wiki.squeak.org/squeak/2338 as an example, when i encountered the word "sensitize", I had no idea what it meant, but a bit of web poking surfaced some information that made some sense to me and I added it to the page(sans footnote). Part of what I added included another term, callback, which I don't understand and is not defined in the Swiki. The word "callback" is referenced in 20+ pages, but never defined.
I also have trouble with "used to represent structures with state and behavior as well as graphical structure" and "The tree is constructed concretely by adding its constituent morphs to a world." I think, I may get the meaning of these phrases, but I am not sure:
Is a structure, in the context of a MorphicModel, *an instance of the class to which one or more submorphs have been added and (optionally) sensitized*? Are constituent morphs added to a world (World?) or and instance of MorphModel or perhaps as an instance of PastUpMorph?
Now back out of this Rabbit Hole and return to the one where I am trying to update my project which has gotten badly out of sync from working on too many OSes and Images :-(
-jrm
On Thu, Apr 5, 2018 at 10:47 PM, tim Rowledge tim@rowledge.org wrote:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers. However,
it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
I just read the MorphicModel page after stumbling about the class on some occasions during the past year. I still do not understand when I should, as a developer of some application, consider to use a MorphicModel over "plain" Morphs, for example. All the pluggable stuff made with MorphicToolBuilder are MorphicModels, but I did not grasp the added value MorphicModel supplies here. What I did notice are some menu items revolving around prototypes (something like 'Be the prototype for this model'), which sounded interesting, but got no mentioning on the Swiki page.
John-Reed Maffeo jrmaffeo@gmail.com schrieb am Fr., 6. Apr. 2018, 01:19:
MorphicModel http://wiki.squeak.org/squeak/2338
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles https://en.wikipedia.org/wiki/Labours_of_Hercules#Fifth_labour:_Augean_stabl...
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers. However,
it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
https://en.wikipedia.org/wiki/Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers.
However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
On 4/6/18, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
Nicolas,
Do you have a particular idea how an implemenation plan/ outline of tasks to do for 'rerouting the rivers for the water to be used for cleaning' would look like?
--Hannes
https://en.wikipedia.org/wiki/Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers.
However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
2018-04-06 11:11 GMT+02:00 H. Hirzel hannes.hirzel@gmail.com:
On 4/6/18, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
Nicolas,
Do you have a particular idea how an implemenation plan/ outline of tasks to do for 'rerouting the rivers for the water to be used for cleaning' would look like?
--Hannes
Hi Hannes,
isn't it precisely what Tim (and you) are trying to achieve thru this call to goodwill?
https://en.wikipedia.org/wiki/Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers.
However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are
interesting)
but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared
to
consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages
that
link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and
editing
text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet
that
spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
On 4/6/18, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:11 GMT+02:00 H. Hirzel hannes.hirzel@gmail.com:
On 4/6/18, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
Nicolas,
Do you have a particular idea how an implemenation plan/ outline of tasks to do for 'rerouting the rivers for the water to be used for cleaning' would look like?
--Hannes
Hi Hannes,
isn't it precisely what Tim (and you) are trying to achieve thru this call to goodwill?
Hello Nicolas
Yes. But that is a step-by-step approach, doing small increments over the months which do not cost much time.
But I thought as you were writing about re-routing rivers (implying that the water of rivers do the washing) that you have ideas about a automatic or semi-automatic procedures to do so....
--Hannes
https://en.wikipedia.org/wiki/Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers.
However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are
interesting)
but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared
to
consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages
that
link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and
editing
text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet
that
spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
...
elements of such a script based approach
Download the whole wiki and do (snapshot)
- Analysing all titles with a script, - getting the last modification date, - gathering all the headings on each page, - Finding out about empty pages. - produce reports on things to do on this - build a glossary of terms - build scripts to add tags - derive a graph of the links of all pages and identify problems in this graph.
i.e. implement in Smalltalk different bots such as the ones at work on Wikipedia.
On 4/6/18, H. Hirzel hannes.hirzel@gmail.com wrote:
On 4/6/18, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:11 GMT+02:00 H. Hirzel hannes.hirzel@gmail.com:
On 4/6/18, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
Nicolas,
Do you have a particular idea how an implemenation plan/ outline of tasks to do for 'rerouting the rivers for the water to be used for cleaning' would look like?
--Hannes
Hi Hannes,
isn't it precisely what Tim (and you) are trying to achieve thru this call to goodwill?
Hello Nicolas
Yes. But that is a step-by-step approach, doing small increments over the months which do not cost much time.
But I thought as you were writing about re-routing rivers (implying that the water of rivers do the washing) that you have ideas about a automatic or semi-automatic procedures to do so....
--Hannes
https://en.wikipedia.org/wiki/Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
> On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com > wrote: > > wiki.squeak.org/squeak is an excellent resource for Squeakers. However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are
interesting)
but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared
to
consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages
that
link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/3480 - lots of very out of date examples there). Even simple things like organising into proper lists and
editing
text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet
that
spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in? I've tried a gazillion examples I found and it just doesn't work at all... I'm on Windows 10 if that helps. I get all kinds of errors : stdout is not open or "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" or missing ', or variable out of scope (WHAT?!?!?)... In other words, I'm fed up trying. I could do that stuff in 2 minutes in any other language and this makes me sick! </rant>
----------------- Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:28:13 a.m. EDT, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:11 GMT+02:00 H. Hirzel hannes.hirzel@gmail.com:
On 4/6/18, Nicolas Cellier <nicolas.cellier.aka.nice@ gmail.com> wrote:
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@ gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
Nicolas,
Do you have a particular idea how an implemenation plan/ outline of tasks to do for 'rerouting the rivers for the water to be used for cleaning' would look like?
--Hannes
Hi Hannes, isn't it precisely what Tim (and you) are trying to achieve thru this call to goodwill?
https://en.wikipedia.org/wiki/ Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers.
However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/ 3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
On 4/6/18, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in? I've tried a gazillion examples I found and it just doesn't work at all... I'm on Windows 10 if that helps. I get all kinds of errors : stdout is not open or "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" or missing ', or variable out of scope (WHAT?!?!?)... In other words, I'm fed up trying.
Ideally searching for 'headless' on the wiki should lead to the answer. It seems that is does not.
Which wiki pages have you tried so far?
http://wiki.squeak.org/squeak/search?search=headless&casesensitive=false...
And the same search for the mailing list archive.
On Linux
man squeak
seems to give a useful answer.
I could do that stuff in 2 minutes in any other language and this makes me sick!
I do not have time to follow up on this at the moment but it is an important question. And we can make it work here as well.....
--Hannes
</rant>
Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:28:13 a.m. EDT, Nicolas Cellier
nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:11 GMT+02:00 H. Hirzel hannes.hirzel@gmail.com:
On 4/6/18, Nicolas Cellier <nicolas.cellier.aka.nice@ gmail.com> wrote:
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@ gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
Nicolas,
Do you have a particular idea how an implemenation plan/ outline of tasks to do for 'rerouting the rivers for the water to be used for cleaning' would look like?
--Hannes
Hi Hannes, isn't it precisely what Tim (and you) are trying to achieve thru this call to goodwill?
https://en.wikipedia.org/wiki/ Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers.
However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/ 3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
Hi Benoit,
On 6 April 2018 at 12:16, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in?
I've tried a gazillion examples I found and it just doesn't work at all...
I'm on Windows 10 if that helps.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/image/buildspurtr...
builds an image which does basically what you want. I've only tried it on Linux.
HTH, Alistair
I get all kinds of errors : stdout is not open or "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" or missing ', or variable out of scope (WHAT?!?!?)...
In other words, I'm fed up trying.
I could do that stuff in 2 minutes in any other language and this makes me sick!
</rant>
Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:28:13 a.m. EDT, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
2018-04-06 11:11 GMT+02:00 H. Hirzel hannes.hirzel@gmail.com:
On 4/6/18, Nicolas Cellier <nicolas.cellier.aka.nice@ gmail.com> wrote:
2018-04-06 11:04 GMT+02:00 Nicolas Cellier < nicolas.cellier.aka.nice@ gmail.com>:
By re-routing one or two rivers, it sounds effectively possible, but we need may little washing particles
No I don't promise it for May, I meant many
Nicolas,
Do you have a particular idea how an implemenation plan/ outline of tasks to do for 'rerouting the rivers for the water to be used for cleaning' would look like?
--Hannes
Hi Hannes, isn't it precisely what Tim (and you) are trying to achieve thru this call to goodwill?
https://en.wikipedia.org/wiki/ Labours_of_Hercules#Fifth_ labour:_Augean_stables
2018-04-05 19:47 GMT+02:00 tim Rowledge tim@rowledge.org:
On 05-04-2018, at 10:13 AM, K K Subbu kksubbu.ml@gmail.com wrote:
wiki.squeak.org/squeak is an excellent resource for Squeakers.
However, it's interface is a bit dated and could do with some improvements.
I agree that the UI is a bit blah (and your suggestions are interesting) but far more worrying is the out of date state of so many pages. Every now and then I go on a minor rampage to mark obviously obsolete pages, delete clearly ridiculous one, recycle those pages, update stuff where I know what can be improved and so on. We suffer from a colossal swathe of effectively empty pages generated by some long-gone process/project that appeared to consider that dumping class name as page and (maybe) sticking class comments in was a good idea. There are strings of pages forming the promising beginnings of tutorials that simply fade out to.........{crickets}
Almost anyone can help to clean up the swiki. Pick some page from the front page, follow it down the rabbit-hole a bit, look at the pages that link to a duff page, clean them up a bit, recycle bad pages, rewrite poorly thought out explanations, maybe replace ancient screenshots with ones taken from a current Squeak. (as an example, take a look at http://wiki.squeak.org/squeak/ 3480 - lots of very out of date examples there). Even simple things like organising into proper lists and editing text into proper paragraphs can help a lot in readability. You don't need to be a great expert to provide a valuable service here - but I bet that spending some time in the swiki will start to make you an expert, even if it's only by making you look up the real state of something!
If everyone on the squeak-dev list edited a swiki page once a week we'd very quickly see big improvements.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim I'm so skeptical that I'm not sure I'm really a skeptic
On 06-04-2018, at 11:10 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 6 April 2018 at 12:16, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in?
I've tried a gazillion examples I found and it just doesn't work at all...
I'm on Windows 10 if that helps.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/image/buildspurtr...
Just for the record here for the future - this process a) simply loads the CogTools-Listener (sub)package from the VMMaker repository - which is a very small bit of code we could very sensibly include in the default image b) uses a simple initial script to create an image that will start up at the beginning of an incantation that loops around the StdioListener. All you do is start up the image saved after loading the Listener tools with the StartReader.st - subsequent runs do not need that.
Unfortunately it doesn't seem to be working quite right on my Pi at the moment; I get a "squeak>" prompt but it doesn't seem to ever read any input. I know it works in principle because I've used it plenty of times in the past , but clearly I'm forgetting some important detail.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Useful Latin Phrases:- Te audire no possum. Musa sapientum fixa est in aure. = I can't hear you. I have a banana in my ear.
Thanks for your help. So far, I've had :
a) lots of "primitive failed", most of the time primitiveFileAtEnd (FilePlugin) b) An error/warning message in the console, "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" and then nothing happens, not even a prompt!c) A "Manufactured file handle detected" errord) An emergency error handlere) An error saying "stdout is not open"f) the VM terminating abruptlyg) The "Squeak Cog Spur Virtual Machine" unresponsive and totally frozen (not even able to interrupt it!) I tried the original and some refactored (VERY simple snippets) examples I could find on the net using :
a) OSProcessb) FileStreamc) StdioListener I have tried all tips & tricks : a) load the "application code" from a scriptb) doIt the code in a workspace and save the imagec) doIt some code with code to save the image first so the rest of the doIt resumes at startupd) I tried so many things I don't remember it all!!
So far, nothing worked, not even was I once close ! Except for the example with StdioListener : it shows the prompt but does nothing with the input...
I'm using Squeak 5.1 32bit on Windows 10. My goal is to produce a headless application is a *simple* way. It can be a script or some code I execute in a workspace. Then save the image (or whatever step is required). When running the application, I don't want to have to specify a script to start it up from the console. Also, I don't want to open another command window! I want the app/image to run from the command window without any artifact/trick the same way any other Windows utility/app would work. I also want the application to be interactive (it waits for input, does something with the input, then shows result and presents me with a prompt again). Once I get this to work, you can be sure I'll document it in detail !!!!
----------------- Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:42:27 p.m. EDT, tim Rowledge tim@rowledge.org wrote:
On 06-04-2018, at 11:10 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 6 April 2018 at 12:16, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in?
I've tried a gazillion examples I found and it just doesn't work at all...
I'm on Windows 10 if that helps.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/image/buildspurtr...
Just for the record here for the future - this process a) simply loads the CogTools-Listener (sub)package from the VMMaker repository - which is a very small bit of code we could very sensibly include in the default image b) uses a simple initial script to create an image that will start up at the beginning of an incantation that loops around the StdioListener. All you do is start up the image saved after loading the Listener tools with the StartReader.st - subsequent runs do not need that.
Unfortunately it doesn't seem to be working quite right on my Pi at the moment; I get a "squeak>" prompt but it doesn't seem to ever read any input. I know it works in principle because I've used it plenty of times in the past , but clearly I'm forgetting some important detail.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Useful Latin Phrases:- Te audire no possum. Musa sapientum fixa est in aure. = I can't hear you. I have a banana in my ear.
Hi Benoit,
On 7 April 2018 at 02:38, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Thanks for your help.
So far, I've had :
a) lots of "primitive failed", most of the time primitiveFileAtEnd (FilePlugin)
I've been able to reproduce this one. I'll take a look and get back to you.
Thanks, Alistair
b) An error/warning message in the console, "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" and then nothing happens, not even a prompt! c) A "Manufactured file handle detected" error d) An emergency error handler e) An error saying "stdout is not open" f) the VM terminating abruptly g) The "Squeak Cog Spur Virtual Machine" unresponsive and totally frozen (not even able to interrupt it!)
I tried the original and some refactored (VERY simple snippets) examples I could find on the net using :
a) OSProcess b) FileStream c) StdioListener
I have tried all tips & tricks : a) load the "application code" from a script b) doIt the code in a workspace and save the image c) doIt some code with code to save the image first so the rest of the doIt resumes at startup d) I tried so many things I don't remember it all!!
So far, nothing worked, not even was I once close ! Except for the example with StdioListener : it shows the prompt but does nothing with the input...
I'm using Squeak 5.1 32bit on Windows 10.
My goal is to produce a headless application is a *simple* way. It can be a script or some code I execute in a workspace. Then save the image (or whatever step is required).
When running the application, I don't want to have to specify a script to start it up from the console. Also, I don't want to open another command window! I want the app/image to run from the command window without any artifact/trick the same way any other Windows utility/app would work. I also want the application to be interactive (it waits for input, does something with the input, then shows result and presents me with a prompt again).
Once I get this to work, you can be sure I'll document it in detail !!!!
Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:42:27 p.m. EDT, tim Rowledge tim@rowledge.org wrote:
On 06-04-2018, at 11:10 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 6 April 2018 at 12:16, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in?
I've tried a gazillion examples I found and it just doesn't work at all...
I'm on Windows 10 if that helps.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/image/buildspurtr...
Just for the record here for the future - this process a) simply loads the CogTools-Listener (sub)package from the VMMaker repository - which is a very small bit of code we could very sensibly include in the default image b) uses a simple initial script to create an image that will start up at the beginning of an incantation that loops around the StdioListener. All you do is start up the image saved after loading the Listener tools with the StartReader.st - subsequent runs do not need that.
Unfortunately it doesn't seem to be working quite right on my Pi at the moment; I get a "squeak>" prompt but it doesn't seem to ever read any input. I know it works in principle because I've used it plenty of times in the past , but clearly I'm forgetting some important detail.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim
Useful Latin Phrases:- Te audire no possum. Musa sapientum fixa est in aure. = I can't hear you. I have a banana in my ear.
Hi Benoit,
On 7 April 2018 at 10:24, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 7 April 2018 at 02:38, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Thanks for your help.
So far, I've had :
a) lots of "primitive failed", most of the time primitiveFileAtEnd (FilePlugin)
I've been able to reproduce this one. I'll take a look and get back to you.
Can you send me steps to reproduce the problem?
Thanks, Alistair
b) An error/warning message in the console, "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" and then nothing happens, not even a prompt! c) A "Manufactured file handle detected" error d) An emergency error handler e) An error saying "stdout is not open" f) the VM terminating abruptly g) The "Squeak Cog Spur Virtual Machine" unresponsive and totally frozen (not even able to interrupt it!)
I tried the original and some refactored (VERY simple snippets) examples I could find on the net using :
a) OSProcess b) FileStream c) StdioListener
I have tried all tips & tricks : a) load the "application code" from a script b) doIt the code in a workspace and save the image c) doIt some code with code to save the image first so the rest of the doIt resumes at startup d) I tried so many things I don't remember it all!!
So far, nothing worked, not even was I once close ! Except for the example with StdioListener : it shows the prompt but does nothing with the input...
I'm using Squeak 5.1 32bit on Windows 10.
My goal is to produce a headless application is a *simple* way. It can be a script or some code I execute in a workspace. Then save the image (or whatever step is required).
When running the application, I don't want to have to specify a script to start it up from the console. Also, I don't want to open another command window! I want the app/image to run from the command window without any artifact/trick the same way any other Windows utility/app would work. I also want the application to be interactive (it waits for input, does something with the input, then shows result and presents me with a prompt again).
Once I get this to work, you can be sure I'll document it in detail !!!!
Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:42:27 p.m. EDT, tim Rowledge tim@rowledge.org wrote:
On 06-04-2018, at 11:10 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 6 April 2018 at 12:16, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in?
I've tried a gazillion examples I found and it just doesn't work at all...
I'm on Windows 10 if that helps.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/image/buildspurtr...
Just for the record here for the future - this process a) simply loads the CogTools-Listener (sub)package from the VMMaker repository - which is a very small bit of code we could very sensibly include in the default image b) uses a simple initial script to create an image that will start up at the beginning of an incantation that loops around the StdioListener. All you do is start up the image saved after loading the Listener tools with the StartReader.st - subsequent runs do not need that.
Unfortunately it doesn't seem to be working quite right on my Pi at the moment; I get a "squeak>" prompt but it doesn't seem to ever read any input. I know it works in principle because I've used it plenty of times in the past , but clearly I'm forgetting some important detail.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim
Useful Latin Phrases:- Te audire no possum. Musa sapientum fixa est in aure. = I can't hear you. I have a banana in my ear.
Hi Alistair,
On Apr 7, 2018, at 4:11 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 7 April 2018 at 10:24, Alistair Grant akgrant0710@gmail.com wrote: Hi Benoit,
On 7 April 2018 at 02:38, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Thanks for your help.
So far, I've had :
a) lots of "primitive failed", most of the time primitiveFileAtEnd (FilePlugin)
I've been able to reproduce this one. I'll take a look and get back to you.
Can you send me steps to reproduce the problem?
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit! $ ./buildspurtrunkreader64image.sh $ myvm spurreader-64.image squeak> 3 + 4! 7 squeak> Smalltalk quit! $
This no longer works on Mac OS X with the latest VMs either.
Thanks, Alistair
b) An error/warning message in the console, "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" and then nothing happens, not even a prompt! c) A "Manufactured file handle detected" error d) An emergency error handler e) An error saying "stdout is not open" f) the VM terminating abruptly g) The "Squeak Cog Spur Virtual Machine" unresponsive and totally frozen (not even able to interrupt it!)
I tried the original and some refactored (VERY simple snippets) examples I could find on the net using :
a) OSProcess b) FileStream c) StdioListener
I have tried all tips & tricks : a) load the "application code" from a script b) doIt the code in a workspace and save the image c) doIt some code with code to save the image first so the rest of the doIt resumes at startup d) I tried so many things I don't remember it all!!
So far, nothing worked, not even was I once close ! Except for the example with StdioListener : it shows the prompt but does nothing with the input...
I'm using Squeak 5.1 32bit on Windows 10.
My goal is to produce a headless application is a *simple* way. It can be a script or some code I execute in a workspace. Then save the image (or whatever step is required).
When running the application, I don't want to have to specify a script to start it up from the console. Also, I don't want to open another command window! I want the app/image to run from the command window without any artifact/trick the same way any other Windows utility/app would work. I also want the application to be interactive (it waits for input, does something with the input, then shows result and presents me with a prompt again).
Once I get this to work, you can be sure I'll document it in detail !!!!
Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:42:27 p.m. EDT, tim Rowledge tim@rowledge.org wrote:
On 06-04-2018, at 11:10 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 6 April 2018 at 12:16, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in?
I've tried a gazillion examples I found and it just doesn't work at all...
I'm on Windows 10 if that helps.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/image/buildspurtr...
Just for the record here for the future - this process a) simply loads the CogTools-Listener (sub)package from the VMMaker repository - which is a very small bit of code we could very sensibly include in the default image b) uses a simple initial script to create an image that will start up at the beginning of an incantation that loops around the StdioListener. All you do is start up the image saved after loading the Listener tools with the StartReader.st - subsequent runs do not need that.
Unfortunately it doesn't seem to be working quite right on my Pi at the moment; I get a "squeak>" prompt but it doesn't seem to ever read any input. I know it works in principle because I've used it plenty of times in the past , but clearly I'm forgetting some important detail.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim
Useful Latin Phrases:- Te audire no possum. Musa sapientum fixa est in aure. = I can't hear you. I have a banana in my ear.
On 07-04-2018, at 7:44 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
$ myvm spurreader.image squeak> 3 + 4! 7
Works on Pi/Raspbian once you remember the ! thing. Damn, I even read the code and missed that...
Seems to me that for the purposes of a headless terminal-access system we would probably not want the ! to be essential since it can only confuse users of 'regular' stuff. What do most terminal things do to continue a line? Isn't it \ on unix? What about others?
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Strange OpCodes: IA: Illogical And
On Sat, Apr 07, 2018 at 11:05:46AM -0700, tim Rowledge wrote:
On 07-04-2018, at 7:44 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
$ myvm spurreader.image squeak> 3 + 4! 7
Works on Pi/Raspbian once you remember the ! thing. Damn, I even read the code and missed that...
Seems to me that for the purposes of a headless terminal-access system we would probably not want the ! to be essential since it can only confuse users of 'regular' stuff. What do most terminal things do to continue a line? Isn't it \ on unix? What about others?
Ah, but wait. That spurreader REPL is pretty cool, but just in case they ever start handing out Ig Nobel awards (1) in the field of computer science (sic), I want to claim prior art (2). I assert that I am the perpetrator of the most ghastly syntax mashup since invention of English, or possibly even (gasp!) Perl.
The $! delimiter means that the stuff before it should be interpreted as Smalltalk, so if you were to mix this up with unix shell syntax, it might look something like this:
lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$ run osp64.image
sqsh> 3 + 4 ! 7 sqsh> 3 + 4 7 sqsh> 3 + 4! | /bin/cat 7 sqsh> exit lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$
So, in the above, $! is a chunk terminator but it is not essential in a context where the chunk can be disambiguated from other unixy syntax cruft.
Dave
(1) https://www.improbable.com/ig/winners/ (2) http://wiki.squeak.org/squeak/1064
On 07-04-2018, at 2:52 PM, David T. Lewis lewis@mail.msen.com wrote: just in case they ever start handing out Ig Nobel awards (1) in the field of computer science (sic),
I think they call those 'Microsoft Senior Fellow'.
I want to claim prior art (2). I assert that I am the perpetrator of the most ghastly syntax mashup since invention of English, or possibly even (gasp!) Perl.
The $! delimiter means that the stuff before it should be interpreted as Smalltalk, so if you were to mix this up with unix shell syntax, it might look something like this:
lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$ run osp64.image
sqsh> 3 + 4 ! 7 sqsh> 3 + 4 7 sqsh> 3 + 4! | /bin/cat 7 sqsh> exit lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$
I bow before the Master.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Strange OpCodes: DPC: Double Precision Crash
Hi David,
On Apr 7, 2018, at 2:52 PM, David T. Lewis lewis@mail.msen.com wrote:
On Sat, Apr 07, 2018 at 11:05:46AM -0700, tim Rowledge wrote:
On 07-04-2018, at 7:44 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
$ myvm spurreader.image squeak> 3 + 4! 7
Works on Pi/Raspbian once you remember the ! thing. Damn, I even read the code and missed that...
Seems to me that for the purposes of a headless terminal-access system we would probably not want the ! to be essential since it can only confuse users of 'regular' stuff. What do most terminal things do to continue a line? Isn't it \ on unix? What about others?
Ah, but wait. That spurreader REPL is pretty cool,
It is not. It's just a very quick hack to test the threaded ffi and the simulator.
but just in case they ever start handing out Ig Nobel awards (1) in the field of computer science (sic), I want to claim prior art (2). I assert that I am the perpetrator of the most ghastly syntax mashup since invention of English, or possibly even (gasp!) Perl.
The $! delimiter means that the stuff before it should be interpreted as Smalltalk, so if you were to mix this up with unix shell syntax, it might look something like this:
lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$ run osp64.image
sqsh> 3 + 4 ! 7 sqsh> 3 + 4 7
So do you require long expressions occur on one line?
sqsh> 3 + 4! | /bin/cat 7 sqsh> exit lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$
So, in the above, $! is a chunk terminator but it is not essential in a context where the chunk can be disambiguated from other unixy syntax cruft.
The issue is how to input a multi line doit. Do you allow it and hence either require each end of line to be escaped (Unix/C, end a non end line with \ CR) or I escaped and require an input terminator (st chunk's ! or Unix here script's repeat of the opening tag)?
Dave
(1) https://www.improbable.com/ig/winners/ (2) http://wiki.squeak.org/squeak/1064
Hi Eliot,
Actually, I was only joking. Somehow Tim seems to bring that out in me. But see below.
On Sun, Apr 08, 2018 at 04:50:42AM -0700, Eliot Miranda wrote:
Hi David,
On Apr 7, 2018, at 2:52 PM, David T. Lewis lewis@mail.msen.com wrote:
On Sat, Apr 07, 2018 at 11:05:46AM -0700, tim Rowledge wrote:
On 07-04-2018, at 7:44 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
$ myvm spurreader.image squeak> 3 + 4! 7
Works on Pi/Raspbian once you remember the ! thing. Damn, I even read the code and missed that...
Seems to me that for the purposes of a headless terminal-access system we would probably not want the ! to be essential since it can only confuse users of 'regular' stuff. What do most terminal things do to continue a line? Isn't it \ on unix? What about others?
Ah, but wait. That spurreader REPL is pretty cool,
It is not. It's just a very quick hack to test the threaded ffi and the simulator.
but just in case they ever start handing out Ig Nobel awards (1) in the field of computer science (sic), I want to claim prior art (2). I assert that I am the perpetrator of the most ghastly syntax mashup since invention of English, or possibly even (gasp!) Perl.
The $! delimiter means that the stuff before it should be interpreted as Smalltalk, so if you were to mix this up with unix shell syntax, it might look something like this:
lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$ run osp64.image
sqsh> 3 + 4 ! 7 sqsh> 3 + 4 7
So do you require long expressions occur on one line?
sqsh> 3 + 4! | /bin/cat 7 sqsh> exit lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$
So, in the above, $! is a chunk terminator but it is not essential in a context where the chunk can be disambiguated from other unixy syntax cruft.
The issue is how to input a multi line doit. Do you allow it and hence either require each end of line to be escaped (Unix/C, end a non end line with \ CR) or I escaped and require an input terminator (st chunk's ! or Unix here script's repeat of the opening tag)?
Well, this is a completely silly idea that nobody would ever bother using using even it if did exist. And it was a nice sunny Sunday afternoon here in Michigan, I had a good pot of coffee at hand, so what the heck - I just went ahead and implemented it. After all, it's not as though the syntax mashup could possibly get any worse, so why not?
If you update your CommandShell package to the latest version, you can now use ExternalCommandShell to do wonderfully useless things such as this:
lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$ run squeakSpur64.image
sqsh> 3 + 4 7 sqsh> 3 + 4! 7 sqsh> 3\ + 4! 7 sqsh> exit
;-)
Dave
Dave
(1) https://www.improbable.com/ig/winners/ (2) http://wiki.squeak.org/squeak/1064
a) Nice! b) Time to update the swiki page for CommandShell after 10 years....
If you update your CommandShell package to the latest version, you can now use ExternalCommandShell to do wonderfully useless things such as this:
lewis@lewis-Gazelle-Pro:~/squeak/Squeak5.1$ run squeakSpur64.image
sqsh> 3 + 4 7 sqsh> 3 + 4! 7 sqsh> 3\
- 4!
7 sqsh> exit
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Receptacle: a very playful welcome from a receptionist
On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote:
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Regards .. Subbu
On 07-04-2018, at 11:29 AM, K K Subbu kksubbu.ml@gmail.com wrote:
On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote:
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Not quite; you actually need - ((6*9) printStringRadix: 13) last: 2 !
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Strange OpCodes: QVC: Question Valid Command
On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote:
On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote:
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Regards .. Subbu
Interesting idea... But even the old VM doesn't provide the answer.
Piped input is working in general with my new test VM. I'll have to figure out why the reader image doesn't handle it.
Thanks, Alistair
Hi Alistair,
On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant akgrant0710@gmail.com wrote:
On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote:
On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote:
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Regards .. Subbu
Interesting idea... But even the old VM doesn't provide the answer.
It will do, but that \n must be a ^M. So if one types '3+4! followed by ctrl-v carriage return, followed by Smalltalk quit!' then echo will echo a carriage return. But since the REPL is actually reading chunk format (hence the !'s) one doesn't need the carriage return at all and one should be able to say
echo '3+4!Smalltalk quit!' | $VM spurreader.image
and see "squeak> 7 squeak> " printed to stdout
Piped input is working in general with my new test VM. I'll have to
figure out why the reader image doesn't handle it.
I think the details are in the nextChunkNoTag method in the CogTools-Listener package. I was trying to do the simplest thing that could possibly work here, not produce a usable listener. The ! requirement is absurd for general use but acceptable for someone simply wanting to exercise (potentially non-blocking) reading from stdin.
_,,,^..^,,,_ best, Eliot
Hi Eliot,
On 8 April 2018 at 03:02, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Alistair,
On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant akgrant0710@gmail.com wrote:
On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote:
On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote:
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Regards .. Subbu
Interesting idea... But even the old VM doesn't provide the answer.
It will do, but that \n must be a ^M. So if one types '3+4! followed by ctrl-v carriage return, followed by Smalltalk quit!' then echo will echo a carriage return. But since the REPL is actually reading chunk format (hence the !'s) one doesn't need the carriage return at all and one should be able to say
echo '3+4!Smalltalk quit!' | $VM spurreader.image
and see "squeak> 7 squeak> " printed to stdout
Piped input is working in general with my new test VM. I'll have to figure out why the reader image doesn't handle it.
In this case:
- PositionableStream>>nextChunkNoTag calls #peek - #peek tries to save the state, which tries to read the stream position. - And getting the stream position doesn't seem to be supported for piped input. - So an Error is raised. - But because the input processing is done outside the exception handler, there's nothing to catch the error. - And the system becomes unresponsive (when run headless).
I want to get #primitiveFileAtEnd working first - I've written the code, I just need to run it through the usual test suites.
Adding a primitivePeek would be trivial and should also work with piped input. I might have a look at this after I'm sure #primitiveFileAtEnd works properly.
Cheers, Alistair
I think the details are in the nextChunkNoTag method in the CogTools-Listener package. I was trying to do the simplest thing that could possibly work here, not produce a usable listener. The ! requirement is absurd for general use but acceptable for someone simply wanting to exercise (potentially non-blocking) reading from stdin.
_,,,^..^,,,_ best, Eliot
Hi Alistair,
On Apr 8, 2018, at 5:23 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 03:02, Eliot Miranda eliot.miranda@gmail.com wrote: Hi Alistair,
On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant akgrant0710@gmail.com wrote:
On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote:
On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote:
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Regards .. Subbu
Interesting idea... But even the old VM doesn't provide the answer.
It will do, but that \n must be a ^M. So if one types '3+4! followed by ctrl-v carriage return, followed by Smalltalk quit!' then echo will echo a carriage return. But since the REPL is actually reading chunk format (hence the !'s) one doesn't need the carriage return at all and one should be able to say
echo '3+4!Smalltalk quit!' | $VM spurreader.image
and see "squeak> 7 squeak> " printed to stdout
Piped input is working in general with my new test VM. I'll have to figure out why the reader image doesn't handle it.
In this case:
- PositionableStream>>nextChunkNoTag calls #peek
- #peek tries to save the state, which tries to read the stream position.
- And getting the stream position doesn't seem to be supported for piped input.
- So an Error is raised.
- But because the input processing is done outside the exception
handler, there's nothing to catch the error.
- And the system becomes unresponsive (when run headless).
I want to get #primitiveFileAtEnd working first - I've written the code, I just need to run it through the usual test suites.
Agreed. And having peek work on stdin, as if used to, is essential. Consider the reader part of the tests.
Adding a primitivePeek would be trivial and should also work with piped input. I might have a look at this after I'm sure #primitiveFileAtEnd works properly.
This would have bay be acceptable on a major release. You /cannot/ break problems motives and expect image code to change except at a major release. The VM /must/ continue to run exist my images unchanged. If it does not then there has been a regression and it must be fixed. So if your changes to primitiveFileAtEnd are at fault they must be fixed.
Adding primitivePeek seems to me a mistake. It is adding unnecessary code at a low level. I had managed to get perk working for stdin. Why is it broken?
Cheers, Alistair
I think the details are in the nextChunkNoTag method in the CogTools-Listener package. I was trying to do the simplest thing that could possibly work here, not produce a usable listener. The ! requirement is absurd for general use but acceptable for someone simply wanting to exercise (potentially non-blocking) reading from stdin.
_,,,^..^,,,_ best, Eliot
Hi Eliot,
On 8 April 2018 at 17:25, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Alistair,
On Apr 8, 2018, at 5:23 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 03:02, Eliot Miranda eliot.miranda@gmail.com wrote: Hi Alistair,
On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant akgrant0710@gmail.com wrote:
On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote:
On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote:
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Regards .. Subbu
Interesting idea... But even the old VM doesn't provide the answer.
It will do, but that \n must be a ^M. So if one types '3+4! followed by ctrl-v carriage return, followed by Smalltalk quit!' then echo will echo a carriage return. But since the REPL is actually reading chunk format (hence the !'s) one doesn't need the carriage return at all and one should be able to say
echo '3+4!Smalltalk quit!' | $VM spurreader.image
and see "squeak> 7 squeak> " printed to stdout
Piped input is working in general with my new test VM. I'll have to figure out why the reader image doesn't handle it.
In this case:
- PositionableStream>>nextChunkNoTag calls #peek
- #peek tries to save the state, which tries to read the stream position.
- And getting the stream position doesn't seem to be supported for piped input.
- So an Error is raised.
- But because the input processing is done outside the exception
handler, there's nothing to catch the error.
- And the system becomes unresponsive (when run headless).
I want to get #primitiveFileAtEnd working first - I've written the code, I just need to run it through the usual test suites.
Agreed. And having peek work on stdin, as if used to, is essential. Consider the reader part of the tests.
Adding a primitivePeek would be trivial and should also work with piped input. I might have a look at this after I'm sure #primitiveFileAtEnd works properly.
This would have bay be acceptable on a major release. You /cannot/ break problems motives and expect image code to change except at a major release. The VM /must/ continue to run exist my images unchanged. If it does not then there has been a regression and it must be fixed. So if your changes to primitiveFileAtEnd are at fault they must be fixed.
I think two issues are being mixed together here:
1. primitiveFileAtEnd
My change broke some behaviour - no question. Cyril, Subbu and your reports allowed me to identify what was wrong there. I've modified the code and have a PR being built at the moment to make sure it builds on all platforms. Both the Pharo and Squeak test suites (32 bit) had their usual group of errors, which aren't related to file i.o, so that is looking good.
However that has nothing to do with the issue we're talking about at the moment.
Second issue:
2. #peek not working with piped input
Adding primitivePeek seems to me a mistake. It is adding unnecessary code at a low level. I had managed to get perk working for stdin. Why is it broken?
The problem here is that the current implementation of #peek, which relies on getting and setting the position of the stream, works with terminal input and a redirected input file, but not with piped input.
The additional primitive I'm proposing I think will allow it to also work with piped input (although I haven't tested it). Obviously existing images won't be affected - they won't be calling the new primitive.
None of the changes I'm proposing (primitiveFileAtEnd or adding a primitivePeek) would break backward compatibility (bugs aside :-)).
Please let me know if I've misunderstood anything.
Thanks, Alistair
Cheers, Alistair
I think the details are in the nextChunkNoTag method in the CogTools-Listener package. I was trying to do the simplest thing that could possibly work here, not produce a usable listener. The ! requirement is absurd for general use but acceptable for someone simply wanting to exercise (potentially non-blocking) reading from stdin.
_,,,^..^,,,_ best, Eliot
Hi Alistair,
On Apr 8, 2018, at 8:43 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 17:25, Eliot Miranda eliot.miranda@gmail.com wrote: Hi Alistair,
On Apr 8, 2018, at 5:23 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 03:02, Eliot Miranda eliot.miranda@gmail.com wrote: Hi Alistair,
On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant akgrant0710@gmail.com wrote:
> On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote: > On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote: > > $ cd image > $ ./buildspurtrunkreaderimage.sh > $ myvm spurreader.image > squeak> 3 + 4! > 7 > squeak> Smalltalk quit!
Nice. This can become a good smoke test at the end of the build*.sh:
/bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image
Now there's the answer to life, the universe and everything ;-)
Regards .. Subbu
Interesting idea... But even the old VM doesn't provide the answer.
It will do, but that \n must be a ^M. So if one types '3+4! followed by ctrl-v carriage return, followed by Smalltalk quit!' then echo will echo a carriage return. But since the REPL is actually reading chunk format (hence the !'s) one doesn't need the carriage return at all and one should be able to say
echo '3+4!Smalltalk quit!' | $VM spurreader.image
and see "squeak> 7 squeak> " printed to stdout
Piped input is working in general with my new test VM. I'll have to figure out why the reader image doesn't handle it.
In this case:
- PositionableStream>>nextChunkNoTag calls #peek
- #peek tries to save the state, which tries to read the stream position.
- And getting the stream position doesn't seem to be supported for piped input.
- So an Error is raised.
- But because the input processing is done outside the exception
handler, there's nothing to catch the error.
- And the system becomes unresponsive (when run headless).
I want to get #primitiveFileAtEnd working first - I've written the code, I just need to run it through the usual test suites.
Agreed. And having peek work on stdin, as if used to, is essential. Consider the reader part of the tests.
Adding a primitivePeek would be trivial and should also work with piped input. I might have a look at this after I'm sure #primitiveFileAtEnd works properly.
This would have bay be acceptable on a major release. You /cannot/ break problems motives and expect image code to change except at a major release. The VM /must/ continue to run exist my images unchanged. If it does not then there has been a regression and it must be fixed. So if your changes to primitiveFileAtEnd are at fault they must be fixed.
I think two issues are being mixed together here:
- primitiveFileAtEnd
My change broke some behaviour - no question. Cyril, Subbu and your reports allowed me to identify what was wrong there. I've modified the code and have a PR being built at the moment to make sure it builds on all platforms. Both the Pharo and Squeak test suites (32 bit) had their usual group of errors, which aren't related to file i.o, so that is looking good.
However that has nothing to do with the issue we're talking about at the moment.
Second issue:
- #peek not working with piped input
Adding primitivePeek seems to me a mistake. It is adding unnecessary code at a low level. I had managed to get perk working for stdin. Why is it broken?
The problem here is that the current implementation of #peek, which relies on getting and setting the position of the stream, works with terminal input and a redirected input file, but not with piped input.
The additional primitive I'm proposing I think will allow it to also work with piped input (although I haven't tested it). Obviously existing images won't be affected - they won't be calling the new primitive.
None of the changes I'm proposing (primitiveFileAtEnd or adding a primitivePeek) would break backward compatibility (bugs aside :-)).
Good to hear!
Please let me know if I've misunderstood anything.
I don't think so. I think the misunderstandings are in my side. My current concern is that if stdin is at end of input (input consumed or user has typed EOF) that stdin reflect that, otherwise the listener is severely hampered and requires Smalltalk quit to exit cleanly, getting blocked otherwise.
Thanks, Alistair
Cheers, Alistair
I think the details are in the nextChunkNoTag method in the CogTools-Listener package. I was trying to do the simplest thing that could possibly work here, not produce a usable listener. The ! requirement is absurd for general use but acceptable for someone simply wanting to exercise (potentially non-blocking) reading from stdin.
_,,,^..^,,,_ best, Eliot
Hi Eliot,
On 8 April 2018 at 19:06, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Alistair,
On Apr 8, 2018, at 8:43 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 17:25, Eliot Miranda eliot.miranda@gmail.com wrote: Hi Alistair,
On Apr 8, 2018, at 5:23 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 03:02, Eliot Miranda eliot.miranda@gmail.com wrote: Hi Alistair,
On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant akgrant0710@gmail.com wrote:
>> On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote: >> On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote: >> >> $ cd image >> $ ./buildspurtrunkreaderimage.sh >> $ myvm spurreader.image >> squeak> 3 + 4! >> 7 >> squeak> Smalltalk quit! > > > Nice. This can become a good smoke test at the end of the build*.sh: > > /bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image > > Now there's the answer to life, the universe and everything ;-) > > Regards .. Subbu
Interesting idea... But even the old VM doesn't provide the answer.
It will do, but that \n must be a ^M. So if one types '3+4! followed by ctrl-v carriage return, followed by Smalltalk quit!' then echo will echo a carriage return. But since the REPL is actually reading chunk format (hence the !'s) one doesn't need the carriage return at all and one should be able to say
echo '3+4!Smalltalk quit!' | $VM spurreader.image
and see "squeak> 7 squeak> " printed to stdout
Piped input is working in general with my new test VM. I'll have to figure out why the reader image doesn't handle it.
In this case:
- PositionableStream>>nextChunkNoTag calls #peek
- #peek tries to save the state, which tries to read the stream position.
- And getting the stream position doesn't seem to be supported for piped input.
- So an Error is raised.
- But because the input processing is done outside the exception
handler, there's nothing to catch the error.
- And the system becomes unresponsive (when run headless).
I want to get #primitiveFileAtEnd working first - I've written the code, I just need to run it through the usual test suites.
Agreed. And having peek work on stdin, as if used to, is essential. Consider the reader part of the tests.
Adding a primitivePeek would be trivial and should also work with piped input. I might have a look at this after I'm sure #primitiveFileAtEnd works properly.
This would have bay be acceptable on a major release. You /cannot/ break problems motives and expect image code to change except at a major release. The VM /must/ continue to run exist my images unchanged. If it does not then there has been a regression and it must be fixed. So if your changes to primitiveFileAtEnd are at fault they must be fixed.
I think two issues are being mixed together here:
- primitiveFileAtEnd
My change broke some behaviour - no question. Cyril, Subbu and your reports allowed me to identify what was wrong there. I've modified the code and have a PR being built at the moment to make sure it builds on all platforms. Both the Pharo and Squeak test suites (32 bit) had their usual group of errors, which aren't related to file i.o, so that is looking good.
However that has nothing to do with the issue we're talking about at the moment.
Second issue:
- #peek not working with piped input
Adding primitivePeek seems to me a mistake. It is adding unnecessary code at a low level. I had managed to get perk working for stdin. Why is it broken?
The problem here is that the current implementation of #peek, which relies on getting and setting the position of the stream, works with terminal input and a redirected input file, but not with piped input.
The additional primitive I'm proposing I think will allow it to also work with piped input (although I haven't tested it). Obviously existing images won't be affected - they won't be calling the new primitive.
None of the changes I'm proposing (primitiveFileAtEnd or adding a primitivePeek) would break backward compatibility (bugs aside :-)).
Good to hear!
Please let me know if I've misunderstood anything.
I don't think so. I think the misunderstandings are in my side. My current concern is that if stdin is at end of input (input consumed or user has typed EOF) that stdin reflect that, otherwise the listener is severely hampered and requires Smalltalk quit to exit cleanly, getting blocked otherwise.
The behaviour of #atEnd for stdin from a terminal is the same with my patch as before.
That is, once the code has read past the end of the stream #atEnd will answer true.
This doesn't meet the original definition of #atEnd, which is that it should answer true once the last element has been read.
But that isn't possible for stdin from a terminal since we need to wait for the user to explicitly flag the end of input (using Ctrl-D) and #atEnd shouldn't block waiting for input from the user.
In practice, this generally isn't an issue in Squeak as any code that is reading from stdin isn't relying on #atEnd, but checking for #next returning nil.
For all other files:
#atEnd used to return the correct answer if the size of the file was reported accurately by the file system.
This was generally true for "normal" files, i.e. those where I can find the contents on the disk.
But was often wrong for virtual files, e.g. /proc/cpuinfo, and character devices, e.g. /dev/urandom, which return a file size of 0.
Hopefully now it returns the correct answer in all cases.
Cheers, Alistair
Hi Alistair,
On Sun, Apr 8, 2018 at 2:19 PM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 19:06, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Alistair,
On Apr 8, 2018, at 8:43 AM, Alistair Grant akgrant0710@gmail.com
wrote:
Hi Eliot,
On 8 April 2018 at 17:25, Eliot Miranda eliot.miranda@gmail.com
wrote:
Hi Alistair,
On Apr 8, 2018, at 5:23 AM, Alistair Grant akgrant0710@gmail.com
wrote:
Hi Eliot,
On 8 April 2018 at 03:02, Eliot Miranda eliot.miranda@gmail.com
wrote:
Hi Alistair,
On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant <
akgrant0710@gmail.com>
wrote: > >>> On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote: >>> On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote: >>> >>> $ cd image >>> $ ./buildspurtrunkreaderimage.sh >>> $ myvm spurreader.image >>> squeak> 3 + 4! >>> 7 >>> squeak> Smalltalk quit! >> >> >> Nice. This can become a good smoke test at the end of the
build*.sh:
>> >> /bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image >> >> Now there's the answer to life, the universe and everything ;-) >> >> Regards .. Subbu > > > Interesting idea... But even the old VM doesn't provide the answer.
It will do, but that \n must be a ^M. So if one types '3+4!
followed by
ctrl-v carriage return, followed by Smalltalk quit!' then echo will
echo a
carriage return. But since the REPL is actually reading chunk
format (hence
the !'s) one doesn't need the carriage return at all and one should
be able
to say
echo '3+4!Smalltalk quit!' | $VM spurreader.image
and see "squeak> 7 squeak> " printed to stdout
> Piped input is working in general with my new test VM. I'll have to > figure out why the reader image doesn't handle it.
In this case:
- PositionableStream>>nextChunkNoTag calls #peek
- #peek tries to save the state, which tries to read the stream
position.
- And getting the stream position doesn't seem to be supported for
piped input.
- So an Error is raised.
- But because the input processing is done outside the exception
handler, there's nothing to catch the error.
- And the system becomes unresponsive (when run headless).
I want to get #primitiveFileAtEnd working first - I've written the code, I just need to run it through the usual test suites.
Agreed. And having peek work on stdin, as if used to, is essential.
Consider the reader part of the tests.
Adding a primitivePeek would be trivial and should also work with piped input. I might have a look at this after I'm sure #primitiveFileAtEnd works properly.
This would have bay be acceptable on a major release. You /cannot/
break problems motives and expect image code to change except at a major release. The VM /must/ continue to run exist my images unchanged. If it does not then there has been a regression and it must be fixed. So if your changes to primitiveFileAtEnd are at fault they must be fixed.
I think two issues are being mixed together here:
- primitiveFileAtEnd
My change broke some behaviour - no question. Cyril, Subbu and your reports allowed me to identify what was wrong there. I've modified the code and have a PR being built at the moment to make sure it builds on all platforms. Both the Pharo and Squeak test suites (32 bit) had their usual group of errors, which aren't related to file i.o, so that is looking good.
However that has nothing to do with the issue we're talking about at
the moment.
Second issue:
- #peek not working with piped input
Adding primitivePeek seems to me a mistake. It is adding unnecessary
code at a low level. I had managed to get perk working for stdin. Why is it broken?
The problem here is that the current implementation of #peek, which relies on getting and setting the position of the stream, works with terminal input and a redirected input file, but not with piped input.
The additional primitive I'm proposing I think will allow it to also work with piped input (although I haven't tested it). Obviously existing images won't be affected - they won't be calling the new primitive.
None of the changes I'm proposing (primitiveFileAtEnd or adding a primitivePeek) would break backward compatibility (bugs aside :-)).
Good to hear!
Please let me know if I've misunderstood anything.
I don't think so. I think the misunderstandings are in my side. My
current concern is that if stdin is at end of input (input consumed or user has typed EOF) that stdin reflect that, otherwise the listener is severely hampered and requires Smalltalk quit to exit cleanly, getting blocked otherwise.
The behaviour of #atEnd for stdin from a terminal is the same with my patch as before.
That is, once the code has read past the end of the stream #atEnd will answer true.
This doesn't meet the original definition of #atEnd, which is that it should answer true once the last element has been read.
But that isn't possible for stdin from a terminal since we need to wait for the user to explicitly flag the end of input (using Ctrl-D) and #atEnd shouldn't block waiting for input from the user.
In practice, this generally isn't an issue in Squeak as any code that is reading from stdin isn't relying on #atEnd, but checking for #next returning nil.
For all other files:
#atEnd used to return the correct answer if the size of the file was reported accurately by the file system.
This was generally true for "normal" files, i.e. those where I can find the contents on the disk.
But was often wrong for virtual files, e.g. /proc/cpuinfo, and character devices, e.g. /dev/urandom, which return a file size of 0.
Hopefully now it returns the correct answer in all cases.
Well, I don't know why but when I try the reader image it works, but no prompt is printed until after one supplies input. So something has changed. I want your fixes but we also need backward compatibility. So some more investigation is necessary.
_,,,^..^,,,_ best, Eliot
Hi Eliot,
On 8 April 2018 at 23:56, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Alistair,
On Sun, Apr 8, 2018 at 2:19 PM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 19:06, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Alistair,
On Apr 8, 2018, at 8:43 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
On 8 April 2018 at 17:25, Eliot Miranda eliot.miranda@gmail.com wrote: Hi Alistair,
On Apr 8, 2018, at 5:23 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Eliot,
> On 8 April 2018 at 03:02, Eliot Miranda eliot.miranda@gmail.com > wrote: > Hi Alistair, > > On Sat, Apr 7, 2018 at 12:32 PM, Alistair Grant > akgrant0710@gmail.com > wrote: >> >>>> On 7 April 2018 at 20:29, K K Subbu kksubbu.ml@gmail.com wrote: >>>> On Saturday 07 April 2018 08:14 PM, Eliot Miranda wrote: >>>> >>>> $ cd image >>>> $ ./buildspurtrunkreaderimage.sh >>>> $ myvm spurreader.image >>>> squeak> 3 + 4! >>>> 7 >>>> squeak> Smalltalk quit! >>> >>> >>> Nice. This can become a good smoke test at the end of the >>> build*.sh: >>> >>> /bin/echo -e '14*3!\nSmalltalk quit!' | $VM spurreader.image >>> >>> Now there's the answer to life, the universe and everything ;-) >>> >>> Regards .. Subbu >> >> >> Interesting idea... But even the old VM doesn't provide the >> answer. > > > It will do, but that \n must be a ^M. So if one types '3+4! > followed by > ctrl-v carriage return, followed by Smalltalk quit!' then echo will > echo a > carriage return. But since the REPL is actually reading chunk > format (hence > the !'s) one doesn't need the carriage return at all and one should > be able > to say > > echo '3+4!Smalltalk quit!' | $VM spurreader.image > > and see "squeak> 7 > squeak> " printed to stdout > >> Piped input is working in general with my new test VM. I'll have >> to >> figure out why the reader image doesn't handle it.
In this case:
- PositionableStream>>nextChunkNoTag calls #peek
- #peek tries to save the state, which tries to read the stream
position.
- And getting the stream position doesn't seem to be supported for
piped input.
- So an Error is raised.
- But because the input processing is done outside the exception
handler, there's nothing to catch the error.
- And the system becomes unresponsive (when run headless).
I want to get #primitiveFileAtEnd working first - I've written the code, I just need to run it through the usual test suites.
Agreed. And having peek work on stdin, as if used to, is essential. Consider the reader part of the tests.
Adding a primitivePeek would be trivial and should also work with piped input. I might have a look at this after I'm sure #primitiveFileAtEnd works properly.
This would have bay be acceptable on a major release. You /cannot/ break problems motives and expect image code to change except at a major release. The VM /must/ continue to run exist my images unchanged. If it does not then there has been a regression and it must be fixed. So if your changes to primitiveFileAtEnd are at fault they must be fixed.
I think two issues are being mixed together here:
- primitiveFileAtEnd
My change broke some behaviour - no question. Cyril, Subbu and your reports allowed me to identify what was wrong there. I've modified the code and have a PR being built at the moment to make sure it builds on all platforms. Both the Pharo and Squeak test suites (32 bit) had their usual group of errors, which aren't related to file i.o, so that is looking good.
However that has nothing to do with the issue we're talking about at the moment.
Second issue:
- #peek not working with piped input
Adding primitivePeek seems to me a mistake. It is adding unnecessary code at a low level. I had managed to get perk working for stdin. Why is it broken?
The problem here is that the current implementation of #peek, which relies on getting and setting the position of the stream, works with terminal input and a redirected input file, but not with piped input.
The additional primitive I'm proposing I think will allow it to also work with piped input (although I haven't tested it). Obviously existing images won't be affected - they won't be calling the new primitive.
None of the changes I'm proposing (primitiveFileAtEnd or adding a primitivePeek) would break backward compatibility (bugs aside :-)).
Good to hear!
Please let me know if I've misunderstood anything.
I don't think so. I think the misunderstandings are in my side. My current concern is that if stdin is at end of input (input consumed or user has typed EOF) that stdin reflect that, otherwise the listener is severely hampered and requires Smalltalk quit to exit cleanly, getting blocked otherwise.
The behaviour of #atEnd for stdin from a terminal is the same with my patch as before.
That is, once the code has read past the end of the stream #atEnd will answer true.
This doesn't meet the original definition of #atEnd, which is that it should answer true once the last element has been read.
But that isn't possible for stdin from a terminal since we need to wait for the user to explicitly flag the end of input (using Ctrl-D) and #atEnd shouldn't block waiting for input from the user.
In practice, this generally isn't an issue in Squeak as any code that is reading from stdin isn't relying on #atEnd, but checking for #next returning nil.
For all other files:
#atEnd used to return the correct answer if the size of the file was reported accurately by the file system.
This was generally true for "normal" files, i.e. those where I can find the contents on the disk.
But was often wrong for virtual files, e.g. /proc/cpuinfo, and character devices, e.g. /dev/urandom, which return a file size of 0.
Hopefully now it returns the correct answer in all cases.
Well, I don't know why but when I try the reader image it works, but no prompt is printed until after one supplies input. So something has changed. I want your fixes but we also need backward compatibility. So some more investigation is necessary.
I'd made the fixes and put them in a PR, but hadn't yet merged them.
Try CommitHash 6bee4d2 or later (9 April 2018).
Cheers, Alistair
Although Eliot's little REPl thing for image testing is cool, it is minimal and would need extending to be generally useful. I took a quick amble down the rabbit-hole to see what other REPL things people have made for Squeak and it looks to me that the most advanced one was the REPL package within www.squeaksource.com/SecureSqueak
It's quite old and includes classes like ANSIStream (which I'm going to guess was a pre-i18n work way of dealing with the Squeak charset issues). It apparently "Requires Comanche (or at least ConnectionHandler and SocketStream)." to quote from the swiki page where I found out about it (http://wiki.squeak.org/squeak/2648)
A modernised version would be a nice thing to have. I'm pretty much certain I've heard of work on a 'squeak shell' too - which I suspect would be Craig? Am I remembering something about 'squish'? - but I can't find anything right now.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Useful random insult:- Not an idiot, but plays one in his life.
Hi Tim,
On Sun, Apr 8, 2018 at 11:23 AM, tim Rowledge tim@rowledge.org wrote:
Although Eliot's little REPl thing for image testing is cool, it is minimal and would need extending to be generally useful.
+0. It's not cool and it would indeed need extending.
I took a quick amble down the rabbit-hole to see what other REPL things people have made for Squeak and it looks to me that the most advanced one was the REPL package within www.squeaksource.com/SecureSqueak
Was. Pharo have something much more up-to-date. Take a look at that. They have full curses integration so colored output and the possibility of doing an emacs-like input editor.
It's quite old and includes classes like ANSIStream (which I'm going to guess was a pre-i18n work way of dealing with the Squeak charset issues). It apparently "Requires Comanche (or at least ConnectionHandler and SocketStream)." to quote from the swiki page where I found out about it ( http://wiki.squeak.org/squeak/2648)
A modernised version would be a nice thing to have. I'm pretty much certain I've heard of work on a 'squeak shell' too - which I suspect would be Craig? Am I remembering something about 'squish'? - but I can't find anything right now.
I would look at the Pharo system.
_,,,^..^,,,_ best, Eliot
Just to give my 2 cents on the subject, when I started this thread I was just asking for an easy way to have an interactive headless console application. Quite frankly, I never had the need to compile Smalltalk expressions from a prompt and I've never seen the benefits of it. If one wants to execute Smalltalk code, we do have the capability to do it by providing a script as an argument! Yes, it's quite nice to be able to do so when you want to show off how cool is Smalltalk but is there any *real* use for such a functionality? I doubt it!
----------------- Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Sunday, April 8, 2018, 4:09:07 p.m. EDT, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Tim,
On Sun, Apr 8, 2018 at 11:23 AM, tim Rowledge tim@rowledge.org wrote:
Although Eliot's little REPl thing for image testing is cool, it is minimal and would need extending to be generally useful.
+0. It's not cool and it would indeed need extending. I took a quick amble down the rabbit-hole to see what other REPL things people have made for Squeak and it looks to me that the most advanced one was the REPL package within www.squeaksource.com/ SecureSqueak
Was. Pharo have something much more up-to-date. Take a look at that. They have full curses integration so colored output and the possibility of doing an emacs-like input editor.
It's quite old and includes classes like ANSIStream (which I'm going to guess was a pre-i18n work way of dealing with the Squeak charset issues). It apparently "Requires Comanche (or at least ConnectionHandler and SocketStream)." to quote from the swiki page where I found out about it (http://wiki.squeak.org/ squeak/2648)
A modernised version would be a nice thing to have. I'm pretty much certain I've heard of work on a 'squeak shell' too - which I suspect would be Craig? Am I remembering something about 'squish'? - but I can't find anything right now.
I would look at the Pharo system. _,,,^..^,,,_ best, Eliot
On Sun, Apr 8, 2018 at 3:28 PM, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Just to give my 2 cents on the subject, when I started this thread I was just asking for an easy way to have an interactive headless console application.
Start a server on localhost which can then accept commands from one or more terminals or elsewhere. This is how Magma and many other applications work. Multi-user and modal-less.
Quite frankly, I never had the need to compile Smalltalk expressions from a prompt and I've never seen the benefits of it. If one wants to execute Smalltalk code, we do have the capability to do it by providing a script as an argument! Yes, it's quite nice to be able to do so when you want to show off how cool is Smalltalk but is there any *real* use for such a functionality? I doubt it!
+1.
Hi Chris, Hi Benoît,
On Apr 8, 2018, at 5:13 PM, Chris Muller asqueaker@gmail.com wrote:
On Sun, Apr 8, 2018 at 3:28 PM, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Just to give my 2 cents on the subject, when I started this thread I was just asking for an easy way to have an interactive headless console application.
Start a server on localhost which can then accept commands from one or more terminals or elsewhere. This is how Magma and many other applications work. Multi-user and modal-less.
Quite frankly, I never had the need to compile Smalltalk expressions from a prompt and I've never seen the benefits of it. If one wants to execute Smalltalk code, we do have the capability to do it by providing a script as an argument! Yes, it's quite nice to be able to do so when you want to show off how cool is Smalltalk but is there any *real* use for such a functionality? I doubt it!
+1.
You've probably seen this in the other thread. Forgive me; I don't mean to say "I told you so", and the REPL that I did implement is for my own usage, in which I find it much more convenient than scripts. But I don't like to see useful things shot down.
On Apr 12, 2018, at 1:16 AM, Sven Van Caekenberghe sven@stfx.eu wrote:
On 12 Apr 2018, at 03:15, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Sven,
On Wed, Apr 11, 2018 at 1:25 PM, Sven Van Caekenberghe sven@stfx.eu wrote:
On 11 Apr 2018, at 21:44, Stephane Ducasse stepharo.self@gmail.com wrote:
I did not know about the NeoConsole. Nice because I wanted to build a little REPL for my minilanguage implementation.
You are of course welcome to look at it. But it is Pharo specific. I use it to be able to hook/look into running headless server images. For this it is super handy.
Cool usage! Could you tell me whether you type Smalltalk expressions into this to examine your running server? The answer will be used in a related discussion on a mailing list not too distant from this one ;-)
Yes of course, that it the whole purpose, to type in expressions and to manipulate objects in a running image. I recently added options to look at code and change/add methods. All very primitive, but when in trouble, it works well.
So it turns out to be very useful.
Hi Eliot,
I went back to Benoit's words to look for what may have caused negative feelings to emerge. My guess is it must be the last two sentences. From what I know of you, you're in my "friend" psyche, and I read your words in that context. Try to read Benoit's expression of doubt as merely an invitation for someone to please provide some enlightenment. He did say it was "cool," to which I agree, and no one wants to shoot down cool. I want to learn. Please allow me to inquire the circumstances about when a Smalltalk REPL would be useful, and be _necessarily critical_ of that usefulness, without taking it personally but by further enlightenment; which, you did. :)
I'm sincerely intrigued by Smalltalk REPL's, but still skeptical that *I* would have the patience to use them given all the other tools at my disposal; VNC, error-handling, logging, intercepting kill signals, etc. That does not mean it is not useful for others or in other contexts, though.
- Chris
On Thu, Apr 12, 2018 at 3:35 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Chris, Hi Benoît,
On Apr 8, 2018, at 5:13 PM, Chris Muller asqueaker@gmail.com wrote:
On Sun, Apr 8, 2018 at 3:28 PM, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Just to give my 2 cents on the subject, when I started this thread I was
just asking for an easy way to have an interactive headless console
application.
Start a server on localhost which can then accept commands from one or more terminals or elsewhere. This is how Magma and many other applications work. Multi-user and modal-less.
Quite frankly, I never had the need to compile Smalltalk expressions from a
prompt and I've never seen the benefits of it. If one wants to execute
Smalltalk code, we do have the capability to do it by providing a script as
an argument! Yes, it's quite nice to be able to do so when you want to show
off how cool is Smalltalk but is there any *real* use for such a
functionality? I doubt it!
+1.
You've probably seen this in the other thread. Forgive me; I don't mean to say "I told you so", and the REPL that I did implement is for my own usage, in which I find it much more convenient than scripts. But I don't like to see useful things shot down.
On Apr 12, 2018, at 1:16 AM, Sven Van Caekenberghe sven@stfx.eu wrote:
On 12 Apr 2018, at 03:15, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Sven,
On Wed, Apr 11, 2018 at 1:25 PM, Sven Van Caekenberghe sven@stfx.eu wrote:
On 11 Apr 2018, at 21:44, Stephane Ducasse stepharo.self@gmail.com wrote:
I did not know about the NeoConsole. Nice because I wanted to build a
little REPL for my minilanguage implementation.
You are of course welcome to look at it.
But it is Pharo specific.
I use it to be able to hook/look into running headless server images.
For this it is super handy.
Cool usage! Could you tell me whether you type Smalltalk expressions into this to examine your running server? The answer will be used in a related discussion on a mailing list not too distant from this one ;-)
Yes of course, that it the whole purpose, to type in expressions and to manipulate objects in a running image. I recently added options to look at code and change/add methods. All very primitive, but when in trouble, it works well.
So it turns out to be very useful.
Hello all
I'd like to give an example for what Chris writes in the last paragraph or his message
"I'm sincerely intrigued by Smalltalk REPL's, but still skeptical that *I* would have the patience to use them given all the other tools at my disposal; VNC, error-handling, logging, intercepting kill signals, etc. That does not mean it is not useful for others or in other contexts, though."
I agree with that. A Smalltalk REPL might not be a tool to be used much by most Smalltalk developers but it may be a _very_ valuable asset for other groups of people for certain fields of application.
An example: In the JavaScript world there are millions of web developers who use a REPL [4] daily for all of their work.
There are build tools such as grunt [5] and gulp [6] and scaffolding tools such as yeoman [7].
Let's say I want to construct a similar tool or a tool on top of one of these tools in Smalltalk. E.g. the tool might generate a Gruntfile.js [1] and a package.json file [2].
For this I use a few Smalltalk classes put together in a few hours, days or weeks depending on the complexity of the web app to build.
As seen from outside it is a small or larger DSL [3] offered within a command line app. The DSL offers build commands for a web solution (HTML/CSS/JS).
For the target developer group this is seen as something very approachable. It is only needed to set some properties of builder objects and then issue build commands. The syntax is easy to learn and understand. The tool may be used from the command line like all the other tools.
From the Smalltalk developer perspective, i.e. the one who develops
the build tool the graphical environment is used to develop the code. It it then only _deployed_ as a Command line app.
The command line app lowers the bar for entry for the target group of developers. If the command line app is later on seen to be too limited then the graphical Smalltalk IDE may come into action.
Note that on the other side it is also possible to hide the fact that package.json and Gruntfile.js have been generated by a Smalltalk solution, i.e. generate them only once and later on work with these files directly.
Another note is that a Smalltalk REPL solution may be easier to write and deploy than a full 'graphical builder application'.
This means that there is a place for Smalltalk REPL solutions.
Regards Hannes
[1] A Gruntfile.js is something like a Makefile for the nodejs ecosystem.
[2] https://docs.npmjs.com/files/package.json https://nodesource.com/blog/the-basics-of-package-json-in-node-js-and-npm/ The package.json file is core to the Node.js ecosystem and is a basic part of understanding and working with Node.js, npm, and even modern JavaScript. https://www.npmjs.com/ npm is the package manager for JavaScript says it is the world’s largest software registry.
[3] The DSL in fact just being some Smalltalk expressions using a few domain specific classes,
[4] It should also be mentioned that Ruby, Python, Lua and other languages have the REPL as the main interaction tool.
[5] grunt https://gruntjs.com/ a task runner for repetitive tasks like minification, compilation, unit testing, linting, etc, the easier your job becomes. It uses a huge configuration file and the style is declarative.
[6] gulp https://gulpjs.com/ -- another build tool introduced later preferring code over configuration,
[7] yeoman -- http://yeoman.io/ a scaffolding tool for web apps.
On 4/13/18, Chris Muller ma.chris.m@gmail.com wrote:
Hi Eliot,
I went back to Benoit's words to look for what may have caused negative feelings to emerge. My guess is it must be the last two sentences. From what I know of you, you're in my "friend" psyche, and I read your words in that context. Try to read Benoit's expression of doubt as merely an invitation for someone to please provide some enlightenment. He did say it was "cool," to which I agree, and no one wants to shoot down cool. I want to learn. Please allow me to inquire the circumstances about when a Smalltalk REPL would be useful, and be _necessarily critical_ of that usefulness, without taking it personally but by further enlightenment; which, you did. :)
I'm sincerely intrigued by Smalltalk REPL's, but still skeptical that *I* would have the patience to use them given all the other tools at my disposal; VNC, error-handling, logging, intercepting kill signals, etc. That does not mean it is not useful for others or in other contexts, though.
- Chris
On Thu, Apr 12, 2018 at 3:35 AM, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Chris, Hi Benoît,
On Apr 8, 2018, at 5:13 PM, Chris Muller asqueaker@gmail.com wrote:
On Sun, Apr 8, 2018 at 3:28 PM, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Just to give my 2 cents on the subject, when I started this thread I was
just asking for an easy way to have an interactive headless console
application.
Start a server on localhost which can then accept commands from one or more terminals or elsewhere. This is how Magma and many other applications work. Multi-user and modal-less.
Quite frankly, I never had the need to compile Smalltalk expressions from a
prompt and I've never seen the benefits of it. If one wants to execute
Smalltalk code, we do have the capability to do it by providing a script as
an argument! Yes, it's quite nice to be able to do so when you want to show
off how cool is Smalltalk but is there any *real* use for such a
functionality? I doubt it!
+1.
You've probably seen this in the other thread. Forgive me; I don't mean to say "I told you so", and the REPL that I did implement is for my own usage, in which I find it much more convenient than scripts. But I don't like to see useful things shot down.
On Apr 12, 2018, at 1:16 AM, Sven Van Caekenberghe sven@stfx.eu wrote:
On 12 Apr 2018, at 03:15, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Sven,
On Wed, Apr 11, 2018 at 1:25 PM, Sven Van Caekenberghe sven@stfx.eu wrote:
On 11 Apr 2018, at 21:44, Stephane Ducasse stepharo.self@gmail.com wrote:
I did not know about the NeoConsole. Nice because I wanted to build a
little REPL for my minilanguage implementation.
You are of course welcome to look at it.
But it is Pharo specific.
I use it to be able to hook/look into running headless server images.
For this it is super handy.
Cool usage! Could you tell me whether you type Smalltalk expressions into this to examine your running server? The answer will be used in a related discussion on a mailing list not too distant from this one ;-)
Yes of course, that it the whole purpose, to type in expressions and to manipulate objects in a running image. I recently added options to look at code and change/add methods. All very primitive, but when in trouble, it works well.
So it turns out to be very useful.
So it turns out to be very useful.
1. And nearly essential for getting systems admins on board for allowing Seaside on the server.
On Sun, Apr 08, 2018 at 11:23:53AM -0700, tim Rowledge wrote:
Although Eliot's little REPl thing for image testing is cool, it is minimal and would need extending to be generally useful. I took a quick amble down the rabbit-hole to see what other REPL things people have made for Squeak and it looks to me that the most advanced one was the REPL package within www.squeaksource.com/SecureSqueak
It's quite old and includes classes like ANSIStream (which I'm going to guess was a pre-i18n work way of dealing with the Squeak charset issues). It apparently "Requires Comanche (or at least ConnectionHandler and SocketStream)." to quote from the swiki page where I found out about it (http://wiki.squeak.org/squeak/2648)
A modernised version would be a nice thing to have. I'm pretty much certain I've heard of work on a 'squeak shell' too - which I suspect would be Craig? Am I remembering something about 'squish'? - but I can't find anything right now.
I think I also recall some earlier discussion of 'squish', though I cannot find a reference to it now.
I have been using the label "Squeak Shell" for many years in the toolbar->Apps menu to refer to the CommandShell window, and 'sqsh>' is the prompt string that is displayed in the console when you connect a CommandShell to the stdin/stdout/stderr streams.
I should probably change the old labeling that I use for CommandShell, because a much more important use of the term "Squeak Shell" is in for Marcel's SqueakShellProject in package 'SqueakShell' at http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/SqueakShell. This is a small package that really needs to be moved to trunk, but that is a separate topic, and not related to this thread.
Dave
Hi, Dave.
Thank you for the reference. :-)
There is more documentation on this topic in a paper: "Evolving User Interfaces From Within Self-sustaining Programming Environments: Exploring the Project Concept of Squeak/Smalltalk to Bootstrap UIs" http://hirschfeld.org/writings/media/TaeumelHirschfeld_2016_EvolvingUserInte... [http://hirschfeld.org/writings/media/TaeumelHirschfeld_2016_EvolvingUserInte...]
Best, Marcel
Am 09.04.2018 04:47:12 schrieb David T. Lewis lewis@mail.msen.com: On Sun, Apr 08, 2018 at 11:23:53AM -0700, tim Rowledge wrote:
Although Eliot's little REPl thing for image testing is cool, it is minimal and would need extending to be generally useful. I took a quick amble down the rabbit-hole to see what other REPL things people have made for Squeak and it looks to me that the most advanced one was the REPL package within www.squeaksource.com/SecureSqueak
It's quite old and includes classes like ANSIStream (which I'm going to guess was a pre-i18n work way of dealing with the Squeak charset issues). It apparently "Requires Comanche (or at least ConnectionHandler and SocketStream)." to quote from the swiki page where I found out about it (http://wiki.squeak.org/squeak/2648)
A modernised version would be a nice thing to have. I'm pretty much certain I've heard of work on a 'squeak shell' too - which I suspect would be Craig? Am I remembering something about 'squish'? - but I can't find anything right now.
I think I also recall some earlier discussion of 'squish', though I cannot find a reference to it now.
I have been using the label "Squeak Shell" for many years in the toolbar->Apps menu to refer to the CommandShell window, and 'sqsh>' is the prompt string that is displayed in the console when you connect a CommandShell to the stdin/stdout/stderr streams.
I should probably change the old labeling that I use for CommandShell, because a much more important use of the term "Squeak Shell" is in for Marcel's SqueakShellProject in package 'SqueakShell' at http://www.hpi.uni-potsdam.de/hirschfeld/squeaksource/SqueakShell. This is a small package that really needs to be moved to trunk, but that is a separate topic, and not related to this thread.
Dave
Hi Tim--
I'm pretty much certain I've heard of work on a 'squeak shell' too - which I suspect would be Craig? Am I remembering something about 'squish'? - but I can't find anything right now.
Squish is a Quoth[1] app. Quoth evaluates English as Smalltalk code (roughly as a sequence of unary messages, with mild gymnastics for punctuation). It guides a finite state machine, invoking side-effects at some states. It's implemented with anonymous classes that represent the states. The original version runs over a telnet connection, and I'm writing a WebSockets version. It's not in a public repo yet; I mostly use Quoth for musical livecoding onstage.
The most recent demo of Quoth is a movie[2] for the Computer Music Journal's first special issue on musical livecoding.
thanks,
-C
[1] http://netjam.org/quoth [2] https://vimeo.com/50530082
-- Craig Latta Black Page Digital Amsterdam :: San Francisco craig@blackpagedigital.com +31 6 2757 7177 (SMS ok) + 1 415 287 3547 (no SMS)
On 4 May 2018 at 18:53, Craig Latta craig@blackpagedigital.com wrote:
Quoth evaluates English as Smalltalk code (roughly as a sequence of unary messages, with mild gymnastics for punctuation). [1] http://netjam.org/quoth
"Behind the scenes, the system is taking the natural language states traversed by the player and generating Smalltalk code from them." [1]
Wow. Just blew my mind.
cheers -ben
On 05-05-2018, at 12:06 AM, Ben Coman btc@openinworld.com wrote:
On 4 May 2018 at 18:53, Craig Latta craig@blackpagedigital.com wrote:
Quoth evaluates English as Smalltalk code (roughly as a sequence of unary messages, with mild gymnastics for punctuation). [1] http://netjam.org/quoth
"Behind the scenes, the system is taking the natural language states traversed by the player and generating Smalltalk code from them." [1]
Wow. Just blew my mind.
Craig has done some really amazing things over the years. This is just one of them. I always rather liked Oonchahs.
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Strange OpCodes: HCFI: Halt and Catch Fire Immediate
Quoth evaluates English as Smalltalk code (roughly as a sequence of unary messages, with mild gymnastics for punctuation). [1] http://netjam.org/quoth
"Behind the scenes, the system is taking the natural language states traversed by the player and generating Smalltalk code from them." [1]
Wow. Just blew my mind.
Mine too. I really liked the "in" command allowing the user to change context...
Hi Eliot,
On 7 April 2018 at 16:44, Eliot Miranda eliot.miranda@gmail.com wrote:
Hi Alistair,
On Apr 7, 2018, at 4:11 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 7 April 2018 at 10:24, Alistair Grant akgrant0710@gmail.com wrote: Hi Benoit,
On 7 April 2018 at 02:38, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Thanks for your help.
So far, I've had :
a) lots of "primitive failed", most of the time primitiveFileAtEnd (FilePlugin)
I've been able to reproduce this one. I'll take a look and get back to you.
Can you send me steps to reproduce the problem?
$ cd image $ ./buildspurtrunkreaderimage.sh $ myvm spurreader.image squeak> 3 + 4! 7 squeak> Smalltalk quit! $ ./buildspurtrunkreader64image.sh $ myvm spurreader-64.image squeak> 3 + 4! 7 squeak> Smalltalk quit! $
This no longer works on Mac OS X with the latest VMs either.
Thanks! I believe I understand the issue now. I just need to tidy up the code and run it through the usual test suites.
My apologies for the troubles.
Cheers, Alistair
Hi Benoît,
On Apr 6, 2018, at 5:38 PM, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Thanks for your help.
So far, I've had :
a) lots of "primitive failed", most of the time primitiveFileAtEnd (FilePlugin) b) An error/warning message in the console, "VirtualProtect(x,y,PAGE_EXECUTE_READWRITE): No error" and then nothing happens, not even a prompt!
Bizarre that there's an error message for No error.
c) A "Manufactured file handle detected" error d) An emergency error handler e) An error saying "stdout is not open" f) the VM terminating abruptly g) The "Squeak Cog Spur Virtual Machine" unresponsive and totally frozen (not even able to interrupt it!)
This is to be expected. The reader image is blocked in the read in the FilePlugin and so is not running and hence is uninterruptible.
I built the reader to test the thread ffi and to test the simulator. Once we have a production threaded ffi then only the reader process's thread will be blocked in the read and the image will run and the GUI be responsive while the reader is blocked waiting for input. This worked in 2010 in prototype form.
I tried the original and some refactored (VERY simple snippets) examples I could find on the net using :
a) OSProcess b) FileStream c) StdioListener
I have tried all tips & tricks : a) load the "application code" from a script b) doIt the code in a workspace and save the image c) doIt some code with code to save the image first so the rest of the doIt resumes at startup d) I tried so many things I don't remember it all!!
So far, nothing worked, not even was I once close ! Except for the example with StdioListener : it shows the prompt but does nothing with the input...
I'm using Squeak 5.1 32bit on Windows 10.
Are you using an up-to-date console vm?
My goal is to produce a headless application is a *simple* way. It can be a script or some code I execute in a workspace. Then save the image (or whatever step is required).
When running the application, I don't want to have to specify a script to start it up from the console. Also, I don't want to open another command window! I want the app/image to run from the command window without any artifact/trick the same way any other Windows utility/app would work. I also want the application to be interactive (it waits for input, does something with the input, then shows result and presents me with a prompt again).
Right. This is definitely possible. I've just tried 64-bit Mac OS X and things are broken, so it looks like we have a regression somewhere.
Once I get this to work, you can be sure I'll document it in detail !!!!
Benoît St-Jean Yahoo! Messenger: bstjean Twitter: @BenLeChialeux Pinterest: benoitstjean Instagram: Chef_Benito IRC: lamneth Blogue: endormitoire.wordpress.com "A standpoint is an intellectual horizon of radius zero". (A. Einstein)
On Friday, April 6, 2018, 5:42:27 p.m. EDT, tim Rowledge tim@rowledge.org wrote:
On 06-04-2018, at 11:10 AM, Alistair Grant akgrant0710@gmail.com wrote:
Hi Benoit,
On 6 April 2018 at 12:16, Benoit St-Jean via Squeak-dev squeak-dev@lists.squeakfoundation.org wrote:
Is there any way I can start squeak from a command window, *headless*, and WITHOUT providing a script and have an interactive application^ Say, for instance, my application waits for input and answers back the square of the number I type in?
I've tried a gazillion examples I found and it just doesn't work at all...
I'm on Windows 10 if that helps.
https://github.com/OpenSmalltalk/opensmalltalk-vm/blob/Cog/image/buildspurtr...
Just for the record here for the future - this process a) simply loads the CogTools-Listener (sub)package from the VMMaker repository - which is a very small bit of code we could very sensibly include in the default image b) uses a simple initial script to create an image that will start up at the beginning of an incantation that loops around the StdioListener. All you do is start up the image saved after loading the Listener tools with the StartReader.st - subsequent runs do not need that.
Unfortunately it doesn't seem to be working quite right on my Pi at the moment; I get a "squeak>" prompt but it doesn't seem to ever read any input. I know it works in principle because I've used it plenty of times in the past , but clearly I'm forgetting some important detail.
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim
Useful Latin Phrases:- Te audire no possum. Musa sapientum fixa est in aure. = I can't hear you. I have a banana in my ear.
On 06-04-2018, at 2:28 AM, Nicolas Cellier nicolas.cellier.aka.nice@gmail.com wrote:
isn't it precisely what Tim (and you) are trying to achieve thru this call to goodwill?
I was thinking more along the lines of sending out my army of wiki-ninja to beat people into compliance with cattle-prods and so forth.
As Marcus said - https://youtu.be/oUw8VcpBAd4
tim -- tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Death to all fanatics!
I have not seen this mentioned here. This doit: HelpBrowser openOn: SWikiHelp.
With a thoughtful structure to the swiki pages we could have nice in image browsing And editing added in the future.
Best. Karl
On Fri, Apr 6, 2018 at 7:16 PM, tim Rowledge tim@rowledge.org wrote:
On 06-04-2018, at 2:28 AM, Nicolas Cellier <nicolas.cellier.aka.nice@
gmail.com> wrote:
isn't it precisely what Tim (and you) are trying to achieve thru this
call to goodwill?
I was thinking more along the lines of sending out my army of wiki-ninja to beat people into compliance with cattle-prods and so forth.
As Marcus said - https://youtu.be/oUw8VcpBAd4
tim
tim Rowledge; tim@rowledge.org; http://www.rowledge.org/tim Death to all fanatics!
squeak-dev@lists.squeakfoundation.org