<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:posterous="http://posterous.com/help/rss/1.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>blog.rusty.io</title>
    <link>http://blog.rusty.io</link>
    <description>Blog by Rusty Klophaus</description>
    <generator>posterous.com</generator>
    <link xmlns="http://www.w3.org/2005/Atom" href="http://posterous.com/api/sup_update#de41f3d3f" type="application/json" rel="http://api.friendfeed.com/2008/03#sup" />
    
    
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/RustyKlophaus" /><feedburner:info uri="rustyklophaus" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://posterous.superfeedr.com/" /><item>
      <pubDate>Tue, 24 Jan 2012 14:41:00 -0800</pubDate>
      <title>Looking Back on 2011</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/JCSz7K0uYD8/looking-back-on-2011</link>
      <guid isPermaLink="false">http://blog.rusty.io/looking-back-on-2011</guid>
      <description>&lt;p&gt;
	&lt;h2&gt;Looking Back on 2011&lt;/h2&gt;
&lt;p&gt;(Yes, this post is overdue. Wrote it early in January, then forgot to post.)&lt;/p&gt;
&lt;p&gt;Since reading &lt;a href="http://sivers.org/zipit"&gt;this post&lt;/a&gt; by Derek Sivers, founder of &lt;a href="cdbaby.com"&gt;CDBaby&lt;/a&gt;, I've been hesitant to blog about upcoming projects, plans, and schemes. According to a study that Derek cites: "Announcing your plans to others satisfies your self-identity just enough that you're less motivated to do the hard work needed." Wouldn't want that to happen, would we?&lt;/p&gt;
&lt;p&gt;Everybody's self-identity needs a bit of satisfaction, however, and mine is no exception. To get it, I'm not going to talk about what I'm going to do, instead I'm going to talk about what I've done. In other words, this post is me giving myself a congratulatory high-five.&lt;/p&gt;
&lt;p&gt;Here's a quick recap of what kept me busy in 2011:&lt;/p&gt;
&lt;h2&gt;Basho Technologies&lt;/h2&gt;
&lt;p&gt;2011 marked the beginning of my third year with Basho Technologies. Basho makes Riak, an open-source, distributed document database for companies with lots of critical data.&lt;/p&gt;
&lt;p&gt;I spent the first half of the year involved in client work and researching and prototyping how to combine Riak with OLAP engines and geospatial search. Exciting stuff, but unfortunately it didn't make sense to take this beyond the stage of prototypes.&lt;/p&gt;
&lt;p&gt;During the second half of the year, I focused on Secondary Indexing support in Riak. Somewhere in the middle there, we cranked like hell to release Riak version 1.0; a major milestone in any product's life.&lt;/p&gt;
&lt;h2&gt;Hacker News Readers of DC&lt;/h2&gt;
&lt;p&gt;The DC technology scene continues to crystallize. I use the word "crystallize" very specifically here; I think there have always been technologists in DC, but only recently have the structures been in place for us to come together. Hacker News Readers of DC is one of those structures.&lt;/p&gt;
&lt;p&gt;In 2011 we:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Doubled in size, from 320 members to 660+ members.&lt;/li&gt;
&lt;li&gt;Average one meetup every 1.7 months. (Down slightly from last year, something to work on.)&lt;/li&gt;
&lt;li&gt;Averaged 70 attendees per meetup. (Double the average of 35 from last year.)&lt;/li&gt;
&lt;li&gt;Held three sponsored meetups (thanks to Factual, SBNation, and Basho!)&lt;/li&gt;
&lt;li&gt;Held two startup showcases.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Tech Conferences&lt;/h2&gt;
&lt;p&gt;In 2011, I decreased my rate of conference speaking. I had averaged approximately one conference talk per month in 2010, which was enlightening, but grueling.&lt;/p&gt;
&lt;p&gt;Here are my 2011 talks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;May - &lt;a href="http://www.meetup.com/erlang/events/17550721/"&gt;Getting Started With Riak&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;July - &lt;a href="http://www.oscon.com/oscon2011/public/schedule/speaker/113573"&gt;Querying Riak Just Got Easier - Introducing Secondary Indexes&lt;/a&gt; (OSCON)&amp;nbsp;&lt;/li&gt;
&lt;li&gt;October - &lt;a href="http://www.meetup.com/erlang/events/35518252/"&gt;Winning the Edit-Build-Test Cycle in Erlang&lt;/a&gt;&amp;nbsp;&lt;/li&gt;
&lt;li&gt;October - Enhancements for Querying and Processing Data in Riak 1.0 (webinar)&lt;/li&gt;
&lt;li&gt;December - &lt;a href="http://www.erlangdc.com/speakers/rusty_klophaus/"&gt;Everybody Polyglot! - Cross Language RPC in Erlang&amp;nbsp;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;ErlangDC 2011&lt;/h2&gt;
&lt;p&gt;I tried my hand at conference organizing in 2011, working with Luc Castera and Ram Singh to organize &lt;a href="http://erlangdc.com"&gt;ErlangDC 2011&lt;/a&gt; in December. This was an epic one-day conference held at the AOL headquarters in Dulles, focused on helping DC-area developers become more familiar and comfortable with Erlang.&lt;/p&gt;
&lt;p&gt;Highlights include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Sold out all 110 tickets.&lt;/li&gt;
&lt;li&gt;Full day tracks, with a three hour tutorial sponsored by Erlang Solutions and 8 speakers.&lt;/li&gt;
&lt;li&gt;8 sponsors who helped with venue, lunch, book give-aways, snacks, drinks, t-shirts, and other costs.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Blogging&lt;/h2&gt;
&lt;p&gt;In June of 2011, I switched to Posterous and vowed to start blogging regularly. This led to a flurry of activity for a combined total of 34 posts in June and July alone, and 46 across the entire year.&lt;/p&gt;
&lt;p&gt;Unfortunately, it didn't turn into a habit, and my rate of blogging dropped back down to one or two posts per month. I had been trying to blog daily, but I think twice weekly might be a better goal for me.&lt;/p&gt;
&lt;p&gt;Here are some of my favorite posts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blog.rusty.io/how-to-bag-a-technical-co-founder-37742"&gt;How To Bag a Technical Co-Founder&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.rusty.io/the-right-kind-of-confidence"&gt;The Right Kind of Confidence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.rusty.io/priorities"&gt;Priorities&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blog.rusty.io/light-many-fires"&gt;Light Many Fires&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I also did a short stint of mini-podcasts for the &lt;a href="http://riak.minutewith.com"&gt;Riak MinuteWith&lt;/a&gt; channel. Unfortunately, it didn't catch on with the community, so we discontinued the series.&lt;/p&gt;
&lt;h2&gt;Fitness&lt;/h2&gt;
&lt;p&gt;My proudest accomplishment of 2011 isn't technology related at all. For many years, I've skated by on youth and good genes to avoid any kind of fitness regiment. Last year, I decided to change that.&lt;/p&gt;
&lt;p&gt;My approach was simple: just step out the door every day with running shoes on. It didn't matter whether I ran a block or a mile, the goal was just to give myself the &lt;em&gt;opportunity&lt;/em&gt; to work out.&lt;/p&gt;
&lt;p&gt;This approach worked, I averaged 3 workouts a week since I started in March. 80% of my workouts were running, where I averaged 3 miles. 20% were either gym or kettlebell workouts.&lt;/p&gt;
&lt;p&gt;Read &lt;a href="http://rustyklophaus.com/articles/20110108-LookingBackOn2010.html"&gt;last year's update&lt;/a&gt;.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/looking-back-on-2011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/looking-back-on-2011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/JCSz7K0uYD8" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/looking-back-on-2011</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 06 Jan 2012 05:00:00 -0800</pubDate>
      <title>The Power of X-Driven Development</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/scmQMFdwBbU/the-power-of-x-driven-development</link>
      <guid isPermaLink="false">http://blog.rusty.io/the-power-of-x-driven-development</guid>
      <description>&lt;p&gt;
	&lt;p&gt;&lt;a href="http://en.wikipedia.org/wiki/Test-driven_development"&gt;Test-&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Behavior_Driven_Development"&gt;Behavior-&lt;/a&gt;, and &lt;a href="http://tom.preston-werner.com/2010/08/23/readme-driven-development.html"&gt;Readme-&lt;/a&gt;Driven Development&amp;nbsp;are not just about creating one code artifact before another. It's not simply eating your carrots before your peas, or putting on your shirt before your pants. These methodologies are powerful; they deeply affect the final structure of your code:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;If you just sit down and code, you will find a workable solution quickly. Your program will be optimized for prototyping an idea, but it will also be a dirty mess.&lt;/li&gt;
