XOXO (A Semantic Weblog)

Archive for the "XOXOBlog" Category

Welcome to!

Posted on

Some of you may have noticed the gradual changes going on — most notably the 150 or so of you who read me by feed. I am moving my primary web presences from Blogger to a self-hosted WordPress on

My Technical, Personal, and XOXO blogs are all here (see tabs above) with all their content. If the old ones aren’t properly redirecting yet, they will be soon — going to a post on the old sites should take you to that post on this site. Feeds have not changed much, they are still on FeedBurner, but there is now a main feed (and blog) that combines posts from all three!

The site is not 100% done, obviously (a hacker’s site never is 😉 ), so if you see something that needs to be added/changed, feel free to contact me!

For this launch I have upgraded my FreshTags plugin and written Videntity and OldBlog redirection plugins. All my WordPress plugins now have thier own page.

Some of my TechBlog readers may fear (and, in fact, this has been voiced to me) that now that I am WordPress-powered I will forget Blogger. Not true at all. My existing hacks will receive maintenance, and new ones will be coming. I am not deleting my account or anything ;).

So, to finish this post up, I would like to thank those who made this site possible. If I forgot anyone or anything, it shall be added.

Recently on the Microformats Mailing List

Posted on

The microformats-discuss mailing list reached an impossible signal/noise ratio for me awhile back. My inbox was just too flooded with discussions I did not find interesting and I archived 90% of it without even opening it. Well, today I went browsing through the archives and here is some of the interesting stuff I found summarised for those of you with similar issues:

  • Scope was discussed again, some arguing that rel-tag needs to be defined as to where it applies. The upshot (which I fully support) was documented on the wiki.
  • There was some discussion surrounding microformats detection and false-positives. Discussion concerned using the profile attribute of HTML to get around this, but since parsers should check for validity of uF as well as root class existence, it shouldn’t really be a problem.
  • There is a bit of ongoing discussion which I do not 100% grok. It could have to do with saying an hCard is for the owner of a page, but that is determined by whether or not it is in an
    element. It could have to do with two hCards being for the same person, in which case I agree that class=url, rel=me on both of them pointing to each other demonstrates that very well. Or it may have to do with seeing if an hCard is useful at all… I don’t get that.
  • There was some discussion caused by the announcement of Videntity’s hCard and XFN integration (yay!) Great potential there.
  • There was the age-old ‘my rel-tag URLs are crap’ issue brought on by a Blogger-FTP issue. The Blogger problem makes sense and probably will not be ‘resolved’ except by removing rel=tag from FTP blogs. Blogger-FTP is crap.
  • Someone questioned the value of XOXO itself! They were kindly directed here 😉
  • There is a presentation (S3!) about AHAH. Of course, AHAH is built on AJAX and thus subject to cross-domain issues. They need a JSONP version.
  • Finally, another bit on proving two hCards are for the same person. In a more dangerous way.

Microformats Proxy

Posted on

Tired of working with pages that do not have Microformats support yet? The Microformats Proxy is the tool for the job. Individual or globbed URLs can be set up via XPath to extract data and format it as microformats. In this first version only hCards are supported.

All existing hCards and XOXO data are also maintained.

Mostly hAtom in the New Blogger

Posted on

