That is a great question and one that I’ve worked on extensively. You’ll find part of the answer that I’ve landed on in the indexing section of this meetup: Tinderbox Meetup Saturday 10 February 24: ExportFileName, Highlighting, Creating an Index, but that is just a snapshot. I’ve been working on this exact question for the last 3 years, as the answer to it is foundational to nearly all my work.
Strucutre
A critical insight that I landed on was that I must separate my writing from the elements that are contributing to my writing, e.g, “my writing on the history of a company and its products” from “the people, companies, events, artifacts (images, videos, reports, products, case studies, use cases, terminology, regulations, specifications, technologies, applications, data breaches, lawsuits…), etc.” that are foundational to what I’m writing about.
The way I’ve gone about this is to organize my Tinderbox files into three sections:
- My writings
- Resrouces (i.e., atomics notes)
- Backstage (all the functional elements of Tinderbox… prototypes, templates, stamps, functions, etc.).
Prototypes
To keep it simple.
I’ve created prototypes for the key elements, Person, pEntity, pMedia, pTerm, pRegualtion, pSpecification, pCategory, pTheme, pEvent, pLocation, etc. I use a built-in version of the Person and Reference prototype, i.e., I don’t add the “p” prefix since Tinderbox has several underlying triggers related to these named prototypes. For all my other prototypes, I add a “p” to make the names unique. I also keep them singular so that I won’t make a mistake when referencing to them in action code. I will use a user-generated attribute, $Type (a set) to make subclasses, e.g., video, image, audio, etc., or $Function (a set), e.g., officer, directors, staff, investor, etc., or $Relationship, e.g., parent, subsidiary, competition, etc. Honestly, I more often default to using $Type and have a variety of different sub-classes. I’ve toyed with converting $Type to a dictionary, but I’ve yet to find the need.
Attributes
I am VERY liberal with attributes, some of my files have over 500. Over time, I’ve landed on consistently using about 10 across all my projects. I’ve not bothered to clean out the dormant ones. When I find that there is one that is serving a duplicate function, I will pick the name I want to stick with, merge the values between the two, and delete the one I don’t want anymore.
Action Code
As I demonstrate in that above-referenced video and in several others, I use action code to create new notes based on the values I place in attributes.The above video is a very simple example, I have a VERY nuanced auto-note creation process (one function that can trigger off of any attribute). The action code also links the notes (directionally, inbound vs. outbound, in a way that makes more sense to me) and names the links. I then have Tinderbox, which is based on the direction and name of the links to perform a variety of other functions. For instance, if I’m organizing an event, I’ll use a prototype called “pSpeaker.” I have the attribute “$Person” since “$People” is a string already in use by Tinderbox. When I put the name in $Person, e.g., Tom Norris, Tinderbox will automatically create the Tom Norris in /Resources Folder/People Folder/" and link it to this speaker note. The speaker note., e.g., “Spk- Tom Norris Event A”, will pull the values I want from the Tom Norris note into the “Spk- Tom Norris” note. This value will be used for my show agenda, run of the show, emailing the speakers, etc.
I have about 10 stamps and around 20 templates that I use regularly, and about 50~100 for specialized circumstances,
Templates and Posters
I use templates to help me organize my efforts. These templates produce individual profile pages (which may include an image), company profile pages (which may include a logo), class announcements (which may include video). They may also generate bulleted lists from the notes, SWOT analysis tables, generate temporary calculations to display, or any number of outputs that I need to either 1) extend the views of Tinderbox so that I can see my data in different ways or 2) contribute to my work while publishing it to email, excel, word, google docs, pdfs, HTML, speaker notes, etc.
Agents
I mostly use agents for my output. I use agents to create glossaries and indexes of terms, people regulations, etc. Each agent gets their own template, and thus, I can create any output I want.
Other times, I’ll use an agent to quickly mass-update prototypes I’ve evolved, fix typos, find notes in my writing that have a specific pattern so that I can fix that pattern throughout an entire piece, etc.
Notes about People
Working with People is a hard one; as you point out, people move in and out of an $Entity, and they may have relationships with several organizations or play several roles within one organization. I handle this by using a pRole prototype. I then add a child note to each Person, NOT THE ENTITY (since the role is related to the person, not the entity). I create a role note for every role the person plays across all the entities they interact with, e.g., officer, director, investor, father, son, student, etc. This way, I can also see how the person has evolved over time and what all their relationships are. These roles link to the Person and the Entity or to other people and events. The roles have start dates, end title, titles, and status (active, inactive). When they are no longer part of the organization I flag them as inactive. I will also add detailed notes to people, like their short and long bios.
My Writing
All of this is the foundation of my writing. With all the above in place, I can then start writing my narratives. I can happily create new atomic notes (i.e., resources like people and terms) or link to existing ones, all within the context of my writing. I can tear off linked notes and edit them while my still in the context of my related note. I break up the sections of my writing into several sub-notes and have Tinderbox reassemble them as needed; that way I have the flexibility of having long prose, bulleted lists, tables, images, etc. within my writing; my main templates often trigger off the $Type and $Protypte, to call sub-templates specialized for the context, as well as several booleans (e.g., $IsNoShowTitle, $IsNoShowChild, $IsNoShowText, $IsBulletChildren). This gives me greater control to suppress, include, or display the content in my writing in a structure that works for the context of the moment,
This may all sound complex, but it is really not. Once you have a structure that works for you, the structure quickly falls into the background, and you can focus on your writing, while Tinderbox automatically takes care of the heavy lifting in the background. As your thoughts, ideas, needs, processes, and approaches evolve, you can incrementally formalize your work to suit your personal style and needs.
What I’ve Learned Along the Way
To make all this work and flow for me, I’ve taken care to learn along the way. I’ve picked up how to,
- think
- take-notes
- highlight
- transform, transclude, and transmute data
- write (thoughts, prose, and code)
- organize (thoughts, prose, and code)
- build a personalized system that works for me (and others)
- reduce anxiety
- be patient
- read
- listen
- let things evolve
- rely on backups
- leverage the community
- appreciate the diversity of other work, and yet find the commonality and golden threads that are consistent throughout
- learn
- teach
- citation management
- contribute and make a difference
- see things differently
- do things differently
- let go of the process when it is not working for me (especially when on deadlines) and come back to it
- use/apply RegEx
- use/apply HTML
- use/apply CSS
- work with media formats and rendering tools (images, audio, video)
- work with several publishing and output tools
- leverage other tolls (get the best out of each tool, even if there are overlaps)
- have gratitude
- and more
I am so very grateful for this tool and all that this community has given me.
Good luck with your project. Let me know if you’d like to connect and discuss any of the above.