&lt;li&gt;If you write a handful of unit tests before coding, your program will be optimized for further testing.&lt;/li&gt;
&lt;li&gt;If you draft some docs before coding, your program will be optimized for clarity and understanding by other developers.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There are many different ways to approach a piece of code: &lt;a href="http://mikeomatic.net/?p=192"&gt;Interface Driven Development #1&lt;/a&gt;, &lt;a href="http://www.fuzzylizard.com/archives/2007/05/14/883/"&gt;Interface Driven Development #2&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Domain-driven_design"&gt;Domain Driven Design&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/State_diagram#Harel_statechart"&gt;Statecharts&lt;/a&gt;, &lt;a href="http://www.extremeprogramming.org/rules/crccards.html"&gt;CRC cards&lt;/a&gt;, &lt;a href="http://en.wikipedia.org/wiki/Unified_Modeling_Language"&gt;UML Diagrams&lt;/a&gt;. The list goes on.&lt;/p&gt;
&lt;p&gt;There is no clear *best* approach; the right approach depends on the situation, the existing codebase, the size of a team, familiarity with different tools, and level of discipline.&lt;/p&gt;
&lt;p&gt;But if you are writing a program that you intend to sell or deploy in production, I'd argue that the *worst* possible approach is to just &lt;a href="http://programming-motherfucker.com/"&gt;sit down and start coding&lt;/a&gt;.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/the-power-of-x-driven-development"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/the-power-of-x-driven-development#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/scmQMFdwBbU" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/the-power-of-x-driven-development</feedburner:origLink></item>
    <item>
      <pubDate>Sun, 04 Dec 2011 05:33:00 -0800</pubDate>
      <title>Everybody Polyglot! — Cross-Language RPC with Erlang</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/iw4ez3PAzzQ/everybody-polyglot-cross-language-rpc-with-er</link>
      <guid isPermaLink="false">http://blog.rusty.io/everybody-polyglot-cross-language-rpc-with-er</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Slides to my &lt;a href="http://erlangdc.com"&gt;ErlangDC2011&lt;/a&gt; talk -- "Everybody Polyglot!" -- are on SlideShare:&lt;/p&gt;
