February 2013 Archives

Thu Feb 21 20:06:36 EST 2013

Gnus: Combining RSS feeds into a single webcomic group

In an earlier post, I set up gnus to read some RSS feeds. I wasn't happy with the dependency on a web service, and I didn't like having the comics in separate groups. So I wrote Ms. RSS, a tool to Merge & Scrub RSS feeds. To pull down my favourite comic feeds into something that doesn't make gnus barf, I use something like this:

$ msrss -o webcomics.xml -t Webcomics -k '' \
    -l 'Darths & Droids' http://www.darthsanddroids.net/rss.xml \
    -l 'Irregular Webcomic!' http://irregularwebcomic.net/rss4.xml \
    -l 'xkcd' http://xkcd.com/rss.xml \
    -l 'Dr. McNinja' http://drmcninja.com/feed/

Simple enough. Now, let's wire it into gnus. First, we define a function that calls msrss and checks that everything went okay:

(defun jdk-rss-update-webcomics ()
  "Update my favourite webcomics into a cached local file."
  (when gnus-plugged
    (message "Updating webcomics.xml...")
    (call-process "msrss" nil "*msrss*" nil
                  "-o" (concat (file-name-as-directory (getenv "HOME"))
                  "-t" "Webcomics"
                  "-k" ""
                  "-l" "Darths & Droids" "http://www.darthsanddroids.net/rss.xml"
                  "-l" "Irregular Webcomic!" "http://irregularwebcomic.net/rss4.xml"
                  "-l" "xkcd" "http://xkcd.com/rss.xml"
                  "-l" "Dr. McNinja" "http://drmcninja.com/feed/")
    (message "Updating webcomics.xml... done")

    ;; Check if msrss complained about anything.
      (set-buffer "*msrss*")
      (let ((contents (buffer-string)))
        (if (string= contents "")
            (kill-buffer "*msrss*")
          (message "msrss issued warnings. See *msrss*."))))))

Next, we hook it into gnus so it's run at startup and whenever we check for new news:

(add-hook 'gnus-startup-hook 'jdk-rss-update-webcomics)
(add-hook 'gnus-get-new-news-hook 'jdk-rss-update-webcomics)

Most of the feeds don't have author information, and the group's summary buffer looks ugly as a result. Clean that up, and while we're setting parameters we may as well sort the entries by date:

(setq gnus-parameters
         (gnus-article-sort-functions '(gnus-article-sort-by-subject
         (gnus-summary-line-format "%U%R%z (%d) %s\n")
         (gnus-show-threads nil))))

Then I made a new RSS group (G R file:///home/username/.msrss/webcomics.xml RET ...) and called it "Webcomics". Success.

Posted by Jack Kelly | Permanent link | File under: coding, emacs

Tue Feb 19 08:53:45 EST 2013

Reading RSS with gnus

UPDATE: I multiplex my RSS feeds now and sanitise them client-side.

I read a few online comics. I've been meaning to subsribe to their RSS feeds for some time, instead of repeatedly refreshing them as a form of procrastination. It turns out that Gnus can do this quite easily.

Press "G R" (gnus-group-make-rss-group) in the *Group* buffer, enter the feed URL and give it a name. It failed to parse one feed, forcing me to run the offending feed through The Feed Sanitiser.

It's neat, but I won't be 100% happy until I can get emacs to display the images inline. I don't like relying on an external webapp for sanitation and Gnus is a bit slow at updating all the groups. In the future I'd like to have an RSS multiplexer that output one sanitised feed that I could read straight from disk.

Posted by Jack Kelly | Permanent link | File under: emacs

Fri Feb 15 10:56:20 EST 2013

Australian Wooden Boat Festival, 2013

Last weekend was the Australian Wooden Boat Festival. I managed to head down from the maritime college and catch up with everyone. I wasn't sure what to expect, but the festival was HUGE. Elizabeth Street Pier was packed full of tall ships:

Tall Ships on the Pier

The marina was packed full of boats that I didn't have time to see. There was a huge range of sizes, from tiny little dinghies:

Wooden Dinghy

All the way up to the James Craig. Look how big she is!

James Craig James Craig (Closeup)

Even Captain Fell's old ferry, Emmalisa, looked the part:


That's what the whole weekend was like. Boats boats boats boats boats. Berthed just in front of us was my old ship, Enterprize, and she's looking great, isn't she?


It was a real pleasure to catch up with former crew, once they recognised me (they knew me back when I had a large and awful beard). I spent one night sitting on her tiller sharing songs and stories until 1am.

Even though we weren't the tallest tall ship in the harbour, the mast made a very good vantage point for some more happy snaps:

King's Pier Marina (from aloft) Elizabeth Street Pier (from aloft) Looking towards Salamanca (from aloft)

Along the pier, there were a number of old speedboats on display. Look at the care that's gone into them! Even their engines were clean as anything.

Femme Galante Oy290

There were a number of steam-powered boats on the water all weekend, including Hobart's local S.Y. Preana.

SL Huon Steamboat S.Y. Preana

Preana's engineer, Wally Mounster, has also built a steam-powered outboard and is considered the world expert in that area. In this photo, it's mounted on Diablito, "little devil":

Steam-Powered Outboard

The steamboats weren't the only cool old boats going around. The Notorious is a replica of a 15th century Portuguese Caravel, and with her rough-cut timbers and black everywhere, she looks MEAN.


With this many tall ships going around, there's obviously going to be some pirates walking around as well. This one wasn't in a crew, but what he lacked in numbers he made up with size:

Giant Pirate

If PVK taught me one thing, it's that when you have pirates, vikings aren't far away. This weekend was no exception. Behold, the Rusich. Crewed by a crew of crazy Russians, she's been all over the world.


It wasn't all boats, despite the name. There was a great exhibit of old surfboards, too:

Old Surfboards More Old Surfboards

What a weekend!

Posted by Jack Kelly | Permanent link | File under: windeward_bound