Totally unrelated to anything I normally talk about here, but has anyone else noticed how the “debate” about Nuclear Power in Australia has followed almost exactly the stages outlined by the Overton Window?
Category Archives: Uncategorized
First Greasemonkey script: Mark All As Read in Google Reader
My quest to make Google Reader work the way I want it to continues.
One of the biggest complaints people have with Google Reader is that there is no way to mark all items as read. Having unread items make people feel under pressure, which I (I believe) is one of the things that river-of-news style aggregators are supposed to avoid. Unfortunately, not feeling the pressure of unread items in Google Reader at the moment is something of a Zen meditation . Exercise
This Greasemonkey script solves that. To use it, go to the “Edit Subscription” page, then in the “More Actions” box you'll find a “Mark all as read” action. The first time you use it you may need to run it a couple of times to completely clear out your reading list (there doesn't seem to be a good way of finding out if the reading list display is empty or not).
Tested with Firefox 1.5.0.1 and Greasemonkey 0.6.4.
Download the script here.
Google Reader Module now available via IG Directory
My Google Reader Module is now available in the IG directory and approved as an inline module. This means you no longer need the developer module to use it.
Thank's to Mihai & Adam from Google for their help with this.
More personalized meme-tracking screenshots
Here's a few screenshots of my take on personalized meme-tracking:
My Memes: | ![]() |
Nik Cubrilovic: | ![]() |
Robert Scoble: | ![]() |
US Politics (Just to prove it isn't just a tech-blogger thing): | ![]() |
Spammy Job Ad
Somewhat surprisingly, this is an actual quote from real Java job advertisment from a serious recruitement company:
This project has massive potential. It could be bigger than SMS.
I don't know what to make of it.. does it mean that it pays more than it costs to send an SMS? Or perhaps you will be required to write code using a phone keypad?
I was kind of disappointed to see that I couldn't buy stock in the company – I'm sure (to quote another recent email that ended up in my spam box for some strange reason):
It is only a matter of time before it is released out into the investment
community and they take it to the moon..
beta.bloglines.com
What is http://beta.bloglines.com?
Personalized meme-tracking
So back in October, I began working on another little side project
involving personalized meme-tracking.
Basically, my software can take an OPML file and generate a clustered display similar to memeorandum. Over the last couple
of days a few other people have mentioned similar ideas – in particular Robert Scoble mentioned
Megite, and Dare Obasanjo asked to “able to provide it the OPML for blogs.msdn.com and have it show me what the hot topics were among Microsoft bloggers”.
So here's a screenshot, using http://blogs.msdn.com/Opml.aspx as a source:
It's not available to the public yet – I haven't had time to work on a few scalability issues yet.
If you'd like to discuss this, though, email works: nlothian at apache dot org.
Google Reader Homepage Module, Take 2
My original Google IG/ Google Reader
module has proved quite popular. I have now updated it so it displays entries separately outside the module. I find this a lot easier to use than the old version.
Those of you with the old version installed will be upgraded automatically. Otherwise, the installation instructions are:
- You need to be a Google Reader user (or at least have an account)
- Sign into Google IG
- Install the IG Developer module as described in http://www.google.com/apis/homepage/guide.html#Dev_Module
- Add the module http://www.mackmo.com/ig/reader/1.0/reader.xml
- Check the box that says “Inlined”
- Note that you can change the sort order, the number of items displayed and if reading it via the module marks it as read in Reader by using the “edit” link in the header.
Update: Now availble via the Google Directory and approved for inline use. Just go to http://www.google.com/ig/directory?q=reader and add it.
Update (7 April 2006): Some recent changes to the Reader API broke my IG module. All is fixed now, so if you have been having problems give it another go.
Google Reader Homepage Module
The combination of Google's Reader API and the Google Homepage API (and some fun with reverse engineering the bits Niall didn't work out) gives the IG Reader Module:

Using the Reader API from the Google homepage is the simplest way of avoiding cross-domain XMLHTTPRequest issues – which in this case are complicated by the fact that Google Reader checks google.com cookies. This means that the reader module needs to be run as an inline module (since non-inline modules are served from a different domain).
The other problem I had was determining the Google Reader _USER_ID value which is required in the API calls. In the end I had to do a XMLHTTPRequest to http://www.google.com/reader/lens/ and parse the response. I also used the same technique to find the _COMMAND_TOKEN which is required to mark items as read.
There are still a few known bugs to fix before I submit it to Google for inclusion in their directory.
Firstly, there are some display issues in IE and secondly the “mark as read” functionality gets confused sometimes (updated: fixed, I think. update 2: Now works in IE). Patches are welcome!!
To install (if you'd like to alpha test it):
- You need to be a Google Reader user (or at least have an account)
- Sign into Google IG
- Install the IG Developer module as described in http://www.google.com/apis/homepage/guide.html#Dev_Module
- Add the module http://www.mackmo.com/ig/reader/1.0/reader.xml
- Check the box that says “Inlined”
- Note that you can change the sort order, the number of items displayed and if reading it via the module marks it as read in Reader by using the “edit” link in the header.
If you like it or have some ideas (or patches!) send me a note: nlothian at apache.org
10 Feb 2006: Updated
Google Reader, AJAX & Continuations
So I was mucking around with Niall's excellent reverse-engineering of the Google Reader, and I figured out that Google have some pretty must have some pretty funky (in a good way) framework to work with client/server interactions from Javascript.
The UI has a feature called the “Lens”, which allows one to scroll through blog posts. Posts are requested 20 at a time (and returned in an the Atom XML format). Once you scroll more than 20, another HTTP request is required. The usual way to do that would be to pass some kind of “start” parameter, but instead the Atom file contains a <gr:continuation> element which contains a unique ID (think of it as a session ID).
This id can be passed to the Google feed URL endpoint, and it will return the next 20 elements starting from where you left off.
EG:
1) request: GET /reader/atom/feed/http%3A%2F%2Fdel.icio.us%2Frss%2Fpopular%2F
2) response:
<feed>...<gr:continuation>COT3ruq0jYIC</gr:continuation>...</feed>
3) request: GET /reader/atom/feed/http%3A%2F%2Fdel.icio.us%2Frss%2Fpopular%2F?c=COT3ruq0jYIC
4) response: Contains the next 20 elements
I'd really love to see the framework that is doing this stuff.
More realistically, I'd like to know the best way to only show unread items for a specific feed. I know I can grab the feed for each label, then for the feed, and loop over the feed entries looking for ones marked as read in the label feed, but there are a number of problems with that and it seems like there should be a better way. Any clues Chris?
Hopefully there's a way to do that so I can fix the things I don't like about Google Reader myself.