Tinderbox Forum

Two complete beginner's questions

I have been searching loads of places but there are two questions I cannot find answered.

  1. How can I create a basic link (an arrow from one note to another)? I have read that I should use the “View Pane Link Widget”, but if that is correct, where do I find it?

  2. I am starting from the Reference prototype (having dragged and dropped from Bookends), but I would now like to have some modified versions of that. Is it possible to duplicate the Reference prototype, and then edit it? For example, I would like to be able to set notes different colours or shapes for different types of document or different authors, and the best way to do that would appear to be to start with copies of the Reference prototype and modify them to create different prototypes. The problem with the prototype I created is that it does not display the metadata that appear in the Reference prototype.

Additionally, would it be possible to modify the stamp I use to change the Names of incoming notes so to have a command such as “If $Authors = “Smith” then set Prototype = “Smith reference””?

Sorry these are such basic questions, but I am getting stuck right at the beginning. I find answers to more complicated questions, but not to the real basics.

  1. How can I create a basic link (an arrow from one note to another)? I have read that I should use the “View Pane Link Widget”, but if that is correct, where do I find it?

Select a note in the map. You’ll see eight resize handles at the edges and an arrow-shaped link widget below it.

Note

Click on the arrow and drag the link to its destination. If the destination isn’t handy, there’s a parking space in the upper right-hand corner of the window where you can temporarily park the end of the link.

There’s no need to create a new prototype. Edit the current Reference prototype**. Select it, add new key attributes. Now, newly-made references will inherit your new key attributes. So will existing instances — unless you have changed the key attributes already. In that case, Tinderbox you assumed that those references ought to be different; you can use a stamp or Quickstamp to bring them into conformity if you need to do that.

Thank you for both responses. I am amazed by the quick replies I have had twice today.

The reason I wanted to create a second Prototype is that I wanted to have all references of which the author is, let’s say, “Smith” coloured red, and all the others coloured differently. I also want to distinguish three types of document: such as: publications as rectangles, unpublished papers as lozenges, and letters (as in from one person to another) as circles. I thought the easiest method was to have six prototypes. I also thought I might be able to partially automate this, so that any new note in which the author was “Smith” was given the right colour, and anything containing the word “Letter” was given the right shape. At the moment I have a Stamp that I use to change the name of the note how I want it, and I thought maybe I could include in it, commands to change colour and shape accordingly.

Ah yes! In that case, sure:

  1. Duplicate the References prototype
  2. Name your new prototype.
  3. Set its $Color and $KeyAttributes

Now, after importing a note, you can change its attribute to your new attribute. If you do this a lot, you might be able to write an agent that recognizes “Smith” papers and automatically sets the prototype.

six prototypes sound like overkill. I’d go with an edict (a rule is computationally overkill here). In the ‘Reference’ prototype that is now in your TBX document, try this edict but first a few ambiguities.

How do we know who ‘Smith’ is? Only the first author, or any author?

For the letter/shape thing, an agent might query:

$Prototype=="Reference" & $Text.icontains("letter")

…now we’ve matched every reference with ‘Letter’ or ‘letter’ in it so can action:

$Shape = "circle";

…whatever shape you choose.

In stamp terms, the same is:

