<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:creativeCommons="http://backend.userland.com/creativeCommonsRssModule" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0" xml:base="http://marktrapp.com/blog">
  <channel>
    <title>Mark Trapp. Blog.</title>
    <link>http://marktrapp.com/blog</link>
    <description>Mark is an expert in information clarity and simplicity: he has a broad range of experience in usability, technology management, information architecture, and interactive strategy. This is his blog.</description>
    <language>en</language>
        <geo:lat>41.615036</geo:lat><geo:long>-74.154618</geo:long><creativeCommons:license>http://creativecommons.org/licenses/by-nc-nd/3.0/</creativeCommons:license><image><link>http://creativecommons.org/licenses/by-nc-nd/3.0/</link><url>http://creativecommons.org/images/public/somerights20.gif</url><title>Some Rights Reserved</title></image><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/marktrapp/blog" type="application/rss+xml" /><feedburner:emailServiceId>marktrapp/blog</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
 <title>Twitter Lists Make Twitter Dangerous to Use</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/YW7Jrh5kbng/twitter-lists-make-twitter-dangerous-use</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/Lists Make Twitter Dangerous To Use.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; Twitter implemented lists in the riskiest way possible, and using Twitter after it has been rolled out puts yourself at risk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Updated at the end.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The big buzz in the social media world lately revolves around Twitter's rollout of its &amp;quot;list&amp;quot; feature, which allows you and others to create lists of your followers: easily tagging them so you can share those lists with others. &lt;a href="http://scobleizer.com"&gt;Robert Scoble&lt;/a&gt; thinks &lt;a href="http://scobleizer.posterous.com/why-i-dont-use-google-reader-anymore"&gt;it's a game changer&lt;/a&gt;, and is pushing the value proposition for them hard. But I think lists, because they have no consent mechanism and because they can be made public, are boneheaded, broken, and ultimately make Twitter a dangerous tool to use for anyone who values their reputation.&lt;/p&gt;

&lt;h3&gt;Three Strikes: You're Out&lt;/h3&gt;
&lt;p&gt;Twitter made three colossal mistakes with its list implementation:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;Lists are public,&lt;/li&gt;
    &lt;li&gt;Lists a person has been categorized in are available on that person's profile, and&lt;/li&gt;
    &lt;li&gt;Most crucially, a person cannot consent to the categorization.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This makes lists a wholly individualized action: I have the ability, with no accountability, to categorize anyone as anything and make that categorization public and attached to that person, like a scarlet letter. Because all lists are treated equally, my categorization doesn't get marginalized or ignored. On the contrary, the most I make my categorization stand out, the more it'll be noticed.&lt;/p&gt;
&lt;p&gt;Take a look at Robert Scoble's &lt;a href="http://twitter.com/Scobleizer/lists/memberships"&gt;list memberships&lt;/a&gt;: he's in about 1,100 lists, most of them are &amp;quot;technology guy&amp;quot; or something similar. If I, say, put him in a &amp;quot;child molester&amp;quot; list, or a &amp;quot;douche bag&amp;quot; list, which one do you think stands out? The sea of &amp;quot;tech&amp;quot; lists, or the really offensive one?&lt;/p&gt;
&lt;h3&gt;So Long, and Thanks for All the Spam&lt;/h3&gt;
&lt;p&gt;Beyond the libelous or defamatory possibilities, public lists are now a great avenue for spam that you can't opt-out of or protect yourself in any way. Consider my list memberships: I'm on two generic technology lists. Great: now all a spammer has to do is to target technology people and I'm included. I can't change that, because someone else decided to categorize me.&lt;/p&gt;
&lt;p&gt;You might be thinking that's just the risk you take by having a public feed: spammers targeted people based off of keyword searches even before lists. So, go back to the public publishing of lists aspect: now, spammers can categorize me in their &amp;quot;cialis&amp;quot; or &amp;quot;seo-for-less-seojackass-dot-net&amp;quot; lists, and they now get free advertising that's attached to my Twitter profile. A whole new avenue for making Twitter useless! Awesome!&lt;/p&gt;
&lt;h3&gt;Make an Informed Choice&lt;/h3&gt;
&lt;p&gt;It's odd that in all the coverage about how awesome Twitter is now because of lists, that people haven't picked up on this, or chose not to care. But if Twitter lists go unchanged, one seriously needs to consider how valuable Twitter is for them or the risks they are taking by using Twitter as a communication medium. It's now just become easier to have Twitter bite you in the ass without you having to tweet a single sentence.&lt;/p&gt;
&lt;p&gt;Twitter needs to take a few simple steps to make lists less risky: remove lists from being attached to a person's profile and they could allow people to opt out of lists. More comprehensively, they could turn off public lists or make list memberships opt-in (like groups work on &lt;a href="http://facebook.com"&gt;Facebook&lt;/a&gt; and &lt;a href="http://friendfeed.com"&gt;FriendFeed&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Robert Scoble &lt;a href="http://twitter.com/Scobleizer/statuses/5267842278"&gt;responded&lt;/a&gt;, pointing out that you can block lists. I believe he's referring to being able to block the list creator, which does remove you from any list that they created and prevents them from adding you to a new list. It shouldn't require a block action to opt out of a list, though: I should be in control of anything attached to my profile. My two basic requirements still stand.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update 2:&lt;/strong&gt; Lively discussions are taking place on FriendFeed; on &lt;a href="http://friendfeed.com/scobleizer/e5c72b2f/jesseslinks-it-is-really-lame-to-attack-lists"&gt;Robert Scoble's feed&lt;/a&gt; and on &lt;a href="http://friendfeed.com/itafroma/1eb8a09c/thing-i-don-t-like-about-twitter-public-lists-is"&gt;my feed&lt;/a&gt;.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=YW7Jrh5kbng:SL6n4swJB9Y:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=YW7Jrh5kbng:SL6n4swJB9Y:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/YW7Jrh5kbng" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/review">Review</category>
 <category domain="http://marktrapp.com/tags/categorization">categorization</category>
 <category domain="http://marktrapp.com/tags/lists">lists</category>
 <category domain="http://marktrapp.com/tags/robert-scoble">Robert Scoble</category>
 <category domain="http://marktrapp.com/tags/twitter">Twitter</category>
 <pubDate>Thu, 29 Oct 2009 18:43:08 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">44 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/Lists Make Twitter Dangerous To Use.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/Lists Make Twitter Dangerous To Use.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/10/29/twitter-lists-make-twitter-dangerous-use</feedburner:origLink></item>
<item>
 <title>The Dirty Little Google Voice Secret</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/r-gJZ0abF8w/dirty-little-google-voice-secret</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/The Dirty Little Google Voice Secret.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; Using two features from Google Voice and AT&amp;T, you can maximize your Google Voice usage on an iPhone (or any other iPhone) in spite of the public bickering between the companies.&lt;/p&gt;
&lt;p&gt;If you use &lt;a href="http://google.com/voice"&gt;Google Voice&lt;/a&gt;, have an &lt;a href="http://apple.com/iphone"&gt;iPhone&lt;/a&gt;, or are interested in smart phones, you&amp;rsquo;re probably aware of the ongoing spat between &lt;a href="http://apple.com"&gt;Apple&lt;/a&gt;, &lt;a href="http://att.com"&gt;AT&amp;amp;T&lt;/a&gt;, and &lt;a href="http://google.com"&gt;Google&lt;/a&gt; over &lt;a href="http://en.wikipedia.org/wiki/Network_neutrality"&gt;network neutrality&lt;/a&gt; and Google Voice on the iPhone (c.f. &lt;a href="http://www.techcrunch.com/2009/08/21/apples-response-to-the-fcc-we-didnt-reject-the-google-voice-app-were-still-looking-at-it/"&gt;Apple&amp;rsquo;s take&lt;/a&gt;, &lt;a href="http://www.techcrunch.com/2009/08/21/att-to-fcc-we-did-not-block-the-google-voice-app-on-the-iphone/"&gt;AT&amp;amp;T&amp;rsquo;s take&lt;/a&gt;, and &lt;a href="http://www.techcrunch.com/2009/09/18/google-reveals-full-fcc-response-directly-contradicts-apple-on-google-voice-rejection/"&gt;Google&amp;rsquo;s take&lt;/a&gt;). If you&amp;rsquo;re like me, you don&amp;rsquo;t really care who&amp;rsquo;s to blame for why you can&amp;rsquo;t use Google Voice on your iPhone: they&amp;rsquo;re probably all at fault.&lt;/p&gt;
&lt;p&gt;You may not be able to use a shiny application for Google Voice on your iPhone, but you &lt;em&gt;can&lt;/em&gt; use relatively new or unknown features of AT&amp;amp;T and Google together and against them and wind up saving a nice chunk of change in the process. This is for all phones, not just the iPhone, but if you&amp;rsquo;re an iPhone user, I&amp;rsquo;d say it&amp;rsquo;s not a bad consolation prize. I&amp;rsquo;m going to talk about two features: Google Voice&amp;rsquo;s outbound calling and your wireless carrier&amp;rsquo;s calling circle feature.&lt;/p&gt;

