<?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; Alex King</title>
	<atom:link href="http://www.openparenthesis.org/tag/alex-king/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>Cross post Twitter to StatusNet with StatusNet Tools</title>
		<link>http://www.openparenthesis.org/2009/09/27/cross-post-twitter-to-statusnet-with-statusnet-tools</link>
		<comments>http://www.openparenthesis.org/2009/09/27/cross-post-twitter-to-statusnet-with-statusnet-tools#comments</comments>
		<pubDate>Sun, 27 Sep 2009 16:49:23 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Alex King]]></category>
		<category><![CDATA[cross post]]></category>
		<category><![CDATA[Identi.ca]]></category>
		<category><![CDATA[Identica]]></category>
		<category><![CDATA[Laconi.ca]]></category>
		<category><![CDATA[Laconica]]></category>
		<category><![CDATA[microblog]]></category>
		<category><![CDATA[Microblogging]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[status updates]]></category>
		<category><![CDATA[statusnet]]></category>
		<category><![CDATA[Twit.tv]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[twitter tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.openparenthesis.org/?p=1560</guid>
		<description><![CDATA[A few weeks back I created a little plugin that works with Alex King&#8216;s Twitter Tools, using an API it provides to also post your notices to a StatusNet instance (Identi.ca, Twit.tv, etc). You can find that plugin here: Twitter Tools StatusNet (and should be able to find it soon on wordpress.org). What I hadn&#8217;t [...]]]></description>
			<content:encoded><![CDATA[<p>A few weeks back I created a little plugin that works with <a href="http://www.alexking.org/">Alex King</a>&#8216;s <a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a>, using an API it provides to also post your notices to a StatusNet instance (Identi.ca, Twit.tv, etc). </p>
<p>You can find that plugin here: <a href="http://www.openparenthesis.org/code/statusnet">Twitter Tools StatusNet</a> (and should be able to find it soon on wordpress.org). </p>
<p>What I hadn&#8217;t realized at the time was just how Twitter Tools itself worked, and what that meant about the StatusNet plugin. </p>
<p>Twitter Tools follows all of your tweets, not just those which you enter via WordPress or generate as new blog post notifications. What this means is that using Twitter Tools in combination with the StatusNet plugin, everything you post on Twitter gets also posted to the StatusNet instance you&#8217;ve configured. </p>
<p>Everything you post on Twitter, regardless of it&#8217;s source: desktop client, SMS, web client, etc. </p>
<p>This means you&#8217;ve got to be careful. If you use Identi.ca, for example, and have your Identi.ca account configured to cross post to Twitter (which is a popular option) you&#8217;ll create a loop. You post to Identi.ca, which cross posts to Twitter, where Twitter Tools finds it and (with my plugin in place) cross posts to Identi.ca, which cross posts to Twitter, and so on (repeat until someone tells you your account has gone crazy). </p>
<p>So, you&#8217;ve got to decide which service (Twitter or StatusNet) you intend to actually post to, and which you want automatically fed cross posts. </p>
<ul>
<li><strong>Post to Twitter, auto-cross-post to StatusNet. </strong>This is what I&#8217;ve decided to do. I post to twitter, through all the usual methods, and I let Twitter Tools cross post my tweets to Identi.ca. I have different friends/followers on each, and this way the conversation gets shared. </li>
<li><strong>Post to StatusNet, auto-cross-post to Twitter.</strong> This you can do with existing StatusNet instances, and if you do, be sure NOT to install the StatusNet plugin for Twitter Tools. </li>
</ul>
<p>Hope some of you find the option useful. </p>
]]></content:encoded>
			<wfw:commentRss>http://www.openparenthesis.org/2009/09/27/cross-post-twitter-to-statusnet-with-statusnet-tools/feed</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>New WordPress plugin: Twitter Tools &#8211; StatusNet</title>
		<link>http://www.openparenthesis.org/2009/09/10/new-wordpress-plugin-twitter-tools-statusnet</link>
		<comments>http://www.openparenthesis.org/2009/09/10/new-wordpress-plugin-twitter-tools-statusnet#comments</comments>
		<pubDate>Thu, 10 Sep 2009 17:27:25 +0000</pubDate>
		<dc:creator>John</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Alex King]]></category>
		<category><![CDATA[Identica]]></category>
		<category><![CDATA[Laconica]]></category>
		<category><![CDATA[Open Source]]></category>
		<category><![CDATA[Plugin]]></category>
		<category><![CDATA[status net]]></category>
		<category><![CDATA[statusnet]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[twitter tools]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://www.openparenthesis.org/?p=1514</guid>
		<description><![CDATA[When Alex King&#8217;s Twitter Tools plugin was in its 1.x days, I published some directions on how to change the API endpoints to point to Identi.ca. Now that Twitter Tools is at 2.x, Alex has provided an API for enabling additional posting. So I wrote a plugin for his plugin: Twitter Tools &#8211; StatusNet. It [...]]]></description>
			<content:encoded><![CDATA[<p>When Alex King&#8217;s <a href="http://wordpress.org/extend/plugins/twitter-tools/">Twitter Tools</a> plugin was in its 1.x days, I <a href="http://www.openparenthesis.org/2009/01/25/identica-tools">published</a> some <a href="http://www.openparenthesis.org/2009/02/23/identica-tools-2">directions</a> on how to change the API endpoints to point to Identi.ca. </p>
<p>Now that Twitter Tools is at 2.x, Alex has provided an API for enabling additional posting. </p>
<p>So I wrote a plugin for his plugin: <a href="http://www.openparenthesis.org/code/statusnet">Twitter Tools &#8211; StatusNet</a>. </p>
<p>It leverages the API he provided to post your tweets (on new blog post creation or via the sidebar form) to a <a href="http://status.net/">StatusNet</a> instance (default is <a href="http://identi.ca/">Identi.ca</a> but it can be easily changed to another). (In case you missed <a href="http://status.net/2009/08/28/laconica-is-now-statusnet/">the announcement</a>, the software formerly known as Laconica, which powers Identi.ca but also other sites, is now known as <a href="http://status.net/">StatusNet</a>). </p>
<p>Given that many StatusNet instances also already cross-post to Twitter, my plugin enables you to suppress the actual posting to Twitter that Twitter Tools does. (You can have notices posted to both Twitter and your StatusNet instance, or just your StatusNet instance without Twitter). </p>
<p>What it doesn&#8217;t do is provide all the functionality Twitter Tools provides &#8211; digests of your notices, a sidebar widget containing latest notices. If you cross-post to twitter you can use all that functionality from Twitter Tools natively. </p>
<p>If you&#8217;d like to replace Twitter throughout Twitter Tools with your favorite StatusNet instance, you can hack away at Alex&#8217;s plugin directly &#8211; the same basic concepts I <a href="http://wordpress.org/extend/plugins/twitter-tools/">outlined</a> <a href=""http://www.openparenthesis.org/2009/02/23/identica-tools-2">before</a> would still apply.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.openparenthesis.org/2009/09/10/new-wordpress-plugin-twitter-tools-statusnet/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<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>