&lt;div style=""&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/rklophaus/2011-erlang-dcrustyklophaus" title="Everybody Polyglot! - Cross-Language RPC with Erlang" target="_blank"&gt;Everybody Polyglot! - Cross-Language RPC with Erlang&lt;/a&gt;&lt;/strong&gt; &lt;iframe scrolling="no" marginheight="0" marginwidth="0" src="http://www.slideshare.net/slideshow/embed_code/10451384" frameborder="0" height="355" width="425"&gt;&lt;/iframe&gt;
&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/rklophaus" target="_blank"&gt;Rusty Klophaus&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;The talk attempts to demystify the mechanics of calling into Erlang from some other language by selecting three approaches to RPC (REST/JSON, Protocol Buffers, and BERT-RPC) and stepping through:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The Request/Response chatter&lt;/li&gt;
&lt;li&gt;Client-side code&lt;/li&gt;
&lt;li&gt;Server-side code&lt;/li&gt;
&lt;li&gt;Round-Trip Encoding Performance&lt;/li&gt;
&lt;li&gt;Operation Performance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I referenced the following Erlang projects in my talk:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/flashingpumpkin/spooky"&gt;Spooky&lt;/a&gt; (REST) &lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/basho/webmachine"&gt;Webmachine&lt;/a&gt; (REST)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/ngerakines/erlang_protobuffs"&gt;Erlang Protobuffs&lt;/a&gt; (PB)&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/mojombo/ernie"&gt;Ernie Server&lt;/a&gt; (BERT-RPC)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I realized, after giving my talk, that two very important slides accidentally fell off the editing board. I have re-added the missing slides, but am repeating the information below.&lt;/p&gt;
&lt;p&gt;The first slide contained a list of other cross-language mechanisms:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;RPC:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://thrift.apache.org"&gt;Thrift&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://avro.apache.org/docs/current/"&gt;Avro&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;XML-RPC&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.erlang.org/doc/man/corba.html"&gt;CORBA&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sics.se/~joe/ubf/site/home.html"&gt;UBF&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msgpack.org/"&gt;MsgPack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://incubator.apache.org/projects/etch.html"&gt;Etch&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://en.wikipedia.org/wiki/Abstract_Syntax_Notation_One"&gt;ASN.1&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Erlang &amp;lt;-&amp;gt; Other Code:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.erlang.org/doc/tutorial/c_port.html"&gt;Erlang Ports&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.erlang.org/doc/tutorial/c_portdriver.html"&gt;Erlang Port Drivers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.erlang.org/doc/tutorial/nif.html"&gt;NIFs&lt;/a&gt; - Extend Erlang with new functions.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;"Fake" Erlang Nodes:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.erlang.org/doc/apps/jinterface/jinterface_users_guide.html"&gt;JInterface&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.erlang.org/doc/tutorial/cnode.html"&gt;C Nodes&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The second slide contained a list of related talks:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Anton Lavrik - &lt;a href="http://www.erlang-factory.com/conference/SFBay2011/speakers/AntonLavrik"&gt;Piqi-RPC: exposing Erlang services via JSON, XML and Google Protocol Buffers over HTTP&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Tom Preston-Werner - &lt;a href="http://www.erlang-factory.com/conference/ErlangUserConference2009/speakers/TomPrestonWerner"&gt;BERT is to Erlang as JSON is to JavaScript&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Todd Lipcon - &lt;a href="http://www.erlang-factory.com/conference/SFBay2010/speakers/toddlipcon"&gt;Thrift Avro/Erlang Bindings&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Cliff Moon - &lt;a href="http://www.erlang-factory.com/conference/SFBay2011/speakers/CliffMoon"&gt;Building Polyglot Distributed Systems with Jinterface&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Kresten Krab Thorup - Erjang - &lt;a href="http://www.erlang-factory.com/conference/SFBay2010/speakers/KrestenKrabThorup"&gt;A JVM-based Erlang VM&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Yurii Rashkovskii - &lt;a href="http://www.erlang-factory.com/conference/SFBay2011/speakers/YuriiRashkovskii"&gt;Beam.JS: Erlang meets JavaScript&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/everybody-polyglot-cross-language-rpc-with-er"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/everybody-polyglot-cross-language-rpc-with-er#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/iw4ez3PAzzQ" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/everybody-polyglot-cross-language-rpc-with-er</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 20 Oct 2011 07:09:00 -0700</pubDate>
      <title>Winning the Edit•Build•Test Cycle in Erlang</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/1e3eRrbQdOA/winning-the-editbuildtest-cycle-in-erlang</link>
      <guid isPermaLink="false">http://blog.rusty.io/winning-the-editbuildtest-cycle-in-erlang</guid>
      <description>&lt;p&gt;
	&lt;p&gt;A fast, low-friction Edit/Build/Test cycle is one of the best and easiest ways to increase developer productivity across an organization.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;These slides are from a recent talk I presented at the &lt;a href="http://meetup.com/erlang"&gt;DC Erlang Users meetup group&lt;/a&gt;. It is a breadth-first tour of some of the tools we use at Basho to speed up and streamline the Edit/Build/Test cycle for our Erlang projects.&lt;/p&gt;
