<?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>stormbrew &#187; Uncategorized</title>
	<atom:link href="http://www.stormbrew.ca/category/uncategorized/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.stormbrew.ca</link>
	<description>Tech and Business and Random Thoughts</description>
	<lastBuildDate>Mon, 10 May 2010 08:31:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Oncloud.org and CloudBridge (and how the web is like Donkey Kong Country)</title>
		<link>http://www.stormbrew.ca/2010/03/18/oncloud-org-and-cloudbridge-and-how-the-web-is-like-donkey-kong-country/</link>
		<comments>http://www.stormbrew.ca/2010/03/18/oncloud-org-and-cloudbridge-and-how-the-web-is-like-donkey-kong-country/#comments</comments>
		<pubDate>Thu, 18 Mar 2010 23:14:42 +0000</pubDate>
		<dc:creator>Graham Batty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stormbrew.ca/?p=99</guid>
		<description><![CDATA[Backstory
A few weeks ago I demoed a project I&#8217;d worked on called Oncloud.org. Oncloud was an offshoot project of something called CloudBridge, which was intended for use as a frontend load balancer for a hosting service I was thinking of working on. I&#8217;d worked on these projects about a year ago, and at the time [...]]]></description>
			<content:encoded><![CDATA[<h3>Backstory</h3>
<p>A few weeks ago I demoed a project I&#8217;d worked on called <a href="http://www.oncloud.org/">Oncloud.org</a>. Oncloud was an offshoot project of something called <a href="http://www.github.com/stormbrew/cloudbridge">CloudBridge</a>, which was intended for use as a frontend load balancer for a hosting service I was thinking of working on. I&#8217;d worked on these projects about a year ago, and at the time they garnered a bit of interest, but not as much as I&#8217;d hoped so I kind of left them sitting for a while.</p>
<p>But this time it got a lot more interest. Probably because I explained it better. As the hits to oncloud mounted, I changed the text on the front page to more clearly identify what exactly it does for you. I&#8217;ve been really impressed and excited to see people using this project, so I decided I should explain a bit more about the concept behind them and how they work.</p>
<h3>How The Web Works</h3>
<p>You know those levels in Donkey Kong Country where you&#8217;re jumping between barrel canons, each shooting you to the next until you (hopefully) get where you&#8217;re going eventually? No? Check out this video.</p>
<p><object width="480" height="385"><param name="movie" value="http://www.youtube.com/v/-cEomsXVqGg&#038;hl=en_US&#038;fs=1&#038;"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/-cEomsXVqGg&#038;hl=en_US&#038;fs=1&#038;" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"></embed></object></p>
<p>The web is like that. You send out a request and it gets shot from the next canon and the next until finally a real backend web server takes your request and does something with it. These canons are called proxies (or more specifically HTTP proxies). Note that this is ignoring the lower level where the entire internet is like this. These days you can often count on your request being shot out of at least two canons: one that your isp runs (often invisibly) to speed up requests through caching, and one at the other end that does load balancing between backend machines.</p>
<p>While these two tasks are superficially quite similar, in reality they are quite different. The ISP proxy is blind as to the content it forwards. It knows you want something and it&#8217;ll go through the standard mechanism a browser would to find the server you really want and then forward it on.</p>
<p>The one at the other end, on the other hand, has a list of backends it knows will handle any request that reaches it. It forwards the request based on various potential heuristics, the simplest being round robin. It sends each request to the next backend on the list.</p>
<p>In that simplest configuration, it&#8217;s taking a crapshoot. The server in question might be down, it might be overloaded, or it might just plain be ignoring a completely underloaded server. More complex heuristics have been developed to manage this, including adding priority numbers, finding out the load average of all the backend servers, etc. Needless to say, these solutions become quite complex.</p>
<p>They especially get very complex if you&#8217;re trying to manage your cluster dynamically. If you need to bring up and down servers on a regular basis, that means changing the list on your load balancer(s) on a regular basis. Which also probably means confusing any kind of statistic gathering used to help prevent overloading a backend. This is especially a problem if you&#8217;re provisioning servers based on load through something like EC2.</p>
<h3>Why CloudBridge is Different</h3>
<p>Historically, this arrangement &#8212; the load balancer connecting to the backends &#8212; has been done because of the ready availability of high quality proxy implementations like squid and apache&#8217;s mod_proxy. These proxies weren&#8217;t originally meant for this task, but they&#8217;ve been modified to support it.</p>
<p>CloudBridge takes this arrangement and flips it. Rather than the load balancer connecting to the backends, the backends connect to the load balancer and signal availability to handle a request. They do this through an HTTP extension called a BRIDGE request. More technical details can be read on github in the <a href="http://github.com/stormbrew/cloudbridge/raw/master/doc/protocol.txt">protocol description</a>.</p>
<p>To bring it back to the Donkey Kong Country example, where the existing web is a bunch of barrel canons, CloudBridge has the two sides meet in the middle forming a bridge. Hence the name.</p>
<p>This way, the cloudbridge server can be dumb. It doesn&#8217;t need a list of backends. In fact, it doesn&#8217;t even need a list of hosts it handles. Through the use of hash-based secret keys, your backends can be authorized to handle a domain without the cludbridge server needing to be restarted or re-read a configuration list.</p>
<p>And (though this hasn&#8217;t been implemented yet) you can also have the cloudbridge server give information on how many waiting requests on either side a given host has. If there are a whole bunch of client requests for a domain waiting to serve up, you know that that particular domain probably needs some extra backend servers and spin them up. Or if there are too many waiting backends, you can shut them down.</p>
<p>Which is exactly what you need to do if you&#8217;re hosting your servers on a system like EC2. Provisioning for peak all the time from EC2 is exactly what you don&#8217;t want to do. When there&#8217;s only one user on your site in the middle of the night, you want only one backend server running.</p>
<h3>How That Turned Into OnCloud</h3>
<p>Which leaves OnCloud. OnCloud was something I realized you could do part way through implementing cloudbridge. Given the properties above, you could run a cloudbridge as a sort of open proxy letting users connect to it from behind firewalls and then their development app would become available publicly. This would be much simpler than the more common practice of using an ssh tunnel or Heroku&#8217;s limited free hosting to achieve roughly the same results.</p>
<p>In particular, this is really good for developing <a href="http://www.facebook.com">facebook</a> or <a href="http://www.twilio.com/">twilio</a> apps. But that&#8217;s a whole other blog post.</p>
<p>It&#8217;s not exactly fast, and it runs with a relatively low connection limit to prevent abuse, but it&#8217;s there and it works, and a lot of people have now used it (and continue to use it), and that makes me very very happy.</p>
<div style="display:none"> EAVB_GFGQRIDVWT</div>
 <img src="http://www.stormbrew.ca/wp-content/plugins/feed-statistics.php?view=1&post_id=99" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.stormbrew.ca/2010/03/18/oncloud-org-and-cloudbridge-and-how-the-web-is-like-donkey-kong-country/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Twitter is RSS 3.0 and We&#8217;re All Coffee Beans, or Why I Won&#8217;t Use FriendFeed</title>
		<link>http://www.stormbrew.ca/2009/07/13/twitter-is-rss-3-0-and-were-all-coffee-beans-or-why-i-wont-use-friendfeed/</link>
		<comments>http://www.stormbrew.ca/2009/07/13/twitter-is-rss-3-0-and-were-all-coffee-beans-or-why-i-wont-use-friendfeed/#comments</comments>
		<pubDate>Mon, 13 Jul 2009 20:40:46 +0000</pubDate>
		<dc:creator>Graham Batty</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.stormbrew.ca/?p=67</guid>
		<description><![CDATA[Every now and then I find someone interesting to follow on twitter because of the links they post. Finding interesting links is a big part of why I use Twitter. It makes it so the links come to me with very little action on my part (thus fitting in nicely with the my lazy side). [...]]]></description>
			<content:encoded><![CDATA[<p>Every now and then I find someone interesting to follow on twitter because of the links they post. Finding interesting links is a big part of why I use Twitter. It makes it so the links come to me with very little action on my part (thus fitting in nicely with the my lazy side). The other ways I know of to get links don&#8217;t really do it for me. </p>
<p>I&#8217;ve heard Twitter described as RSS 3.0, and I&#8217;d agree with that assessment. Twitter allows me to get new information on the basis of an ad-hoc network of people filtering that information. I follow people who are interested in similar things (and they do and so on) and bits of information get into my feed through retweets as well as original discoveries. In this way, all Twitter users are basically like the coffee beans in a coffee maker. A whole bunch of information (water) is poured in at the top, it gets absorbed into us, added to, and passed on, and then my follow list acts as a filter on the result. The disgusting gunk that&#8217;s left in the filter gets thrown out.</p>
<p>RSS, on the other hand, requires me to go to information sources and subscribe to them. I get either no diversity in this mechanism (just blog posts by the same people all the time) or far too much diversity (by following an rss feed aggregation that tends to include everything new under the sun &#8212; see also Digg/Slashdot &#8212; with no filtering at all). Twitter &#8212; and presumably other services like it &#8212; strike a perfect balance by allowing me to choose who I want to listen to. It&#8217;s a bit like finding your favorite movie reviewers and ignoring all the rest.</p>
<p>But sometimes there are threats to this filtering. Stuff like <a href="http://www.stormbrew.ca/2009/07/03/twitter-promotion-done-wrong-moonfruit/">#moonfruit</a> is one &#8212; by jamming as much noise into the pipeline as possible, it makes it hard to find any signal. Another, in my opinion, is <a href="http://www.friendfeed.com">FriendFeed</a>. When someone uses FriendFeed as a client to Twitter, it does this very painful thing where it will turn links into ff.im links. Nothing wrong with a url shortener, but this one does something a little more.</p>
<p>Ff.im links have the painful problem of forcing me to go to a FriendFeed landing page before visiting the content. I have to be subjected to comments about a page <b>I haven&#8217;t even seen yet</b> before I can actually see the page. Not only does this not make sense, it also frustrates me. I get a lot of new links to look at on my twitter feed every day, and I almost never follow these ones all the way through to the content. At the moment of click, I usually know so little about the target that it&#8217;s just not worth it.</p>
<p>A big part of this is laziness, of course. I already admitted I am lazy above. But it goes a bit beyond that. FriendFeed is essentially advertising to me (I don&#8217;t mean banners, I mean they&#8217;re advertising their site/service to me) on every link that gets posted through them to twitter. As a non-user of their site (and I never will be one so long as they do this), I did not consent to be advertised to by them. Now that I recognize ff.im links for what they are, I just don&#8217;t follow them. And if someone I follow has this happen a lot on links I would otherwise be interested in, I unfollow them.</p>
<p>The first notable case of this was <a href="http://twitter.com/scobleizer">@Scobleizer</a>, who provided a lot of the interesting links I read when I first joined twitter, but at some point all his links became ff.im links. I&#8217;m sure there are plenty of people who don&#8217;t care about this (I&#8217;m well known to care about things like this more than most people), but I&#8217;m sure there are also a lot of people out there who find this as frustrating and destructive as I do.</p>
<p>If FriendFeed really needs to tack on content to pages I view through their links, could they at least make it more like Facebook or Digg&#8217;s, with the bar along the top? As much as I despise those sorts of things too, they would be a huge improvement over being forced into an interstitial every time I click a link off twitter. Show me how many comments there are, allow me to expand that frame, and I&#8217;d probably sometimes even look.</p>
 <img src="http://www.stormbrew.ca/wp-content/plugins/feed-statistics.php?view=1&post_id=67" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://www.stormbrew.ca/2009/07/13/twitter-is-rss-3-0-and-were-all-coffee-beans-or-why-i-wont-use-friendfeed/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
	</channel>
</rss>
