Tinderbox 3.0.3 updates (4 Jan 2006 )
We're closing in on release of Tinderbox 3.0.3, a fresh minor update. Most of the work here is under the hood, fixing various unpleasant conditions and repairing some small reversion bugs.
A useful addition coming in 3.0.3 extends date computation. You can now express dates as expression (DueDate=November 15, 2004 + 7 weeks) and, in actions, you can refer to other date variables in the expression (DueDate=$DueDate(parent)+7 days;)
There are also a few fixes connected with Flint, the new Weblog Assistant.
Tinderbox 3.0 Nears Debut (9 Nov 2005 )
Tinderbox 3.0 is on its shakedown cruise. The new parser is solid and powerful -- and very fast. Nice new features for formatting, like adjustable tab stops. And under the hood there's a new view system that promises some exciting new things round the bend.
And all these changes support Tinderbox for Windows. We're burning the midnight oil. Soon.
(Lots more on Mark Bernstein's weblog)
Storyspace 2.5: final beta? (13 Oct 2005 )
A fresh Storyspace 2.5 beta went out to the test team this morning. This new beta fixes a family of problems in handling preferences -- most conspicuously in setting the HTML export template. Tinderbox replaced the Storyspace file mechanism with a new abstract object, and also replaced the old preference mechanism with new XML files; regrettably, the new file objects had never before encountered the old legacy formats. The resulting problems were tricky and time-consuming.
Also integrated in this build is the new map architecture, which moves view-drawing functionality to dedicated objects MapCanvas and MapArtist.
This is, at last, a release candidate.
Autoscrolling (4 Oct 2005 )
Since the Tinderbox map can be much larger than any screen, Tinderbox users may often need to drag a note to a position outside the current map boundaries. When you drag a note near the edge of the map, the map begins to scroll automatically beneath the note. This familiar behavior is autoscrolling, and its implementation is tricky.
We're reimplementing autoscroll as a side effect of the new map coordinate classes. Some simple refactoring was required, since we're replacing generic Points with GlobalPoint and LocalPoint and PortPoint types. While we're at it, it makes sense to clean up the small issues that afflict autoscrolling on both platforms.
Autoscrolling works better now, but it's taken a few days to get it straight.
Maintenance (29 Sep 2005 )
A good deal of our time this week has been spent on urgent maintenance. One tester found two show-stoppers. Another potential headache was discovered while making lock note undoable. The upshot is a fresh release build, a more reliable Tinderbox, and some unpredicted delays.
Coordinate Objects (21 Sep 2005 )
To help avoid future coordinate system mishaps, we're experimenting with a MapPane revamp in which objects in different coordinate systems have different types. So, a global mouse position can't be compared to a local drawing coordinate, and a scaled port coordinate can't be inadvertently mixed with a raw pixel value.
Another example of a two-day slip that should save time and prevent errors in the long run.
Hello, again (20 Sep 2005 )
Correspondents have complained that the peekhole has been quiet, while notes suitable for the peekhole have wound up over at MarkBernstein.org . We'll try to make sure that news gets everywhere it needs to be.
Map Coordinates (20 Sep 2005 )
Dragging notes and adornments in maps is now fully functional, after protracted difficulties with coordinate systems. The difficulties were exacerbated because the Windows MFC framework is, in our environment, poorly suited to unit testing. Work to remedy this continues in parallel with development, which should accelerate now that MapPane cross-platform implementation is replacing stub code.
Contextual Menus (27 Aug 2005 )
Map views and their kin have several different contextual menus -- one for background clicks, another for clicking on a note, and still another for clicking on a link. Each menu requires special code for building, for enabling and disabling various options, and for handling the menu choices.
And, all of it had residual bits of API dependence, even after most menu code was abstracted to SMenu earlier this summer.
The answer (execution in progress) is to wrap everything up in a new class, with suitable interfaces.
Cursors (25 Aug 2005 )
Who would think that an entire day would be consumed with refactoring the cursor logic of MapPane? It was. In retrospect, it was inevitable: the cursor handling was a long and complex sequence of conditionals, with various bits of auxiliary help. And everything depends on MacOS X APIs. Now, it's all wrapped and packaged and nicely ported to Windows.
Refactoring the Text Interface (10 Aug 2005 )
The last three days have been fully occupied with shaking out the text interface class. It's been called SspWTextView for the last four years; that's one of many aspects of this class that have always been unsatisfactory.
It's a big class, hard to get under test, and filled with lots of methods. The catch is, it's got lots of responsibilities -- and if it can't shoulder all of those responsibilities, the testers will throw up their hands and be unable to make much progress.
Question: for scaffolding, I find myself repeatedly building classes that contain only methods -- list or no data besides a pointer to the class that built them. We're in the middle of a method in, say, Widget, and we can say WidgetHelper foo(this); theAnswer= foo.Solve();. If that's all there is, this is a Method Class, but my WidgetHelpers grow multiple public methods. The keys seem to be:
- very lightweight instantiation
- no state
- useful for one class
What do you call this kind of method?
AgentActionParser (5 Aug 2005 )
All the Parser action made it desirable to clean up agent actions, and that cleaning had far-reaching effects. A new conditional construct improves action syntax; my initial sense is that it's a qualitative change and a huge improvement. Under the hood, cleaner code makes it (fairly) easy to add some new operators.
Notably, arithmetic. This will be very powerful, and template writers are going to be dancing in the streets.
Downside is complexity. For example,
Price = $UnitPrice * $Quantity
is perfectly reasonable, and the '*' means something special to the parser. But
Prototype = *protoPage
refers to a note named "*protoPage" -- not to multiplication. And there's nothing to keep you from naming a note 7*6=42 -- which the parser is going to recognize as arithmetic.
ExportElementParser (29 Jul 2005 )
A two-day, end-of-month campaign of code cleaning culminates in removing parsing responsibilities from the HTML export element classes and crafting a new, well-tested tokenizer. This cleans up some old code substantially.
En passant, we're dealing with some small bug reports and feature requests in the 2.5 release.
ViewMaker (27 Jul 2005 )
Tinderbox and Storyspace make lots of views. Many of the views can create a variety of additional views. We already have a ViewFactory to create views, but most objects access the ViewFactory through a Facade that's part of the hypertext object.
That's a pain, because Hypertext has a very broad interface. To narrow the interface, we factor out the Facade into a ViewMaker object. Bonus: we get to refactor common bits from all these view-making methods.
Downside is that it's slow, dull, plodding work. Ideal for the afternoon following an all-nighter.
Content (26 Jul 2005 )
Content is a large and unsightly facade class that encapsulates the material destined for a of a note's text window. These methods were refactored from Node long ago, but they remain tangled and unpleasant and altogether too close to the machine.
Worse, the classes to which Content talks -- TStyle for styles, PicList for images -- tend to be ugly and API-dependent, and often have platform-sensitive internal representations.
Extensive cleaning helps a lot here, and getting Content at least superficially under test will be a big help.
TStyle (25 Jul 2005 )
One of the oldest and ugliest classes in Tinderbox, TStyle is the internal representation of the Macintosh text style record.
TStyle can't be dispensed with entirely, because this is the data format used by the text engine, and it's also part of the Storyspace 1 file format that Tinderbox needs to read. But it's an awkward record to work with, and it's often passed around as a Macintosh Handle. This would make it awkward on Windows even if TStyle were well written, and it wasn't.
A thoroughgoing renovation factors out a clean utility class to wrap and manipulate the underlying data, and a clean wrapper class with an abstract template. The new classes are testable and focused.
Where'd everyone go? (11 Apr 2005 )
Yep, it's been quiet here lately.
It being the middle of winter, the Tinderbox Construction Crew figured that hardly anybody would want to stand out there in the cold, peeking into this construction site. It's the busy season here -- a big Macintosh update, taxes, two issues of Tekka, two Tinderbox Weekends, and lots of other things that need to be done Right Now.
Sometimes, its better to get the work done than to talk about it. And, on top of everything else, we had a machine go down and wound up shipping it cross-country twice for repairs. Naturally, that was the peekhole machine.
But, just in the last week, we've had a flood of email asking, "Where's the peekhole?" It must be the Spring weather!
This week is pretty much dedicated to Tinderbox Weekend Paris. I hope to see you there! I think we have two seats left in Paris, and one or two Remote Memberships are available.
Then, back to construction -- and back to the peekhole!
Paying (29 Dec 2004 )
53 / 402
End of year accounting. Tinderbox is top priority, but paying taxes comes first.
Cleaning (27 Dec 2004 )
53 / 402
A snow day, and so devoted to fixing some Macintosh-issues (though these were also needed on the Windows side). Tutorials now ask before closing documents. New semantics for group operators when the group is empty. Agent queries can now use export templates, allowing for easier parameterization of agents.
Note to wiki users: Rosemary Simpson, our indomitable wiki shepherd, had a sudden gallstone over Christmas weekend. Get well notes to email@example.com, please. We'll try to keep the wiki neat while she's convalescing.
Treemap (21 Dec 2004 )
53 / 402
Treemap, TreemapDrawingPolicy, and TreemapLayoutPolicy.
Entitled (20 Dec 2004 )
50 / 402
Who would have predicted that Window titles would require two entire development days? Ouch.
Resize (16 Dec 2004 )
49 / 402
Resizing notes in map view (including a new ResizeHandleTracker). ResizeHandle cursors.
Began work on factories required for making new kinds of views (e.g. Get Info, DocInfo, Roadmap, Pathmap). Extensive wrestling with Windows internals.
Colorful (15 Dec 2004 )
47 / 402
The color menu is up, running, populated. You can now select notes in the map and change their color. A nasty bug in SWinMenu::Clear made this much harder to debug than it should have been.
Renaming (13 Dec 2004 )
46 / 402
Completed NodeSpec. KeyAttributesMenu. The Create and Rename dialogs are up and running.
CommandPolicy base class.
Ask again (10 Dec 2004 )
42 / 402
Colors, ColorsMenu, and ColorsMenuTest -- all support tools for managing color attributes in dialogs. SWinMenuButton serves as a facade for Windows ComboBox dropdown lists.
Ask (9 Dec 2004 )
40 / 402
NodeSpec::Ask (the Create/Rename dialog) is about half-finished. This is the last part of NodeSpec to be done, and when it's done, creating notes will be finished. So far, the name field and color menus are live and operating.
Warnings (8 Dec 2004 )
40 / 402
Warnings: an (underused) dialog class that points out legitimate actions that are often misunderstood -- and that have a "Do not show me this warning again" checkbox.
Prefer (7 Dec 2004 )
39 / 402
Tinderbox's Preference system is flexible but oddly baroque, with numerous loosely-coupled objects that can display themselves, allow you to edit them, and can flatten themselves into appropriate XML fragments. PrefsTest::Test3 implemented; it writes preferences to XML and the reconstitutes them, checking that the round trip works properly. Also, Fontmap.
Macintosh (3 Dec 2004 )
38 / 402
Macintosh-platform issues. Extraordinarily long outlines -- perhaps unreasonably long -- suffer display problems arising from numerical overflow. Pending. Tinderbox 2.3 doesn't accept folder drags: fixed. Scheduled Tinderbox Weekend Boston, and began planning for a symposium/roundtable on creative hypertext nonfiction for May.
Released Tinderbox 2.4.0d1 to testing.
Tracker (2 Dec 2004 )
38 / 402
Implemented a new class, Tracker, that abstracts mouse tracking tasks in maps. Subclasses include MarqueeTracker, GrabbyHandTracker, and ExpandWidgetTracker. This improves the code significantly, although that's not visible in the progress meter. The Window class is implemented and (for the moment) OK.
Milestone: we can now create Map, Chart, and Outline view windows.
Announcement: Tinderbox Weekend Boston, February 12-13.
December (1 Dec 2004 )
37 / 402
Work in MapPane and policies toward reaching a freestanding OutlineView window. Handling the expand widget proves an architectural problem, because mouse tracking differs in Mac and Windows platforms.
30 (30 Nov 2004 )
37 / 402
Drag, DragTest, and Recipient are all OK. NodeDragTask and AttributeDragTask ported and implemented, but can't be tested effectively until the rest of the OLE rigging is completed. NetNewsWireReader ported for compatability, even though the application doesn't exist on Windows.
29 (29 Nov 2004 )
33 / 402
OLE drag and drop sketches and test rig.
24 (24 Nov 2004 )
33 / 402
DrawingPolicy and its subclasses undergo extensive revisions on both platforms. Improvements to PColor. Stamp is OK.
23 (23 Nov 2004 )
31 / 402
ViewTest passes, except for RoadmapTest (which requires Roadmap). MapPolicy, TextPolicy, and AgentManager all OK.
Released a fresh beta of Storyspace 2.5 for MacOS X.
22 (22 Nov 2004 )
27 / 402
SMenu implemented for Windows, then refactored to define SWinMenu and SNoMenu. Action tests for RenameAction and NodeColorAction defined and now pass.
18 (18 Nov 2004 )
26 / 402
ExportFileManager. HTMLTest passes (!) after lots of work. RuleManager is OK. CeresProctor is mostly OK.
17 (17 Nov 2004 )
23 / 402
SFile continues. STime is fouled up, throwing an exception when date arithmetic crosses a month boundary. FileTest is green bar.
FileList and DirectoryList are OK, except for menu methods. Exporter, HTMLExporter, and ExportFolder are all mostly OK.
16 (16 Nov 2004 )
19 / 402
Work on SFile -- a stubborn and platform-sensitive class. FromApplication, ConfigFilem and Write are OK.
Birthday (15 Nov 2004 )
Tree: get rid of final remnant of LArray by refactoring ListPostOrder to LayoutPolicy. NodeVector needs a const variant. All other policies updates, also MapPane.
HypertextTest now passes! LayoutMap, LayoutInfo are OK. ClipboardTest is mostly OK. Start porting Preferences.
Agents (12 Nov 2004 )
15 / 402
AgentTest, AgentAction, AgentQuery, and ArgList are all OK! Path updated. GuardField, Lexer, and GuardFieldTest are all OK. ActionTest passes, but is so frail as to be nearly valueless.
Armistice (11 Nov 2004 )
6 / 402
Refactoring the old NodeBundle to modern NodeVector. XMLFileTest and HTPath are both OK. Open work on HTML Export. New Value class now working on both platforms. Macro, History, and HistoryTest.
402 (10 Nov 2004 )
0 / 402
Once the last major code knot was untangled -- once Tinderbox for Windows was firmly in the realm of engineering and not research -- we planned to make a big list of everything that needed to be done before the first beta build. We planned to have the list for Hallowe'en.
It gave us a fright.
My first reaction was simple.
There are 402 things on this list! This is obviously off by 200, maybe 300 things. Do it over!
So we made the list. And checked it, Twice.
402 is a good number.
It's not the right number. Our best estimate goes up and down all the time. But the real number is something like 402.
My second reaction was simple. "If we roll up our sleeves and work very hard, every day, all day, how quickly can we run through 402 things?"
That's the wrong question: we're already seeing lots of signs of overwork around the office, we're already running just about flat out. In any case, we can't completely clear the decks. TEKKA readers still need fresh TEKKA (and TEKKA 7 has some great stuff) Students everywhere will need to have their hypertexts waiting in the bookstore for second semester courses, which means we have lots of bookstore orders to handle now. There's an important new hypertext about to join the Eastgate catalog. Payroll needs to happen. Taxes need to be filed.
So: it appears that we're looking at Valentine's Day. Not the answer I wanted. But we're moving at a good clip. You'll see a lot of action here in the coming days.
Menus (7 Nov 2004 )
It's been a month of unscheduled delays and unexpected perplexities. The biggest obstacle turned out to be menus.
Tinderbox has lots of menus, and will doubtless acquire more. In addition, it's got lots of things that are like menus -- drop-down menus, contextual menus, popup buttons -- but aren't menus per se.
We wanted to clean up this code and abstract all menu-like things into one class hierarchy, SMenu. This reduces some duplicate code, which is always a good thing. It concentrates a lot of platform-dependent code in one place, which facilitates Windows support. It should reduce complexity that surrounds the interface between the platform API and the Tinderbox objects.
What turned out to be tricky was ownership. First, figuring out which object would own the platform-dependent menu objects -- and so be responsible for cleanup after we were finished using it -- was tricky. Then, we had headaches galore over cleaning up the SMenu objects themselves. You'd better put away the mop and bucket after you clean up the menus, or you'll trip and make a real mess. The fix for this, in turn, created syntactic clutter:
auto_ptr<SMenu> sm(SMenu::Create...) started to crop up everywhere.
That's fixed now, too. But it took a chunk of doing. We'll have the schedule announcement in mid-November.
New server (7 Oct 2004 )
We've just moved Eastgate.com to a big new server at a big new server farm.
Eastgate's site has been in one place -- at least logically -- for many years. In that time, it's moved from machine to machine, and servers have been effectively assembled around the site.
Some breakage during the move is probably inevitable; please let us know about problems so we can fix them quickly.
Tinderbox 2.3.3 (4 Oct 2004 )
Fresh from Tinderbox weekend, a third fix-release for Tinderbox 2.3 .
All Tinderbox users should download this version, which fixes a minor but annoying problem with agent update preferences.
Storyspace 2.5 beta! (17 Sep 2004 )
The first beta of Storyspace 2.5 for MacOS X is out to the testers. Early returns are surprisingly good.
Update: Don't try to run Storyspace from a disk image. It turns out that, when running from a read-only volume, the first beta has trouble quitting.
Tweaks (3 May 2004 )
The main agenda item for the current campaign on the Windows side is the MapPane -- a big, complex class than coordinates a bunch of Policy objects, all working together to display the complex Tinderbox views. Maps, Outlines, Charts.
But we're also covering a few issues that cropped up in the Tinderbox 2.2 release. Some small things came unglued and somehow weren't noticed by our wonderful testers. For example, when we added arrow-key navigation to the link browser, the Delete key handler for this dialog came unglued. A minor update should be ready soon.
Unit Tests (12 Mar 2004 )
Tinderbox for Windows is being constructed on top of a system, Hampshire, that handles attributes, values, inheritance, and serialization for both Tinderbox and for Storyspace 3. It's literally a foundation: everything else uses Hampshire, and if Hampshire is flimsy or slow, everything else works poorly.
One big win in Tinderbox for Windows has been moderately thorough built-in testing for Hampshire. Some of this was inherited from Storyspace II and Tinderbox for Macintosh, but in both programs the built-in tests were designed to confirm acceptable behavior. The new tests are more aggressive and targeted at a lower level; they represent a significant expenditure, but reduce development uncertainty and risk.
Link Policies (17 Feb 2004 )
Link policies are small, pluggable objects that determine how links are drawn in a view. There's a PlainLinkPolicy that draws straight lines, for example, and a BezierLinkPolicy that draws graceful curves.
All the Link Policies now work in Tinderbox for Windows.
Views (12 Feb 2004 )
Landmark: the Tinderbox view strategies are all up and running.
Tinderbox has lots of views -- charts, maps, treemaps, outlines, and explorers. More or planned. To keep all these views manageable and maintainable, Tinderbox uses a set of pluggable Policy objects (some people call these Strategies) with clearly defined tasks. So, if you want a pane that shows notes as they appear in a map, you reach for the MapDrawingPolicy.
We're back (10 Feb 2004 )
In the last few weeks, Tinderbox for Windows has been moving from foundation-laying mode; increasingly, what's happening in the construction process looks like Tinderbox. It's time to reopen the hole in the fence.
There's still a long way to go, but it's looking more and more like a house, and less like a pile of lumber.
A key moment in the transition was the day, back in January, when Hypertext compiled. Before then, most of the work had focused on the Hampshire infrastructure that underpins Tinderbox and manages things link attributes and values. Now, at last, Tinderbox for Windows could begin to do Tinderbox tasks.
At the end of January, Tinderbox for Windows was reading and writing Tinderbox files. Once again, XML is a big win.
Tinderbox wiki (12 Jan 2004 )
The new Tinderbox wiki is getting great reviews. Stop by!
Macros (7 Nov 2003 )
As we approach release of Tinderbox 2.1, it's clear that the key new feature for advanced Tinderbox users is going to be the new macro pane. Macros let you insert messy or easily-mistyped things, like complex HTML, with a simply formula. For example, I have a macro that lets me type ^do(book,[isbn],[title]) and creates a link to the book's page at Amazon.
The key is that anyone can do this, and anyone can improve existing macros.
But another key is the way this cleans up some complex Tinderbox weblog tasks. Things like blogrolls and complex styles. Not only are they simpler, they're cleaner to adapt to new designs.
Tweaks and Talks (19 Aug 2003 )
The Tinderbox 2 rollout has been extraordinarily smooth, but as always we have plenty to do. There are a variety of interesting little tweaks -- often because people use Tinderbox in unexpected ways.
Next week in Nottingham, we'll be talking about Tinderbox at the Spatial Hypertext Workshop -- and gathering ideas for new Tinderbox facilities. In the Main Program, Mark Bernstein will be talking about Tinderbox and Collage -- the way Tinderbox builds composites and uses links for reference, not navigation.
Post to weblogs (30 Jun 2003 )
Tinderbox 1.3 supports both the Blogger and Metaweblog APIs, so you can now post a Tinderbox note to weblogs hosted with Blogger, Radio Userland, MoveableType, or lots of other server-side tools.
Of course, Tinderbox doesn't need any of this -- it can build weblogs all on its own, with a lot of extra power that you can't get out of server-side tools. Tinderbox, after all, has an entire supercomputer at its disposal, and it doesn't need to share with other webloggers -- or with your eager audience.
But, if you want a collaborative weblog, like last month's Digital Storytelling Festival blog, this gives you the best of both worlds. At the festival, I was able to make my own notes in Tinderbox -- and, when a note seemed to be of general interest, all I had to do was choose Post to Weblog from the Note menu and, voila!, the note was instantly posted.
Load speed (24 Jun 2003 )
Tinderbox 1.3 files load and save faster, mostly because we're using simpler kinds of streams for input and output. The original streams were more powerful and were fast enough, but if you do anything a hundred thousand times, fast enough may not be fast enough.
Tinderbox 1.3 files are also a little bigger, but they should be a lot easier for other tools to understand.
Pinging weblogs.com (20 Jun 2003 )
Tinderbox can now be set to "ping" weblogs.com to announce that you've updated your site. Just choose Ping Now from the Edit menu, and you're all set.
Agent update time (20 Jun 2003 )
Perhaps the most significant improvement in Tinderbox 1.3 will be a major performance boost for updating agents and for accessing attributes.
Large Tinderbox files do an enormous amount of work when updating agents and when doing big tasks like export and save; Mark Bernstein's weblog, for example, resolves about 45,000 attribute references every time it does an HTML export. The upshot of this improvement is that some Tinderbox operations are as much as ten times faster.
Images Improved. (24 May 2003 )
Images are now loaded and saved more rapidly.
Images, as we all know, are often large. Small implementation details can make a big difference when working with large objects, since the same operation may need to be done thousands or millions of times. When Tinderbox saves images, it flattens them into a format that's just text; encoding and decoding are quite simple, but a single picture might require a half a million encodings or decodings.
We try to avoid performance tuning in Tinderbox, especially if it makes the code more complex and harder to change. In this case, though, we were able to make the code simpler, more modern, and much faster as well.
HTML View is faster (19 May 2003 )
One interesting side-effect of the performance boost in Tinderbox 1.3 is that HTMLView has become much more useful. Because agent updates are so much faster, popping up an HTMLView window takes less time.
HTMLExportBefore and HTMLExportAfter (6 May 2003 )
Tinderbox 1.3 has new attributes, HTMLExportBefore and HTMLExportAfter, that are exported before the first paragraph and after the final paragraph of a note.
These attributes are ideal for handling notes that contain lists, and will make blogrolls and weblog sidebars even easier to manage.
Quoted HTML (3 May 2003 )
Another nice little thing in Tinderbox 1.3 is that Tinderbox is smarter and more flexible about HTML inside notes.
First, if your note contains HTML, Tinderbox cleverly adapts its own markup to stay out of the way of yours.
But what if you're writing about Web design, and you need to include HTML tags in your text as examples? Tinderbox has a new attribute, HTMLQuoteHTML. If it's set, it tells Tinderbox that HTML in this note should be visible to the user.
xHTML (30 Apr 2003 )
An increasing number of Tinderbox users have special constraints on their HTML. Some want to adhere to xHTML, others need to obey house style rules. Either way, Tinderbox needs to be ready to accommodate them.
One of the last stumbling blocks in this area was the way Tinderbox interprets bold and italic text, on export. Traditionally, Tinderbox used the <B> and <I> tags; the user chose Bold or Italic from a style menu to compose the text, and we want to give the user what they want.
New markup attributes let you customize this behavior, on a per-note, note-type, or document basis. So, if you want bold to mean <strong>, or <em>, or <span class="highlight">, Tinderbox 1.3 will be happy to oblige.
Wizards (25 Apr 2003 )
Lots of people see Tinderbox's weblog features and decide, then and there, that they need Tinderbox.
This is wonderful, but it poses a challenge: the weblog templates are powerful, flexible, and sophisticated. They use all of Tinderbox's power and flexibility. But if you're a new user, just starting out with Tinderbox, all that power and flexibility can seem intimidating.
Tinderbox 1.3 will have a new kind of file, a wizard, that will walk you through a series of questions and then automatically customize a Tinderbox document to your specifications. It's not just useful for Weblogs, either; the same mechanism can create a wide range of Tinderbox examples and starting points.
As you might expect, the wizards are themselves XML files, so power users will be able to customize existing wizards and create their own.
Note: Macintosh programs usually call these "Assistants" rather than "Wizards". The Mac term is better, and the image of "wizard", connoting arcane knowledge and magic, is better suited to its original context in generating knotty code for programmers. The windows term is easier to type and fit on an icon. Platform politics is messy.
How to panic gracefully (28 Feb 2003 )
We've been investing a lot of time, and a lot of thought, in things you'll probably never see in Storyspace 2.5 or Tinderbox. How should we respond when things inexplicably go wrong?
In the old days, disaster planning for PC and Mac software was easy: when things went badly wrong, the machine would crash, the user would start over, and you'd move on. Modern software development techniques and modern operating systems are vastly more resilient: even when things go badly astray, the program can often pull itself together and start planning a sensible recovery.
This raises a bunch of tricky questions. For example, the program may find itself in the twilight zone: it looks around at its environment as sees things that seem impossible or insane. Often, this means that the error-response system is fouled up, and any attempt to "fix" things might only make them worse. But sometimes, it just means that the world has changed in unexpected ways.
Sometimes, it's unforseen technical improvements. Some old installers take a look at a shiny new top-of-the-line hard disk and say, "Whoa! Not hard disk could ever have that much free space!" We call this geezer-ware: software that can't believe how much disk space and memory it can access today, and panics at the sight of new hardware.
Sometimes, it's more mundane. Tinderbox currently "knows" that it's called Tinderbox, and uses that knowledge to find itself on disk if it needs to locate its configuration files. If you turn around and rename the program behind its back, it discovers that its name is not its name, and this makes the program nervous. It's easily fixed ("You're Tinderbox until your owner tells you differently, but if you're renamed, that's OK."), once the problem is uncovered. Anticipating everything that might happen, though, is a endless challenge.
outline export (18 Feb 2003 )
Tinderbox makes it easy to build and use hierarchies. A new Tinderbox export element, indent, makes it easy to export outlines with familiar tab indentation -- or, indeed, with any kind of indentation you prefer.
indent was added in Tinderbox 1.2.3, but unfortunately is was only added for HTML export while it is most useful in Text Export. This will be fixed in 1.2.4, and we may bring the 1.2.4 release forward in order to get this into user hands more quickly.
One of the great challenges of preparing a Tinderbox release is testing -- making sure that the program does what it should. We're relying more and more on extensive built-in testing, which permits Tinderbox to systematically test its own logic. Writing these tests is tricky and expensive, and one of the outstanding questions in software management today is, how do we ensure testing, automatic and manual, receives an optimal share of resources?
Tekka column (12 Feb 2003 )
Eastgate recently launched a subscription Web magazine, Tekka, about enjoying new media and software aesthetics. Tekka is made with Tinderbox. The editorial calendar is kept in Tinderbox, the assignments and drafts and art direction ideas are organized in Tinderbox, and then we use Tinderbox as a content management system to actually produce the magazine.
We expect each issue of Tekka to include a Tinder department. The first Tinder describes how we used Tinderbox to capture the original ideas behind Tekka, to keep track of all the questions we needed to ask in launching the magazine.
Tech Support (31 Jan 2003 )
One of the pleasures of Tinderbox's first year is that the support load has been extraordinarily low. Thanks to various bits of engineering -- the XML file format, the use of built-in testing -- Tinderbox has proven remarkably stable for such a large and complex new program.
A frustration, though, is the difficulty of getting people to contact our support people when trouble does arise. We try to provide really good support, sometimes supplying fixes in minutes. But we can't fix problems we don't know about.
Software users have been trained to expect that support calls are likely to prove futile. This makes it hard for good support to get noticed, and frustrates people who, for one reason or another, do run into problems.
Indent (23 Dec 2002 )
A few users want to export Tinderbox documents to older software that uses tabs to represent levels of hierarchy, or simply to print the outline in a word processor.
For many purposes, a better solution would be to export to OPML or to a similarly modern and standard XML format. But, for legacy applications, we've added a new markup element, , that adds tabs (or anything else you prefer) to represent a note's position in the hierarchy.
Details (18 Dec 2002 )
We've been spending a lot of time lately on details -- finish carpentry postponed from earlier releases. Mouse wheel support, for example, should be straightforward, but turns out to require a variety of esoteric work deep in the foundations of the event-handling system.
Beautiful Software (12 Dec 2002 )
Eastgate is starting a new Web magazine, Tekka. It's about enjoying new media. It's about beautiful software.
We hope to have a regular column in each issue of Tekka about Tinderbox -- how to use it more effectively, how to integrate Tinderbox into your worklife.
Tekka debuts in January. Charter subscriptions are available now.
Abstraction (4 Dec 2002 )
Lots of the early work on Tinderbox for Windows involves finding clean ways to think about the difference between machines and operating systems. Joel Spolsky recently wrote a useful essay on Leaky Abstractions -- the problems that crop up when you try to make the system too clean, when you try to sweep real differences under the rug.
Macintosh files and Windows files aren't quite the same thing. They used to be very different: Macintosh files carried around more metadata, which was a blessing, and were more visible to users, which was sometimes good and sometimes problematic. With MacOS X and XP, many of these differences are converging. But not all of them -- and some customs and habits continue to differ, even though they're no longer mandated by the technology.
Some of these issues can be very knotty indeed. For example, this peekhole uses a set of HTML and XML templates, each stored in a separate file. If I make a copy of the Tinderbox file, should the copy use the same templates? Probably! But maybe I made a copy of the templates -- perhaps we should use the copy, not the original!
Finding ways to guess what the you want, and making it easy for you to explain exactly what you want if Tinderbox guesses wrong, is hard work.
Windows (2 Dec 2002 )
We're hard at work on Tinderbox for Windows.
The sign on the wall says, "mid-2003". It's a big project. We might be a little early. We'll try -- every day, it seems, we get mail from eager Windows users who need Tinderbox right now.