&lt;h3&gt;Google Voice, Call Proxy&lt;/h3&gt;
&lt;p&gt;One of the relatively obscure features of Google Voice is its &lt;a href="http://www.youtube.com/watch?v=sHIWUw6cf1U&amp;amp;feature=player_embedded"&gt;outbound calling functionality&lt;/a&gt;. Prima face it&amp;rsquo;s not obscure, but lots of people think it&amp;rsquo;s only useful for international calling: Google Voice has cut-throat rates to many countries. But the feature also works domestically, and it&amp;rsquo;s a great way to mask your phone number so it looks like you&amp;rsquo;re calling from Google Voice. If you use Google Voice like I do, I don&amp;rsquo;t give out any number but my Google Voice number, and it&amp;rsquo;s a boon not to have any other number floating out there by virtue of someone&amp;rsquo;s caller ID.&lt;/p&gt;
&lt;p&gt;To use this feature, you simply call your Google Voice number from a phone linked to your account. When you get the automated voice, dial your PIN and press 2. Then dial the number you wish to call and press pound. Google Voice will connect you directly that&amp;rsquo;s that. Works pretty much like a calling card.&lt;/p&gt;
&lt;h3&gt;I hate Chad, too.&lt;/h3&gt;
&lt;p&gt;If you&amp;rsquo;ve watched TV in the past 5 years, you&amp;rsquo;ve probably seen a commercial (or seven) for Alltel where Chad talks about a calling circle, where you can talk to a select group of friends for &amp;ldquo;free&amp;rdquo; (read: part of the expensive plan you&amp;rsquo;re already paying):&lt;/p&gt;
&lt;object width="425" height="344"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/o1jfofjPtEY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/o1jfofjPtEY&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;
&lt;p&gt;Chad&amp;rsquo;s a dillhole, and Alltel was bought out by Verizon. But nowadays, every major carrier has their own version of a calling circle: Verizon has &lt;a href="http://www.verizonwireless.com/b2c/splash/friendsandfamily.jsp"&gt;Friends &amp;amp; Family&lt;/a&gt;, T-Mobile has &lt;a href="http://www.t-mobile.com/templates/generic.aspx?passet=Pln_Lst_MyFavesLrnDemo"&gt;myFaves&lt;/a&gt;, and AT&amp;amp;T just came out with &lt;a href="http://www.wireless.att.com/cell-phone-service/cell-phone-sales/promotion/a-list.jsp"&gt;A-List&lt;/a&gt;. If you talk to a small set of people a lot, these calling circles are a great cost savings.&lt;/p&gt;
&lt;h3&gt;You got Google Voice in my calling circle!&lt;/h3&gt;
&lt;p&gt;You can probably see where I&amp;rsquo;m going with this: add your Google Voice number to your calling circle and call it before calling your destination. Since the call is routed through your Google Voice number, your carrier doesn&amp;rsquo;t know the end point, so it charges you whatever it charges you to call your Google Voice number, which is nothing.&lt;/p&gt;
&lt;p&gt;I used this trick this month to go from 1,500 minutes used in September to 137. The only reason I have 137 minutes used was because I was too lazy to dial my Google Voice number, or someone called my cell phone directly. This means I can drop my really expensive unlimited calling plan and pick up the cheapest, 450 minute plan for a cost savings of $70 a month. Think of all the ponies you can bet on with that found money.&lt;/p&gt;
&lt;h3&gt;Caveats and Disclaimers&lt;/h3&gt;
&lt;p&gt;If you use Google Voice the way I&amp;rsquo;m using it, you&amp;rsquo;ll likely miss not being able to use your built-in address book (you&amp;rsquo;ll have to dial numbers the old fashioned way, one number at a time). This is where a Google Voice app that integrated your cell phone&amp;rsquo;s address book would truly come in handy. But I think it&amp;rsquo;s a small price to pay to save $70/month on unlimited calling.&lt;/p&gt;
&lt;p&gt;The other caveat to keep in the back of your mind is the clause that your carrier may have (AT&amp;amp;T, for example, has it) that they can block a number from your calling circle at any time for any reason. I charge that this is against the spirit of network neutrality and is likely to be against &lt;a href="http://webtrends.about.com/b/2009/09/21/fcc-aiming-for-net-neutrality.htm"&gt;FCC regulations&lt;/a&gt;. If they block my Google Voice number, I will take AT&amp;amp;T to the mat about it, and so should you if they pull that on your Google Voice number. AT&amp;amp;T and the other carriers have caved when they are called upon unfair practices, and they have repeatedly shown that to raise a big stink is the only way for them to stop infringing upon consumer rights.&lt;/p&gt;
&lt;p&gt;But that&amp;rsquo;s a different story altogether. For now, enjoy being able to use Google Voice to do something pretty useful: save a chunk of change.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=r-gJZ0abF8w:yZ2bhg5w26c:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=r-gJZ0abF8w:yZ2bhg5w26c:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/r-gJZ0abF8w" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/web">The Web</category>
 <category domain="http://marktrapp.com/tags/apple">Apple</category>
 <category domain="http://marktrapp.com/tags/att">AT&amp;amp;T</category>
 <category domain="http://marktrapp.com/tags/calling-circle">calling circle</category>
 <category domain="http://marktrapp.com/tags/google-voice">Google Voice</category>
 <category domain="http://marktrapp.com/tags/iphone">iPhone</category>
 <pubDate>Mon, 12 Oct 2009 17:42:24 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">43 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/The Dirty Little Google Voice Secret.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/The Dirty Little Google Voice Secret.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/10/12/dirty-little-google-voice-secret</feedburner:origLink></item>
<item>
 <title>OAuth for Dummies</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/Wv-NR0bLnWE/oauth-dummies</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/OauthForDummies.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; OAuth is a tricky beast, but once the general workflow is worked out, it's more tedious than difficult.&lt;/p&gt;
&lt;p&gt;One of the projects I've been working on instead of updating this blog has been a set of modules for &lt;a href="http://drupal.org"&gt;Drupal&lt;/a&gt; that allow &lt;a href="http://friendfeed.com"&gt;FriendFeed&lt;/a&gt; users do all sorts of interesting things. While I'm not ready to release the details of those projects, one of the biggest mind-benders I've experienced in my work has been &lt;a href="http://oauth.net"&gt;OAuth&lt;/a&gt;, a technology FriendFeed uses as its preferred authentication mechanism in the latest version of its API.&lt;/p&gt;
&lt;p&gt;It took me a while to figure out how exactly OAuth works: either the information on the web is very bare, or I'm just very dense. But I did eventually get a working OAuth client up and running, and if you've been struggling to wrap your head around the OAuth concept, hopefully the workflows I provide here can help you.&lt;/p&gt;
&lt;p&gt;One can easily get overwhelmed with all the stuff you have to do when using OAuth, so I'm going to present the workflow several times, starting with a very high level overview. Each successive explanation will add more detail such that, if I did my job right, repetition will help reinforce everything.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;This guide should be helpful for any OAuth scenario, but for explanation's sake, I'm going to use the following terminology conventions:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;MyApp, or the client: this is the web site that wants to have access to a user's private resources.&lt;/li&gt;
    &lt;li&gt;John, or the user: this is the user who is using MyApp and wants to allow it to access his private resources.&lt;/li&gt;
    &lt;li&gt;FriendFeed, or the server: this is the web site where John is a member and stores his private resources.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The 100,000-foot View: Basics&lt;/h3&gt;
&lt;p&gt;OAuth, at its very heart, is just a fancy way to authenticate with a server. When it's all said and done, you are given essentially a user name and password, and you use that pair to access a user's private resources. The spin that OAuth adds to basic authentication is based on two parts:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;OAuth never divulges the user's actual user name and password to the client.&lt;/li&gt;
    &lt;li&gt;The user can go back to the original application and revoke the client's access to their content.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you've ever had to create a guest account on your computer or temporarily give a spare set keys to someone so they could water your plants, you know the basic idea. You are allowing someone else to access something private, but you're in control of when and how they access it.&lt;/p&gt;
