The upcoming version of frassle has a major piece of new functionality, called the page builder. The page builder (light bulb above head, details) lets you construct custom views of the information in your weblog as well as other weblogs published on frassle or aggregated via RSS. You start with a blank page and add blocks that contain dynamic content. The content is selected according to a rule called a noteset expression. Frassle looks at your noteset and pulls out all the matching blog posts (notes), then formats them according to a template you've selected.

For example, you could get a list of titles of everything on your todo list. You could get the most recent 15 posts to your blog and show their full or excerpted text. You could mix up recent posts from a bunch of your friends' blogs and present them together. You could even use frassle's inter-category similarity tracking to present recent headlines by topic, like a personal Google News.

I'm definitely excited about this feature. The major bits are done and it's working on my development machine. There is a lot of polishing to do, but the fundamental idea works and is profoundly powerful.

But I am also confronted with a challenge. This is a conceptual challenge that I need to think about for a while—days or weeks. It's about a relationship between concepts in software—in this case, between frassle's idea of a noteset and its idea of a feed.

If you build software, you know how important it is that the key concepts in your system are clearly articulated and differentiated. When you, as the chief designer of the system, find it difficult to grasp the ramifications of choosing one approach over another, it is a sign that the facilities you've built are confused and redundant. You can't excuse yourself for this, because you built it: you shouldn't be sitting around wondering why. The desired effect is quite the opposite: simple, clearly understandable concepts leading to profound power by virtue of their clever combination.

(Diversion: I don't want to insist on 100% orthogonality in software design. I don't believe that there should always only be exactly one way to do it. But when there are multiple ways, they should be distinguished from each other—whether by factors of efficiency, flexibility, future possibilities, or simply taste. There must be a way to choose consistently within yourself, so you can trust your old code and simplify your assumptions. This is my rationale for still loving Perl and its motto, There's More Than One Way To Do It.)


(OK, here's where I get to the actual thinking. The part below is still a work in progress.)

So yeah, notesets and feeds. A noteset is a flexible way of selecting a set of notes. A feed is associated with a person or some other kind of coordinated publishing entity. One piece of tricky business is that a feed in frassle is either a blog belonging to a user or an RSS feed aggregated from outside. But frassle publishes notesets (and subcategories within feeds) as RSS feeds too. So what happens if you subscribe to the RSS feed of a frassle noteset? You suddenly get this view of a dynamic note set cast into the guise of a coordinated feed. Should subscriptions in the aggregator associate with a feed, or with a noteset that selects recent items from that feed?

(to be continued/edited…)