Services, Universes, SqueakMap browser all seem broken in 4.5

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
32 messages Options
12
Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Chris Muller-4
>> The idea was to make that "10" a preference value, and to change the
>> tools like "History" to respect the preference.  Because usually we
>> don't need to look back more than 10 versions, but when we did it'd
>> retrieve it automatically, dynamically, silently.
>
> Nice idea in general though I'm not often a fan of the 'silent' bit. And especially not a fan of the 'unasked massive file loading' aspect.
Replacing the ancestry with a stub that can fetch the rest of the
history is an excellent idea but how about making it ask the user
first? It may well be inconvenient or even impossible to fetch the
files, for example. I can see that there might be places where
allowing the user to prevent loading something might cause other
problems, but surely catching those cases would be preferable to
getting the error from a failed network probe?

You want to have a 100% guaranteed interruption prompt box to avoid a
_possible_ network error box 1% of the time?

What is the scenario that has you wanting to stub ancestry and then
get it back in the first place?  In my world, the only use-case I can
think for that is "debugging in production".  I'm in one of my
production images which had been previously "shrunk", and sometimes
viewing change-history is a useful part of debugging.  But if I'm in
the production image then I've got network access so, no problem..?

Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

timrowledge

On 09-04-2014, at 1:43 PM, Chris Muller <[hidden email]> wrote:

>>> The idea was to make that "10" a preference value, and to change the
>>> tools like "History" to respect the preference.  Because usually we
>>> don't need to look back more than 10 versions, but when we did it'd
>>> retrieve it automatically, dynamically, silently.
>>
>> Nice idea in general though I'm not often a fan of the 'silent' bit. And especially not a fan of the 'unasked massive file loading' aspect.
> Replacing the ancestry with a stub that can fetch the rest of the
> history is an excellent idea but how about making it ask the user
> first? It may well be inconvenient or even impossible to fetch the
> files, for example. I can see that there might be places where
> allowing the user to prevent loading something might cause other
> problems, but surely catching those cases would be preferable to
> getting the error from a failed network probe?
>
> You want to have a 100% guaranteed interruption prompt box to avoid a
> _possible_ network error box 1% of the time?

Given an ancestry stubbed by the current proxy based mechanism, yes I’d like to be warned if something causes the proxies to trigger and want to fetch stuff from the net. Errors may be rare but the *time* it takes can be considerable. I have fairly fast net access at home but lots of people don’t. I may simply want to stop the operation because it was triggered by something not really relevant - like accidentally doing so as part of chasing pointers. It isn’t only network failures.

>
> What is the scenario that has you wanting to stub ancestry and then
> get it back in the first place?  In my world, the only use-case I can
> think for that is "debugging in production".  I'm in one of my
> production images which had been previously "shrunk", and sometimes
> viewing change-history is a useful part of debugging.  But if I'm in
> the production image then I've got network access so, no problem..?
>
Not all production images have network access. So there needs to be a way to handle the attempt cleanly.

My scenario is simply an attempt to find out what is occupying so much space in my image and attempt to remove or at least reduce them. Your mechanism for getting rid of a lot of MC version stuff is useful but the proxies cause later issues.

In any sort of production image I suggest that we’d be better off with a way to just remove the MC data completely, and thus avoid the entire proxy discussion. Given a default image distributed with the accent of developer usage -  a perfectly reasonable approach - it would be nice to have easily findable, effective tools to remove as much as possible and practical that can be dumped. 2-3Mb of ancestry data could be argued to have value for developers but not really in production.

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Useful random insult:- During evolution his ancestors were in the control group.



Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Colin Putney-3
In reply to this post by Chris Muller-4



On Wed, Apr 9, 2014 at 3:31 PM, Chris Muller <[hidden email]> wrote:
>> Except for a proxy bug which needs fixed, I'd love to know how you
>> would possibly improve it even if you could do so by the mere snap of
>> your finger.  Because I wanted the best of both worlds.  I want 1) the
>> ability to clean / reduce an image, 2) WITHOUT losing the ability to
>> retrieve the ancestry.  Oh, and 3) it'd be nice if I didn't have to do
>> a special UI operation to "retrieve the ancestry", just have the
>> system retrieve it automatically please only if I do something in the
>> IDE that requires it.
>>
>> Again, assuming all the proxy-bugs fixed, what more could one want in
>> terms of meeting all the demands we want as developers?
>
> How about not downloading megabytes of data from the network when I didn't
> tell it to do that?

There are lots of operations in the IDE that cause network accesses,
and none of them advertise in advance that they'll access the network.
 So this argument is not really a good one against.

