New Blog for Ephemera

This blog has been quiet lately as I've been doing a lot of work in the last year on the iPhone. I've been speaking at conferences like eComm 2008 (presentation, video from panel), writing an book on the iPhone with my co-author Shannon Appelcline called iPhone in Action: Introduction to Web and SDK Development (first two chapters free), and I am one of the organizers for the upcoming iPhoneDevCamp 2, a MacHack style conference on August 1st-3rd, and I am working on some social software apps for the iPhone.

I've been reluctant to post too many of these off posts on this blog, as I like the length, quality and high-signal-to-noise ratio of the posts that I've written for this blog. I do plan to continue to offer more social software and social media posts, including followups to my Collective Choice articles, as well as updates on my popular Dunbar Number posts. But I don't want to spam my readers here with notes on iPhone Apps, my thoughts on movies, circuses, the odd conferences I speak at, etc.

EphemerablogthumbSo I've been trying to figure out how to cover some of the other things that I am up to without loosing my readers here, so decided to a create a new blog for my shorter and more transitory thoughts: Christopher Allen's Ephemera Blog. So far I have posted:

The RSS feed for this blog is here .

If you are interested in some of the other things I am looking at, you can follow my del.icio.us bookmarks, or read my Google Shared Items, watch my Twitter posts, or see them all combined together in either FriendFeed or Plaxo Pulse.

Posted on July 13, 2008 at 01:22 PM in Weblogs | Permalink | Comments (0)

In Seoul for the Social Web

Downtown Seoul, South Korea, from Hotel WindowI'm in Seoul, South Korea this week for the 13th Global Forum on Business Driven Action Learning and Executive Development, where I'm presenting on the topic of the how to get involved with the Social Web.

My presentation is an offshoot of an odd sideline of mine, executive blog and social web coaching. Basically, many times over the last couple of years I've been asked by colleagues and friends to help them with the social web. I've always been honored to spend the time to teach them how to blog, better manage the noise of the web by using a feed reader, how to participate in social networks, and how to improve their personal brand.

Increasingly, the social network of their peers is now asking me to help them to do the same for them. So I've been doing this more and more over the last year on a consulting basis as their social networks appear to be saying saying that I have a lot to offer.

I've twice now been out to Cincinnati where I've been working with Drew Boyd at Johnson & Johnson, where I've been coaching him on his blog and personal brand. He has been blogging now for almost six months at Innovation in Practice with some success. Now he is referring me to other executives at Johnson & Johnson who need similar coaching, or need strategic advice on how to deal with specific social web initiatives within Johnson & Johnson.

Most recently, Drew has asked me to join him in Seoul to speak at the Global Forum, which is a worldwide gathering of executive trainers. There I am presenting a synopsis of what I teach, and how they can begin to learn how to teach their staff how to do the same. My trip has been sponsored by Johnson & Johnson, so it has been a lot of fun to be here. I get to both dive into deep discussions of methodologies for teaching inside business, as well as learn about the Korean and other international business cultures and how they are different from the United States.

During the evenings I've had a chance to wander the streets of downtown Seoul. It is very different then wandering though streets in Europe, not only because of the different culture and language, but also because all of the signs are in Hangul, the korean character set. Very few signs use the roman alphabet, so it is often very difficult to figure out what is what without walking in. Like Japan, there are some signs in English to represent a brand or a style, but not many. Even China has more signs in English then Korean's do -- the last time I was there I was surprised by how almost every important sign was in both Chinese and English, so much so I was beginning to learn Chinese language characters just by association! Despite the language problems everyone is nice and it feels safe to wander in these neighborhoods.

I return on Monday, and I'll make a copy of my final presentation available here.

Posted on June 25, 2008 at 01:18 AM in Weblogs | Permalink | Comments (0)

Ratings: Who Do You Trust?

My colleague, Shannon Appelcline, has been working on a game rating system for RPGnet. This has resulted in real-world application of the principles for designing rating systems which we've previously discussed in our Collective Choice articles. Shannon's newest article, Ratings, Who Do You Trust? offers a look at weighting ratings based on reliability.

Shannon_appelcline

On the RPGnet Gaming Index we've put this all together to form a tree of weighted ratings that answer the question, who do you trust?

Here's how we measured each type of trust, and what we did about it:

  • Volume of Ratings for an Item. Introduce a bayesian weight to offset the variability of items with low-volume ratings.

  • Volume of Ratings by a User. Give each user a weight based on his volume of contribution which is applied to his ratings.

  • Depth of Content by a User. Give each rating a weight based on the depth of thought implicit in the rating which is applied to that rating.

