<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Just a Name</title>
	<atom:link href="http://bradhe.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://bradhe.wordpress.com</link>
	<description>On Software Engineering and Other Things</description>
	<lastBuildDate>Tue, 13 Dec 2011 15:27:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='bradhe.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Just a Name</title>
		<link>http://bradhe.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://bradhe.wordpress.com/osd.xml" title="Just a Name" />
	<atom:link rel='hub' href='http://bradhe.wordpress.com/?pushpress=hub'/>
		<item>
		<title>What does a startup take?</title>
		<link>http://bradhe.wordpress.com/2011/12/13/what-does-a-startup-take/</link>
		<comments>http://bradhe.wordpress.com/2011/12/13/what-does-a-startup-take/#comments</comments>
		<pubDate>Tue, 13 Dec 2011 15:20:03 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Startups]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Reflections]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=254</guid>
		<description><![CDATA[Startups require a pretty reasonable&#8211;and short&#8211;list of things, but they&#8217;re really really hard to come by. Money Dedication Time Patience A co-founder you can depend on. These all come back to one key point: Provide value and you will win. Money If you listen to Hacker News, it&#8217;s easy to get these days. I don&#8217;t [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=254&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Startups require a pretty reasonable&#8211;and short&#8211;list of things, but they&#8217;re really <em>really</em> hard to come by.</p>
<ol>
<li>Money</li>
<li>Dedication</li>
<li>Time</li>
<li>Patience</li>
<li>A co-founder you can depend on.</li>
</ol>
<p>These all come back to one key point: <strong>Provide value and you will win.</strong></p>
<h2>Money</h2>
<p>If you listen to Hacker News, it&#8217;s easy to get these days. I don&#8217;t think that&#8217;s true. I haven&#8217;t done any fund raising, but I&#8217;m about to start, and it appears to be way harder than people make it out to be. I had the privilege of seeing a founder just off the road from raising a huge series B give a talk about his experience and jesus I wouldn&#8217;t wish that on anyone!</p>
<p>If you provide value to people, though, money should be easy to come by. You prove you provide value by showing traction. Traction begets money, assuming you have a reasonable way to monetize that traction (or sometimes not so reasonable, even).</p>
<h2>Dedication</h2>
<p>Can you see yourself working on your project&#8211;whatever it is&#8211;for the next five years? Seriously, think about that for a moment. Five years is a long time, especially if you have only been working on your weird idea for three weeks.</p>
<p>Not to toot my own horn, but I&#8217;ve turned down six-figure jobs in recent months to work on <a href="http://www.revisu.com">Revisu</a> (ironically I get these six-figure offers because I&#8217;ve started Revisu). If you&#8217;re dedicated to your project, you&#8217;ll be constantly searching for ways to provide value to people, because providing value breeds traction which begets money.</p>
<h2>Time</h2>
<p>Another unfortunate facet of the modern startup world is the notion that startups start and succeed (or start and fail) on such an accelerated time frame. To a certain degree, you can &#8220;validate&#8221; (for some definition of the word) a start up idea or market quickly, and you can make some cash pretty quickly with a prototype.</p>
<p>The reality is that most startups don&#8217;t get anywhere any time fast. Even at PIE, a lot of the startups are just barely off the ground. But, we have wobbles of hope. We have a plan to get off the ground. That plan takes engagement, validation, and hustle. It takes time. Time to prove value, which will breed traction, which will beget money.</p>
<h2>Patience</h2>
<p>Patience is the effective use of time. Patience is especially necessary when you read about everyone around you making it while you&#8217;re still struggling. If you&#8217;re diligent, smart (read: providing value to your customers), and patient, you&#8217;ll get there eventually.</p>
<p>A well known entrepreneur told me the other day that be believes that any reasonably smart person can find money in any market if they push hard enough, and I <em>really</em> trust his opinion. So, be patient, stay hungry, and with time you&#8217;ll find a way to provide value, which will breed traction, and beget you money.</p>
<h2>A co-founder you can depend on</h2>
<p>Everyone is searching for a co-founder. Good entrepreneurs are searching for co-founders even when they have co-founders. Business folks are searching for technical co-founders, and technical folks are searching for business co-founders. It&#8217;s a difficult proposition, but the only thing more difficult is progressing without one.</p>
<p>Without a co-founder you can depend on, you have nothing. Starting a startup is literally the most difficult thing a participant in the tech industry can do, and most people just can&#8217;t go it alone.</p>
<p>At some point, after you find a co-founder, you&#8217;re going to hate them. You&#8217;ll feel like you can do it alone and you don&#8217;t need them. You&#8217;ll feel like they&#8217;re not pulling their weight. You&#8217;ll feel like you can do the things they do. Maybe that&#8217;s true, but it&#8217;s probably not. The most important thing: Keep your collective eye on providing value to your users. Providing value will breed traction, and beget money.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/254/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/254/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/254/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=254&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/12/13/what-does-a-startup-take/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>Keep Pushing!</title>
		<link>http://bradhe.wordpress.com/2011/12/02/keep-pushing/</link>
		<comments>http://bradhe.wordpress.com/2011/12/02/keep-pushing/#comments</comments>
		<pubDate>Fri, 02 Dec 2011 15:45:07 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Startups]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Success!]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=271</guid>
		<description><![CDATA[I was browsing the &#8220;Who&#8217;s Hiring, December 2011 edition&#8221; thread on Hacker News just now and thinking about how awesome it will be when our startup, Revisu, gets to advertise on one of these threads. It made me think: What do we have to do to get to that point? I started making a mental list&#8211;a [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=271&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>I was browsing the <a href="http://news.ycombinator.com/item?id=3300290">&#8220;Who&#8217;s Hiring, December 2011 edition&#8221; thread on Hacker Ne</a><a href="http://news.ycombinator.com/item?id=3300290">ws</a> just now and thinking about how awesome it will be when our startup, Revisu, gets to advertise on one of these threads. It made me think: What do we have to do to get to that point?</p>
<p>I started making a mental list&#8211;a pretty short one, actually. We need to have revenues enough to support hiring, which means we need to have more paying customers, which means we need to get more general traction, which means&#8230;which means we need to keep pushing.</p>
<h2>Startups are about pushing. Constantly.</h2>
<p>When I first got interested in startups, it seemed easy enough to get started. Just make something people are interested in, they&#8217;ll start using it, and suddenly a million dollars! At a high level (a really high level) I&#8217;d still contend this is correct. But, as I&#8217;ve learned, there is a ton of stuff that happens between the &#8220;make something interesting&#8221; and the &#8220;people will start using it&#8221; bits.</p>
<p>At <a href="http://www.revisu.com">Revisu</a>, I&#8217;m happy to say that we&#8217;re finally starting to see that traction! People are seeing value in Revisu and actually using it with their teams like we envisioned they would. Whew, that only took&#8230;how long again? Well, I can&#8217;t remember exactly&#8211;longer than we thought it would&#8211;but I do remember that it took constant pushing to get there.</p>
<h2>Pushing is also about velocity.</h2>
<p>In terms of work, it&#8217;s a tough proposition to keep your queue full when you&#8217;re filling your own queue. However, if you&#8217;re working on your startup and you find that you don&#8217;t know what to do next, that&#8217;s a really bad sign. I means you <a href="http://www.startuplessonslearned.com/2009/04/validated-learning-about-customers.html">aren&#8217;t working hard enough</a>&#8211;you aren&#8217;t learning fast enough.</p>
<p>To really push hard you need to be able to move from task to task quickly and efficiently. After I finished polishing a feature I went immediately to working on the deck. In a startup, there are hundreds of things that need to get done and the pool of people to work on them is really small&#8211;you and your partner(s).</p>
<h2>Seriously sweat the small stuff.</h2>
<p>Pushing means not just getting stuff right, but getting stuff <em>right</em> right. Small things that are broken in small ways break experiences in really big ways&#8211;ways that keep people from using your software. Especially when you consider that something that might not be a big deal to you is indeed a deal breaker to anyone else. One of the most common problems an <a href="https://twitter.com/#!/MayorRock/status/127505429533167616">MVP is that it&#8217;s missing the V</a> for small (or perhaps more often big) reasons!</p>
<p>As I&#8217;ve said before, at Revisu <a href="http://bradhe.wordpress.com/2011/11/29/success-is-hard/">we&#8217;re known for iterating quickly</a>. Our primary motivation for quick iteration is that we want to get things right. Thus, we get stuff out the door quickly, we figure out how it&#8217;s wrong, and we iterate. While this is a really great way to get things right it can be <em>extremely</em> painful, too. After re-designing our login page for the 15th time because it still doesn&#8217;t look <em>just</em> right, it can be just&#8230;exhausting.</p>
<h2>Lean + Pushing = Cognitive Dissonance?</h2>
<p>After I wrote this whole post, I thought that I should go back and address this as I love lean development, Eric Reis&#8217; strategies, and the benefits there of. Often enough, though, I have a really hard time reconciling the concept of MVP with sweating the small stuff.</p>
<p>The trick that we&#8217;ve been using lately is to evaluate what the #1 blocker to progress is (from a customer on-boarding perspective, obviously). Perhaps it is in direct competition with what we would call an MVP but I&#8217;d contend that that just means that your MVP is not an M<strong>V</strong>P!</p>
<p>Pushing hard on product is a lot like social media marketing to me: It just works! Somehow, you put energy in to it and the results will surprise you. I don&#8217;t think it will be a direct ticket to success, and I have no idea how long we as a team can keep it up, but we&#8217;re getting extremely positive results and making really great progress. Hopefully you will, too, as it&#8217;s the only way I&#8217;ve found to bridge the traction gap.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/271/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/271/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/271/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=271&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/12/02/keep-pushing/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>Success is hard.</title>
		<link>http://bradhe.wordpress.com/2011/11/29/success-is-hard/</link>
		<comments>http://bradhe.wordpress.com/2011/11/29/success-is-hard/#comments</comments>
		<pubDate>Tue, 29 Nov 2011 15:40:47 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Startups]]></category>
		<category><![CDATA[Advice]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Success!]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=263</guid>
		<description><![CDATA[Whew, it&#8217;s been a crazy couple days in the start up world. Everyone loved Michael Arrington&#8217;s article about working hard when it came out. Then Jamie Zawinski rebutted with some bit about how his original post (quoted as an example by Arrington) was misrepresented. The only thing crazier than the two parties duking this out in [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=263&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Whew, it&#8217;s been a crazy couple days in the start up world. Everyone loved <a href="http://uncrunched.com/2011/11/27/startups-are-hard-so-work-more-cry-less-and-quit-all-the-whining/">Michael Arrington&#8217;s article about working hard</a> when it came out. Then <a href="http://www.jwz.org/blog/2011/11/watch-a-vc-use-my-name-to-sell-a-con/">Jamie Zawinski rebutted</a> with some bit about how his original post (quoted as an example by Arrington) was misrepresented.</p>
<p>The only thing crazier than the two parties duking this out in public is the sentiment on Hacker News shifting <em>wildly</em> depending on which story is #1 at the time. Perhaps there are just two deeply divided sides two the argument, because I can&#8217;t immediately find an instance of a person directly contradicting themselves between the posts.</p>
<p>At any rate, the the buzz generated by each is certainly palpable. And pretty silly for a bunch of startupers, when you get down to it.</p>
<h2>Do you even remember why we&#8217;re here?</h2>
<p>Look, people, lets take a seat and talk about this for a bit. Start ups are really hard. Like really, really hard. Even when they&#8217;re going exceedingly well, they&#8217;re still <em>really fucking hard.</em> At <a href="http://piepdx.com">PIE</a> I sit next to <a href="http://www.cloudability.com">a start up that&#8217;s <em>fucking killing</em> <em>it</em> right now</a>, and it looks <em>really</em> scary to be in their shoes.</p>
<p>But, it also looks like a lot of fun. And it looks like they&#8217;re pumped to be doing what they&#8217;re doing. And I&#8217;d really love for my company to start hockeysticking like theirs has.</p>
<p>It&#8217;s not easy to get to that point, though. They&#8217;re often the first in to the office and the last to leave office, and their hard work is paying off. They are going to make something awesome&#8211;hell, they <em>already have</em> made something awesome. That is why they worked hard, and that is also why I am working hard.</p>
<h2>40-hour work weeks don&#8217;t change the world.</h2>
<p>We work exceedingly hard on our stupid start up ideas because we want to make a difference, and you just can&#8217;t fucking do that in a 40-hour work week. If you are sitting there thinking you can, then either your goals are too modest or you just haven&#8217;t figured out that you can&#8217;t yet.</p>
<p>I just finished a 15-hour work day. I&#8217;ll probably work about the same number of hours tomorrow, and the day after for that matter. My start up, <a href="http://www.revisu.com">Revisu</a>, gets a lot of praise for <a href="http://www.revisu.com/2011/11/17/lean-for-designers-quick-iteration-is-easier-than-you-think/">iterating </a>and <a href="http://www.youtube.com/watch?v=soXJLmeed2c">moving quickly</a> and that doesn&#8217;t happen on its own. Here&#8217;s a hint to our secret on iterating quickly: A 40-hour work week is <em>not</em> involved.</p>
<p>I&#8217;m OK with it. I&#8217;m happy to put in the extra hours in order to build something I think will be great. And if it turns out to be a failure then, well, I fucking tried&#8211;I learned something&#8211;and that&#8217;s more than the 40-hours-a-week workers can say.</p>
<p>If you run a start up or work at a start up and you get anxious at 5pm, then you&#8217;re in the wrong vertical in the tech industry. You should probably go get a &#8220;real&#8221; job. Oh, and let me know if you need help in that area by the way as I <a href="http://puppetlabs.com/company/jobs/">know</a> <a href="http://urbanairship.com/company/jobs/">a</a> <a href="http://www.jivesoftware.com/about/careers">few</a> <a href="http://newrelic.com/about/jobs">companies</a> in Portland that are hiring <img src='http://s1.wp.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/263/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/263/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/263/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=263&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/11/29/success-is-hard/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>Don&#8217;t forget &#8212; incubators are only the beginning!</title>
		<link>http://bradhe.wordpress.com/2011/11/14/dont-forget-incubators-are-only-the-beginning/</link>
		<comments>http://bradhe.wordpress.com/2011/11/14/dont-forget-incubators-are-only-the-beginning/#comments</comments>
		<pubDate>Mon, 14 Nov 2011 14:45:23 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Incubators]]></category>
		<category><![CDATA[Reflections]]></category>
		<category><![CDATA[Startups]]></category>
		<category><![CDATA[Success!]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=246</guid>
		<description><![CDATA[People that want in to the secret garden of startup land seem to be of the opinion that all their startup idea needs is to get in to an incubator. It&#8217;s understandable to a degree as incubators have a really awesome value proposition! And let me preface this one-sided discussion with the statement that I [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=246&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>People that want in to the secret garden of startup land seem to be of the opinion that <em>all their startup idea needs</em> is to get in to an incubator. It&#8217;s understandable to a degree as incubators have a really awesome value proposition! And let me preface this one-sided discussion with the statement that I am neither for nor against fundraising or incubators or what have you. I haven&#8217;t made a damn dollar from my start up yet so it would be fucking naive of me to pass judgement.</p>
<p>The experience I <em>can</em> speak from dictates that when <a href="http://www.revisu.com">Revisu</a> got accepted to <a href="http://www.piepdx.com">Portland Incubator Experiment</a> I had assumed that someone else would be looking out for me, I wouldn&#8217;t have to work too hard on the shit I didn&#8217;t want to do, and it was only a matter of time  before I got my million dollar check.</p>
<p>Turns out this is really <em>really</em> not true and, since I think this is a pretty common belief, the sooner we collectively understand this the better off we&#8217;ll be. Indeed, even raising money&#8211;another major &#8220;milestone&#8221; in most startup peoples&#8217; minds&#8211;does not symbolize the end, but just another beginning. Perhaps startups are really just a sequence of beginnings.</p>
<h2>What is a startup&#8217;s ending anyway?</h2>
<p>That&#8217;s pretty subjective, I guess. Perhaps it&#8217;s a significant liquidity event, or some kind of merger, or perhaps you wind it down because someone (probably you) fucked up. My opinion is that if you can go on a vacation and both afford it and not spend the whole time worrying too much, your job is close to over probably. But again I&#8217;m pretty new to this weird game.</p>
<h2>Y Combinator does not a millionaire make.</h2>
<p>I used to be of the opinion that if you made it in to Y Combinator, you were set for life. After all, your Pokemon daily deals text message startup obviously passed the YC interview test, so it was only a matter of time before you got the call from Google about your exit, right?</p>
<p>When I saw a YC company fail, I was <em>always</em> left scratching my head. If these people were the best of the best per the Paul Graham test, how could they possibly fail? Turns out, if you somehow make it in to an incubator, you aren&#8217;t magically blessed as an entrepreneur.</p>
<h2>Here&#8217;s where it gets awesome.</h2>
<p>Incubators succeed in giving you the support you need to take your company to the next level, and in making you ultimately responsible for getting it there. This is where your journey to becoming an entrepreneur gets really exciting.</p>
<p>This weekend, I spent 26 hours working on Revisu. I absolutely loved every second of it. Not only did I get to work on some really interesting problems&#8211;both technical and non-technical&#8211;but they were problems that we (my partner and I) identified in our quest to build my our company.</p>
<p>Half of loving the crazy hours is having the support of a community behind you. As a for instance, a thread was started yesterday on the PIE mailing list, and within 15 minutes there were 10 replies to it. On a Saturday afternoon. Do you know of any group of individuals of which more than a third of them would reply to an email thread because they were working on a Saturday afternoon?</p>
<p>So just getting in to an incubator won&#8217;t make you a millionaire. Hell, it really doesn&#8217;t give you a <em>huge</em> leg up over someone that decides to go it alone. But, it does give you access to a community of like-minded people, a lot of ins to your local tech scene, and maybe a little cash to get you started. And that&#8217;s a really great way to get started starting up.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/246/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/246/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/246/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=246&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/11/14/dont-forget-incubators-are-only-the-beginning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>Advice on advice: How to talk to your mentors.</title>
		<link>http://bradhe.wordpress.com/2011/11/07/advice-on-advice-how-to-listen-to-your-mentors/</link>
		<comments>http://bradhe.wordpress.com/2011/11/07/advice-on-advice-how-to-listen-to-your-mentors/#comments</comments>
		<pubDate>Mon, 07 Nov 2011 18:11:02 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Startups]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Advice]]></category>
		<category><![CDATA[Success!]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=238</guid>
		<description><![CDATA[Thanks mostly (entirely?) to the Portland Incubator Experiment, I have long and awesome list of mentors from tons of companies that have been hugely successful. My startup, Revisu, is wouldn&#8217;t be where it is today without them. The advice we get is so good and plentiful, in fact, that it&#8217;s hard to keep up with all of the [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=238&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Thanks mostly (entirely?) to the Portland Incubator Experiment, I have long and awesome list of mentors from tons of companies that have been hugely successful. My startup, <a href="http://www.revisu.com">Revisu</a>, is wouldn&#8217;t be where it is today without them. The advice we get is so good and plentiful, in fact, that it&#8217;s hard to keep up with all of the advice we receive.</p>
<p>Parsing and acting on advice is a skill that you have to learn, and it&#8217;s a skill that I didn&#8217;t understand before I entered <a href="http://www.piepdx.com">PIE</a>&#8211;hell, I still might not understand it. So, here are a few things I keep in mind when I&#8217;m talking to mentors and advisors.</p>
<h2>1. Don&#8217;t waste your mentors&#8217; time.</h2>
<p>When I first started talking with people, I assumed that I needed to savor every damn second I could get with them. Thus, I figure that if I end a chat early, or run out of things to talk about, or can&#8217;t start a decent conversation that I would look amateur and ungrateful for their time.</p>
<p>While it&#8217;s true that these conversations are probably the most valuable you&#8217;re going to have at this stage, don&#8217;t waste people&#8217;s time because you feel like you need to be talking.</p>
<h2>2. Make a list goals of your conversations.</h2>
<p>For chats that you&#8217;re trying to schedule ahead of time make sure you have a list of questions or goals. You should probably come up with this list way before hand (in fact, you should have been prompted to call them up based on that list in the first place) as this will help you figure out whether or not you actually need to talk to this person or whether you&#8217;re just wasting their time.</p>
<h2>3. Understand where they&#8217;re coming from.</h2>
<p>Everyone has an angle&#8211;and not in a shady way! It has more to do with the way humans work. Marketing people think about things as approaches to marketing. PR people think about things in terms of PR. Product guys and founders&#8230;well, they have to think about everything. Your job is to find the overlap and pick out the bits that make the most sense for you and your company.</p>
<h2>4. There are many ways to do any one thing.</h2>
<p>Take launching for example. The aforementioned PR guy would be pushing us to build up to a big launch. But the product guy probably wants us to eschew launching and just open up for business <em>right now</em>&#8211;after all, how else are you going to  validate your market?</p>
<p>Both have very valid, well measured, and compelling reasons for their respective approaches. But neither is (likely) better than the other! Note that I think this is particularly poignant given the modern startup ecosystem and our belief that there is one really hard way forward.</p>
<h2>5. You are ultimately responsible for <em>everything</em></h2>
<p>If your metrics tank (you are tracking your core metrics, right?) because you followed someone&#8217;s bad advice, your investors are going to blame you. At the proverbial end of the day, you have to make your calls based on some confluence of  advice, experience, data, and gut.</p>
<p><span class="Apple-style-span" style="font-size:13px;font-weight:normal;">It&#8217;s important to remember what a mentor&#8217;s motivation is. People who have been there want to give back, so don&#8217;t forget to say thanks! Often that feeling of gratitude is what they&#8217;re getting out of helping you. For others, they feel like they&#8217;re getting the inside track on something awesome, which is hopefully true. </span></p>
<p><span class="Apple-style-span" style="font-size:13px;font-weight:normal;">The most important thing to keep in mind when talking with your mentors is to just treat them as people first and teachers second. You&#8217;ll learn a lot from them, and they&#8217;ll help you build an awesome company!</span></p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/238/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/238/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/238/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=238&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/11/07/advice-on-advice-how-to-listen-to-your-mentors/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>So your startup got selected for an incubator&#8230;</title>
		<link>http://bradhe.wordpress.com/2011/10/26/so-your-startup-got-selected-for-an-incubator/</link>
		<comments>http://bradhe.wordpress.com/2011/10/26/so-your-startup-got-selected-for-an-incubator/#comments</comments>
		<pubDate>Wed, 26 Oct 2011 16:24:51 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Good Info]]></category>
		<category><![CDATA[Startups]]></category>
		<category><![CDATA[Business]]></category>
		<category><![CDATA[Reflections]]></category>
		<category><![CDATA[Success!]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=229</guid>
		<description><![CDATA[Getting selected for an incubator is both great and scary, especially if you&#8217;re already employed in a cushy job! My startup, now called Revisu, was selected for the Portland Incubator Experiment (PIE) in early September. Obviously, we were ecstatic &#8211; but we didn&#8217;t really know what to expect. We tried searching Google and crawling through Hacker News to figure out what [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=229&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Getting selected for an incubator is both great and scary, especially if you&#8217;re already employed in a cushy job! My startup, now called <a href="http://www.revisu.com">Revisu</a>, was selected for the <a href="http://www.piepdx.com/">Portland Incubator Experiment</a> (PIE) in early September. Obviously, we were ecstatic &#8211; but we didn&#8217;t really know what to expect.</p>
<p>We tried <a href="http://www.google.com/search?q=what+to+expect+from+an+incubator">searching Google</a> and <a href="http://www.hnsearch.com/search#request/all&amp;q=what+to+expect+from+an+incubator&amp;start=0">crawling through Hacker News</a> to figure out what to expect, but real actionable data was lacking. Here are a few tips on getting started at an incubator.</p>
<h2>1. Don&#8217;t worry, no one else knows what they&#8217;re doing either.</h2>
<p>At PIE there was a real mixed bag of startups in terms of progress. Going in to PIE some were really far along, some (most) were just very basic prototypes with unproven marketability, and some were just ideas and two cool guys.</p>
<p>All of them, though, didn&#8217;t know what to expect from an incubator. And you really can&#8217;t find out, either, until you go through it as each incubator is different.</p>
<h2>2. Figure out what your startup is about &#8212; quickly.</h2>
<p>By &#8220;what you are about&#8221; I mean write down &#8212; on paper &#8212; the answers to some very basic questions. What are your goals? What is your (hopefully market driven) problem hypothesis? Why are you in an incubator? What do you hope to have done by the end? What do you hope to learn from it? The sooner you do this, the more successful you will be as all of your decisions should hinge on those answers. Any decisions you make without this data are just shots in the dark.</p>
<p>As of now, we&#8217;re about half way through the program and we <em>just</em> now figured out the answers to these questions. We&#8217;ve got a lot of work ahead of us to make up for that lost time. Oh yeah, and these can change at any time, too.</p>
<h2>3. You&#8217;re probably wrong and that&#8217;s OK.</h2>
<p>This point gets harped on a lot but it&#8217;s one of those things that people still fail at realizing when they&#8217;re actually put in the position, when they&#8217;re actually wrong about something. And you could be wrong about anything and everything &#8212; technological viability, marketability, your ability to reach customers, anything!</p>
<p>The best entrepreneurs are the ones that realize they&#8217;re wrong the earliest because they can figure out how to fix the problem. Again, this is something we&#8217;re just now learning!</p>
<h2>4. You&#8217;re about to learn a lot.</h2>
<p>You&#8217;re going to meet people that have expertise in fields that you didn&#8217;t even know <em>existed</em>  and are very important to building a company.</p>
<p>PR was a field that I didn&#8217;t consider to be important. &#8220;it&#8217;s just something big companies use for damage control,&#8221; I thought. It wasn&#8217;t until someone explained to me what PR was that I understood how important it is because I (obviously) didn&#8217;t understand it.</p>
<h2>5. The <em>most valuable advice</em> you&#8217;re going to get will come from&#8230;</h2>
<p>Previously successful founders. The real bitch of an incubator is that there is too much data being thrown at you.</p>
<p>You&#8217;re going to hear from experts in all fields &#8212; marketing, PR, sales, product management, technology, design, UX, and a bunch I&#8217;m sure I&#8217;m forgetting. Each person you talk to will tell you how important their respective field is and how if you concentrate on <em>this one thing</em> you&#8217;ll be successful.</p>
<p>The only people that <em>really</em> know what is important to starting a company are the people who have done it. Even then, realize that it&#8217;s different for everyone to a certain degree and highly subjective to how far along you are.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/229/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/229/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/229/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=229&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/10/26/so-your-startup-got-selected-for-an-incubator/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>Always check error type when using raise_error matcher</title>
		<link>http://bradhe.wordpress.com/2011/08/09/always-check-error-type-when-using-raise_error-matcher/</link>
		<comments>http://bradhe.wordpress.com/2011/08/09/always-check-error-type-when-using-raise_error-matcher/#comments</comments>
		<pubDate>Tue, 09 Aug 2011 18:34:47 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Weird Behavior]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Conventions]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rspec]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=222</guid>
		<description><![CDATA[We all know rspec is sweet. There are a few gotchas, though, that everyone should be aware of. One of them shows up when using the raise_error matcher. Consider the following bit of code with spec: In this obviously contrived example an error will be raised&#8230;but it won&#8217;t be the error you expect. You&#8217;ll get [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=222&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>We all know rspec is sweet. There are a few gotchas, though, that everyone should be aware of. One of them shows up when using the raise_error matcher.</p>
<p>Consider the following bit of code with spec:</p>
<p><pre class="brush: ruby;">
class User
  attr_accessor :username
end

class Project
  attr_accessor :users

  def add_user(user)
    raise &quot;User is already on project&quot; if user.users.include? user
  end
end

it 'should not allow you to add multiple users to a project' do
  user = User.new
  project = Project.new

  lambda {
    project.add_user(user)
    project.add_user(user)
  }.should raise_error
end
</pre></p>
<p>In this obviously contrived example an error will be raised&#8230;but it won&#8217;t be the error you expect. You&#8217;ll get a NoMethodError! rspec lets you check the type of error raised, so here is a better alternative &#8212; notice the differences on linew 1, 11, and 21.</p>
<p><pre class="brush: ruby;">
class DuplicateUsersError &lt; StandardError; end

class User
  attr_accessor :username
end

class Project
  attr_accessor :users

  def add_user(user)
    raise DuplicateUsersError, &quot;User is already on project&quot; if user.users.include? user
  end
end

it 'should not allow you to add multiple users to a project' do
  user = User.new
  project = Project.new

  lambda {
    project.add_user(user)
    project.add_user(user)
  }.should raise_error DuplicateUsersError
end
</pre></p>
<p>Now the spec will properly fail as the wrong type of error was raised!</pre>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/222/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/222/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/222/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=222&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/08/09/always-check-error-type-when-using-raise_error-matcher/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>A sneaky Rails 3 bug in logging</title>
		<link>http://bradhe.wordpress.com/2011/06/26/a-sneaky-rails-3-bug-in-logging/</link>
		<comments>http://bradhe.wordpress.com/2011/06/26/a-sneaky-rails-3-bug-in-logging/#comments</comments>
		<pubDate>Sun, 26 Jun 2011 20:26:59 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Weird Behavior]]></category>
		<category><![CDATA[bug]]></category>
		<category><![CDATA[logging]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=215</guid>
		<description><![CDATA[When locally debugging a production issue today I kept getting this message when starting the server: Rails Error: Unable to access log file. Please ensure that /path/to/rails/app/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed. Despite the fact that [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=215&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>When locally debugging a production issue today I kept getting this message when starting the server:<code><br />
Rails Error: Unable to access log file. Please ensure that /path/to/rails/app/log/production.log exists and is chmod 0666. The log level has been raised to WARN and the output directed to STDERR until the problem is fixed.</code></p>
<p>Despite the fact that the file was indeed present and accounted for (permissions-wise &#8212; not exactly 0666 but perms matched other log files):<code><br />
-rw-r--r--   1 brad  admin        0 Jun 26 13:07 production.log</code></p>
<p>As it turns out, there is a &#8220;bug&#8221; in Rail&#8217;s logger configuration code such that if an exception is thrown during configuring the logger it just tells you it couldn&#8217;t get to the file. This isn&#8217;t so much a bug as just a poorly-worded error message.</p>
<h2>The Fix</h2>
<p>The root cause of <em>my</em> issue was that in configs/environments/production.rb I was configuring logging like so (legacy Rails way, apparently):<code><br />
config.log_level = Logger::WARN<br />
</code></p>
<p>When I should be configuring it thusly:<code><br />
config.log_level = :warn<br />
</code></p>
<p>After changing configuration, everything worked just dandy.</p>
<h2>How was this bug originally manifested?</h2>
<p>Interestingly, I originally started looking in to this because (surprise surprise) logging wasn&#8217;t working in production! This fixed the issue.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/215/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/215/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/215/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=215&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/06/26/a-sneaky-rails-3-bug-in-logging/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>Notes on working with Resque in Rails 3 and Ruby 1.8</title>
		<link>http://bradhe.wordpress.com/2011/05/09/notes-on-working-with-resque-in-rails-3and-ruby-1-8/</link>
		<comments>http://bradhe.wordpress.com/2011/05/09/notes-on-working-with-resque-in-rails-3and-ruby-1-8/#comments</comments>
		<pubDate>Tue, 10 May 2011 06:08:06 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Ruby]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[best practice]]></category>
		<category><![CDATA[Programming]]></category>
		<category><![CDATA[rails]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[Technology]]></category>
		<category><![CDATA[Tips]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=201</guid>
		<description><![CDATA[Resque is really great. It&#8217;s super easy to set up, (pretty) well documented, and damn fast. I&#8217;ve set it up for two &#8212; going on three &#8212; projects here and I&#8217;ve gotten stuck on two points twice now. Add the Resque tasks to your Rakefile Herp derp. I have no idea how I missed this [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=201&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Resque is really great. It&#8217;s super easy to set up, (pretty) <a href="https://github.com/defunkt/resque">well documented</a>, and damn fast. I&#8217;ve set it up for two &#8212; going on three &#8212; projects here and I&#8217;ve gotten stuck on two points twice now.</p>
<h2>Add the Resque tasks to your Rakefile</h2>
<p>Herp derp. I have no idea how I missed this twice. Make sure you include the rake tasks in your rake file by adding</p>
<p><pre class="brush: ruby;">

require 'resque/tasks'

</pre></p>
<p>to the top of your Rakefile. If you don&#8217;t rake won&#8217;t know how to start the Resque worker.</p>
<p><pre class="brush: bash;">

/www/integrand [ master* ] $ QUEUE=* rake resque:work
(in /www/integrand)
rake aborted!
Don't know how to build task 'resque:work'

(See full trace by running task with --trace)

</pre></p>
<h2>Add a script to start your Resque worker</h2>
<p>The syntax to start Resque workers is (marginally) verbose. Make your life easier by adding a script to your script folder. All you really need is the following:</p>
<p><pre class="brush: bash;">

QUEUE=* VVERBOSE=1 rake environment resque:work

</pre></p>
<p>The VVERBOSE argument, not suprisingly, tells Resque to use very verbose logging to the console. The &#8220;environment&#8221; argument has Resque load the full Rails environment (read: Your models!) for it&#8217;s jobs.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/201/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/201/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/201/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=201&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/05/09/notes-on-working-with-resque-in-rails-3and-ruby-1-8/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
		<item>
		<title>Process Overload Mitigation: Modify existing processes before adding new processes</title>
		<link>http://bradhe.wordpress.com/2011/04/06/process-overload-mitigation-modify-existing-processes-before-adding-new-processes/</link>
		<comments>http://bradhe.wordpress.com/2011/04/06/process-overload-mitigation-modify-existing-processes-before-adding-new-processes/#comments</comments>
		<pubDate>Wed, 06 Apr 2011 18:57:42 +0000</pubDate>
		<dc:creator>bradhe</dc:creator>
				<category><![CDATA[Complaining]]></category>
		<category><![CDATA[Tips & Tricks]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[Success!]]></category>
		<category><![CDATA[Team Stuff]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://bradhe.wordpress.com/?p=195</guid>
		<description><![CDATA[No one likes process &#8212; well, maybe the pointy hairds do, but hopefully they&#8217;re not looking while you&#8217;re reading this. Anyway, everyone wants to minimize process. One way to do so is, when something comes up that dictates a change in process, to concentrate on modifying existing processes before adding new processes. An example would [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=195&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>No one likes process &#8212; well, maybe the pointy hairds do, but hopefully they&#8217;re not looking while you&#8217;re reading this. Anyway, everyone wants to minimize process. One way to do so is, when something comes up that dictates a change in process, to concentrate on modifying existing processes before adding new processes.</p>
<p>An example would be a hand off process I&#8217;ve been helping refine. One team writes features/modifies functionality for an automation process and the other is responsible for the management/operations of said automation. For whatever reason, the ancients dictated that the maintenance team <em>must</em> write the configuration files for the automation.</p>
<h2>Hind sight is more probably like 20/120 when dealing with process</h2>
<p>Obviously, it&#8217;s been a bumpy road any time there is a hand off between the maintenance team and the operations team. The short-sighted process that dictated the maintenance team must maintain configs resulted in a healthy dose of environment-related problems &#8212; files in different locations than anticipated, missing metadata in various places, etc.</p>
<p>After the two teams got fed up with bickering about who broke what the proposed solution was a &#8220;handoff checklist.&#8221; For whatever reason people default to adding documents when something goes all wonky. While it seems like an &#8220;easy&#8221; fix, man, that&#8217;s such a pain in the ass. To get a new document in place the teams  must agree upon a strategy for where they should be stored, what format to use, how they will be maintained, <em>who</em> will maintain them, how to backfill for existing artifacts, and a whole bunch of other scenarios.</p>
<h2>Avoid process-overload by modifying existing processes</h2>
<p>That&#8217;s a lot of man hours and added frustration to fix the core issue: Operations should maintain the configuration. It&#8217;s their environment, it&#8217;s their automation process. By modifying the existing process (in this example, forcing poor ops to maintain the config) you can save a lot of energy.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/bradhe.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/bradhe.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/bradhe.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/bradhe.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/bradhe.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/bradhe.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/bradhe.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/bradhe.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/bradhe.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/bradhe.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/bradhe.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/bradhe.wordpress.com/195/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/bradhe.wordpress.com/195/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/bradhe.wordpress.com/195/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=bradhe.wordpress.com&amp;blog=5700229&amp;post=195&amp;subd=bradhe&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://bradhe.wordpress.com/2011/04/06/process-overload-mitigation-modify-existing-processes-before-adding-new-processes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
	
		<media:content url="http://0.gravatar.com/avatar/2953364f2fecf8e482a21e52d36ef890?s=96&#38;d=identicon&#38;r=G" medium="image">
			<media:title type="html">bradhe</media:title>
		</media:content>
	</item>
	</channel>
</rss>