Good grief. If I click on something in the IDE, I've told it do something. Depending on what I click on, network access may be quite reasonable. I'm not going to be surprised if opening a repository inspector on a remote repository needs to download data from the network.

On the other hand, network access when you're using "chase pointers" is not expected. It's also surprising when "Smalltalk fixObsoleteReferences" starts downloading packages from SqueakSource.  
 
> Proxies are a
> useful tool, but they should be kept in the bottom of the toolbox and only
> used in special circumstances. The vanilla image shouldn't have proxies.

I think this is your best argument.  I agree Proxies are a powerful
tool to be used sparingly with deliberate care, but it basically boils
down to using a become:, which we already use in numerous other places
in the image.

Become is fine. The problem is #doesNotUnderstand:, combined with not subclassing Object. Operations like chasing pointers, which are normally safe, become decidedly unsafe when applied to these proxies. Again, they shouldn't be in the vanilla image.



Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Eliot Miranda-2



On Wed, Apr 9, 2014 at 2:23 PM, Colin Putney <[hidden email]> wrote:



On Wed, Apr 9, 2014 at 3:31 PM, Chris Muller <[hidden email]> wrote:
>> Except for a proxy bug which needs fixed, I'd love to know how you
>> would possibly improve it even if you could do so by the mere snap of
>> your finger.  Because I wanted the best of both worlds.  I want 1) the
>> ability to clean / reduce an image, 2) WITHOUT losing the ability to
>> retrieve the ancestry.  Oh, and 3) it'd be nice if I didn't have to do
>> a special UI operation to "retrieve the ancestry", just have the
>> system retrieve it automatically please only if I do something in the
>> IDE that requires it.
>>
>> Again, assuming all the proxy-bugs fixed, what more could one want in
>> terms of meeting all the demands we want as developers?
>
> How about not downloading megabytes of data from the network when I didn't
> tell it to do that?

There are lots of operations in the IDE that cause network accesses,
and none of them advertise in advance that they'll access the network.
 So this argument is not really a good one against.

Good grief. If I click on something in the IDE, I've told it do something. Depending on what I click on, network access may be quite reasonable. I'm not going to be surprised if opening a repository inspector on a remote repository needs to download data from the network.

On the other hand, network access when you're using "chase pointers" is not expected. It's also surprising when "Smalltalk fixObsoleteReferences" starts downloading packages from SqueakSource.  

+1
 
> Proxies are a
> useful tool, but they should be kept in the bottom of the toolbox and only
> used in special circumstances. The vanilla image shouldn't have proxies.

I think this is your best argument.  I agree Proxies are a powerful
tool to be used sparingly with deliberate care, but it basically boils
down to using a become:, which we already use in numerous other places
in the image.

Become is fine. The problem is #doesNotUnderstand:, combined with not subclassing Object. Operations like chasing pointers, which are normally safe, become decidedly unsafe when applied to these proxies. Again, they shouldn't be in the vanilla image.

-1.  Proxies should be safe in the debugger and using chase pointers.  We have the mirror primitives and these are used in the debugger and hence one can debug proxies.  Chase pointers needs to be rewritten to use the mirror primitives too.  IMO, a solid proxy implementation is a base facility.

--
best,
Eliot


Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Colin Putney-3



On Wed, Apr 9, 2014 at 4:31 PM, Eliot Miranda <[hidden email]> wrote:
 
-1.  Proxies should be safe in the debugger and using chase pointers.  We have the mirror primitives and these are used in the debugger and hence one can debug proxies.  Chase pointers needs to be rewritten to use the mirror primitives too.  IMO, a solid proxy implementation is a base facility.

Agreed, that would be great.  Until that happy day, though, these proxies cause problems. 

Colin


Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Chris Muller-3
In reply to this post by Colin Putney-3
>> >> Except for a proxy bug which needs fixed, I'd love to know how you
>> >> would possibly improve it even if you could do so by the mere snap of
>> >> your finger.  Because I wanted the best of both worlds.  I want 1) the
>> >> ability to clean / reduce an image, 2) WITHOUT losing the ability to
>> >> retrieve the ancestry.  Oh, and 3) it'd be nice if I didn't have to do
>> >> a special UI operation to "retrieve the ancestry", just have the
>> >> system retrieve it automatically please only if I do something in the
>> >> IDE that requires it.
>> >>
>> >> Again, assuming all the proxy-bugs fixed, what more could one want in
>> >> terms of meeting all the demands we want as developers?
>> >
>> > How about not downloading megabytes of data from the network when I
>> > didn't
>> > tell it to do that?
>>
>> There are lots of operations in the IDE that cause network accesses,
>> and none of them advertise in advance that they'll access the network.
>>  So this argument is not really a good one against.
>
> Good grief. If I click on something in the IDE, I've told it do something.
> Depending on what I click on, network access may be quite reasonable. I'm
> not going to be surprised if opening a repository inspector on a remote
> repository needs to download data from the network.
>
> On the other hand, network access when you're using "chase pointers" is not
> expected. It's also surprising when "Smalltalk fixObsoleteReferences" starts
> downloading packages from SqueakSource.

