<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title></title>
	<atom:link href="http://blog.getspool.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.getspool.com</link>
	<description></description>
	<lastBuildDate>Sun, 27 May 2012 06:09:13 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='blog.getspool.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title></title>
		<link>http://blog.getspool.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://blog.getspool.com/osd.xml" title="" />
	<atom:link rel='hub' href='http://blog.getspool.com/?pushpress=hub'/>
		<item>
		<title>Fake S3 &#8211; Save time, money, and develop offline</title>
		<link>http://blog.getspool.com/2012/04/18/fake-s3-save-time-money-and-develop-offline/</link>
		<comments>http://blog.getspool.com/2012/04/18/fake-s3-save-time-money-and-develop-offline/#comments</comments>
		<pubDate>Wed, 18 Apr 2012 16:13:11 +0000</pubDate>
		<dc:creator>Curtis Spencer</dc:creator>
				<category><![CDATA[Engineering]]></category>
		<category><![CDATA[open source]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=221</guid>
		<description><![CDATA[Saving Time and Money with Fake S3 Amazon S3 is a extremely powerful service at the core of Amazon Web &#8230;<p><a href="http://blog.getspool.com/2012/04/18/fake-s3-save-time-money-and-develop-offline/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=221&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<h3>Saving Time and Money with Fake S3</h3>
<p>Amazon S3 is a extremely powerful service at the core of Amazon Web Services. However, outside of a production environment, S3 can be challenging to work with. It involves passing keys around, provisioning user accounts, and a reliable network connection &#8212; not to mention it costs money.</p>
<p>At Spool, we built <a href="https://github.com/jubos/fake-s3" target="_blank">Fake S3</a> to make working with S3 in development and testing environments much easier. Our goal was to make a self contained executable that can mimic the majority of S3 Rest API with few external dependencies.</p>
<p>For development, each engineer runs her own instance of Fake S3 where she can put gigabytes of images and video to develop and test against, and her setup will work offline because it is all local. We also have a continuous integration setup that is running tests 24/7 (often against large video files). Fake S3 saves us $1000 a month in bandwidth alone for our tests. In both development and testing, the time saved in not waiting for assets to go back and forth into AWS, especially our larger media files, makes Fake S3 very useful.</p>
<p>We&#8217;re releasing <a title="Fake S3" href="https://github.com/jubos/fake-s3" target="_blank">Fake S3</a> as a gem on github. It&#8217;s an early release and we&#8217;ll keep improving it. If you have ideas or issues, <a href="https://github.com/jubos/fake-s3" target="_blank">please contribute to the project!</a></p>
<h3>Installation</h3>
<p><pre class="brush: bash;">gem install fakes3</pre></p>
<h3>Running</h3>
<p><pre class="brush: bash;">fakes3 -r ~/fakes3_root -p 10001</pre></p>
<h3>Example Client Code</h3>
<p><pre class="brush: ruby;">
require 'rubygems'
require 'aws/s3'

include AWS::S3
AWS::S3::Base.establish_connection!(:access_key_id =&gt; &quot;123&quot;,
                                    :secret_access_key =&gt; &quot;abc&quot;,
                                    :server =&gt; &quot;localhost&quot;,
                                    :port =&gt; &quot;10001&quot;)

Bucket.create('mystuff')

('a'..'z').each do |filename|
  S3Object.store(filename, 'Hello World', 'mystuff')
end

bucket = Bucket.find('mystuff')
bucket.objects.each do |s3_obj|
  puts &quot;#{s3_obj.key}:#{s3_obj.value}&quot;
end

Bucket.delete(&quot;mystuff&quot;,:force =&gt; true) # Delete your bucket and all its keys
</pre></p>
<p>In general clients can work if you can specify a host and port to connect them, as well as forcing path style requests (instead of subdomains.) Subdomain style S3 requests can work, but it involves adding your bucket names into /etc/hosts (ie. s3.localhost or mybucket.localhost) or using dnsmasq if you have a large number of buckets.</p>
<h3>Simulating Network Conditions</h3>
<p>Another useful feature is the support for simulating network conditions. You can run fakes3 with bandwidth limiting enabled like so:</p>
<p><pre class="brush: bash;">fakes3 -r ~/fakes3_root -p 10001 --limit=50K</pre></p>
<p>This will limit your GET request bandwidth to 50K/s per request instead of instantly off of your local machine. This is very convenient, for example, to simulate how mobile devices would behave in the real world.</p>
<h3>Related Tools</h3>
<p>Fake S3 is great for development and testing due to its simplicity, but is not intended to replace S3 in production. If you want to replace S3, there are other tools such as <a href="http://ceph.newdream.net/">Ceph</a>, <a href="https://github.com/mattjamieson/parkplace">ParkPlace</a> (supports bitorrent), <a href="https://github.com/razerbeans/boardwalk">Boardwalk</a> (S3 interface in front of MongoDB), and <a href="http://basho.com/products/riakcs/">RiakCS</a> that you can check out.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/221/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/221/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/221/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=221&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2012/04/18/fake-s3-save-time-money-and-develop-offline/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e813e0a366e5d5ddc302fa57a0fc2fab?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jubos</media:title>
		</media:content>
	</item>
		<item>
		<title>Spool Raises $1 million in financing</title>
		<link>http://blog.getspool.com/2012/01/04/spool-raises-1-million-in-financing/</link>
		<comments>http://blog.getspool.com/2012/01/04/spool-raises-1-million-in-financing/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 19:50:57 +0000</pubDate>
		<dc:creator>avichal</dc:creator>
				<category><![CDATA[Company Updates]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=204</guid>
		<description><![CDATA[Dear Spool Users, We&#8217;re very proud to announce that we&#8217;ve raised $1 million in outside financing for Spool. Our complete &#8230;<p><a href="http://blog.getspool.com/2012/01/04/spool-raises-1-million-in-financing/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=204&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dear Spool Users,</p>
<p>We&#8217;re very proud to announce that we&#8217;ve raised $1 million in outside financing for Spool. Our complete list of investors is below.</p>
<p>Though we&#8217;ve only been in private beta for 3 months, we&#8217;ve seen tremendous growth and received an overwhelmingly positive response. We have raised money to continue building a product our users love and are humbly looking forward to the opportunity to do so. We&#8217;ll be investing heavily in improving SpoolBot, polishing our mobile and browser applications, making the product easier to use for new users, and making it easier to share content with your close friends.</p>
<p>In the mold of great businesses we admire, our goal is to efficiently use our outside investment to improve the lives of millions of users. To this end, we have selected investors who have experience investing in the highest growth technology companies (Google, Twitter, Facebook, and more), who have themselves founded or built world changing companies (YouTube, Palantir,  LinkedIn, and more), and entrepreneurs who have relevant experience outside of technology companies as well.</p>
<p>We have some big things in store for Spool and are looking forward to sharing them with you. As always, we&#8217;d love to hear your thoughts and feedback &#8212; please don&#8217;t hesitate to email us at feedback@getspool.com.</p>
<p>-The Spool Team</p>
<h3>Our Investors</h3>
<ul>
<li>SVAngel</li>
<li>Felicis Ventures</li>
<li>Start Fund</li>
<li>Charles River Ventures</li>
<li>Vivi Nevo</li>
<li>Steve Chen</li>
<li>Elad Gil</li>
<li>Deep Nishar</li>
<li>Kevin Donahue</li>
<li>Joe Lonsdale</li>
<li>Bill Lohse</li>
<li>David King</li>
<li>Nils Johnson</li>
<li>Matt Ocko</li>
<li>Raymond Tonsing</li>
</ul>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/204/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/204/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/204/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=204&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2012/01/04/spool-raises-1-million-in-financing/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3c45fd1c287dd1663a7e30e9770295cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Avichal</media:title>
		</media:content>
	</item>
		<item>
		<title>SpoolBot is at Inbox Zero!</title>
		<link>http://blog.getspool.com/2012/01/03/spoolbot-is-at-inbox-zero/</link>
		<comments>http://blog.getspool.com/2012/01/03/spoolbot-is-at-inbox-zero/#comments</comments>
		<pubDate>Wed, 04 Jan 2012 02:49:47 +0000</pubDate>
		<dc:creator>avichal</dc:creator>
				<category><![CDATA[Product Updates]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=199</guid>
		<description><![CDATA[We&#8217;ve launched an update to SpoolBot that allows it to better understand emails with links and attachments intended for your &#8230;<p><a href="http://blog.getspool.com/2012/01/03/spoolbot-is-at-inbox-zero/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=199&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve launched an update to SpoolBot that allows it to better understand emails with links and attachments intended for your Spool account. As a result, SpoolBot went back and re-processed emails that it didn&#8217;t handle properly the first time through, so you may notice some new recordings in your account.</p>
<p>In case you&#8217;re wondering <a title="SpoolBot accepts emails and attachments!" href="http://blog.getspool.com/2011/12/13/spoolbot-accepts-emails-and-attachments/">how to save to Spool via email, read this post</a></p>
<p>As always, if you have any questions, please email us at support@spoolbot.com</p>
<p><img class="alignnone" title="Inbox Zero" src="http://i-cdn.apartmenttherapy.com/uimages/unplggd/082310_rg_InboxZero_03.jpg" alt="" width="270" height="270" /></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/199/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/199/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/199/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=199&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2012/01/03/spoolbot-is-at-inbox-zero/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3c45fd1c287dd1663a7e30e9770295cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Avichal</media:title>
		</media:content>

		<media:content url="http://i-cdn.apartmenttherapy.com/uimages/unplggd/082310_rg_InboxZero_03.jpg" medium="image">
			<media:title type="html">Inbox Zero</media:title>
		</media:content>
	</item>
		<item>
		<title>SpoolBot is fast again</title>
		<link>http://blog.getspool.com/2011/12/21/spoolbot-is-fast-again/</link>
		<comments>http://blog.getspool.com/2011/12/21/spoolbot-is-fast-again/#comments</comments>
		<pubDate>Thu, 22 Dec 2011 06:32:37 +0000</pubDate>
		<dc:creator>avichal</dc:creator>
				<category><![CDATA[Product Updates]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=189</guid>
		<description><![CDATA[We&#8217;re still experiencing record traffic but we&#8217;ve added 5x the servers. So now SpoolBot should be as fast as we &#8230;<p><a href="http://blog.getspool.com/2011/12/21/spoolbot-is-fast-again/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=189&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;re still experiencing record traffic but we&#8217;ve added 5x the servers. So now SpoolBot should be as fast as we have come to expect. Let us know at support@getspool.com if you see any issues. Thanks!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/189/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/189/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/189/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=189&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2011/12/21/spoolbot-is-fast-again/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3c45fd1c287dd1663a7e30e9770295cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Avichal</media:title>
		</media:content>
	</item>
		<item>
		<title>SpoolBot is Slow (right now)</title>
		<link>http://blog.getspool.com/2011/12/18/spoolbot-is-slow-right-now/</link>
		<comments>http://blog.getspool.com/2011/12/18/spoolbot-is-slow-right-now/#comments</comments>
		<pubDate>Sun, 18 Dec 2011 20:05:28 +0000</pubDate>
		<dc:creator>avichal</dc:creator>
				<category><![CDATA[Product Updates]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=187</guid>
		<description><![CDATA[Hi Spoolers, SpoolBot is experiencing tremendous load right now. We apologize but it may take a bit longer than normal &#8230;<p><a href="http://blog.getspool.com/2011/12/18/spoolbot-is-slow-right-now/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=187&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Hi Spoolers,</p>
<p>SpoolBot is experiencing tremendous load right now. We apologize but it may take a bit longer than normal to get your recordings as SpoolBot makes its way through the backlog. We&#8217;ve increased the number of SpoolBots by 5x to handle the increase in traffic and are adding more by the minute.</p>
<p>Thanks for your patience! We&#8217;ll working very hard right now to find ways to get you your recordings as quickly as possible.</p>
<p>- The Spool Team</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/187/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/187/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/187/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=187&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2011/12/18/spoolbot-is-slow-right-now/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3c45fd1c287dd1663a7e30e9770295cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Avichal</media:title>
		</media:content>
	</item>
		<item>
		<title>Spool User Party</title>
		<link>http://blog.getspool.com/2011/12/13/spool-user-party/</link>
		<comments>http://blog.getspool.com/2011/12/13/spool-user-party/#comments</comments>
		<pubDate>Wed, 14 Dec 2011 02:40:49 +0000</pubDate>
		<dc:creator>avichal</dc:creator>
				<category><![CDATA[Culture]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=166</guid>
		<description><![CDATA[Thanks to everyone who came out to the Spool User Party last week. We had a fantastic time meeting so &#8230;<p><a href="http://blog.getspool.com/2011/12/13/spool-user-party/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=166&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Thanks to everyone who came out to the Spool User Party last week. We had a fantastic time meeting so many of our users. Thank you all for using Spool!</p>
<p><a href="http://spoolblog.files.wordpress.com/2011/12/mg_3985.jpg">
<a href='http://blog.getspool.com/2011/12/13/spool-user-party/_mg_3959/' title='_MG_3959'><img data-liked='0' data-reblogged='0'data-attachment-id='167' data-orig-size='2000,1333' data-image-meta='{&quot;aperture&quot;:&quot;1.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark II&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1323376561&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;50&quot;,&quot;iso&quot;:&quot;1600&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;}' width="150" height="99" src="http://spoolblog.files.wordpress.com/2011/12/mg_3959.jpg?w=150&h=99" class="attachment-thumbnail" alt="_MG_3959" title="_MG_3959" /></a>
<a href='http://blog.getspool.com/2011/12/13/spool-user-party/_mg_4000/' title='_MG_4000'><img data-liked='0' data-reblogged='0'data-attachment-id='169' data-orig-size='1490,2000' data-image-meta='{&quot;aperture&quot;:&quot;1.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark II&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1323378447&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;50&quot;,&quot;iso&quot;:&quot;640&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;}' width="111" height="150" src="http://spoolblog.files.wordpress.com/2011/12/mg_4000.jpg?w=111&h=150" class="attachment-thumbnail" alt="_MG_4000" title="_MG_4000" /></a>
<a href='http://blog.getspool.com/2011/12/13/spool-user-party/_mg_3995/' title='_MG_3995'><img data-liked='0' data-reblogged='0'data-attachment-id='171' data-orig-size='1478,2000' data-image-meta='{&quot;aperture&quot;:&quot;1.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark II&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1323377629&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;50&quot;,&quot;iso&quot;:&quot;400&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;}' width="110" height="150" src="http://spoolblog.files.wordpress.com/2011/12/mg_3995.jpg?w=110&h=150" class="attachment-thumbnail" alt="_MG_3995" title="_MG_3995" /></a>
<a href='http://blog.getspool.com/2011/12/13/spool-user-party/_mg_3985/' title='_MG_3985'><img data-liked='0' data-reblogged='0'data-attachment-id='173' data-orig-size='2000,1333' data-image-meta='{&quot;aperture&quot;:&quot;1.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark II&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1323377302&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;50&quot;,&quot;iso&quot;:&quot;3200&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;}' width="150" height="99" src="http://spoolblog.files.wordpress.com/2011/12/mg_3985.jpg?w=150&h=99" class="attachment-thumbnail" alt="_MG_3985" title="_MG_3985" /></a>
<a href='http://blog.getspool.com/2011/12/13/spool-user-party/_mg_3967/' title='_MG_3967'><img data-liked='0' data-reblogged='0'data-attachment-id='176' data-orig-size='2000,1333' data-image-meta='{&quot;aperture&quot;:&quot;1.2&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark II&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1323376647&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;50&quot;,&quot;iso&quot;:&quot;1600&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;}' width="150" height="99" src="http://spoolblog.files.wordpress.com/2011/12/mg_3967.jpg?w=150&h=99" class="attachment-thumbnail" alt="_MG_3967" title="_MG_3967" /></a>
<a href='http://blog.getspool.com/2011/12/13/spool-user-party/_mg_3952/' title='_MG_3952'><img data-liked='0' data-reblogged='0'data-attachment-id='177' data-orig-size='2000,1242' data-image-meta='{&quot;aperture&quot;:&quot;1.4&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;Canon EOS 5D Mark II&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;1323376502&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;50&quot;,&quot;iso&quot;:&quot;1000&quot;,&quot;shutter_speed&quot;:&quot;0.025&quot;,&quot;title&quot;:&quot;&quot;}' width="150" height="93" src="http://spoolblog.files.wordpress.com/2011/12/mg_3952.jpg?w=150&h=93" class="attachment-thumbnail" alt="_MG_3952" title="_MG_3952" /></a>
</p>
<p></a></p>
<p>&nbsp;</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/166/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/166/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/166/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=166&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2011/12/13/spool-user-party/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://1.gravatar.com/avatar/3c45fd1c287dd1663a7e30e9770295cf?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">Avichal</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/mg_3959.jpg?w=150" medium="image">
			<media:title type="html">_MG_3959</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/mg_4000.jpg?w=111" medium="image">
			<media:title type="html">_MG_4000</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/mg_3995.jpg?w=110" medium="image">
			<media:title type="html">_MG_3995</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/mg_3985.jpg?w=150" medium="image">
			<media:title type="html">_MG_3985</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/mg_3967.jpg?w=150" medium="image">
			<media:title type="html">_MG_3967</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/mg_3952.jpg?w=150" medium="image">
			<media:title type="html">_MG_3952</media:title>
		</media:content>
	</item>
		<item>
		<title>SpoolBot accepts emails and attachments!</title>
		<link>http://blog.getspool.com/2011/12/13/spoolbot-accepts-emails-and-attachments/</link>
		<comments>http://blog.getspool.com/2011/12/13/spoolbot-accepts-emails-and-attachments/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 10:31:25 +0000</pubDate>
		<dc:creator>Christine</dc:creator>
				<category><![CDATA[Product Updates]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=147</guid>
		<description><![CDATA[You can now send an email with a URL or an attachment to your personal SpoolBot email address. SpoolBot will put &#8230;<p><a href="http://blog.getspool.com/2011/12/13/spoolbot-accepts-emails-and-attachments/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=147&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-148" title="email" src="http://spoolblog.files.wordpress.com/2011/12/email.png?w=529" alt=""   /></p>
<p>You can now send an email with a URL or an attachment to your personal SpoolBot email address. SpoolBot will put the contents of up to 5 URLs or any number of attachments into your Spool account!</p>
<p><strong>Add your Spool to the contacts on your phone/tablet</strong></p>
<p><a href="http://spoolblog.files.wordpress.com/2011/12/plus.png"><img class="aligncenter size-full wp-image-150" title="plus" src="http://spoolblog.files.wordpress.com/2011/12/plus.png?w=529" alt=""   /></a></p>
<p><img class="aligncenter size-full wp-image-149" title="plus_confirmation" src="http://spoolblog.files.wordpress.com/2011/12/plus_confirmation.png?w=529" alt=""   /></p>
<p><strong>Find your personalized email address in settings</strong></p>
<p><a href="http://spoolblog.files.wordpress.com/2011/12/settings.png"><img class="aligncenter size-full wp-image-159" title="settings" src="http://spoolblog.files.wordpress.com/2011/12/settings.png?w=529&h=351" alt="" width="529" height="351" /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/147/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/147/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/147/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=147&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2011/12/13/spoolbot-accepts-emails-and-attachments/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/630fcc42b9cd02758ddaa95ca2cb36ca?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">christinetieu</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/email.png" medium="image">
			<media:title type="html">email</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/plus.png" medium="image">
			<media:title type="html">plus</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/plus_confirmation.png" medium="image">
			<media:title type="html">plus_confirmation</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/settings.png" medium="image">
			<media:title type="html">settings</media:title>
		</media:content>
	</item>
		<item>
		<title>Push to a friend&#8217;s Spool!</title>
		<link>http://blog.getspool.com/2011/12/05/push-to-a-friends-spool/</link>
		<comments>http://blog.getspool.com/2011/12/05/push-to-a-friends-spool/#comments</comments>
		<pubDate>Mon, 05 Dec 2011 22:29:52 +0000</pubDate>
		<dc:creator>Curtis Spencer</dc:creator>
				<category><![CDATA[Product Updates]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=113</guid>
		<description><![CDATA[We&#8217;ve made lots of great updates to our mobile and tablet apps. In addition to being much faster and having &#8230;<p><a href="http://blog.getspool.com/2011/12/05/push-to-a-friends-spool/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=113&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We&#8217;ve made lots of great updates to our mobile and tablet apps. In addition to being much faster and having a cleaner user interface, we&#8217;ve added the ability to share with other Spool users. This means the content will just show up on their phone or iPad and be ready to enjoy! This is more reliable than email, especially on mobile, because Spool will guarantee that the content works &#8212; no worrying about Flash, multipage articles, PDF issues, etc.</p>
<p style="text-align:center;"><img class="size-full wp-image-138 alignnone" title="share_button" src="http://spoolblog.files.wordpress.com/2011/12/share_button.png?w=529" alt=""   /><img class="size-full wp-image-139" title="add_friends" src="http://spoolblog.files.wordpress.com/2011/12/add_friends.png?w=529" alt=""   /></p>
<p><strong><br />
</strong><a href="http://market.android.com/details?id=com.spool"><img class="aligncenter size-full wp-image-135" title="android_store_button" src="http://spoolblog.files.wordpress.com/2011/12/android_store_button.png?w=529" alt=""   /></a><a href="http://itunes.apple.com/us/app/spool/id467256536?ls=1&amp;mt=8"><img class="aligncenter size-full wp-image-136" title="iOS_store_button" src="http://spoolblog.files.wordpress.com/2011/12/ios_store_button.png?w=529" alt=""   /></a></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/113/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/113/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/113/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=113&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2011/12/05/push-to-a-friends-spool/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/e813e0a366e5d5ddc302fa57a0fc2fab?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">jubos</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/share_button.png" medium="image">
			<media:title type="html">share_button</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/add_friends.png" medium="image">
			<media:title type="html">add_friends</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/android_store_button.png" medium="image">
			<media:title type="html">android_store_button</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/ios_store_button.png" medium="image">
			<media:title type="html">iOS_store_button</media:title>
		</media:content>
	</item>
		<item>
		<title>Even More SpoolBot Updates</title>
		<link>http://blog.getspool.com/2011/12/03/even-more-spoolbot-updates/</link>
		<comments>http://blog.getspool.com/2011/12/03/even-more-spoolbot-updates/#comments</comments>
		<pubDate>Sat, 03 Dec 2011 19:24:32 +0000</pubDate>
		<dc:creator>dwitte</dc:creator>
				<category><![CDATA[Product Updates]]></category>
		<category><![CDATA[SpoolBot]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=116</guid>
		<description><![CDATA[Another batch of SpoolBot updates are live! Some highlights: numerous improvements to our algorithms that detect multipage articles better handling &#8230;<p><a href="http://blog.getspool.com/2011/12/03/even-more-spoolbot-updates/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=116&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Another batch of SpoolBot updates are live! Some highlights:</p>
<ul>
<li>numerous improvements to our algorithms that detect multipage articles</li>
<li>better handling of javascript click handlers on content pages</li>
<li>SpoolBot preserves on-page anchor tags (useful for table of contents, footnotes, etc.)</li>
<li>support for file links (a link to a .jpg file or a .mp3 file)</li>
<li>audio file support &#8212; SpoolBot can now send down audio files to clients. SpoolBot don&#8217;t extract audio from webpages yet, but SpoolBot knows how to deal with the data.</li>
<li>lots of performance updates.</li>
</ul>
<p><img class="aligncenter size-full wp-image-124" title="spoolbot" src="http://spoolblog.files.wordpress.com/2011/12/spoolbot.gif?w=529" alt=""   /></p>
<p>We&#8217;re pushing SpoolBot updates every few days so keep hammering on Spool and we&#8217;ll keep teaching SpoolBot to be smarter.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/116/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/116/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/116/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=116&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2011/12/03/even-more-spoolbot-updates/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/804cce84a5d38afd3840190974e93b00?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">dwitte</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/12/spoolbot.gif" medium="image">
			<media:title type="html">spoolbot</media:title>
		</media:content>
	</item>
		<item>
		<title>Fast, easy, realtime metrics using Redis bitmaps</title>
		<link>http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/</link>
		<comments>http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 20:12:39 +0000</pubDate>
		<dc:creator>Chandra Patni</dc:creator>
				<category><![CDATA[Engineering]]></category>

		<guid isPermaLink="false">http://blog.getspool.com/?p=56</guid>
		<description><![CDATA[At Spool, we calculate our key metrics in real time. Traditionally, metrics are performed by a batch job (running hourly, &#8230;<p><a href="http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/">Continue reading &#187;</a></p><img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=56&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>At <a href="http://www.getspool.com" target="_blank">Spool</a>, we calculate our key metrics in real time. Traditionally, metrics are performed by a batch job (running hourly, daily, etc.). Redis backed bitmaps allow us to perform such calculations in realtime and are extremely space efficient. In a simulation of 128 million users, a typical metric such as &#8220;daily unique users&#8221; takes less than 50 ms on a MacBook Pro and only takes 16 MB of memory. Spool doesn&#8217;t have 128 million users yet but it&#8217;s nice to know our approach will scale. We thought we&#8217;d share how we do it, in case other startups find our approach useful.</p>
<h3>Crash Course on Bitmap and Redis Bitmaps</h3>
<h4>Bitmap (aka Bitset)</h4>
<p>A Bitmap or bitset is an array of zeros and ones. A bit in a bitset can be set to either <code>0</code> or <code>1</code>, and each position in the array is referred to as an offset. Operations such as logical AND, OR, XOR, etc. and other bitwise operations are fair game for Bitmaps.</p>
<h4>Population Count</h4>
<p>The population count of a Bitmap is the number of bits set to <code>1</code>. There are efficient algorithms for calculating population count. For instance, the population count of a 90% filled bitset containing 1 billion bits took 21.1 ms on a MacBook Pro. There is even a <a href="http://en.wikipedia.org/wiki/SSE4#POPCNT_and_LZCNT">hardware instruction in SSE4</a> for the population count of an integer.</p>
<p><a href="http://spoolblog.files.wordpress.com/2011/11/bitmap_population_count.png"><img class="aligncenter size-full wp-image-60" title="bitmap_population_count" src="http://spoolblog.files.wordpress.com/2011/11/bitmap_population_count.png?w=529" alt=""   /></a></p>
<h4>Bitmaps in Redis</h4>
<p>Redis allows binary keys and binary values. Bitmaps are nothing but binary values. The <code>setbit(key, offset, value)</code> operation, which takes <code>O(1)</code> time, sets the value of a bit to <code>0</code> or <code>1</code> at the specified offset for a given key.</p>
<h3>A simple example: Daily Active Users</h3>
<p>To count unique users that logged in today, we set up a bitmap where each user is identified by an offset value. When a user visits a page or performs an action, which warrants it to be counted, set the bit to <code>1</code> at the offset representing user id. The key for the bitmap is a function of the name of the action user performed and the timestamp.</p>
<p><a href="http://spoolblog.files.wordpress.com/2011/11/unique_users.png"><img class="aligncenter size-full wp-image-64" title="unique_users" src="http://spoolblog.files.wordpress.com/2011/11/unique_users.png?w=529" alt=""   /></a></p>
<p>In this simple example, every time a user logs in we perform a <code>redis.setbit(daily_active_users, user_id, 1)</code>. This flips the appropriate offset in the daily_active_users bitmap to 1. This is an O(1) operation. Doing a population count on this results in 9 unique users that logged in today. The key is <code>daily_active_users</code> and the value is <code>1011110100100101</code>.</p>
<p>Of course, since the daily active users will change every day we need a way to create a new bitmap every day. We do this by simply appending the date to the bitmap key. For example, if we want to calculate the daily unique users who have played at least 1 song in a music app for a given day, we can set the key name to be <code>play:yyyy-mm-dd. </code>If we want to calculate the number of unique users playing a song each hour, we can name the key name will be <code>play:yyyy-mm-dd-hh</code>. For the rest of the discussion, we will stick with daily unique users that played a song. To collect daily metrics, we will simple set the user&#8217;s bit to 1 in the <code>play:yyyy-mm-dd</code> key whenever a user plays a song. This is an O(1) operation.</p>
<p><pre class="brush: plain;">
redis.setbit(play:yyyy-mm-dd, user_id, 1)
</pre></p>
<p>The unique users that played a song today is the population count of the bitmap stored as the value for the <code>play:yyyy-mm-dd</code> key.To calculate weekly or monthly metrics, we can simply compute the union of all the daily Bitmaps over the week or the month, and then calculate the population count of the resulting bitmap.</p>
<p><a href="http://spoolblog.files.wordpress.com/2011/11/union.png"><img class="aligncenter size-full wp-image-71" title="union" src="http://spoolblog.files.wordpress.com/2011/11/union.png?w=529" alt=""   /></a></p>
<p>You can also extract more complex metrics very easily. For example, the premium account holders who played a song in November would be:<br />
(<code>play:2011-11-01 ∪ play:2011-11-02 ∪...∪play:2011-11-30) ∩ premium:2011-11</code></p>
<h3>Performance comparison using 128 million users</h3>
<p>The table below shows a comparison of daily unique action calculations calculated over 1 day, 7 days and 30 days for 128 million users. The 7 and 30 metrics are calculated by combining daily bitmaps.</p>
<table>
<thead>
<tr>
<th>Period</th>
<th>Time (ms)</th>
</tr>
</thead>
<tbody>
<tr>
<td>Daily</td>
<td>50.2</td>
</tr>
<tr>
<td>Weekly</td>
<td>392.0</td>
</tr>
<tr>
<td>Monthly</td>
<td>1624.8</td>
</tr>
</tbody>
</table>
<h3>Optimizations</h3>
<p>In the above example, we can optimize the weekly and monthly computations by caching the calculated daily, weekly, monthly counts in Redis.</p>
<p>This is a very flexible approach. An added bonus of caching is that it allows fast cohort analysis, such as weekly unique users who are also mobile users &#8212; the intersection of a mobile users bitmap with a weekly active users bitmap. Or, if we want to compute rolling unique users over the last <code>n</code> days, having cached daily unique counts makes this easy &#8212; simply grab the previous <code>n-1</code> days from your cache and union it with the real time daily count, which only takes 50ms.</p>
<h3>Sample Code</h3>
<p>A Java code snippet below computes unique users for a given user action and date.</p>
<p><pre class="brush: java;">
import redis.clients.jedis.Jedis;
import java.util.BitSet;
...
  Jedis redis = new Jedis(&quot;localhost&quot;);
...
  public int uniqueCount(String action, String date) {
    String key = action + &quot;:&quot; + date;
    BitSet users = BitSet.valueOf(redis.get(key.getBytes()));
    return users.cardinality();
  }
</pre></p>
<p>The code snippet below computes the unique users for a given given user action and a list of dates.</p>
<p><pre class="brush: java;">
import redis.clients.jedis.Jedis;
import java.util.BitSet;
...
  Jedis redis = new Jedis(&quot;localhost&quot;);
...
  public int uniqueCount(String action, String... dates) {
    BitSet all = new BitSet();
    for (String date : dates) {
      String key = action + &quot;:&quot; + date;
      BitSet users = BitSet.valueOf(redis.get(key.getBytes()));
      all.or(users);
    }
    return all.cardinality();
  }
</pre></p>
<div></div>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/spoolblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/spoolblog.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/spoolblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/spoolblog.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/spoolblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/spoolblog.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/spoolblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/spoolblog.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/spoolblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/spoolblog.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/spoolblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/spoolblog.wordpress.com/56/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/spoolblog.wordpress.com/56/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/spoolblog.wordpress.com/56/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=blog.getspool.com&#038;blog=29728477&#038;post=56&#038;subd=spoolblog&#038;ref=&#038;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://blog.getspool.com/2011/11/29/fast-easy-realtime-metrics-using-redis-bitmaps/feed/</wfw:commentRss>
		<slash:comments>61</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/63b09042812754c8e25faf71e3c3f09c?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">rubyorchard</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/11/bitmap_population_count.png" medium="image">
			<media:title type="html">bitmap_population_count</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/11/unique_users.png" medium="image">
			<media:title type="html">unique_users</media:title>
		</media:content>

		<media:content url="http://spoolblog.files.wordpress.com/2011/11/union.png" medium="image">
			<media:title type="html">union</media:title>
		</media:content>
	</item>
	</channel>
</rss>
