Blogger Hacks, Categories, Tips & Tricks

Sunday, April 29, 2007
One question that arises regularly with my blogging is the update dilemma - what should to do with those little scraps of information that pertain to an earlier post? This article outlines an approach to dealing with this common issue.

When I'm following a breaking news story or there's delayed developments or even a random thought occurs, I want to inform my readers in the most convenient way. If it's big enough, a whole new post may be warranted (with a link back to the earlier post). Otherwise, I ask myself: should it be done with a comment or with a manual update to the bottom of the original post? Thanks to Hearsay (and other recent comments hacks), a comment will have visibility across all blog pages, informing all visitors (but not subscribers). If there's a lot of comments on a particular post or a high rate of commenting on the blog, important updates can get lost. Alternatively, appending an update (or follow-up, postscript, addendum, errata or correction) to the post may not get out to subscribers and visitors who are interested.

I've tried to get the best of both worlds by using Yahoo Pipes to automatically generate an update feed for my blog. This feed consists of the most recent updates (to any post on my blog) and can be offered to subscribers, much like a regular post or comment feed. It can also be combined with Hearsay to produce a friendly sidebar panel to display the most recent updates to your site visitors.

The rest of this article introduces the Blogger Update Extractor pipe, explains its operation and how you can use it in your blog. I conclude with some possible alternative uses and pointers on future developments.

First of all, to get a clearer idea about the problem I'm talking about (and my solution), have a look at this post about a court case I was following. As you can see, there were five updates (each about two paragraphs) over the twelve months after the original post. This is fairly common with my posts - perhaps a quarter of them feature one or more updates like this.