That's true, but those are just shallow bugs.  I'm not willing to
sacrifice chasePointers any more than am willing to sacrifice using
Proxy's.  That's why I make them work together, rather than restrict
my toolbox.

Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

timrowledge
On a related issue, whilst looking at preferences for Dave’s recent question, I spotted two puzzling options -

menuButtonToolInPane, which appears to have no users at all

traceMessages, which looks like it used to add an interesting option for message browsing but seems not to actually get used right now. If you turn it on, then you get MessageTrace browsers in response to cmd-m/n and so on, but the code in MessageTrace>browseAllCallsOn: (etc) doesn’t seem to be used. Even stuck breaks in there to see if I could catch it. That seems a pity; all that work to write MessageTrace and it can’t be used?

tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: START: Cancel preceding jobs in queue



Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Chris Muller-4
> traceMessages, which looks like it used to add an interesting option for message browsing but seems not to actually get used right now. If you turn it on, then you get MessageTrace browsers in response to cmd-m/n and so on, but the code in MessageTrace>browseAllCallsOn: (etc) doesn't seem to be used. Even stuck breaks in there to see if I could catch it. That seems a pity; all that work to write MessageTrace and it can't be used?


Dude, what are you talking about?  That method is called, you didn't
try hard enough.

traceMessages has worked since 4.1 or 4.2, at least.  I can hardly use
Smalltalk at all without it.  If you think it doesn't work then you
should just leave it on and see...   :)

Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

timrowledge

On 10-04-2014, at 11:34 AM, Chris Muller <[hidden email]> wrote:

>> traceMessages, which looks like it used to add an interesting option for message browsing but seems not to actually get used right now. If you turn it on, then you get MessageTrace browsers in response to cmd-m/n and so on, but the code in MessageTrace>browseAllCallsOn: (etc) doesn't seem to be used. Even stuck breaks in there to see if I could catch it. That seems a pity; all that work to write MessageTrace and it can't be used?
>
>
> Dude, what are you talking about?  That method is called, you didn't
> try hard enough.
>
> traceMessages has worked since 4.1 or 4.2, at least.  I can hardly use
> Smalltalk at all without it.  If you think it doesn't work then you
> should just leave it on and see...   :)

I turn it on. I browse some selector’s implementations. A MessageTrace is built (I trapped that ok) but if I ask for implementors or senders of any method in the list I get a separate browser rather than the added methods in the same list. If I toggle break in MessageTrace>browseAllCallsOn: it never gets run.

Open a plain image straight out of a download. The preference is already set. Open a system browser and pick a method. Click on the ‘implementors’ button - the browser that opens has a model that is a MessageTrace. That seems to demonstrate that the preference is actually ‘true’. Click on ‘senders’ in the method browser & choose one of the menu of selectors. I expected to see the senders added to the method browser.

Looking at the code I see that the button’s selector is #browseSendersOfMessages, which is implemented in StringHolder. Following that seems to lead to #browseAllCallsOn: in SystemNavigation and not in MessageTrace.

Maybe I’ve just misunderstood how to use the facility. If using the obvious buttons and/or menu options isn’t the right way, what is? It may be a wonderful tool, but if I can’t work out how to get one, what use can I make of it?


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Fractured Idiom:- VISA LA FRANCE - Don't leave chateau without it



Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Herbert König
The thing to learn is that the hotkey (ALT + m in Win on a selected
method) reuses the window but the button open new ones.
And for senders (ALT + N) you have to use the list and not the code pane.

Which I' reminded to every now and then because only very seldom I use
the buttons.

Cheers,

Herbert

Am 10.04.2014 21:15, schrieb tim Rowledge:

