There is a hockeystick curve, after all

posted 09:45AM Nov 20, 2007 with tags google opensocial plaxo socialnetworks by Lars Trieloff

Plaxo was one of the first social networks to adopt OpenSocial and according to a post at Mashable, this has proven a good decision: Plaxo Sees Exponential Growth as First to Use OpenSocial. The main advantage for Plaxo is that it can build a social network from a glorified address book by leveraging the ability to aggregating other social networks.

If you are on plaxo, just add me to your pulse, I'd be happy to see you.

Levels of social networking

posted 07:17PM Nov 03, 2007 with tags delicious digg dopplr facebook flickr friends lastfm linkedin plaxo plazes socialnetworks twitter web20 xing by Lars Trieloff

Believe it or not, for more than one year I have an article draft saved in my weblog system, titled "Social Software". The original reason for writing this was that Dan Diephouse wrote about O'Reilly's Connection, a now defunct social network for geeks. Some days ago Brett Porter wrote about his experiences with social networks, and I decided to start over with this blog post.

Being user of some social networks of different flavors, I noted that the number of connections I have in different network differs strongly. One reason is that some network have a larger user base, others make it very hard to add connections, others imply a closeness of relationships that I do not want to share with everyone. So, what level of social relationships does being connected in one network imply?

Facebook
Nothing. It basically means "Hey you are on facebook as well!"
Xing, Plaxo Pulse and LinkedIn
You might be useful for my career, I better keep you in this network.
twitter, Last.fm, Flickr
What you do (listen to, or photograph) is interesting for me
del.icio.us and Digg
What you read and think is interesting for me
Dopplr and Plazes
If you happen to be in the same place with me, it would be nice to know so we can meet.

The most valuable network for me (apart from the address book synch of Plaxo) is del.icio.us, because it allows me to track and share ideas with people I find interesting and this is despite the poor network capabilities of del.icio.us. So if you would like to connect with me in del.icio.us, just leave a comment with your username,

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.