<?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>[rcbth]</title>
	<atom:link href="http://rcbth.com/feed" rel="self" type="application/rss+xml" />
	<link>http://rcbth.com</link>
	<description>from Eric Buth</description>
	<lastBuildDate>Sat, 17 Jul 2010 02:17:05 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Simple WordPress Posting from Ruby via XMLRPC</title>
		<link>http://rcbth.com/p/wordpress-posting-from-ruby-xmlrpc</link>
		<comments>http://rcbth.com/p/wordpress-posting-from-ruby-xmlrpc#comments</comments>
		<pubDate>Sat, 17 Jul 2010 02:17:05 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[XMLRPC]]></category>
		<category><![CDATA[XMLRPC::Client]]></category>

		<guid isPermaLink="false">http://rcbth.com/?p=147</guid>
		<description><![CDATA[WordPress supports a few different XMLRPC APIs, all of which have different methods and key titles for specifying content. For a project I&#8217;m working on I was looking for the simplest Ruby code to get a post up with a &#8230; <a href="http://rcbth.com/p/wordpress-posting-from-ruby-xmlrpc">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>WordPress supports <a href="http://codex.wordpress.org/XML-RPC_Support">a few different XMLRPC APIs</a>, all of which have different methods and key titles for specifying content. For a project I&#8217;m working on I was looking for the simplest Ruby code to get a post up with a title, content, tags, <em>and</em> categories.
</p>
<p>
The code bellow is a mashup of the available options that seems to work just fine.
</p>
<pre>require 'xmlrpc/client'

# build a post

post = {
  'title'       => 'Post Title',
  'description' => 'The content of the post',
  'mt_keywords' => ['a', 'list', 'of', 'tags'],
  'categories'  => ['a', 'list', 'of', 'categories']
}

# initialize the connection

connection = XMLRPC::Client.new('yourdomain.com', '/xmlrpc.php')

# make the call to publish a new post

connection.call(
  'metaWeblog.newPost',
  1,
  'wp_username',
  'wp_password',
  post,
  true
)</pre>
<p>I was a little surprised by how not straight forward this was, but, like I said, this end result works.</p>
]]></content:encoded>
			<wfw:commentRss>http://rcbth.com/p/wordpress-posting-from-ruby-xmlrpc/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deploying with Capistrano and Git Submodules</title>
		<link>http://rcbth.com/p/capistrano-git-submodules</link>
		<comments>http://rcbth.com/p/capistrano-git-submodules#comments</comments>
		<pubDate>Thu, 08 Jul 2010 19:17:10 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Capistrano]]></category>
		<category><![CDATA[Git]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[submodules]]></category>

		<guid isPermaLink="false">http://rcbth.com/?p=175</guid>
		<description><![CDATA[If your using Capistrano to deploy code from a Git repository with submodules in it, you&#8217;ve likely run into empty directories where your sub-repositories should have been cloned. The reason is that Capistrano does not excute the Git clone command &#8230; <a href="http://rcbth.com/p/capistrano-git-submodules">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If your using <a href="http://www.capify.org/index.php/Capistrano">Capistrano</a> to deploy code from a <a href="http://git-scm.com/">Git</a> repository with <a href="http://book.git-scm.com/5_submodules.html">submodules</a> in it, you&#8217;ve likely run into empty directories where your sub-repositories should have been cloned. The reason is that Capistrano does not excute <a href="http://www.kernel.org/pub/software/scm/git/docs/git-clone.html">the Git clone command with the recursive option</a> by default. You can change that with one line of code in your configuration file:</p>
<pre>set :git_enable_submodules, true</pre>
<p>Found that by searching through the <a href="http://github.com/capistrano/capistrano/blob/master/CHANGELOG">Capistrano change log</a>. There&#8217;s probably some better documentation somewhere, but that worked.</p>
]]></content:encoded>
			<wfw:commentRss>http://rcbth.com/p/capistrano-git-submodules/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Getting an OAuth Token for your Twitter Bot</title>
		<link>http://rcbth.com/p/getting-an-oauth-token-for-your-twitter-bot</link>
		<comments>http://rcbth.com/p/getting-an-oauth-token-for-your-twitter-bot#comments</comments>
		<pubDate>Mon, 28 Jun 2010 13:38:50 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[bots]]></category>
		<category><![CDATA[CLI]]></category>
		<category><![CDATA[grackle]]></category>
		<category><![CDATA[OAuth]]></category>
		<category><![CDATA[Ruby]]></category>
		<category><![CDATA[security]]></category>
		<category><![CDATA[Twitter]]></category>
		<category><![CDATA[twitter_oauth]]></category>

		<guid isPermaLink="false">http://rcbth.com/?p=150</guid>
		<description><![CDATA[If you run a Twitter bot that uses a non-OAuth login pathway, you are going to be out of luck this coming August. With a web application that needs to publish or read from Twitter, OAuth is a good idea anyway &#8230; <a href="http://rcbth.com/p/getting-an-oauth-token-for-your-twitter-bot">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>If you run a Twitter bot that uses a non-OAuth login pathway, <a title="moving the OAuth switch over date to august 16, 2010" href="http://groups.google.com/group/twitter-api-announce/browse_thread/thread/dfb89d9f29f339a2#">you are going to be out of luck this coming August</a>. With a web application that needs to publish or read from Twitter, <a title="OAuth" href="http://en.wikipedia.org/wiki/OAuth">OAuth</a> is a good idea anyway because it keeps un-encrypted passwords out of your database and gives access control to the user on the service provider&#8217;s end. The burden of security in this scenario is mostly on Twitter, which is good for everyone.</p>
<p>The hangup, if you aren&#8217;t running a web application, is that the process involves several redirects with form data to exchange your application&#8217;s identifying information, prompt the Twitter user to allow access, and receive and store the resulting token. With no web application to handle such requests, a <a title="Command-line interface" href="http://en.wikipedia.org/wiki/Command-line_interface">CLI</a> bot needs an alternative (though one-time) method of obtaining a valid token.</p>
<p>After looking around for a while, I found <a title="Subject: [twitter-dev] oauth authentication and Ruby (without rails) - msg#01093" href="http://osdir.com/ml/twitter-development-talk@googlegroups.com/2010-03/msg01093.html">this Ruby script</a> (cleaned up below) which uses the <a title="moomerman / twitter_oauth" href="http://github.com/moomerman/twitter_oauth">twitter_oauth gem</a> to walk you through the process.</p>
<pre>require 'twitter_oauth'

client = TwitterOAuth::Client.new(
  :consumer_key     =&gt; 'TWITTER_CONSUMER_KEY',
  :consumer_secret  =&gt; 'TWITTER_CONSUMER_SECRET'
)
request_token = client.request_token

puts "#{request_token.authorize_url}\n"
puts "Hit enter when you have completed authorization."
pin = STDIN.readline.chomp

access_token = client.authorize(
  request_token.token,
  request_token.secret,
  :oauth_verifier =&gt; pin
)

puts access_token.inspect</pre>
<p>When running the script, navigate to the URL it prints out and follow the on-screen instructions to obtain a PIN. Then return to the script, paste in the PIN, and press enter. The resulting variable dump will contain both a valid token and token secret that can be used in conjuction with your consumer information to connect to Twitter.</p>
<p>For example, you could now use <a title="hayesdavis / grackle" href="http://github.com/hayesdavis/grackle">grackle</a> to make Twitter API calls:</p>
<pre>require 'grackle'

TWITTER_AUTH = {
  :type             =&gt; :oauth,
  :consumer_key     =&gt; 'TWITTER_CONSUMER_KEY',
  :consumer_secret  =&gt; 'TWITTER_CONSUMER_SECRET',
  :token            =&gt; 'TOKEN',
  :token_secret     =&gt; 'TOKEN_SECRET'
}

client = Grackle::Client.new(:auth=&gt;TWITTER_AUTH)</pre>
<p>… and you&#8217;re set.</p>
]]></content:encoded>
			<wfw:commentRss>http://rcbth.com/p/getting-an-oauth-token-for-your-twitter-bot/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>WordCamp Boston (and that Ignite talk)</title>
		<link>http://rcbth.com/p/wordcamp-boston-ignite</link>
		<comments>http://rcbth.com/p/wordcamp-boston-ignite#comments</comments>
		<pubDate>Wed, 27 Jan 2010 02:56:00 +0000</pubDate>
		<dc:creator>Eric</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Boston]]></category>
		<category><![CDATA[David Weinberger]]></category>
		<category><![CDATA[Doc Searls]]></category>
		<category><![CDATA[Ignite]]></category>
		<category><![CDATA[inner-platform effect]]></category>
		<category><![CDATA[Mitcho]]></category>
		<category><![CDATA[The Cluetrain Manifesto]]></category>
		<category><![CDATA[WordCamp]]></category>
		<category><![CDATA[WordPress]]></category>

		<guid isPermaLink="false">http://rcbth.com/?p=38</guid>
		<description><![CDATA[Patrick and I are back from Boston. I was fighting off a virus, and I have to thank him for putting up with me being slightly miserable a good amount of the time. Danielle Morrill posted the videos of all &#8230; <a href="http://rcbth.com/p/wordcamp-boston-ignite">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Patrick and I are back from Boston. I was fighting off a <a title="Norovirus" href="http://www.buzzfeed.com/buzz/Norovirus">virus</a>, and I have to thank him for putting up with me being slightly miserable a good amount of the time. Danielle Morrill <a title="Video: Watch the Ignite Wordcamp Boston Talks" href="http://wordcampboston.com/2010/01/25/video-watch-the-ignite-wordcamp-boston-talks/" target="_self">posted</a> the videos of all the <a title="Ignite WordCamp" href="http://wordcampboston.com/program/ignite/" target="_self">Ignite</a> talks today, including mine which I&#8217;ve embedded bellow.</p>
<p><object width="640" height="385"><param name="movie" value="http://www.youtube.com/v/JGkETzLH7WI&#038;fs=1"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/JGkETzLH7WI&#038;fs=1" type="application/x-shockwave-flash" width="640" height="385" allowscriptaccess="always" allowfullscreen="true"></embed></object></p>
<p>The basic thrust of the talk was the <a title="Inner-platform effect" href="http://en.wikipedia.org/wiki/Inner-platform_effect" target="_self">inner-platform effect</a> and why it matters for WordPress developers. Really, I think it&#8217;s one of the biggest problems for anyone involved in making and/or using web applications these days. This was a way to get the point out there quickly, but hopefully I can follow up with some writing on the topic sometime soon. (Famous last words, I know.)</p>
<p><a title="WordCamp Boston" href="http://wordcampboston.com" target="_self">This WordCamp</a> seemed to be a lot more focused on the small business aspects of the WordPress community than <a title="WordCamp NYC" href="http://2009.newyork.wordcamp.org/" target="_self">the one we attended in New York</a>, but we did get to see some great (if brief) dev talks on the WordPress API, HTML5, etc. and one very reassuring panel on using WordPress in academics. I also had a great time listening to <a title="Doc Searls" href="http://en.wikipedia.org/wiki/Doc_Searls" target="_self">Doc Searls</a> and <a title="David Weinberger" href="http://en.wikipedia.org/wiki/David_Weinberger" target="_self">David Weinberger</a> talk about <a title="The Cluetrain Manifesto" href="http://en.wikipedia.org/wiki/Cluetrain_Manifesto" target="_self">The Cluetrain Manifesto</a> among many other topics. They&#8217;re the kind of people I could listen to for hours.</p>
<p>At some point they were asked about net neutrality and gave an answer I hadn&#8217;t really heard before: no one really knows how to define net neutrality, but the problem could be solved by forcing content and application providers to stay out of the broadband business. I suppose that&#8217;s an internet-as-utility argument, but it&#8217;s not something that seems very present in the political debate.</p>
<p>Anyway, thanks to all the organizers and especially <a title="Mitcho" href="http://mitcho.com/" target="_self">Mitcho</a> for putting together the Ignite event.</p>
]]></content:encoded>
			<wfw:commentRss>http://rcbth.com/p/wordcamp-boston-ignite/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
