Most of my technical posts fall into one of two categories:

  • short "have you seen this..." posts, often with only a brief comment added by me
  • longer "articlets", usually the result of many me-hours of work, thought, experimentation, etc.

I am aided in writing those in the first category by BlogJet's "BlogJet This!" button. However, this help is only of limited use as the skeletal post it generates does not very closely match the way in which I would format such a post manually (though out of sheer laziness I have been amending it less and less in recent days). What would be really nice is the ability to choose from a selection of templates. I guess this would be best achieved by changing from a simple button to a drop-down one (if that's the right term), so that the default template was just as easily accessible as before.

However, the main focus of this post is those in the second category (of which this is itself an example), which I still find very hard to write. I tend to want to write about a whole bunch of related ideas which have occurred to me, or been investigated by me, over the course of a day or two. If I were simply to document the process as it happened, this would give a "stream of conciousness" type post which would be of limited value. My ideal post would have the conflicting goals of being concise enough for busy developers to read, whilst maintaining sufficient detail about the logical flow of events to be of real use in saving people from having to replicate what I have done. It is the act of taming this "stream of conciousness" into some sort of "laminar flow of enlightenment" that I find difficult. Often I leave out "dead-ends" of thought or practice even though (a) they are quite instructive, or (b) I might be wrong about them and in fact they are the seeds of a better solution. Even when writing non-technically I often want to add an "aside" without distracting the overall flow of the document for people who aren't interested in it, but also without forcing those who are interested to go too far to read it. The most obvious "real world" analogue to this that I have come up with is the "director's commentary" on a DVD movie, where the viewer (a.k.a. user) gets to chose which format they want, and can change their mind at any time. I believe DVDs also support the notion of multiple "paths" through a given section of the film. This allows for different versions of the film (e.g. appropriate for different ages) in a rather less abrupt way than the traditional approach of cutting scenes. Maybe collapsible DIVs might provide for this sort of thing in blog terms, especially as I guess they'd be nestable, as often my asides have further asides.

I have also been considering whether using a wiki (or bliki) would address this issue in any way, but unfortunately they seem to be "inside out" for my needs, in that they provide a way of linking multiple pages on related subjects, whereas I want a way of representing multiple related ideas within a single page (i.e. blog post). If there were such a name for this I guess it would be a "micro-Wiki" (where "micro" is being used in contrast to "macro", rather than indicating one millionth part of). However, I guess this would just boil down to plain old HTML with internal hyperlinks.

Another possibility that occurred to me was to use some sort of "mind-mapping" tool to capture what I wanted to say, and then write the post once I had my ideas sorted out somewhat. This then made me think of the way in which I often do the high-level design in small projects, namely a UmlAsSketch class diagram accompanied by a prose description of each class. What if my posts started with a diagram with a description block for each of the related ideas, with arrows showing the nature of the relationships between them? Each block could hyperlink to fuller description of the idea (possibly formatted so that it stands out in the narrative, like the grey "important point" boxes often used in books), and the arrows could optionally hyperlink to descriptions of the relationships, if they were a part of the overall logical flow. "Dead-end" blocks could still appear on the diagram, but the links would go to an appendix-like bit of text, rather than part of the main narrative.

I'll have a go at knocking up an example of each of these approaches (the collapsible DIVs and diagram-plus-prose) and post back here with a link when its done. In the meantime, though, I'd be most interested to hear other people's views on this matter.