&lt;h3&gt;The 50,000-foot View: What the User Sees&lt;/h3&gt;
&lt;p&gt;So far so good. Now, we need to talk about how that access is granted. If you were getting your plants watered, you'd just meet up with someone and physically hand over the keys: a relatively secure transaction. OAuth attempts to replicate and expand upon that level of security by providing a means to explicitly say &amp;quot;I want this client to have access to my stuff&amp;quot; and a means for the client to prove who it purports itself to be. It'd be like if you ran a background check on your friend before you gave them your keys, and kept looking at their ID as you handed them off.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So how does an OAuth client do these things? With a lot of handshaking. A lot. To the point where, if someone shook your hand that much, you'd be thinking about a restraining order. But let's hold off on what the client does and just outline what the user experiences:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;The user, John, visits the client, MyApp, where he sees MyApp can do cool things with his private information stored on a server, FriendFeed.&lt;/li&gt;
    &lt;li&gt;MyApp advertises these cool things, and beckons John to &amp;quot;sign in with FriendFeed&amp;quot;: essentially, to allow MyApp access to John's FriendFeed account.&lt;/li&gt;
    &lt;li&gt;John clicks on the sign-in button, which initiates a negotiation process between MyApp, John, and FriendFeed.&lt;/li&gt;
    &lt;li&gt;MyApp performs, shall we say, &amp;quot;deep magic&amp;quot; to prove to FriendFeed it is who it purports to be.&lt;/li&gt;
    &lt;li&gt;FriendFeed agrees, and MyApp then sends John off to FriendFeed.&lt;/li&gt;
    &lt;li&gt;On FriendFeed, John is asked whether or not he wants to allow MyApp access to his private data.&lt;/li&gt;
    &lt;li&gt;If John says &amp;quot;yes,&amp;quot; FriendFeed sends him back to MyApp.&lt;/li&gt;
    &lt;li&gt;MyApp does some more deep magic, and finally receives a specially made ultimate set of keys, which it can now use to access John's private data.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once MyApp has this last set of keys, all hope is not lost for John: at any time, he can go back to FriendFeed and revoke MyApp's set of keys. For further information, I suggest watching the classic Seinfeld episode, &amp;quot;The Keys:&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;object width="425" height="344"&gt;
&lt;param name="movie" value="http://www.youtube.com/v/vnqBAuehmhM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" /&gt;
&lt;param name="allowFullScreen" value="true" /&gt;
&lt;param name="allowscriptaccess" value="always" /&gt;&lt;embed src="http://www.youtube.com/v/vnqBAuehmhM&amp;amp;hl=en&amp;amp;fs=1&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;/p&gt;
&lt;h3&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3&gt;The 10,000 Foot View: the Client's Deep Magic&lt;/h3&gt;
&lt;p&gt;If you &lt;em&gt;have&lt;/em&gt; seen &amp;quot;The Keys,&amp;quot; you might remember a scene where Elaine and Jerry are confusing themselves about who gets what key. I've found OAuth to be just as confusing: there's a lot of handshaking, a lot of key passing, a lot of agreement, and in the end, everyone's left confused as to what just happened.&amp;nbsp;This is where the client's deep magic comes in. Before MyApp can access John's private resources on FriendFeed, it needs to do 4 things:&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;It needs to register with FriendFeed and receive its first set of keys: &lt;strong&gt;a consumer key &lt;/strong&gt;and&lt;strong&gt; a consumer secret&lt;/strong&gt;. This is done by the developer going to a special webpage (in FriendFeed's case, this page is within their &lt;a href="http://friendfeed.com/api/applications"&gt;API documentation&lt;/a&gt;).&lt;/li&gt;
    &lt;li&gt;Once John clicks on &amp;quot;sign-in to FriendFeed,&amp;quot; MyApp then needs to take the first set of keys it received (the consumer key and consumer secret) and use them to sign a special request to FriendFeed for a new set of keys, called a &lt;strong&gt;request token&lt;/strong&gt;.&lt;/li&gt;
    &lt;li&gt;Once MyApp has the request token, it needs to send John back to FriendFeed with the request token. There, John is asked to allow or deny MyApp's request to access to his data.&lt;/li&gt;
    &lt;li&gt;Once John allows MyApp access to his data, FriendFeed sends John back to MyApp and tells it that the request token is &amp;quot;authorized.&amp;quot; MyApp then needs to take the request token and use it to sign a new request to FriendFeed for a third and final set of keys, called the &lt;strong&gt;access token&lt;/strong&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Once MyApp has the access token, it can then use it to sign requests to private resources on John's behalf: it now has access to John's private data to do whatever it needs to do.&lt;/p&gt;
&lt;h3&gt;The 1,000-foot View: Implementation&lt;/h3&gt;
&lt;p&gt;&amp;nbsp;If you've gotten this far and understand what's happening, you're in great shape: most of the conceptual work is done. Now,&amp;nbsp;let's discuss how to actually implement all the different parts. At this point, you're going to want a library to do the heavy lifting for you. OAuth has its own set of &lt;a href="http://code.google.com/p/oauth/"&gt;official libraries&lt;/a&gt;, and they're likely a good starting point for many languages.&lt;/p&gt;
&lt;p&gt;When you registered your application with the server, you should've been given a bunch of information. At a minimum, you'll need the following to continue (if you don't have this information, check with the server's API documentation to fill in the missing pieces):&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;A consumer key&lt;/li&gt;
    &lt;li&gt;A consumer secret&lt;/li&gt;
    &lt;li&gt;A request token URL&lt;/li&gt;
    &lt;li&gt;An authorize URL&lt;/li&gt;
    &lt;li&gt;An access token URL&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The basic methodology in working with OAuth is that you make requests just like you would unauthenticated, but with several parameters attached that'll act as a way to prove the request is legitimate. These parameters include:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The &lt;strong&gt;consumer key&lt;/strong&gt; and &lt;strong&gt;consumer secret&lt;/strong&gt;.&lt;/li&gt;
    &lt;li&gt;&lt;strong&gt;A token and a token secret&lt;/strong&gt;. These are the keys I've been talking about. You'll use a specific set of keys depending on where you are in the handshaking process.&lt;/li&gt;
    &lt;li&gt;A &lt;strong&gt;nonce&lt;/strong&gt; (short for &lt;strong&gt;n&lt;/strong&gt;umber used &lt;strong&gt;once&lt;/strong&gt;). This is a random string or number that's used for exactly one request.&lt;/li&gt;
    &lt;li&gt;A &lt;strong&gt;timestamp&lt;/strong&gt;&lt;/li&gt;
    &lt;li&gt;An &lt;strong&gt;OAuth version number&lt;/strong&gt;: it's currently either 1.0 or 1.0a: consult the server's API documentation to figure out which one to use (it's likely 1.0a)&lt;/li&gt;
    &lt;li&gt;A &lt;strong&gt;signature method&lt;/strong&gt;, explained below&lt;/li&gt;
    &lt;li&gt;A &lt;strong&gt;signature&lt;/strong&gt;, also explained below&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you're using a library, it's likely most of this information is abstracted and you don't need to worry about anything other than supplying the correct token, token secret, request URL, and signature method. Check the library's documentation and especially the examples of the client to see how to build the signed request URL.&lt;/p&gt;
&lt;p&gt;But let's talk about the the last two parameters, the signature and signature method, To prevent a variety of attacks, it's a good idea, and in many cases required, to sign all requests with an encrypted signature. There are currently three signature methods that I know to do this: &lt;strong&gt;HMAC-SHA1&lt;/strong&gt; (seems to be the standard), &lt;strong&gt;RSA-SHA1&lt;/strong&gt;, and &lt;strong&gt;PLAINTEXT&lt;/strong&gt; (insecure, should not be used unless all the other parts of the handshake are encrypted). The signature method is merely one of those strings: HMAC-SHA1, RSA-SHA1, or PLAINTEXT.&lt;/p&gt;
&lt;p&gt;To get the signature, however, is much tougher. This is where the library comes in especially handy. Most libraries will take the request URL, the token and token secret, the method by which you're requesting the URL (GET or POST), and the signature method and provide the correct signature. Easy as pie.&amp;nbsp;&lt;/p&gt;
&lt;h4&gt;Getting the request token&lt;/h4&gt;
&lt;p&gt;The general starting point for the user is to have a nice little button that, when clicked, performs the OAuth handshaking and signs the user into the server. So, what you'll need to do is link the sign-in button to a page on your server that'll retrieve the first element of the handshake process: the request token.&lt;/p&gt;
&lt;p&gt;To get the request token, you'll make a signed GET request to the request token URL and parse the results you get back. For the request token, you'll sign the request using the &lt;strong&gt;consumer key&lt;/strong&gt; and the &lt;strong&gt;consumer secret&lt;/strong&gt;. Since you don't have any tokens, you'll omit the token and token secret parameters.&lt;/p&gt;
&lt;p&gt;If you did it right, the request token URL will provide a new token pair: an &lt;strong&gt;oauth_token&lt;/strong&gt; and an &lt;strong&gt;oauth_token_secret&lt;/strong&gt;. This is the request token: you'll use this for everything else in the handshake process.&lt;/p&gt;
&lt;h4&gt;Getting the user's consent&lt;/h4&gt;
&lt;p&gt;Once you have the request token and token secret, you're going to need to get the user's explicit consent to allow access to his data. Store the token secret somehow (maybe a secure cookie or somesuch), and redirect the user to the authorize URL with certain parameters:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;The request token (just add oauth_token=&amp;lt;token&amp;gt;, where &amp;lt;token&amp;gt; is the actual token)&lt;/li&gt;
    &lt;li&gt;The callback URL: this may be ignored or optional due to security concerns. If it's not allowed, usually you'll specify it when you register the application with the server. The callback URL is where the server should send the user once he consents.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you did it right, the user will be redirected to the server, which will display a page asking the user to allow you access to his data. Once the user clicks the button to allow access, the server will redirect back to you at the callback URL with the request token as a parameter.&lt;/p&gt;
&lt;h4&gt;Getting the access token&lt;/h4&gt;
&lt;p&gt;At this point, the server has acknowledged the request token you have is authenticated, and can be used to get the final set of keys, the access token. Make a signed request just like you did with the request token, but to the access token URL. Since we now have a token and token secret (you remembered to store the token secret you got back when you got the request token, right?) to use, add those parameters back.&lt;/p&gt;
&lt;p&gt;If you did everything right, you should receive a new oauth_token, a new oauth_token_secret, and some additional information from the server that'll likely identify who the user is on the server. Trash the request tokens (they're useless now), and store the information you just received: this is your access information, and will be valid until the user revokes your access.&lt;/p&gt;
&lt;h3&gt;Accessing Private Resources&lt;/h3&gt;
&lt;p&gt;Once you have received the access token, it's pretty straightforward. Make requests to private resources, but sign the requests just like you did with the request token and access token. Instead of omitting the token and token secret or using the request token, use the access token.&lt;/p&gt;
&lt;h3&gt;The Ground-Floor View: Details, Details!&lt;/h3&gt;
&lt;p&gt;I wanted to go through and discuss the conceptual and basic implementation parts to provide a good foundation to do OAuth work. I've glossed over some of the finer points, but you should be in a good place to understand the OAuth spec as well as considerations people will discuss. A good place to start getting into the details of OAuth is &lt;a href="http://oauth.net/documentation/spec"&gt;the spec itself&lt;/a&gt;, which explains in far greater detail all the moving parts and options.&lt;/p&gt;
&lt;p&gt;Here are 3 things to consider:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;You're probably going to want to have your own user structure on your application, so you can tie an access token to an account and keep the user from having to keep re-authenticating your app.&lt;/li&gt;
    &lt;li&gt;The access token and access token secret are functionally equivalent to a user name and password, and should be treated as such. Keep the information secure.&lt;/li&gt;
    &lt;li&gt;You'll need to do something if you try to access a private resource with a revoked or invalid access token. Maybe check for that and run through the handshake process again?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Hopefully, you're thinking about all the ways you can use OAuth to do good work, like extend Twitter, FriendFeed, or Facebook. If there are any points that are confusing, or if you're an OAuth wizard and see I made some glaring mistakes, let me know in the comments.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt;&amp;nbsp;In the comments, &lt;a href="http://www.benjamingolub.com/"&gt;Benjamin Golub&lt;/a&gt; points to a really neat tool, Google's &lt;a href="http://googlecodesamples.com/oauth_playground/"&gt;OAuth Playground&lt;/a&gt;, for creating and testing out signed requests. Definitely check it out to understand how request signing works and what types of responses you should be expecting when &amp;nbsp;you request a token.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=Wv-NR0bLnWE:OmqGtDb_khc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=Wv-NR0bLnWE:OmqGtDb_khc:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/Wv-NR0bLnWE" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/web">The Web</category>
 <category domain="http://marktrapp.com/tags/drupal">Drupal</category>
 <category domain="http://marktrapp.com/tags/friendfeed">friendfeed</category>
 <category domain="http://marktrapp.com/tags/oauth">OAuth</category>
 <category domain="http://marktrapp.com/tags/seinfeld">Seinfeld</category>
 <pubDate>Thu, 17 Sep 2009 17:30:09 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">42 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/OauthForDummies.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/OauthForDummies.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/09/17/oauth-dummies</feedburner:origLink></item>
