<?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>Simone Carletti&#039;s Blog &#187; api</title>
	<atom:link href="http://www.simonecarletti.com/blog/tags/api/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.simonecarletti.com/blog</link>
	<description>Simone Carletti&#039;s personal ramblings on programming, syndication, search engines &#38; marketing.</description>
	<lastBuildDate>Thu, 12 Jan 2012 09:16:49 +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>WWW::Delicious 0.3.0</title>
		<link>http://www.simonecarletti.com/blog/2009/02/www-delicious-030/</link>
		<comments>http://www.simonecarletti.com/blog/2009/02/www-delicious-030/#comments</comments>
		<pubDate>Tue, 10 Feb 2009 20:47:09 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[delicious]]></category>
		<category><![CDATA[gem]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby1.9]]></category>
		<category><![CDATA[www-delicious]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/?p=159</guid>
		<description><![CDATA[WWW::Delicious 0.3.0 has been released! The GEM is now 100% compatible with Ruby 1.9 and the installation no longer fails when installing it with a RubyGems version different than 1.2.]]></description>
			<content:encoded><![CDATA[<p><code>WWW::Delicious 0.3.0</code> has been released!</p>
<p><strong><code>WWW::Delicious</code> is a del.icio.us API client implemented in Ruby</strong>. It provides access to all available del.icio.us API queries and returns the original XML response as a friendly Ruby object.</p>
<p>The GEM is now <strong>100% compatible with Ruby 1.9</strong> and the installation no longer fails when installing it with a RubyGems version different than 1.2. <code>WWW::Delicious</code> has also been <strong>promoted to beta status</strong>.</p>
<p>For further details and documentation please visit <a href="http://code.simonecarletti.com/www-delicious">the project page</a>. The repository is <a href="http://github.com/weppos/www-delicious/">available for cloning on GitHub</a>. Feel free to fork it and submit your contributions.<span id="more-159"></span></p>
<h2>Changes</h2>
<ul>
<li>FIXED: Compatibility fixes for Ruby 1.9. <code>WWW::Delicious</code> is now 100% compatible with 1.9. You should remember to define the proper content encoding with magic comments when working with UTF-8/MultiByte XML or Ruby files, see <a href="http://redmine.ruby-lang.org/wiki/ruby-19/ScriptEncoding" target="_new">http://redmine.ruby-lang.org/wiki/ruby-19/ScriptEncoding</a> (closes #142).</li>
<li>FIXED: Forced Rakefile to require Echoe &gt;= 3.1 to prevent outdated .gemspec files (closes #143).</li>
<li>CHANGED: Don&#8217;t use <code>File.dirname(__FILE__)</code> in require statement to prevent recursive inclusions.</li>
</ul>
<h2>Example Usage</h2>
<div class="codecolorer-container text default brush: ruby;" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">require 'www/delicious'<br />
<br />
d = WWW::Delicious.new('username', 'password')<br />
d.posts_recent.each do |post|<br />
&nbsp; puts post.title<br />
end<br />
<br />
# =&gt; Tips on How to Get Indexed Faster by Google, Yahoo, &amp; Live Search<br />
# =&gt; ...<br />
# =&gt; git ready » tagging</div></td></tr></tbody></table></div>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2009/02/apache-log-regex-a-lightweight-ruby-apache-log-parser/' rel='bookmark' title='Apache Log Regex: a lightweight Ruby Apache log parser'>Apache Log Regex: a lightweight Ruby Apache log parser</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/02/capistrano-uploads-folder/' rel='bookmark' title='Capistrano: Managing an uploads folder'>Capistrano: Managing an uploads folder</a></li>
<li><a href='http://www.simonecarletti.com/blog/2009/08/ruby-has-a-new-whois-library/' rel='bookmark' title='Ruby has a new WHOIS library'>Ruby has a new WHOIS library</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2009/02/www-delicious-030/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Technorati: probably the worst and less reliable API service I have ever developed with!</title>
		<link>http://www.simonecarletti.com/blog/2007/11/technorati-api/</link>
		<comments>http://www.simonecarletti.com/blog/2007/11/technorati-api/#comments</comments>
		<pubDate>Wed, 14 Nov 2007 20:55:22 +0000</pubDate>
		<dc:creator>Simone Carletti</dc:creator>
				<category><![CDATA[Programming]]></category>
		<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[technorati]]></category>

		<guid isPermaLink="false">http://www.simonecarletti.com/blog/2007/11/technorati-probably-the-worst-and-less-reliable-api-service-i-have-ever-developed-with/</guid>
		<description><![CDATA[Technorati probably provides the most unreliable API interface I have ever worked with.]]></description>
			<content:encoded><![CDATA[<div class="flash-message warning">
<p><strong>December 30th, 2008</strong>. This post was published long time ago on the Italian version of my blog then moved here after the English blog has been opened. Please note that the following post can contain outdated information and (probably) multiple typos.</p>
</div>
<p>I have to admit I&#8217;m really frustrated with Technorati, in particular with its <a title="Technorati API: Documentation" href="http://technorati.com/developers/api/">API</a>s.<br />
It&#8217;s probably the worst API service I have ever developed with: let me explain why.</p>
<p>I&#8217;m not really a newbie in the web service field. I love XML stuff including feeds and APIs. I&#8217;ve developed many products and classes which interact with public web services via XML-RPC, SOAP o ReST based interfaces.</p>
<p>Technorati API are essentially unreliable.</p>
<p>An API interface cannot take more than 10 seconds to return a response. If my website needs to send a query to Technorati, my visitor can&#8217;t wait 15 seconds for a response!<br />
Ok, there are many other ways I can improve my website, for instance with AJAX calls, but this is not the real problem!</p>
<p>I don&#8217;t know where I could start to tell you how much I&#8217;m frustrated with Technorati API.<br />
Ok, let&#8217;s try to start from yesterday experience!</p>
<p><span id="more-64"></span></p>
<p>I&#8217;m developing <a title="Zend_Service_Technorati - Simone Carletti - Zend Framework Proposals - Zend Framework Wiki" href="http://framework.zend.com/wiki/display/ZFPROP/Zend_Service_Technorati+-+Simone+Carletti">Zend_Service_Technorati</a> library, part of the <a title="Zend Framework" href="http://framework.zend.com/">Zend framework</a> package.</p>
<p>I&#8217;m really proud of it, Zend framework is the best library package for PHP I have ever used, thus I want my class to be reliable, powerful and easy to use.</p>
<p>After the proposal has been approved, I started to collect test cases to drive development.</p>
<p>This is what I had to handle with:</p>
<p><strong>Cosmos claim option is out of office, try again later</strong></p>
<p>From <a title="Technorati API: Cosmos" href="http://technorati.com/developers/api/cosmos.html">cosmos documentation</a>:</p>
<blockquote><p>claim: The default setting of 0 returns no user information about each weblog included in the result set when available.</p>
<p>Set this parameter to 1 to include Technorati member data in the result set when a weblog in your result set has been successfully claimed by a member of Technorati.</p></blockquote>
<p>Unfortunately, for somewhat reason Technorati decided this option doesn&#8217;t work when type is weblog.<br />
Don&#8217;t ask me why, that&#8217;s the way it goes!</p>
<p>Before committing test cases, I decided to give an other chance to <em>claim</em> option. It wasn&#8217;t the first time Technorati fails to return a response. For some-other reasons, it worked thus I had to create two test case for the same configuration.</p>
<p>Then I tried for the third time and the option didn&#8217;t worked again.</p>
<p><strong>Technorati doesn&#8217;t seem to know Google</strong></p>
<p>A few minutes ago I decided to go ahead with development and create <a title="Technorati API: Search" href="http://technorati.com/developers/api/search.html">search</a> test cases.<br />
I composed API URL in my browser and requested a <em>search</em> result for google keyword.</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&lt;result&gt;<br />
&lt;query&gt;google&lt;/query&gt;<br />
&lt;querycount&gt;0&lt;/querycount&gt;<br />
&lt;rankingstart&gt;&lt;/rankingstart&gt;<br />
&lt;/result&gt;</div></td></tr></tbody></table></div>
<p>Gulp!</p>
<p>This answer shocked me&#8230; Technorati doesn&#8217;t have any post about Google?!?</p>
<p>I tried again but unfortunately, each keyword returned 0 results.</p>
<p>Ok, search interface is buggy, let me try with <a title="Technorati API: Tag" href="http://technorati.com/developers/api/tag.html">tag API</a>.</p>
<p>None, I&#8217;m sorry dear developer, I don&#8217;t have any post tagged as google.</p>
<p><em>Probably Technorati doesn&#8217;t love Google</em>, I supposes, thus I tried with other common words.</p>
<p>No, this was not the problem. <strong>web</strong> tag didn&#8217;t worked as well!</p>
<p><strong>Contact us&#8230; if you can</strong></p>
<p>First, let me say I tried to contact Technorati 3 times via support interface in the last 9 months for these problems, but I never received any answer!</p>
<p>I hope this post will have enough visibility to be taken in consideration by someone from Technorati Office.</p>
<p>Because I don&#8217;t want to criticize, I decided it was the time to try to contact Technorati for the 4th time.</p>
<p>I haven&#8217;t been really lucky with default contact us interface, thus I decided to try <a title="Technorati: Support" href="http://support.technorati.com/">support</a> website.</p>
<p><em>Let me login before. May be they give me more attention if I provide them my identity</em>, I thought.</p>
<p>This is what happened when I tried to login (more than 6 times).</p>
<p><img class="aligncenter size-medium wp-image-1123" title="login-response" src="http://www.simonecarletti.com/blog/wp-content/uploads/2007/11/login-response-500x367.png" alt="" width="500" height="367" /></p>
<p>No no, this is not a screenshot error. This is what Technorati returned me: a blank page! Definitely, this is not my lucky day&#8230;</p>
<p>Really frustrated I decided to come back and try again API interface. I composed a simple search for google again: it worked! <em>Cool, now let me try <em>msn</em>: it works! </em><em>Great, I can work now</em>, I thought.</p>
<p>Thus I decided to start with an error test case, as usual. I composed the following URI: <code>http://api.technorati.com/search?key=MY_API_KEY</code>. It should generate a &#8220;missing query argument&#8221; error. This is what the request returned.</p>
<p><img class="aligncenter size-medium wp-image-1124" title="error-response" src="http://www.simonecarletti.com/blog/wp-content/uploads/2007/11/error-response-500x368.png" alt="" width="500" height="368" /></p>
<p>I opened source code. Advanced Search page in HTML format was returned instead of a <a title="Technorati API: Error response" href="http://technorati.com/developers/api/error.html">simple XML error</a>: have a look at <a href="http://www.simonecarletti.com/blog/wp-content/uploads/2007/11/source.txt">source.txt</a>.</p>
<p>No, I can&#8217;t work in this way. <em>Textmate &gt; New &gt; Blog file</em>, let me write a few lines.</p>
<p>I hope, soon or later, someone from Technorati will read this and answer my call. I&#8217;ll be more than happy to work with them to debug and fix this slow, unreliable and painful API web service.</p>
<p>Related posts<ol>
<li><a href='http://www.simonecarletti.com/blog/2010/09/introducing-public-suffix-service-0-5-0/' rel='bookmark' title='Introducing Public Suffix Service 0.5.0'>Introducing Public Suffix Service 0.5.0</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://www.simonecarletti.com/blog/2007/11/technorati-api/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>