> On 10-04-2014, at 11:34 AM, Chris Muller <[hidden email]> wrote:
>
>>> traceMessages, which looks like it used to add an interesting option for message browsing but seems not to actually get used right now. If you turn it on, then you get MessageTrace browsers in response to cmd-m/n and so on, but the code in MessageTrace>browseAllCallsOn: (etc) doesn't seem to be used. Even stuck breaks in there to see if I could catch it. That seems a pity; all that work to write MessageTrace and it can't be used?
>>
>> Dude, what are you talking about?  That method is called, you didn't
>> try hard enough.
>>
>> traceMessages has worked since 4.1 or 4.2, at least.  I can hardly use
>> Smalltalk at all without it.  If you think it doesn't work then you
>> should just leave it on and see...   :)
> I turn it on. I browse some selector’s implementations. A MessageTrace is built (I trapped that ok) but if I ask for implementors or senders of any method in the list I get a separate browser rather than the added methods in the same list. If I toggle break in MessageTrace>browseAllCallsOn: it never gets run.
>
> Open a plain image straight out of a download. The preference is already set. Open a system browser and pick a method. Click on the ‘implementors’ button - the browser that opens has a model that is a MessageTrace. That seems to demonstrate that the preference is actually ‘true’. Click on ‘senders’ in the method browser & choose one of the menu of selectors. I expected to see the senders added to the method browser.
>
> Looking at the code I see that the button’s selector is #browseSendersOfMessages, which is implemented in StringHolder. Following that seems to lead to #browseAllCallsOn: in SystemNavigation and not in MessageTrace.
>
> Maybe I’ve just misunderstood how to use the facility. If using the obvious buttons and/or menu options isn’t the right way, what is? It may be a wonderful tool, but if I can’t work out how to get one, what use can I make of it?
>
>
> tim
> --
> tim Rowledge; [hidden email]; http://www.rowledge.org/tim
> Fractured Idiom:- VISA LA FRANCE - Don't leave chateau without it
>
>
>


Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

Chris Muller-4
In reply to this post by timrowledge
> I turn it on. I browse some selector's implementations. A MessageTrace is built (I trapped that ok) but if I ask for implementors or senders of any method in the list I get a separate browser rather than the added methods in the same list. If I toggle break in MessageTrace>browseAllCallsOn: it never gets run.
>
> Open a plain image straight out of a download. The preference is already set. Open a system browser and pick a method. Click on the 'implementors' button - the browser that opens has a model that is a MessageTrace. That seems to demonstrate that the preference is actually 'true'. Click on 'senders' in the method browser & choose one of the menu of selectors. I expected to see the senders added to the method browser.

Ah, okay.  Long-story short -- use the Command+n hot-key.

A little background.  For a Trace to be useful, you can only browse
senders of the method that is selected.  If you select a different
method, then that would be a new Trace, and so starting a new window
is necessary.

But, I see that even selecting the top entry in that menu (the one
that it selected) still opens a new window.  That should be enhanced
to call the same as the hot-key.

To trace inward, only swipe the code in the code pane and press
Command+m.  But if your code-pane is dirty you'll get a new window, of
course.

When you get too many methods in the list, you can swipe a range of
them and Command+d to remove them from the list.  Typically, after
browsing senders or implementors of something like #at: you'll have
more than you want.  A short-cut for paring all but the one(s) you
want is, 1) select/swipe the one(s) you want to keep.  2) Press
Command+Shift+I (capital letter "eye") to invert the selection at that
level, followed by Command+Shift+d to remove the inverted selection.

> Looking at the code I see that the button's selector is #browseSendersOfMessages, which is implemented in StringHolder. Following that seems to lead to #browseAllCallsOn: in SystemNavigation and not in MessageTrace.
>
> Maybe I've just misunderstood how to use the facility. If using the obvious buttons and/or menu options isn't the right way, what is? It may be a wonderful tool, but if I can't work out how to get one, what use can I make of it?

Yes, that first choice in the menu should be checked for the
traceMessages pref..

Reply | Threaded
Open this post in threaded view
|

Re: Services, Universes, SqueakMap browser all seem broken in 4.5

timrowledge

On 10-04-2014, at 12:49 PM, Chris Muller <[hidden email]> wrote:

>> I turn it on. I browse some selector's implementations. A MessageTrace is built (I trapped that ok) but if I ask for implementors or senders of any method in the list I get a separate browser rather than the added methods in the same list. If I toggle break in MessageTrace>browseAllCallsOn: it never gets run.
>>
>> Open a plain image straight out of a download. The preference is already set. Open a system browser and pick a method. Click on the 'implementors' button - the browser that opens has a model that is a MessageTrace. That seems to demonstrate that the preference is actually 'true'. Click on 'senders' in the method browser & choose one of the menu of selectors. I expected to see the senders added to the method browser.
>
> Ah, okay.  Long-story short -- use the Command+n hot-key.

Suggestion; change the help text in the preferences browser to make that a bit clearer. A useful tool that you can’t easily discover and use isn’t really there.


tim
--
tim Rowledge; [hidden email]; http://www.rowledge.org/tim
Strange OpCodes: CPM: Change Programmer's Mind



12