zenrain
So, I thought I'd write down some thoughts in no particular order on filtering, as well as some issues, and questions.

Issue - Filtering in expanded view. When you filter in expanded view, because thoughts have less interconnectivity you get the thought flyaways when you activate a different thought on the report. Thought flyaways, documented before elsewhere, means that the thought that was activated prior to the selection shoots off the plex. When you click on the prior thought, it goes to re-center, and depending on how far away from the other thought it has gone, it may take quite a long time to get back to that thought, all the while the plex has no thoughts in view.

Which brings me to filtered plexes. I've been thinking about how to adjust my thought types to accommodate the new filter feature. What I've done in the past is assigned thought types, but not given any mind to the interconnecting thoughts. With the filtering feature, even if I have multiple thoughts for that type under a parent, if the parent doesn't have that type, they will all show separately.
I've been mulling this over, and it seems like there are several ways to combat this.
  • Give the connecting thought that type also. This will allow you to see the links, but it will "dilute" your thought types so they include connecting thoughts. This is fine for the plex, not so much for reporting.
  • Create a "Connect" type, and always include that type when you create a report based on types. This is good because it doesn't dilute your existing types, but you will have to think about the relationship and assigning a "Connect" type when appropriate. This may or may not be a pain. You would also have to use the custom report rather than the one-click report.
  • Create a Supertype for the existing type that encompasses the original type and any connecting thoughts. This still requires more work, but doesn't dilute your thought types. It also doesn't allow you to mix connecting thoughts between different thought types (as there is only one type per thought).
So my question is, how do you plan to use filtering? Just based on dates? Are you planning to use tags and types also? Will you just work from the report output, or do you plan to work in the plex while filtered also? If so, do you have any other ideas on how to deal with connecting thoughts?
Finally, can you think of a way to overcome this programatically (ie a feature request)?
The best thing I can come up with is if a thought joins two filtered thoughts, include it in the plex but not the report. This seems pretty complex from a programmatic standpoint, but that's based on an uneducated guess.

Edit:
Another possible solution is to use a tag for connecting thoughts. This has a similar disadvantage to the "Connect" type, but doesn't consume a Type for that thought.
Windows 7
J-1.6.0_22
--
OSX 10.6.3
Java SE 6
Quote
dyslucksia
Very Thoughtful.

Historically speaking, I have the impression (only an impression, though) that since tags weren't properly developed features until 5.0, users would try using supertypes, which have been around longer, to do things that tags would be used for today. Correct me if I'm wrong here.

Quote:
So my question is, how do you plan to use filtering?


The paradox is that, the more features PB contains, the harder it makes sitting down and designing a Brain that optimizes the use of these features. It's like being spoiled for choice. That doesn't mean we should have fewer features, but that we need  more examples of Brains using these new features so we can start generalizing and laying down design guidelines where possible.

One place to start with filtering is to consider temporary vs permanent filtering. I agree that adding a temporary thought type to solve a temporary problem is not the way to do it. Filtering on tags, rather than types, is how I'd prefer do it. As you say, assigning types needs a lot more planning. Adding and removing Tags can be done on the fly. Luckily we can assign, remove and change thought types and tags en masse. Links - don't even think about them.

This gives us not fewer than six potential ways of filtering Thoughts:
  • by type;
  • by tag;
  • by date;
  • by name (Extended/Advanced Search, Instant Search, Crawl Plex);
  • by content (Extended/Advanced Search - Label, Notes, Files)
  • (by link type - visually only).
Although we can't add Instant Search results to selection (pity!), I included it here because we can link a key (parent/jump) thought as a kind of tag/alias/keyword thought, and find it if we need by Instant Search, even assigning all instances of this its own type, tag or in-name label to facilitate searching.