&lt;p&gt;&lt;strong style="display: block; margin: 12px 0 4px;"&gt;&lt;a href="http://www.slideshare.net/rklophaus/winning-the-edit-build-test-cycle" title="Winning the Erlang Edit&amp;bull;Build&amp;bull;Test Cycle" target="_blank"&gt;Winning the Erlang Edit&amp;bull;Build&amp;bull;Test Cycle&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div style=""&gt;&lt;iframe scrolling="no" marginheight="0" marginwidth="0" src="http://www.slideshare.net/slideshow/embed_code/9791824" frameborder="0" height="355" width="425"&gt;&lt;/iframe&gt;
&lt;div style="padding: 5px 0 12px;"&gt;View more &lt;a href="http://www.slideshare.net/" target="_blank"&gt;presentations&lt;/a&gt; from &lt;a href="http://www.slideshare.net/rklophaus" target="_blank"&gt;Rusty Klophaus&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/winning-the-editbuildtest-cycle-in-erlang"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/winning-the-editbuildtest-cycle-in-erlang#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/1e3eRrbQdOA" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/winning-the-editbuildtest-cycle-in-erlang</feedburner:origLink></item>
    <item>
      <pubDate>Sat, 23 Jul 2011 06:07:00 -0700</pubDate>
      <title>OSCON Data 2011</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/zIqgqJbMSq0/oscon-data-2011</link>
      <guid isPermaLink="false">http://blog.rusty.io/oscon-data-2011</guid>
      <description>&lt;p&gt;
	&lt;p&gt;It's an exciting day! Flying to Portland for &lt;a href="http://oscon.com/oscon2011/"&gt;OSCON 2011&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I'm giving a talk called&amp;nbsp;&lt;a href="http://www.oscon.com/oscon2011/public/schedule/detail/19806"&gt;Querying Riak Just Got Easier - Introducing Secondary Indices&lt;/a&gt;&amp;nbsp;at the end of the day on Monday. In the talk, I briefly touch on NoSQL, tradeoffs, and where Riak fits in the NoSQL landscape. I then dive into Secondary Indices (a new feature of Riak to be included in the next version) and talk through how it changes Riak data modeling. I finally wrap up with some of the challenges we faced.&lt;/p&gt;
&lt;p&gt;Here are the other talks I plan to attend: &lt;a href="http://www.oscon.com/oscon2011/public/schedule/share/65a94413800f3c4f78d533741ace43d5"&gt;My Schedule&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Get in touch via a comment (below) or &lt;a href="http://twitter.com/rustyio"&gt;twitter&lt;/a&gt; if you are attending OSCON. We'll grab a beer.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/oscon-data-2011"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/oscon-data-2011#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/zIqgqJbMSq0" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/oscon-data-2011</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 19 Jul 2011 14:23:00 -0700</pubDate>
      <title>More Netflix Architecture</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/_kx4i0VnS4o/more-netflix-architecture</link>
      <guid isPermaLink="false">http://blog.rusty.io/more-netflix-architecture</guid>
      <description>&lt;p&gt;
	&lt;p&gt;This is awesome:&amp;nbsp;&lt;a href="http://techblog.netflix.com/2011/07/netflix-simian-army.html"&gt;http://techblog.netflix.com/2011/07/netflix-simian-army.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Builds on the idea originally posted here:&amp;nbsp;&lt;a href="http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html"&gt;http://techblog.netflix.com/2010/12/5-lessons-weve-learned-using-aws.html&lt;/a&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/more-netflix-architecture"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/more-netflix-architecture#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/_kx4i0VnS4o" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/more-netflix-architecture</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 19 Jul 2011 04:00:00 -0700</pubDate>
      <title>The Enemy of My Enemy</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/nND0XBzCSvg/the-enemy-of-my-enemy</link>
      <guid isPermaLink="false">http://blog.rusty.io/the-enemy-of-my-enemy</guid>
      <description>&lt;p&gt;
	&lt;p&gt;I hate &lt;a href="http://en.wikipedia.org/wiki/Cybersquatting"&gt;domain squatters&lt;/a&gt;. There is nothing more pointless than thinking up nonsense words in order to find an available domain name for a new project.&lt;/p&gt;
&lt;p&gt;Unfortunately, there aren't many good solutions to the domain squatter problem. Once the rules of a market are created, they are difficult to change.&lt;/p&gt;
&lt;p&gt;That's why I'm hesitatingly in favor of ICANN's &lt;a href="http://www.icann.org/en/announcements/announcement-20jun11-en.htm"&gt;recent announcement&lt;/a&gt; that anybody with $185k can by a top level domain. Yes, there are &lt;a href="http://blog.asmartbear.com/free-markets-bad.html"&gt;many reasons&lt;/a&gt; why it's foolish. But, it widens the supply of domain names, which means that every domain owned by a squatter is now less valuable. It's true that this also hurts legitimate domain name owners, but unlike squatters, most of their value is concentrated in the business behind the domain name, not the domain name itself.&lt;/p&gt;
&lt;p&gt;One could argue that there are already many options for top level domains, but many of them come with significant risk. (Think ".ly" domains and Libya.)&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/the-enemy-of-my-enemy"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/the-enemy-of-my-enemy#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/nND0XBzCSvg" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/the-enemy-of-my-enemy</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 18 Jul 2011 04:30:00 -0700</pubDate>
      <title>Learn Git Next</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/i2cxyYxqjIs/learn-git-next</link>
      <guid isPermaLink="false">http://blog.rusty.io/learn-git-next</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Fluency with &lt;a href="http://www.git-scm.com/"&gt;git&lt;/a&gt; (or Mercurial, or any other distributed SCM) will boost your developer productivity more than any new language, framework, design pattern, editor, or methodology.&lt;/p&gt;