<item>
 <title>Dr. Private Message</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/0QOsHNQeLvI/dr-private-message</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/dr_strangelove.jpg" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; We ought not to fear because the problem of private messages is too hard: we ought to fear because we've already solved them yet won't use that knowledge.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Or: How I learned to stop worrying and love the web&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Today, Alexander Van Elsas had a sort of &lt;a title="Questions" href="http://vanelsas.wordpress.com/2009/04/03/questions/"&gt;95 Thesis/20 Questions&lt;/a&gt; amalgam about a host of issues involving the state of the internet today. One set of questions provoked a couple points of discussion from &lt;a title="Rob Diana's blog at Regular Geek" href="http://regulargeek.com/"&gt;Rob Diana&lt;/a&gt; and &lt;a title="John Bredehoft's blog at Empoprises" href="http://empoprise-bi.blogspot.com/"&gt;John Bredehoft&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt; &lt;strong&gt;Networks and destinations&lt;/strong&gt;
&lt;ol&gt;
    &lt;li&gt;If everything becomes open and connected, what will happen to the big destinations?&lt;/li&gt;
    &lt;li&gt;Why is the web rapidly evolving into uncountable databases with connections, instead of one database where everything connects?&lt;/li&gt;
    &lt;li&gt;If all services and destinations become open, then what is the point in being a destination site in the first place?&lt;/li&gt;
    &lt;li&gt;Why are we creating webs within webs, instead of one network that connects it all?&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a title="With All This Openness Where Is The Destination?" href="http://regulargeek.com/2009/04/15/with-all-this-openness-where-is-the-destination/"&gt;Rob Diana suggests&lt;/a&gt; that your email inbox might be the gateway for all of these siloed communication systems, or that the messages from these systems might be pushed to one specific user destination (be it email or something else, like a cell phone).&lt;/p&gt;
&lt;p&gt;John Bredehoft, in a comment to Rob's post, argued that we need to have multiple destinations, as each destination is a context in and of itself: one communicates with FriendFeed friends on FriendFeed, or Facebook friends on Facebook, or email friends through email, to ensure maximal participation.&lt;/p&gt;
&lt;p&gt;John and Rob touch on two parts of the greater communications problem, but there's something unsatisfying in both of their answers, especially as it relates to Alexander's final question: &lt;em&gt;why are we creating webs within webs, instead of one network that connects it all?&lt;/em&gt; I think the answer to this question is likely a house of cards: we &lt;em&gt;should&lt;/em&gt; be creating a network by which we can tie these all together. A revolution? Not really: this is the foundation of many of the oldest communication systems on the block: DNS, telephony, and email.&lt;/p&gt;
&lt;h3&gt;United Federation of Messages&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Federation&lt;/strong&gt;, a term that seemed to come into vogue with the rise of XMPP, describes a concept that's been around for decades, long before web 2.0, and long before there was an internet. It basically entails the following:&lt;/p&gt;
&lt;ul&gt;
    &lt;li&gt;There is one standard, vetted by the community, by which all participants should conform. Some parts of the standard should be baseline: all participants must implement it. Other parts of the standard might be implemented by many or few of the participants.&lt;/li&gt;
    &lt;li&gt;All destinations have a largely unique piece of information to identify themselves to the greater network of participants. For email, it's your email address. For DNS, it's a name server. For telephony, it's a phone number.&lt;/li&gt;
    &lt;li&gt;The standard must identify the logical path a participant must take in order to reach a uniquely identified destination. In most instances, this is a concept called &lt;strong&gt;routing&lt;/strong&gt; and it identifies computers (routers) that will relay messages to other computers to ensure messages reach the proper destination.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Federation works brilliantly. Because of these three criteria, I can set up a computer made of scrap parts in my bedroom that can send email to anyone in the world and serve DNS. It doesn't matter who participates: everyone has more or less equal access to everyone else. This is a concept called &lt;strong&gt;network neutrality&lt;/strong&gt;. You may have heard about political issues involving this: it's currently a right protected by most governments because of the value of federation.&lt;/p&gt;
