Hi, Alex Syrel, Andrei Chis and I are happy to announce a new addition to the Glamorous Toolkit: GTSpotter, a novel interface for spotting objects. GTSpotter has two goals: - Provide a uniform yet moldable interface that can work on any object, and - Handle searching through arbitrary levels of object nesting. We think this will have a significant impact on the development workflow in Pharo. Here is a couple of screenshots: A trailer is available here: A detailed description is available here: It works already in Pharo 3.0 and can be played with by following the instructions from: Please let us know what you think. Enjoy, The Glamorous Team
|
Hola,
Andrei demoed it to me on friday and it is *extremely* cool. I can’t wait to start using it for my next development session. I have one request though (as I already mentioned to Andrei). Since you are using a significant part of the screen, it would not be costly to (e.g. at the bottom) put a small legend of the non-obvious keystroke combinations. It would greatly increase discoverability of the features of the tool. Considering the blog post, the legend would be ( I don’t understand the difference between the last 2): Cmd+Shift+ArrowUp/ArrowDown = Next/Prev category, Cmd+RightArrow = Dive into, Cmd+Shift+RightArrow = ??? > On Dec 7, 2014, at 10:14, Tudor Girba <[hidden email]> wrote: > > Hi, > > Alex Syrel, Andrei Chis and I are happy to announce a new addition to the Glamorous Toolkit: > GTSpotter, a novel interface for spotting objects. > > GTSpotter has two goals: > - Provide a uniform yet moldable interface that can work on any object, and > - Handle searching through arbitrary levels of object nesting. > > We think this will have a significant impact on the development workflow in Pharo. > > Here is a couple of screenshots: > <gtspotter-packages-classes.png> <gtspotter-dive-class-method-sender.png> <gtspotter-playground.png> > > > A trailer is available here: > https://www.youtube.com/watch?v=PhSmjR3NOlU > > A detailed description is available here: > http://www.humane-assessment.com/blog/introducing-gtspotter > > It works already in Pharo 3.0 and can be played with by following the instructions from: > http://gt.moosetechnology.org > > Please let us know what you think. > > Enjoy, > The Glamorous Team ---> Save our in-boxes! http://emailcharter.org <--- Johan Fabry - http://pleiad.cl/~jfabry PLEIAD lab - Computer Science Department (DCC) - University of Chile |
Hi, Yes, we will still evolve the UI. At the very least you will get the shortkeys directly on the actions. The answer to your question is in the blog post: GTSpotter offers an extra action: diving in a category. Pressing Cmd+Shift+ArrowRight dives in the collection object containing only the items from that category. Thus, we can continue refining the search inside the category. So, you will open the collection of that sub-category and you will see more items at once (not just 5). Is it clearer now? Cheers, Doru On Sun, Dec 7, 2014 at 2:52 PM, Johan Fabry <[hidden email]> wrote: Hola, |
In reply to this post by Tudor Girba-2
Cool. Interesting. I recognize some of the patterns I use, but in a slightly different form.2014-12-07 14:14 GMT+01:00 Tudor Girba <[hidden email]>:
|
In reply to this post by Tudor Girba-2
Thanks, Stef.
On Sun, Dec 7, 2014 at 2:35 PM, stephane ducasse <[hidden email]> wrote:
This first incarnation of the interface is meant to replace the top level search because that was easier. There is more to come, and we definitely will get to replace the senders, and integrate it even deeper in the workflow
Exactly. This problem exists in any IDE I know. Doru
|
2014-12-07 15:56 GMT+01:00 Tudor Girba <[hidden email]>:
AltBrowser has that type of search builtin. Not the refactoring step, still. RBEnvironment allows that easily, it's just that the tools are not designed for it. Thierry
|
In reply to this post by Tudor Girba-2
Hi,
This is indeed a significant challenge. Until that point we need a couple of more features, of which the most important is the preview for the selected object. This will come and then we can consider what we can do with it. But, in the meantime, there are a lot of use cases nobody ever considered exactly because there was no easy way to consider them. Like finding all the methods from CodeHolder* that are annotated with <systemsettings>. Or like searching a Person in a Agenda model that someone develops. The cool thing is that you can program this yourself :). Cheers, Doru On Sun, Dec 7, 2014 at 4:05 PM, stephane ducasse <[hidden email]> wrote:
|
:) I know how this feels. On the other hand, with this one we target 15 minutes (= the coffee break) :) Doru On Sun, Dec 7, 2014 at 4:20 PM, stephane ducasse <[hidden email]> wrote:
|
In reply to this post by Tudor Girba-2
> On 07 Dec 2014, at 14:14, Tudor Girba <[hidden email]> wrote: > > Alex Syrel, Andrei Chis and I are happy to announce a new addition to the Glamorous Toolkit: > GTSpotter, a novel interface for spotting objects. Excellent work, all around. Congratulations to the team. Thank you for pushing things like this, for thinking differently. Yes, I want this in Pharo 4 too, ASAP (especially since the main shortcut is different from the old one, cmd+Enter vs. shift+Enter). The presentation is again very well done too: excellent article, super movie. You are putting the bar very high for the rest of us ;-) A suggestion/idea: would it be possible to take the current selection anywhere and feed it into Spotter ? That way there would be very good way to make it replace all the other shortcuts: you would get implementers, senders, references almost for free. Sven |
Hi Sven, Thanks for the kind words. Indeed, having the current selection is one of the things we should keep in mind. For that we need to go to the next step and integrate the interface in the overall environment. This will certainly come. Cheers, Doru On Sun, Dec 7, 2014 at 6:57 PM, Sven Van Caekenberghe <[hidden email]> wrote:
|
In reply to this post by Thierry Goubier
Hi,
On Sun, Dec 7, 2014 at 3:52 PM, Thierry Goubier <[hidden email]> wrote:
Could you detail? I am asking because I am interesting in search use cases to see if they can be expressed in terms of Spotter of if we need to extend the interface in some way. GTSpotter is supposed to be moldable thus, it is important for it to handle as many use cases as possible.
What do you mean by long top-level lists? Do you refer to categories for which a query can show many results? In this case, our interface always limits the amount per category to 5. After reaching 5 items, the rest is being computed in a process with lower priority so as not to mess too much with the responsiveness of the UI. If you want to see more than 5, you can always dive in the category and then you focus only on that category. It seems to work well enough. You should also take into account that most widgets you see are hand-made in a lighter Morphic (called Brick) created by Alex Syrel. The goal of this one is to be fast and scalable. Does that answer the question?
Thanks. Indeed, the work was quite intensive and we went through 3 major variations of the implementations. Cheers, Doru
|
In reply to this post by Thierry Goubier
Hi Thierry, What I meant is that no IDE I know allows you to refine search through arbitrary levels of nesting. For example, looking for senders, filter, implementors, filter, senders, filter ... Is the AltBrowser able to do that? If so, I missed this one. Cheers, Doru On Sun, Dec 7, 2014 at 4:00 PM, Thierry Goubier <[hidden email]> wrote:
|
In reply to this post by Tudor Girba-2
Doru,
One of the things/aspects that I miss a bit is the 'objects' part. In your overall description/presentation you talk about 'objects', but right now I would say it are mainly 'code objects' like classes & methods and friends, and some IDE artefacts, like menus. What about arbitrary (user) objects ? Literal constants, like 123, 'some string' ? Globals like the Transcript ? Singletons accessible by class side accessors, like announcers ? An evaluation functionality, just type an expression ? Examples ? The clipboard (contents), open windows, processes, ... Anyway, I am sure you get the idea ;-) Sven > On 07 Dec 2014, at 19:07, Tudor Girba <[hidden email]> wrote: > > Hi Sven, > > Thanks for the kind words. Indeed, having the current selection is one of the things we should keep in mind. For that we need to go to the next step and integrate the interface in the overall environment. This will certainly come. > > Cheers, > Doru > > > > On Sun, Dec 7, 2014 at 6:57 PM, Sven Van Caekenberghe <[hidden email]> wrote: > > > On 07 Dec 2014, at 14:14, Tudor Girba <[hidden email]> wrote: > > > > Alex Syrel, Andrei Chis and I are happy to announce a new addition to the Glamorous Toolkit: > > GTSpotter, a novel interface for spotting objects. > > Excellent work, all around. Congratulations to the team. Thank you for pushing things like this, for thinking differently. > > Yes, I want this in Pharo 4 too, ASAP (especially since the main shortcut is different from the old one, cmd+Enter vs. shift+Enter). > > The presentation is again very well done too: excellent article, super movie. You are putting the bar very high for the rest of us ;-) > > A suggestion/idea: would it be possible to take the current selection anywhere and feed it into Spotter ? That way there would be very good way to make it replace all the other shortcuts: you would get implementers, senders, references almost for free. > > Sven > > > > > > -- > www.tudorgirba.com > > "Every thing has its own flow" |
Hi Sven,
Exactly! :) To be relevant, we had to show how it solves existing use cases (plus a bit more :)). Next we will focus on objects that are less "code". The hard part of actually getting the interface smooth and performant was kind of done. It's play time now :). As I noted in the post, we already have some 30 extensions for handling these cases. This was actually easy. The menu is an example of how we used this concept to approach a problem that is classically dealt with in a completely different way. There are a couple of things we did not show yet. For example, we already have a simple implementation of how to make a Moose model completely browseable through this interface. But, as with the inspector, the coolest thing is that if someone has a specific need, it is even simpler than with the inspector to hook that need in the system and make it searchable. Your list is definitely exciting, and I am hoping that people will start playing a bit and discover things we otherwise would not consider. It should be easier than with the inspector (because there are less things to specify, hence less variation). And wait to see what happens when we start to combine this interface with others. For example, the interesting thing about being able to search a menu is that you can actually open any menu with a spotter, which essentially has the potential of changing the way we deal with contextual actions (all through keybindings without shortcuts). I am quite sure we are just scratching the surface of what is possible. So, let's play together :). Cheers, Doru On Sun, Dec 7, 2014 at 10:35 PM, Sven Van Caekenberghe <[hidden email]> wrote: Doru, |
In reply to this post by Tudor Girba-2
2014-12-07 20:19 GMT+01:00 Tudor Girba <[hidden email]>:
Well, the hierarchical, drill-down type of recursive searches is something I do regularly, so I can relate. They are not as general; they revolve as a cascading sequence of implementors/finder/senders/accesses/package/class searches, but from inside the browser (but, since a search result is given in a browser, then you can keep drilling down).
Ok. I see how you are targetting that. I was thinking of what would happen if you have many extensions going into the root items.
Cool. It's an issue for many things, and its great to see someone tackling speed issues. I dropped some type of Morphs for that reason.
Yes, it did.
What was I told about Smalltalk the very first time I had to use it as a student? "the language where you can break and redo all your code in a very short time.". Thierry
|
Hi,
On Mon, Dec 8, 2014 at 12:29 AM, Thierry Goubier <[hidden email]> wrote:
I see. We put quite some work in this issue actually. Originally, we showed the list of categories like in Spotlight on Mac, but then we noticed we do not know what categories actually provide a match. So, if you look closely, the widget shows all categories that are at the top and at the bottom of the visible items. As you scroll they scroll in and out of the main list. If there are too many on a row, the labels trim down nicely. We tried with a couple of dozens and it scales reasonably well. I think this widget is quite cool and rather unique (I have not seen this design anywhere else). I will try to describe these design decisions in a future post.
Indeed. For us, that time was less than 2 months and we started from scratch. Cheers, Doru
|
In reply to this post by Tudor Girba-2
2014-12-07 20:21 GMT+01:00 Tudor Girba <[hidden email]>: It is able to do that. It's very simple: every search you do is answered as a browser instance scoped to the RBEnvironment containing the search results. So, depending on what you search next, it happens in the current scope or in the parent scope, and recursively constrain the scope The finder is integrated into that (i.e. finder searches, any type, are scoped to the RBEnvironment). Refactoring commands are (should be) restricted to that scope. Limitation: RB environments are not dynamic. Thierry |
In reply to this post by Tudor Girba-2
Hi Doru and all,
Great work. All these tools are really moving the development experience a step forward :) I will try it ASAP. At this time, I just wonder if it is possible to search text in method sources. It is often useful. Another related thing I don't know how to do, is to refactor a set of methods (could be some methods to 20 or more). In these methods, I send a specific message. Now, I just want to remove the message implementation (it is not a rename) and I have to update the code accordingly. Sometimes, I could do that by just a search/replace (text) functionality (would be cool to use patterns there) in methods source code but I cannot find a way do that for now. So I do it by hand. I wonder if it already exists a way to do that or if GTSpotter could address this issue. Christophe. Le 7 déc. 2014 à 14:14, Tudor Girba a écrit :
smime.p7s (5K) Download Attachment |
Hi Christophe,
On Mon, Dec 8, 2014 at 10:43 AM, Christophe Demarey <[hidden email]> wrote:
It's not done now, but you can just add it. It should probably take you a couple of minutes :). Just try to follow the instructions from the end of the post and let us know how it goes.
I think this is out of the direct realm of GTSpotter. But, it would be an interesting area nevertheless. We would likely be able to benefit from combining somehow RB rules with spotter. Cheers, Doru
|
In reply to this post by Tudor Girba-2
Sorry, but no :-(
I am always confused when people say ‘category’ because the word has so many overloaded meanings. The same happens in the blog post, it is not clear to me what category means here, and what does it have to do with the collection object? > On Dec 7, 2014, at 11:16, Tudor Girba <[hidden email]> wrote: > > Hi, > > Yes, we will still evolve the UI. At the very least you will get the shortkeys directly on the actions. > > The answer to your question is in the blog post: > GTSpotter offers an extra action: diving in a category. Pressing Cmd+Shift+ArrowRight dives in the collection object containing only the items from that category. Thus, we can continue refining the search inside the category. > > So, you will open the collection of that sub-category and you will see more items at once (not just 5). Is it clearer now? > > Cheers, > Doru ---> Save our in-boxes! http://emailcharter.org <--- Johan Fabry - http://pleiad.cl/~jfabry PLEIAD lab - Computer Science Department (DCC) - University of Chile |
Free forum by Nabble | Edit this page |