<?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>Topper's Blog</title>
	<atom:link href="http://blog.toppingdesign.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.toppingdesign.com</link>
	<description>Usability, Information Management, Rails, Javascript &#38; (oh no) Web 2.0</description>
	<lastBuildDate>Thu, 10 Jun 2010 13:41:17 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Review:  Byline app for iPhone</title>
		<link>http://blog.toppingdesign.com/2010/06/10/review-byline-app-for-iphone/</link>
		<comments>http://blog.toppingdesign.com/2010/06/10/review-byline-app-for-iphone/#comments</comments>
		<pubDate>Thu, 10 Jun 2010 13:41:17 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[General Web work - technical]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/?p=214</guid>
		<description><![CDATA[The Byline reader for iPhone is awesome.  It syncs your google reader account into an offline cache that is simply perfect for the subway.  I am currently using the new free version which is ad supported. The ads are unobtrusive and the app just seems to work.
I did have one problem that after [...]]]></description>
			<content:encoded><![CDATA[<p>The <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5waGFudG9tZmlzaC5jb20vYnlsaW5lLmh0bWw=">Byline reader for iPhone</a> is awesome.  It syncs your google reader account into an offline cache that is simply perfect for the subway.  I am currently using the new free version which is ad supported. The ads are unobtrusive and the app just seems to work.</p>
<p>I did have one problem that after reading several articles I would keep getting a white screen.  I have hundreds of feeds with thousands of articles and interrupted a sync &#8211; so maybe that was the cause.</p>
<p>The app is so good I missed two subway stops on the way to work.  Woops! But I recommend anyone who has an iPhone and a Google Reader account to get this app.</p>
<p><em>I am in no way affiliated with the Byline team.</em></p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=214" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/06/10/review-byline-app-for-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Path to Pretty</title>
		<link>http://blog.toppingdesign.com/2010/06/03/path-to-pretty/</link>
		<comments>http://blog.toppingdesign.com/2010/06/03/path-to-pretty/#comments</comments>
		<pubDate>Thu, 03 Jun 2010 14:11:11 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[Social Web]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/?p=206</guid>
		<description><![CDATA[I&#8217;ve been thinking a lot about my pragmatic approach to programming (sorry to steal from very great books).
I&#8217;ve never been the zealot that makes sure all code is perfect before shipping. I also recognize the tremendous value that aesthetic code brings (that&#8217;s why I&#8217;m a ruby guy). However, the important part of writing code is [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been thinking a lot about my pragmatic approach to programming (sorry to steal from very great books).</p>
<p>I&#8217;ve never been the zealot that makes sure all code is perfect before shipping. I also recognize the tremendous value that aesthetic code brings (that&#8217;s why I&#8217;m a ruby guy). However, the important part of writing code is <em>getting it out to the users</em>. Those users might be your fellow coworkers (if you&#8217;re doing something back-endy) or they might be consumers.</p>
<p><strong>My code will not matter unless someone is using it. So I get it out quickly.</strong></p>
<p>That being said, I&#8217;ve seen us cut corners too many times and it <strong>always</strong> comes back to haunt. It costs hours and hours cost dollars. Bad code is not good for anybody.</p>
<p><strong>My users will suffer from bad code because I won&#8217;t be able to react to their needs in a timely manner.</strong></p>
<p>I think I have been intuitively following a pattern now for a while that seems to work out.  I&#8217;ve been calling it &#8220;Path to Pretty&#8221; in my head.</p>
<p><strong>It&#8217;s ok to ship code that I would consider lacking if the intent and next steps for improvement are clear.</strong></p>
<p>By clear I mean that I must be able to go back in 2 months, look at the code and intuitively see what I was trying to do.  If it&#8217;s not fully optimized or there are 20 extra lines, so be it.</p>
<p><strong>As long as there is a clear path to pretty I now consider my code shippable.</strong></p>
<p><em>Footnote: I&#8217;m sure I&#8217;m not the first person to do this and there&#8217;s probably some other name for this technique. This article was mostly for my own selfish benefit.<br />
</em></p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=206" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/06/03/path-to-pretty/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Zookeeper &#8211; Distributed cluster software</title>
		<link>http://blog.toppingdesign.com/2010/05/27/zookeeper-distributed-cluster-software/</link>
		<comments>http://blog.toppingdesign.com/2010/05/27/zookeeper-distributed-cluster-software/#comments</comments>
		<pubDate>Thu, 27 May 2010 15:47:00 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[Social Web]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/?p=195</guid>
		<description><![CDATA[I read this article about Apache Zookeeper at Igvita and was intrigued.
I started looking around for ruby libraries, but nothing was as mature as I would like.  I forked a branch on github and chugged along on getting the jruby and c versions to work with the same api.
Zookeeper exposes a super simple API, [...]]]></description>
			<content:encoded><![CDATA[<p>I read <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3d3dy5pZ3ZpdGEuY29tLzIwMTAvMDQvMzAvZGlzdHJpYnV0ZWQtY29vcmRpbmF0aW9uLXdpdGgtem9va2VlcGVyLw==">this article about Apache Zookeeper at Igvita</a> and was intrigued.</p>
<p>I started looking around for ruby libraries, but nothing was as mature as I would like.  I <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2dpdGh1Yi5jb20vdG9ib3dlcnMvem9va2VlcGVy">forked a branch on github</a> and chugged along on getting the jruby and c versions to work with the same api.</p>
<p>Zookeeper exposes a super simple API, but with that simple stuff you can build a lot of complex cluster logic.</p>
<div class="igBar"><span id="lruby-4"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=Iw==" onclick=\"javascript:showPlainTxt('ruby-4'); return false;\">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">RUBY:</span>
<div id="ruby-4">
<div class="ruby">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk = ZooKeeper.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"localhost:2181"</span>, :watcher =&gt; :default<span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;">#this will handle events using my built-in event handler</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk2 = ZooKeeper.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"localhost:2181"</span>, :watcher =&gt; <span style="color:#0000FF; font-weight:bold;">false</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;">#this one won't receive watch events</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk.<span style="color:#9900CC;">watcher</span>.<span style="color:#9900CC;">register</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"/mypath"</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#9966CC; font-weight:bold;">do</span> |event, zookeeper_client|</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; $stderr.<span style="color:#CC0066; font-weight:bold;">puts</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"got an event on: #{event.path}"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#9966CC; font-weight:bold;">end</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"/mypath"</span>, :watch =&gt; <span style="color:#0000FF; font-weight:bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;"># returns nil, but sets up the app to watch for the existence of /mypath</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk2.<span style="color:#9900CC;">create</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"/mypath"</span>, <span style="color:#996600;">"my data up to 1mb"</span>, :mode =&gt; :ephemeral<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># create modes can be any of</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># :persistent_sequential, :ephemeral_sequential, :persistent, :ephemeral</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># now the registered watcher will fire (at least within a few 100 miliseconds)</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># because we set that node to be :ephemeral - when zk2 closes its connection, the &quot;/mypath&quot; will go away</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># but watches are one-time firing only - so we need to set it up again</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"/mypath"</span>, :watch =&gt; <span style="color:#0000FF; font-weight:bold;">true</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;">#returns true</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk2.<span style="color:#9900CC;">close</span>! <span style="color:#008000; font-style:italic;">#or delete or whatever</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># the watcher fires again and</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk.<span style="color:#9900CC;">exists</span>?<span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"/mypath"</span><span style="color:#006600; font-weight:bold;">&#41;</span> <span style="color:#008000; font-style:italic;">#returns false </span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<p>A limited api of create, delete, get, set, watch lets you do some really advanced things around a cluster.</p>
<h3>Examples</h3>
<p>I added some abstractions based on the <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2hhZG9vcC5hcGFjaGUub3JnL3pvb2tlZXBlci9kb2NzL3IzLjAuMC9yZWNpcGVzLmh0bWw=">Zookeeper recipes</a>.</p>
<h3>Locks</h3>
<div class="igBar"><span id="lruby-5"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=Iw==" onclick=\"javascript:showPlainTxt('ruby-5'); return false;\">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">RUBY:</span>
<div id="ruby-5">
<div class="ruby">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;">#these 2 clients could be on totally separate boxes, different processes, whatever</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk = ZooKeeper.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"localhost:2181"</span>, :watcher =&gt; :default<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk2 = ZooKeeper.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"localhost:2181"</span>, :watcher =&gt; :default<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock1 = zk.<span style="color:#9900CC;">locker</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"/mypath"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock1.<span style="color:#9900CC;">lock</span> <span style="color:#008000; font-style:italic;">#true</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock2 = zk2.<span style="color:#9900CC;">locker</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"/mypath"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock2.<span style="color:#9900CC;">lock</span> <span style="color:#008000; font-style:italic;">#false</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock1.<span style="color:#9900CC;">unlock</span> <span style="color:#008000; font-style:italic;">#true</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock2.<span style="color:#9900CC;">lock</span> <span style="color:#008000; font-style:italic;">#true</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color:#008000; font-style:italic;"># locks are also released on a client close/crash</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock1.<span style="color:#9900CC;">lock</span> <span style="color:#008000; font-style:italic;">#false</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">zk2.<span style="color:#9900CC;">close</span>!</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">lock1.<span style="color:#9900CC;">lock</span> <span style="color:#008000; font-style:italic;">#true </span></div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h3>Message Queues</h3>
<p>I also implemented a simple message queue on top of zookeeper.  However, because of the way the zookeeper "children" calls are made (returning all children), I wouldn't recommend using this for queues where pending messages will reach into the thousands.</p>
<div class="igBar"><span id="lruby-6"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=Iw==" onclick=\"javascript:showPlainTxt('ruby-6'); return false;\">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">RUBY:</span>
<div id="ruby-6">
<div class="ruby">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">client1 = ZooKeeper.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"localhost:2181"</span>, :watcher =&gt; :default<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; client2 = ZooKeeper.<span style="color:#9900CC;">new</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"localhost:2181"</span>, :watcher =&gt; :default<span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; publisher = client1.<span style="color:#9900CC;">queue</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"myqueue"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; receiver = client2.<span style="color:#9900CC;">queue</span><span style="color:#006600; font-weight:bold;">&#40;</span><span style="color:#996600;">"myqueue"</span><span style="color:#006600; font-weight:bold;">&#41;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; receiver.<span style="color:#9900CC;">subscribe</span> <span style="color:#9966CC; font-weight:bold;">do</span> |title, data|</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># data will be whatever was published, title will be the node name</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># for the message</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; $stderr.<span style="color:#CC0066; font-weight:bold;">puts</span> <span style="color:#996600;">"got a message with: #{data}"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># having a true state from the block will mark the message as 'answered'</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#008000; font-style:italic;"># sending back a false will requeue</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color:#0000FF; font-weight:bold;">true</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color:#9966CC; font-weight:bold;">end</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<h3>More...</h3>
<p>There's a ton you can do with this thing (priority queues, meta data store, etc).  I think it's a nice addition to the ruby toolset.</p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=195" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/05/27/zookeeper-distributed-cluster-software/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebSockets</title>
		<link>http://blog.toppingdesign.com/2010/05/05/websockets/</link>
		<comments>http://blog.toppingdesign.com/2010/05/05/websockets/#comments</comments>
		<pubDate>Wed, 05 May 2010 17:24:01 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[Social Web]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/?p=187</guid>
		<description><![CDATA[I've been thinking a lot lately that websockets are going to fundamentally change the architecture of the web. It lets you think about backend architecture in a whole new light.  Projects like Nanite, EventMachine, Mongo, Redis... I think these are the future. I even question the utility of rails in a client-side-app-always-connected world.
I'm just [...]]]></description>
			<content:encoded><![CDATA[<p>I've been thinking a lot lately that websockets are going to fundamentally change the architecture of the web. It lets you think about backend architecture in a whole new light.  Projects like Nanite, EventMachine, Mongo, Redis... I think these are the future. I even question the utility of rails in a client-side-app-always-connected world.</p>
<p>I'm just pondering now... trying to flesh out what I think is going to happen and how we can embrace it sooner.</p>
<p>TO COME:<br />
Events: Modern JavaScript architecture is actually pretty powerful, how can we take the "bolted on functionality" approach to servers.<br />
Messages: They're kinda like events right?<br />
Request/Response Cycle: it's probably dead?</p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=187" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/05/05/websockets/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>New Facebook Javascript API</title>
		<link>http://blog.toppingdesign.com/2010/04/26/new-facebook-javascript-api/</link>
		<comments>http://blog.toppingdesign.com/2010/04/26/new-facebook-javascript-api/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 15:19:27 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[General Web work - technical]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[api]]></category>
		<category><![CDATA[documentation]]></category>
		<category><![CDATA[f8]]></category>
		<category><![CDATA[facebook]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[release]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/2010/04/26/new-facebook-javascript-api/</guid>
		<description><![CDATA[UPDATE:
http://developers.facebook.com/docs/reference/javascript/FB.login
Only allowed to prompt for permissions due to a user action.  Which is shitty, but I should have seen is documented.
I love the *looks* of the new Facebook javascript API.  It's got one major flaw though.  It doesn't work in Safari or Chrome.  I have an app setup to use http://localhost:7000/ [...]]]></description>
			<content:encoded><![CDATA[<p><ins datetime="2010-04-27T18:32:00+00:00">UPDATE:</ins><br />
<a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvcmVmZXJlbmNlL2phdmFzY3JpcHQvRkIubG9naW4=">http://developers.facebook.com/docs/reference/javascript/FB.login</a><br />
Only allowed to prompt for permissions due to a user action.  Which is shitty, but I should have seen is documented.</p>
<p>I love the *looks* of the new <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RldmVsb3BlcnMuZmFjZWJvb2suY29tL2RvY3MvcmVmZXJlbmNlL2phdmFzY3JpcHQv">Facebook javascript API</a>.  It's got one major flaw though.  It doesn't work in Safari or Chrome.  I have an app setup to use http://localhost:7000/ as the connect url and everything works *great* in Firefox.  Things even work mostly ok in safari or chrome... but as soon as you try to launch the permissions dialog box you get the browser cycling through "unsafe javascript attempt to access frame with URL."</p>
<p>Best part about this whole thing is:  the <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2ZvcnVtLmRldmVsb3BlcnMuZmFjZWJvb2suY29tLw==">facebook developer forums</a> throw the *same* error.</p>
<p>Also, when I try to create an account on the forums (not using facebook connect) I get a "cannot connect to socket" error.</p>
<p>I guess I go back to their older clunkier API?  Seems to be a <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2ZvcnVtLmRldmVsb3BlcnMuZmFjZWJvb2suY29tL3ZpZXd0b3BpYy5waHA/aWQ9MzY0NjQ=">number of complaints</a> but no answers from Facebook.</p>
<p>Any ideas?</p>
<p><ins datetime="2010-04-26T15:27:53+00:00">UPDATE:</ins></p>
<p>That error just keeps growing and growing.</p>
<p>I'm initializing my facebook like:</p>
<div class="igBar"><span id="ljavascript-10"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=Iw==" onclick=\"javascript:showPlainTxt('javascript-10'); return false;\">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-10">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">FB.<span style="color: #006600;">init</span><span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; appId&nbsp; : <span style="color: #3366CC;">'&lt;myappid&gt;'</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000066;">status</span> : <span style="color: #003366; font-weight: bold;">true</span>, <span style="color: #009900; font-style: italic;">// check login status</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; cookie : <span style="color: #003366; font-weight: bold;">true</span>, <span style="color: #009900; font-style: italic;">// enable cookies to allow the server to access the session</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; xfbml&nbsp; : <span style="color: #003366; font-weight: bold;">true</span>&nbsp; <span style="color: #009900; font-style: italic;">// parse XFBML</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></myappid><br />
<ins datetime="2010-04-27T13:42:25+00:00">Minimal Repro:</ins></p>
<p>If you put the following HTML at 127.0.0.1:7000 and hit the page you are UNABLE to do the following from the console:</p>
<div class="igBar"><span id="ljavascript-11"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=Iw==" onclick=\"javascript:showPlainTxt('javascript-11'); return false;\">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-11">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">FB.<span style="color: #006600;">login</span><span style="color: #66cc66;">&#40;</span><span style="color: #003366; font-weight: bold;">function</span> <span style="color: #66cc66;">&#40;</span>resp<span style="color: #66cc66;">&#41;</span> <span style="color: #66cc66;">&#123;</span> console.<span style="color: #006600;">dir</span><span style="color: #66cc66;">&#40;</span>resp<span style="color: #66cc66;">&#41;</span>;<span style="color: #66cc66;">&#125;</span>, <span style="color: #66cc66;">&#123;</span>perms: <span style="color: #3366CC;">'publish_stream'</span><span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
<div class="igBar"><span id="lhtml-12"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=Iw==" onclick=\"javascript:showPlainTxt('html-12'); return false;\">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">HTML:</span>
<div id="html-12">
<div class="html">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #00bbdd;">&lt;!DOCTYPE html PUBLIC &quot;-//W3C//DTD XHTML 1.0 Transitional//EN&quot; &quot;http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd&quot;&gt;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RlY2VtYmVyLmNvbS9odG1sLzQvZWxlbWVudC9odG1sLmh0bWw="><span style="color: #000000; font-weight: bold;">&lt;html</span></a> xmlns:fb=<span style="color: #ff0000;">'http://www.facebook.com/2008/fbml'</span> xmlns=<span style="color: #ff0000;">'http://www.w3.org/1999/xhtml'</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RlY2VtYmVyLmNvbS9odG1sLzQvZWxlbWVudC9oZWFkLmh0bWw="><span style="color: #000000; font-weight: bold;">&lt;head&gt;</span></a></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RlY2VtYmVyLmNvbS9odG1sLzQvZWxlbWVudC90aXRsZS5odG1s"><span style="color: #000000; font-weight: bold;">&lt;title&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; Test page</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/title&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/head&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RlY2VtYmVyLmNvbS9odG1sLzQvZWxlbWVudC9ib2R5Lmh0bWw="><span style="color: #000000; font-weight: bold;">&lt;body</span></a> <span style="color: #000066;">class</span>=<span style="color: #ff0000;">'mbx'</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RlY2VtYmVyLmNvbS9odG1sLzQvZWxlbWVudC9kaXYuaHRtbA=="><span style="color: #000000; font-weight: bold;">&lt;div</span></a> <span style="color: #000066;">id</span>=<span style="color: #ff0000;">'fb-root'</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/div&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RlY2VtYmVyLmNvbS9odG1sLzQvZWxlbWVudC9zY3JpcHQuaHRtbA=="><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">src</span>=<span style="color: #ff0000;">"http://connect.facebook.net/en_US/all.js"</span> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">"text/javascript"</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2RlY2VtYmVyLmNvbS9odG1sLzQvZWxlbWVudC9zY3JpcHQuaHRtbA=="><span style="color: #000000; font-weight: bold;">&lt;script</span></a> <span style="color: #000066;">type</span>=<span style="color: #ff0000;">'text/javascript'</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; //<span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;</span></a>!<span style="color: #66cc66;">&#91;</span>CDATA<span style="color: #66cc66;">&#91;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; FB.init<span style="color: #66cc66;">&#40;</span><span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; appId&nbsp; : <span style="color: #ff0000;">'10562765058'</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; status : true, // check login status</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; cookie : true, // enable cookies to allow the server to access the session</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; xfbml&nbsp; : true&nbsp; // parse XFBML</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>;</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; //<span style="color: #66cc66;">&#93;</span><span style="color: #66cc66;">&#93;</span><span style="color: #000000; font-weight: bold;">&gt;</span></a></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/script&gt;</span></span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; <span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/body&gt;</span></span></div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #009900;"><span style="color: #000000; font-weight: bold;">&lt;/html&gt;</span></span> </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=184" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/04/26/new-facebook-javascript-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What the world needs now is Croons, sweet Croons</title>
		<link>http://blog.toppingdesign.com/2010/03/01/what-the-world-needs-now-is-croons-sweet-croons/</link>
		<comments>http://blog.toppingdesign.com/2010/03/01/what-the-world-needs-now-is-croons-sweet-croons/#comments</comments>
		<pubDate>Tue, 02 Mar 2010 03:42:05 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[General Web work - technical]]></category>
		<category><![CDATA[Social Web]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[gifts]]></category>
		<category><![CDATA[online singing telegrams]]></category>
		<category><![CDATA[singing]]></category>
		<category><![CDATA[telegram]]></category>
		<category><![CDATA[telegrams]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/2010/03/01/what-the-world-needs-now-is-croons-sweet-croons/</guid>
		<description><![CDATA[Looks like we just did a big publicity push for Croon My Tune.  Everybody should go check it out.
http://croonmytune.com
or read about it here: http://jumpcanopy.com/?p=21
 ]]></description>
			<content:encoded><![CDATA[<p>Looks like we just did a big publicity push for <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Nyb29ubXl0dW5lLmNvbQ==">Croon My Tune</a>.  Everybody should go check it out.</p>
<p><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Nyb29ubXl0dW5lLmNvbQ==">http://croonmytune.com</a></p>
<p>or read about it here: <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2p1bXBjYW5vcHkuY29tLz9wPTIx">http://jumpcanopy.com/?p=21</a></p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=183" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/03/01/what-the-world-needs-now-is-croons-sweet-croons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>_method in recent rails is brokenish</title>
		<link>http://blog.toppingdesign.com/2010/02/28/_method-in-recent-rails-is-brokenish/</link>
		<comments>http://blog.toppingdesign.com/2010/02/28/_method-in-recent-rails-is-brokenish/#comments</comments>
		<pubDate>Sun, 28 Feb 2010 18:14:33 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[General Web work - technical]]></category>
		<category><![CDATA[business]]></category>
		<category><![CDATA[error]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[method]]></category>
		<category><![CDATA[method override]]></category>
		<category><![CDATA[override]]></category>
		<category><![CDATA[prototype]]></category>
		<category><![CDATA[puth]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[rails235]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[_method]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/2010/02/28/_method-in-recent-rails-is-brokenish/</guid>
		<description><![CDATA[I was trying to pass in _method: 'put' as part of a json body and for some reason rails kept not realizing that I wanted to put.
Then I came across this article: http://stackoverflow.com/questions/1249282/set-method-to-put-in-rails-xml-requests
So... if you're using prototype your "put" methods look something like this:
PLAIN TEXT
JavaScript:




new Ajax.Request&#40;url, &#123;


&#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160; onSuccess: [...]]]></description>
			<content:encoded><![CDATA[<p>I was trying to pass in _method: 'put' as part of a json body and for some reason rails kept not realizing that I wanted to put.</p>
<p>Then I came across this article: <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xMjQ5MjgyL3NldC1tZXRob2QtdG8tcHV0LWluLXJhaWxzLXhtbC1yZXF1ZXN0cw==">http://stackoverflow.com/questions/1249282/set-method-to-put-in-rails-xml-requests</a></p>
<p>So... if you're using prototype your "put" methods look something like this:</p>
<div class="igBar"><span id="ljavascript-14"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=Iw==" onclick=\"javascript:showPlainTxt('javascript-14'); return false;\">PLAIN TEXT</a></span></div>
<div class="syntax_hilite"><span class="langName">JavaScript:</span>
<div id="javascript-14">
<div class="javascript">
<ol>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;"><span style="color: #003366; font-weight: bold;">new</span> Ajax.<span style="color: #006600;">Request</span><span style="color: #66cc66;">&#40;</span>url, <span style="color: #66cc66;">&#123;</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; onSuccess: callback,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; requestHeaders: <span style="color: #66cc66;">&#123;</span><span style="color: #3366CC;">'X-Http-Method-Override'</span>: <span style="color: #3366CC;">'put'</span><span style="color: #66cc66;">&#125;</span>,</div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; postBody: Object.<span style="color: #006600;">toJSON</span><span style="color: #66cc66;">&#40;</span>params<span style="color: #66cc66;">&#41;</span>,</div>
</li>
<li style="font-family: 'Courier New', Courier, monospace; color: black; font-weight: normal; font-style: normal;color:#3A6A8B;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; contentType: <span style="color: #3366CC;">"application/json"</span></div>
</li>
<li style="font-weight: bold;color:#26536A;">
<div style="font-family: 'Courier New', Courier, monospace; font-weight: normal;">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #66cc66;">&#125;</span><span style="color: #66cc66;">&#41;</span>; </div>
</li>
</ol>
</div>
</div>
</div>
<p></p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=182" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/02/28/_method-in-recent-rails-is-brokenish/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Game Theory</title>
		<link>http://blog.toppingdesign.com/2010/02/23/game-theory/</link>
		<comments>http://blog.toppingdesign.com/2010/02/23/game-theory/#comments</comments>
		<pubDate>Tue, 23 Feb 2010 12:31:54 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[General Web work - technical]]></category>
		<category><![CDATA[Social Web]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[business]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/2010/02/23/game-theory/</guid>
		<description><![CDATA[
Wii Games - E3 2010 - Guitar Hero 5
You can skip the last 10 minutes or so when he dives into this odd crazy future... but the beginning part really makes you think about how you can add game theory to any business you're in.  I really like the idea of experience points and [...]]]></description>
			<content:encoded><![CDATA[<p><object classId="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="480" height="418" id="VideoPlayerLg44277"><param name="movie" value="http://g4tv.com/lv3/44277" /><param name="allowScriptAccess" value="always" /><param name="allowFullScreen" value="true" /><embed src="http://g4tv.com/lv3/44277" type="application/x-shockwave-flash" name="VideoPlayer" width="480" height="382" allowScriptAccess="always" allowFullScreen="true" /></object>
<div style="margin:0;text-align:center;width:480px;font-family:Arial,sans-serif;font-size:12px;color:#FF9B00;"><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2c0dHYuY29tL2dhbWVzL3dpaS9pbmRleA==" style=\"color:#FF9B00;\" target=\"_blank\">Wii Games</a> - <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2c0dHYuY29tL2UzMjAxMA==" style=\"color:#FF9B00;\" target=\"_blank\">E3 2010</a> - <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2c0dHYuY29tL2dhbWVzL3BzMy82MTg5OS9ndWl0YXItaGVyby01L2luZGV4" style=\"color:#FF9B00;\" target=\"_blank\">Guitar Hero 5</a></div>
<p>You can skip the last 10 minutes or so when he dives into this odd crazy future... but the beginning part really makes you think about how you can add game theory to any business you're in.  I really like the idea of experience points and leveling up for class. That's something any event-based business could really get into.</p>
<p>h/t Andrew Holz. via <a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2Z1cnkuY29tLzIwMTAvMDIvamVzc2Utc2hlbGxzLW1pbmRibG93aW5nLXRhbGstb24tdGhlLWZ1dHVyZS1vZi1nYW1lcy1kaWNlLTIwMTAv">fury.com</a></p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=181" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/02/23/game-theory/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Rails thread safety</title>
		<link>http://blog.toppingdesign.com/2010/01/27/rails-thread-safety/</link>
		<comments>http://blog.toppingdesign.com/2010/01/27/rails-thread-safety/#comments</comments>
		<pubDate>Wed, 27 Jan 2010 22:38:07 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[General Web work - technical]]></category>
		<category><![CDATA[multithread]]></category>
		<category><![CDATA[multithreading]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[ruby on rails]]></category>
		<category><![CDATA[rubyonrails]]></category>
		<category><![CDATA[threadsafe]]></category>
		<category><![CDATA[threadsafety]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/2010/01/27/rails-thread-safety/</guid>
		<description><![CDATA[Calling Rails.configuration.threadsafe! at the end of your environment.rb does *not* turn on multi-threading.  Adding config.threadsafe! to your individual environments (like production.rb) *does* turn on multi-threading.
You can also check that your multi-threading is active by seeing if ActionController::Base.allow_concurrency is true.
We add ::RAILS_DEFAULT_LOGGER.fatal { "Mulithreading is active? #{ActionController::Base.allow_concurrency}" }
to the end of our environment.rb to let [...]]]></description>
			<content:encoded><![CDATA[<p>Calling Rails.configuration.threadsafe! at the end of your environment.rb does *not* turn on multi-threading.  Adding config.threadsafe! to your individual environments (like production.rb) *does* turn on multi-threading.</p>
<p>You can also check that your multi-threading is active by seeing if ActionController::Base.allow_concurrency is true.</p>
<p>We add ::RAILS_DEFAULT_LOGGER.fatal { "Mulithreading is active? #{ActionController::Base.allow_concurrency}" }<br />
to the end of our environment.rb to let us know that it worked.</p>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=180" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2010/01/27/rails-thread-safety/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Google Analytics Launches Asynchronous Support</title>
		<link>http://blog.toppingdesign.com/2009/12/02/179/</link>
		<comments>http://blog.toppingdesign.com/2009/12/02/179/#comments</comments>
		<pubDate>Wed, 02 Dec 2009 15:08:41 +0000</pubDate>
		<dc:creator>Topper</dc:creator>
				<category><![CDATA[General Web work - technical]]></category>
		<category><![CDATA[analytics]]></category>
		<category><![CDATA[async]]></category>
		<category><![CDATA[google]]></category>
		<category><![CDATA[google analytics]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[tracking]]></category>

		<guid isPermaLink="false">http://blog.toppingdesign.com/2009/12/02/179/</guid>
		<description><![CDATA[Google Code Blog: Google Analytics Launches Asynchronous Tracking
Google Analytics Launches Asynchronous Tracking
Tuesday, December 01, 2009
Today we're excited to announce our new Google Analytics Asynchronous Tracking Code snippet as an alternative way to track your websites! It provides the following benefits:
    * Faster tracking code load times for your web pages due to [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?url=aHR0cDovL2dvb2dsZWNvZGUuYmxvZ3Nwb3QuY29tLzIwMDkvMTIvZ29vZ2xlLWFuYWx5dGljcy1sYXVuY2hlcy1hc3luY2hyb25vdXMuaHRtbA==">Google Code Blog: Google Analytics Launches Asynchronous Tracking</a></p>
<blockquote><p>Google Analytics Launches Asynchronous Tracking<br />
Tuesday, December 01, 2009</p>
<p>Today we're excited to announce our new Google Analytics Asynchronous Tracking Code snippet as an alternative way to track your websites! It provides the following benefits:</p>
<p>    * Faster tracking code load times for your web pages due to improved browser execution<br />
    * Enhanced data collection &#038; accuracy<br />
    * Elimination of tracking errors from dependencies when the JavaScript hasn't fully loaded</p></blockquote>
<p>This is excellent news.  I had implemented something similar on my own, but it always had its own problems.  I'm glad to see it officially supported.</p>
<div class="zemanta-pixie"><img class="zemanta-pixie-img" alt="" src="http://img.zemanta.com/pixy.gif?x-id=720b2a0f-63e1-86e3-a9e7-d9f11f66202e" /></div>
 <img src="http://blog.toppingdesign.com/wp-content/plugins/feed-statistics.php?view=1&post_id=179" width="1" height="1" style="display: none;" />]]></content:encoded>
			<wfw:commentRss>http://blog.toppingdesign.com/2009/12/02/179/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
