Re: [Tb] questions from a non-programmer

From: Scott Price <sprice__AT__textuality.org>
Date: Wed Jan 04 2006 - 23:00:35 EST

At 10:50 AM -0600 1/4/06, Lew Friedland wrote:
>I'm an academic who has used Tinderbox from its inception, but I
>have never been able unlock its power. After following this list for
>a while, (and also some great conversations with Doug Miller) I've
>come to realize that Tinderbox is really a programming environment,
>at least that's where it's power lies. That why so many of you are
>bloggers, people working in software development and consulting,
>etc. This a a question on behalf of all the newbies who are not
>programmers.

I think that this is a little bit tangential, but the timing is
impeccable. I drastically revised the "GettingStarted" page on the
wiki to try to make it a bit more thorough. I tried to map the
learning curve-- to break down the Tinderbox skills needed to get to
several levels of facility with the program. I'd love feedback on
how the revisions turned out.

http://www.eastgate.com/wiki2/wiki.cgi?GettingStarted

That's a bit tangential, though, because it's only what's presented
in the Manual and Reference, it's not about "programming skills".
Over the last few months I've been coming to think of Tinderbox as a
programming environment as well-- it's a tool for building yourself
an application that you use to organize as much as it is an organizer.

So, coming from the perspective of a novice programmer, there are a
few concepts I picked up in two college Computer Science courses that
I've found myself explaining to non-programmer friends who pick up
Tinderbox. Your Mileage May Vary, especially compared to what a real
programmer could tell you.

* Recursion. When writing export templates that build you a good
website (or, heck, good exported outlines) you have to use recursion.
The idea seems simple but I often find myself going back to my little
programming experience to get my head untied because recursion has
stumped me.

* Inheritance. Prototypes are a quick introduction to inheritance,
but the concept keeps going. Notes can inherit an action from their
prototype, and that action can set the prototype of the notes'
children, which then get an action from their prototype... etc. Wow.
And notes can inherit *everything*, which is sometimes a mind-bender.

* Redirection/Pointers. Though this is part of inheritance, facility
with pointers seems to make Tinderboxing a lot easier. Don't use
stamps or change an attribute everytime you set up a new note-- make
a prototype so that the attributes simply point to the value of the
prototype. When you're exporting to make a web page, don't set the
color of the title in the stylesheet, have the color refer to an
attribute in the note.

* Regular Expressions. You mentioned that, and they're something I'm
just learning myself. I always have to look at a reference. I have
a copy of BBEdit that has a nice reference built in, which I almost
always go back to.

Then there are a couple of skills:

* Debugging. There is an enormous difference between trial and error
and reasoned debugging process. That difference can be the
difference between 'aha' and 'Tinderbox can't do that'

* Small Steps. Find ways to break what you want to do down into the
smallest increment so that you can see success (or failure) and
instantly locate it. This is part of good debugging, but it's worth
a bullet of its own. Make an agent that does *part* of the query you
want. Check it. Then make another agent that adds another part of
the query *and* only looks at children of the first one. Etc. Then
when it all works, try to combine that back into a single query.

* Versioning. Develop a system for making backups of your files so
that you can experiment with them. This is true for a single
Tinderbox file but trebly so for working on export templates. Know
not only where your latest set of files are and where the backup you
made five minutes ago is (so that you can compare them when the new
one breaks) but know as well how to easily tell Tinderbox to look at
the new templates rather than the old... not only for the whole file
but for each note.

Most of those concepts aren't too tricky to describe, but I feel like
every time I sit down and think about them in terms of Tinderbox I
find something new I can do with the program. They reward
familiarity and deep consideration. (Which are not necessarily
resources you expect to have to give most software.

I feel like I might be patronizing here. I don't know that it's
"the" set of skills or concepts, so much as "a" set of things I've
had to learn and think about.

>2) Are there good online tutorials on the web to learn these things?

It's getting late enough tonight (here in EST) that I don't have time
to look up the best references. Perhaps there are a couple of
O'Reilly guides that would do the trick? Hopefully this will give
you some terms to start searching for. Regarding Tinderbox itself, I
use "A Tinderbox Reference" a lot (and you'll see links to it in the
Getting Started page): http://www.acrobatfaq.com/tbx/index.html .
However, the Reference is easier to read and apply when you are
strongly familiar with the programming concepts, since the Reference
tells you how they apply to Tinderbox.

>Also, is there any sublist of academics who are using Tinderbox for
>research and writing where books and journal articles are the main
>goals?

I can't speak for the rest of the list, or for its founder Lee, but
as long as Tinderbox is part of the discussion I'd love to see it
stay here... this isn't a very high traffic list. And if you take it
somewhere else... cc me? :D

--Scott Price
Received on Wed Jan 4 23:00:55 2006

This archive was generated by hypermail 2.1.8 : Thu Jan 05 2006 - 13:11:08 EST