<?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>newthink.net &#187; API</title>
	<atom:link href="http://www.newthink.net/tag/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.newthink.net</link>
	<description>Less Talk. More Do.</description>
	<lastBuildDate>Tue, 26 Jan 2010 18:28:51 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>The API is the Application</title>
		<link>http://www.newthink.net/2008/10/20/the-api-is-the-application/</link>
		<comments>http://www.newthink.net/2008/10/20/the-api-is-the-application/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 13:09:32 +0000</pubDate>
		<dc:creator>Ash Christopher</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Architecture]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://www.newthink.net/?p=90</guid>
		<description><![CDATA[&#8220;web servers can be clustered such that the architecture can be horizontally scaled with money. You can fix scaling issues by throwing hardware at it.&#8220;

The API, or Application Programming Interface, in simple terms, is a set of libraries which can be called which provide linked or shared functionality. In the past, this API was available [...]]]></description>
			<content:encoded><![CDATA[<h2 style="padding-left: 30px;"><em><strong>&#8220;web servers can be clustered such that the architecture can be horizontally scaled with money. You can fix scaling issues by throwing hardware at it.</strong><strong>&#8220;</strong></em></h2>
<p style="padding-left: 30px;">
<p>The API, or Application Programming Interface, in simple terms, is a set of libraries which can be called which provide linked or shared functionality. In the past, this API was available as binaries or source code which would be compiled into, or released with (in the form of shared libraries) your program.</p>
<p>With the increased popularity of specialized web software, the original idea of the API has evolved (and some argue bastardized). The original, mainstream, bloated and cumbersome SOAP and XMLRPC web API technologies are out in favor of the new hotness &#8211; RESTful API&#8217;s.</p>
<h2><strong><span style="text-decoration: underline;">RESTful API</span></strong></h2>
<p>REST, or <em>Representational state transfer</em>, is the style of software architecture which the word wide web was based on. Like all world wide web traffic, RESTful API&#8217;s are inherently stateless. They receive a request via a GET or POST, process it, then return a response. The next request is not affected by the previous, nor will future requests be affected by the requests processed in the past.</p>
<p>The great thing about the REST architecture is that it&#8217;s horizontally scalable. Assuming an infinite pipe, the web servers can be clustered such that the architecture can be horizontally scaled with money. You can fix scaling issues by throwing hardware at it.</p>
<div id="attachment_122" class="wp-caption aligncenter" style="width: 296px"><img class="size-medium wp-image-122" title="Clustered Web Servers." src="http://www.newthink.net/wp-content/uploads/2008/10/diag1-286x300.jpg" alt="Servers can be added to the cluster and scaled horizontally due to the RESTful nature of the HTTP protocol." width="286" height="300" /><p class="wp-caption-text">Servers can be added to the cluster and scaled horizontally due to the RESTful nature of the HTTP protocol.</p></div>
<h2><strong><span style="text-decoration: underline;">RESTful API as the Application</span></strong></h2>
<p>Although websites are still the main way users interact with internet-based applications, many web applications don&#8217;t rely on a web browser at all! An emerging trend is to allow users the ability to access remote resources via an API which provides data for any number of applications &#8211; web based or not. Twitter for example, is increasingly accessed via third-party applications such as <a title="twhirl link" href="http://www.twhirl.org/">Twhirl</a> using their RESTful interface.</p>
<p>With the new popularity of web applications that don&#8217;t use browsers, I propose changing how these web applications are created. Instead of developing websites followed by the API, or even the API in tandem, why not create the API as the application in and of itself, then write the web application using the RESTful API? Lets think of the website as been just another application making use of remote resources.</p>
<p>By taking advantage of the nature of RESTful API&#8217;s we should in theory be able to create a system that scales horizontally. The added bonus is you won&#8217;t waste your time creating a website which may not be used by the end users in the future. Mobile and location based applications by their very nature will be using website access less and less.</p>
<p>Another advantage is that you maintain a clear separation of resources throughout your application. It forces developers to decouple the business layer from the display layer. Its very nature stops logic code from creeping into the display (as is the case with numerous PHP web applications).</p>
<p>It also provides many options and avenues when dealing with application management in startups and established businesses. By separating the display in this way, it makes it much easier to farm out display work to third party companies which can focus 100% on that task, decreasing your time to market.</p>
<p>At the recent DevHouseWaterloo meet-up, I proposed this plan to a group of software professionals and tech-savvy students, and they seemed to think this was an excellent way to create new internet based applications. I have been taking this approach with my latest project, and so far I am quite pleased. The biggest advantage I have found is that I can focus on the application. I know I am not a very good website designer nor do I pretend to be. I am much more interested in writing the core software and farming out the work to someone who can give the user interface the care it deserves.</p>
<p>What are the rest of the communities thoughts on this approach to software development? Do you have examples of other companies that take this approach? Are there any reasons not to pursue this development plan?</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newthink.net/2008/10/20/the-api-is-the-application/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>PostRank Python API</title>
		<link>http://www.newthink.net/2008/07/14/postrank-python-api/</link>
		<comments>http://www.newthink.net/2008/07/14/postrank-python-api/#comments</comments>
		<pubDate>Mon, 14 Jul 2008 15:22:00 +0000</pubDate>
		<dc:creator>Ash Christopher</dc:creator>
				<category><![CDATA[Software Development]]></category>
		<category><![CDATA[AideRSS]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[PostRank]]></category>
		<category><![CDATA[Python]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://newthink.net/blog/2008/07/14/postrank-python-api/</guid>
		<description><![CDATA[What is PostRank?
PostRank is a scoring system developed by AideRSS to rank any kind of online content, such as RSS feed items, blog posts, articles, or news stories. PostRank is based on social engagement, which refers to how interesting or relevant people have found an item or category to be.
Public-facing RESTful API&#8217;s are becoming more [...]]]></description>
			<content:encoded><![CDATA[<h3>What is PostRank?</h3>
<blockquote><p>PostRank is a scoring system developed by AideRSS to rank any kind of online content, such as RSS feed items, blog posts, articles, or news stories. PostRank is based on social engagement, which refers to how interesting or relevant people have found an item or category to be.</p></blockquote>
<p>Public-facing <a href="http://en.wikipedia.org/wiki/RESTful">RESTful</a> API&#8217;s are becoming more popular as a way to allow access to services by third-parties. <a href="http://www.aiderss.com">AideRSS</a> recently decoupled their PostRank service and offered it as a stand-alone service allowing any developer to use <a href="http://www.postrank.com">PostRank</a> within their application. I am in the process of updating this website/blog and I am planning to make use of the PostRank service not only as a tool to measure my engagement with the public, but increase the usefulness of my posts.</p>
<h3>What is PostRank Python API and what does it do?</h3>
<p>This is an api accessor for python that allows a developer to quickly access all of the services offered by PostRank. It is loosely modeled after <a href="http://mike.verdone.ca/twitter/">Mike Verdone&#8217;s Python Twitter Tools</a> in that it is simple to use, and it uses the same arguments as those documented on the <a href="http://postrank.com/developers.html">PostRank API</a> page.</p>
<h3>What are the requirements?</h3>
<ul>
<li>Python 2.5 <em>(haven&#8217;t tested with &lt;2.4)</em></li>
<li>simplejson python library <em>(if using json output)</em></li>
</ul>
<h3>How do I use it?</h3>
<p>Using the PostRank Python API is very easy. The first step should be to look at the API documentation provided by the PostRank website.</p>
<p><img src="http://newthink.net/wp-content/uploads/2008/07/feed_id_api_doc1.png" alt="feed_id API Doc" /></p>
<p>We can see what options the api needs in order to satisfy the request. We just need to specify the resource that we want to use, then we can add all the arguments we want passed along to PostRank.</p>
<p><img src="http://newthink.net/wp-content/uploads/2008/07/feed_id_usage_example.png" alt="feed_id usage example." /></p>
<p>If you have selected JSON as your format, the api will return to you a simplejson object which can be accessed just like a multi-dimensional array. When using JSON, it is extremely simple to get at the information provided by PostRank.</p>
<p><img src="http://newthink.net/wp-content/uploads/2008/07/using_json_object.png" alt="Using the json object." /></p>
<p>There is a bit of a trick when using the &#8216;<a href="http://postrank.com/api/postrank.html">postrank</a>&#8216; resource but it certainly isn&#8217;t difficult to use.  It works the exact same way &#8211; the PostRank API says it wants an array of urls (url[]) so we will pass in an array of urls as an argument (same thing for the feed_id[]).</p>
<p><img src="http://newthink.net/wp-content/uploads/2008/07/post_rank_api_doc.png" alt="post_rank API Doc" /></p>
<p>Following the same pattern as before, we just pass in the resource we want to use and the API arguments.</p>
<p><img src="http://newthink.net/wp-content/uploads/2008/07/postrank_usage_example.png" alt="postrank usage example." /></p>
<p>There really isn&#8217;t much more to it.  For now, you can find the python library here: <a href="http://newthink.net/~ash/software/postrankapi/">http://newthink.net/~ash/software/postrankapi/</a> When my new website is done, I plan to find a more permanent place for this (and future software).  Next step, creating an egg and integrating with ez_install.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.newthink.net/2008/07/14/postrank-python-api/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
	</channel>
</rss>