These all get put together to create our final ratings for the Gaming Index, with each user's individual rating for an item getting multiplied by its user weight and its content weight, and then all of that averaged with the other user ratings and the bayesian weight too. The result is in no way intuitive, but users don't really need to understand the back end of a rating system. Conversely we hope it's accurate, or at least more accurate than would otherwise be true given the relatively low volume of ratings we've collected thus far.

Here are some of Shannon's earlier discussions about the design behind the new "user content" based RPGnet Gaming Index:


Related articles from this blog:

  • 2005-12: Systems for Collective Choice
  • 2005-12: Collective Choice: Rating Systems
  • 2006-01: Collective Choice: Competitive Ranking Systems
  • 2006-08: Using 5-Star Rating Systems
  • 2007-01: Experimenting with Ratings
  • Related articles from Shannon Appelcline's Trials, Triumphs & Trivialities:

  • #196: Collective Choice: Ratings, Who Do You Trust?
  • #198: Collective Choice: More Thoughts About Ratings
  • Posted on September 14, 2006 at 04:28 PM in Games, Social Software, User Interface, Web/Tech, Weblogs | Permalink | Comments (2) | TrackBack

    SynchroEdit: Simultaneous Editing for the Web

    For the last several months I've been working on a new open source project that I've been calling SynchroEdit. SynchroEdit is a browser-based simultaneous multiuser editor, useful for "same-time" collaboration.

    SynchroeditmacThe basic concept is that it allows multiple users to WYSIWYG edit a single web-based document, all at exactly the same time. SynchroEdit continuously synchronizes all changes so that users always see the same version. They can also see each others' changes as they type, see where each user is currently editing, and see each others' changes by color.

    SynchroEdit is a tool for "same-time" collaboration, either "same-time, different-place", as in teleconference calls, or "same-time, same-place", during a meeting or a conference. If you've ever used SubEthaEdit on Mac OS X, or MoonEdit for Windows or Linux, or the cross-platform Gobby, this is a similar experience. The difference is that unlike those tools you are not limited to just plain text -- character styles (bold, italic, etc.) and paragraph styles (rulers, headers, blockquotes, etc) are synchronized as well. And of course, it all works inside your browser.

    SynchroEdit is inspired by my frustration with the lack of an easily accessible cross-platform simultaneous editor. Many times when I've been on the phone with a colleague discussing a draft blog entry, or demonstrating some code, or on a teleconference call with others to discuss a proposal or a standard, or at a conference taking notes with others, I've wanted to have this tool. The rare occasions that we all have been on the same platform and have been able to use an existing tool have demonstrated to me the value of having a good simultaneous editor. Having SynchroEdit available will make it easier for people to have these positive collaborative experiences. 

    I have a long history with "same-time" collaboration tools -- back in 1988 I was briefly executive producer at Broderbund for a same-time groupware product called For Comment. Unfortunately, the success of the Nintendo game console forced Broderbund to drop all of their non-consumer product efforts. In the early 90's I worked on several different "same-time same-place" groupware tools for live meetings. Most recently, my game company Skotos Tech, created several browser-based "enhanced chat" clients for playing in MUSH-like storytelling games, which are also "same-time".

    I personally believe that that this capability should be a fundamental feature of the web, sort of the obvious extension of Tim Berners-Lee's vision of the editable web. Thus my desire to offer this tool as open source, allowing anyone to add this capability to their own software (unlike proprietary editor services such as JotLive or Writely).

    The challenge with offering SynchroEdit as open source is finding a business model -- unlike an application like SubEthaEdit or a service like JotLive, it is difficult to get revenues from individual users. Instead, we ask for contributions from companies that might find the tool useful, we offer consulting to customize it for specific purposes, and we give these companies public credit for their contributions to the common good.

    The first company to step up to the plate is SocialText, an enterprise wiki company. Clearly, being able to offer this capability to their customers will give them added value, and they already have a history of using open source with their support of Kwiki and Wikiwyg.

    The second supporter is venture capitalist and blogger Joichi Ito. He is is particularly well known for his own experiments with "same-time" collaboration. He runs a continuous #joiito IRC chat room, active 24 hours a day with hundreds of his friends. He also has done many live "same-time" experiments with chat backchannel during his talks at various conferences.

    In addition to to financial support of SocialText and Joichi Ito, I have some offers of help from the Bainbridge Graduate Institute, who plan to use it in its socially responsible and environmentally sustainable MBA program, and we've also taken advantage of some code developed by Skotos.

    The development of SynchroEdit is being led by Kalle Alm, a young Swedish coder I met when he was creating an online game at Skotos. Skotos has long had the vision of having games created by its members, and Kalle Alm was the first member to create a game completely from scratch using Skotos' tools.

    We are seeking more financial contributions so that we can accelerate development. Currently SynchroEdit only works in Mozilla/Firefox, and I anticipate that making it work with Internet Explorer may be quite difficult, so we'll need more partners to help.

    Christopher_allen_web2point1_brainjamI did a demo of last year's open source project, EditThisPage, and of the SynchroEdit alpha at Web 2.1 BrainJam last week; there are two videos available from Enric Teller's vBlog: Presentation and Q&A

    If you are interested in learning more, visit the SynchroEdit website. We have additional information on the program, a developers wiki, as well as a sandbox that you can play in to demonstrate SynchroEdit in use.

     

     

     

    Posted on October 8, 2005 at 04:04 PM in Social Software, User Interface, Web/Tech, Weblogs, Wiki | Permalink | Comments (1) | TrackBack

    Extrapolative Hostility in the Online Medium

    Extrapolate
    To infer an unknown from something that is known; conjecture.
    -- The Random House College Dictionary

    Mick LaSalle, an acerbic movie reviewer for the San Francisco Chronicle, writes a regular column "Ask Mick LaSalle" in the Sunday paper, where he sometimes allows others to vent their displeasure at his movie reviews. In this week's column he says something that I find very accurate to my experience with the online medium:

    As for why people get hostile when they hear a differing opinion, I go back to Spinoza's definition of love and hatred. He says that people love that which they think reinforces their survival and hate that which they think threatens their survival. I believe -- this is just my humble theory, now -- that when people hear an opinion that counters theirs, their minds extrapolate from that one opinion to imagine a whole philosophical system. And then they imagine how they would fare in a world run according to that imagined system. So they go from disagreeing to feeling threatened in a matter of seconds, and they lash out. Often they write letters that begin, "You are obviously," and that's where they identify, not you, but the phantom they feel threatened by.

    Over the years, I've been "obviously" liberal, conservative, gay, straight, humorless, frivolous, angry and deeply jealous of Tom Hanks. When I was 30, I remember getting accused of being a 45-year-old former hippie who drove a BMW, wore a Rolex and had done acid in the '60s. I'm not sure if I wrote back, but if I did, I would have said, "Wrong. Wrong. Wrong. Wrong. Wrong." But, of course, that kind of letter is your key to acquiring distance. It lets you know that the person's real quarrel is with some middle-aged former hippie -- probably known as Dad -- and that you're just the vehicle for that day's projection.

    I think that Mick LaSalle is exactly right -- I've seen this type of hostility based on extrapolation regularly in online mediums: in emails, newsgroups, wikis, blogs, etc. I've been guilty of it a few times myself, though usually for me the result is that I don't respond at all -- "Oh, he is just a flaming liberal", "She's an arch-conservative" or "He is a just a technophobe." I can then feel comfortable in ignoring the rest of his or her point of view rather then trying to understand it.

    I doubt if explaining this theory to someone who writes a hostile message is useful -- they will take it as yet another attack, which will likely contribute to another cycle of flamage. But I do find Mick's theory useful as another way to read and understand hostile messages, and respond more appropriately.

    Understanding this lets me add another widget to my social software toolbox: when a group process results in a hostile message, try to determine if the author is actually reacting to what you said or if their hostility is based on extrapolating to "obvious" generalities. This may not allow you to directly address the hostility, but it may help you better understand it and thus not contribute to the cycle of flames.

    Posted on July 18, 2005 at 02:13 PM in Film, Politics, Social Software, Web/Tech, Weblogs, Wiki | Permalink | Comments (6) | TrackBack

    New Sidebar: Recent Bookmarks

    If you read my blog through an aggregator, you may not have noticed my new sidebar "Recent Bookmarks". It is a list of web pages that I've found interesting enough to annotate using the del.icio.us service. It is useful if you want to have an insight into what future blog entries I'm working on, as links will often show up there before my actual blog posting is out.

    You alternatively can view my last 10 del.icio.us postings, or subscribe to my del.icio.us RSS feed.

    If you are interested in offering this feature in your own blog, I used the RSS Digest webservice to create a javascript applet that formats information from my del.icio.us RSS feed into a format suitable for my sidebar. There are a lot of other cool things that are possible with this service.

    Posted on April 8, 2005 at 11:40 AM in Social Software, User Interface, Web/Tech, Weblogs | Permalink | Comments (4) | TrackBack

    Future Topics

    I've been working on an ambitious list of topics that I'd like to cover over the next year. I offer them to you here so you can have some idea the areas that I am thinking about.

    Office Architecture for Innovation -- Over the years I've built or converted three offices to my specifications. From this I have learned a number of things about about how to create a productive environment innovation-oriented businesses. These include some of the obvious suggestions such as fresh air and natural light, but also include not so obvious ideas such as using magnetic paint and providing a small washer-dryer.

    Requisite Variety -- This concept from cybernetics applies to social systems as well. "The larger the variety of actions available to a control system, the larger the variety of perturbations it is able to compensate." More people, as well as a diversity of thinking styles and experience, give social software more "variety of actions", thus this is part of the reason why social software can be so effective.

    The Art and Craft of Meme Design -- We are learning more about how to create an effective meme. Creating memes has always been an art performed by publicists, marketers, politicians, the press, and to a lesser extent by scientists and other academics. Have we learned enough to turn this art into an explicit craft?

    Wiki Editing Dichotomy -- One interesting possible barrier of entry to active participation in a wiki is what I call the "wiki editing dichotomy". You have to be proud enough to believe what you are contributing is generally worthwhile to others (or at least worth your effort), but you also have to be humble enough to understand that others can improve it. I don't know of many other collaborative media that requires both pride and humility.

    Choice & Neuroeconomics -- There are some that say at the root of every decision is emotion. Even a 'rational' decision appeals to a sense of balance or beauty. Recent studies using PET are establishing a neurological basis for emotions, and some reveal interesting facts about how we make choices.

    Assessing Risk -- There are a variety of areas where we as humans have a difficult time being completely rational. One of these is risk assessment. It turns out we may be hard-wired to not be able toeasily understand risk that is greater then one in a hundred or so. Thus a very rare risk, say one in a thousand, will often be emotionally interpreted as having a much higher risk.

    Persuasive Computing -- BJ Fogg's group at Stanford has done some interesting research on how computers can persuade you to do something. There are a number of useful ideas that come from this research. There are also some ethical considerations that should be discussed.

    Cognitive Dissonance -- This technique is central to many forms of persuasion intended to change beliefs, values, attitudes and behaviors. It is used by facilitators, businesses, military organizations, and even cults. It can be used positively or negatively. How might it be used in social software?

    The Dark Side of the Force -- The same social tools that we use for good, can also be used for harm. How do we ethically use what we are learning about social software? Some say that almost by definition social software attracts spammers, trolls, and innappropriate sexuality. What can we do to prevent these misuses of social software?

    Conversation vs Communication -- Update and rewrite of my 1990 essay on how social software design needs to balance conversation vs communication.

    Social Emotions -- We appear to have evolved a number of emotions that appear primarily to exist to support a common good, rather then to ensure our individual success. These include schadenfreude, mirth, naches, revenge, shame, pride, outrage, approbation, admiration, elevation, etc. Studies by Eckman on unconscious facial gestures, studies on the neurological basis for emotions, and studies on emotions in games, are proving that these social emotions exist. A number of them have interesting implications on social software.

    Glances & Strokes -- There is some old work on the amount of eye contact we make with others in small groups, as well as some research from transactional analysis on strokes, which are the amount of recognition given to others through words and deeds. Is there a neurological basis for needing a certain number of glances and strokes each day? How does this concept apply to social software?

    Weak Links -- There are some interesting social implications behind what we've learned about weak links in social networks. How do we identify and encourage weak links in our social software systems?

    Negativity vs Positivity -- It is far easier for someone to respond negativel than positively. In political systems it is far easier to say no rather then yes. What social software encourages positivity, and is it possible to design social software to do so?

    Time Economy -- Our ultimate most unrenewable resource is time. How time and attention are a basic economic unit that should be considered when looking at social software.

    Group Life Cycle -- We often focus on how groups form, emerge, and grow. Yet there are many lessons to be learned from how groups die, including that it isn't necessarily a bad thing and that keeping a group from death can be dysfunctional.

    Groupthink -- What causes groupthink? When is it good and when is it bad?

    Two Thresholds in the Value of Knowledge -- In order for knowledge to be valuable, it must at minimum be more valuable then the costs to find and absorb it (costs which include bandwidth and attention). Tools like Google have tremendously increased the amount of knowledge that is worth the time and attention to find it. What types of knowledge fall below this threshold of value? Is there a limit to how much we can lower this line? Furthermore, there is another threshold where the knowledge is significantly more valuable than only bandwidth and attention. How much have internet tools impacted this second threshold? Many internet business models, in particular content models, require some ability to offer value in this upper threshold -- can they survive as this upper threshold changes?

    Intimacy and Social Networks -- Social Networks Analysis tends to focus on the connections between people, either explicitly through acknowledgement of connections (LinkedIn, Friendster) or implicitly through analysis of your communication (Spoke). None are able to measure intimacy. Yet our intimate social networks are an important component of our overall happiness and contentment within both our professional and personal lives. How does intimacy work in social networks? Also there are some concepts in psychology known as communal vs exchange relationships by Clark & Mills from late 70's that may apply here.

    Social Games -- A recap of Shannon Appelcline's and my analysis of the basic forms of social games types. These include relatively well understood ones like majority control, voting, meta-voting (Nomic), auctioning, etc., but also include less well understood games like playing of roles, dominance and submission, etc. There are also links to social emotions, such as mirth and schadenfraude.

    Lessons from Castle Marrach -- We released the Castle Marrach online game in September of 2000, and it was designed from the beginning to be a game for the Bartle-type known as "the socializer". What lessons did we learn in the five years since the release of the game? What tools are in my social software toolbox today that might have helped with the design?

    Lessons from F2F Facilitation -- There are many skilled practitioners of face-to-face facilitation, some of which are paid very high fees for their skills. What lessons can we learn from their experience that we can apply to social software? Why have so many of these facilitators failed to have success online?

    More Human vs More Than Human -- Many futurists seek to offer us augmentation of our minds and bodies through technology. Many of these ideas may fundamentally change what it is to be human, and may even have unforeseen complications unanticipated by their creators. One interesting approach to looking at these technologies is to examine which make us "more human", rather then "more than human".

    Lessons from Mental Disorders -- Most, if not all, mental disorders have their roots in survival strategies; however, they are over-expressed because of genetic or other causes. Examining the healthy behaviors hiding behind depression, autism, mania, schizophrenia, paranoia, etc. offer a number of insights on how we think.

    Joy of being a Primate -- If you scan the surface of my writing, you may observe that I have a strong belief that our animal nature and genetics form an essential and often unconscious part of what it is to be human. You could interpret these "nature" over "nurture" ideas as limiting us to being just animals. Instead, I believe that by becoming aware of our primate nature, and choosing to leverage it or suppress it by conscious choice rather then letting it drive us unaware, is what makes us more powerful.

    Smart Contracts -- Nick Szabo popularized the idea of using some of the primitives of cryptography in unique ways to create what he calls "smart contracts". He hypothesized approaches to cryptographic handling of collateral, bonding, delineation of property, bearer certificates, and much more. Others have proposed various auction protocols using these concepts. One of the fundamental atomic elements of many of these smart contracts is something called a "reusable proof of work", which Hal Finney recently demoed a version of at CodeCon 2005. What are the possibilities offered by smart contracts? What are the barriers to implementation?

    Club System -- In the 80's, development of Ted Nelson's Xanadu vision was being financed by Autodesk. Unfortunately, for a variety of reasons Xanadu failed to deliver any technology. However, a couple of their ideas could be valuable today, one of which is the concept of an alternative to the "user and groups" metaphor for computer security. Xanadu turned that idea upside down and called the result the "club system". The club system approach is particularly suited to the internet based collaboration tools, in particular wikis. I also have some insights to offer a cryptographic approach to the club system, which might allow P2P distribution of collaborative documents, while preserving group privileges.

    Edges of Cryptographic Security -- The SSL cryptographic protocol offers a choice of a number of security properties: integrity, confidentiality, encryption, one-party authentication, and two-party authentication. But there are a number of security properties that very few deployed cryptographic protocols offer. These include perfect forward secrecy, undeniability, deniability, authorization, delegation, multi-party authentication, shared secrets, etc. What are these security properties and how are they useful? Why have they not been successfully broadly deployed?

    The SSL Story -- When SSL was first proposed it was broken within an hour. Even when Netscape fixed those problems, it wasn't clear that SSL was going to win the battle of security protocols. SSL was competing against SHTTP which had backing of RSA and an industry consortium. The credit card companies merged their standards and were backing SET. The internet community was moving toward SSH. Microsoft was doing its own embrace and extend protocol PCT. So how did SSL win to become the broadest deployed cryptographic security protocol? The answers may surprise you.

    I welcome any comments or suggestions for links on these topics, or any new topics that you feel are closely related.

    Posted on April 4, 2005 at 01:08 AM in Business, Games, Science, Security, Social Software, User Interface, Web/Tech, Weblogs, Wiki | Permalink | Comments (2) | TrackBack

    Voluntary Health Associations & Social Software

    I'm a keynote speaker for the FVHA (Future of Voluntary Health Associations) Conference in Atlanta today. My job is to give to this community a gentle introduction and overview of concepts and products related to Social Software and Social Networking. (My slides are here - 6.6MB .pdf)

    In my research about this community, I find that they have some unique and interesting problems.

    Acsrelay The attendees of this conference are a collection of VPs and national directors from major Voluntary Health Associations such as American Cancer Society, American Heart Association, American Diabetes Association, March of Dimes, etc. In turn, these Voluntary Health Associations organize communities in order to raise funds for, and inform the public about the medical implications for the different health problems that each are concerned with. These associations have an organized volunteer base of over five million people and raise in excess of two billion dollars annually. They all have dedicated and diverse volunteer communities which include practicing MDs, scientific researchers, health educators, business executives, and working and nonworking mothers.

    I think it is the quantity of people served, the diversity of their communities, and in particular, the need to dive deep into information that makes these Voluntary Health Associations interesting. A women diagnosed with breast cancer will need to make educated decisions about her own health care in order to give informed consent. Yet she may not have the education experience or background to understand the care decisions she must make. She may not even have a current era computer. There are few other online communities that need their members to understand so deeply such difficult problems.

    Thus the desire of these associations to look deeper in to Social Software. Of course, their key interest is in better understanding, motivating, and expanding their volunteer networks. They are already experts in the business of organizing traditional communities, but now they have to deal with the changing nature of communities as their members are now using the internet as the primary source of information.

    Ideally Social Software can help increase their sense of touch with their volunteers, it can empower volunteers to collaborate and work harder and in new ways, it can increase information sharing and innovation, and it can help drive fund-raising numbers higher.

    But the openness of social software comes with a price. For instance, many of these associations are afraid of enabling even simple unmoderated discussion lists, in fear that bad or inappropriate information would be shared. There are also legitimate concerns about the quality, audience level, and attributation for even correct information. In the Q&A after my presentation I tried to explain how, when looking at individual blogs, or individual events of info vandalism, it is not really relevant if the communities and processes behind the Social Software are able to correct or filter those events. This is a difficult point to get across, as it requires people to learn to trust a system where the squeaky wheels and trolls are the loudest.

    Acslogowhite One particular interesting thing about this conference is that it is one of the first between multiple associations. I know from some other non-profits that I'm working with that they often feel in competition for funds and resources from other non-profits, so I applaud the American Cancer Society for sponsoring this cross-pollination effort.

    Posted on February 28, 2005 at 11:20 AM in Social Software, Web/Tech, Weblogs, Wiki | Permalink | Comments (3) | TrackBack

    Too High a Standard

    I have for some time told people that one way that my blog was different was because I was focused on offering a high signal-to-noise ratio. I told them that they could subscribe to my blog safely, as I'd not inundate them with anything but the highest quality posts.

    At first, this meant that I'd not post unless I had something significant to add to the topic. No simple pointers to interesting ideas, no simple rephrasing, or simple agreement -- I had to add value.

    For some time I think I succeeded -- I received a lot of praise for my posts on social networking, on internet security, on FOAF, on the Dunbar number, and on my tool EditThisPagePHP. However, I've found that for each post my standards were growing higher. My most recent posts took significantly more time to write, and I believe were much more like articles then they are like the typical blog post.

    I haven't posted now for a couple of months, and I realized this week that part of the problem is that I've become intimidated by my own standard. For every new post to meet the quality of some of my best posts is too difficult.

    So I'm lowering my standards somewhat -- I will be posting some more small, pithy topics, rather then my longer rants. However, I do hope to continue to offer a good signal-to-noise ratio, and still add value.

    Posted on July 23, 2004 at 12:13 PM in Weblogs | Permalink | Comments (8) | TrackBack

    Hand-Crafting My FOAF

    While at eTech, I attended a number of "social software" sessions. One thing I heard was a persistent call from folk like Marc Canter for all the vendors to support something called FOAF. FOAF is a standard for "Friend of a Friend" files, and is an attempt to make machine readable information about people, groups, companies, and other online resources. In particular, it is focused on representing the information that you might typically put on your personal home page in a form such that meta-data tools can interpret it.

    If you are using the blog service TypePad or the social networking service Ecademy you may already have a FOAF file without knowing it, and Tribe.Net announced at eTech that they were promising to support it as well for their social networking service.

    FOAF as a standard is still in a fairly primitive state -- to me it feels like HTML did during the days of the early Mosaic browser, when every good web page had to be hand-crafted in a text editor and uploaded to a server. However, like HTML, it may have great promise.

    The first thing that FOAF may offer us is a way to exchange information between various social networking services. For instance, I just exported all my Orkut friends into my own FOAF file by hand, but there are those who are working on tools to do this automatically, and once Tribe offers FOAF, services like Orkut may be forced to do the same.

    Probably more important in the long run is that FOAF may decentralize the data that you make public about yourself -- to put the data under your own control. Owned by you rather then owned by the services you use. For instance, many people have complained about Orkut's ownership of information.

    The biggest problem with FOAF right now is that it doesn't support very much "progressive disclosure" or privacy. Progressive disclosure is how people typically handle private information -- they disclose information about themselves a bit at a time, and as trust builds, offer more. The only small measure of privacy that FOAF has is that it has a way to obscure email addresses so that they can't easily be harvested by spammers. But all your other information is totally public. Theoretically you can encrypt your FOAF file, but this method requires external PGP-based encrypted files. There is also the possibility of XML-DSIG, however, I find this standard to also be extremely cumbersome right now. Plaxo is a major social networking service that has some excellent comments on FOAF privacy and other issues.

    What I want is something that allows people to make 'local' assertions about themselves and their friends, and be able to have those friends be able to 'discover' more information by using those assertions. Ron Rivest came out with an interesting method for this in an old project called SDSI - A Simple Distributed Security Infrastructure that I hope will inspire a few FOAF architects someday. To adopt his method for FOAF requires everyone to have a FOAF service script somewhere and not just a data file. But we've seen broad adoption of personal RSS and Trackback services, so I don't think this is a huge obstacle to overcome.

    In the meantime, if you want to play around with FOAF take over control of your own public data, I've included detailed information on how to get started in hand-crafting your own FOAF file.

    Hand-Crafting your own FOAF

    First, start with FOAF-a-Matic. This is a web form page that will create a very simple starting FOAF file for you. Don't put any information in it that you don't want to be public, and skip the section on "people you know". When it asks for your email address, make sure to enter it in all lower-case. When completed, it will look something like this:

    <rdf:RDF
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
      xmlns:rdfs="http://www.w3.org/2000/01/rdf-schema#"
      xmlns:foaf="http://xmlns.com/foaf/0.1/">
      <foaf:Person>
        <foaf:name>Christopher Allen</foaf:name>
        <foaf:title>Mr</foaf:title>
        <foaf:firstName>Christopher</foaf:firstName>
        <foaf:surname>Allen</foaf:surname>
        <foaf:nick>Chris</foaf:nick>
        <foaf:mbox_sha1sum>9ee1c03552f22e89592ce583be0ab8db0c4f2c59</foaf:mbox_sha1sum>
        <foaf:homepage rdf:resource="http://www.alacrityventures.com/allen.html"/>
        <foaf:depiction
          rdf:resource="http://web.lifewithalacrity.com/christophera/images/ChristopherAllen(100x100).gif"/>
        <foaf:workplaceHomepage rdf:resource="http://www.alacrityventures.com"/>
        <foaf:workInfoHomepage rdf:resource="http://www.alacrityventures.com/allen.html"/>
      </foaf:Person>
    </rdf:RDF>

    The next thing is to add pointers to any other FOAF files that you might have on other services, for instance, I have a profile on Marc Canter's People Aggregator service. You should also list the place where you plan on making your FOAF file available -- you might think that this is a circular reference, but it is OK. My convention is to put the most "authoritative" FOAF file last, so that if there is a conflict the last one might override earlier ones. However, in practice I've not found that any FOAF tool I've used supports this convention. Put these right above the closing </foaf:Person> tag.

      <rdfs:seeAlso rdf:resource="http://peopleaggregator.com/profile?id=102" />
      <rdfs:seeAlso rdf:resource="http://www.ecademy.com/module.php?mod=network&amp;op=foafrdf&amp;uid=42230" />
      <rdfs:seeAlso rdf:resource="http://web.lifewithalacrity.com/christophera/foaf.rdf" />
    

    Now upload your file to your own web site, and then run your FOAF file through two different validators, the first being the W3C RDF Validation Service. It will tell you if you've made any mistakes with the RDF aspect of the file. Then use Rosco which will also look at your schema and make recommendations as to missing items. Unfortunately, neither validator is very good at telling you what the problem is if it finds one -- again, it is like the old hand-coding HTML days when you are debugging your web pages.

    Once you've got your basic FOAF file working, now to enter your friends. First, add to your foaf:Person the following:

    <foaf:knows rdf:nodeID="MarcCanter"/>
    

    This is a pointer that says "look in this document for a person with the rdf:nodeID of MarcCanter". You can invent any value you want for this ID, mcanter, mark, canter, etc., however, it must be a unique ID on this page.

    Then fill out the following template for each person, putting below your own foaf:Person but above the closing rdf:RDF tag:

    <foaf:Person rdf:nodeID="">
      <foaf:name></foaf:name>
      <foaf:firstname></foaf:name>
      <foaf:surname></foaf:name>
      <foaf:nick></foaf:nick>
      <foaf:mbox_sha1sum></foaf:mbox_sha1sum>
      <rdfs:seeAlso rdf:resource="" />
    </foaf:Person>
    

    So for instance with Marc Canter:

    <foaf:Person rdf:nodeID="MarcCanter">
      <foaf:name>Marc Canter</foaf:name>
      <foaf:mbox_sha1sum>41e872618d70ba18a7af715083f522afe7fc3238</foaf:mbox_sha1sum>
      <rdfs:seeAlso rdf:resource="http://peopleaggregator.com/profile?id=4" />
    </foaf:Person>
    

    Now foaf:firstname, foaf:surname, and foaf:nick are not absolutely essential -- you can remove them if they are not needed. I tend to only use them when there might be some confusion, for instance, for "Arthur De Boies" has "De Boise" is a surname, and "Lori Ann Miller" has "Lori Ann" as a firstname. foaf:nick is useful in situatations where there is a dimunitive involved, for instance "Christopher Allen" has "Chris" as a nick, and foaf:nick is also used by some programs online personas or for IRC chat, such as "ChristopherA".

    Now where did the foaf:mbox_sha1sum come from? The purpose of this number is to obscure the email address so that it can't be harvested by spammers, yet is unique enough that it can FOAF-based applications can find people. To convert an email address to a foaf:mbox_sha1sum you can use sha1ify. Just enter the email address that you want converted in all lower case, and copy the string it generates to the foaf:mbox_sha1sum.

    Finally, you can search and see if any existing FOAF profiles exist for your friend at FOAF: Web View, using their email address. If the friend does have a FOAF file, add it to rdfs:seeAlso tag.

    When you are done, test your FOAF file with the two validators, and if it works. One common problem that the validators will fail to give you a good error message about is if any of the URLs you use contain any improper characters like & - in particular, Ecademy's FOAF files use this character. Just substitute &amp; for every occurrence of & and it should work fine. Another problem is if any of your friends have international characters in their names, for instance "Sébastien". To avoid this problem, put the following at the top of your FOAF file above your rdf:RDF tag.

    <?xml version="1.0" encoding="iso-8859-1"?>
    

    Once everything is working you can submit it to services like FOAF: Web View. You can also browse your FOAF file directly by using FOAF Explorer, or import it into services like People Aggregator.

    Once your FOAF file is working and submitted, you'll want to add an "auto-discovery" meta-tag to your blog or home page. This is placed in the head portion of your HTML code:

    <link rel="meta" type="application/rdf+xml"
      title="FOAF" href="http://web.lifewithalacrity.com/christophera/foaf.rdf"/>
    

    If you are using TypePad, it forces you to use their FOAF file for you unless you used an Advanced Template. With an Advanced Template you can remove the following tags and replace it with the above:

    <MTUserIfShow field="foaf">
      <link rel="meta" type="application/rdf+xml" title="FOAF" href="<$MTUserSiteURL$>foaf.rdf" />
      </MTUserIfShow>
    

    From this point on it is just a matter of looking at other people's FOAF files and seeing if you want to add any of the other profile properties that they use. I'm trying to keep a well documented foaf at http://web.lifewithalacrity.com/christophera/foaf.rdf, and I also recommend looking at Morten Frederiksen's FOAF at http://xml.mfd-consult.dk/foaf/morten.rdf which supports far more profile information then my FOAF does.

    Also useful is the IRC chat channel at irc.freenode.net #foaf -- I got a lot of useful tips and advice there.

    Posted on February 19, 2004 at 04:25 PM in Social Software, Web/Tech, Weblogs | Permalink | Comments (4) | TrackBack