<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss 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:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>THIRD RAIL</title>
	
	<link>http://3.rdrail.net/blog</link>
	<description>Shocking web development</description>
	<lastBuildDate>Fri, 27 Feb 2009 02:25:32 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.4</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/ThirdRail" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
		<title>Memcached based message queues</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/XUKgiWa5lOI/</link>
		<comments>http://3.rdrail.net/blog/memcached-based-message-queues/#comments</comments>
		<pubDate>Fri, 27 Feb 2009 02:25:32 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[memcached]]></category>
		<category><![CDATA[perl]]></category>
		<category><![CDATA[queue]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/memcached-based-message-queues/</guid>
		<description><![CDATA[Distributed caching and message queues are basic building blocks of distributed computing.  Memcached is clearly the best of breed for caching.  For message queues however the choices are many and vary in features, reliability and ease of use.
I needed a simple and fast queue with only basic reliability (lost messages don&#8217;t cost much).   Memcached offers [...]]]></description>
			<content:encoded><![CDATA[<p>Distributed caching and <a href="http://en.wikipedia.org/wiki/Message_queue">message queues</a> are basic building blocks of distributed computing.  <a href="http://danga.com/memcached">Memcached is clearly the best</a> of breed for caching.  For message queues however the <a href="http://delicious.com/popular/queue">choices are many</a> and vary in features, reliability and ease of use.</p>
<p>I needed a simple and fast queue with only basic reliability (lost messages don&#8217;t cost much).   Memcached offers some special operations that make it possible to build queues&#8230; all you need is a couple counters. Here&#8217;s the basic idea:</p>
<p align="center"><img src="http://3.rdrail.net/blog/wp-content/uploads/2009/02/memqueue.jpg" alt="Memcached queue design" /></p>
<p>First create head and tail keys to track the unread messages in the queue.   Then using the atomic incr() operation memcached provides,  increment the head and use that number as the key for a new message in the queue.  Increment the tail and use that the key of the message of the next message to read.  You can calculate the current queue size by subtracting the head and tail counters.</p>
<p>On the downside  you may get no messages when you call recv() if the cache is full.   Also, there is also no way of knowing what happens to a message once you recv() it. On the upside you can drop in a service like <a href="http://memcachedb.org">memcachedb</a> for persistent storage.</p>
<p>There are similar queues built using memcached like <a href="http://code.google.com/p/sparrow/">sparrow</a>.</p>
<p>Here is the perl implementation, should be easy to port to any language memcached provides clients for&#8230;</p>
<pre name="code" class="php">
package MemQueue;

use strict;
use warnings;

use Cache::Memcached;
use constant PREFIX =&gt; "MEMQUEUE_";

sub new
{
    my $cn      = shift;
    my $name    = shift;
    die("queue name required") unless defined $name;

    my @servers   = @_;
    my $self      = {};
    $self-&gt;{name} = PREFIX().$name;
    $self-&gt;{head} = PREFIX().$name."_head";
    $self-&gt;{tail} = PREFIX().$name."_tail";
    $self-&gt;{memd} = new Cache::Memcached( servers =&gt; @servers );

    #create queue
    $self-&gt;{memd}-&gt;add( $self-&gt;{head}, 0 );
    $self-&gt;{memd}-&gt;add( $self-&gt;{tail}, 0 );

    return bless($self, $cn);
}

sub send
{
    my $self = shift;
    my $mess = shift;
    return unless defined $mess;

    #advance the head
    my $id = $self-&gt;{memd}-&gt;incr($self-&gt;{head});
    die("cache error") unless defined $id;

    $self-&gt;{memd}-&gt;set($self-&gt;{name}."$id", $mess);
}

sub recv
{
    my $self = shift;
    return "empty" unless $self-&gt;length() &gt; 0;

    #advance the tail
    my $id = $self-&gt;{memd}-&gt;incr($self-&gt;{tail});

    die("cache error") unless defined $id;

    return $self-&gt;{memd}-&gt;get($self-&gt;{name}."$id");
}

sub length
{
    my $self = shift;

    my $v    = $self-&gt;{memd}-&gt;get_multi($self-&gt;{head},$self-&gt;{tail});

    return -1 unless defined $v-&gt;{$self-&gt;{head}} &amp;&amp; defined $v-&gt;{$self-&gt;{tail}}
    &amp;&amp; $v-&gt;{$self-&gt;{head}} &gt;= $v-&gt;{$self-&gt;{tail}};

    return $v-&gt;{$self-&gt;{head}} - $v-&gt;{$self-&gt;{tail}};
}

1;

##############Example program####################
my $mq = new MemQueue("test2", "127.0.0.1:11211" );

my $c = 1000;
foreach my $i (0..$c){
    $mq-&gt;send("message $i"x100);
}

foreach my $i (0..$c){
    warn($mq-&gt;recv());
}

warn("len ".$mq-&gt;length());</pre>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/memcached-based-message-queues/&amp;title=Memcached based message queues' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/memcached-based-message-queues/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/memcached-based-message-queues/&amp;title=Memcached based message queues' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/memcached-based-message-queues/&amp;title=Memcached based message queues' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/memcached-based-message-queues/&amp;title=Memcached based message queues' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Memcached based message queues+http://3.rdrail.net/blog/memcached-based-message-queues/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/memcached-based-message-queues/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/memcached-based-message-queues/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/memcached-based-message-queues/</feedburner:origLink></item>
		<item>
		<title>Twittering subversion commits</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/ytYRTLCg3Gc/</link>
		<comments>http://3.rdrail.net/blog/twittering-subversion-commits/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 21:49:20 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[googlecode]]></category>
		<category><![CDATA[subversion]]></category>
		<category><![CDATA[thrudb]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/twittering-subversion-commits/</guid>
		<description><![CDATA[Since I&#8217;ve been working on Thrudb I&#8217;ve become a big twitter user. So naturally I&#8217;ve created a Thrudb twitter account for people who are interested in tracking progress on the project.  I also wanted to have the changeset tweeted whenever I commit code into subversion.
Subversion has a post-commit hook that will run a script when [...]]]></description>
			<content:encoded><![CDATA[<p>Since I&#8217;ve been working on Thrudb <a href="http://twitter.com/tjake">I&#8217;ve become a big twitter user</a>. So naturally I&#8217;ve created a <a href="http://twitter.com/thrudb">Thrudb twitter account</a> for people who are interested in tracking progress on the project.  I also wanted to have the changeset tweeted whenever I commit code into subversion.</p>
<p>Subversion has a post-commit hook that will run a script when you commit something so I ended up finding <a href="http://twitvn.googlecode.com">twitvn</a> which does what I wanted but only for trac based projects. Thrudb uses googlecode so it gets more complicated since we can&#8217;t install scripts on google hardware :) but they do support a nifty <a href="http://code.google.com/p/support/wiki/PostCommitWebHooks">url callback that will post the commit info to you</a>.</p>
<p>So off I went and whipped up a script just for googlecode projects that want to tweet their commits. Just put this in as a cgi on your webserver and tell googlecode the location (under Administration->Source tab).  <a href="http://twitter.com/thrudb/status/1163889282">Here is an example of the output</a>.</p>
<pre name="code" class="php">
#!/usr/bin/perl

use strict;
use warnings;

use Net::Twitter;
use JSON::Any;
use Digest::HMAC_MD5 qw(hmac_md5_hex);
use LWP::Simple;

#Just update these
use constant SECRET_KEY   =&gt; "SECRET_KEY_FROM_GOOGLE";
use constant TWITTER_USER =&gt; "TWITTER_USER";
use constant TWITTER_PASS =&gt; "TWITTER_PASS";

#check for defined digest from google
my $remote_digest = $ENV{HTTP_GOOGLE_CODE_PROJECT_HOSTING_HOOK_HMAC};
die("missing hmac digest") unless defined $remote_digest;

#fetch json message upto 100k
die("message too long") if $ENV{CONTENT_LENGTH} &gt; 100000;
my $json_str;
read(STDIN, $json_str, $ENV{CONTENT_LENGTH});

#calc local digest and verify
my $digest = hmac_md5_hex($json_str, SECRET_KEY);
die("digests don't match") unless $digest eq $remote_digest;

#construct tweet and shorten changeset url
my $obj     = JSON::Any-&gt;jsonToObj($json_str);
my $comment = $obj-&gt;{revisions}[0]-&gt;{message};
my $url     = get "http://is.gd/api.php?longurl=".
    "http://code.google.com/p/".$obj-&gt;{project_name}.
    "/source/detail?r=".$obj-&gt;{revisions}[0]{revision};

die("problem shortening $url") unless defined $url &amp;&amp; $url !~ "Error";

my $tweet = "svn: ".$comment." ".$url;

#shorten?
if(length($tweet) &gt; 140){
    $tweet = substr($comment,0,140 - 5 - (length($tweet) - 140))."... ".$url;
}

#tweet!
Net::Twitter-&gt;new(username=&gt;TWITTER_USER(), password=&gt;TWITTER_PASS() )
    -&gt;update($tweet);

print "content-type:plain/textnn";
print "OKn";</pre>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/twittering-subversion-commits/&amp;title=Twittering subversion commits' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/twittering-subversion-commits/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/twittering-subversion-commits/&amp;title=Twittering subversion commits' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/twittering-subversion-commits/&amp;title=Twittering subversion commits' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/twittering-subversion-commits/&amp;title=Twittering subversion commits' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Twittering subversion commits+http://3.rdrail.net/blog/twittering-subversion-commits/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/twittering-subversion-commits/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/twittering-subversion-commits/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/twittering-subversion-commits/</feedburner:origLink></item>
		<item>
		<title>Living an Agile Life</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/Lzq5o4M8nsI/</link>
		<comments>http://3.rdrail.net/blog/living-an-agile-life/#comments</comments>
		<pubDate>Wed, 26 Nov 2008 03:43:15 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[happiness]]></category>
		<category><![CDATA[lessons]]></category>
		<category><![CDATA[life]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/living-an-agile-life/</guid>
		<description><![CDATA[When I was a kid my parents taught me to always have a plan and to always aim high.  As a result, I have a master plan for life that I execute against. Things like losing weight, being a dedicated husband and father, coding nightly, retiring young, even this blog.
Like any kind of plan or [...]]]></description>
			<content:encoded><![CDATA[<p>When I was a kid my parents taught me to always have a plan and to always aim high.  As a result, I have a master plan for life that I execute against. Things like losing weight, being a dedicated husband and father, coding nightly, retiring young, even this blog.</p>
<p>Like any kind of plan or project it must be flexible enough to change given new priorities or requirements.  It also must have frequent results which can be measured (lbs lost, time spent, lines of code, posts and readership).</p>
<p>I&#8217;m probably not alone in this thinking, but I naturally apply <a href="http://en.wikipedia.org/wiki/Agile_software_development">agile methods</a> to my life, just like I tend to apply them to software development.  When some external problem comes up or I just get the urge to-do something new here&#8217;s my thought process:</p>
<ol>
<li>Does this change affect my other goals?</li>
<li>How does this affect the priority of these goals?</li>
<li>What goals can I postpone or drop to deal with this change?</li>
</ol>
<p>The current economic situation has forced me to change some of my goals and priorities but having an agile approach to life, I believe, gives me the tools to handle it better.</p>
<p>Do you live an agile life too?</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/living-an-agile-life/&amp;title=Living an Agile Life' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/living-an-agile-life/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/living-an-agile-life/&amp;title=Living an Agile Life' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/living-an-agile-life/&amp;title=Living an Agile Life' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/living-an-agile-life/&amp;title=Living an Agile Life' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Living an Agile Life+http://3.rdrail.net/blog/living-an-agile-life/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/living-an-agile-life/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/living-an-agile-life/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/living-an-agile-life/</feedburner:origLink></item>
		<item>
		<title>Remember Authority does not equal Accuracy</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/xr9jqLuHc6U/</link>
		<comments>http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/#comments</comments>
		<pubDate>Tue, 01 Jul 2008 02:38:16 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[business]]></category>
		<category><![CDATA[lessons]]></category>
		<category><![CDATA[life]]></category>
		<category><![CDATA[web]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/</guid>
		<description><![CDATA[When I was a kid I thought my parents were always right.   Whether it was the best way to dress or the best way to write a sentence for english class; if my parents said it was the better way then it was.
It wasn&#8217;t until 8th grade that I realized my parents really didn&#8217;t know [...]]]></description>
			<content:encoded><![CDATA[<p>When I was a kid I thought my parents were always right.   Whether it was the best way to dress or the best way to write a sentence for english class; if my parents said it was the better way then it was.</p>
<p>It wasn&#8217;t until 8th grade that I realized my parents really didn&#8217;t know much about a lot of things like clothes or music or grammar but they would have never admitted it.  Eventually I learned to weigh my parents views as opinions that I respect, while at the same time using my own brain to decide on the right way for me.</p>
<p>If you are an entrepreneur, keep that in mind when you read something from <a href="http://http://www.alleyinsider.com/sa100/">people</a>, <a href="http://google.com">companies</a> or <a href="http://www.techmeme.com/lb">bloggers</a> with authority.   If you find yourself always accepting what they say and do as correct then you are probably like me in 7th grade.</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/&amp;title=Remember Authority does not equal Accuracy' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/&amp;title=Remember Authority does not equal Accuracy' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/&amp;title=Remember Authority does not equal Accuracy' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/&amp;title=Remember Authority does not equal Accuracy' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Remember Authority does not equal Accuracy+http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/feed/</wfw:commentRss>
		<slash:comments>-1</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/remember-authority-does-not-equal-accuracy/</feedburner:origLink></item>
		<item>
		<title>The 10 most influential del.icio.us users</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/5Zp87yhfC10/</link>
		<comments>http://3.rdrail.net/blog/the-10-most-influential-delicious-users/#comments</comments>
		<pubDate>Tue, 17 Jun 2008 17:30:58 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[del.icio.us]]></category>
		<category><![CDATA[fun]]></category>
		<category><![CDATA[stats]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/the-10-most-influential-delicious-users/</guid>
		<description><![CDATA[I recently noticed the same names popping up again and again on the del.icio.us popular feed.  So I pulled the last 5k posts and these are the most influential del.icio.us users:
I imagine these users have a knack of finding good content as well as having a large del.icio.us network.


User
Count


ani625
124


pramodc84
35


gerd.storm
34


atul
17


angusf
10


CPops
9


randyzhang
9


fake_joshua
8


Blakovitch
8


speckyboy
8


refina
7


Here&#8217;s how I did this:
Google feed api [...]]]></description>
			<content:encoded><![CDATA[<p>I recently noticed the same names popping up again and again on the <a href="http://del.icio.us/popular">del.icio.us popular</a> feed.  So I pulled the last 5k posts and these are the most influential del.icio.us users:</p>
<p>I imagine these users have a knack of finding good content as well as having a large <a href="http://del.icio.us/help/network">del.icio.us network</a>.</p>
<table>
<tr>
<th>User</th>
<th>Count</th>
</tr>
<tr>
<td><a href="http://del.icio.us/ani625">ani625</a></td>
<td>124</td>
</tr>
<tr>
<td><a href="http://del.icio.us/pramodc84">pramodc84</a></td>
<td>35</td>
</tr>
<tr>
<td><a href="http://del.icio.us/gerd.storm">gerd.storm</a></td>
<td>34</td>
</tr>
<tr>
<td><a href="http://del.icio.us/atul">atul</a></td>
<td>17</td>
</tr>
<tr>
<td><a href="http://del.icio.us/angusf">angusf</a></td>
<td>10</td>
</tr>
<tr>
<td><a href="http://del.icio.us/CPops">CPops</a></td>
<td>9</td>
</tr>
<tr>
<td><a href="http://del.icio.us/randyzhang">randyzhang</a></td>
<td>9</td>
</tr>
<tr>
<td><a href="http://del.icio.us/fake_joshua">fake_joshua</a></td>
<td>8</td>
</tr>
<tr>
<td><a href="http://del.icio.us/Blakovitch">Blakovitch</a></td>
<td>8</td>
</tr>
<tr>
<td><a href="http://del.icio.us/speckyboy.del">speckyboy</a></td>
<td>8</td>
</tr>
<tr>
<td><a href="http://del.icio.us/refina">refina</a></td>
<td>7</td>
</tr>
</table>
<p>Here&#8217;s how I did this:</p>
<p>Google feed api to fetch the last 5k users (you need to be authenticated to get this so i saved it from my browser)<br />
http://www.google.com/reader/atom/feed/http://del.icio.us/rss?r=n&amp;n=5000I then cat&#8217;d the results into this perl script: <strong>script.pl &lt; popular.rss</strong></p>
<pre class="php" name="code">
#!/usr/bin/perl

my %users;

while(&lt;&gt;){
        my ($user) = ($_ =~ /&lt;name&gt;([^&lt;]+)/);
        next unless defined $user;

        $users{$user}++;
}

foreach my $user ( sort{ $users{$b} &lt;=&gt; $users{$a} } keys %users ){
      print "$user\t$users{$user}\n";
}</pre>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/the-10-most-influential-delicious-users/&amp;title=The 10 most influential del.icio.us users' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/the-10-most-influential-delicious-users/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/the-10-most-influential-delicious-users/&amp;title=The 10 most influential del.icio.us users' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/the-10-most-influential-delicious-users/&amp;title=The 10 most influential del.icio.us users' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/the-10-most-influential-delicious-users/&amp;title=The 10 most influential del.icio.us users' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=The 10 most influential del.icio.us users+http://3.rdrail.net/blog/the-10-most-influential-delicious-users/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/the-10-most-influential-delicious-users/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/the-10-most-influential-delicious-users/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/the-10-most-influential-delicious-users/</feedburner:origLink></item>
		<item>
		<title>Thrift Officially an Apache Incubator Project</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/RwcY4IVYCNw/</link>
		<comments>http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/#comments</comments>
		<pubDate>Fri, 13 Jun 2008 00:43:31 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[TR Site]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/</guid>
		<description><![CDATA[Post on the Facebook engineering blog announing the move.  This is great since more people can now use thrift in places like corporations since it has been vetted by apache.
There is also mention of a fully asynchronous c++ client and server which I could really use&#8230;
The new home for thrift is here, check it out [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.facebook.com/note.php?note_id=16787213919">Post on the Facebook engineering blog announing the move</a>.  This is great since more people can now use thrift in places like corporations since it has been vetted by apache.</p>
<p>There is also mention of a fully asynchronous c++ client and server which I could really use&#8230;</p>
<p>The <a href="http://incubator.apache.org/thrift">new home for thrift is here</a>, check it out and use it with your project.</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/&amp;title=Thrift Officially an Apache Incubator Project' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/&amp;title=Thrift Officially an Apache Incubator Project' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/&amp;title=Thrift Officially an Apache Incubator Project' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/&amp;title=Thrift Officially an Apache Incubator Project' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Thrift Officially an Apache Incubator Project+http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/thrift-officially-an-apache-incubator-project/</feedburner:origLink></item>
		<item>
		<title>Followup: Best time to post (howto)</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/MsGkf_iyEhw/</link>
		<comments>http://3.rdrail.net/blog/followup-best-time-to-post-howto/#comments</comments>
		<pubDate>Tue, 06 May 2008 17:00:35 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[blogging]]></category>
		<category><![CDATA[hacks]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/followup-best-time-to-post-howto/</guid>
		<description><![CDATA[Just a quick note to show how to use Wordpress to post at a certain time.  Once finished writing your post, expand the &#8220;Post Timestamp&#8221; and &#8220;Post Status&#8221; option.  Check &#8220;Edit Timestamp&#8221; and set the date/time you want to post.  Also set the status to &#8220;Published&#8221;.       That&#8217;s it!

       More&#160;&#187;]]></description>
			<content:encoded><![CDATA[<p align="left">Just a quick note to show how to use <a href="http://wordpress.org">Wordpress</a> to post at a <a href="http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/">certain time</a>.  Once finished writing your post, expand the &#8220;Post Timestamp&#8221; and &#8220;Post Status&#8221; option.  Check &#8220;Edit Timestamp&#8221; and set the date/time you want to post.  Also set the status to &#8220;Published&#8221;.       That&#8217;s it!</p>
<p align="center"><img src="http://3.rdrail.net/blog/wp-content/uploads/2008/05/wordpress.png" alt="wordpress write status" /></p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/followup-best-time-to-post-howto/&amp;title=Followup: Best time to post (howto)' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/followup-best-time-to-post-howto/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/followup-best-time-to-post-howto/&amp;title=Followup: Best time to post (howto)' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/followup-best-time-to-post-howto/&amp;title=Followup: Best time to post (howto)' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/followup-best-time-to-post-howto/&amp;title=Followup: Best time to post (howto)' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Followup: Best time to post (howto)+http://3.rdrail.net/blog/followup-best-time-to-post-howto/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/followup-best-time-to-post-howto/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/followup-best-time-to-post-howto/feed/</wfw:commentRss>
		<slash:comments>-1</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/followup-best-time-to-post-howto/</feedburner:origLink></item>
		<item>
		<title>Thursday at Noon is the best time post and be noticed (PST)</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/fy7wIB6rIoc/</link>
		<comments>http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/#comments</comments>
		<pubDate>Fri, 02 May 2008 15:56:14 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[analysis]]></category>
		<category><![CDATA[blogging]]></category>
		<category><![CDATA[marketing]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/</guid>
		<description><![CDATA[It&#8217;s happened to me a few times; I stay up late working on a great post and finish at 1am EST.  In a rush of excitement I decide to submit it to reddit or del.icio.us and goto bed fully expecting to see it on the front page of their sites the next morning.  Of course [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s happened to me a few times; I stay up late working on a <a href="http://http://3.rdrail.net/blog/cell-tower-mapping-how-google-did-it/">great post</a> and finish at <a href="http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/">1am EST</a>.  In a rush of excitement I decide to submit it to reddit or del.icio.us and goto bed fully expecting to see it on the front page of their sites the next morning.  Of course this rarely happens&#8230; so being a programmer I figured I should do some analysis on the best time to post.My approach was simple:  Look at the times of day and days of the week that have the most popular posts.  To define popularity I used <a href="http://aiderss.com">AideRSS</a>&#8217;s Postrank &#8482;. <br/><br/> <em><strong>PostRank™ is a scoring system that we have developed to rank each article on relevance and reaction.</strong></em>   PostRank ranges from 1-10. <br/><br/> Using the <a href="http://api.aiderss.com">aiderss feed api</a>, I fetched the last 10,000 posts on <a href="http://del.icio.us/popular">delicious</a>, <a href="http://digg.com">digg</a>, <a href="http://reddit.com">reddit</a>, and <a href="http://mixx.com">mixx</a>&#8230;Threw it into <a href="http://www.r-project.org" title="R Statistical Computing Platform">R</a> and plotted out the number of posts by weekday and posts by hour of day with PostRank &gt; 6  <br/><br/><em><strong>*NOTE* Hours are displayed in GMT</strong></em>
<p align="center"><img src="http://3.rdrail.net/blog/wp-content/uploads/2008/05/rplot001.png" alt="Best time of day and week to post" /></p>
<p align="left">It&#8217;s pretty clear that Tues &#8211; Friday between 10am &#8211; 2pm PST are the &#8220;hot times&#8221; for popular blog posts.</p>
<p align="left">Now, I didn&#8217;t filter out non-english posts and this doesn&#8217;t account for the time it took for the posts to get to the front page of these sites,  but I do think it&#8217;s clear posting late at night or on the weekends + monday is a bad idea.   Your post will most likley go unnoticed.</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/&amp;title=Thursday at Noon is the best time post and be noticed (PST)' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/&amp;title=Thursday at Noon is the best time post and be noticed (PST)' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/&amp;title=Thursday at Noon is the best time post and be noticed (PST)' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/&amp;title=Thursday at Noon is the best time post and be noticed (PST)' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Thursday at Noon is the best time post and be noticed (PST)+http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/thurday-at-noon-is-the-best-time-post-and-be-noticed-pst/</feedburner:origLink></item>
		<item>
		<title>100 Most Popular Words Twittered This Week</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/3UIphJMV1hU/</link>
		<comments>http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/#comments</comments>
		<pubDate>Fri, 25 Apr 2008 03:59:01 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[lucene]]></category>
		<category><![CDATA[thrudb]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/</guid>
		<description><![CDATA[Earlier this week I showed how to create a twitter search with thrudb.
The service has been running now for about a week and it&#8217;s collected over 8 million tweets.  I&#8217;ve run some stats on the lucene db and these are the top 100 words with more than 3 letters :)
http tinyurl.com just quot have [...]]]></description>
			<content:encoded><![CDATA[<p>Earlier this week I showed how to create a <a href="http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/">twitter search with thrudb.</a></p>
<p>The service has been running now for about a week and it&#8217;s collected over 8 million tweets.  I&#8217;ve run some stats on the lucene db and these are the top 100 words with more than 3 letters :)</p>
<div style="width: 550px"><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="463227">http</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="328584">tinyurl.com</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="96887">just</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="95627"></a></font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="95627">quot</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="87180">have</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="70367">from</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="58958">what</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="56588">like</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="56283">about</a> </font><font size="10"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="53596">good</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="53322">twitter</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="51322">time</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="51224">your</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="45491">work</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="44602">some</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="43385">today</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="42701">going</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="39849">back</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="38131">more</a> </font><font size="9"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="35388">blog</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="33203">don&#8217;t</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="31983">think</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="31959">know</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="31193">when</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="30688">home</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="30009">post</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="28278">need</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="27482">love</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="27133">still</a> </font><font size="8"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="26936">really</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="26031">here</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="24804">people</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="24781">getting</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="23912">last</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="23362">over</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="23304">been</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="22837">great</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="22704">want</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="22510">night</a> </font><font size="7"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="22332">much</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="22205">well</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="22200">would</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="21897">2008</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="21890">morning</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="21755">should</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="21386">thanks</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="20850">only</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="20603">right</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="20022">para</a> </font><font size="6"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="20011">can&#8217;t</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="19908">after</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="19870">make</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="19373">again</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="19251">working</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="18703">watching</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="18407">first</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="17942">down</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="17725">very</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="17711">than</a> </font><font size="5"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="16915">nice</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="16818">i&#8217;ve</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="16718">tonight</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="16514">them</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="16514">week</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="16382">better</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="16322">trying</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="15629">playing</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="15566">i&#8217;ll</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="15553">tomorrow</a> </font><font size="4"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="15367">done</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="15051">video</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="15001">could</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14635">looking</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14601">take</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14446">news</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14380">next</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14301">long</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14233">listening</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14088">where</a> </font><font size="3"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="14061">even</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13983">live</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13944">cool</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13808">something</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13778">come</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13767">another</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13618">little</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13569">watch</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13488">before</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13475">lunch</a> </font><font size="2"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13458">thing</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13400">free</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13356">doing</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13134">stuff</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="13113">happy</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="12838">yeah</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="12793">does</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="12642">being</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="12626">having</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="12423">you&#8217;re</a> </font><font size="1"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="12399">life</a> </font><font size="0"><a href="http://3.rdrail.net/blog/wp-admin/#" onclick="return false;" style="text-decoration: none" title="12345">anyone</a> </font></div>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/&amp;title=100 Most Popular Words Twittered This Week' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/&amp;title=100 Most Popular Words Twittered This Week' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/&amp;title=100 Most Popular Words Twittered This Week' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/&amp;title=100 Most Popular Words Twittered This Week' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=100 Most Popular Words Twittered This Week+http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/100-most-popular-words-twittered-this-week/</feedburner:origLink></item>
		<item>
		<title>Roll your own real-time twitter search with thrudb</title>
		<link>http://feedproxy.google.com/~r/ThirdRail/~3/g-jrhaT39w0/</link>
		<comments>http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/#comments</comments>
		<pubDate>Tue, 22 Apr 2008 02:06:00 +0000</pubDate>
		<dc:creator>jake</dc:creator>
				<category><![CDATA[thrudb]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/</guid>
		<description><![CDATA[I&#8217;ve been using twitter quite a bit lately and really like the simplicity of the service and api. One thing thats missing though is search, but there are some great sites like tweetscan and summize that let you search public tweets in close to real-time.
I decided indexing twitter is a great application for thrudb, specifically [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been using <a href="http://twitter.com">twitter</a> quite a bit lately and really like the simplicity of the service and api. One thing thats missing though is search, but there are some great sites like <a href="http://tweetscan.com">tweetscan</a> and <a href="http://twitter.summize.com/">summize</a> that let you search public tweets in close to real-time.</p>
<p>I decided indexing twitter is a great application for <a href="http://thrudb.org">thrudb</a>, specifically the thrudex service.  Thrudex is essentially a Thrift service for <a href="http://clucene.sf.net">CLucene</a> with some special sauce added.   If you&#8217;d like to read about the inner workings <a href="http://thrudb.org/wiki/CLuceneBackend">read this</a>.</p>
<p>Anyway, I whipped up a demo (in perl) for a realtime twitter search and have indexed a few days of tweets (over 3 million!) .  <a href="http://thrudb.org/tweetsearch"><strong>check it out here</strong></a>.</p>
<p style="text-align: center"><a href="http://thrudb.org/tweetsearch"><img src="http://3.rdrail.net/blog/wp-content/uploads/2008/04/tweetsearch.gif" alt="tweetsearch.gif" /></a></p>
<p>One of our regular contributers, <a href="http://vnhacker.blogspot.com/">Thai Duong</a>, was kind enough to port it to python+django for you new school folks.<br />
<strong><em>*Note</em>*</strong> this is running on a single dev box, so be forgiving&#8230;  It&#8217;s currently polling the public timeline feed so it&#8217;s not going to catch every tweet. but It captures ~85%<br />
We&#8217;ve added the code as a tutorial for thrudb <a href="http://svn.thrudb.org/thrudb/trunk/tutorial/tweetsearch/">here</a>.  Take it and build your own service&#8230; Any takers on building a ruby version or a cross site social search aggregation ala <a href="http://friendfeed.com">friendfeed</a>?</p>
<div class='bookmarkify'><a name='bookmarkify'></a><div class='linkbuttons'><a href='http://del.icio.us/post?url=http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/&amp;title=Roll your own real-time twitter search with thrudb' title='Save to del.icio.us' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/delicious.png' style='width:16px; height:16px;' alt='[del.icio.us] ' /></a> <a href='http://www.facebook.com/share.php?u=http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/' title='Save to Facebook' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/facebook.png' style='width:16px; height:16px;' alt='[Facebook] ' /></a> <a href='http://reddit.com/submit?url=http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/&amp;title=Roll your own real-time twitter search with thrudb' title='Reddit' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/reddit.png' style='width:16px; height:16px;' alt='[Reddit] ' /></a> <a href='http://slashdot.org/bookmark.pl?url=http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/&amp;title=Roll your own real-time twitter search with thrudb' title='Slashdot It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/slashdot.png' style='width:16px; height:16px;' alt='[Slashdot] ' /></a> <a href='http://www.stumbleupon.com/submit?url=http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/&amp;title=Roll your own real-time twitter search with thrudb' title='Stumble It!' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/stumbleupon.png' style='width:16px; height:16px;' alt='[StumbleUpon] ' /></a> <a href='http://twitter.com/home/?status=Roll your own real-time twitter search with thrudb+http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/' title='Save to Twitter' onclick='target="_blank";' rel='nofollow'><img src='http://3.rdrail.net/blog/wp-content/plugins/bookmarkify/twitter.png' style='width:16px; height:16px;' alt='[Twitter] ' /></a>  <a title='See more bookmark and sharing options...' href='http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/#bookmarkify' rel='nofollow'><small>More&nbsp;&raquo;</small></a></div></div>]]></content:encoded>
			<wfw:commentRss>http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/feed/</wfw:commentRss>
		<slash:comments>-1</slash:comments>
		<feedburner:origLink>http://3.rdrail.net/blog/roll-your-own-real-time-twitter-search-with-thrudb/</feedburner:origLink></item>
	</channel>
</rss><!-- Dynamic Page Served (once) in 0.616 seconds --><!-- Cached page served by WP-Cache -->
