<?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>Lead Thinking &#187; Socialmod</title>
	<atom:link href="http://leadthinking.com/category/socialmod/feed" rel="self" type="application/rss+xml" />
	<link>http://leadthinking.com</link>
	<description>The Business of Software Development</description>
	<lastBuildDate>Fri, 28 May 2010 14:50:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>MissTweets</title>
		<link>http://leadthinking.com/273-misstweets</link>
		<comments>http://leadthinking.com/273-misstweets#comments</comments>
		<pubDate>Fri, 28 May 2010 14:50:33 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=273</guid>
		<description><![CDATA[MissTweets is a Twitter app I made for the Techcrunch Disrupt conference.
The app uses various algorithms to calculate your friend&#8217;s most interesting tweets, providing a daily Atom feed with the top 50. The idea is that you potentially miss out on a lot of interesting Tweets during the day &#8211; there&#8217;s just too many tweets [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://misstweets.com">MissTweets</a> is a Twitter app I made for the Techcrunch Disrupt conference.</p>
<p>The app uses various algorithms to calculate your friend&#8217;s most interesting tweets, providing a daily Atom feed with the top 50. The idea is that you potentially miss out on a lot of interesting Tweets during the day &#8211; there&#8217;s just too many tweets to read. MissTweets solves this by showing you your friend&#8217;s top tweets once a day. </p>
<p><a href="http://misstweets.com"><img src="http://leadthinking.com/wp-content/uploads/2010/05/Screen-shot-2010-05-27-at-14.31.00.png" alt="MissTweets" title="MissTweets" width="635" height="421" class="alignnone size-full wp-image-274" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/273-misstweets/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>FlareVideo</title>
		<link>http://leadthinking.com/269-flarevideo</link>
		<comments>http://leadthinking.com/269-flarevideo#comments</comments>
		<pubDate>Thu, 27 May 2010 18:18:18 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=269</guid>
		<description><![CDATA[FlareVideo is a project I was hacking on last week &#8211; it&#8217;s a HTML5 video player with a Flash fallback. You can customize all the controls using CSS and it&#8217;s completely free and open source.
Check out the site.

]]></description>
			<content:encoded><![CDATA[<p>FlareVideo is a project I was hacking on last week &#8211; it&#8217;s a HTML5 video player with a Flash fallback. You can customize all the controls using CSS and it&#8217;s completely free and open source.</p>
<p>Check out the <a href="http://flarevideo.com">site</a>.</p>
<p><a href="http://flarevideo.com"><img src="http://leadthinking.com/wp-content/uploads/2010/05/Screen-shot-2010-05-27-at-14.15.08.png" alt="Flare Video" title="Flare Video" width="615" height="320" class="alignnone size-full wp-image-270" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/269-flarevideo/feed</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>YMockup &#8211; UI Mockups in CSS and HTML</title>
		<link>http://leadthinking.com/262-ymockup-ui-mockups-in-css-and-html</link>
		<comments>http://leadthinking.com/262-ymockup-ui-mockups-in-css-and-html#comments</comments>
		<pubDate>Fri, 26 Mar 2010 15:12:23 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=262</guid>
		<description><![CDATA[Yesterday I was looking for way to create UI mockups, but nothing I found was quite what I wanted. I needed a way of quickly creating mockups that looked realistic, and could be reused in the actual implementation of the design.
CSS has advanced so far recently, that I believe it can go some way to [...]]]></description>
			<content:encoded><![CDATA[<p>Yesterday I was looking for way to create UI mockups, but nothing I found was quite what I wanted. I needed a way of quickly creating mockups that looked realistic, and could be reused in the actual implementation of the design.</p>
<p>CSS has advanced so far recently, that I believe it can go some way to replacing Photoshop in the design process. With that in mind, I present <a href="http://github.com/maccman/ymockup">YMockup</a> &#8211; UI mockups using HTML and CSS.</p>
<p>With YMockup, you can code up a general theme for your site &#8211; and then drag/edit/resize elements to your hearts content! It&#8217;s really flexible, and you can create any kind of element that your site needs.</p>
<p>The best part of it, is that you can reuse all the CSS and HTML in your actual site &#8211; no need to cut up the designs in Photoshop.</p>
<p><strong>Try out the demo <a href="http://eribium.org/ymockup/">here</a></strong> (only supports WebKit based browsers, such as Chrome or Safari).</p>
<p>YMockup Features:</p>
<ul>
<li>Customisable for any HTML/CSS</li>
<li>Edit elements in place</li>
<li>Drag and drop</li>
<li>Snap to grid dragging</li>
<li>z-index control</li>
<li>Move elements with the arrow keys (hold ctrl)</li>
</ul>
<p>If you want to use your own themes/elements, clone the <a href="http://github.com/maccman/ymockup">repository</a> and follow the README &#8211; it&#8217;s designed to be used locally, so you can edit the HTML and CSS in your preferred editor.</p>
<p>As you can see, I&#8217;ve include the <a href="http://github.com/maccman/aristo">aristo</a> theme &#8211; since I&#8217;m primarily using this to build <a href="http://github.com/maccman/bowline">Bowline</a> applications.</p>
<p>Of course this won&#8217;t be everybody&#8217;s cup of tea, and does require a good knowledge of HTML/CSS. However, I believe it&#8217;s perfect for design minded hackers, like myself.</p>
<p><a href="http://eribium.org/ymockup/"><img class="alignnone size-full wp-image-263" title="Screen shot 2010-03-26 at 11.37.12" src="http://leadthinking.com/wp-content/uploads/2010/03/Screen-shot-2010-03-26-at-11.37.12.png" alt="Screen shot 2010-03-26 at 11.37.12" width="1030" height="445" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/262-ymockup-ui-mockups-in-css-and-html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Bowline updates and more!</title>
		<link>http://leadthinking.com/246-bowline-updates-and-more</link>
		<comments>http://leadthinking.com/246-bowline-updates-and-more#comments</comments>
		<pubDate>Tue, 23 Mar 2010 16:03:39 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=246</guid>
		<description><![CDATA[A lot of work has been going into Bowline recently. Here are the latest features:

New desktop app framework using wxWidgets, WebKit and Ruby 1.9.
Improved and faster binding API
New API for asynchronous Ruby/JS callbacks
Bundler support
Background updating
Loads of fixes and optimizations

There&#8217;s also a new JavaScript framework for Bowline which will be released soon. It&#8217;s designed to be [...]]]></description>
			<content:encoded><![CDATA[<p>A lot of work has been going into Bowline recently. Here are the latest features:</p>
<ul>
<li>New <a href="http://github.com/maccman/bowline-desktop">desktop app framework</a> using wxWidgets, WebKit and Ruby 1.9.</li>
<li>Improved and faster binding API</li>
<li>New API for asynchronous Ruby/JS callbacks</li>
<li>Bundler support</li>
<li><a href="http://github.com/maccman/bowline-update">Background updating</a></li>
<li>Loads of fixes and optimizations</li>
</ul>
<p>There&#8217;s also a new JavaScript framework for Bowline which will be released soon. It&#8217;s designed to be fairly de-coupled from Bowline &#8211; so you can use it for web applications. The idea is that you can share a lot of code between your desktop apps and your web applications.</p>
<p>Additionally I&#8217;ve been working on a project for in-memory models called <a href="http://github.com/maccman/supermodel">SuperModel</a>.<br />
SuperModel works particularly well inside Bowline apps. Here are the main features:</p>
<ul>
<li>Serialisation</li>
<li>Validations</li>
<li>Callbacks</li>
<li>Observers</li>
<li>Dirty (Changes)</li>
<li>Ruby Marshaling to disk</li>
<li>Redis support</li>
</ul>
<p>I&#8217;ve also <a href="http://github.com/maccman/bowline-js">re-written SuperModel in JavaScript</a> &#8211; it&#8217;ll be integral to the next Bowline release.</p>
<p><a href="http://github.com/maccman/syncro">Syncro</a> is another recent project &#8211; it&#8217;s like <a href="http://juggernaut.rubyforge.org">Juggernaut</a> on steroids! Syncro let&#8217;s you easily synchronise Ruby classes and state between remote clients. It&#8217;s also has some fancy features like offline support. You can now make Bowline apps, that function fully offline, and then can synchronize up to your servers (and any other clients) when they come back online.</p>
<p>All that work has made <a href="http://www.taskforceapp.com">Taskforce</a> possible. Taskforce is a collaborative work manager. Think of it as a cross between <a href="http://culturedcode.com/things/">Things.app</a> and <a href="http://wave.google.com">Google Wave</a>. Here&#8217;s a recent screenshot of Taskforce working on top of Bowline on OSX.</p>
<p>If you&#8217;re interested, <a href="http://www.taskforceapp.com">sign up</a>.<br />
<a href="http://www.taskforceapp.com"><img src="http://leadthinking.com/wp-content/uploads/2010/03/Screen-shot-2010-03-22-at-18.43.06-542x276.png" alt="Taskforce" title="Taskforce" width="542" height="276" class="alignnone size-medium wp-image-247" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/246-bowline-updates-and-more/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Sending or receiving email with Rails? Easy</title>
		<link>http://leadthinking.com/233-sending-or-receiving-emails-with-rails</link>
		<comments>http://leadthinking.com/233-sending-or-receiving-emails-with-rails#comments</comments>
		<pubDate>Mon, 22 Mar 2010 20:46:05 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=233</guid>
		<description><![CDATA[Sending emails from Rails can be a pain, receiving them even more so. You have to set up queues, pollers, smtp servers etc &#8211; it&#8217;s a hassle. 
There is another way though. Remail is a project I&#8217;ve just released that brings REST to email. 
Remail proxies emails through Google App Engine:

To send an email &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>Sending emails from Rails can be a pain, receiving them even more so. You have to set up queues, pollers, smtp servers etc &#8211; it&#8217;s a hassle. </p>
<p>There is another way though. <a href="http://github.com/maccman/remail">Remail</a> is a project I&#8217;ve just released that brings REST to email. </p>
<p>Remail proxies emails through Google App Engine:</p>
<ul>
<li>To send an email &#8211; just send a POST request to your Remail Google App Engine.</li>
<li>To receive an email &#8211; Remail will send a POST request to a callback URL.</li>
</ul>
<p>It&#8217;s that simple. App Engine gives you 2000 free emails a day, and if you need more &#8211; the prices are very reasonable.<br />
It&#8217;s worth mentioning, that at the moment, Remail only works with Rails 3.</p>
<h2>Step 1 &#8211; App Engine</h2>
<p>So, firstly <a href="http://appengine.google.com/">create</a> a App Engine project:</p>
<p><img src="http://leadthinking.com/wp-content/uploads/2010/03/Screen-shot-2010-03-22-at-19.55.53.png" alt="App Engine" title="App Engine" width="395" height="240" class="alignnone size-full wp-image-236" /></p>
<p>Next, install the <a href="http://code.google.com/appengine/downloads.html#Google_App_Engine_SDK_for_Python">Python developer SDK</a>.</p>
<p>Clone the remail-engine git repository:</p>
<pre class="brush: bash">
git clone git://github.com/maccman/remail-engine.git
</pre>
<p>Configure the remail-engine application.yaml file, by adding the name of your App Engine project (the yaml key is called application).<br />
Then, you&#8217;ll need to configure the settings.yaml file. Specify the public url of your site as outbound_url, and a random string as api_key (you can generate one using uuidgen).</p>
<p>Add the remail-engine to the App Engine SDK and deploy.</p>
<p><img src="http://leadthinking.com/wp-content/uploads/2010/03/Screen-shot-2010-03-22-at-20.00.05.png" alt="Screen shot 2010-03-22 at 20.00.05" title="Screen shot 2010-03-22 at 20.00.05" width="597" height="189" class="alignnone size-full wp-image-238" /></p>
<h2>Step 2 &#8211; ActionMailer</h2>
<p>Install the remail gem:</p>
<pre class="brush: bash">
sudo gem install remail
</pre>
<p>Add add it to your Gemfile:</p>
<pre class="brush: ruby">
gem &quot;remail&quot;
</pre>
<p>Now configure Remail, either in application.rb, or in the environment files:</p>
<pre class="brush: ruby">
  config.action_mailer.delivery_method = :remail
  config.action_mailer.remail_settings = {
    :app_id  =&gt; &quot;remit-yourappname&quot;,
    :api_key =&gt; &quot;changeme&quot;
  }
</pre>
<p>Right, so now we can send email. How about receiving them? We need to specify a callback controller like this:</p>
<pre class="brush: ruby">
class EmailsController &lt; ApplicationController
  skip_before_filter :verify_authenticity_token

  def create
    if request.headers[&quot;Authorization&quot;] != &quot;yourapikey&quot;
      return head(:unauthorized)
    end
    UserMailer.receive(params[:email][:raw])
    head :ok
  end
end
</pre>
<p>Remail will send a POST request to that controller when it receives any emails.<br />
If your Rails app isn&#8217;t available &#8211; Remail will try again and again &#8211; backing off as time goes by.</p>
<p>Right, so those are the two steps to using Remail in your application. You can now generate mailers as usual &#8211; everything should just work.</p>
<p>There&#8217;s a <a href="http://railscasts.com/episodes/206-action-mailer-in-rails-3">good Railscast</a> on using ActionMailer with Rails 3, and a <a href="http://guides.rails.info/action_mailer_basics.html">good Rails Guide</a> on the subject.</p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/233-sending-or-receiving-emails-with-rails/feed</wfw:commentRss>
		<slash:comments>29</slash:comments>
		</item>
		<item>
		<title>Socialmod moderates Audi&#8217;s new site</title>
		<link>http://leadthinking.com/151-socialmod-moderates-audis-new-site</link>
		<comments>http://leadthinking.com/151-socialmod-moderates-audis-new-site#comments</comments>
		<pubDate>Mon, 06 Jul 2009 09:40:29 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=151</guid>
		<description><![CDATA[
Audi have launched a new site for the Goodwood Festival of Speed.
Along with photos and videos, Audi are interacting with their community by embedding a moderated Twitter feed into their site.
Any tweet with the hash tag #audifos is put on a Socialmod queue and, once moderated, is displayed on Audi&#8217;s site.

]]></description>
			<content:encoded><![CDATA[<p><img class="alignright size-full wp-image-159" title="Audi" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-7.png" alt="Audi" width="151" height="85" /></p>
<p>Audi have launched a new site for the Goodwood Festival of Speed.</p>
<p>Along with photos and videos, Audi are interacting with their community by embedding a moderated Twitter feed into their site.</p>
<p>Any tweet with the hash tag #audifos is put on a <a href="http://socialmod.com">Socialmod</a> queue and, once moderated, is displayed on Audi&#8217;s site.</p>
<p><a href="http://live.audi.co.uk/"><img class="alignnone size-medium wp-image-160" title="Audi at Goodwood" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-9-542x280.png" alt="Audi at Goodwood" width="542" height="280" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/151-socialmod-moderates-audis-new-site/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Socialmod moderates BET.com Awards</title>
		<link>http://leadthinking.com/139-socialmod-moderates-bet-com-awards</link>
		<comments>http://leadthinking.com/139-socialmod-moderates-bet-com-awards#comments</comments>
		<pubDate>Fri, 03 Jul 2009 14:27:24 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=139</guid>
		<description><![CDATA[
Last weekend was the BET Awards which over 5.8 million people tuned into.
BET ran a coordinated website to the awards, which they updated throughout the ceremony. They also had a &#8216;Wall of Tweets&#8216;, showing all the Twitter commentary mentioning their awards, and tweets from selected artists and celebrities.
Socialmod did the moderation for all the &#8216;tweets&#8217;, [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-154 alignright" title="bet logo" src="http://leadthinking.com/wp-content/uploads/2009/07/Picture-6.png" alt="bet logo" width="211" height="98" /></p>
<p>Last weekend was the <a href="http://www.bet.com/Specials/betawards09/">BET Awards</a> which over 5.8 million people tuned into.</p>
<p><a href="http://bet.com">BET</a> ran a coordinated website to the awards, which they updated throughout the ceremony. They also had a &#8216;<a href="http://www.bet.com/Specials/betawards09/betawards09_getinvolved/betawards09_getinvolved_walloftweets.htm">Wall of Tweets</a>&#8216;, showing all the Twitter commentary mentioning their awards, and tweets from selected artists and celebrities.</p>
<p><a href="http://socialmod.com">Socialmod</a> did the moderation for all the &#8216;tweets&#8217;, preventing any libelous or objectionable content appearing on their website.</p>
<p>At one stage the top 9 trending topics on Twitter all referred to the BET Awards, so we had many thousands of tweets to process. Their moderators were working throughout the awards to try and get people&#8217;s tweets displayed as soon as possible.</p>
<p>We received about 1.3 million hits during the awards, so we had to provision a few more servers. However, our server setup is elastic, which means we easily scaled with the extra demand.</p>
<p><img class="size-medium wp-image-140 alignnone" title="Wall of Tweets" src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-4-542x281.png" alt="Wall of Tweets" width="542" height="281" /></p>
<p><img class="alignnone size-medium wp-image-141" title="celebrity tweets" src="http://leadthinking.com/wp-content/uploads/2009/06/celebrity-tweets-542x268.png" alt="celebrity tweets" width="542" height="268" /></p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/139-socialmod-moderates-bet-com-awards/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Moderating vinspired&#8217;s Question Time</title>
		<link>http://leadthinking.com/104-moderating-vinspireds-question-time</link>
		<comments>http://leadthinking.com/104-moderating-vinspireds-question-time#comments</comments>
		<pubDate>Mon, 22 Jun 2009 15:01:27 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=104</guid>
		<description><![CDATA[
I thought I&#8221;d post this as a good example of using Socialmod to moderate Twitter Feeds.
On Thursday, vinspired had a conference called Generation Digital. Participants could tweet about the event, including the hash tag #gendig. These tweets were then moderated, and re-published on vinspired&#8217;s site.
Twitter is a great tool for conferences, allowing you to get feedback, even [...]]]></description>
			<content:encoded><![CDATA[<p><img class="size-full wp-image-107 alignright" title="Vinspired" src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-9.png" alt="Vinspired" width="281" height="49" /></p>
<p>I thought I&#8221;d post this as a good example of using <a href="http://socialmod.com">Socialmod</a> to moderate Twitter Feeds.</p>
<p>On Thursday, vinspired had a conference called Generation Digital. Participants could <a href="http://www.vinspired.com/v/conference/generation-digital/">tweet</a> about the event, including the hash tag #gendig. These tweets were then moderated, and re-published on vinspired&#8217;s site.</p>
<p>Twitter is a great tool for conferences, allowing you to get feedback, even live during a session.</p>
<p>Socialmod lets you specify Twitter search terms, and will then automatically receive new Tweets:</p>
<p><img class="alignnone size-medium wp-image-113" title="Create Search" src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-112-542x160.png" alt="Create Search" width="542" height="160" /></p>
<p>These items can then be moderated like any other:</p>
<p><img class="alignnone size-medium wp-image-112" title="Tweet" src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-10-542x93.png" alt="Tweet" width="542" height="93" /></p>
<p>We then republish a &#8216;clean&#8217; feed of moderated content, which you can put on your website:</p>
<p><img class="alignnone size-full wp-image-130" title="Tweet Mod" src="http://leadthinking.com/wp-content/uploads/2009/06/Picture-14.png" alt="Tweet Mod" width="294" height="304" /></p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/104-moderating-vinspireds-question-time/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>We&#8217;ve listened &#8211; pricing changes</title>
		<link>http://leadthinking.com/27-we-listened-pricing-changes</link>
		<comments>http://leadthinking.com/27-we-listened-pricing-changes#comments</comments>
		<pubDate>Mon, 01 Jun 2009 12:39:07 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=27</guid>
		<description><![CDATA[Well, it just a few days after the public launch of Socialmod and we&#8217;ve had a lot of signups.
We&#8217;ve also had a lot of feedback, which is always very useful because ultimately you don&#8217;t know what your customers want, unless they tell you.
Generally we were getting the message that the limits on the plans were [...]]]></description>
			<content:encoded><![CDATA[<p>Well, it just a few days after the public launch of <a href="#mce_temp_url#">Socialmod</a> and we&#8217;ve had a <em>lot</em> of signups.</p>
<p>We&#8217;ve also had a lot of feedback, which is always very useful because ultimately you don&#8217;t know what your customers want, unless they tell you.</p>
<p>Generally we were getting the message that the limits on the plans were too low, people needed to do more moderation.</p>
<p>With that in mind we&#8217;ve increased the moderation limit on all the plans, apart from the Basic one, and made all the &#8216;Automated&#8217; plans (including Mechanical Turk) $10 less.</p>
<p><span id="more-27"></span></p>
<h3>Here are the updated plans:</h3>
<p>Non-automated plans:</p>
<table border="0" width="100%">
<thead>
<tr>
<th>Plan Name</th>
<th>Previous Price</th>
<th>Previous Cap</th>
<th>New Price</th>
<th>New Cap</th>
</tr>
</thead>
<tbody>
<tr>
<td>Max</td>
<td>$149/month</td>
<td>8000</td>
<td>$149/month</td>
<td><strong>15000</strong></td>
</tr>
<tr>
<td>Premium</td>
<td>$99/month</td>
<td>4000</td>
<td>$99/month</td>
<td><strong>7000</strong></td>
</tr>
<tr>
<td>Plus</td>
<td>$49/month</td>
<td>2000</td>
<td>$49/month</td>
<td><strong>3000</strong></td>
</tr>
<tr>
<td>Basic</td>
<td>$24/month</td>
<td>1000</td>
<td>$24/month</td>
<td>1000</td>
</tr>
</tbody>
</table>
<hr />
<p>Automated plans:</p>
<table border="0" width="100%">
<thead>
<tr>
<th>Plan Name</th>
<th>Previous Price</th>
<th>Previous Cap</th>
<th>New Price</th>
<th>New Cap</th>
</tr>
</thead>
<tbody>
<tr>
<td>Max Auto</td>
<td>$269/month</td>
<td>8000</td>
<td><strong>$259/month</strong></td>
<td><strong>15000</strong></td>
</tr>
<tr>
<td>Premium Auto</td>
<td>$159/month</td>
<td>4000</td>
<td><strong>$149/month</strong></td>
<td><strong>7000</strong></td>
</tr>
<tr>
<td>Plus Auto</td>
<td>$79/month</td>
<td>2000</td>
<td><strong>$69/month</strong></td>
<td><strong>3000</strong></td>
</tr>
<tr>
<td>Basic Auto</td>
<td>$39/month</td>
<td>1000</td>
<td><strong>$29/month</strong></td>
<td>1000</td>
</tr>
</tbody>
</table>
<hr />
<p>In addition we&#8217;ve increased the cap on the free plan from 50 to 100 moderations per month.</p>
<p>This pricing changes will apply immediately, and also apply to existing signed up customers.</p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/27-we-listened-pricing-changes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding moderation to your Rails site in 5 minutes</title>
		<link>http://leadthinking.com/13-adding-moderation-to-your-rails-site-in-5-minutes</link>
		<comments>http://leadthinking.com/13-adding-moderation-to-your-rails-site-in-5-minutes#comments</comments>
		<pubDate>Sun, 31 May 2009 13:50:11 +0000</pubDate>
		<dc:creator>Alex</dc:creator>
				<category><![CDATA[Socialmod]]></category>

		<guid isPermaLink="false">http://leadthinking.com/?p=13</guid>
		<description><![CDATA[This short tutorial will show you how to integrate Socialmod into Rails in a matter of minutes. This time we&#8217;re focussing on text moderation &#8211; future tutorials will tackle image and video moderation.
The general process goes likes this:

Comment (i.e. UGC text content) is created
A POST request is sent to Socialmod, with the text to be [...]]]></description>
			<content:encoded><![CDATA[<p>This short tutorial will show you how to integrate <a href="http://socialmod.com">Socialmod</a> into Rails in a matter of minutes. This time we&#8217;re focussing on text moderation &#8211; future tutorials will tackle image and video moderation.</p>
<p>The general process goes likes this:</p>
<ul>
<li>Comment (i.e. UGC text content) is created</li>
<li>A POST request is sent to Socialmod, with the text to be moderated and the Comment&#8217;s id</li>
<li>Moderator moderates text</li>
<li>A POST request is sent from Socialmod to your designated callback url with the moderators verdict</li>
<li>You then choose to hide/show that item depending on whether you&#8217;re doing pre/post moderation, and obviously the verdict.</li>
</ul>
<p>Firstly, install the gem:</p>
<pre class="brush: bash">
sudo gem install socialmod
</pre>
<p>Generate your Rails app, and add the gem to config/enviroment.rb;</p>
<pre class="brush: ruby">
config.gem &quot;socialmod&quot;
</pre>
<p>We need to configure the Socialmod library to use <a href="http://socialmod.com/api">your api key</a>.</p>
<p>config/initializers/socialmod.rb</p>
<pre class="brush: ruby">
Socialmod::Base.api_key = &#039;00000000-0000-0000-0000-000000000000&#039;
</pre>
<p>Now we&#8217;re going to generate the scaffolding for the Comment model, and install the state machine plugin:</p>
<pre class="brush: bash">
script/generate scaffold comment body:text state:string
script/plugin install git://github.com/pluginaweek/state_machine.git
rake db:migrate
</pre>
<p>Now to implement the pending, passed and failed states on the Comment model:</p>
<p>app/model/comment.rb</p>
<pre class="brush: ruby">
class Comment &lt; ActiveRecord::Base
  state_machine :initial =&gt; :pending do
    event :passed do
      transition [:pending, :failed] =&gt; :passed
    end

    event :failed do
      transition [:pending, :passed] =&gt; :failed
    end

    state :pending, :passed, :failed
  end
  named_scope :passed, :conditions =&gt; {:state =&gt; &quot;passed&quot;}
end
</pre>
<p>And now we&#8217;re going to add the Socialmod specifics to the Comment model.<br />
After the comment is created, the comment text is sent to Socialmod.</p>
<p>app/model/comment.rb</p>
<pre class="brush: ruby">
after_create :create_on_socialmod
def create_on_socialmod
  Socialmod::Item::Text.create(
    :data =&gt; body,
    :custom_id =&gt; id
  )
end
</pre>
<p>Now generate the callback controller. Below you can see we&#8217;re finding the comment, and passing or failing it based on the callback&#8217;s verdict.</p>
<p>You&#8217;ll also notice we&#8217;re skipping the verify_authenticity_token method. We don&#8217;t need XSS protection here (since we&#8217;re checking the signature of the callback &#8211; verifying its identity).</p>
<p>app/controllers/callback_controller.rb</p>
<pre class="brush: ruby">
class CallbackController &lt; ApplicationController
  skip_before_filter :verify_authenticity_token, :only =&gt; :index

  def index
    callback = Socialmod::Callback.new(params)
    unless callback.valid?
      return head(403)
    end

    comment = Comment.find(callback.custom_id)
    if callback.passed?
      comment.passed!
    else
      comment.failed!
    end
    head 200
  end
end
</pre>
<p>How does Socialmod know which callback url to use?<br />
Well you need to specify it in the <a href="http://socialmod.com/settings">settings</a>:</p>
<p><a href="http://socialmod.com/settings"><img src="http://leadthinking.com/wp-content/uploads/2009/05/picture-2.png" alt="callback-url-settings" title="callback-url-settings" width="426" height="162" class="alignnone size-full wp-image-24" /></a></p>
<p>Unfortunately the callback aspect of it makes testing locally difficult &#8211; that&#8217;s something that should be tested in the staging environment.</p>
<p>And that&#8217;s really all there is to it. You can choose whether or not you want pre-moderation by showing/hiding comments in the pending state.<br />
One nice touch you could add is to only show pending items to the users that created them, so they can get some instant feedback.</p>
<p>The next blog post will show you how to use images with Socialmod.</p>
]]></content:encoded>
			<wfw:commentRss>http://leadthinking.com/13-adding-moderation-to-your-rails-site-in-5-minutes/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