&lt;p&gt;When used properly, distributed SCM is the one technology that allows useful collaboration among developers where it actually counts: in the source code. I'd even venture to say that it makes a dent in &lt;a href="http://en.wikipedia.org/wiki/Brooks's_law"&gt;Brook's Law&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With that in mind, I will not be surprised when &lt;a href="http://github.com"&gt;GitHub&lt;/a&gt; gets its &lt;a href="http://www.google.com/search?hl=en&amp;amp;q=billion+dollar+valuation"&gt;multi-billion dollar valuation&lt;/a&gt;.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/learn-git-next"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/learn-git-next#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/i2cxyYxqjIs" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/learn-git-next</feedburner:origLink></item>
    <item>
      <pubDate>Sat, 16 Jul 2011 05:00:00 -0700</pubDate>
      <title>What's The Going Rent for a Table In An Empty Coffee Shop?</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/wL9g6KDgUFU/whats-the-going-rent-for-a-table-in-an-empty</link>
      <guid isPermaLink="false">http://blog.rusty.io/whats-the-going-rent-for-a-table-in-an-empty</guid>
      <description>&lt;p&gt;
	&lt;p&gt;
&lt;p&gt;For a change of scenery, I've been spending one or two days a week working from coffeeshops rather than my home office. I don't live in a large city, so the coffeeshops around me have maybe one or two people in them when I go.&lt;/p&gt;
&lt;p&gt;The upside is that I have a quiet, spacious work environment, and I don't have to fight for electric outlets. The downside is that I feel a bit self-conscious about camping out for 5 to 7 hours, especially when the coffeeshop is not a chain like Starbucks, but rather privately owned.&lt;/p&gt;
&lt;p&gt;What's the going rent for a table in an empty coffee shop? Does the $2 I spend for my cup of black decaf really buy me a seat for the day? Thats about $0.25 per hour. If I buy a muffin, it may go up to about $0.50 per hour. I rarely buy lunch. Part of me wants to just chat with the owner and say, "Look, I'll give you $20 a week if you let me sit here" so that I can work with a clear conscience.&lt;/p&gt;
&lt;p&gt;I've also thought about trying to organize weekly informal co-working events; clear my conscience by bringing in some extra business. And if everybody who shows up turns out to be cheap like me, buying $2 coffee and that's it, well, at least I won't be the only one camping out.&lt;/p&gt;
&lt;p /&gt;
&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/whats-the-going-rent-for-a-table-in-an-empty"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/whats-the-going-rent-for-a-table-in-an-empty#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/wL9g6KDgUFU" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/whats-the-going-rent-for-a-table-in-an-empty</feedburner:origLink></item>
    <item>
      <pubDate>Fri, 15 Jul 2011 05:00:00 -0700</pubDate>
      <title>Attention to Detail</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/ERVFpY5CXRU/attention-to-detail</link>
      <guid isPermaLink="false">http://blog.rusty.io/attention-to-detail</guid>
      <description>&lt;p&gt;
	&lt;p&gt;I purchased an iPhone app for downloading and listening to podcasts today. The top contenders were &lt;a href="http://vemedio.com/products/instacast"&gt;Instacast&lt;/a&gt; and &lt;a href="http://podcaster.fm/"&gt;Podcaster&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Both apps were rated the same, about 4 and a half stars. Instacast is newer, so had fewer ratings, but came recommended by a blogger I read. Both apps are the same price and have roughly the same functionality.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;In the end, I bought Podcaster because it had fewer typos in the App Store description.&lt;/strong&gt; Details matter. In my experience, attention to detail is a way of life. It permeates an individual, it permeates an organization. I expect the attention to detail in the app store description will carry over to the app, and so far I have not been dissappointed.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/attention-to-detail"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/attention-to-detail#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/ERVFpY5CXRU" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/attention-to-detail</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 13 Jul 2011 05:27:00 -0700</pubDate>
      <title>Light Many Fires</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/kRVVpvhho7M/light-many-fires</link>
      <guid isPermaLink="false">http://blog.rusty.io/light-many-fires</guid>
      <description>&lt;p&gt;
	&lt;div&gt;Multitasking, on a small scale, is impossible. You can't write an email, talk on the phone, watch TV, tweet, and chew gum on the same time.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;On a larger scale, though, multitasking can be extremely productive.&amp;nbsp;&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;Why?&lt;/div&gt;
&lt;div&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Variety&lt;/strong&gt; - Monotony is the enemy of productivity and leads to boredom and &amp;nbsp;procrastination. If you have multiple goals percolating, you should be able to find something exciting. Ideally, you can procrastinate on one goal by making progress on another.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Perspective &lt;/strong&gt;- If you pin all your hopes on a single goal, &amp;nbsp;that goal often grows into a psychological mountain. Have enough goals so that if the important ones fall through, your world doesn't end. Multiple goals reduces "clinginess".&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Leverage&lt;/strong&gt;&amp;nbsp;- Progress on one goal often translates into progress on another goal. What you learn in one area can be applied to another area. Preparation can often be leveraged across multiple goals, if you choose your goals correctly.&lt;/li&gt;
&lt;/ul&gt;
&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/light-many-fires"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/light-many-fires#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/kRVVpvhho7M" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/light-many-fires</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 12 Jul 2011 04:39:00 -0700</pubDate>
      <title>Identity Crisis</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/ngCTvD4etlw/identity-crisis</link>
      <guid isPermaLink="false">http://blog.rusty.io/identity-crisis</guid>
      <description>&lt;p&gt;
	&lt;p&gt;There's an identity crisis among people who create software. We call ourselves "programmers", "software developers", "software engineers", "software architects", "hackers", "coders", and "computer scientists". On the semi-derogatory side is "code monkeys", "nerds", "geeks", and "grunts". And embarrassingly, we've even coined the phrases "code ninjas", "code rockstars", and "technopreneurs".&lt;/p&gt;
