Hi all,
I recently included some new updates: - Fixes to Exceptions by Andrés Valloud and Martin McClure. - Assessments framework for testing and validation by Andrés Valloud. - Many fixes and enhancements to Layouts, Window drawing, keyboard shortcuts, etc. by Luciano Notarfrancesco Thank you very much Folks! Andrés, Luciano, please comment a bit on what you did, especially subtle but important behavior such as Exceptions and new stuff like Assessments, and the new Theme and Window Manager. Cheers, Juan Vuletich _______________________________________________ Cuis mailing list [hidden email] http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org |
Hi all, About my recent changes, some of them are 1) extensions to Theme to be able to customize some more aspects of how the windows and widgets look, or 2) fixes for small bugs that I found on the way, like misalignments of a few pixels between parts of a widget or a window. The motivation behind this was just to be able to implement a very minimalist look (borders of just 1 pixel, no decorations, no icons, no anything that I dont need and takes up screen real estate), and a sort of tiling dynamic window manager very much like http://dwm.suckless.org (https://github.com/len/Cuis-Smalltalk-DWM). In order to implement this "window manager" as an external package with minimal changes to the core system, I decided to: 1) make the current Theme receive messages #windowOpen: #windowClosed: every time SystemWindows are open or closed, in order to give it a chance to implement window-management behaviour or delegate it to a proper window manager; 2) move the window-management keyboard shortcuts (like alt-w to close) to Theme, so it is all in one place, easy to change, and easy to make a Theme that delegates keyboard events to a proper window manager. Again I did it like this in order to minimize changes to the core system. At the moment window management is in part implemented in SystemWindow, and also in HandMorph and Morph. I had to make some small modifications in order to get the desired behavior when using DWM, and keep the original behavior in the base system. Maybe in the long run we would want to have a WindowManager class that do this, handle keyboard events for the window-management shortcuts and receives #windowOpen: and #windowClosed:, etc. But I would like to think better about this before adding new concepts and complexity to the core. Cheers, Luciano On Mon, Nov 23, 2015 at 12:59 PM, Juan Vuletich <[hidden email]> wrote: Hi all, _______________________________________________ Cuis mailing list [hidden email] http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org |
Hello,
The fixes to exceptions are about solving subtle misbehaviors with the messages #pass, #outer, and #resignalAs:. Generally speaking, the main issue was that the correct handler block wouldn't be found. Thus, for example, sending the message #pass would fail to find a default handler. I found these types of issues while porting Assessments (more on Assessments below), because it uses #pass to track exceptions, and #resignalAs: to remap other exceptions into exceptions Assessments understands. Correct nested execution of #pass required a stack of handler contexts, thus now exceptions keep an ordered collection of handler contexts rather than just the topmost handler. Surely this is not the only way this can be done. Assessments is a testing framework specifically designed with collaboration in mind. I had been making SUnit extensions since 2001, and eventually I realized sharing such extensions and improvements with other SUnit users would be fundamentally obstructed. SUnit's design is such that one has to change the framework itself in order to extend its behavior. Thus, what I change in my image does not necessarily have to work in someone else's image, and vice versa. As a result, most SUnit users end up implementing extensions such as file logging or more extensive result reporting, and those extensions are incompatible with each other. Instead, Assessments is built around the principle that the testing framework's behavior and extensibility should rely on object composition rather than subclassing. In addition, a few critical objects are now reified explicitly. Chief among them is the Assessment (the "test suite"), with its evaluation context (no parallel). The key is that the evaluation context of an assessment can change how tests are executed, how results are collected, and so on. Since this is done by object composition, it's trivial to e.g. set up an assessment to report results to multiple files and to the GUI without changing Assessments itself. As a result, extensions can be shared without the threat of immediate incompatibility. But what about pre-existing SUnit tests? Well surely a new testing framework built around collaboration wouldn't immediately obsolete the enormous body of SUnit tests out there, or force a migration because NIH or something like that. And that's exactly what Assessments accomplishes. Since there is an evaluation context object, an assessment ("test suite") can specify which execution policy goes for which check ("test"). Assessments uses this flexibility to execute SUnit tests in situ, as if SUnit itself was running them. Unlike other solutions deployed to solve this problem, Assessments does not require modifications to existing code. Loading Assessments is effectively invisible to existing SUnit code. The end result is that the Assessments checklist evaluator (the "test runner") displays both SUnit tests and native Assessments tests, and one assessment object can execute both types together. In addiiton, Assessments provides a clean, native implementation of SUnit Validation (also known as "Extreme Validation"), as well as SUnit Benchmarks. Both of these are implemented in terms of Assessments checklists. Briefly, validation involves using tests to verify e.g. business objects at run time. A typical application of validation would be data entry verification. The Benchmarks is another application of tests, where each test measures the time needed to execute some code. In addition, Benchmarks can enforce that some code runs within a certain amount of time. An interesting detail is that the required time is specified in "message send" units, rather than time. Thus, the benchmarks do not become obsolete or inappropriate depending on the speed of the machine where the measurements are taken. For more information, the Assessments package contains more detailed comments as well as links to additional detail. I originally presented Assessments at ESUG 2008, the video of the talk is online here (and other places): https://vimeo.com/1945494 There are also some notes on validation here: http://csl.ensm-douai.fr/Esug2007Media/uploads/1/Extreme.pdf There is also a paper by Leandro Caniglia titled "Extreme Validation", which unfortunately I couldn't immediately find in Google. But I image I can get a copy and put it online somewhere. Andres. On 11/23/15 7:35 , Luciano Notarfrancesco wrote: > Hi all, > About my recent changes, some of them are 1) extensions to Theme to be > able to customize some more aspects of how the windows and widgets look, > or 2) fixes for small bugs that I found on the way, like misalignments > of a few pixels between parts of a widget or a window. The motivation > behind this was just to be able to implement a very minimalist look > (borders of just 1 pixel, no decorations, no icons, no anything that I > dont need and takes up screen real estate), and a sort of tiling dynamic > window manager very much like http://dwm.suckless.org > (https://github.com/len/Cuis-Smalltalk-DWM). > > In order to implement this "window manager" as an external package with > minimal changes to the core system, I decided to: 1) make the current > Theme receive messages #windowOpen: #windowClosed: every time > SystemWindows are open or closed, in order to give it a chance to > implement window-management behaviour or delegate it to a proper window > manager; 2) move the window-management keyboard shortcuts (like alt-w to > close) to Theme, so it is all in one place, easy to change, and easy to > make a Theme that delegates keyboard events to a proper window manager. > > Again I did it like this in order to minimize changes to the core > system. At the moment window management is in part implemented in > SystemWindow, and also in HandMorph and Morph. I had to make some small > modifications in order to get the desired behavior when using DWM, and > keep the original behavior in the base system. Maybe in the long run we > would want to have a WindowManager class that do this, handle keyboard > events for the window-management shortcuts and receives #windowOpen: and > #windowClosed:, etc. But I would like to think better about this before > adding new concepts and complexity to the core. > > Cheers, > Luciano > > > On Mon, Nov 23, 2015 at 12:59 PM, Juan Vuletich <[hidden email] > <mailto:[hidden email]>> wrote: > > Hi all, > > I recently included some new updates: > > - Fixes to Exceptions by Andrés Valloud and Martin McClure. > - Assessments framework for testing and validation by Andrés Valloud. > - Many fixes and enhancements to Layouts, Window drawing, keyboard > shortcuts, etc. by Luciano Notarfrancesco > > Thank you very much Folks! Andrés, Luciano, please comment a bit on > what you did, especially subtle but important behavior such as > Exceptions and new stuff like Assessments, and the new Theme and > Window Manager. > > Cheers, > Juan Vuletich > > _______________________________________________ > Cuis mailing list > [hidden email] <mailto:[hidden email]> > http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org > > > > > _______________________________________________ > Cuis mailing list > [hidden email] > http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org > _______________________________________________ Cuis mailing list [hidden email] http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org |
Thanks, Folks!!!
Cheers, Juan Vuletich On 27/11/2015 12:21 p.m., Andres Valloud wrote: > Hello, > > The fixes to exceptions are about solving subtle misbehaviors with the > messages #pass, #outer, and #resignalAs:. Generally speaking, the > main issue was that the correct handler block wouldn't be found. > Thus, for example, sending the message #pass would fail to find a > default handler. I found these types of issues while porting > Assessments (more on Assessments below), because it uses #pass to > track exceptions, and #resignalAs: to remap other exceptions into > exceptions Assessments understands. Correct nested execution of #pass > required a stack of handler contexts, thus now exceptions keep an > ordered collection of handler contexts rather than just the topmost > handler. Surely this is not the only way this can be done. > > Assessments is a testing framework specifically designed with > collaboration in mind. I had been making SUnit extensions since 2001, > and eventually I realized sharing such extensions and improvements > with other SUnit users would be fundamentally obstructed. SUnit's > design is such that one has to change the framework itself in order to > extend its behavior. Thus, what I change in my image does not > necessarily have to work in someone else's image, and vice versa. As > a result, most SUnit users end up implementing extensions such as file > logging or more extensive result reporting, and those extensions are > incompatible with each other. > > Instead, Assessments is built around the principle that the testing > framework's behavior and extensibility should rely on object > composition rather than subclassing. In addition, a few critical > objects are now reified explicitly. Chief among them is the > Assessment (the "test suite"), with its evaluation context (no > parallel). The key is that the evaluation context of an assessment > can change how tests are executed, how results are collected, and so > on. Since this is done by object composition, it's trivial to e.g. > set up an assessment to report results to multiple files and to the > GUI without changing Assessments itself. As a result, extensions can > be shared without the threat of immediate incompatibility. > > But what about pre-existing SUnit tests? Well surely a new testing > framework built around collaboration wouldn't immediately obsolete the > enormous body of SUnit tests out there, or force a migration because > NIH or something like that. And that's exactly what Assessments > accomplishes. Since there is an evaluation context object, an > assessment ("test suite") can specify which execution policy goes for > which check ("test"). Assessments uses this flexibility to execute > SUnit tests in situ, as if SUnit itself was running them. Unlike > other solutions deployed to solve this problem, Assessments does not > require modifications to existing code. Loading Assessments is > effectively invisible to existing SUnit code. > > The end result is that the Assessments checklist evaluator (the "test > runner") displays both SUnit tests and native Assessments tests, and > one assessment object can execute both types together. > > In addiiton, Assessments provides a clean, native implementation of > SUnit Validation (also known as "Extreme Validation"), as well as > SUnit Benchmarks. Both of these are implemented in terms of > Assessments checklists. Briefly, validation involves using tests to > verify e.g. business objects at run time. A typical application of > validation would be data entry verification. The Benchmarks is > another application of tests, where each test measures the time needed > to execute some code. In addition, Benchmarks can enforce that some > code runs within a certain amount of time. An interesting detail is > that the required time is specified in "message send" units, rather > than time. Thus, the benchmarks do not become obsolete or > inappropriate depending on the speed of the machine where the > measurements are taken. > > For more information, the Assessments package contains more detailed > comments as well as links to additional detail. I originally > presented Assessments at ESUG 2008, the video of the talk is online > here (and other places): > > https://vimeo.com/1945494 > > There are also some notes on validation here: > > http://csl.ensm-douai.fr/Esug2007Media/uploads/1/Extreme.pdf > > There is also a paper by Leandro Caniglia titled "Extreme Validation", > which unfortunately I couldn't immediately find in Google. But I > image I can get a copy and put it online somewhere. > > Andres. > > On 11/23/15 7:35 , Luciano Notarfrancesco wrote: >> Hi all, >> About my recent changes, some of them are 1) extensions to Theme to be >> able to customize some more aspects of how the windows and widgets look, >> or 2) fixes for small bugs that I found on the way, like misalignments >> of a few pixels between parts of a widget or a window. The motivation >> behind this was just to be able to implement a very minimalist look >> (borders of just 1 pixel, no decorations, no icons, no anything that I >> dont need and takes up screen real estate), and a sort of tiling dynamic >> window manager very much like http://dwm.suckless.org >> (https://github.com/len/Cuis-Smalltalk-DWM). >> >> In order to implement this "window manager" as an external package with >> minimal changes to the core system, I decided to: 1) make the current >> Theme receive messages #windowOpen: #windowClosed: every time >> SystemWindows are open or closed, in order to give it a chance to >> implement window-management behaviour or delegate it to a proper window >> manager; 2) move the window-management keyboard shortcuts (like alt-w to >> close) to Theme, so it is all in one place, easy to change, and easy to >> make a Theme that delegates keyboard events to a proper window manager. >> >> Again I did it like this in order to minimize changes to the core >> system. At the moment window management is in part implemented in >> SystemWindow, and also in HandMorph and Morph. I had to make some small >> modifications in order to get the desired behavior when using DWM, and >> keep the original behavior in the base system. Maybe in the long run we >> would want to have a WindowManager class that do this, handle keyboard >> events for the window-management shortcuts and receives #windowOpen: and >> #windowClosed:, etc. But I would like to think better about this before >> adding new concepts and complexity to the core. >> >> Cheers, >> Luciano >> >> >> On Mon, Nov 23, 2015 at 12:59 PM, Juan Vuletich <[hidden email] >> <mailto:[hidden email]>> wrote: >> >> Hi all, >> >> I recently included some new updates: >> >> - Fixes to Exceptions by Andrés Valloud and Martin McClure. >> - Assessments framework for testing and validation by Andrés >> Valloud. >> - Many fixes and enhancements to Layouts, Window drawing, keyboard >> shortcuts, etc. by Luciano Notarfrancesco >> >> Thank you very much Folks! Andrés, Luciano, please comment a bit on >> what you did, especially subtle but important behavior such as >> Exceptions and new stuff like Assessments, and the new Theme and >> Window Manager. >> >> Cheers, >> Juan Vuletich >> >> _______________________________________________ >> Cuis mailing list >> [hidden email] <mailto:[hidden email]> >> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org >> >> >> >> >> _______________________________________________ >> Cuis mailing list >> [hidden email] >> http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org >> > > _______________________________________________ > Cuis mailing list > [hidden email] > http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org > _______________________________________________ Cuis mailing list [hidden email] http://jvuletich.org/mailman/listinfo/cuis_jvuletich.org |
Free forum by Nabble | Edit this page |