I have long adopted the convention of using *** UPDATE *** to indicate that the subsequent text has been appended to the original post. I also use a named anchor (eg <a name="update1"> ... </a>) on each update heading. Why? Two reasons. Firstly, it gives me a unique URL for each update (ie http://...#update1) in case someone wishes to bookmark it. Secondly, my Blog-Nav system picks up anchors so that users can jump up and down the page (use the up/down arrow in the top right to see).

What the Update Extractor pipe does is gather my blog's RSS feed (not Atom - see below) and parse out the updates, returning a new RSS feed that consists of just the most recent updates. This works because of handy feature in Blogger's RSS feed that is not present in Atom: when you update any post it automatically goes to the top of your RSS feed. The rest is just straightforward regular expressions in Yahoo's Pipes.

With this new feed, you can offer it to readers (perhaps after burning it through FeedBurner for stats) and/or display it in your blog's sidebar to let all readers know. The links will point to the actual update, not just the post (eg http://...#update1)

Now, the latest Blogger has support for displaying arbitrary RSS feeds: you can simply use that. Or, you can create a "special" feed that will work with the Hearsay hack to give you a bit more control over presentation.

If you want an RSS feed of your recent updates, use this URL:

http://pipes.yahoo.com/pipes/pipe.run?BlogID=xxxxxxxx&_id=pAQ35A322xGwxdeMouNLYQ&_run=1&_render=rss

(replace xxxxxxxx with your blog's Blogger ID)

If you want a Hearsay-style sidebar panel of your recent updates, insert this code into your Blogger template sidebar:

<div id="recent-updates" ><center><br/><br/><br/>Please wait ... <br/>loading updates.<br/><br/><img src="http://ghill.customer.netspace.net.au/snake_transparent.gif"/></center></div>
<script type="text/javascript" src="http://ghill.customer.netspace.net.au/hearsay/hearsay-v01c.js"></script>
<script type="text/javascript">
hearsay("http://pipes.yahoo.com/pipes/pipe.run?BlogID=xxxxxxxx&_id=Ik9FeAz22xGZT18tqWIyXQ&_run=1&_render=json", "recent-updates", true);
</script>

(Again, where xxxxxxxx is your blog's Blogger ID.)

The Update Extractor comes in three flavours: "Full" grabs all the text following an update (ie to the end of the post); "Partial" grabs just the next (substantial) paragraph and "Hearsay" grabs the partial feed but prepares it for display by the Hearsay script. Please feel free to clone and modify the pipes as needed; I'd appreciate it if you could put a comment here so I can have a look.

NB: Using more Pipes, your blog's update feed can be merged easily with your blog's comment feed if that would make more sense for your blog.

One downside of this solution is when there are multiple updates to a post: it will only "see" the most recent (ie physically last) update. This is okay for low-frequency updates but completely inadequate if you put your updates at the top of the blog.

The problem is that the feed doesn't contain any information about the time of all the updates, just the first publication timestamp and the most-recent update timestamp. To deal with this, I'm now using a new convention whereby instead of naming my anchors "update1", "update2" etc I'm using a timestamp "update1177829961000". Future versions of the pipe will be able to see this and handle multiple updates per post intelligently.

Rather than typing all that in each time, I've made a bookmarklet to help out. (See below for code.) The automatically generated update heading looks like this:

<center><a title="Sunday, 29 April 2007 04:59:21 PM" name="update1177829961000"><span style="font-weight:bold;">*** UPDATE ***</span></a></center>

This same basic approach - mark out content with an anchor, process the RSS feed through Pipes and display via JSON - can apply to other content too. For example, I quote heavily from newspapers in my blog posts, so I could create a feed just of quotes. You could also make a feed for hat-tips, code, links, images, citations, headings or pretty much anything else.

So there you have it: blog update feeds for your subscribers and visitors. As usual, comments, criticisms and suggestions are most welcome.

Timestamp Anchor Bookmarklet Code:

javascript:var insert_date= new Date(); insert_timestamp=Date.parse(insert_date); insert_html='<center><a title=%22'+insert_date.toLocaleString()+'%22 name=%22update'+insert_timestamp+'%22><span style=%22font-weight:bold;%22>*** UPDATE ***</span></a></center>'; document.forms.stuffform.htmlPostBody.value+=insert_html; void(0);

*** UPDATE ***

It occurs to me that maybe a live working example on this page might help. This is what I mean by an update - some content added some hours laters. If you mouseover the update heading thingy above, you'll note that it gives you the time of update. At the risk of inducing recursive madness, here's Freshblog's update feed. Note that the embedded link in the feed doesn't just point to this post, it points to this update (via the named anchor).

*** UPDATE ***

After noticing "something screwy" going on, I've modified this Yahoo Pipe to append the now-required orderby=updated to the feed fetch module. Props to Phydeaux3 for the explanation and syntax.

Filed in: , , ,
Posted at 8:22 AM by Greg.
Thursday, April 26, 2007
In my ceaseless quest for content to clutter up my blog's sidebar, I have found a rich new source: reader search queries, or "buzz". BuzzFlux allows you to retrieve and display these search queries in near-real-time, right in your sidebar, for the amazement of your readership. It also signals my return to blog-hacking after a six month hiatus.

Should I Do This?


First things first: is it a good idea to display your readers "live" search queries on your blog? On the plus side, it gives readers a good idea about what kinds of content your blog has (at least, as far as search engines and their users are concerned). In that sense, search queries may be considered as micro-content, a bit like tags. It may also help keep readers on your page, especially if coupled to your built-in blog search (see below).

On the downside, it may disturb some readers to see their recent queries displayed like this and some may be sensitive to the privacy side of things. Also, you have no control over what readers type into search engines, so you may be displaying potentially defamatory, profane or otherwise inappropriate content on your blog.

I'd be interested in Freshblog's readers' views on this one, so please chime in with your own thoughts on this question.

How Does BuzzFlux Work?


Most blogs worth their salt employ some sort of web stats service. Typically, you put a bit of code into your template that "phones home" to a central server every time a page is hit. Among other things collected is the referring URL, which contains the search query if the reader used a search engine to find your blog.

I think all stats services report on search queries. I use BlogFlux for some of my web reporting. They make some (though not all) of their stats available via RSS, which is handy for hacking. Unfortunately, the search queries page isn't one of them. To get the search page info in a useful form, I made a simple Dapp to retrieve the target page. (Here's the Dapp.) Once the contents are returned as a JSON object (an array of the top search queries), the BuzzFlux script just formats the results for display in the sidebar.

If there are more search queries than space permits, BuzzFlux "rotates" the queries every few seconds. (That is, it swaps in other queries at random).

As a nice add-on, readers can click on a search query of interest and my sidebar searching hack will scour your blog for that query, displaying the results in your sidebar too. By showing readers other people's queries and the results on the page, it's hoped that it will help readers find relevant content without leaving your site. (NB: This extension requires you to install the Recursive Backlinker hack.)

Check out the magic in action on The Speccy (scroll down to "Catch the Buzz" in the sidebar).

How Do I Install BuzzFlux?


First, go and register with BlogFlux and install their stats counter on your blog. (This hack doesn't have to rely on BlogFlux, but that's how it is at the moment.)

Next, put this in the header of your blog template:

<script type="text/javascript">
// BuzzFlux
Buzz = {"divid":"BuzzFlux", "limit":"15", "timer":"2000", "blogid":"1413", "period":"hour", "scan":"", "queries":[]};
</script>

<script type="text/javascript" src= "http://ghill.customer.netspace.net.au/buzzflux/buzzflux.js"></script>

The parameters are as follows:

divid = the ID of the div in your sidebar where all this content will be displayed.
limit = the number of queries to display at any given moment
timer = the delay (in milliseconds) between rotating queries
blogid = the BlogFlux ID number for your blog. Found in the URL of your results pages.
period = the period over which search queries are drawn. Allowable values are month, week and hour. Only use hour for high-traffic blogs since you want a reasonable number of queries to display (ie less than five search hits an hour and it will look a little sparse).
scan = the ID of your in-blog search field. Leave it as "" if you're not using the extension.

Now, edit your blog template to put this in your sidebar:

<div id="BuzzFlux" style="text-align: justify">   ... loading recent search queries ...</div>

Finally, you might consider throwing some CSS styling in. Either add these to your CSS file, or put them in the <style> part of your template header:

.BuzzList{ height: 9em; overflow: hidden; padding: 10px;}

a.BuzzItem{ text-decoration: none;}

a:hover.BuzzItem{ text-decoration: underline;}

Where To Next?


This opens up a range of possibilities. Not least is that FreshTags has for some time supported tag extraction from search queries, providing a means for some sort of query/tag cross-over. Another thought would be to use Yahoo's Pipes to merge, sort and process buzz from other (related? or rival?) blogs too.

As alluded to before, there are also pitfalls too. For example, who owns the copyright on a collection of search queries? Who's liable for publishing them? Of course, it's anonymous - to a degree. Without the aggregation effect of a Google Zeitgeist, it may be more like AOL's search debacle from last year.

Filed in: , , ,
Posted at 2:20 AM by Greg.

Solution for the last hundred yards



For those who haven't seen the news yet, Google has announced TiSP, a free in-home wireless broadband service. It's in BETA, and those wishing to participate must apply TODAY, April 1, 2007.

Installation couldn't be simpler: Remove the spindle of fiber optic cable from the installation kit, activate the patented "GFLush" system which connects the cable to one of thousands of TiSP Access Nodes, where Plumbing Hardware Dispatchers (PHDs) complete the access point connection.

Drawbacks: Google Toolbar must be installed, presumably so Google can serve up their ads on this advertising supported service.

Don't forget, incidentally, that today is Internet Spring Cleaning Day.

Labels:

Posted at 6:16 PM by Yokota Fritz.

eXTReMe Tracker