Why I keep using my own pulse

posted 01:52PM Oct 23, 2007 with tags aggregation atom friendfeed istalkr plaxo pulse rss suprglu by Lars Trieloff

I've been a fan of personal feed aggregation services for a long time. I've been trying: I've even built my own pulse once and twice. Now Plaxo announces something new: The Plaxo Pulse Widget allows you to embed your pulse (your feed of anything you do on the web) in your weblog. Actually it is not that new, because with the help of Mysyndicaat you could already do this before and it is not that good, because you cannot completely control the look and feel, as I can with the custom widget you see in the sidebar of my blog.

How I did it:

  1. I created an OPML file with my feeds. I simply re-used my personal OPML file, I created for the older incarnation of my personal aggregator.
  2. I downloaded and installed Sam Ruby's Planet Venus, a refactored version of the Planet software that powers many websites, for instance Planet Apache.
  3. I created a new profile that reads my OPML file:
# subscription list
[http://weblogs.goshaky.com/weblogs/lars/page/OPML]
content_type = opml
  1. I created a new theme that creates a JSON feed from my aggregated feed using following XSLT stylesheet:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"
                xmlns:atom="http://www.w3.org/2005/Atom"
                xmlns:xhtml="http://www.w3.org/1999/xhtml"
                xmlns:planet="http://planet.intertwingly.net/"
                xmlns="http://www.w3.org/1999/xhtml"
                exclude-result-prefixes="atom planet xhtml">
 
  <xsl:output method="text" omit-xml-declaration="yes"/>

  <xsl:template match="atom:feed">
var planet = [
    <xsl:apply-templates select="atom:entry[position()&lt;51]"/>
];
  </xsl:template>
 
  <xsl:template match="atom:entry">
  {
    title: "<xsl:call-template name="strip-quotes">
  <xsl:with-param name="text">
    <xsl:value-of select="atom:title" />
  </xsl:with-param>
</xsl:call-template>",
    href: "<xsl:call-template name="strip-quotes">
  <xsl:with-param name="text">
    <xsl:value-of select="atom:link[@rel='alternate']/@href" />
  </xsl:with-param>
</xsl:call-template>",
    icon: "<xsl:value-of select="atom:source/planet:css-id" />.png"
  }
  <xsl:if test="position()&lt;50">
  ,
  </xsl:if>
  </xsl:template>
  
  <!-- remove everything else -->
  <xsl:template match="@*|node()"></xsl:template>

  <xsl:template name="strip-quotes">
    <xsl:param name="text" />
    <xsl:if test="contains($text, '&#x22;')">
      <xsl:value-of select="substring-before(translate($text,'&#10;',''), '&#x22;')" />
      <xsl:text>\"</xsl:text>
      <xsl:call-template name="strip-quotes">
        <xsl:with-param name="text">
          <xsl:value-of select="substring-after(translate($text,'&#10;',''), '&#x22;')" />
        </xsl:with-param>
      </xsl:call-template>
    </xsl:if>
    <xsl:if test="not(contains($text, '&#x22;'))">
      <xsl:value-of select="translate($text,'&#10;','')" />
    </xsl:if>
  </xsl:template>
  
</xsl:stylesheet>
  1. Finally, I customized my blog's sidebar template to include the JSON feed as a list:
<li id="container">
    <h2>Activity</h2>
    <p><script type="text/javascript" src="http://del.icio.us/feeds/js/networkbadge/trieloff?name;nwcount;icon=s"></script></p> 
<script type="text/javascript" 
        src="http://internal.mindquarry.com/venus/lars/index.json"></script>

<script type="text/javascript">
    function showImage(img){ return (function(){ img.style.display='inline'; }) }

    var ul = document.createElement('ul')
    for (var i=0, post; post = planet[i]; i++) {
        var li = document.createElement('li');
        var a = document.createElement('a');
        a.setAttribute('href', post.href);
        a.appendChild(document.createTextNode(post.title));
        li.style.backgroundImage = "url(http://internal.mindquarry.com/venus/lars/"+post.icon+")";
        li.style.backgroundRepeat = "no-repeat";
        li.style.paddingLeft = "20px";
        li.appendChild(a);
        ul.appendChild(li);
    }
    document.getElementById('container').appendChild(ul);
</script>
   </li>

Using this method I am more flexible in adding feeds and supporting services, I can easily customize the appearance of the widget in my sidebar and I have all the super-powers that Planet Venus offers, for instance filtering Feedburner spam from my feeds.

Build your own iStalkr, Suprglu, etc.

posted 09:07AM May 25, 2007 with tags aggregation atom istalkr rss suprglu by Lars Trieloff

I am a fan of all kinds of RSS and ATOM aggregation (no wonder with an OPML file of 1,454 feeds), escecially of personal information aggegation. As a good Web 2.0 citizen, I create a number of feeds that allow to track my interests, thoughts and activity, e.g. my weblogs, my bookmarks, or my software development builds. A personal information aggregator or lifestream aggregates all those feeds that are specific to a person and offer a one-stop interface.

The first service of this kind I have seen isSuprGlu (my personal page looks like this. Unfortunately this service has been offline for weeks after I created my account and it limits the number of feeds you can track to nine. If anyone knows the reason why nine, not eight or ten, please tell me.

So I was delighted to find a similar service with some additional personal profile info and a better interface for adding feeds, a nice timeline view, no feed limitation and an even stranger Web 2.0 style-name: iStalkr (my personal page looks like this). Unfortunately this service went offline for the last week and I thought iStalkr to be the second personal information aggregator I killed by my mere membership.

I told this problem to Marjolein, the No. 1 RSS authority in the blogosphere and within ten minutes I had my own lifestream aggregator. These were the steps:

Lars
My personal information aggregator is broken. Do you know an alternative?
Marjolein
Do you have an OPML file of your feeds?
Lars
Wait a minute. (I created an OPML file using my Roller Bookmarks and my custom OPML template)
Marjolein
See http://mysyndicaat.com/myfeed/feed/cc1_Lars%20Trieloff%20-%20River%20of%20News feed created with Mysyndicaat
Lars
Thank you, that's cool. But is there some way to embed this in my weblog??
Marjolein
the way I'd do it, is add this feed back info your OPML, make sure it's listed at the top of your OPML, by naming it so that it sorts at the top, then go to Grazr.com and add the feed

Grazr.com is a service that allows you to add news aggregation widgets to your weblog and that's what's how we did it. And in minutes I had my own personal lifestream aggregator. Thank you very much for the help, Marjolein.

| Comments[2]