<?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/"
	xmlns:media="http://search.yahoo.com/mrss/">

<channel>
	<title>Open Parenthesis &#187; Evan Prodromou</title>
	<atom:link href="http://www.openparenthesis.org/tag/evan-prodromou/feed" rel="self" type="application/rss+xml" />
	<link>http://www.openparenthesis.org</link>
	<description>Because these are the early days of a long revolution . . .</description>
	<lastBuildDate>Mon, 30 Jan 2012 16:13:12 +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>Identi.ca Tools</title>
		<link>http://www.openparenthesis.org/2009/01/25/identica-tools</link>
		<comments>http://www.openparenthesis.org/2009/01/25/identica-tools#comments</comments>
		<pubDate>Sun, 25 Jan 2009 19:01:14 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Alex King]]></category>
		<category><![CDATA[Evan Prodromou]]></category>
		<category><![CDATA[Free Software]]></category>
		<category><![CDATA[Identica]]></category>
		<category><![CDATA[Laconica]]></category>
		<category><![CDATA[microblog]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.openparenthesis.org/?p=963</guid>
		<description><![CDATA[Alex King&#8216;s Twitter Tools is a great little WordPress plugin for integrating your Twitter presence with your blog. It can show your latest tweets in a sidebar widget, create a &#8220;digest&#8221; post daily / weekly with a list of your tweets, and announce your blog posts to your twitter account. In this post I&#8217;ll show [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://twitter.com/"><img src="http://www.openparenthesis.org/wp-content/uploads/2009/01/twitter_logo_s.png" alt="twitter_logo_s" title="twitter_logo_s" width="175" height="41" class="alignleft size-full wp-image-967" border="0" /></a>  </p>
<p><a href="http://alexking.org/projects/wordpress">Alex King</a>&#8216;s <a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a> is a great little WordPress plugin for integrating your Twitter presence with your blog. It can show your latest tweets in a sidebar widget, create a &#8220;digest&#8221; post daily / weekly with a list of your tweets, and announce your blog posts to your twitter account. </p>
<p><a href="http://identi.ca/"><img src="http://www.openparenthesis.org/wp-content/uploads/2009/01/logo.png" alt="identi.ca" title="identi.ca" width="132" height="100" class="alignright size-full wp-image-968" border="0" /></a></p>
<p>In this post I&#8217;ll show you what changes are necessary to make it work with <a href="http://identi.ca/">identi.ca</a> instead of Twitter. </p>
<p>Why would you want to do that?</p>
<p>Identi.ca is often described as &#8220;an open source twitter&#8221; which it is, but it&#8217;s also the first instance of the <a href="http://openmicroblogging.org/">Open Microblogging</a> standard, which I believe will become increasingly important. Where Twitter users all share the same service, and are entirely dependent on Twitter for their ability to reach other, Identi.ca enables subscriptions across services, removing the need for a single point of failure. </p>
<div id="attachment_970" class="wp-caption aligncenter" style="width: 275px"><a href="http://www.flickr.com/photos/jrees/3040621103/"><img src="http://www.openparenthesis.org/wp-content/uploads/2009/01/twitter_fail.jpg" alt="Twitter Fail Whale, screenshot by John Rees" title="twitter_fail" width="240" height="168" class="size-full wp-image-970" /></a><p class="wp-caption-text">Twitter Fail Whale, screenshot by John Rees</p></div>
<p>In other words, Twitter is a bit like the early days of email, when Compuserve users couldn&#8217;t email AOL users, and neither set of users could email the Internet. (I quality that with &#8220;a bit&#8221; since the Twitter API certainly makes possible clients which can do more than just post to Twitter). Identi.ca (or <a href="http://laconi.ca/trac/">laconi.ca</a>, as the software project behind identi.ca is called) is more like modern, decentralized, global-address-space email. </p>
<p>When identi.ca first launched, many folks were left stuck between the two alternatives: use identi.ca, which was more open and federated, or stay on Twitter, where a strong, rapidly developing community already existed (and, frankly, where many of the folks you were already talking to and listening to were unlikely to be persuaded to move <em>en masse</em>). </p>
<p><div id="attachment_971" class="wp-caption aligncenter" style="width: 275px"><a href="http://www.flickr.com/photos/zcopley/2852739134/"><img src="http://www.openparenthesis.org/wp-content/uploads/2009/01/evan.jpg" alt="Evan Prodromou of Laconi.ca (photo by Zach Copley)" title="evan" width="240" height="180" class="size-full wp-image-971" /></a><p class="wp-caption-text">Evan Prodromou of Laconi.ca (photo by Zach Copley)</p></div><br />
Now, however, identi.ca can be set to automatically cross-post to Twitter. Still doesn&#8217;t remove the need to &#8220;watch&#8221; two streams, but at least you only need to post one place. (Services like ping.fm are often used in this way as well, to move posts between Twitter, identi.ca, Jaiku, etc). </p>
<p>This ability means that for me, a version of Twitter Tools which would post to identi.ca (and let identi.ca cross-post to Twitter) was preferrable. Luckily, identi.ca has also implemented <a href="http://laconi.ca/trac/wiki/TwitterCompatibleAPI">an API</a> which responds to the same commands in the same way as the Twitter API. </p>
<p>This means that the changes needed are very simple. </p>
<p>In version 1.5.1a of Twitter Tools, lines 67-72 define the API endpoints to be used:</p>
<blockquote><p><code><br />
define('AKTT_API_POST_STATUS', 'http://twitter.com/statuses/update.json');<br />
define('AKTT_API_USER_TIMELINE', 'http://twitter.com/statuses/user_timeline.json');<br />
define('AKTT_API_STATUS_SHOW', 'http://twitter.com/statuses/show/###ID###.json');<br />
define('AKTT_PROFILE_URL', 'http://twitter.com/###USERNAME###');<br />
define('AKTT_STATUS_URL', 'http://twitter.com/###USERNAME###/statuses/###STATUS###');<br />
define('AKTT_HASHTAG_URL', 'http://search.twitter.com/search?q=###HASHTAG###');<br />
</code></p></blockquote>
<p>The key is to change these to map to the corresponding identi.ca API endpoints:</p>
<blockquote><p><code><br />
define('AKTT_API_POST_STATUS', 'http://identi.ca/api/statuses/update.json');<br />
define('AKTT_API_USER_TIMELINE', 'http://identi.ca/api/statuses/user_timeline.json');<br />
define('AKTT_API_STATUS_SHOW', 'http://identi.ca/api/statuses/show/###ID###.json');<br />
define('AKTT_PROFILE_URL', 'http://identi.ca/###USERNAME###');<br />
define('AKTT_STATUS_URL', 'http://identi.ca/notice/###STATUS###');<br />
define('AKTT_HASHTAG_URL', 'http://identi.ca/###HASHTAG###');<br />
</code></p></blockquote>
<p>For the most part, this just means replacing &#8216;twitter.com&#8217; with &#8216;identi.ca/api&#8217; except that the individual post urls and hashtag url have to be handled differently. </p>
<p>If you&#8217;re planning to use the sidebar widget, which includes a link to hashtags when you use them in a notice. , you&#8217;ll also need to find this line:</p>
<blockquote><p><code>	$hashtag = urlencode('#' . $hashtag);</code></p></blockquote>
<p>And change it to:</p>
<blockquote><p><code>	$hashtag = urlencode($hashtag);</code></p></blockquote>
<p>Finally, I also chose to update the &#8220;give credit&#8221; line, which occurs in two places in the code (not to remove credit for Twitter Tools but to point out the changes):</p>
<p>First, at roughly line 403 (this one is used in the blog post digest of tweets):</p>
<blockquote><p><code>$content .= '&lt;p class="aktt_credit"&gt;Powered by &lt;a href="http://alexking.org/projects/wordpress"&gt;Twitter Tools&lt;/a&gt;.&lt;/p&gt;';</code></p></blockquote>
<p>I changed that to:</p>
<blockquote><p><code>$content .= '&lt;p class="aktt_credit"&gt;Powered by &lt;a href="http://www.openparenthesis.org/2009/01/25/identica-tools"&gt;Identi.ca Tools&lt;/a&gt;, a modified version of &lt;a href="http://alexking.org/projects/wordpress"&gt;Twitter Tools&lt;/a&gt;.&lt;/p&gt;';</code></p></blockquote>
<p>And again later at line 768 (this is the one used in the sidebar widget):</p>
<blockquote><p><code>$output .= '&lt;p class="aktt_credit"&gt;Powered by &lt;a href="http://alexking.org/projects/wordpress"&gt;Twitter Tools&lt;/a&gt;.&lt;/p&gt;';</code></p></blockquote>
<p>Which I changed to:</p>
<blockquote><p><code>$output .= '&lt;p class="aktt_credit"&gt;Powered by &lt;a href="http://www.openparenthesis.org/2009/01/25/identica-tools"&gt;Identi.ca Tools&lt;/a&gt;, a modified version of &lt;a href="http://alexking.org/projects/wordpress"&gt;Twitter Tools&lt;/a&gt;.&lt;/p&gt;';</code></p></blockquote>
<p>This same approach could also be leveraged for other laconi.ca based sites with little effort. </p>
<p>Remember that these changes will get overwritten if you upgrade to newer versions of the Twitter Tools plugin. </p>
<p>(Here&#8217;s <a href="http://www.openparenthesis.org/wp-content/uploads/2009/01/twitter-tools.txt">my modified copy of twitter-tools.php</a> &#8211; just change the extension back to .php)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.openparenthesis.org/2009/01/25/identica-tools/feed</wfw:commentRss>
		<slash:comments>12</slash:comments>
	<enclosure url="http://www.openparenthesis.org/wp-content/uploads/2009/01/twitter_logo_s.png" length="5530" type="image/png" /><media:content url="http://www.openparenthesis.org/wp-content/uploads/2009/01/twitter_logo_s.png" width="175" height="41" medium="image" type="image/png" />	</item>
	</channel>
</rss>