&lt;p&gt;What the hell? A doctor is a doctor. A lawyer is a lawyer. Why do we invent these new terms?&lt;/p&gt;
&lt;p&gt;Perhaps it's because the respect associated with these labels depreciates over time.&amp;nbsp;It takes at least 8 years of school before you can call yourself a doctor, but you can buy books to &lt;a href="http://www.amazon.com/s/ref=nb_sb_noss?field-keywords=programming+in+21+days"&gt;learn programming in 21 days&lt;/a&gt;. As more people with questionable skill refer to themselves using the latest buzzword to describe programmers, those with more skill try to find a new label to differentiate.&lt;/p&gt;
&lt;p&gt;Or maybe it's an attempt to capture our own personal growth. I've been writing computer code since 4th grade... so about 21 years. What I'm doing now is drastically different than what I was doing back then. Shouldn't the label evolve?&lt;/p&gt;
&lt;p&gt;Anyway, starting now, I'm calling myself a "code shaman".&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/identity-crisis"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/identity-crisis#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/ngCTvD4etlw" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/identity-crisis</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 07 Jul 2011 05:00:00 -0700</pubDate>
      <title>Compounding Productivity</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/sNBtsZ8720E/compounding-productivity</link>
      <guid isPermaLink="false">http://blog.rusty.io/compounding-productivity</guid>
      <description>&lt;p&gt;
	&lt;p&gt;Top software developers are 10x to 100x faster than average software developers. One reason is that the best developers have seen many more problems than average developers, and solving a problem the second time is 10x to 100x faster than solving it the first time.&lt;/p&gt;
&lt;p&gt;Why have good developers seen so many more problems? Well, even if good developers are just &lt;em&gt;slightly&lt;/em&gt; faster than average developers, that extra time compounds over the years. Experience grows on itself, like the interest on an investment.&lt;/p&gt;
&lt;p&gt;For example, during America's amazingly prosperous Gilded Age, the economy grew at 6.8% annually (&lt;a href="http://en.wikipedia.org/wiki/Gilded_Age"&gt;link&lt;/a&gt;). Right now, the economy is growing somewhere around 2% annually, and it's a huge problem. Compounding is a powerful thing.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/compounding-productivity"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/compounding-productivity#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/sNBtsZ8720E" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/compounding-productivity</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 06 Jul 2011 05:00:00 -0700</pubDate>
      <title>Choice, Fairness, and Envy</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/ERroVem14Io/choice-fairness-and-envy</link>
      <guid isPermaLink="false">http://blog.rusty.io/choice-fairness-and-envy</guid>
      <description>&lt;p&gt;
	&lt;p&gt;One of the biggest selling points of the iPhone is &lt;em&gt;fairness&lt;/em&gt;. The iPhone 4 has two colors, two different capacities, and two carriers. Other than that, everything is the same. Everyone using an iPhone has the same experience, so there is no reason for jealousy. (Well, until Apple comes out with the next model.)&lt;/p&gt;
&lt;p&gt;The Android platform, on the other hand, is different. New Android phones hit the market constantly. Every new phone contains an improvement on something: the camera, the screen, the battery, etc. Each improvement is an opportunity for phone envy.&lt;/p&gt;
&lt;p&gt;At the end of the day, smart phones are meaningless. We don't need them, but we like them. I happen to like iPhones, and I think maybe it's because I'd rather eliminate a source of envy from my life than to have an extra megapixel in my camera.&lt;/p&gt;
&lt;p&gt;I think maybe that's why Apple products appeal to a certain type of person. It's a way to step out of the rat race. By simplifying your choices, it's easier to believe that you have made the right choice.&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/choice-fairness-and-envy"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/choice-fairness-and-envy#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/ERroVem14Io" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/choice-fairness-and-envy</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 05 Jul 2011 05:00:00 -0700</pubDate>
      <title>Fast Feedback</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/N7yiySyqpMU/fast-feedback-92903</link>
      <guid isPermaLink="false">http://blog.rusty.io/fast-feedback-92903</guid>
      <description>&lt;p&gt;
	&lt;p&gt;It's important to focus on creating a fast feedback cycle when building software (well, when building anything, really). When you make a change, how quickly can you see the effects of that change? Having a fast feedback cycle is like a coach standing over your shoulder saying "Yes, yes, that's the right way to do it." or "Nope, try that again."&lt;/p&gt;
