<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0"><channel><atom:link rel="hub" href="http://tumblr.superfeedr.com/" xmlns:atom="http://www.w3.org/2005/Atom"/><description>FavRatio is an open source Twitter favorite aggregator.

Follow @FavRatio on Twitter to have your favs counted.

http://favratio.com

http://favratio.com/top

http://favratio.com/recent</description><title>FavRatio blog</title><generator>Tumblr (3.0; @favratio)</generator><link>http://favratio.tumblr.com/</link><item><title>catching up</title><description>&lt;p&gt;The crawler&amp;#8217;s been trying to make the best of having only 150 API hits per hour for a couple weeks now. I haven&amp;#8217;t had much time to work on the site lately, but once I dug in tonight, I discovered that for some reason &lt;strong&gt;the OAuth token and secret for @FavRatio had changed.&lt;/strong&gt; That&amp;#8217;s all it was. I reconfigured it to use the new token and secret, and now it&amp;#8217;s back to 350 API hits per hour. The crawler is well on its way to catching back up and staying totally up to date.&lt;/p&gt;
&lt;p&gt;I feel kind of stupid realizing that it would have been such an easy fix this whole time.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/3207567311</link><guid>http://favratio.tumblr.com/post/3207567311</guid><pubDate>Wed, 09 Feb 2011 18:51:07 -0600</pubDate><category>crawler</category></item><item><title>It's nice to have such a clean look on the site. But, one of the things I like to do is check out people who I see frequently have starred tweets that I've also starred (a way to find new people to follow). Is there a reason beyond creating white space that you've made the icons/avis under the tweets so very, very tiny?</title><description>&lt;p&gt;I hoped to accomplish a couple things by making the faver avatars small:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;To maintain a somewhat clean look, as you mentioned. (thanks!)&lt;/li&gt;
&lt;li&gt;To create more focus on the content and author of the tweet and less on the people who starred it.&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;That’s just a site default, though. Once I have profiles completely working (&lt;strong&gt;login with Twitter&lt;/strong&gt;, at the top right), this will probably become a setting you can configure: whether to show avatars at 12, 24, or 48 px.&lt;/p&gt;
&lt;p&gt;By the way, there’s a part of the user detail page (&lt;a href="http://favratio.com/user/"&gt;http://favratio.com/user/&lt;/a&gt;&lt;em&gt;yourTwitterUsername&lt;/em&gt;) that shows people who seem to have had similar taste to you recently — they have the most favs in common with you. Does that help?&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/3100887385</link><guid>http://favratio.tumblr.com/post/3100887385</guid><pubDate>Thu, 03 Feb 2011 23:57:49 -0600</pubDate></item><item><title>new stats</title><description>&lt;p&gt;There&amp;#8217;s now a whole page of system-wide stats at &lt;a href="http://favratio.com/system-stats"&gt;&lt;a href="http://favratio.com/system-stats"&gt;http://favratio.com/system-stats&lt;/a&gt;&lt;/a&gt;. For each interval you can see who starred the most, who earned the most stars, who earned the highest cumulative FavWeight score, etc.&lt;/p&gt;
&lt;p&gt;There will be more statistics to come, but these are a few basic ones to get started.&lt;/p&gt;
&lt;p&gt;Can you think of other system-wide statistics that would be interesting to see?&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/3100790956</link><guid>http://favratio.tumblr.com/post/3100790956</guid><pubDate>Thu, 03 Feb 2011 23:49:56 -0600</pubDate></item><item><title>crawler changes</title><description>&lt;p&gt;Over the past few days I&amp;#8217;ve been doing a lot of behind-the-scenes work: rearranging code, refactoring it to be simpler and execute more quickly, etc. Not much has changed with the appearance of the site, but the crawler now operates a bit differently than before.&lt;/p&gt;
&lt;p&gt;In addition to dynamically speeding up or backing off depending on how many tweets were found, the crawler now has the ability to &amp;#8220;catch up&amp;#8221; if it falls behind by requesting additional &amp;#8220;pages&amp;#8221; of tweets (groups of 20) until it&amp;#8217;s sure it&amp;#8217;s found everything it had missed by waiting too long to crawl. This is limited at the moment to 5 pages, or 100 tweets.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The statistics now show how far the crawler is behind, if at all, and how many crawls are queued, i.e., how many tweeters should have been crawled already according to their current crawl rate.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is helping the crawler adjust to the recent development of being allowed to use only 150 API hits per hour, which is down from 350 just a week or so ago. This may have been caused by some bug in FavRatio that&amp;#8217;s appeared now that I&amp;#8217;ve been trying to get OAuth (sign in using Twitter) working.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;You should soon be able to star tweets directly from FavRatio after signing in&amp;#8230;that&amp;#8217;s the first goal of the OAuth integration.&lt;/strong&gt;&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/3075103005</link><guid>http://favratio.tumblr.com/post/3075103005</guid><pubDate>Wed, 02 Feb 2011 16:43:24 -0600</pubDate><category>crawler</category></item><item><title>faster page loads</title><description>&lt;p&gt;The system-wide stats available in the right-hand column used to be calculated every time a page was loaded. Now they&amp;#8217;re cached for a few minutes, which should speed up the site a bit.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2915730894</link><guid>http://favratio.tumblr.com/post/2915730894</guid><pubDate>Mon, 24 Jan 2011 18:12:19 -0600</pubDate></item><item><title>simplify the display</title><description>&lt;p&gt;There is now a settings menu on the right hand side that lets you hide any of the additional information about tweets that you may not care about or want to see, including:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;the avatar of the person who wrote the tweet&lt;/li&gt;
&lt;li&gt;the time the tweet was posted&lt;/li&gt;
&lt;li&gt;the links to Favstar and/or Twitter&lt;/li&gt;
&lt;li&gt;the avatars of people who faved the tweet&lt;/li&gt;
&lt;li&gt;the total number of stars&lt;/li&gt;
&lt;li&gt;the total FavWeight&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Make it as minimal or as complex as you like. It&amp;#8217;s up to you.&lt;/p&gt;
&lt;p&gt;For the time being this is session-based, meaning it will reset if you close your browser and come back later. Once OAuth is working, you&amp;#8217;ll be able to save these preferences as part of your profile, and FavRatio will retain the look you want every time you visit the site.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2850075683</link><guid>http://favratio.tumblr.com/post/2850075683</guid><pubDate>Thu, 20 Jan 2011 19:28:15 -0600</pubDate></item><item><title>links to Favstar</title><description>&lt;p&gt;Each tweet now has a link to its page on Favstar. The Favstar links are there to provide information that only Favstar can, such as the total number of stars each tweet gathered across all of Twitter (not just the FavRatio members), the number of RTs, etc. It&amp;#8217;s also meant to be a goodwill gesture; I think FavRatio and Favstar should complement, rather than compete with, each other.&lt;/p&gt;
&lt;p&gt;I made some other changes to the layout today to try to reduce visual clutter.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2803392678</link><guid>http://favratio.tumblr.com/post/2803392678</guid><pubDate>Mon, 17 Jan 2011 19:06:32 -0600</pubDate></item><item><title>new stat: similar tastes</title><description>&lt;p&gt;The tweeter detail page (&lt;a href="http://favratio.com/user/yoyoha"&gt;&lt;a href="http://favratio.com/user/yoyoha"&gt;http://favratio.com/user/yoyoha&lt;/a&gt;&lt;/a&gt;, for example) now checks all of the stars that person has given over a certain time period, looks at who else starred those tweets, and shows a list of the top ten people that starred the same tweets &amp;#8212; that is, the other tweeters whose &amp;#8220;tastes&amp;#8221; have been similar over that time period.&lt;/p&gt;
&lt;p&gt;Right now it only pays attention to stars given over the past day, because this particular stat is &amp;#8220;expensive&amp;#8221; from a database and computation standpoint. If I can improve that, I&amp;#8217;ll probably make it look at stars given over the past week in order to match the time period of the other stats.&lt;/p&gt;
&lt;p&gt;What other stats would you like to see?&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2797985657</link><guid>http://favratio.tumblr.com/post/2797985657</guid><pubDate>Mon, 17 Jan 2011 13:03:13 -0600</pubDate><category>stats</category></item><item><title>more crawler tweaking</title><description>&lt;p&gt;Making a computer try to anticipate when you&amp;#8217;ll have new stars to collect is tricky.&lt;/p&gt;
&lt;p&gt;The latest approach works like this:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;When FavRatio first starts checking your stars, it will check every 30 minutes.&lt;/li&gt;
&lt;li&gt;At any time, if it finds 0 stars, it will reset to checking every 30 minutes.&lt;/li&gt;
&lt;li&gt;At any time, if it finds 20 stars, it will crawl a lot sooner next time; the current &amp;#8220;panic&amp;#8221; rate is one crawl per 7 minutes.&lt;/li&gt;
&lt;li&gt;If it finds 11 or less stars, but not 0, it will back off the crawl rate a little bit.&lt;/li&gt;
&lt;li&gt;If it finds between 12 and 19 stars, that&amp;#8217;s the &amp;#8220;sweet spot,&amp;#8221; and it&amp;#8217;ll continue crawling at whatever rate it has settled on.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;These are the design principles:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Finding 20 stars, the maximum that Twitter will tell you about, is bad&lt;/strong&gt;; it&amp;#8217;s more likely that some stars were missed than that, by sheer coincidence, you&amp;#8217;ve given exactly 20 stars since the last crawl. &lt;strong&gt;Panic! Confusion! Loud noises! &lt;/strong&gt;Actually, it&amp;#8217;ll just crawl a lot sooner, in the hope that less than 20 stars will be collected next time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finding 0 stars is bad&lt;/strong&gt;; maybe you&amp;#8217;re sleeping or just away from Twitter&amp;#8230;why waste an API hit if it&amp;#8217;s not going to find anything?&lt;/li&gt;
&lt;li&gt;Finding only a few stars, like 3 (up to 11, actually), means FavRatio can probably crawl a little slower and still not miss any stars, so it&amp;#8217;ll do so in order to make the most efficient use of the API hits.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finding 12 or more stars, but not 20, seems just about right.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;</description><link>http://favratio.tumblr.com/post/2787222779</link><guid>http://favratio.tumblr.com/post/2787222779</guid><pubDate>Sun, 16 Jan 2011 20:07:59 -0600</pubDate><category>crawler</category></item><item><title>faster FavRatio</title><description>&lt;p&gt;All of the boards (recent, weighted, most stars, and underfollowed) now load and &amp;#8220;page&amp;#8221; much faster due to some database denormalization and query optimizations I made today. If you use the site regularly, I hope you&amp;#8217;ll notice a difference.&lt;/p&gt;
&lt;p&gt;If you don&amp;#8217;t use the site regularly, why not?&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2751697486</link><guid>http://favratio.tumblr.com/post/2751697486</guid><pubDate>Fri, 14 Jan 2011 18:44:02 -0600</pubDate></item><item><title>counting every star</title><description>&lt;p&gt;In the past if you starred a tweet written by someone who wasn&amp;#8217;t on FavRatio, it wouldn&amp;#8217;t be counted. This was because during a crawl, every author of a starred tweet would be added to the DB and automatically included in the crawler&amp;#8230;but not all tweet authors found during crawls do any starring at all; API calls to crawl them are wasted, so the tweet authors were simply never added to the DB at all&amp;#8230;which meant their tweets didn&amp;#8217;t show up if they weren&amp;#8217;t members.&lt;/p&gt;
&lt;p&gt;Now FavRatio differentiates between tweeters that will be crawled and tweeters that have just written tweets that FavRatio members have starred. Of the thousands of tweeters now in the DB, only a subset of them (members) are crawled. Many, many more tweets are now showing up because of this.&lt;/p&gt;
&lt;p&gt;The other nice side effect is that all of your stars are counted, regardless of who received your stars.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2740466141</link><guid>http://favratio.tumblr.com/post/2740466141</guid><pubDate>Thu, 13 Jan 2011 23:14:15 -0600</pubDate><category>crawler</category></item><item><title>"underfollowed" leaderboards</title><description>&lt;p&gt;There&amp;#8217;s a new &lt;strong&gt;maxfollowers&lt;/strong&gt; GET parameter that will limit any leaderboard or &amp;#8220;recent&amp;#8221; page to display only tweets from accounts with no more than the specified amount of followers.&lt;/p&gt;
&lt;p&gt;So, for example, if you want to see today&amp;#8217;s highest-FavWeighted tweets from people with no more than 500 followers, try: &lt;a href="http://favratio.com/top/day/weighted?maxfollowers=500"&gt;&lt;a href="http://favratio.com/top/day/weighted?maxfollowers=500"&gt;http://favratio.com/top/day/weighted?maxfollowers=500&lt;/a&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;To see all of the tweets from people with 1000 followers or less during the past hour in chronological order (newest first), try: &lt;a href="http://favratio.com/recent/hour?maxfollowers=1000"&gt;&lt;a href="http://favratio.com/recent/hour?maxfollowers=1000"&gt;http://favratio.com/recent/hour?maxfollowers=1000&lt;/a&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course, you can combine any of the GET parameters in any way you&amp;#8217;d like. This URL shows the week&amp;#8217;s top FavWeighted tweets with at least 3 stars from people with 300 or less followers: &lt;a href="http://favratio.com/top/week/weighted?minfavs=3&amp;amp;maxfollowers=300"&gt;&lt;a href="http://favratio.com/top/week/weighted?minfavs=3&amp;amp;maxfollowers=300"&gt;http://favratio.com/top/week/weighted?minfavs=3&amp;amp;maxfollowers=300&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;One of these days I&amp;#8217;ll build something into the interface so that you can use something like number input form fields or slider controls instead of directly changing the URL like this. In the meantime, try experimenting with different &lt;strong&gt;minfavs&lt;/strong&gt;, &lt;strong&gt;minweight&lt;/strong&gt;, and &lt;strong&gt;maxfollowers&lt;/strong&gt; numbers!&lt;/p&gt;
&lt;p&gt;What other little &amp;#8220;tweaks&amp;#8221; like this would you like to see on FavRatio?&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2733339078</link><guid>http://favratio.tumblr.com/post/2733339078</guid><pubDate>Thu, 13 Jan 2011 15:19:36 -0600</pubDate></item><item><title>fans and crushes</title><description>&lt;p&gt;The &amp;#8220;user detail&amp;#8221; page on FavRatio now shows the top 10 people over the last week who:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;received faves from the person &lt;strong&gt;(crushes)&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;gave faves to the person &lt;strong&gt;(fans)&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;For example: &lt;a href="http://favratio.com/user/3hoss"&gt;&lt;a href="http://favratio.com/user/3hoss"&gt;http://favratio.com/user/3hoss&lt;/a&gt;&lt;/a&gt;&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2719486407</link><guid>http://favratio.tumblr.com/post/2719486407</guid><pubDate>Wed, 12 Jan 2011 16:58:13 -0600</pubDate></item><item><title>better crawling</title><description>&lt;p&gt;&lt;a href="http://favratio.com"&gt;FavRatio&lt;/a&gt; now automatically adjusts how often it crawls (checks your stars) based on how many new stars it saw the last time it crawled you. For the moment, the logic &amp;#8212; which I&amp;#8217;m still tweaking &amp;#8212; works like this:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;If it found 0 stars, it&amp;#8217;ll wait an hour before crawling you again.&lt;/li&gt;
&lt;li&gt;If it found only a handful, it&amp;#8217;ll crawl you 20 minutes later than it did the last time.&lt;/li&gt;
&lt;li&gt;If it found more than a handful, but less than 10, it&amp;#8217;ll crawl you 10 minutes later than last time.&lt;/li&gt;
&lt;li&gt;If it found 10 or more, it&amp;#8217;ll crawl you 10 minutes later than last time.&lt;/li&gt;
&lt;li&gt;If it found 20, it&amp;#8217;ll crawl you 20 minutes earlier than last time.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;The idea is to use each crawl to gather as many new stars as possible &amp;#8212; that is, close to 20 &amp;#8212; without missing any stars. The intent is that it will back off the crawl rate when not much starring is occurring (while you&amp;#8217;re sleeping, for example) but crawl faster if it notices that you&amp;#8217;re starring tweets more often.&lt;/p&gt;
&lt;p&gt;It doesn&amp;#8217;t make much sense to use an API hit every hour for 6 hours while you sleep when it&amp;#8217;s not going to find any stars anyway. This algorithm, or something like it, will be a way to make sure those precious few 350 API hits per hour can be used to efficiently crawl faves for over 400 tweeters&amp;#8230;and counting.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2707334071</link><guid>http://favratio.tumblr.com/post/2707334071</guid><pubDate>Tue, 11 Jan 2011 20:51:00 -0600</pubDate><category>crawler</category></item><item><title>new tweeter detail pages</title><description>&lt;p&gt;I was traveling during the past week and didn&amp;#8217;t have much time to work on the site, but I wanted to mention a couple new features:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;recent tweets:&lt;/strong&gt; all of the tweets someone has posted in the last week&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;given favs:&lt;/strong&gt; all of the tweets someone starred in the last week, hour, day, month, etc.&lt;/li&gt;
&lt;/ul&gt;&lt;p&gt;Both of these pages are now linked from the tweeter detail page (&lt;a href="http://favratio.com/user/badbanana"&gt;&lt;a href="http://favratio.com/user/badbanana"&gt;http://favratio.com/user/badbanana&lt;/a&gt;&lt;/a&gt;, for example)&lt;/p&gt;
&lt;p&gt;Neither of these are new to anyone who&amp;#8217;s used star sites before; they just weren&amp;#8217;t available on FavRatio until now.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;[EDIT]&lt;/em&gt;&lt;/strong&gt; I forgot to mention a new feature that&amp;#8217;s actually new! The &lt;strong&gt;earned:given&lt;/strong&gt; ratio now displays on the tweeter detail page. It shows how many tweets someone starred for every star they earned &amp;#8212; or vice versa &amp;#8212; over a given period&amp;#8230;whichever is larger.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2703809639</link><guid>http://favratio.tumblr.com/post/2703809639</guid><pubDate>Tue, 11 Jan 2011 17:06:00 -0600</pubDate></item><item><title>customized fav and weight thresholds</title><description>&lt;p&gt;Other fav sites&amp;#8217; various leaderboards have used the hard-coded minimum thresholds 3, 10, 30, 50, 100&amp;#8230;sometimes the exact number isn&amp;#8217;t published. FavRatio now lets you choose whatever arbitrary threshold of favs you&amp;#8217;d like, and you can do it with FavWeights, too.&lt;/p&gt;
&lt;p&gt;By changing the URL, you can dynamically filter the leaderboards (both traditional and weighted) to show only tweets with a minimum number of favs, a minimum FavWeight, or both. Use the &lt;strong&gt;minfavs &lt;/strong&gt;and/or &lt;strong&gt;minweight &lt;/strong&gt;GET parameters in the URL.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;Compare &lt;a href="http://favratio.com/top/day/weighted?minfavs=22"&gt;&lt;a href="http://favratio.com/top/day/weighted?minfavs=22"&gt;http://favratio.com/top/day/weighted?minfavs=22&lt;/a&gt;&lt;/a&gt; to the regular weighted leaderboard (&lt;a href="http://favratio.com/top/day/weighted"&gt;&lt;a href="http://favratio.com/top/day/weighted"&gt;http://favratio.com/top/day/weighted&lt;/a&gt;&lt;/a&gt;) Even if a fav is heavily weighted, it won&amp;#8217;t show up at the former URL unless it wasn&amp;#8217;t faved by at least 22 people. Thus, there are many fewer pages to scroll through at the first URL.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://favratio.com/top/day?minweight=0.5"&gt;&lt;a href="http://favratio.com/top/day?minweight=0.5"&gt;http://favratio.com/top/day?minweight=0.5&lt;/a&gt;&lt;/a&gt; will show less tweets than the standard leaderboard, since a tweet has to be heavily weighted &lt;em&gt;in addition to &lt;/em&gt;earning a lot of individual favs to appear at this URL.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://favratio.com/top/day/weighted?minfavs=13&amp;amp;minweight=0.6"&gt;&lt;a href="http://favratio.com/top/day/weighted?minfavs=13&amp;amp;minweight=0.6"&gt;http://favratio.com/top/day/weighted?minfavs=13&amp;amp;minweight=0.6&lt;/a&gt;&lt;/a&gt; will only show tweets that earned at least 13 favs &lt;em&gt;and also &lt;/em&gt;have a FavWeight of at least 0.600, ranked by FavWeight.&lt;/p&gt;
&lt;p&gt;If you want to see a standard leaderboard of just those tweets that earned over 10 favs, like some other fav sites, use &lt;a href="http://favratio.com/top/day?minfavs=10"&gt;&lt;a href="http://favratio.com/top/day?minfavs=10"&gt;http://favratio.com/top/day?minfavs=10&lt;/a&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This allows you to create leaderboards that are as inclusive or restrictive as you prefer. The combinations are endless. Please feel free to experiment!&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2600297789</link><guid>http://favratio.tumblr.com/post/2600297789</guid><pubDate>Tue, 04 Jan 2011 16:20:34 -0600</pubDate><category>FavWeight</category><category>leaderboards</category></item><item><title>one crawl per hour</title><description>&lt;p&gt;I&amp;#8217;ve come to discover that the Twitter API rate limit isn&amp;#8217;t based on a rolling hour as I previously thought; it begins counting down an hour when you make a request, and it will stop you if you reach the limit before that hour has passed.&lt;/p&gt;
&lt;p&gt;This is totally different from the way I mistakenly thought it worked, which was thus: as long as you haven&amp;#8217;t made over 350 requests over the last 60 minutes &lt;em&gt;at any given moment&lt;/em&gt;, you have API hits available. Not true. This is why you&amp;#8217;re supposed to read the manual before you plug something in&amp;#8230;&lt;/p&gt;
&lt;p&gt;Now the crawler code is much simpler because it only needs to check if there are enough hits remaining to do a crawl, and if not, wait until the &amp;#8220;reset time&amp;#8221; the Twitter API kindly provides.&lt;/p&gt;
&lt;p&gt;This is bad because ever since the number of tweeters passed 175, FavRatio can no longer crawl multiple times per hour. Once per hour for everyone: that&amp;#8217;s it.&lt;/p&gt;
&lt;p&gt;This is good because the code is simpler, and &lt;strong&gt;it makes no difference to the crawler if we add another 150 tweeters or so. &lt;/strong&gt;Come on over, and tell your friends!&lt;/p&gt;
&lt;p&gt;However, the crawler is still inefficient. It checks the favs of every tweeter during every crawl. Some tweeters fav frequently and some don&amp;#8217;t, but this doesn&amp;#8217;t account for that. This wastes API hits checking tweeters that the system should be able to predict will probably not have enough favs to make them worth checking yet.&lt;/p&gt;
&lt;p&gt;As alluded to previously, the crawler operation will soon be changed from a single all-or-nothing crawl to dynamic crawls based on the likelihood that close to 20 favs will be collected for each user in the crawl, to make far more efficient use of the limited requests per hour. In fact, a crawl could probably run every minute, only checking favs for tweeters that, based on their recent starring behavior, have probably accumulated close to (but not over!) 20 stars by then.&lt;/p&gt;
&lt;p&gt;The need for this smarter crawler is more pressing, because until this happens, &lt;strong&gt;some favs will be lost if you give more than 20 stars per hour.&lt;/strong&gt;&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2591662237</link><guid>http://favratio.tumblr.com/post/2591662237</guid><pubDate>Mon, 03 Jan 2011 23:00:10 -0600</pubDate><category>crawler</category></item><item><title>the temperamental crawler</title><description>&lt;p&gt;The crawler still requires a fair amount of babysitting and tweaking. I&amp;#8217;ve been steadily adding new tweeters, and the crawl interval has been automatically inching upward in response.&lt;/p&gt;
&lt;p&gt;This is good because it&amp;#8217;s designed to do that, and as a result it&amp;#8217;s being well behaved in the Twitter API&amp;#8217;s eyes. This is also bad because it now has to wait over a half hour between crawls.&lt;/p&gt;
&lt;p&gt;Pretty soon one of 3 things needs to happen:&lt;/p&gt;
&lt;ol&gt;&lt;li&gt;Twitter whitelists FavRatio&lt;/li&gt;
&lt;li&gt;I stop adding new tweeters and/or remove tweeters that don&amp;#8217;t give many/any stars&lt;/li&gt;
&lt;li&gt;We accept that some stars will be missed as the crawls happen less and less often&lt;/li&gt;
&lt;/ol&gt;&lt;p&gt;I don&amp;#8217;t consider either of the last two to be preferable, but there&amp;#8217;s only so much you can do with 350 API requests per hour. I&amp;#8217;ll probably also start working on a priority system so that not every tweeter gets crawled on the same schedule; those who only tend to give no more than 5 stars per hour, for example, will only be crawled once per 4 hours, since that would collect all 20 of their most recent stars. That should make better use of those precious, paltry 350 API requests.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2590651634</link><guid>http://favratio.tumblr.com/post/2590651634</guid><pubDate>Mon, 03 Jan 2011 21:46:03 -0600</pubDate></item><item><title>new stats</title><description>&lt;p&gt;New tweeters have been joining (hi!) and FavRatio still isn&amp;#8217;t whitelisted, so it&amp;#8217;s still restricted to 350 API calls per hour by Twitter. With 145 tweeters (at the moment), FavRatio can&amp;#8217;t check everyone&amp;#8217;s favorites every 15 minutes anymore. That would require 580 API calls per hour.&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve made a few changes to the crawler recently that allow it to dynamically adjust the frequency of crawls according to the number of API requests available per hour, factoring in the number of tweeters whose favs will be crawled. There&amp;#8217;s a new stat, &lt;strong&gt;minimum crawl interval&lt;/strong&gt;, that shows how often crawls can occur.&lt;/p&gt;
&lt;p&gt;The time of the &lt;strong&gt;last crawl&lt;/strong&gt; as well as the time at which the &lt;strong&gt;next crawl &lt;/strong&gt;can occur are shown as well.&lt;/p&gt;
&lt;p&gt;Other stats, provided directly by the Twitter API, include &lt;strong&gt;API hits used&lt;/strong&gt;, &lt;strong&gt;API hits remaining&lt;/strong&gt;, and the &lt;strong&gt;API hourly limit&lt;/strong&gt;. I hope the latter increases from 350 to 20,000 soon.&lt;/p&gt;
&lt;p&gt;The crawler &amp;#8220;backs off&amp;#8221; if, for whatever reason, it has been crawling too frequently and the current crawl would exceed the rate limit before completing. This should keep the crawler &amp;#8220;well behaved&amp;#8221; in the eyes of the Twitter API, never exceeding its rate limit. And it won&amp;#8217;t perform a crawl unless it knows it&amp;#8217;ll be able to collect favs for every tweeter in the system.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Crawler efficiency &lt;/strong&gt;refers to how many of the available API calls over the last hour were used for fav crawling.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2583398958</link><guid>http://favratio.tumblr.com/post/2583398958</guid><pubDate>Mon, 03 Jan 2011 11:55:15 -0600</pubDate></item><item><title>FavWeight minimums</title><description>&lt;p&gt;I noticed that as FavRatio began looking at new people, the first few favs of theirs would get recorded with a pretty high FavWeight: 0.5 if it had seen only 2 favs over the past &amp;#8220;week&amp;#8221; (really the same as only having seen 2 favs over the past hour or just during the last crawler run). Same for 3 favs seen: 0.333. It doesn&amp;#8217;t sound like much, but these are orders of magnitude higher than FavWeights over the same time period for tweeters that have been getting crawled longer.&lt;/p&gt;
&lt;p&gt;That inappropriately skews the leaderboards and unfairly awards heavier weights to favs from newly-added tweeters. And the FavWeight is supposed to reflect the relative value of the fav according to how many favs the faver gives, not the &amp;#8220;newness&amp;#8221; of the faver.&lt;/p&gt;
&lt;p&gt;To fix this, I created some &lt;strong&gt;minimum thresholds&lt;/strong&gt;. For example, it&amp;#8217;s currently set so that when a new person is added to the crawler, their favs won&amp;#8217;t count toward the weighted scores until the crawler has recorded at least 8 favs of theirs within the past week. That shouldn&amp;#8217;t take long&amp;#8230;less than a day, possibly less than an hour. After that, their favs will count toward the weighted leaderboards, in a more equitable manner compared to the tweeters that have been getting crawled longer.&lt;/p&gt;
&lt;p&gt;These settings are configured in the INI file under the &lt;strong&gt;[favweight]&lt;/strong&gt; section: MIN_FAVS_PER_MINUTE, MIN_FAVS_PER_HOUR, MIN_FAVS_PER_DAY, MIN_FAVS_PER_WEEK, and MIN_FAVS_PER_MONTH.&lt;/p&gt;
&lt;p&gt;The crawler is now using these minimum thresholds, and past FavWeights that were recorded too high have been lowered to reflect the maximum FavWeight possible during each time period&amp;#8230;so the weighted leaderboards are displaying what they would have been if the minimum thresholds been in place all along.&lt;/p&gt;</description><link>http://favratio.tumblr.com/post/2573964276</link><guid>http://favratio.tumblr.com/post/2573964276</guid><pubDate>Sun, 02 Jan 2011 18:47:29 -0600</pubDate><category>FavWeight</category></item></channel></rss>
