<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Spark Theory Labs</title>
	<atom:link href="http://sparktheorylabs.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://sparktheorylabs.com</link>
	<description>A coder&#039;s sandbox to experiment, learn, and play</description>
	<lastBuildDate>Sat, 29 Sep 2012 00:40:05 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.4.2</generator>
		<item>
		<title>Shutting down my Sparks server</title>
		<link>http://sparktheorylabs.com/2012/09/shutting-down-my-sparks-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=shutting-down-my-sparks-server</link>
		<comments>http://sparktheorylabs.com/2012/09/shutting-down-my-sparks-server/#comments</comments>
		<pubDate>Sat, 29 Sep 2012 00:40:05 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=329</guid>
		<description><![CDATA[Apparently Amazon only allows their free tier server for a year (who knew?). So I&#8217;ve shut down the Sparks server until im in a better place financially. Feels kinda sad&#8230; &#160; &#160;]]></description>
			<content:encoded><![CDATA[<p>Apparently Amazon only allows their free tier server for a year (who knew?). So I&#8217;ve shut down the Sparks server until im in a better place financially. Feels kinda sad&#8230; <img src='http://sparktheorylabs.com/wp-includes/images/smilies/icon_sad.gif' alt=':(' class='wp-smiley' /> </p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/09/shutting-down-my-sparks-server/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retiring Twitter Spam Assassin</title>
		<link>http://sparktheorylabs.com/2012/04/retiring-twitter-spam-assassin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=retiring-twitter-spam-assassin</link>
		<comments>http://sparktheorylabs.com/2012/04/retiring-twitter-spam-assassin/#comments</comments>
		<pubDate>Sun, 08 Apr 2012 14:51:22 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=325</guid>
		<description><![CDATA[Its come to the end of Twitter Spam Assassin. I&#8217;ve been working on this project for a little over five months and have decided to shut it down. It its prime, I was finding around 25,000 spam accounts a day with a 97% accuracy. And that with only looking at less than 1% of public ...]]></description>
			<content:encoded><![CDATA[<p>Its come to the end of Twitter Spam Assassin. I&#8217;ve been working on this project for a little over five months and have decided to shut it down.</p>
<p>It its prime, I was finding around 25,000 spam accounts a day with a 97% accuracy. And that with only looking at less than 1% of public timeline. The bottleneck is the amount of spam Twitter will allow me to report (which is around 2,000 a day). After having conversations with Twitter they were a big help, but not in this area of actually reporting spam.</p>
<p>Given the amount of spam I&#8217;m able to report and the operational costs of running the system, it doesn&#8217;t make sense to continue the project.</p>
<p>It was a great project and a lot of fun. I far exceed my initial expectations of how much spam I could fine and I learned a lot about Amazon AWS, coding, multithreading, mysql and more. So I&#8217;m quite happy with how the project turned out. <img src='http://sparktheorylabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/04/retiring-twitter-spam-assassin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New high record for spam found in a day.</title>
		<link>http://sparktheorylabs.com/2012/02/new-high-record-for-spam-found-in-a-day/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-high-record-for-spam-found-in-a-day</link>
		<comments>http://sparktheorylabs.com/2012/02/new-high-record-for-spam-found-in-a-day/#comments</comments>
		<pubDate>Sun, 26 Feb 2012 16:14:55 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=321</guid>
		<description><![CDATA[When I added multiprocessing to my code a week or so ago, it caused a lot of problems. Everything from my db dropping, threads getting stuck, and more. I finally got my code to work asynchronously with stability a couple days ago. Yesterday I found 24,137 spammers in a 24 hour period setting a new best that ...]]></description>
			<content:encoded><![CDATA[<p>When I added multiprocessing to my code a week or so ago, it caused a lot of problems. Everything from my db dropping, threads getting stuck, and more. I finally got my code to work asynchronously with stability a couple days ago. Yesterday I found 24,137 spammers in a 24 hour period setting a new best that was 5x the previous record. At this pace I&#8217;ll hit the half million mark in just a few days <img src='http://sparktheorylabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/02/new-high-record-for-spam-found-in-a-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Announcing a new project, Oncall, and its open source</title>
		<link>http://sparktheorylabs.com/2012/02/announcing-a-new-project-oncall-and-its-open-source/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=announcing-a-new-project-oncall-and-its-open-source</link>
		<comments>http://sparktheorylabs.com/2012/02/announcing-a-new-project-oncall-and-its-open-source/#comments</comments>
		<pubDate>Wed, 22 Feb 2012 00:24:37 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[oncall]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=318</guid>
		<description><![CDATA[Hey all, I just launched a new project called Oncall. Its an alerting system to augment your IT monitoring solution to help make being on call easier and integrate into your phone via text and voice. This is my first open source project (which there is a lot I am learning about) and I&#8217;m pretty ...]]></description>
			<content:encoded><![CDATA[<p>Hey all,</p>
<p>I just launched a new project called Oncall. Its an alerting system to augment your IT monitoring solution to help make being on call easier and integrate into your phone via text and voice. This is my first open source project (which there is a lot I am learning about) and I&#8217;m pretty excited about it. I really wanted this software to be real easy to implement and work well for small teams of people (like 1 or 2), to hundreds of people and many teams of people.</p>
<p>Essentially how it works is you setup a server running Oncall-server. Your monitoring solution (ie Nagios, Solar Winds, hostmon, etc) sends alerts to oncall via http. Oncall then routes that alert to you phone (using <a href="http://www.twilio.com">Twilio</a> API) by either calling you or texting you (depends on how you configure the software). The alert naturally escalates unless someone acknowledges it by text message or phone.</p>
<p>People and alerts can be associated with a team to ensure the right alert gets sent to the right people and the entire system is manageable via text messages. So you can do whatever you need to where ever you are.</p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/02/announcing-a-new-project-oncall-and-its-open-source/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Enter LRU caching</title>
		<link>http://sparktheorylabs.com/2012/02/enter-lru-caching/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=enter-lru-caching</link>
		<comments>http://sparktheorylabs.com/2012/02/enter-lru-caching/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 21:41:49 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=311</guid>
		<description><![CDATA[Now that i&#8217;ve opened the flood gates of tweets to my code, I started to run into an issue where my MySQL (Amazon RDS) was starting to fail under the pressure. Simply, I was making too many queries for it to handle. To remedy that, I&#8217;ve added LRU (Least Recently Used) caching algorithm to my ...]]></description>
			<content:encoded><![CDATA[<p>Now that i&#8217;ve opened the flood gates of tweets to my code, I started to run into an issue where my MySQL (Amazon RDS) was starting to fail under the pressure. Simply, I was making too many queries for it to handle. To remedy that, I&#8217;ve added LRU (<a href="http://en.wikipedia.org/wiki/Caching_algorithm#Least_Recently_Used">Least Recently Used</a>) caching algorithm to my code. This allows me to cache a large list of twitter accounts that I&#8217;ve already analyzed and not have to ask the db if I&#8217;ve seen this account or not.</p>
<p>When my code starts up, it loads a very large list of all active twitter accounts that I&#8217;ve already looked at into memory and then is maintained locally after that. This allows me to make only one query to my db instead of thousands (or even hundred of thousands). It seems to of solved my db crashing issue that I was running into. At least, so far it seems that way.</p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/02/enter-lru-caching/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hello whitelisting!</title>
		<link>http://sparktheorylabs.com/2012/02/hello-whitelisting/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hello-whitelisting</link>
		<comments>http://sparktheorylabs.com/2012/02/hello-whitelisting/#comments</comments>
		<pubDate>Sun, 19 Feb 2012 05:07:19 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=304</guid>
		<description><![CDATA[The good folks over at Twitter have recently reached out and contacted me. They have been nice enough to whitelist me on their API. Whitelisting is basically when someone is granted special privileges to a service. With this new access to their API, it allows me to scale up my code and find a lot more spam ...]]></description>
			<content:encoded><![CDATA[<p>The good folks over at Twitter have recently reached out and contacted me. They have been nice enough to whitelist me on their API. <a href="http://en.wikipedia.org/wiki/Whitelist">Whitelisting</a> is basically when someone is granted special privileges to a service. With this new access to their API, it allows me to scale up my code and find a lot more spam per day. Im very thankful and excited for this access. <img src='http://sparktheorylabs.com/wp-includes/images/smilies/icon_biggrin.gif' alt=':D' class='wp-smiley' /> </p>
<p>Initial results are quite astounding, as the amount of spam per hour discovered has increased by 8x! There a lot more fine tuning to do and now that I&#8217;m finding so much spam, new issues are arising (ie my MySQL db keeps on dropping my connection to it).</p>
<p>More soon.</p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/02/hello-whitelisting/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Multithreading and Twitter Spam Assassin</title>
		<link>http://sparktheorylabs.com/2012/02/multithreading-and-twitter-spam-assassin/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=multithreading-and-twitter-spam-assassin</link>
		<comments>http://sparktheorylabs.com/2012/02/multithreading-and-twitter-spam-assassin/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 19:06:49 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=292</guid>
		<description><![CDATA[Today I started to play with multithreading. Its something I&#8217;ve been meaning to do for quite some time, but haven&#8217;t gotten around to it. Multithreading is basically getting a single process to execute code to split off into another thread and operate independently, to run in parallel. Here is the wikipedia article if you want ...]]></description>
			<content:encoded><![CDATA[<p>Today I started to play with multithreading. Its something I&#8217;ve been meaning to do for quite some time, but haven&#8217;t gotten around to it.</p>
<p>Multithreading is basically getting a single process to execute code to split off into another thread and operate independently, to run in parallel. Here is the <a href="http://en.wikipedia.org/wiki/Thread_(computer_science)#Multithreading">wikipedia article</a> if you want to know more about it. The reason why its so important for Twitter Spam Assassin is because of how I receive tweets from Twitter. Essentially, I open a connection with Twitter asking them to send me tweets from the public timeline. Twitter sends me a tweet, my code looks at it, and when I&#8217;m done processing that tweet, Twitter sends me another one.</p>
<p>If I introduce multithreading, each incoming tweet would spin off into a separate thread to be analyzed. This allows me to receive the next tweet immediately and NOT wait for the analyzation of the last tweet to finish (which can take up to 3 seconds). You may to yourself, 3 seconds isn&#8217;t a long time, and you&#8217;d be right. But if you keep in mind that i&#8217;m analyzing thousands of tweets a day and I can get around about 45 tweets per second (best estimate), the numbers get large very quickly.</p>
<p>But with anything, there are fall backs. One of my concerns is that my server(s) cannot analyze as quickly as the tweets are coming in, which Im not sure if thats true or not at the moment. If it is true, there are ways to deal with that like load balancing.</p>
<p>But that isn&#8217;t the real reason why I haven&#8217;t explored multithreading in the past. The reason why is because of Twitter&#8217;s API call limit. If i start processing more tweets on a server, I&#8217;ll need to make more API request to Twitter per day. And I&#8217;m already hitting my call request cap several times a day. With a little testing, I find that if I enable multithreading I find that I see enormous performance boosts. But I use all of my API call requests very quickly and only have my code search for spam for 10 minutes per hour!</p>
<p>The good news is I am doing my best to work with Twitter and increase my API call limit. Getting some assistance from them would really increase the efficiency of finding and reporting spam.</p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/02/multithreading-and-twitter-spam-assassin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Record: Most Spam Accounts found in one day</title>
		<link>http://sparktheorylabs.com/2012/01/new-record-most-spam-accounts-found-in-one-day/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=new-record-most-spam-accounts-found-in-one-day</link>
		<comments>http://sparktheorylabs.com/2012/01/new-record-most-spam-accounts-found-in-one-day/#comments</comments>
		<pubDate>Tue, 10 Jan 2012 00:07:32 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>
		<category><![CDATA[spam]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=288</guid>
		<description><![CDATA[Hit a new record today with finding 4166 spam accounts in 24 hour period. Pretty excited about it. I&#8217;ll hit half a million spammers in no time at this rate]]></description>
			<content:encoded><![CDATA[<p>Hit a new record today with finding 4166 spam accounts in 24 hour period. Pretty excited about it. I&#8217;ll hit half a million spammers in no time at this rate <img src='http://sparktheorylabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/01/new-record-most-spam-accounts-found-in-one-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter vs Tiago Ranieri</title>
		<link>http://sparktheorylabs.com/2012/01/twitter-vs-tiago-ranieri/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=twitter-vs-tiago-ranieri</link>
		<comments>http://sparktheorylabs.com/2012/01/twitter-vs-tiago-ranieri/#comments</comments>
		<pubDate>Sat, 07 Jan 2012 22:50:55 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=284</guid>
		<description><![CDATA[I noticed something I thought was kind of interesting. My Twitter Spam Assassin found several twitter accounts that were nearly identical. They all have almost the same name,  the same picture ID and tweets. See the links below for a few examples. @TiagoRanieri47 @TiagoRanieri48 @TiagoRanieri50 @TiagoRanieri51 At the time of this posting, three of those ...]]></description>
			<content:encoded><![CDATA[<p>I noticed something I thought was kind of interesting. My Twitter Spam Assassin found several twitter accounts that were nearly identical. They all have almost the same name,  the same picture ID and tweets. See the links below for a few examples.</p>
<p><a href="https://twitter.com/#!/TiagoRanieri47">@TiagoRanieri47</a></p>
<p><a href="https://twitter.com/#!/TiagoRanieri48">@TiagoRanieri48</a></p>
<p><a href="https://twitter.com/#!/TiagoRanieri50">@TiagoRanieri50</a></p>
<p><a href="https://twitter.com/#!/TiagoRanieri51">@TiagoRanieri51</a></p>
<p>At the time of this posting, three of those twitter accounts are still online. One of them has been suspended. My spam assassin found all of these accounts a couple days ago within an hour of each other and reported them all shortly thereafter. Its interesting to me that all of these accounts have nearly identical activity, have all been reported to twitter the same, but yet, only one of them are offline (despite having several days to take them offline).</p>
<p>In total, my spam assassin has found 51 twitter accounts with &#8220;TiagoRanieri&#8221; in the name with a very high degree of similarity between them. Out of those, 20 of them are still active (as of the time of this blog post).</p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2012/01/twitter-vs-tiago-ranieri/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Milestone: 100,000 spammers found and reported</title>
		<link>http://sparktheorylabs.com/2011/12/milestone-100000-spammers-found-and-reported/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=milestone-100000-spammers-found-and-reported</link>
		<comments>http://sparktheorylabs.com/2011/12/milestone-100000-spammers-found-and-reported/#comments</comments>
		<pubDate>Thu, 15 Dec 2011 02:07:16 +0000</pubDate>
		<dc:creator>Chad Barraford</dc:creator>
				<category><![CDATA[Twitter Spam Assassin]]></category>

		<guid isPermaLink="false">http://sparktheorylabs.com/?p=273</guid>
		<description><![CDATA[This morning I hit 100,000 spammers found and reported! Its a big milestone for me and excited that its been going well as it has. Starting to scale up so should hit half a million spammers before you know it.]]></description>
			<content:encoded><![CDATA[<p>This morning I hit 100,000 spammers found and reported! Its a big milestone for me and excited that its been going well as it has. Starting to scale up so should hit half a million spammers before you know it. <img src='http://sparktheorylabs.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://sparktheorylabs.com/2011/12/milestone-100000-spammers-found-and-reported/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