&lt;h3&gt;Facebook is not the standard&lt;/h3&gt;
&lt;p&gt;Somehow, the concepts of network neutrality and federation have been lost with the rise of web 2.0: even though everyone talks about &amp;quot;open APIs&amp;quot;, &amp;quot;transparency&amp;quot;, and other buzzwords, nothing really talks to each other. Each system implements its own standard, and leaves it up to everyone else to figure out if and how they want to communicate with that system.&lt;/p&gt;
&lt;p&gt;To use email as an example: imagine having 100 competing systems of email where none of them talk to each other. You have to have 100 different email addresses in order for it to work. Some enterprising individuals have come up with ways to link email addresses together (so you can have one email address), but it only works on about 5 of the email systems, and requires you registering yet another email addresses (so now you have 101).&lt;/p&gt;
&lt;p&gt;We're into silly territory, but this is the state of the web, and more importantly, messaging, today. But this problem has already been solved, over and over again: there's no reason to come up with a completely new method for handling the multitude problem.&lt;/p&gt;
&lt;h3&gt;Where has the cabal gone?&lt;/h3&gt;
&lt;p&gt;Attempts at interoperability, via &amp;quot;standards&amp;quot; like OpenID, OpenSocial, OpenMicroBlogging, are primitive and re-imagine tried and true concepts. A lot of times, the advocacy of such technology feels like a guy marveling at his ability to make a fire (which he claims he invented, and calls it OpenMiracleLight) a thousand years after fire was perfected and turned into all sorts of useful things, like heating and electricity.&lt;/p&gt;
&lt;p&gt;Back in the 70s and 80s, there were tons of smart people who came up with the standards for the backbones of technology we use today: what happened to them? Why isn't their work being used to progress the web?&lt;/p&gt;
&lt;p&gt;They say those who don't learn from history are doomed to repeat it:&amp;nbsp;why do we need to keep resolving the same problems?&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=0QOsHNQeLvI:Z5zMyZEwwCY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=0QOsHNQeLvI:Z5zMyZEwwCY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/0QOsHNQeLvI" height="1" width="1"/&gt;</description>
 <comments>http://marktrapp.com/blog/2009/04/15/dr-private-message#comments</comments>
 <category domain="http://marktrapp.com/blog/web">The Web</category>
 <category domain="http://marktrapp.com/tags/alexander-van-elsas">Alexander van Elsas</category>
 <category domain="http://marktrapp.com/tags/federation">federation</category>
 <category domain="http://marktrapp.com/tags/john-bredehoft">John Bredehoft</category>
 <category domain="http://marktrapp.com/tags/private-messages">private messages</category>
 <category domain="http://marktrapp.com/tags/rob-diana">Rob Diana</category>
 <pubDate>Wed, 15 Apr 2009 16:54:42 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">41 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/dr_strangelove.jpg" type="image/jpeg" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/dr_strangelove.jpg" />
<feedburner:origLink>http://marktrapp.com/blog/2009/04/15/dr-private-message</feedburner:origLink></item>
<item>
 <title>Real-time Killed the Web 2.0 Star</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/enLIH7ztcMA/real-time-killed-web-20-star</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/realtime_1.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; The real-time web renders the old web 2.0 convention of following tons of people obsolete: filters replace follows, and trying to maintain the old order will break your user experience of what's to come.&lt;/p&gt;
&lt;p&gt;Today, &lt;a title="FriendFeed" href="http://friendfeed.com"&gt;FriendFeed&lt;/a&gt; unveiled &lt;a title="//beta.friendfeed.com/" href="http://blog.friendfeed.com/2009/04/new-design-for-friendfeed-at.html"&gt;a redesign of its product&lt;/a&gt;, focusing on real-time communication as a principle design goal. Expectedly, there are more than a few detractors of the decision to place real-time at the forefront (see &lt;a title="The New Friendfeed &amp;amp;ndash; who&amp;amp;rsquo;s supplying the barf bags?" href="http://www.inquisitr.com/21331/the-new-friendfeed-whos-supplying-the-barf-bags/"&gt;Steven Hodson's post on Inquisitr&lt;/a&gt;, &lt;a title=" Simpler, Faster, Better (Maybe Too Fast)" href="http://www.techcrunch.com/2009/04/06/new-friendfeed-simpler-faster-better-maybe-too-fast/"&gt;Michael Arrington's post on TechCrunch&lt;/a&gt;, or do &lt;a title=" real-time" href="http://beta.friendfeed.com/search?q=real-time"&gt;a search on FriendFeed&lt;/a&gt;). I think they're stuck in a paradigm that's lasted for years that real-time has now rendered obsolete: the &amp;quot;follow.&amp;quot;&lt;/p&gt;

&lt;h3&gt;Dunbar Was Right, Scoble Was Wrong&lt;/h3&gt;
&lt;p&gt;One staple of social psychology is the concept of &lt;a href="http://en.wikipedia.org/wiki/Dunbar&amp;#039;s_number" title=" Dunbar&amp;#039;s Number"&gt;Dunbar's Number&lt;/a&gt;: that there's a cognitive limit to the amount of people with which we can hold stable social relationships. The upper bound for this is thought to be somewhere around 150, but it's not hard to find thousands, if not millions, of people in social networks and services following or friending well beyond that limit.&lt;/p&gt;
&lt;p&gt;A few weeks ago, Hutch Carpenter wrote &lt;a title="Forget Dunbar&amp;amp;rsquo;s Number, Our Future Is in Scoble&amp;amp;rsquo;s Number" href="http://bhc3.wordpress.com/2009/02/16/forget-dunbars-number-our-future-is-in-scobles-number/"&gt;a great article on how social relationships may be changing to incorporate far more people than Dunbar's number&lt;/a&gt;: that we use the follow relationship as a means to discover new content and track interests rather than as a means to follow people in the normal sense of the word. Instead of Dunbar's number, we should be focusing on Scoble's Number: the number of people you can follow that captures what you're interested in. This is a great hypothesis, and has great explanatory power in the normal web 2.0 world. Robert Scoble has talked about &lt;a title="Things I&amp;amp;rsquo;ve learned by clicking &amp;amp;ldquo;like&amp;amp;rdquo; 15,301 times" href="http://scobleizer.com/2009/01/22/things-ive-learned-by-clicking-like-15301-times/"&gt;how he uses his &amp;quot;friends&amp;quot; to keep track on trends and find new stuff&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The problem is that this breaks down in the real-time world: content comes in too quickly, and it is very difficult to find anything that's of any use. Following hundreds or thousands of people in real-time prevents the cognitive absorption of information. Instead of finding the diamonds in the rough that you'd normally miss if you didn't follow lots of people, you instead can't find anything. Utilizing a network of hundreds of people to filter the good stuff just compounds the problem.&lt;/p&gt;
&lt;h3&gt;It's a Follow Problem, Not a Filter Problem&lt;/h3&gt;
&lt;p&gt;This is where filters come in: real-time filtering solves the information discovery problem far better than the kludge of following people with diverse interests. I don't need to follow a person to find out about the interesting bits they're sharing: I can monitor, in real time, based on semantic data. FriendFeed, in its new version, provides this, and it's merely the beginning. Filters will become far more powerful and provide far more targetted information that a social graph could ever produce.&lt;/p&gt;
&lt;h3&gt;Real-time Mimics Real-World&lt;/h3&gt;
&lt;p&gt;So where does this leave the social graph? I &lt;a title="I think the switch to realtime is going to prove once and for all Dunbar was right and Scoble was wrong." href="http://beta.friendfeed.com/itafroma/9c71e5ba/i-think-switch-to-realtime-is-going-prove-once"&gt;mentioned it on FriendFeed&lt;/a&gt;, but I think we're now much closer to how the real world works than anything else, and it's a sign of things to come. In real life, we don't go around making friends with everyone in hopes of getting some sort of information: we have close networks based on shared life experiences, and we use those close networks to experience a lot of stuff outside of our own worldview. A friend may invite you to a party, or tell you about their life, or catch up with you about things you've neglected that are personal to you. We use filters, in various forms, to get information about the rest: newspaper sections, TV channels, college courses, and so on.&lt;/p&gt;
&lt;h3&gt;Wrapping Up&lt;/h3&gt;
&lt;p&gt;FriendFeed, in its new form, is not perfect, but it's closer to capturing our natural methods of acquiring information than anything else out there. It's a sign of things to come: if you're a person like Robert Scoble, you're going to have to forget about following a thousand, 10,000, or 50,000 people; instead, start thinking about how to filter the infinite amount of information out there to things that interest you. Set up your information and entertainment channels and stop using people as if they were news feeds.&lt;/p&gt;
&lt;p&gt;MG Siegler on VentureBeat had &lt;a title="Don&amp;amp;rsquo;t like FriendFeed&amp;amp;rsquo;s real-time speed? Eat my dust." href="http://venturebeat.com/2009/04/06/dont-like-friendfeeds-real-time-speed-eat-my-dust/"&gt;a great article today about this change&lt;/a&gt;, quoting &lt;em&gt;Top Gun&lt;/em&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Instead, I&amp;rsquo;ll just quote a line from &lt;em&gt;Top Gun&lt;/em&gt; that speaks to why I love the new FriendFeed: I feel the need &amp;mdash; the need for speed.&lt;/p&gt;
&lt;p&gt;Look, information happens in real time. One of the reasons the web has exploded in popularity is because it gives you access to more information, faster than ever before. This new version of FriendFeed does the exact same thing, to the extreme &amp;mdash; it&amp;rsquo;s wonderful. Are people really complaining that we should slow the information down? It may be a bit extreme to say, but that really is a form of censorship. Don&amp;rsquo;t slow the information down, tweak the way you consume it.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;In keeping with the go-go 80s metaphors, it's a real-time world, and I'm just a real-time girl.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=enLIH7ztcMA:Q1aHJjebMR0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=enLIH7ztcMA:Q1aHJjebMR0:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/enLIH7ztcMA" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/review">Review</category>
 <category domain="http://marktrapp.com/tags/dunbars-number">Dunbar&amp;#039;s Number</category>
 <category domain="http://marktrapp.com/tags/friendfeed">friendfeed</category>
 <category domain="http://marktrapp.com/tags/real-time">Real-time</category>
 <category domain="http://marktrapp.com/tags/scobles-number">Scoble&amp;#039;s Number</category>
 <category domain="http://marktrapp.com/tags/semantic-filtering">Semantic Filtering</category>
 <pubDate>Mon, 06 Apr 2009 23:40:04 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">39 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/realtime_1.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/realtime_1.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/04/06/real-time-killed-web-20-star</feedburner:origLink></item>