if($Prototype=="Reference" & $Text.icontains("letter"){$Shape = "circle";]else{$Shape=;}

Here the ‘else’ branch simply resets the attribute if it doesn’t (any longer) match the query.

So yes, it all sounds do-able. If this isn’t enough info, just describe the logic of what to do and we should be able to help.

Bear in mind—if customising and duplicating ‘Reference’, the Bookends import always uses the ‘Reference’ prototype,. If you duplicate ‘Reference’ and call it something else you’ll always need the extra step of changing the prototype of newly added references to use your prototype as opposed to ‘Reference’. There’s no right answer here: other factors might make the latter the sensible choice.

But, if you know for this document you’ll always want your additions, then make them to the ‘Reference’ prototype. If doing so and updating the app, remember to watch for changes to the built-in ‘Reference’ prototype so as to update your version of it.

Thank you both for these replies. I think agents will have to wait, as I have not got into them yet, but I shall bookmark this reply and turn to it later. Right now it is doing what I need to get a bit more data in, and I can live with a few things I don’t understand like why the colours are different from what the templates say they should be! One thing I am finding is that it is easy to make a wrong choice accidentally. Thus it was trial and error that made me realise that if I drop in a note when something is selected, it creates a container, but if nothing is selected, it creates a basic note. I am genuinely a beginner.

I will just add that ideally “Smith” would be the surname of the first author, which should be the first word in $Authors, separated from the rest of the field by a comma.

Are you sure you mean ‘template’ and not prototypes? Templates are only ever used for export.

If things are not the colour you expect, my guess is you’ve inadvertantly broken inheritance.

Try reading my tutorials on inheritance and on setting prototypes.

If I were doing this, I would have an Attribute called something like “ReferenceType” and have choices like “letter, book, article” and so forth, rather than using a prototype for them. I would have thought this would be more flexible. And you could use the Attribute Browser to filter and order the references if you needed to. But there are many ways to achieve the same thing. And I’m hardly more than a beginner myself.

1 Like

Sorry, I missed this. OK, let us assume $Authors contains the two values “Smith, David;Brown, Robert”. I successfully used this stamp:

if($Authors.at(0).beginsWith("Smith")){$Color="red";}else{$Color=;}

Some notes:

  • why the ‘else’ clause? Sometimes we make errors. Perhaps we discover Smith wasn’t actually first author.
  • why $Authors.at(0)? This says to test the string that is the first (or only) value of $Authors; the latter is a Set-type multi-vlaue attribute. We could have used if($Authors.beginsWith("Smith")) as the conditional test. It also works, but the first better describes the logic of what we are doing
  • does it have to be a stamp? No, it is just a simple way of doing the test. You could use an edict, rule or agent action

I hope that helps!

Thank you to Mark and Martin. Sorry to rely so much on others, but I am trying not to give up in frustration. Partly it is not wanting to give up, but it is also because I can already see that if I could solve certain problems, including the ones I have asked about, it could be a brilliant way to organize material. I use DevonThink and Bookends a lot, but I like the potential in Tinderbox to create lots of different links between notes and to visualize them more easily than I can by putting notes in multiple groups in the other apps. I am hoping I will get to a point where something clicks and it suddenly it becomes clear how to find out what is going on. At the moment I am still baffled by the basics. It makes using MS Access to write a fairly complicated relational database seem like child’s play, though the problem may be that I am now 25 years older than when I did that.

Incidentally, those two Tutorials seem to be the most clearly written documentation I have yet seen. :smile: and I will see whether I can work out whether I have disabled inheritance and put it right. Yes, when I said “Template” I did mean “Prototype”. Just a verbal slip.

I shall see whether I can get the methods you both suggest to work.

No worries. Questions are good.

Don’t be. Communities are here to help. (most) sftware designers wrok, even if not, deliberately, to make us feel wrong:

e57

But, even if it feels that way Tinderbox offers so much more. Not only is there rarely a ‘poor’ choice it lts you ‘do ver’ with ease.

This is not how software is: We normally live in thrall to the the programmer, controlling the puppets from behind the screen. Tinderbox is not so.

Before coders here feel abused, that is not my intent. A human fallibility is to forget that what is obvious to us—having learned things—is unguessable to the wider audience.

There is a fair amount of evidence in psychology that previous experience can be a significant obstacle to learning new things in certain situations. I believe that new software is a good example of this, especially when moving from “strict” applications that expect you to use certain features in a particular way, to “looser” or more flexible software like Tinderbox, which provides lots of opportunities for doing things in different ways, and fewer constraints. I feel that to some degree it is up to the user of Tinderbox to invent their own way of doing things. Others might disagree, but that is roughly how I see it.

A couple of years ago I inadvertently started off a discussion that you might find interesting, though I suppose it might also be confusing – in any case, it is here if you would like to look at it: http://forum.eastgate.com/t/user-attributes-or-tags/1069?

I think one of the main things I took away from the discussion is that Tinderbox is perhaps better for associations than for hierarchies, and that there are various different ways in which those associations can be made, and displayed, in Tinderbox.

My experience has been that letting go of old paradigms is a good idea when approaching Tinderbox. One of those old paradigms from database software is that you have to set up all the categories and so forth before you enter any data. In Tinderbox it almost seems to be the other way round – you enter the data and let the categories emerge as you work with the material. Tinderbox facilitates the thinking process.

1 Like

I missed this before but it made me laught as my guilty secret is I’ve never understood RDBMS. Our Christmas card list is in Access (Apple sadly thinks it’s users don’t write paper mail ) and every year there is much swearing as it gets updated.

Tinderbox daily reminds me why i dodged he bullet of working in IT. As @MartinBoycott-Brown notes, this is not a database. You are in control rarther than the app. Indeed, as the moderator, moat of my opening replies to threads might resolve to being “this isn’t an app that make you do things one way”.

If you are stuck trying to find the ‘right’ way to do something in Tinderbox, it’s Mother Nature telling you your approach is wrong.