link

Hi Toph! I'm excited to know you'll be using frassle. Your feedback and code contributions are quite welcome. :)

All of frassle's content generation is dynamic, including the RSS feeds. That is what noteset expressions are for: they're a compact query language. You can query frassle blogs on any boolean combination of:

  • feed URL (this identifies the blog something comes from)
  • permalink (in case you want to pull out one specific note)
  • category membership
  • relevance to a certain category (by percentage)
  • word or character count
  • text search

You can also request all notes that respond to a set of notes. For example, to track the latest comments on your blog, you'd want all things that respond to your feed, except for your own posts. All of this can be expressed with frassle's noteset expressions.

Currently, if you want a feed based on a noteset expression, you have to do the following convoluted dance:

  1. Create a publisher page.
  2. Create a block in that page, using the noteset expression you want.
  3. Copy the XML link for that block from the publisher page.

This is a lot of work, on top of the fact that you have to figure out the noteset expression language based on a pathetic grammar. As a simpler alternative, if you just want feeds for different categories, you can simply fetch

http://frassle.net/rss?cat=28397

which is the feed for your computers category. The number after cat= in the RSS URL should be the same as when you browse. These feeds are also available by browsing to any category and clicking the orange XML icon at the bottom of the page.

But it gets better

In the upcoming (this weekend?) alpha 9 release, frassle's publisher is being replaced by the frassle studio, which lets you build streams of content, format those streams into reusable displays called blocks, and build web pages from those blocks. A content stream is just a noteset expression with a name, but rather than writing a nsexpr yourself, there is an easier javascript editor. Each content stream has a feed, so you could just go into the studio, create a bunch of content streams, and use their RSS feeds.

The other enhancements in the studio include pages with customizable themes, programmatic widgets including a blogroll, calendar, and category tree, and many overall speedups and UI improvements.

Responding to a previous post

By the way, in your previous post where you discuss the efficiency of Python generators, you can actually very easily do the same thing in Perl. Instead of saving the result of $sth->fetchall_arrayref() and passing a reference to that, just pass $sth. The consumer subroutine can just call $sth->fetchrow_arrayref() over and over again, just like the generator you describe.