<item>
 <title>URL Shorteners Are Playing with Fire</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/o2QeLDPundo/url-shorteners-are-playing-fire</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/diggbar.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; URL shorteners, due to their very nature, may be on borrowed time. One step by Google and the entire industry collapses like the house of cards it is.&lt;/p&gt;
&lt;p&gt;Yesterday, Joshua Schachter had an excellent piece on &lt;a title="on url shorteners" href="http://joshua.schachter.org/2009/04/on-url-shorteners.html"&gt;the perils of the URL shortener&lt;/a&gt;: it's clear, concise, and scathing. &lt;a title="URL shorteners suck" href="http://www.kottke.org/09/04/url-shorteners-suck"&gt;Jason Kottke&lt;/a&gt; and &lt;a title="Josh is right, URL shorteners are risky" href="http://scripting.com/stories/2009/04/03/joshIsRightUrlShortenersAr.html"&gt;Dave Winer&lt;/a&gt; had a few suggestions on how to mitigate the problem, or get us on the right track to eventually deprecating the use of URL shorteners.&lt;/p&gt;
&lt;p&gt;I agree with Schachter's assessment, and I think Kottke and Winer are on the right track, but I think the URL shortener problem is far greater than what Schachter enumerates: no longer satisfied with controlling the initial click, URL shorteners have decided to add toolbars to promote ther content or to sell adspace: the most notable and recent addition to this group is Digg's toolbar, &lt;a title="DiggBar Launches Today!" href="http://blog.digg.com/?p=591"&gt;DiggBar&lt;/a&gt;. Dubious utility aside, they are trampling in the garden of an angry god.&lt;/p&gt;

&lt;h3&gt;The 800lb Gorilla: Google&lt;/h3&gt;
&lt;p&gt;For better or for worse, all things link-related must pass Google's standards. Google's search engine depends on high quality, relevant results determined, in no small part, in how the web links together. It's something Google protects with its blacklisting policy: you do something Google doesn't like, and &lt;a title="Fear The Google Blacklist" href="http://www.informationweek.com/news/internet/webdev/showArticle.jhtml?articleID=206503948"&gt;your links disappear from Google's index&lt;/a&gt;. It's as if they didn't exist at all.&lt;/p&gt;
&lt;p&gt;Although it sounds like the 21st Century equivalent of Big Brother, they do at least give a clear indication of what is not acceptable, so you can avoid doing it if you want to play nice with Google. You follow those, you're probably in favor with Google.&lt;/p&gt;
&lt;h3&gt;The Doorway Page&lt;/h3&gt;
&lt;p&gt;But in reflecting upon the topic of toolbar URL shorteners, there's one set of policies that caught my attention, on &lt;a title="Cloaking, sneaky Javascript redirects, and doorway pages" href="http://www.google.com/support/webmasters/bin/answer.py?hl=en&amp;amp;answer=66355"&gt;cloaking, sneaky Javascript redirects, and doorway pages&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Doorway pages are typically large sets of poor-quality pages where each page is optimized for a specific keyword or phrase. In many cases, doorway pages are written to rank for a particular phrase and then funnel users to a single destination.&lt;/p&gt;
&lt;p&gt;Whether deployed across many domains or established within one domain, doorway pages tend to frustrate users, and are in violation of our webmaster guidelines.&lt;/p&gt;
&lt;p&gt;Google's aim is to give our users the most valuable and relevant search results. Therefore, we frown on practices that are designed to manipulate search engines and deceive users by directing them to sites other than the ones they selected, and that provide content solely for the benefit of search engines. Google may take action on doorway sites and other sites making use of these deceptive practice, including removing these sites from the Google index.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It seems to me the toolbar URL shorteners are treading dangerously close to Google's definition of a &amp;quot;doorway page:&amp;quot; all it takes is Google to classify them as such and Digg, of all sites, disappears from Google's index. Think of that concept: Digg, by far, gets most of its traffic from organic search results. Why would they even risk it?&lt;/p&gt;
&lt;h3&gt;Wrapping Up&lt;/h3&gt;
&lt;p&gt;While I agree with Schachter, Kottke, and Winer about the problems of URL shortening, I think those of us against the practice of URL shorteners (and at least for me personally, especially the use of toolbar URL shorteners) could soon have a powerful friend in Google. One step by Google towards classifying URL shorterners would mark the death of the practice: I'm not sure it's worth the risk for any of us to use them.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=o2QeLDPundo:VSl8_Bl5-IY:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/marktrapp/blog?a=o2QeLDPundo:VSl8_Bl5-IY:YwkR-u9nhCs"&gt;&lt;img src="http://feeds.feedburner.com/~ff/marktrapp/blog?d=YwkR-u9nhCs" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/o2QeLDPundo" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/review">Review</category>
 <category domain="http://marktrapp.com/tags/dave-winer">Dave Winer</category>
 <category domain="http://marktrapp.com/tags/digg">Digg</category>
 <category domain="http://marktrapp.com/tags/google">Google</category>
 <category domain="http://marktrapp.com/tags/jason-kottke">Jason Kottke</category>
 <category domain="http://marktrapp.com/tags/joshua-schachter">Joshua Schachter</category>
 <category domain="http://marktrapp.com/tags/url-shorteners">url shorteners</category>
 <pubDate>Sat, 04 Apr 2009 16:24:08 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">38 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/diggbar.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/diggbar.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/04/04/url-shorteners-are-playing-fire</feedburner:origLink></item>
<item>
 <title>All Likes Are Not Created Equal</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/0YdW8KMXXG4/all-likes-are-not-created-equal</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/All Likes Are Not Created Equal.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; Facebook still doesn't hold a torch to the basic user experience of FriendFeed not because it isn't trying, but because of the rules it's decided to play by.&lt;/p&gt;
&lt;p&gt;Recently, &lt;a href="http://facebook.com"&gt;Facebook&lt;/a&gt; released a feature in its newsfeed that allows people to &amp;quot;like&amp;quot; newsfeed items. As it's described by Facebook's program manager Leah Pearlman, the feature allows you to &lt;a href="http://blog.facebook.com/blog.php?post=53024537130"&gt;tell your friends you approve&lt;/a&gt; of what they posted:&lt;/p&gt;
&lt;blockquote&gt;This is similar to how you might rate a restaurant on a reviews site. If you go to the restaurant and have a great time, you may want to rate it 5 stars. But if you had a particularly delicious dish there and want to rave about it, you can write a review detailing what you liked about the restaurant. We think of the new &amp;quot;Like&amp;quot; feature to be the stars, and the comments to be the review.&lt;/blockquote&gt;
&lt;p&gt;This feature prima face copies &lt;a href="http://friendfeed.com"&gt;FriendFeed&lt;/a&gt;'s &amp;quot;like&amp;quot; functionality, right down to the interaction and the verbage. Not surprisingly, FriendFeed's supporters were &lt;a href="http://www.inquisitr.com/17793/facebook-proves-how-lame-it-is-steals-from-twitter-and-friendfeed/"&gt;outraged and appalled&lt;/a&gt; at Facebook's Machievellian drive to copy FriendFeed. But I think it's important to take a step back and talk about the value of a &amp;quot;like&amp;quot;.&lt;/p&gt;

