Tinderbox Prototypes
In Tinderbox, a note may be a prototype for other notes. A note is almost exactly like a copy of its prototype -- except when you tell the note to be different.
The connection between note and prototype is live: if you change a prototype, the change will be seen right away in every note that's based on the prototype -- excepting, of course, notes that already have changed that property themselves. A note can always override its prototype. Any note can be a prototype.
Prototypes are very simple but they're also very powerful. You can put shared information in one place and share it in many notes. If you need to change it, you make one change, not many.
Some prototypes I use in this weblog:
- Post: a weblog post like this. Posts have dates, a summary, a unique ID, and a topic. Each post gets its own Web page, and posts also are collected on the front page, on the monthly archive pages, on topical pages, on the mobile phone page, and so forth. (All this happens automatically, by the way; I just add one note to the current month and all the rest is done automatically)
- Books: a lot like posts, but books have authors and titles and ISBN numbers, and information about pictures of their cover
- Movie List: a list of movies seen in the course of a year. Special CSS formatting reflects a simple rating system and hides previous years' lists from those who don't want the distraction.
- Lecture: a conference lecture or other more-or-less public appearance
- Talk: a description of lecture notes or slides that are available for download or viewing on the Web. Again, we have some fancy CSS on the main page that shows a profile and thumbnail for a randomly-chosen talk.
- Gallery: a collection of images. These again are formatted in special ways, including descriptive XML files that are used by a Flash viewer.
I didn't plan these prototypes in advance. Over time, I discovered opportunities to save time and typing by adding prototypes. This weblog now generates several RSS feeds -- the main feed, the book feed -- and so there'll probably be an RSS prototype someday.
Naturally, prototypes can have prototypes themselves. So, if you have a prototype for Tasks you want to do, it's easy to create a new prototype for UrgentTasks you need to get done right now, or DelegatedTasks, or ChoresYouWillNeverDoAgain if you can help it.