<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Dan Yoder · Storify]]></title><description><![CDATA[Veteran Web entrepreneur and technologist, aspiring writer and futurist, and a beach bum at heart.]]></description><link>http://storify.com/dyoder</link><generator>NodeJS RSS Module</generator><lastBuildDate>Thu, 23 May 2013 19:54:36 GMT</lastBuildDate><atom:link href="http://storify.com/rss/dyoder" rel="self" type="application/rss+xml"/><item><title><![CDATA[How Not To Do A Spin-Out]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">Or: Why I left spire.io</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Sun, Jun 17 2012 02:11:21</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/indigo_owl/6798260441/" style="color: #429ec6;"><img src="http://farm8.staticflickr.com/7028/6798260441_304db89d83_m.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>burning the galley</span> · 
<a href="http://www.flickr.com/photos/indigo_owl/" style="color: #429ec6;">dominique.walterson</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Almost a year ago now, I began working with Laura Weidman (now with <a target="_blank" href="http://code2040.org/" style="color: #429ec6;">CODE: 2040</a>) to develop a business plan to spin out a new company from a failed social media startup. Shortly afterward, I began working with Matthew King to develop an initial prototype for what would become spire.io. In the fall, Jason Campbell and Carlo Flores began working with us. In January, we administered the last rites to the social media parent company and moved the entire engineering team over to the spin-out.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">By the beginning of June, spire.io had launched two APIs, had interest from investors and customers, and gotten coverage from TechCrunch. We'd also made the front page of HackerNews twice.</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://techcrunch.com/2012/05/09/spire-io-a-new-platform-for-serverless-apps-that-work-on-web-mobile/" title="undefined" class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="http://s2.wp.com/wp-content/themes/vip/tctechcrunch2/images/site-logo-cutout.png?m=1323721300g" alt="Spire.io: A New Platform For Serverless Apps That Work On Web &amp; Mobile | TechCrunch" style="display: block; width: 100px;" /></a><a href="http://techcrunch.com/2012/05/09/spire-io-a-new-platform-for-serverless-apps-that-work-on-web-mobile/" title="undefined" class="title" style="color: #429ec6;">Spire.io: A New Platform For Serverless Apps That Work On Web &amp; Mobile | TechCrunch</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">undefined</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">&nbsp;We subsequently announced that I would move into the CEO role.&nbsp;Shortly thereafter, I resigned.</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">i've resigned from spire.io. details forthcoming. but the main thing is that i am now open to / looking for new opportunities.</p><div class="meta">— <a href="http://twitter.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<a href="http://twitter.com/dyoder/status/210096276820344832" class="date" style="color: #429ec6; font-size: 12px;">Tue, Jun 05 2012 12:50:30</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">There were a lot of good people who put their time and energy into what we were doing. These include the team behind spire.io and lots of people who enthusiastically supported what we were doing.</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">The very awesome company, Spire.io, is releasing their new API is now discussed on Hacker News: http://news.ycombinator.com/item?id=3949144</p><div class="meta">— <a href="http://twitter.com/pydanny" style="color: #429ec6;">Daniel Greenfeld</a> · 
<a href="http://twitter.com/pydanny/status/200255774730100736" class="date" style="color: #429ec6; font-size: 12px;">Wed, May 09 2012 09:07:51</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">To them, I feel I owe an explanation from my resignation.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><h2>The Valley Of Death</h2></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">The short, simple answer is that we ran out of money. We did not have enough cash to make payroll after May 31st. Given the momentum we had, our investors had picked a curious moment to get gun shy. Be that as it may, the fact was that we were out of money, and, on that basis alone, all bets are off. No one is obligated to work for free, obviously.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">However, the situation was actually even worse than that. We had never agreed with investors on the terms of the spin out from the parent company. Or rather, I hadn't.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">In fact, this was a big part of how I ended up as CEO, however briefly. For two weeks, I tried to negotiate something that was appealing to me from a compensation standpoint and something I felt I could take to the team as well.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><h2>The Opportunity Cost</h2></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Keep in mind, this is in a startup climate where I have weekly requests from entrepreneurs and investors asking me if I know any good candidates for technical co-founders. And I had a team of senior engineers, all of whom could credibly fill many of those roles. I didn't want to agree to something where I actually felt we would all be better off somewhere else.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Of course, there's more to life than money. I was willing to concede a substantial amount if we could keep the team together, because I think we all valued that. And I negotiated in good faith - contrary to some slanderous accusations that have since been irresponsibly flung around - trying to get a deal done. In fact, the deal I had on the table was, by the standards of most angel-financed startups, stupidly generous, especially considering the precarious financial position we were in.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><h2>Walking Away</h2></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">With the investors still balking at putting in more money and no agreement on the terms of the spin-out, I was pretty much fed up. And so I resigned. Among other things, this made it possible for the company to move forward. The investors could go back to the terms they originally negotiated with the former CEO, Diego, and then perhaps put up more cash. The team members were free to make their own decisions about the risk and upside. My resignation made my own assessment of the situation pretty clear.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><h2>Hindsight Is 20/20</h2></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">In hindsight, it's pretty obvious that I should have been much more strident in insisting on being a part of the negotiation process from the beginning. Instead, I told Diego what I thought was a reasonable basis for the spin-out and then pestered him about it once in awhile. But we should have established that from the start.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4fdd8f3e70c59efd4e00202c&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/why-i-left-spire-io</link><guid isPermaLink="true">http://storify.com/dyoder/why-i-left-spire-io</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Sun, 17 Jun 2012 09:11:21 GMT</pubDate></item><item><title><![CDATA[Digital creation myths and geopolitical mathematics]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">Great interview with George Dyson in Wired.</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Tue, Mar 13 2012 09:53:58</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/49526657@N04/6684189457" style="color: #429ec6;"><img src="http://farm8.static.flickr.com/7021/6684189457_dd39ace7f8_z.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>313/365 City bokeh</span> · 
<a href="http://www.flickr.com/photos/49526657@N04" style="color: #429ec6;">rennes.i</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">A few choice quotes to get you hooked:</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">"In some creation myths, life arises out of the earth; in others, life falls out of the sky. The creation myth of the digital universe entails both metaphors." - George Dyson</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">"You can’t predict how software will behave by inspecting it. The only way you can tell is to actually run it. And this fundamental unpredictability means you can never have a complete digital dictatorship with one government or company controlling our digital lives—not because of politics but because of mathematics." - George Dyson</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://www.wired.com/magazine/2012/02/ff_dysonqa/" title="The two most powerful technologies of the 20th century-the nuclear bomb and the computer-were invented at the same time and by the same g..." class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="http://www.condenet.com/images_covers/cover_wired_80.jpg" alt="Q&amp;A: Hacker Historian George Dyson Sits Down With Wired’s Kevin Kelly" style="display: block; width: 100px;" /></a><a href="http://www.wired.com/magazine/2012/02/ff_dysonqa/" title="The two most powerful technologies of the 20th century-the nuclear bomb and the computer-were invented at the same time and by the same g..." class="title" style="color: #429ec6;">Q&amp;A: Hacker Historian George Dyson Sits Down With Wired’s Kevin Kelly</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">The two most powerful technologies of the 20th century-the nuclear bomb and the computer-were invented at the same time and by the same g...</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">That's just the tip of the ice-berg. Go. Read the interview.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f5f79e964b046b337f0c9e4&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/digital-creation-myths-and-the-politics-of-matheme</link><guid isPermaLink="true">http://storify.com/dyoder/digital-creation-myths-and-the-politics-of-matheme</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Tue, 13 Mar 2012 16:53:58 GMT</pubDate></item><item><title><![CDATA[Ruby On Ales]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">Get your tickets early next year.</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Thu, Mar 01 2012 14:03:27</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://ruby.onales.com/assets/okhanes.jpg" style="color: #429ec6;"><img src="http://ruby.onales.com/assets/okhanes.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><a href="http://ruby.onales.com" style="color: #429ec6;">Onales</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">So I'm in Bend, Oregon. Charming downtown. Snow crunching underfoot. Haven't felt that sensation - or the bracing cold - in a long time. Specifically, about a decade.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Why am I enduring the cold? As charming as Bend is ... I'm here for Ruby On Ales.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">This is another Coby Randquist special. Coby leaves a trail of RubyConfs in his wake. He has a knack for it, too. And Ruby On Ales is quite possibly his masterpiece.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Great venue. Great crowd ... you have to be pretty determined to come here. Bend is out in the middle of nowhere. So the only people who are here are really into Ruby. And also drunk. Did I mention the venue?</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">Current speaker is like an alcoholic Tony Robbins. #rubyonales #nowyouknow</p><div class="meta">— <a href="http://twitter.com/mentalbrew" style="color: #429ec6;">Mental Brew</a> · 
<a href="http://twitter.com/mentalbrew/status/175333548763521024" class="date" style="color: #429ec6; font-size: 12px;">Thu, Mar 01 2012 13:35:50</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Free beer. And it's <i>good</i>&nbsp;beer. And we're in a theater. I'm listening to presentation called "Dreaming Of The Freshies" who's quoting _why. We're throwing a party tonight. Hopefully I'll have a chance to catch up with friends like Coby. Snowboarding this weekend.</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">Drinking a Ruby Ale at #RubyOnAles #meta</p><div class="meta">— <a href="http://twitter.com/davidcelis" style="color: #429ec6;">David Celis</a> · 
<a href="http://twitter.com/davidcelis/status/175316985838710785" class="date" style="color: #429ec6; font-size: 12px;">Thu, Mar 01 2012 12:30:01</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Life is good.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f4fee4f40fc35ee53a49740&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/ruby-on-ales</link><guid isPermaLink="true">http://storify.com/dyoder/ruby-on-ales</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Thu, 01 Mar 2012 22:03:27 GMT</pubDate></item><item><title><![CDATA[Appropriate Humility]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">Engineering is a humbling endeavor. Embrace that.</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Wed, Feb 29 2012 11:26:11</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/50573017@N02/6622814393" style="color: #429ec6;"><img src="http://farm8.static.flickr.com/7173/6622814393_42fac13577_z.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>zen-garden</span> · 
<a href="http://www.flickr.com/photos/50573017@N02" style="color: #429ec6;">Spirit-Fire</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">A lot of things in this business annoy me. But I try to focus on the things that delight me, because that's more fun. So here's an example of what I call "appropriate humility":</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">It is a draft written in 30 minutes, but please help me improving the Redis Security page -&gt; http://t.co/8B94ezmL</p><div class="meta">— <a href="http://twitter.com/antirez" style="color: #429ec6;">Salvatore Sanfilippo</a> · 
<a href="http://twitter.com/antirez/status/174924826681688065" class="date" style="color: #429ec6; font-size: 12px;">Wed, Feb 29 2012 10:31:43</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">If you read the page, it's a full-disclosure sort of thing. It isn't filled with a bunch of self-serving hyperbole about how amazing Redis security is. It's a sincere attempt to make sure this crucial information is available and accurate.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">And, yet, Redis is a remarkable piece of software. Salvatore has every right to boast and brag, especially by the standards of Silicon Valley culture (that is, not limited to its geography), where it has sadly become routine to take credit for other people's hard work.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">I much prefer the understated approach Salvatore takes. I think of it as "appropriate humility." Most of us routinely make use of thousands upon thousands of hours' worth of other people's work. All of us make the occasionally dumb mistake. I don't care how smart you are, engineering will humble you. It's just a question of whether you own up to it.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">The best engineers I've ever worked with - and I've had the good fortune to work with some amazing people - were humble. They knew their work was made possible by many other people, most of them relatively anonymous. That taught me that we don't need to accept arrogance as a prerequisite for great engineering.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">It's lesson the Valley culture has forgotten, if it ever learned it. And for those of you who, like Salvatore, simply focus on great engineering with appropriate humility, thank you.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f4e7bd0c1ed09ec5346d063&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/appropriate-humility</link><guid isPermaLink="true">http://storify.com/dyoder/appropriate-humility</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Wed, 29 Feb 2012 19:26:11 GMT</pubDate></item><item><title><![CDATA[You May Say I'm An HTTP Nerd]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">But I'm not the only one.</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Sun, Feb 26 2012 15:03:44</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.computerhistory.org/internet_history/full_size_images/berners-lee_diagram.gif" style="color: #429ec6;"><img src="http://www.computerhistory.org/internet_history/full_size_images/berners-lee_diagram.gif" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><a href="http://www.computerhistory.org" style="color: #429ec6;">Computerhistory</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Yesterday seemed like a day like any other. (Well, except for the fact that it was StartupWeekend/LA, but that's another post.) And then:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">Edge Rails: PATCH is the new primary HTTP method for updates http://t.co/dkYFvkWR</p><div class="meta">— <a href="http://twitter.com/rails" style="color: #429ec6;">Ruby on Rails</a> · 
<a href="http://twitter.com/rails/status/173587571501318144" class="date" style="color: #429ec6; font-size: 12px;">Sat, Feb 25 2012 17:57:56</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Innocent enough, right? This led Peter Cooper to pose a good question about HTTP:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">I'd rather tell my invoice resource it is now paid, rather than that its "paid" attribute became 1. I like real verbs and not HTTP's.</p><div class="meta">— <a href="http://twitter.com/peterc" style="color: #429ec6;">Peter Cooper</a> · 
<a href="http://twitter.com/peterc/status/173594303866740737" class="date" style="color: #429ec6; font-size: 12px;">Sat, Feb 25 2012 18:24:41</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">The reason I say this is a good question is that it's representative of the frustration I think a lot of people feeling when trying to deal with HTTP. They're writing an application. They're thinking in terms of whatever idiom they're programming in. Meanwhile, HTTP is concerned with moving things around on a network in a useful way so applications can use them. Different problem.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">This next Tweet from Tony Arcieri (it's not my fault; he keeps saying interesting things) gets to the heart of the matter:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">@steveklabnik @dyoder @peterc on the contrary, objects are concrete. HTTP leavea people debating what HTTP status codes actually mean what</p><div class="meta">— <a href="http://twitter.com/bascule" style="color: #429ec6;">Tony Arcieri</a> · 
<a href="http://twitter.com/bascule/status/173608069543100416" class="date" style="color: #429ec6; font-size: 12px;">Sat, Feb 25 2012 19:19:23</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">I was in the middle of starting to try and argue about this in 140 character increments when I remembered that was why I had set up this Storify account:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">@bascule @steveklabnik @peterc it seems like we're confusing levels of abstraction ... i feel another @storify post coming on.</p><div class="meta">— <a href="http://twitter.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<a href="http://twitter.com/dyoder/status/173607887241887746" class="date" style="color: #429ec6; font-size: 12px;">Sat, Feb 25 2012 19:18:40</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">What I was getting at was that application code is a level above HTTP. To make this more concrete, let's say we like object-oriented programming. Our client and server code wants to operate on objects. For example, to go back to Peter's original Tweet, we want to send a "paid" message to our "invoice" object. Right?</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Well, this isn't HTTP's job. HTTP's job is to move the invoice object from the server to the client for you. Or, more precisely, a representation of the resource that you prefer to work with in the form of an object. Representational. State. Transfer.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Once you get ahold of it, you can do whatever you like with it. Like define a "paid" method that actually sends a POST to the invoice's payment URL with a description of the payment. Or whatever.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">But why not just use objects directly, right?</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">@steveklabnik @peterc that's why I like DCell (or even DRb): it's objects talking to objects</p><div class="meta">— <a href="http://twitter.com/bascule" style="color: #429ec6;">Tony Arcieri</a> · 
<a href="http://twitter.com/bascule/status/173598876085923840" class="date" style="color: #429ec6; font-size: 12px;">Sat, Feb 25 2012 18:42:52</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">We could totally do this! Just define a protocol that sends messages to objects. Instead of transferring state, we transfer messages. In fact ... we <i>did</i>&nbsp;do this, more or less. It was called CORBA. It was, in the grand scheme of things, a failure. I mean, no one is arguing about how Rails isn't really CORBA-compliant. But, hey, maybe it's an idea whose time has come -</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Except for one thing. There's a reason HTTP transfers state and not messages. A very good reason.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Performance.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Now, HTTP was designed with documents in mind. The thing is, though, "documents" aren't that different from "objects." I can still remember Venki Iyer trying to explain this to me back in 1996. "You could use HTTP for anything!" he exclaimed, knocking over his beer in the process. It took me about a decade to understand what he was talking about.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Here's a common application scenario: editing an object. To go back to Peter's example again ... before I pay that invoice, I want to review it. So my client application needs to retrieve it. Do I want to do that field by field, line-item by line-item? Of course not. I'd have to make dozens of requests. It's much more efficient to send me the entire invoice. Just like a document.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f4a26c047662781414eeaed&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/how-i-learned-to-stop-worrying-and-love-http</link><guid isPermaLink="true">http://storify.com/dyoder/how-i-learned-to-stop-worrying-and-love-http</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Sun, 26 Feb 2012 23:03:44 GMT</pubDate></item><item><title><![CDATA[Ruby Is Still Cool]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">And Node's rise has nothing to do with Rails.</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Sat, Feb 25 2012 21:04:01</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/37996573467@N01/1028969342" style="color: #429ec6;"><img src="http://farm2.static.flickr.com/1073/1028969342_899e4dacd4_z.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>Ruby Collection</span> · 
<a href="http://www.flickr.com/photos/37996573467@N01" style="color: #429ec6;">luisvilla</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Here I thought perhaps Giles was just getting quiet in his old age. And then he went and brilliantly trolled the entire hipster hacker "community."</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://gilesbowkett.blogspot.com/2012/02/rails-went-off-rails-why-im-rebuilding.html" title="Ever been to one of those parties where your work friends and your college friends don't talk ? I posted a great video on my Tumblr which..." class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="http://img.youtube.com/vi/6k3l3bku4E8/default.jpg" alt="Giles Bowkett: Rails Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript" style="display: block; width: 100px;" /></a><a href="http://gilesbowkett.blogspot.com/2012/02/rails-went-off-rails-why-im-rebuilding.html" title="Ever been to one of those parties where your work friends and your college friends don't talk ? I posted a great video on my Tumblr which..." class="title" style="color: #429ec6;">Giles Bowkett: Rails Went Off The Rails: Why I'm Rebuilding Archaeopteryx In CoffeeScript</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">Ever been to one of those parties where your work friends and your college friends don't talk ? I posted a great video on my Tumblr which...</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">My response:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">.@gilesgoatboy the thing is, rails was never the thing that made ruby cool. popular, perhaps, but that's a different thing.</p><div class="meta">— <a href="http://twitter.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<a href="http://twitter.com/dyoder/status/172838844528476162" class="date" style="color: #429ec6; font-size: 12px;">Thu, Feb 23 2012 16:22:46</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">The fact that the hipsters have moved on to Node is meaningless to Ruby. Yes, fewer people will develop apps in Ruby. But Ruby isn't going anywhere. In fact, there is a lot of very interesting work going on in the Ruby community - and much of it has nothing to do with Rails. The reality is, and always was, that Ruby is what made Rails cool, not the other way around.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Furthermore, Node's emergence is a completely separate thing. Developers are using Node because it's Javascript, it provides a really solid set of libraries for using evented I/O, and because server-side MVC frameworks are being replaced by client-side MVC frameworks calling REST APIs. This literally has absolutely nothing to do with Rails, except arguably the bit about REST APIs. But Rails' strong point was never as a way to build APIs. Developers flocked to it for the server-side MVC.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Technology gets better - on the whole - and old things become obsolete. It's not some indictment of older technologies. It's the nature of technology itself. But that's not nearly as fun to argue about, I guess.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f49bd3f079ddb19793a90e1&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/ruby-is-still-cool</link><guid isPermaLink="true">http://storify.com/dyoder/ruby-is-still-cool</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Sun, 26 Feb 2012 05:04:01 GMT</pubDate></item><item><title><![CDATA[Disruptor: 100K TPS at Less Than 1ms Latency]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">"[Disruptor's performance] is very close to the theoretical limit of a modern processor to exchange data between cores."</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Thu, Feb 23 2012 23:28:35</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/14405058@N08/6906871163" style="color: #429ec6;"><img src="http://farm8.static.flickr.com/7046/6906871163_85e3f2b89c_z.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>Vulcan</span> · 
<a href="http://www.flickr.com/photos/14405058@N08" style="color: #429ec6;">Ryan Somma</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Just when you thought it was safe to embrace co-operative multitasking, some Java guys have basically proven that, given today's hardware (multicore with large and sophisticated RAM caches), the problem isn't threads at all.&nbsp;<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">It's queues.<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">With some ignorance sprinkled in about how best to take advantage of today's hardware.</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://code.google.com/p/disruptor/" title="To understand the problem the Disruptor is trying to solve, and to get a feel for why this concurrency framework is so fast, read the Tec..." class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="http://disruptor.googlecode.com/svn/wiki/images/latency-histogram.png" alt="disruptor - High Performance Inter-Thread Messaging Library - Google Project Hosting" style="display: block; width: 100px;" /></a><a href="http://code.google.com/p/disruptor/" title="To understand the problem the Disruptor is trying to solve, and to get a feel for why this concurrency framework is so fast, read the Tec..." class="title" style="color: #429ec6;">disruptor - High Performance Inter-Thread Messaging Library - Google Project Hosting</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">To understand the problem the Disruptor is trying to solve, and to get a feel for why this concurrency framework is so fast, read the Tec...</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">TLDR is that they use a ring instead of a queue and do some optimizations around making sure that events are cached in L2. The result is that threads pass messages back and forth and it's astonishingly fast.<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">How fast?<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">I think there's general agreement that, for HTTP/TCP servers, Erlang &gt; Node &gt; [ Ruby, Python ]. That is (as I've recently learned), it's a K-sorted list, where the value of K is the only thing in dispute. There's some preliminary results that suggest Lua and Go are faster than Erlang, but, even if you throw them in the mix, we're generally talking about throughput on the order of 1,000 to 10,000 requests per second, and latency between 1 and 10 milliseconds.<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Disrupter claims to be an order of magnitude faster in both dimensions.<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Tony Arcieri (again!) who's been doing some quick-and-dirty benchmarks to test Celluloid, his Ruby concurrency gem, found the Disrupter claims are credible.</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">Hello world webserver benchmarks are silly, but @jbrisbin's Disruptor "web server" kicks Node's ass: 44648 reqs/s vs 8026.07 reqs/s</p><div class="meta">— <a href="http://twitter.com/bascule" style="color: #429ec6;">Tony Arcieri</a> · 
<a href="http://twitter.com/bascule/status/172571790168690688" class="date" style="color: #429ec6; font-size: 12px;">Wed, Feb 22 2012 22:41:35</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">The comparison is flawed in many respects, but, at the very least, it suggests that Disrupter, which, again, is using an old-fashioned pre-emptive multitasking model, certainly belongs in the discussion with all these cooperative-multitasking&nbsp;execution environments.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Of course, this isn't really all&nbsp;<i>that</i>&nbsp;shocking, since, under the covers, this is pretty similar to what they're doing under the covers. And the complexity of the solution (from the application programmer's perspective) is comparable to Go's channels. But, still, it's really interesting because you can use this same approach with languages we already know and love. It turns out the key isn't co-routines at all, but message passing in combination with understanding things like how L2 caching works.<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Theory: that's why the solutions initially have all taking the form of new execution environments (primarily in&nbsp;the form of languages). Because that's where the knowledge about these things is concentrated.<br /></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">As an aside, this talk, given by the Disruptor authors just a couple of days ago, is absolutely a must-see:<br /></div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://www.infoq.com/presentations/LMAX-Disruptor-100K-TPS-at-Less-than-1ms-Latency" title="David Neal introduces RavenDB, a document-oriented database with .NET, Silverlight, JavaScript and REST APIs. Alan Shalloway discusses th..." class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="http://www.infoq.com/resource/interviews/shalloway-scaling-agile-lean-kanban/en/smallimage/AlanShalloway.jpg" alt="InfoQ: LMAX Disruptor: 100K TPS at Less than 1ms Latency" style="display: block; width: 100px;" /></a><a href="http://www.infoq.com/presentations/LMAX-Disruptor-100K-TPS-at-Less-than-1ms-Latency" title="David Neal introduces RavenDB, a document-oriented database with .NET, Silverlight, JavaScript and REST APIs. Alan Shalloway discusses th..." class="title" style="color: #429ec6;">InfoQ: LMAX Disruptor: 100K TPS at Less than 1ms Latency</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">David Neal introduces RavenDB, a document-oriented database with .NET, Silverlight, JavaScript and REST APIs. Alan Shalloway discusses th...</div></div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f473c2267ded65f710a8aae&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/disruptor-100k-tps-at-less-than-1ms-latency</link><guid isPermaLink="true">http://storify.com/dyoder/disruptor-100k-tps-at-less-than-1ms-latency</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Fri, 24 Feb 2012 07:28:35 GMT</pubDate></item><item><title><![CDATA[I Say Method, You Say Function]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;"> Is the rise of Javascript leading to misconceptions about object-oriented programming?</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Wed, Feb 22 2012 16:50:48</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/52064557@N04/6220140897" style="color: #429ec6;"><img src="http://farm7.static.flickr.com/6035/6220140897_5d2403e9af_z.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>Gale_CE_2</span> · 
<a href="http://www.flickr.com/photos/52064557@N04" style="color: #429ec6;">cenews</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">An interesting little sidebar broke out on Twitter yesterday. It started with Gregory Moeck venting:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">I feel like I'm having the same discussion over and over. When i say OO i mean encapsulation, polymorphism and message passing. Period.</p><div class="meta">— <a href="http://twitter.com/gregmoeck" style="color: #429ec6;">Gregory Moeck</a> · 
<a href="https://twitter.com/#!/gregmoeck/status/172000868026163200" class="date" style="color: #429ec6; font-size: 12px;">Tue, Feb 21 2012 08:52:57</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">I get this. The variant I learned&nbsp;was "encapsulation, polymorphism, and inheritance." (I'm not a big fan of inheritance; I'm just saying that's the definition I learned in the late 80s.)&nbsp;To me, message passing and polymorphism are sort of redundant. In any event, the idea is that you aren't directly invoking a function any more.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Tony Arcieri, who, for some reason, has been getting my attention a lot recently, chimed in:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">@steveklabnik @gregmoeck the mental model is dispatching a message, unfortunately FP types want to reduce that to just a function call</p><div class="meta">— <a href="http://twitter.com/bascule" style="color: #429ec6;">Tony Arcieri</a> · 
<a href="https://twitter.com/#!/bascule/status/172009480287027200" class="date" style="color: #429ec6; font-size: 12px;">Tue, Feb 21 2012 09:27:10</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">This cuts to the chase. It's those FP guys. And this is an old debate. Alexander Stepanov, who wrote the vastly under-appreciated STL libraries for C++, called object-oriented programming a "hoax."</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://www.stlport.org/resources/StepanovUSA.html" title="" class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="http://www.stlport.org/images/stl_logo.gif" alt="STLport: An Interview with A. Stepanov" style="display: block; width: 100px;" /></a><a href="http://www.stlport.org/resources/StepanovUSA.html" title="" class="title" style="color: #429ec6;">STLport: An Interview with A. Stepanov</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;"></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">(But, you ask, isn't C++ object-oriented? Yes. But the STL, in it's essence, was more about functional programming. That's a huge oversimplification, but I'm already on the brink of writing a different post.)</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Languages with exemplars (aka prototypes), like Javascript, do encapsulation pretty well. But it's also fair to say that unless they do polymorphism and have at least some first-class notion of delegation, all you really have is data structures with properties whose values are functions. That's kind of neat and simple, but it's a stretch to talk in terms of object-oriented anything.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">I've always found the idea of melding the two worlds fascinating. I used to play&nbsp;around with stack-based languages, trying to build up more complex abstractions from the simplest starting point, and then eventually get to something that looks object-oriented. But there's also something powerful about saying, <i>hey, we're going to make objects and messages primitives, so deal with it</i>.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">That's one of the things I love about Tony's work on Celluloid. (I told you he's sort of got my attention these days.) It fully leverages the idea of message passing and yet it looks like normal Ruby code. To do this in Javascript, you'd have to resort to an interface that looks like EventEmitter. Maybe that's okay. But it's a significant difference that can't just be ignored.<br /></div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="https://github.com/tarcieri/celluloid" title="&quot;I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages&quot; --Ala..." class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="https://a248.e.akamai.net/assets.github.com/images/gravatars/gravatar-140.png?1329275859" alt="celluloid" style="display: block; width: 100px;" /></a><a href="https://github.com/tarcieri/celluloid" title="&quot;I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages&quot; --Ala..." class="title" style="color: #429ec6;">celluloid</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">"I thought of objects being like biological cells and/or individual computers on a network, only able to communicate with messages" --Ala...</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">UPDATE: Daniel Hengeveld pointed me to this entertaining koan (at the end of the message, after the asterisks):</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://people.csail.mit.edu/gregs/ll1-discuss-archive-html/msg03277.html" title="" class="title" style="color: #429ec6;">RE: What's so cool about Scheme?</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;"></div></div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f4579d13dc5cd731e0a09bf&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/i-say-method-you-say-function</link><guid isPermaLink="true">http://storify.com/dyoder/i-say-method-you-say-function</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Thu, 23 Feb 2012 00:50:48 GMT</pubDate></item><item><title><![CDATA[Capability Security For Web Apps]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">We've rolled an implementation of capabilities for Web applications in our spire.io API.</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Wed, Feb 22 2012 16:52:13</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/54319186@N03/6918214939" style="color: #429ec6;"><img src="http://farm8.static.flickr.com/7047/6918214939_a8e555dc74_z.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>Car Key</span> · 
<a href="http://www.flickr.com/photos/54319186@N03" style="color: #429ec6;">Damian Powell</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">First, the blog post, with comments from Discus:</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://www.spire.io/posts/web-capabilities.html" title="Capability security provides an authorization model that works like keys on a keychain. A given capability provides privileges for access..." class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="http://www.spire.io/images/car-keys.jpg" alt="Web Capabilities: A Better Way To Secure Your Apps | spire.io" style="display: block; width: 100px;" /></a><a href="http://www.spire.io/posts/web-capabilities.html" title="Capability security provides an authorization model that works like keys on a keychain. A given capability provides privileges for access..." class="title" style="color: #429ec6;">Web Capabilities: A Better Way To Secure Your Apps | spire.io</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">Capability security provides an authorization model that works like keys on a keychain. A given capability provides privileges for access...</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">We've also started a conversation on Hacker News:</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://news.ycombinator.com/item?id=3619311" title="" class="title" style="color: #429ec6;">Request for comments: capability security for Web applications | Hacker News</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;"></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">And on the Node mailing list:</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="http://groups.google.com/group/nodejs/browse_thread/thread/5652d4ba2d5f7b20" title="Our Web API uses a form of capability security. It's still evolving, but I've written about what we've done thus far here: http://www.spi..." class="title" style="color: #429ec6;">Capability security for Web apps: request for comment. - nodejs | Google Groups</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">Our Web API uses a form of capability security. It's still evolving, but I've written about what we've done thus far here: http://www.spi...</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">I hope you'll participate in one or all of these discussions and let us know what you think of this idea.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f44652e1a7f0074110a44aa&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/capability-security-for-web-apps</link><guid isPermaLink="true">http://storify.com/dyoder/capability-security-for-web-apps</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Thu, 23 Feb 2012 00:52:13 GMT</pubDate></item><item><title><![CDATA[Benchmark: Ruby Evented I/O]]></title><description><![CDATA[<html><body><div id="storify-minimal" style="font-family: Museo Sans,Helvetica Neue,sans-serif; color: #333;"><p id="description" style="font-size: 14px; margin: 0; line-height: 1.4em; color: #666; margin-bottom: 5px;">Tony Arcieri's work on making evented I/O more practical in Ruby continues.</p><p id="meta" style="font-size: 12px; margin: 0; color: #999; padding-bottom: 20px; border-bottom: 1px dashed #ddd; margin-bottom: 20px;">Storified by <a href="http://storify.com/dyoder" style="color: #429ec6;">Dan Yoder</a> · 
<span>Wed, Feb 22 2012 16:54:13</span></p><div class="element image" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;"><a href="http://www.flickr.com/photos/60909977@N06/6888678313" style="color: #429ec6;"><img src="http://farm8.static.flickr.com/7042/6888678313_d96abf41d3_z.jpg" style="max-width: 100%; display: block; margin-bottom: 5px;" /></a><div class="meta" style="font-size: 12px; line-height: 1.4em; color: #666;"><span>DSC_0991</span> · 
<a href="http://www.flickr.com/photos/60909977@N06" style="color: #429ec6;">68photobug</a></div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Ruby has had evented I/O support for awhile. However, it was kind of an all or nothing thing. And, compared to Node.js, it really wasn't all that fast.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Tony Arcieri apparently decided to try and solve these problems.</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="https://github.com/tarcieri/celluloid-io" title="README.md You don't have to choose between threaded and evented IO! Celluloid::IO provides an event-driven IO system for building fast, s..." class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="https://a248.e.akamai.net/assets.github.com/images/gravatars/gravatar-140.png?1329275856" alt="celluloid-io" style="display: block; width: 100px;" /></a><a href="https://github.com/tarcieri/celluloid-io" title="README.md You don't have to choose between threaded and evented IO! Celluloid::IO provides an event-driven IO system for building fast, s..." class="title" style="color: #429ec6;">celluloid-io</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">README.md You don't have to choose between threaded and evented IO! Celluloid::IO provides an event-driven IO system for building fast, s...</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">One nice thing about Celluloid IO is that it's basically transparent to you as the developer. It's a very elegant non-intrusive design.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Next, Tony wrote a simple Web server framework.</div><div class="element link" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; padding: 10px 10px 5px; border: 1px solid #ddd; max-width: 500px; overflow: hidden;"><a href="https://github.com/tarcieri/reel" title="Or, indent your code 4 spaces" class="thumbnail" style="color: #429ec6; display: block; float: right; padding: 0 0 5px 10px;"><img src="https://a248.e.akamai.net/assets.github.com/images/gravatars/gravatar-140.png?1329275960" alt="reel" style="display: block; width: 100px;" /></a><a href="https://github.com/tarcieri/reel" title="Or, indent your code 4 spaces" class="title" style="color: #429ec6;">reel</a><div class="description" style="font-size: 12px; line-height: 1.4em; color: #666;">Or, indent your code 4 spaces</div></div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Then he benchmarked it.</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">Reel "hello world" benchmarks: 5669 req/s on 1.9.3, 2716/s on @JRuby (vs 9046 req/s on Node)</p><div class="meta">— <a href="http://twitter.com/bascule" style="color: #429ec6;">Tony Arcieri</a> · 
<a href="https://twitter.com/bascule/status/171755766028570624" class="date" style="color: #429ec6; font-size: 12px;">Mon, Feb 20 2012 16:39:00</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Charles Nutter thinks he can get the JRuby number up.</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">@bascule Hmm, got some code for me? We should do better than that compared to 1.9.3...</p><div class="meta">— <a href="http://twitter.com/headius" style="color: #429ec6;">Charles Nutter</a> · 
<a href="https://twitter.com/headius/status/171756582168821760" class="date" style="color: #429ec6; font-size: 12px;">Mon, Feb 20 2012 16:42:14</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Obviously, this is a pretty simple-minded benchmark, but it jives with our experience at spire.io. (At least in terms of the relative performance of Node and Ruby.) To get the ratio for Node to Ruby down to less than 2:1 is pretty interesting.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">UPDATE: From Tony:</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">@dyoder FWIW, Thin gets you 3/4 of the performance of Node, at least on the "hello world" benchmark: https://t.co/5H7M9chr</p><div class="meta">— <a href="http://twitter.com/bascule" style="color: #429ec6;">Tony Arcieri</a> · 
<a href="https://twitter.com/bascule/status/172064175705690112" class="date" style="color: #429ec6; font-size: 12px;">Tue, Feb 21 2012 13:04:30</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">Our (more complex) benchmark hadn't shown Thin to be that close to Node. I wonder if Reel can get there, too.</div><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">ANOTHER UPDATE: The Thin benchmark was flawed. So it's actually closer than even 3/4.</div><blockquote class="element twitter-tweet" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em; max-width: 500px;"><p style="font-size: 20px; margin: 0; line-height: 1.4em; font-family: Georgia,serif; margin-bottom: 5px;">Node vs Thin benchmarks: Node.js: 9023 req/s (7.1ms req latency), Thin: 8747 reqs/s (7.3ms req latency)</p><div class="meta">— <a href="http://twitter.com/bascule" style="color: #429ec6;">bascule</a> · 
<a href="http://twitter.com/bascule/status/172149277156585472" class="date" style="color: #429ec6; font-size: 12px;">Tue, Feb 21 2012 18:42:40</a></div></blockquote><div class="element text" style="margin: 0 0 15px; font-size: 14px; line-height: 1.4em;">This surprises me, but then our benchmarks were different. Tony believes that he can get better performance out of Reel as well.</div><div class="footer"><img src="http://storify.com/public/img/logo.blue.small.png" alt="Powered by Storify" /></div></div><img src="http://stats.storify.com/record/view.gif?sid=4f43fd721ac4ba1548767a78&amp;referer=%2F%2Fstorify.com%2Frss%2Fdyoder" width="1" height="1" /></body></html>]]></description><link>http://storify.com/dyoder/benchmark-ruby-evented-i-o</link><guid isPermaLink="true">http://storify.com/dyoder/benchmark-ruby-evented-i-o</guid><dc:creator><![CDATA[Dan Yoder]]></dc:creator><pubDate>Thu, 23 Feb 2012 00:54:13 GMT</pubDate></item></channel></rss>