&lt;h3&gt;&amp;quot;This is interesting&amp;quot; vs. &amp;quot;I approve of this&amp;quot;&lt;/h3&gt;
&lt;p&gt;What most people seem to miss in the analysis of Facebook's latest feature is how different it is, in both intent and implementation, from FriendFeed's feature. It uses the same word, and lets the poster know you liked the story, but FriendFeed does something more: it shares that story to everyone that's subscribed to you.&lt;/p&gt;
&lt;p&gt;Why is this important? FriendFeed's like acts as a means to rapidly disseminate things you find interestng with people. Think about &lt;a href="http://scobleizer.com/2008/12/22/did-i-harm-my-blog-by-friendfeeding-this-year/"&gt;Robert Scoble's 2,000-hour project&lt;/a&gt;: he's not just telling all those people that he approves of what they posted, he's telling his 20,000+ followers that they should check it out because Robert finds it interesting. That's true power and knowledge sharing.&lt;/p&gt;
&lt;p&gt;Facebook's implementation of the &amp;quot;like&amp;quot; is for one thing only: to tell your friend (and others) that you approve of what your friend posted. While it makes you and your friend feel good, what value does it have to the social aspect of the newsfeed? If you like the story so much, wouldn't you want to share it with people?&lt;/p&gt;
&lt;p&gt;Think about a real life interaction: say your best friend tells you they just got engaged. That's important! I'd be telling everyone about it. But Facebook doesn't capture that. It lets you tell your friend &amp;quot;cool.&amp;quot; and walk away. I guess there's a small token value to that, but it's not capturing an important part of the power of social media.&lt;/p&gt;
&lt;h3&gt;FriendFeed's Like is Safe&lt;/h3&gt;
&lt;p&gt;What's great for FriendFeed about this difference is that this isn't merely an oversight of Facebook, to be corrected later. Facebook's privacy culture, which holds people's privacy as sacrosanct, prevents the FriendFeed like from ever occurring. While it's great for the average Facebooker concerned about privacy, it relegates Facebook's offering to a mere novelty gimmick, destined to the same fate as the superpoke.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;Main photo credit:&lt;/strong&gt; &lt;a href="http://www.nonowrites.com"&gt;Nono Farahshila&lt;/a&gt; (&lt;a href="http://flickr.com/photos/n-o-n-o/"&gt;Flickr&lt;/a&gt;)&lt;/em&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=2kROGPxr"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=xq4mlO2A"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=45" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/0YdW8KMXXG4" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/review">Review</category>
 <category domain="http://marktrapp.com/tags/facebook">facebook</category>
 <category domain="http://marktrapp.com/tags/friendfeed">friendfeed</category>
 <category domain="http://marktrapp.com/tags-0">like</category>
 <category domain="http://marktrapp.com/tags/robert-scoble">Robert Scoble</category>
 <pubDate>Wed, 11 Feb 2009 01:24:23 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">37 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/All Likes Are Not Created Equal.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/All Likes Are Not Created Equal.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/02/10/all-likes-are-not-created-equal</feedburner:origLink></item>
<item>
 <title>My Perfect FriendFeed: Meme-less</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/YImWvjBtbIA/my-perfect-friendfeed-meme-less</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/Perfect FriendFeed.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; FriendFeed should not be work to use constructively. Better filtering tools, and more predictive tools, would elevate FriendFeed beyond the goof-off place it is today.&lt;/p&gt;
&lt;p&gt;A couple weeks ago, one of the founders of FriendFeed, &lt;a href="http://en.wikipedia.org/wiki/Paul_Buchheit"&gt;Paul Buchheit&lt;/a&gt;, asked the world their ideas on &lt;a href="http://paulbuchheit.blogspot.com/2009/01/overnight-success-takes-long-time.html"&gt;the perfect FriendFeed&lt;/a&gt;. I've been thinking about this since then, and there are a few standbys: I'd like better filtering options, I'd like to be able to have &lt;a href="http://friendfeed.com/e/cffd0482-12f9-4380-839a-364dcb19bfd5/My-aggregated-posts-from-Tumblr-and-delicious-now/"&gt;Tumblr treated like a blog&lt;/a&gt;, I'd like a &lt;a href="/blog/2009/01/16/buddyfeed-native-friendfeed-client"&gt;native FriendFeed iPhone client&lt;/a&gt; that has 100% of the functionality of the website, and others. But these are either vague, or non-critical to my usage of FriendFeed. I could live without a good iPhone client. And what do I mean &amp;quot;better filtering options?&amp;quot;&lt;/p&gt;
&lt;h3&gt;Memes&lt;/h3&gt;
&lt;p&gt;By better filtering options, I really am trying to remove one &amp;quot;type&amp;quot; of thing from my feed: memes. I know there are a lot of people who love them, but I don't. I don't find memes to be a particularly valuable or useful phenomenon on the internet: I want to find new information, not 300 variations of a topic. So, what I would love to see FriendFeed somehow tackle is memeing: identify when a meme is going down, and block it, either for me or universally. &amp;quot;Blocking&amp;quot; may be too strong of a word: it could be handled like a hide, or even like other inflammatory discussions, where they simply don't get bumped up to the top of people's feeds.&lt;/p&gt;
&lt;p&gt;It'd be really awesome if this was automatic: the moment there's a spike in &lt;a href="http://friendfeed.com/search?q=25+things&amp;amp;service=&amp;amp;public=1&amp;amp;who=&amp;amp;room="&gt;&amp;quot;25 things&amp;quot;&lt;/a&gt; posts, institute the block. However, a poor man's version could be a keyword block. If I could hide or block things with keywords, it'd probably accomplish the same thing, albeit with more work.&lt;/p&gt;
&lt;h3&gt;Less work, more fun&lt;/h3&gt;
&lt;p&gt;The tried and true standby of those who respond to people like me who complain about content is &amp;quot;if you don't like it, hide it.&amp;quot; Hiding is work. Having to read something, identify if it's valuable, then take an action to hide it is robbing me of time I could be spent doing something else. One hide is negligible, 10 hides is annoying, 100, 1000, or 10,000 hides is insanity. How much time have we lost individually hiding things on FriendFeed or manually managing lists and subscriptions? It shouldn't be so time consuming to derive value from FriendFeed: I think this time sink is what gives FriendFeed an air of &amp;quot;this place isn't for serious business,&amp;quot; which is a shame. I don't want a game, I want a tool to augment my online use.&lt;/p&gt;
&lt;h3&gt;Updated: Yes, it's a Free country&lt;/h3&gt;
&lt;p&gt;In responding to some of the initial reactions to this post, I realize I didn't fully elucidate a big distinction of mine: I don't want to limit people's abilities to use FriendFeed however they want. You want to spend your time answering questions and filling out surveys and posting lolcats? More power to you. What I &lt;em&gt;am&lt;/em&gt; saying is that it should be a lot easier for people not interested in those things to filter that out: FriendFeed could be much more useful to them if it was.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=H96AL7hb"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=svWbkPEB"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=45" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/YImWvjBtbIA" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/review">Review</category>
 <category domain="http://marktrapp.com/tags/all-your-base">All Your Base</category>
 <category domain="http://marktrapp.com/tags/chuck-norris">Chuck Norris</category>
 <category domain="http://marktrapp.com/tags/friendfeed">friendfeed</category>
 <category domain="http://marktrapp.com/tags/lolcats">Lolcats</category>
 <category domain="http://marktrapp.com/tags/meme">meme</category>
 <category domain="http://marktrapp.com/tags/rickroll">Rickroll</category>
 <pubDate>Tue, 20 Jan 2009 23:10:51 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">36 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/Perfect FriendFeed.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/Perfect FriendFeed.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/01/20/my-perfect-friendfeed-meme-less</feedburner:origLink></item>
<item>
 <title>BuddyFeed, a Native FriendFeed Client</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/eqlGDDR2Lyk/buddyfeed-native-friendfeed-client</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/BuddyFeed.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; BuddyFeed is a promising native iPhone client for FriendFeed, but there are a few things it fails to handle which probably makes it a non-starter for most people, even for its relatively small price tag of 99 cents.&lt;/p&gt;