Now with the Report filtering toggle it suddenly becomes easy to select the intersection of two tags, as shown here. Either of these tags could have been pre-filtered by type. The intersection result can be added to selection (via the Edit menu) then used as a filter for Advanced Search Results, if need be (when they get around to fixing that #$%^&* bug). Considering that Advanced Search can perform Boolean search on multiple tags and be limited to a specific Thought type, that's not bad! Inverse filtering is the dark horse and should open up all manner of extra possibilities. Substitute Crawl results for Advanced Search, and we should have sophisticated ways of delineating Thought trees.

Quote:
Another possible solution is to use a tag for connecting thoughts. This has a similar disadvantage to the "Connect" type, but doesn't consume a Type for that thought.


I'm just wondering why you need separate connecting Thoughts at all. If you could get by without them, you wouldn't need to worry about consuming another type or assign a separate tag.

One solution I've started using lately is applying Context-sensitive naming at both ends. In set theory terms, Thoughts common to two branches would be termed the intersection of the two branches.  Venn diagrams can be helpful here. If each of these has two tags (i.e. each branch has its own tag, and the common Thought is tagged with one for each), this does away with the need for a separate connecting Thought with its own type or tag. This cannot be done by types as a Thought can have only one type.



However, there's nothing to stop you from creating a third tag to apply only to such connecting Thoughts, to help you define the boundaries between trees more clearly



Quote:
Will you just work from the report output, or do you plan to work in the plex while filtered also? If so, do you have any other ideas on how to deal with connecting thoughts? Finally, can you think of a way to overcome this programatically (ie a feature request)?


I don't think one can actually work from Reports results until they have been added to selection, then maybe assigned a temporary tag. We can't change tags or types directly in Reports without doing it via Selection. After all, Reports is just that - a static report.

I certainly plan to work in a filtered plex, and as I expressed to Harlan here, I think inverse filtering will prove more useful to me than direct filtering, for the following reason. When we select a Thought in the Plex, it's commonly because we are interested in one or a subset of its child Thoughts. Now if the Thoughts we don't want to work with can be filtered out using a particular tag or type, they can then be masked in the Plex so that what we are left with is the complement (set difference) of these child Thoughts.

Another way to achieve this is to use Advanced Search to find all child Thoughts in this set that fit a certain criterion, Add these search results to selection, tag them with a temporary holding tag, inverse filter by this tag, then they are excluded from the Plex.

If it were simply possible to move focus from Plex to Reports with one keystroke, analogous to F5, it would be a simple matter to create a macro to do all this in one step.

PB 5.5.2.1 on Windows XP, J-1.6.0_17
Quote
dyslucksia
I also see that selection of contiguous Thoughts in Reports is planned. This will further enable filtering by allowing the user to custom select a group of Thoughts out of Reports (say, all Thoughts whose names commence with A through to E), then add them to Selection and work on them.

http://thebrain.uservoice.com/pages/4597-personalbrain/suggestions/261274-contiguous-selection-of-blocks-of-thoughts-in-reports-and-selection-box

PB 5.5.2.1 on Windows XP, J-1.6.0_17
Quote
zenrain
Sorry, what I meant from 
Quote:
Will you just work from the report output, or do you plan to work in the plex while filtered also? If so, do you have any other ideas on how to deal with connecting thoughts?

Was when you have filtered the plex from a report, as stated if you don't use a connection somehow you will end up with a bunch of separate thoughts in the plex (unless you also tag a parent thought or jump thought with the tag, type or whatever you are filtering on). 
So my question was mainly will you activate the thought's solely from the reports result, or will you use a method to link the thoughts so they display as groupings in the plex?

I think I'm leaning towards the tag method also, thanks for firming up my musings on this. 

Finally, I haven't even begun to consider inverse filtering. You are right, when using it, it would be to filter stuff out which may prove as, or even more useful-er.

I have a feeling that in the future it's going to tie together much more firmly. From my perspective it appears like we are beginning to see the implementation of an idea in increments, and we are at the beginning. One of the "started" features is structured meta-data. Combined with filtering it has the opportunity to make PB much more powerful. However, with great power comes great responsibility, and designing a brain that is also optimized for searching and filtering is going to be interesting.
Windows 7
J-1.6.0_22
--
OSX 10.6.3
Java SE 6
Quote
dyslucksia
I've thought about Reports filter a bit more and posted some suggestions here:
http://thebrain.websitetoolbox.com/post?id=3712220

PB 5.5.2.1 on Windows XP, J-1.6.0_17
Quote

Newsletter Signup  Newsletter        Visit TheBrain Blog   Blog       Follow us on Twitter   Twitter       Like Us on Facebook   Facebook         Watch Us on Youtube  YouTube       

TheBrain Mind Map & Mindmapping Software     Download TheBrain Mind Mapping Software