&lt;p&gt;In the days of mainframes and punch cards (long before my time), the software feedback cycle was measured in hours if you were lucky, days if you weren't. Now, the feedback cycle is measured in seconds. But even then, the psychological difference between a ten-second vs. a two-second feedback cycle is huge. If that sounds foolish, imagine if you were required to count eight Mississippi's before clicking on a link when browsing the web.&lt;/p&gt;
&lt;p&gt;Good software developers invest time in tools to help shorten the feedback cycle. One tool I've been refining over the past two years is an Erlang utility called &lt;em&gt;Sync&lt;/em&gt;. (&lt;a href="http://github.com/rustyio/sync"&gt;Get the code&lt;/a&gt;.) &lt;em&gt;Sync&lt;/em&gt; takes advantage of Erlang's ability to hotload code into a running system. It keeps an eye on the backing source files behind the code, and if it sees that a developer has changed a file, it automatically recompiles and reloads the code in the running system.&lt;/p&gt;
&lt;p&gt;To shorten the feedback cycle even further, &lt;em&gt;Sync&lt;/em&gt; pops up a &lt;a href="http://growl.info"&gt;Growl&lt;/a&gt; notification to show whether the compilation was successful, or if there were warnings or errors.&lt;/p&gt;
&lt;p&gt;&lt;div class='p_embed p_image_embed'&gt;
&lt;img alt="Sync_01" height="61" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2011-06-29/CgGnhaIwpBpunvaErGJjwbnysHsqhmykuiAeAhqqpuBFxHaCazFDkxHEkfEy/sync_01.png.scaled500.png" width="300" /&gt;
&lt;img alt="Sync_03" height="91" src="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2011-06-29/CfyhwesqtlqnIxIjxteAlqIglHcxdqpBdueuEvsxIDyxAsHFDxEzwAzHphni/sync_03.png.scaled500.png" width="300" /&gt;
&lt;img alt="Sync_02" height="91" src="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2011-06-29/qdHIbqjdoaJmronrmvEvtksbnuunbkJJCAperxlbngCnsAegBckuFIgdhvze/sync_02.png.scaled500.png" width="300" /&gt;
&lt;div class='p_see_full_gallery'&gt;&lt;a href="http://blog.rusty.io/fast-feedback-92903"&gt;See the full gallery on Posterous&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/fast-feedback-92903"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/fast-feedback-92903#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/N7yiySyqpMU" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
      <media:content type="image/png" height="61" width="300" url="http://getfile7.posterous.com/getfile/files.posterous.com/temp-2011-06-29/CgGnhaIwpBpunvaErGJjwbnysHsqhmykuiAeAhqqpuBFxHaCazFDkxHEkfEy/sync_01.png">
        <media:thumbnail height="61" width="300" url="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2011-06-29/CgGnhaIwpBpunvaErGJjwbnysHsqhmykuiAeAhqqpuBFxHaCazFDkxHEkfEy/sync_01.png.scaled500.png" />
      </media:content>
      <media:content type="image/png" height="91" width="300" url="http://getfile0.posterous.com/getfile/files.posterous.com/temp-2011-06-29/CfyhwesqtlqnIxIjxteAlqIglHcxdqpBdueuEvsxIDyxAsHFDxEzwAzHphni/sync_03.png">
        <media:thumbnail height="91" width="300" url="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2011-06-29/CfyhwesqtlqnIxIjxteAlqIglHcxdqpBdueuEvsxIDyxAsHFDxEzwAzHphni/sync_03.png.scaled500.png" />
      </media:content>
      <media:content type="image/png" height="91" width="300" url="http://getfile9.posterous.com/getfile/files.posterous.com/temp-2011-06-29/qdHIbqjdoaJmronrmvEvtksbnuunbkJJCAperxlbngCnsAegBckuFIgdhvze/sync_02.png">
        <media:thumbnail height="91" width="300" url="http://getfile2.posterous.com/getfile/files.posterous.com/temp-2011-06-29/qdHIbqjdoaJmronrmvEvtksbnuunbkJJCAperxlbngCnsAegBckuFIgdhvze/sync_02.png.scaled500.png" />
      </media:content>
    <feedburner:origLink>http://blog.rusty.io/fast-feedback-92903</feedburner:origLink></item>
    <item>
      <pubDate>Thu, 30 Jun 2011 05:29:00 -0700</pubDate>
      <title>Days/Hours/Minutes</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/P75omjt9ZoM/dayshoursminutes</link>
      <guid isPermaLink="false">http://blog.rusty.io/dayshoursminutes</guid>
      <description>&lt;p&gt;
	&lt;div&gt;On vacation, I measure time in days. During the week, the resolution shrinks down to half-hour segments. On the weekend, it grows back to two or three hour chunks. The amount of time I view as a "long time", changes depending on how fast I feel like I have to pedal to stay on top of my obligations.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;A few years ago, on a very long, stressful project, I measured time in single minutes. The schedule was so tight that every minute counted, or so I thought.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;It lead to constant, unjustifiable anger. Microwaves were too slow. Stoplights were bitter enemies. There was no time for friends or family. Life became robotic. Measuring time in minutes sucks. &amp;nbsp;&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;There wasn't even time for a spare thought, which meant I couldn't realize just how unhealthy the situation was. And it meant I didn't have the time to think strategically about what I was doing. So many of those minutes were wasted on the wrong stuff.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;Since then I've used this as a metric to judge the productivity of individuals and companies. When you see someone staring at a coffee pot, growling "Brew faster, goddammit.", that's a bad sign. (That's borrowed from somewhere, anybody know the source?)&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/dayshoursminutes"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/dayshoursminutes#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/P75omjt9ZoM" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/dayshoursminutes</feedburner:origLink></item>
    <item>
      <pubDate>Wed, 29 Jun 2011 09:01:00 -0700</pubDate>
      <title>Unnecessary Complexity</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/a-u1IQtzjiw/unnecessary-complexity</link>
      <guid isPermaLink="false">http://blog.rusty.io/unnecessary-complexity</guid>
      <description>&lt;p&gt;
	&lt;div&gt;Humans learn by imitating. Sometimes, we imitate behavior before we know the underlying reasoning behind the behavior. This is a good thing, as it's better to do &lt;em&gt;something&lt;/em&gt; and start getting corrective feedback than to do nothing at all. But sometimes this leads down the wrong path.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;The wrong path happens quite often in the world of tech startups, where an aspiring founder is strong in one area (either technology, business, or domain experience) and is trying to quickly learn the other areas.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;One pattern I've noticed is that aspiring startup founders often add unnecessary complexity to ideas, usually through the form of unnecessary technology. (For example, when the business idea starts with an iPhone app.) In my experience, this most often happens to founders who are heavy on business training but very light on technology and/or domain expertise.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;I think what happens is that the founder sees other startups, but doesn't fully understand the mechanics or technology behind them, and so they seem magical and complex. Eventually, the founder begins to conflate the presence of complexity and even slight confusion with a successful idea. Then, when it's time to draft his business plan, the founder adds what he or she feels is the right amount of complexity to make the idea successful.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;What the founder is missing is that the idea seems complex on the outside, but the people &lt;em&gt;running&lt;/em&gt;&amp;nbsp;the business live it, breathe it, and understand every last detail of it. Also, successful startups have done their best to reduce complexity as much as possible, since complexity leads to inefficiency.&lt;/div&gt;