&lt;p&gt;One of the things that's been missing from &lt;a href="http://friendfeed.com"&gt;FriendFeed&lt;/a&gt; has been a native &lt;a href="http://apple.com/iphone"&gt;iPhone&lt;/a&gt; client. Sure, there's the &lt;a href="http://friendfeed.com/iphone"&gt;iPhone version of the website&lt;/a&gt;, and there's &lt;a href="http://fftogo.com"&gt;FFToGo&lt;/a&gt;, but they both miss a lot of administrative features of FriendFeed and don't provide the lustery UI of a native app. Recently, a third-party FriendFeed iPhone app came out called &lt;a href="http://www.codewalrus.com/buddyfeed/"&gt;BuddyFeed&lt;/a&gt;. It's promising, but there are a few things it fails to handle which probably makes it a non-starter for most people, even for its relatively small price tag of 99 cents. It also has a few UI failures that really need to be addressed.&lt;/p&gt;
&lt;h3&gt;Overview&lt;/h3&gt;
&lt;p&gt;&lt;em&gt;For screenshots, check out the &lt;a href="http://www.flickr.com/photos/itafroma/sets/72157612587742477/"&gt;Flickr photo album&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Like all good third-party FriendFeed clients, BuddyFeed asks for your username and remote key, indicating it's working off the standard, &lt;a href="http://friendfeed.com/api/"&gt;third-party API&lt;/a&gt; FriendFeed provides and not off of some magical scraping technique. This is great for users who are &lt;a href="/blog/2009/01/07/testing-testing-1-2-3"&gt;wary of giving their authentication information&lt;/a&gt; to third parties, but it also highlights just how far BuddyFeed is able to go: if FriendFeed doesn't provide it, BuddyFeed can't do it. A FriendFeed client written by FriendFeed itself probably won't have those same restrictions.&lt;/p&gt;
&lt;p&gt;The UI is pretty standard iPhone app fare: which is a Good Thing. Most functions are available from a single click or within 2 clicks. You can subscribe and unsusbscribe from people (something you can't do on the FriendFeed iPhone website or FF2Go), get to your rooms, see your own feed, see your likes and comments, and post messsages (including messages while using the built-in iPhone camera). However, there are two glaring omissions:&lt;/p&gt;
&lt;h3&gt;No hiding, no lists&lt;/h3&gt;
&lt;p&gt;Two of FriendFeed's main features for filtering your stream, hiding and lists, are completely missing from BuddyFeed. I've seen these missing from other third-party FriendFeed apps, so I wonder how much that has to do with the third-party API BuddyFeed uses. Regardless of the cause, the lack of hide support breaks FriendFeed in a big way, and the lack of lists is a sorely missed feature from FriendFeed proper.&lt;/p&gt;
&lt;h3&gt;&lt;a href="http://www.flickr.com/photos/itafroma/3200687535/"&gt;&lt;img src="http://farm4.static.flickr.com/3434/3200687535_a6282e2bb5_m.jpg" width="160" height="240" vspace="5" hspace="5" align="left" /&gt;&lt;/a&gt;Quirky User Interface&lt;/h3&gt;
&lt;p&gt;BuddyFeed also suffers from some really odd UI quirks. In order to see comments and likes, or to make your own comment or like, you can't just feed item a story, you have to touch the feed item in the lower right hand corner, in an unmarked area. If you don't, the feed item goes to whatever it was linked to (for example, an external webpage).&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.flickr.com/photos/itafroma/3201538690/"&gt;&lt;img src="http://farm4.static.flickr.com/3127/3201538690_cd28531331_m.jpg" width="160" height="240" vspace="5" hspace="5" align="right" /&gt;&lt;/a&gt;The other big failure is the choice of icon for the comment function: it's a &amp;quot;go back&amp;quot; arrow. It took me a while, and a blind guess, to divine that the arrow meant &amp;quot;comment.&amp;quot; It really needs to be changed.&lt;/p&gt;
&lt;h3&gt;Conclusion&lt;/h3&gt;
&lt;p&gt;BuddyFeed looks pretty promising, and the lack of lists and the odd UI choices are forgivable, but the lack of hide support is not. If you use FriendFeed at all on a regular basis, the lack of hide is probably going to stop this show.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Robin Lu, the developer of BuddyFeed, just sent me this response:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Mark,&lt;/p&gt;
&lt;p&gt;Great thanks for trying the app and giving all the suggestions.&lt;/p&gt;
&lt;ol&gt;
    &lt;li&gt;The &amp;quot;hide&amp;quot; setting will be honored in the next version.&lt;/li&gt;
    &lt;li&gt;&amp;quot;List&amp;quot; support will be added for the next version.&lt;/li&gt;
    &lt;li&gt;The icon is the native one for &amp;quot;Reply&amp;quot;. You may find the same icon in the &amp;quot;Mail&amp;quot; for replying the mail. Maybe I should change it to the one as &amp;quot;Post&amp;quot;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Best Regards, Robin Lu&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Sounds good to me. Here's to the next version!&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=dlTHCcFb"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=xmlAoamg"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=45" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/eqlGDDR2Lyk" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/review">Review</category>
 <category domain="http://marktrapp.com/tags/buddyfeed">BuddyFeed</category>
 <category domain="http://marktrapp.com/tags/friendfeed">friendfeed</category>
 <category domain="http://marktrapp.com/tags/iphone">iPhone</category>
 <pubDate>Fri, 16 Jan 2009 12:56:52 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">35 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/BuddyFeed.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/BuddyFeed.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/01/16/buddyfeed-native-friendfeed-client</feedburner:origLink></item>
<item>
 <title>Twitter vs. the Business-to-Business Model</title>
 <link>http://feedproxy.google.com/~r/marktrapp/blog/~3/gvIQK-mCu64/twitter-vs-business-business-model</link>
 <description>&lt;p&gt;        &lt;img src="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/blog/Twitter vs B2B.png" alt="" title=""  width="425" height="150" /&gt;   &lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Bottom Line:&lt;/strong&gt; The value of social media for the business-to-business model, especially as we start to look at who participates in social media and who the decision makers are, is unclear. What do you think?&lt;/p&gt;
&lt;p&gt;Over the past couple of days, I've been thinking about Business-to-Business (B2B) marketing as it relates to social media, and truth be told, I'm lost. Rather than go into a rant about how the internet's wronged me today, or try to get into a lesson about an abstract concept, I'm going to go through my take on the state of B2B social media marketing and pass it off to you, the reader.&lt;/p&gt;
&lt;h3&gt;Businesses are not individuals&lt;/h3&gt;
&lt;p&gt;One of the key concepts in social media is the emphasis on the individual: rather than talking to, or marketing to, large swathes of the population, you can interact with indivudual customers. This is great: for Business-to-Consumer strategies. But what about B2B? This is where the value of social media breaks down for me. I can see maintaining a blog: it allows you to keep your message out there and provides great SEO value. But if you're not targetting individuals at all, what's the point of &lt;a href="http://twitter.com"&gt;Twitter&lt;/a&gt;? Or &lt;a href="http://facebook.com"&gt;Facebook&lt;/a&gt;? Or &lt;a href="http://friendfeed.com"&gt;FriendFeed&lt;/a&gt;? Or any other individual-based social network?&lt;/p&gt;
&lt;h3&gt;The decision makers are too old for Facebook&lt;/h3&gt;
&lt;p&gt;One counter to the above is that businesses don't really talk to each other: it's individual decision makers, and those people could be using social media to keep in touch. But in reality, I wonder how much that is the case. The &lt;a href="http://www.springerlink.com/content/l6166715852g18h3/"&gt;average executive age is 53&lt;/a&gt;, and there's a substantial generational gap for social media. What's the average age of a Facebook user? It's &lt;a href="http://www.techcrunch.com/2007/07/06/facebook-users-up-89-over-last-year-demographic-shift/"&gt;probably under 35&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Even disregarding the generational gap in social media, there's something odd and unproductive about having decision makers hash complex B2B deals on social media. In the back of my mind, I've tried to picture Steve Ballmer and Jerry Yang working out a buyout deal over Twitter, and it's just awkward. I mean, come on:&lt;/p&gt;
&lt;p class="rtecenter"&gt;&lt;a href="http://www.flickr.com/photos/itafroma/3181345368/"&gt;&lt;img src="http://farm4.static.flickr.com/3363/3181345368_69c548a4ff.jpg" width="425" height="284" vspace="5" hspace="5" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;B2B deals are large, complex, and time-consuming processes. 140 characters don't cut it, and the lack of a respect of privacy, at least in principle, is a problem. So where do these great social media tools fit in? How do you justify telling a B2B company that they can't afford to miss out on social media?&lt;/p&gt;
&lt;h3&gt;Short-term failure, long term success?&lt;/h3&gt;
&lt;p&gt;The one value I can see clearly with investing time and effort is to prepare for the next generation of executives, managers, and other decision makers. As scary as it sounds, there are people entering the workforce now who have spent their &lt;a href="http://www.cbc.ca/news/background/tech/facebook-generation.html"&gt;entire adult lives&lt;/a&gt; with Facebook, nevermind the increasing amount of the population who have never known a pre-Internet world. It would be remiss not to be talking to them using the same tools they use. But that's in 10 years or so: most social media addicts are in their 20s, or even younger; most executives are over 40.&lt;/p&gt;
&lt;p&gt;So the value isn't really in an action item for businesses, but for them to be hiring people with minimal skill sets in the future: somewhat like knowing how to use email or &lt;a href="http://office.microsoft.com/en-us/default.aspx"&gt;Microsoft Office&lt;/a&gt;. But what about the short-term and medium-term (less than 10 years)?&lt;/p&gt;
&lt;p&gt;I'm interested in your thoughts on this: let me know in the comments.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=zfLBozJr"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=41" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~f/marktrapp/blog?a=yI0YtlrD"&gt;&lt;img src="http://feeds.feedburner.com/~f/marktrapp/blog?d=45" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/marktrapp/blog/~4/gvIQK-mCu64" height="1" width="1"/&gt;</description>
 <category domain="http://marktrapp.com/blog/enterprise-20">Enterprise 2.0</category>
 <category domain="http://marktrapp.com/tags/business-business">business to business</category>
 <category domain="http://marktrapp.com/tags/enterprise-20">enterprise 2.0</category>
 <category domain="http://marktrapp.com/tags/social-media">social media</category>
 <category domain="http://marktrapp.com/tags/twitter">Twitter</category>
 <pubDate>Thu, 08 Jan 2009 23:07:26 +0000</pubDate>
 <dc:creator>Mark Trapp</dc:creator>
 <guid isPermaLink="false">34 at http://marktrapp.com</guid>
 <media:content url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/Twitter vs B2B.png" type="image/png" />
 <media:thumbnail url="http://marktrapp.com/sites/marktrapp.com/files/imagecache/article_image/Twitter vs B2B.png" />
<feedburner:origLink>http://marktrapp.com/blog/2009/01/08/twitter-vs-business-business-model</feedburner:origLink></item>
  </channel>
</rss>
