<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Laughing Meme &#187; oauth</title>
	<atom:link href="http://laughingmeme.org/tag/oauth/feed/" rel="self" type="application/rss+xml" />
	<link>http://laughingmeme.org</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Sun, 29 Jan 2012 21:54:39 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>OAuth Echo &#8211; delegation in identity verification &#8211; mehack</title>
		<link>http://laughingmeme.org/2010/02/11/oauth-echo-delegation-in-identity-verification-mehack/</link>
		<comments>http://laughingmeme.org/2010/02/11/oauth-echo-delegation-in-identity-verification-mehack/#comments</comments>
		<pubDate>Thu, 11 Feb 2010 17:35:11 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[delegation]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=4502</guid>
		<description><![CDATA[Glad to see Raffi getting this stuff out. These &#8220;vouched for&#8221; experiences are going to be the next key pieces towards enabling decentralization and service re-composition.]]></description>
			<content:encoded><![CDATA[<p>Glad to see Raffi getting this stuff out. These &#8220;vouched for&#8221; experiences are going to be the next key pieces towards enabling decentralization and service re-composition.</p>
<p><a href='http://mehack.com/oauth-echo-delegation-in-identity-verificatio'>http://mehack.com/oauth-echo-delegation-in-identity-verificatio</a></p>]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2010/02/11/oauth-echo-delegation-in-identity-verification-mehack/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flickr, Twitter, OAuth: A Secret History</title>
		<link>http://laughingmeme.org/2009/07/01/flickr-twitter-oauth-a-secret-history/</link>
		<comments>http://laughingmeme.org/2009/07/01/flickr-twitter-oauth-a-secret-history/#comments</comments>
		<pubDate>Wed, 01 Jul 2009 16:42:54 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[community]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[history]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=4235</guid>
		<description><![CDATA[I remember it as a dark and stormy night, that seems unlikely, but I&#8217;m sure it was late and chilly and damp. I remember being tired from a long day in the salt mines; that was during a period when I was always tired after work. I remember there being whiskey, and knowing @maureen, that [...]]]></description>
			<content:encoded><![CDATA[<p>I remember it as a dark and stormy night, that seems unlikely, but I&#8217;m sure it was late and chilly and damp.  </p>

<p>I remember being tired from a long day in the <a href="http://flickr.com">salt mines</a>; that was during a period when I was always tired after work.  </p>

<p>I remember there being whiskey, and knowing <a href="http://twitter.com/maureen">@maureen</a>, that seems likely.</p>

<p>I&#8217;d just won some <a href="http://yahoo.com">internal</a> battles regarding delegated auth, and implemented Google AuthSub for the new Blogger Beta, as well as Amazon auth for a side project.  So when I wanted to share photos from Flickr to Twitter, I knew it wasn&#8217;t going to be over HTTP Basic Auth.</p>

<p>A few weeks earlier <a href="http://twitter.com/blaine">@blaine</a> and <a href="http://twitter.com/factoryjoe">@factoryjoe</a> had pulled me a into a project called OpenAuth that they&#8217;d been talking about for a couple of months &#8212; an alternative to yet another auth standard, and a solution for authenticating sites using OpenID.</p>

<p>So one late, damp night along <a href="http://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=409+Laguna+St.,+San+Francisco,+CA&amp;sll=37.77493,-122.42574&amp;sspn=0.004766,0.009109&amp;ie=UTF8&amp;hq=&amp;hnear=409+Laguna+St,+San+Francisco,+California+94102&amp;z=16">Laguna St.</a> with whiskey, we did a pattern extraction, identifying the minimal possible set of features to offer compatibility against existing best practice API authorization protocols. And wrote down the half pager that became the very first draft of the <a href="http://oauth.net">OAuth</a> spec.</p>

<p>That spec wasn&#8217;t the final draft.  That came later, after an open community standardization process allowing experts from the security, web, and usability community to weigh in and iterate on the design.  But many of those decisions (and some of the mistakes) from that night made it into the final version.</p>

<p>Yesterday, a little over two years later,  we finally shipped <a href="http://blog.flickr.net/en/2009/06/30/twitter-your-flickr/">Flickr2Twitter</a>.</p>

<p>So it was nice yesterday when people commented on the integration:</p>

<blockquote>
  <p>&#8220;Uses OAuth!&#8221;
   &#8220;Doesn&#8217;t ask for your Twitter password&#8221;
  &#8220;Great use of OAuth&#8221;. </p>
</blockquote>

<p>And I thought to myself, &#8220;It better be, this is what OAuth was invented for &#8212; literally&#8221;.</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2009/07/01/flickr-twitter-oauth-a-secret-history/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>New Amazon AWS Signature Version 2 is  &#8220;OAuth-compatible&#8221;</title>
		<link>http://laughingmeme.org/2008/12/30/new-amazon-aws-signature-version-2-is-oauth-compatible/</link>
		<comments>http://laughingmeme.org/2008/12/30/new-amazon-aws-signature-version-2-is-oauth-compatible/#comments</comments>
		<pubDate>Tue, 30 Dec 2008 20:10:22 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[amazon]]></category>
		<category><![CDATA[aws]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[crypo]]></category>
		<category><![CDATA[dork]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[openweb]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[simpledb]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=4138</guid>
		<description><![CDATA[Spent a couple hours last night writing the core of a stripped down, PHP4 compatible API library for Amazon SimpleDB (in the style of my (http://laughingmeme.org/2008/12/11/my-flickr-api-library-for-php/) library. Just not a fan of abstraction for its own sake). In the process I discovered that Amazon had revved the version on their &#8220;Signature Method&#8221;. Which is good [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/briannegus/1397852047/" title="Enigma rotors by Brian Negus, on Flickr"><img src="http://farm2.static.flickr.com/1200/1397852047_3128ce06df.jpg" width="500" height="375" alt="Enigma rotors" /></a></p>

<p>Spent a couple hours last night writing the core of a stripped down, PHP4 compatible API library for <a href="http://aws.amazon.com/simpledb/">Amazon SimpleDB</a> (in the style of my <a href="http://laughingmeme.org/2008/12/11/my-flickr-api-library-for-php/">flickr simple</a> library.  Just not a fan of abstraction for its own sake).  In the process I discovered that Amazon had <a href="http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1928">revved the version on their &#8220;Signature Method&#8221;</a>.  Which is good news as SignatureVersion 1 contains a classic crypto-blunder in its design, namely it encourages collisions.  (<a href="http://www.daemonology.net/blog/2008-12-18-AWS-signature-version-1-is-insecure.html">more details</a>, also <a href="http://www.phreedom.org/research/rogue-ca/">why you care about collisions</a>)  To date the solution was use SSL, and wait patiently, very patiently.  So yay for Amazon fixing this!  And in fairness, first couple of drafts of the OAuth spec contained a similar issue, though it got ironed out quickly.  Yay for many eyes and the open web.</p>

<h3>&#8220;OAuth-compatible&#8221; signing</h3>

<p>Great things are more secure, good news and all, but that isn&#8217;t what caught my eye.  This block of text did:
<blockquote><em>
Here is what&#8217;s different about forming the string to sign for signature version 2:</p>

<ul>
<li>You include additional components of the request in the string to sign</li>
<li>You include the query string control parameters (the equals signs and ampersands) in the string to sign</li>
<li>You sort the query string parameters using byte ordering</li>
<li>You URL encode the query string parameters and their values before signing the request
</em></blockquote></li>
</ul>

<p>You really have to be an <a href="http://oauth.net/core/1.0/#anchor1">OAuth-dork</a> to find anything special with that paragraph, but if you were, you&#8217;d notice that those 4 bullets are an incredibly succinct description of generating an OAuth signature. (in fact a more succinct description then appears anywhere in the <a href="http://oauth.net/core/1.0/">OAuth documentation</a></p>

<p>Which meant that my SimpleDB library can reuse most of the logic from my OAuth library to do the trickiest part of the API call, namely the signing.  (Additionally it means that security reviews of both protocols support each other)</p>

<p>So my AWS signing method is a approximately a dozen characters different then my OAuth method and as straightforward as:</p>

<pre><code>    .....

    $signature = aws_request_signature(AWS_SECRET_KEY, $http_method, AWS_SIMPLEDB_SERVICEURL, $parameters);
    $parameters['Signature'] = $signature;

    $encoded_params = array();

    foreach ($parameters as $k =&gt; $v){
        $encoded_params[] = oauth_urlencodeRFC3986($k).'='.oauth_urlencodeRFC3986($v);
    }

    $request_url = AWS_SIMPLEDB_SERVICEURL . '?' . implode('&amp;', $encoded_params);

    .....

    function aws_request_signature($key, $http_method, $service_url, $parameters) {
        $base_string = aws_base_string($http_method, $service_url, $parameters);
        return base64_encode(hash_hmac('sha1', $base_string, $key, true));
    }

    function aws_base_string($http_method, $service_url, $parameters) {
        $parsed = parse_url($service_url);

        $host = strtolower($parsed['host']);
        $path = $parsed['path'] ? $parsed['path'] : '/';
        $data = array(
            strtoupper($http_method),
            $host,
            $path,
            oauth_normalized_request_params($parameters)
        );

        $base_string = join("\n", $data);
        return $base_string;
    }
</code></pre>

<p>(this uses my personal OAuth library, but your library should have similar methods)</p>

<p>Sure made my jobs of implementing a library easier.  If you&#8217;re going to invent a new crypto protocol, please consider doing like Amazon, and re-using the basic building blocks. (which also happen to be best practices)</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/12/30/new-amazon-aws-signature-version-2-is-oauth-compatible/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Netflix API: Looking good</title>
		<link>http://laughingmeme.org/2008/10/01/netflix-api-looking-good/</link>
		<comments>http://laughingmeme.org/2008/10/01/netflix-api-looking-good/#comments</comments>
		<pubDate>Wed, 01 Oct 2008 15:18:47 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[movies]]></category>
		<category><![CDATA[netflix]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=4056</guid>
		<description><![CDATA[Netflix was pretty much the last place I was Web 2.0 style share cropping, creating value without a way to get it out. The Netflix API has been rumored for a long time, but with today&#8217;s release they really did an excellent job. REST, Atom, and Javascript APIs? CHECK Access to personal information using OAuth? [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://netflix.com">Netflix</a> was pretty much the last place I was <a href="http://www.slideshare.net/IgniteBoston/12-jesse-vincent">Web 2.0 style share cropping</a>, creating value without a way to get it out.  The <a href="http://developer.netflix.com/docs/Home">Netflix API</a> has been rumored for a long time, but with today&#8217;s release they really did an excellent job.</p>

<ul>
<li>REST, Atom, and Javascript APIs?  CHECK</li>
<li><a href="http://developer.netflix.com/docs/Security#0_18325">Access to personal information using OAuth?</a>  CHECK</li>
<li><a href="http://developer.netflix.com/blog">Developer blog</a>? CHECK</li>
<li><a href="http://developer.netflix.com/page/Resources">API Explorer</a>?  CHECK (though why it&#8217;s a Firefox plugin, I can only guess)</li>
</ul>

<p>Also versioned documentation, and a quite reasonable set of <a href="http://developer.netflix.com/docs/Branding">branding guidelines</a>.</p>

<blockquote><em>
The Netflix Web APIs provide the ability for you to integrate Netflix user services into your application. The APIs provide the following capabilities:
<ul>
<li class="Bullet1"><a name="0_pgfId-1017334"></a>Performing searches of movies, TV series, cast members, and directors</li>
<li class="Bullet1"><a name="0_pgfId-1016200"></a>Retrieving catalog titles, including details about the title such as name, box art, director, cast, etc.</li>
<li class="Bullet1"><a name="0_pgfId-1016257"></a>Determining the subscriber&#8217;s relationship to a specific title, e.g, in queue, saved, available on DVD, etc.</li>

<li class="Bullet1"><a name="0_pgfId-1016260"></a>Managing and displaying queues for users</li>
<li class="Bullet1"><a name="0_pgfId-1016261"></a>Providing conveniences such as auto-completion of partial search terms typed by a user.</li>
<li class="Bullet1"><a name="0_pgfId-1016264"></a>Displaying a user&#8217;s ratings and reviews.</li>
<li class="Bullet1"><a name="0_pgfId-1016344"></a>Including functional Add and Play buttons in your web application.</li>
</ul>
</em></blockquote>

<p>Congratulations to Netflix, and <a href="http://mashery.com/">Mashery</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/10/01/netflix-api-looking-good/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Speaking at Web 2.0 Expo this Thursday, 4:10pm</title>
		<link>http://laughingmeme.org/2008/09/15/speaking-at-web-20-expo-this-thursday-410pm/</link>
		<comments>http://laughingmeme.org/2008/09/15/speaking-at-web-20-expo-this-thursday-410pm/#comments</comments>
		<pubDate>Mon, 15 Sep 2008 16:05:24 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[me]]></category>
		<category><![CDATA[nyc]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[talk]]></category>
		<category><![CDATA[web 2.0 expo]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=4015</guid>
		<description><![CDATA[On Advanced OAuth Wrangling]]></description>
			<content:encoded><![CDATA[<p>On <a href="http://webexny2008.crowdvine.com/talks/show/1054">Advanced OAuth Wrangling</a></p>
<p><a href='http://webexny2008.crowdvine.com/talks/show/1054'>http://webexny2008.crowdvine.com/talks/show/1054</a></p>]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/09/15/speaking-at-web-20-expo-this-thursday-410pm/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Advanced OAuth Wrangling</title>
		<link>http://laughingmeme.org/2008/05/09/advanced-oauth-wrangling/</link>
		<comments>http://laughingmeme.org/2008/05/09/advanced-oauth-wrangling/#comments</comments>
		<pubDate>Fri, 09 May 2008 11:03:47 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[presentation]]></category>
		<category><![CDATA[slides]]></category>
		<category><![CDATA[xtech]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=3821</guid>
		<description><![CDATA[I&#8217;ve been terrible about uploading my talks this year. So here are the Advanced OAuth Wrangling slides from my talk today. (even though I really want to spend a couple of hours cleaning them up) &#124; View &#124; Upload your own And as its a 85 slides to be given in 45 minutes you can [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been terrible about uploading my talks this year.  So here are the <a href="http://www.slideshare.net/kellan/advanced-oauth-wrangling/">Advanced OAuth Wrangling</a> slides from my talk today. (even though I really want to spend a couple of hours cleaning them up)</p>

<div style="width:425px;text-align:left" id="__ss_395971"><object style="margin:0px" width="425" height="355"><param name="movie" value="http://static.slideshare.net/swf/ssplayer2.swf?doc=adv-oauth2-1210330189505593-9"/><param name="allowFullScreen" value="true"/><param name="allowScriptAccess" value="always"/><embed src="http://static.slideshare.net/swf/ssplayer2.swf?doc=adv-oauth2-1210330189505593-9" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"></embed></object><div style="font-size:11px;font-family:tahoma,arial;height:26px;padding-top:2px;"><a href="http://www.slideshare.net/?src=embed"><img src="http://static.slideshare.net/swf/logo_embd.png" style="border:0px none;margin-bottom:-5px" alt="SlideShare"/></a> | <a href="http://www.slideshare.net/kellan/advanced-oauth-wrangling?src=embed" title="View 'Advanced OAuth Wrangling' on SlideShare">View</a> | <a href="http://www.slideshare.net/upload?src=embed">Upload your own</a></div></div>

<p>And as its a 85 slides to be given in 45 minutes you can imagine that there is a fair amount of information missing from the slides.  <a href="http://simonwillison.net/">Simon</a> made me promise to upload an annotated version, and I&#8217;ll try to do that soon.</p>

<p>(and unfortunately the process of saving the slides down to a PDF killed the transparency on the grey backdrops)</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/05/09/advanced-oauth-wrangling/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Strange Viewings</title>
		<link>http://laughingmeme.org/2008/04/25/strange-viewings/</link>
		<comments>http://laughingmeme.org/2008/04/25/strange-viewings/#comments</comments>
		<pubDate>Sat, 26 Apr 2008 06:15:21 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[ari balogh]]></category>
		<category><![CDATA[big purple]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[personal]]></category>
		<category><![CDATA[w2e]]></category>
		<category><![CDATA[web 2.0 expo]]></category>
		<category><![CDATA[yahoo]]></category>
		<category><![CDATA[yos]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=3808</guid>
		<description><![CDATA[I didn&#8217;t make it to the keynote to see our new CTO speak (meetings that morning), but it was very strange, bordering on deeply surreal to watch the video of it. Interesting to see my &#8220;Flickr is the 2nd largest API &#8221; meme work its way up the tree. I didn&#8217;t make that factoid up [...]]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t make it to the keynote to see our <a href="http://developer.yahoo.net/blogs/theater/archives/2008/04/ari_balogh_web_20_expo_keynote.html">new CTO speak</a> (meetings that morning), but it was very strange, bordering on deeply surreal to watch the video of it.</p>

<ol>
<li><p>Interesting to see my &#8220;Flickr is the 2nd largest API &#8221; meme work its way up the tree.  I didn&#8217;t make that factoid up per se, and I&#8217;d probably stand behind it if pushed, but I did reason from very limited data.  (also AWS screws up the story, is utility computing an API?)</p></li>
<li><p>Still haven&#8217;t quite adjusted to the transition of OAuth from being a personal project that the &#8220;Paranoids&#8221; (official title of Yahoo&#8217;s internal security experts) were angry at me for working on (against Yahoo policy for Yahoos to work on security related projects), to a the company wide standard, at least on paper.</p></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/04/25/strange-viewings/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Upcoming Talks, Web2Expo, etc</title>
		<link>http://laughingmeme.org/2008/04/19/upcoming-talks-web2expo-etc/</link>
		<comments>http://laughingmeme.org/2008/04/19/upcoming-talks-web2expo-etc/#comments</comments>
		<pubDate>Sat, 19 Apr 2008 20:32:54 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[conference]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[dublin]]></category>
		<category><![CDATA[icalico]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[san francisco]]></category>
		<category><![CDATA[talks]]></category>
		<category><![CDATA[travel]]></category>
		<category><![CDATA[w2e]]></category>
		<category><![CDATA[xtech]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=3805</guid>
		<description><![CDATA[I&#8217;m speaking next Friday at the SF Web2Expo on Casual Privacy. I&#8217;m speaking in Dublin Speaking Thursday May 8th (2 weeks later) in Dublin on Advanced OAuth Wrangling. Hope to see you at one or both of those talks. I&#8217;m also excited about a dozen other talks next week, as you can see from my [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m speaking next Friday at the <a href="http://sf.web2expo.com">SF Web2Expo</a> on <a href="http://en.oreilly.com/webexsf2008/public/schedule/detail/1826">Casual Privacy</a>.  I&#8217;m speaking in Dublin Speaking Thursday May 8th (2 weeks later) in Dublin on <a href="http://2008.xtech.org/public/schedule/detail/645">Advanced OAuth Wrangling</a>.  Hope to see you at one or both of those talks.</p>

<p>I&#8217;m also excited about a <a href="http://webexsf2008.crowdvine.com/profiles/1841/talks">dozen other talks next week</a>, as you can see from my <a href="http://webexsf2008.crowdvine.com/profiles/1841/talks">Web2/iCalico schedule</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/04/19/upcoming-talks-web2expo-etc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>John Gruber calls out the sorry state of Twitter&#8217;s APIs (while talking about the lack of good iPhone clients)</title>
		<link>http://laughingmeme.org/2008/04/17/john-gruber-calls-out-the-sorry-state-of-twitters-apis-while-talking-about-the-lack-of-good-iphone-clients/</link>
		<comments>http://laughingmeme.org/2008/04/17/john-gruber-calls-out-the-sorry-state-of-twitters-apis-while-talking-about-the-lack-of-good-iphone-clients/#comments</comments>
		<pubDate>Thu, 17 Apr 2008 17:20:46 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mobile]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/?p=3803</guid>
		<description><![CDATA[Me I just wish they&#8217;d bring back a delegated auth endpoint, whether their proto-OAuth, or a real OAuth endpoint. Meanwhile my only issue with m.twitter.com is I want the option to see only the subset of folks I have device notification turned on for.]]></description>
			<content:encoded><![CDATA[<p>Me I just wish they&#8217;d bring back a delegated auth endpoint, whether their proto-OAuth, or a real OAuth endpoint.  Meanwhile my only issue with m.twitter.com is I want the option to see only the subset of folks I have device notification turned on for.</p>
<p><a href='http://daringfireball.net/2008/04/twitter_web_clients_for_the_iphone'>http://daringfireball.net/2008/04/twitter_web_clients_for_the_iphone</a></p>]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/04/17/john-gruber-calls-out-the-sorry-state-of-twitters-apis-while-talking-about-the-lack-of-good-iphone-clients/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flickr: Beehive Launches without Phishing</title>
		<link>http://laughingmeme.org/2008/03/31/flickr-beehive-launches-without-phishing/</link>
		<comments>http://laughingmeme.org/2008/03/31/flickr-beehive-launches-without-phishing/#comments</comments>
		<pubDate>Tue, 01 Apr 2008 00:30:45 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[data portability]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[open data]]></category>
		<category><![CDATA[phishing]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[social graph]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2008/03/31/flickr-beehive-launches-without-phishing/</guid>
		<description><![CDATA[Congrats to waferbaby, mroth, and ph for totally owning on today&#8217;s friend importing feature (aka beehive). We&#8217;re a little late to the game but its awfully nice to be able to launch with zero screenscraping, and zero phishing-creepy-give-us-your-password. This is what data-portability-open-data-delegated-trust future looks like. update: and yes, we&#8217;re cheating, because Yahoo&#8217;s addressbook API is [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/gustavog/2309283830/" title="Overview of relationships between groups, removing highly redundant groups by GustavoG, on Flickr"><img src="http://farm3.static.flickr.com/2365/2309283830_f3b71c9c0d.jpg" width="500" height="500" alt="Overview of relationships between groups, removing highly redundant groups" /></a></p>

<p>Congrats to <a href="http://waferbaby.com/">waferbaby</a>, <a href="http://mroth.info/">mroth</a>, and <a href="http://www.paulhammond.org/journal/">ph</a> for totally owning on today&#8217;s <a href="http://blog.flickr.net/en/2008/03/31/find-your-friends/">friend importing feature</a> (aka beehive). </p>

<p>We&#8217;re a little late to the game but its awfully nice to be able to launch with zero screenscraping, and zero phishing-creepy-give-us-your-password. This is what data-portability-open-data-delegated-trust future looks like.</p>

<p><strong>update:</strong> and yes, we&#8217;re cheating, because Yahoo&#8217;s addressbook API is still internal+partners only.  We&#8217;re working on it.</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/03/31/flickr-beehive-launches-without-phishing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Your Email Password: A True Horror Story About Why We Need Authentication Standards &#8211; ReadWriteWeb</title>
		<link>http://laughingmeme.org/2008/03/09/your-email-password-a-true-horror-story-about-why-we-need-authentication-standards-readwriteweb/</link>
		<comments>http://laughingmeme.org/2008/03/09/your-email-password-a-true-horror-story-about-why-we-need-authentication-standards-readwriteweb/#comments</comments>
		<pubDate>Sun, 09 Mar 2008 17:56:34 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[gmail]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2008/03/09/your-email-password-a-true-horror-story-about-why-we-need-authentication-standards-readwriteweb/</guid>
		<description><![CDATA[OAuth FTW]]></description>
			<content:encoded><![CDATA[<p>OAuth FTW</p>
<p><a href='http://www.readwriteweb.com/archives/your_email_password_a_true_hor.php'>http://www.readwriteweb.com/archives/your_email_password_a_true_hor.php</a></p>]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/03/09/your-email-password-a-true-horror-story-about-why-we-need-authentication-standards-readwriteweb/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Fire Eagle: Interesting Choices</title>
		<link>http://laughingmeme.org/2008/03/05/fire-eagle-interesting-choices/</link>
		<comments>http://laughingmeme.org/2008/03/05/fire-eagle-interesting-choices/#comments</comments>
		<pubDate>Wed, 05 Mar 2008 20:14:29 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[clouds]]></category>
		<category><![CDATA[data]]></category>
		<category><![CDATA[fireeagle]]></category>
		<category><![CDATA[geo]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[social]]></category>
		<category><![CDATA[web of data]]></category>
		<category><![CDATA[yahoo]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2008/03/05/fire-eagle-interesting-choices/</guid>
		<description><![CDATA[Other folks are talking about and writing about the long germinating, launched in beta, location broker from Yahoo&#8217;s Brickhouse, Fire Eagle. I wanted to call out just a couple of the cool, and non-intuitve decisions they made. Is NOT a consumer brand Fire Eagle is a service for building and sharing location data. Its the [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/benward/556779076/" title="Fire Eagle by Ben Ward, on Flickr"><img src="http://farm2.static.flickr.com/1420/556779076_6a44ca0cd7.jpg" width="500" height="320" alt="Fire Eagle" /></a></p>

<p>Other folks are talking about and writing about the long germinating, launched in beta, location broker from Yahoo&#8217;s Brickhouse, <a href="http://fireeagle.com">Fire Eagle</a>.</p>

<p>I wanted to call out just a couple of the cool, and non-intuitve decisions they made.</p>

<h3>Is NOT a consumer brand</h3>

<p>Fire Eagle is a service for building and sharing location data.  Its the application built on top of it that you&#8217;ll interact with, unless you&#8217;re building stuff.</p>

<h3>Fire Eagle does NOT manage the social graph</h3>

<p>Its a service for sharing your data with friends (or services, or your toaster), but it doesn&#8217;t know who your friends are.  The social graph has been outsource.  Best example of a small piece loosely joined I&#8217;ve seen in a long time.</p>

<h3>Cares about privacy and ease of use</h3>

<p><a href="http://blog.wesabe.com/2007/05/14/super-ninja-privacy-techniques-in-insecure-magazine/">Ninja privacy</a> is built in.  But you don&#8217;t have to care.  The TOS requires developers to discuss how the data is used.  And privacy levels are front and center.  And from day one data is delete-able, and in fact data is flushed on a regular basis.</p>

<h3>Built on OAuth</h3>

<p><a href="http://fireeagle.yahoo.net/developer/documentation/app_auth_types">Yay!</a></p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/03/05/fire-eagle-interesting-choices/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySpace Developer Platform: Restful APIS</title>
		<link>http://laughingmeme.org/2008/02/06/myspace-developer-platform-restful-apis/</link>
		<comments>http://laughingmeme.org/2008/02/06/myspace-developer-platform-restful-apis/#comments</comments>
		<pubDate>Wed, 06 Feb 2008 18:04:18 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[myspace]]></category>
		<category><![CDATA[oauth]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2008/02/06/myspace-developer-platform-restful-apis/</guid>
		<description><![CDATA[&#8220;This digital signing mechanism is the standards-based OAuth specification.&#8221;]]></description>
			<content:encoded><![CDATA[<p>&#8220;This digital signing mechanism is the standards-based OAuth specification.&#8221;</p>
<p><a href='http://developer.myspace.com/community/RestfulAPIs/authentication.aspx'>http://developer.myspace.com/community/RestfulAPIs/authentication.aspx</a></p>]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2008/02/06/myspace-developer-platform-restful-apis/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to calculate a Base64 encoded HMAC-SHA1 in PHP for OAuth</title>
		<link>http://laughingmeme.org/2007/11/08/how-to-calculate-a-base64-encoded-hmac-sha1-in-php-for-oauth/</link>
		<comments>http://laughingmeme.org/2007/11/08/how-to-calculate-a-base64-encoded-hmac-sha1-in-php-for-oauth/#comments</comments>
		<pubDate>Thu, 08 Nov 2007 19:51:53 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[hashing]]></category>
		<category><![CDATA[hmac-sha1]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[security]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2007/11/08/how-to-calculate-a-base64-encoded-hmac-sha1-in-php-for-oauth/</guid>
		<description><![CDATA[HMAC-SHA1 is the suggested default signing algorithm for OAuth 1.0 Core. This is a code snippet showing how to calculate a valid OAuth HMAC-SHA1 signature using PHP4 without any PEAR dependencies.]]></description>
			<content:encoded><![CDATA[<p>HMAC-SHA1 is the suggested default signing algorithm for OAuth 1.0 Core.  This is a code snippet showing how to calculate a valid OAuth HMAC-SHA1 signature using PHP4 without any PEAR dependencies.</p>
<p><a href='http://laughingmeme.org/code/hmacsha1.php.txt'>http://laughingmeme.org/code/hmacsha1.php.txt</a></p>]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2007/11/08/how-to-calculate-a-base64-encoded-hmac-sha1-in-php-for-oauth/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>OAuth in PHP (for Twitter)</title>
		<link>http://laughingmeme.org/2007/10/16/oauth-in-php-for-twitter/</link>
		<comments>http://laughingmeme.org/2007/10/16/oauth-in-php-for-twitter/#comments</comments>
		<pubDate>Tue, 16 Oct 2007 07:15:10 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[programming]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2007/10/16/oauth-in-php-for-twitter/</guid>
		<description><![CDATA[Mike released HTTP_Request_OAuth today, so I spent a little while this evening coding up Service_Twitter as helper class for making OAuth authorized requests against the Twitter API. Both are early enough in the dev cycle to be called proof of concepts. Mostly I wrote it because I had always envisioned there being wrapper libraries around [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://mike.teczno.com/">Mike</a> released <a href="http://teczno.com/HTTP_Request_Oauth.phps"><code>HTTP_Request_OAuth</code></a> today, so I spent a little while this evening coding up <a href="http://laughingmeme.org/code/Service_Twitter.php.txt"><code>Service_Twitter</code></a> as helper class for making OAuth authorized requests against the Twitter API.</p>

<p>Both are early enough in the dev cycle to be called proof of concepts.</p>

<p>Mostly I wrote it because I had always envisioned there being wrapper libraries around the low level OAuth implementations that wrapped the calls, and constants, and as Mike graciously went out and wrote a low level library I felt compelled to write a wrapper.</p>

<p>Also <a href="http://laughingmeme.org/code/twittclient.php.txt">twittclient</a>, an interactive client for getting an authed access token, essential to bootstrapping development.</p>

<p>And nota bene, HRO currently only supports the MD5 signing algorithm, which is undefined in the core spec, and subject to change.  (Just in case you didn&#8217;t believe me about the early state of things.)</p>

<h3>update 2008/4/18</h3>

<p>This code no longer works because Twitter has taken down their (slightly non-compliant) OAuth endpoint.  When they add OAuth support back in, I&#8217;ll link to it.</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2007/10/16/oauth-in-php-for-twitter/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>OAuth 1.0 Draft 1</title>
		<link>http://laughingmeme.org/2007/09/21/oauth-10-draft-1/</link>
		<comments>http://laughingmeme.org/2007/09/21/oauth-10-draft-1/#comments</comments>
		<pubDate>Sat, 22 Sep 2007 00:59:57 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Aside]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[authentication]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[flickr]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[openid]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[sausage]]></category>
		<category><![CDATA[standards]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2007/09/21/oauth-10-draft-1/</guid>
		<description><![CDATA[Been an interesting evolution since the notes I scrawled down with Blaine in March.]]></description>
			<content:encoded><![CDATA[<p>Been an interesting evolution since <a href="http://laughingmeme.org/more/oauth-spec.txt">the notes I scrawled down</a> with Blaine in March.</p>
<p><a href='http://oauth.googlecode.com/svn/spec/trunk/oauth-1.0-draft.html'>http://oauth.googlecode.com/svn/spec/trunk/oauth-1.0-draft.html</a></p>]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2007/09/21/oauth-10-draft-1/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FOO: Crowdvine, iCalico, Pathable, a Study in Collusion</title>
		<link>http://laughingmeme.org/2007/07/11/foo-crowdvine-icalico-pathable-a-study-in-collusion/</link>
		<comments>http://laughingmeme.org/2007/07/11/foo-crowdvine-icalico-pathable-a-study-in-collusion/#comments</comments>
		<pubDate>Thu, 12 Jul 2007 05:10:36 +0000</pubDate>
		<dc:creator>Kellan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[calendaring]]></category>
		<category><![CDATA[casual privacy]]></category>
		<category><![CDATA[collaboration]]></category>
		<category><![CDATA[collusion]]></category>
		<category><![CDATA[conferences]]></category>
		<category><![CDATA[crowdvine]]></category>
		<category><![CDATA[foo]]></category>
		<category><![CDATA[icalico]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[tony stubblebine]]></category>
		<category><![CDATA[web services]]></category>
		<category><![CDATA[web2.0]]></category>

		<guid isPermaLink="false">http://laughingmeme.org/2007/07/11/foo-crowdvine-icalico-pathable-a-study-in-collusion/</guid>
		<description><![CDATA[I didn&#8217;t make it to FOO this year, but I did send software in my stead, and its nice to hear that folks liked it. We slaved iCalico to Crowdvine to add a social networking layer, a network that was walked, mapped, and color coded by the Pathable folks. Tony has a nice report back [...]]]></description>
			<content:encoded><![CDATA[<p>I didn&#8217;t make it to FOO this year, but I did send software in my stead, and its nice to hear that folks liked it.</p>

<p>We slaved <a href="http://www.google.com/search?q=icalico">iCalico</a> to <a href="http://crowdvine.com">Crowdvine</a> to add a social networking layer, a network that was walked, mapped, and color coded by the <a href="http://pathable.com/">Pathable</a> folks.</p>

<p>Tony has a nice <a href="http://www.stubbleblog.com/archives/2007/07/social_conferen.html">report back on it</a>, as does <a href="http://wagglelabs.com/2007/7/6/waggle-labs-at-foo-camp">Shelly from Pathable</a> (6 weeks aka a couple of late nights).  And Scott Berkun (who owes me a copy of &#8220;Art of Project Management&#8221;!) said <a href="http://www.scottberkun.com/blog/2007/more-social-software-crowdvine-pathable/">super nice things</a>.</p>

<h3>Collusion Patterns</h3>

<p>So how do you do that &#8212; stitch together 3 different sites to provide a unified experience?  Visions of APIs, Internet scale SSO, and messaging layers spring to mind.  Or more likely hash and slash patches, jury rigged shunts, juggled install directories.  </p>

<p>We did the dumb easy thing, and I&#8217;m surprised more people don&#8217;t do it.  </p>

<ol>
<li><p>Crowdvine.com sets a cookie <code>collusion</code>.  This cookie contains the data we needed to display the logged in view of iCalico. (you&#8217;re nickname and optional your URL).  In addition it contained a md5 hash of the concatted data, plus sekret known only to Tony and myself.  </p></li>
<li><p>If we find the cookie <code>collusion</code>, we load the described user from the database, or create it on the fly behind the scenes.</p></li>
<li><p>There is no step 3.</p></li>
</ol>

<p>Amazingly useful, trivially simple, ultimately flexible.  Niche sites are great, but you need techniques for stitching them together before they can realize their potential as pieces of an ecosystem.   I don&#8217;t necessarily <strong>expect</strong> to see this kind of integration become more common, but I think it would be great if it did. (and in the name of transparency disposable apps are <strong>huge</strong> enablers, disposable sites/apps is another pattern I&#8217;m puzzled we don&#8217;t see more of &#8212; its as if we more inclined to converse bits then landfill)</p>

<p><strong>update:</strong> Whoops, it was pointed out there was a step 3, or rather a step 1.5: use CNAMEs to point to individual components on sub-domains.</p>
]]></content:encoded>
			<wfw:commentRss>http://laughingmeme.org/2007/07/11/foo-crowdvine-icalico-pathable-a-study-in-collusion/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