&lt;p /&gt;
&lt;div&gt;Don't associate complexity and confusion with success. Complexity and confusion lead to failure. Strive for simplicity and understanding.&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/unnecessary-complexity"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/unnecessary-complexity#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/a-u1IQtzjiw" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/unnecessary-complexity</feedburner:origLink></item>
    <item>
      <pubDate>Tue, 28 Jun 2011 05:00:00 -0700</pubDate>
      <title>Community and Culture at a Distributed Company</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/J_pZwhVTTZs/58876606</link>
      <guid isPermaLink="false">http://blog.rusty.io/58876606</guid>
      <description>&lt;p&gt;
	&lt;p&gt;My colleague, Basho Community Manager&amp;nbsp;&lt;a href="http://twitter.com/pharkmillups"&gt;Mark Phillips&lt;/a&gt;, just wrote a great new post on &lt;a href="http://www.themarkphillips.com/2011/06/27/Building-and-Maintaining-Internal-Community-And-Culture.html"&gt;building and maintaining community and culture at a distributed company&lt;/a&gt;. He describes some of the challenges we face as a distributed team, and how we use technology to overcome them.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.themarkphillips.com/2011/06/27/Building-and-Maintaining-Internal-Community-And-Culture.html"&gt;Link&lt;/a&gt;&lt;/p&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/58876606"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/58876606#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/J_pZwhVTTZs" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/58876606</feedburner:origLink></item>
    <item>
      <pubDate>Mon, 27 Jun 2011 08:57:13 -0700</pubDate>
      <title>Optimal Pressure</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/ed7UAZYh8Tg/optimal-pressure</link>
      <guid isPermaLink="false">http://blog.rusty.io/optimal-pressure</guid>
      <description>&lt;p&gt;
	Pressure at work is like the tension on a guitar string. Too much tension breaks the string. Too little tension and the string won&amp;#39;t produce any sound. The best results happen somewhere in the middle.
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/optimal-pressure"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/optimal-pressure#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/ed7UAZYh8Tg" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/optimal-pressure</feedburner:origLink></item>
    <item>
      <pubDate>Sun, 26 Jun 2011 07:31:20 -0700</pubDate>
      <title>Gravity</title>
      <link>http://feedproxy.google.com/~r/RustyKlophaus/~3/0yD1-JHAD5g/gravity</link>
      <guid isPermaLink="false">http://blog.rusty.io/gravity</guid>
      <description>&lt;p&gt;
	&lt;blockquote class="gmail_quote" style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0.8ex; border-left-width: 1px; border-left-color: rgb(204, 204, 204); border-left-style: solid; padding-left: 1ex;"&gt; If you want to make an apple pie from scratch, you must first create the universe. - Dr. Carl Sagan &lt;/blockquote&gt;&lt;p /&gt;&lt;div&gt;There are levels of abstraction in everything, and everyone naturally gravitates to a specific level. Some people are content to eat the apple pie, some want to bake the pie, others want to design the oven that bakes the pie, and others focus on devising new ways to extract the natural gas that powers the oven that bakes the pie. &lt;/div&gt; &lt;p /&gt;&lt;div&gt;A kind of gravity pulls each individual to a specific layer of detail. You stand comfortably at your layer and say, &amp;quot;Ah, this is where the work gets interesting!&amp;quot; &lt;/div&gt;&lt;p /&gt;&lt;div&gt;From your vantage point, when you look down toward the core, toward where things get gritty and basic, the world appears like a set of fixed rules. A chef doesn&amp;#39;t spend time thinking about natural gas extraction, he treats the oven like a constant. The oven works, fire is hot, the world turns.&lt;/div&gt; &lt;p /&gt;&lt;div&gt;When you you look out, toward the edges, things appear superfluous, even childish. The petroleum engineer says, &amp;quot;I don&amp;#39;t have time to worry about perfecting the crust of an apple pie, I&amp;#39;m a petroleum engineer.&amp;quot;&lt;/div&gt;
	
&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blog.rusty.io/gravity"&gt;Permalink&lt;/a&gt; 

	| &lt;a href="http://blog.rusty.io/gravity#comment"&gt;Leave a comment&amp;nbsp;&amp;nbsp;&amp;raquo;&lt;/a&gt;

&lt;/p&gt;&lt;img src="http://feeds.feedburner.com/~r/RustyKlophaus/~4/0yD1-JHAD5g" height="1" width="1"/&gt;</description>
      <posterous:author>
        <posterous:userImage>http://files.posterous.com/user_profile_pics/911288/rusty_euc_medium.jpg</posterous:userImage>
        <posterous:profileUrl>http://posterous.com/users/KGb8P0pSmd</posterous:profileUrl>
        <posterous:firstName>Rusty</posterous:firstName>
        <posterous:lastName>Klophaus</posterous:lastName>
        <posterous:nickName>Rusty</posterous:nickName>
        <posterous:displayName>Rusty Klophaus</posterous:displayName>
      </posterous:author>
    <feedburner:origLink>http://blog.rusty.io/gravity</feedburner:origLink></item>
  </channel>
</rss>