While 100% hAtom support under Blogger is impossible, we can get close. What is the use of that? Well, doing this will allow you to use the Backup Tool for one thing. Most other hAtom-related tools mentioned on this blog will also work with the results of these changes. Plus, it’s just generally an all-around good idea. (These instructions will work with most templates on the New Blogger, but if you cannot complete any steps for some reason, just skip them and it may still mostly work.) So, here’s how:

  1. Go to the ‘Edit HTML’ section under the ‘Template’ tab.
  2. Find the code that looks something like this:

    <b:includable id='post' var='post'>
    <div class='post uncustomized-post-template'>

    and replace it with this:

    <b:includable id='post' var='post'>
    <div class='post uncustomized-post-template hentry' expr:id='"post-" +'>
  3. Find the code that looks something like this:

    <h3 class='post-title'>

    and replace it with this:

    <h3 class='post-title entry-title'>
  4. Find the code that looks something like this:

    <a expr:href='data:post.url'><data:post.title/></a>

    and replace it with this:

    <a rel='bookmark permalink' expr:href='data:post.url'><data:post.title/></a>
  5. Find the code that looks something like this:

    <div class='post-body'>

    and replace it with this:

    <div class='post-body entry-content'>
  6. Find the code that looks something like this:

    <span class='post-author'>
    <b:if cond='data:top.showAuthor'>
    <data:top.authorLabel/> <>

    and replace it with this:

    <span class='post-author author vcard'>
    <b:if cond='data:top.showAuthor'>
    <data:top.authorLabel/> <span class='fn'><></span>
  7. Find the code that looks something like this:

    <a class='timestamp-link' expr:href='data:post.url' title='permanent link'><data:post.timestamp/></a>

    and replace it with this:

    <a class='timestamp-link updated published' rel='bookmark permalink' expr:href='data:post.url' title='permanent link'><data:post.timestamp/></a>
  8. Find the code that looks something like this:

    <a class='comment-link' expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>

    and replace it with this:

    <a class='comment-link' rel="comments" expr:href='data:post.addCommentUrl' expr:onclick='data:post.addCommentOnclick'><b:if cond='data:post.numComments == 1'>1 <data:top.commentLabel/><b:else/><data:post.numComments/> <data:top.commentLabelPlural/></b:if></a>
    <b:loop values='data:post.feedLinks' var='f'><span style="display:none;">There is an <a expr:href='data:f.url + "?alt=rss"' rel='alternate comments'>RSS Feed</a> for comments on this post.</span></b:loop>
  9. Save your template.

Distributed Social Networking

Posted on

I’ve recently been thinking a fair bit about distributed and what that could look like. To my surprise, so have other people! (Yes, I just used the much-hated link on random words technique. First time, I’m experimenting 😉 ). I usually think in code, so this has resulted in the hCard for Blogger Generator and XFN + XOXO + hCard Blogroll Generator. Turns out that this is just step #1 of the same kinds of things others are thinking of.

I have also created a first draft of a WordPress plugin implementing some of these ideas and those to follow.

What would distributed social networking look like? It would look like people from Facebook, MySpace, BeBo, etc adding me as a friend by entering the URL of one of my profiles (likely my blog home page). They then get all the features of the network with me and vice-versa even though I have no account with their service. This also means that Facebook people could add friends from MySpace and vice-versa.

To further the discussion (and my own code / implementations, theory is useless without practice!) I would like to propose the following ‘levels’ of distributed social networking:

  1. Publish an hCard for each blog author / web page owner. This would allow all services to identify whose profile that page is and acts as a basic profile. If Pingerati is pinged this would also allow a person to be found on an hCard search engine. This could replace the traditional social networking search completely. This is implemented by the hCard generator for Blogger (above) and the WordPress Plugin (above).
  2. Publish blogrolls as XFN. This implements friends lists that social networks thrive on. If this is mixed with hCard markup it allows your friends to be better identified and indexed as well. At this level one can view relationship networks with something like RubHub. This is implemented by the blogroll generator (above) and the WordPress plugin (above, WordPress already has XFN, adds hCard).
  3. Public/private profiles. If you are not my friend (or you are a search engine) you should see less of my information than if you are my friend. If I have marked you as a friend (XFN, level 2). How do I know you are my friend if it’s decentralised? We need a decentralised auth system. Oh, we have one! If you are logged in via OpenID and your OpenID URL is either linked to with rel=friend in my blogroll (or the page that I do link to has a rel=me pointing to your OpenID URL) you are my friend (you own a URL I have marked as friend) and thus can see more of my information. I doubt this can be done for Blogger, but it is implemented by the WordPress plugin (above).
  4. Messaging. At least we need a way to notify people that we’ve added them as a friend to give them a chance to reciprocate. I know of no standard for REST communication. I have hacked together a basic prototype for the WordPress plugin (above). Passing a GET string to a profile URL with the var from containing either your URL or email address, subject containing the message subject, and body containing the message body (i.e. ?from= there) emails the owner with that information.Certain subject could have special meaning. That was some kinds of messages could be turned off (to deter SPAM). If subject=add_friend then the body is ignored and the user is simply notified that from has added them as a friend. This notification could be done automatically when you add that person as a friend to your XFN blogroll.All of this is supported by the WordPress plugin.

Another thought is that to accomplish the college network, etc, features of Facebook and other existing services one could apply rel=tag to one’s own hCard.

We need a way to log in with OpenID in one place and then have all the little places (i.e. blogs) know you’re logged in. Can’t do that with cookies, but maybe something will be though of. Just putting it out there for discussion.