<?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>RAAK &#124; Digital &#38; Social Media Agency London &#187; api development</title>
	<atom:link href="http://wewillraakyou.com/tag/api-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://wewillraakyou.com</link>
	<description>Putting you in touch with your crowds</description>
	<lastBuildDate>Tue, 31 Jan 2012 14:32:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>What is an API?</title>
		<link>http://wewillraakyou.com/2011/07/what-is-an-api/</link>
		<comments>http://wewillraakyou.com/2011/07/what-is-an-api/#comments</comments>
		<pubDate>Fri, 22 Jul 2011 09:41:30 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[api development]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google plus]]></category>
		<category><![CDATA[goole+]]></category>
		<category><![CDATA[social media]]></category>
		<category><![CDATA[tech insight]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://wewillraakyou.com/?p=4835</guid>
		<description><![CDATA[You know what an API is, right? I mean, it's easy - Twitter has one, Facebook has one, Google+ will soon have one. It's this thing - you shake it a bit, and data comes pouring out. Right? Wrong.]]></description>
			<content:encoded><![CDATA[<p>You know what an API is, right? I mean, it&#8217;s easy &#8211; Twitter has one, Facebook has one, Google+ will soon have one. And you shake it a bit, and data comes pouring out. Right?</p>
<p><img src="http://wewillraakyou.com/wp-content/uploads/2011/07/what_is_an_api.jpg" alt="What is an API?" title="What is an API?" width="360" height="232" class="alignnone size-full wp-image-4841" /></p>
<p>Everyone who <em>thinks</em> they know what an API is, normally thinks of a very specific type of API, namely a <a href="http://en.wikipedia.org/wiki/Representational_State_Transfer">RESTful web API</a>.</p>
<p>This usage of the word API has become mainstream with the rise of <a href="http://en.wikipedia.org/wiki/Mashup_(web_application_hybrid)">web mashup</a> culture. In the software development industry, however, the term has existed for about as long as programming languages, with a much wider definition.</p>
<p>If you understand what the real meaning of the word API is, it becomes much easier to understand the underlying details of web API&#8217;s.</p>
<h2 class="subTitle">Application Programming Interface</h2>
<p><strong>API</strong>, as you may have guessed from the subtitle above, is short for <a href="http://en.wikipedia.org/wiki/Application_programming_interface">Application Programming Interface</a>.</p>
<p>In software development, the term <a href="http://en.wikipedia.org/wiki/Interface_(computing)">Interface</a> refers to a set of <strong>rules and conventions</strong> that has to be followed by two pieces of software that wants to <strong>communicate with each other</strong>. In other words, any piece of utility software that is meant to be incorporated in other pieces of software, implements an interface. This interface is then documented in (<a href="http://linux.die.net/man/7/socket">almost</a>) <strong>human language</strong>, to tell software developers how to write software that can communicate with it.</p>
<p><em>And this is literally what software development is all about.</em></p>
<p>Every piece of software can be broken down a huge number times into smaller pieces of software, which can each be broken down into smaller pieces of software, etc. All these pieces communicate with each other and access each other&#8217;s hidden functionality by asking the right questions in exactly the right format &#8211; ie through Interfaces.</p>
<h2 class="subTitle">Web API</h2>
<p>Mostly, software speaking to each other reside on the same computer. Often they are even packaged into the same piece of software.</p>
<p>At some point, though, someone realised that computers should be able to phone each other, like humans do, and <strong>networking</strong> was born.</p>
<p>And, of course, the need for Interfaces to be usable across networks, and the Internet, making it possible for pieces of software residing on different computers to speak to each other. Nice, eh?</p>
<h2 class="subTitle">REST API</h2>
<p>Now, at first, these web API&#8217;s utilised various data protocols to speak to each other, of which <a href="http://en.wikipedia.org/wiki/XML-RPC">XML-RPC</a> and <a href="http://en.wikipedia.org/wiki/SOAP">SOAP</a> were probably the most widely used. These protocols always depended on quite a few suites of utility software to be installed on each side of the network connection, to facilitate the communication.</p>
<p>However, at some point some genius came up with the following idea: <em>Why don&#8217;t pieces of software just publish their output as web pages, accessible by URL, like normal web pages?</em> Bloody Brilliant!</p>
<p>And this, in simple terms, is what we call a <strong>RESTful API</strong>. An API that is accessed in <strong>exactly the same way</strong> web pages are.</p>
<h2 class="subTitle">Not all API&#8217;s can be RESTful</h2>
<p>RESTful data representation is static. In other words, you ask for a piece of data, and you get sent a page with the data on it. The data will not change on the page while you&#8217;re looking at it. This means the data you can get through REST API&#8217;s always dates from before the API call was made.</p>
<p>This is perfectly fine for most API needs.</p>
<p>However, Twitter has an entire class of API&#8217;s which do not lend themselves to this kind of representation. They are the <a href="https://dev.twitter.com/docs/streaming-api">Streaming API&#8217;s</a>.</p>
<p>The streaming API&#8217;s are future directed.</p>
<p>It is like opening a pipe to Twitter, through which, from now onwards, you will receive every Tweet you are supposed to receive as they arrive at Twitter, in real time. The data you get through these API&#8217;s always dates after you have made the API call.</p>
<p>Ok &#8211; that&#8217;s enough. That&#8217;s more than enough to keep you thinking for one week, and covers all of the social network API&#8217;s out there anyway.</p>
<p>Next week, we&#8217;ll <a href="http://wewillraakyou.com/2011/07/what-is-oauth/">have a look at OAuth</a>. Or, if you really feel strong, <a href="http://tools.ietf.org/html/rfc5849">go read the OAuth RFC</a>!</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2011/07/what-is-an-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Foursquare&#8217;s new &#8220;venues on steroids&#8221;</title>
		<link>http://wewillraakyou.com/2011/03/foursquare-new-venue-api-beta/</link>
		<comments>http://wewillraakyou.com/2011/03/foursquare-new-venue-api-beta/#comments</comments>
		<pubDate>Thu, 17 Mar 2011 18:44:35 +0000</pubDate>
		<dc:creator>Adriaan Pelzer</dc:creator>
				<category><![CDATA[Blog]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[api development]]></category>
		<category><![CDATA[foursquare]]></category>
		<category><![CDATA[geolocation]]></category>
		<category><![CDATA[location]]></category>
		<category><![CDATA[social network]]></category>
		<category><![CDATA[tech insight]]></category>
		<category><![CDATA[web development]]></category>

		<guid isPermaLink="false">http://www.wewillraakyou.com/?p=4125</guid>
		<description><![CDATA[In a very inspiring announcement, Foursquare unveiled their brand new client, containing an impressive list of new functionality. As it turns out, a lot more than that was happening in the engine room.]]></description>
			<content:encoded><![CDATA[<p>In a very inspiring <a href="http://blog.foursquare.com/2011/03/08/foursquare-3/">announcement</a> that reads like a <em>rags to riches</em> classic, <strong>Foursquare</strong> got on the <strong>SxSW</strong> train this year with a brand new client, containing an impressive list of functionality that has the potential to boost it from mere <strong>Social Game</strong> status to the <a href="http://www.youtube.com/watch?v=S80hf4kp25c#t=9m10s">Serendipity Platform</a> that everyone&#8217;s waiting for.</p>
<p>This is what happened in their shop window. As it turns out, a lot more was happening <a href="http://developer.foursquare.com/venues/">in the engine room</a>.</p>
<p><img src="http://www.wewillraakyou.com/wp-content/uploads/2011/03/foursquare_venues_api.jpg" alt="Foursquare venues API" title="Foursquare venues API" width="360" height="232" class="alignnone size-full wp-image-4126" /></p>
<h2 class="subTitle">Foursquare BC</h2>
<p>Before launching their new <a href="http://developer.foursquare.com/venues/">venues API</a> (beta), finding something useful to do with Foursquare&#8217;s data was notoriously difficult.</p>
<p>Let&#8217;s take, for example, the problem of finding only venues with lots of checkins, in real time. <em>This proved to be a major problem for us while building <a href="http://woos.at">WOOS.at</a> (mobile only)</em></p>
<p>These are the limitations:</p>
<ul>
<li>Foursquare&#8217;s normal API calls are <a href="http://developer.foursquare.com/docs/overview.html">rate limited</a> to 500 calls an hour.</li>
<li>Because of the low barrier to creating venues, the checkin-to-venue ratio is ridiculously low.</li>
<li>A maximum of 50 venues can be queried from Foursquare per venue search on the API.</li>
<li>There is no control over which venues are returned. If a venue is not in the 50 returned by a venue search, there&#8217;s no definite way of getting it.</li>
<li>The search radius for venue searches on the API is 40km.</li>
</ul>
<p>Given these limitations, it is possible to process 50 venues, 500 times an hour. This sounds like a lot, but 25000 venues an hour is not that much when you&#8217;re trying to discover trending venues in real time. Especially if you&#8217;re firing shots in the dark, and hoping for the best (hitting the same empty venues over and over).</p>
<p>In steps the new venues API.</p>
<h2 class="subTitle">Foursquare AD</h2>
<p>At face level, it doesn&#8217;t look like much, until you give it a second look, and read the fine print:</p>
<ul>
<li>The new API is meant for <em>userless access</em>. This means it is built for bot usage, as opposed to front end usage. Ideal for determining venue trends in real time.</li>
<li>The new API is rate limited at &#8230; <em>5000 calls an hour!</em></li>
<li>There is a new API call, <a href="http://developer.foursquare.com/docs/venues/trending.html"><em>venues/trending</em></a>, which automatically returns only the trending venues within a configurable radius (up to 2km)</li>
</ul>
<p>Suddenly, even 500 calls an hour would&#8217;ve been enough.</p>
<h2 class="subTitle">Foursquare Beyond</h2>
<p>Foursquare has a very vast location database. They have achieved this by making it extremely easy to create venues, and by being the first to do so. That is a very valuable resource, if dealt with correctly.</p>
<p>Up to now, Foursquare&#8217;s venues database was kind of proprietary, in the sense that its usability did not allow it to easily get a life of its own outside of Foursquare itself. <em>It was mainly used for checkins</em>.</p>
<p>By making their venue database accessible and usable, Foursquare have increased the value of the database by an immense amount. Add to this their <a href="http://mashable.com/2011/03/14/foursquare-venue-project/">actual reason</a> for launching the new venues API: <strong>Mapping</strong> Foursquares venue data to <strong>other venue databases</strong>, like Facebook, Twitter and Google places.</p>
<p>Suddenly the future looks a lot brighter for Foursquare (and its API consumers)!</p>
]]></content:encoded>
			<wfw:commentRss>http://wewillraakyou.com/2011/03/foursquare-new-venue-api-beta/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

