<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Life in School and Startup</title>
	<atom:link href="http://www.2bros1blog.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.2bros1blog.com</link>
	<description>&#34;Get off the Bitch Train and just start it...&#34;</description>
	<lastBuildDate>Fri, 30 Jul 2010 03:38:02 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Switching from Basic to xAuth with mgtwitterengine on iPhone</title>
		<link>http://www.2bros1blog.com/2010/07/switching-from-basic-to-xauth-with-mgtwitterengine-on-iphone/</link>
		<comments>http://www.2bros1blog.com/2010/07/switching-from-basic-to-xauth-with-mgtwitterengine-on-iphone/#comments</comments>
		<pubDate>Fri, 30 Jul 2010 03:02:14 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[iphone]]></category>
		<category><![CDATA[mgtwitterengine]]></category>
		<category><![CDATA[objective-c]]></category>
		<category><![CDATA[twitter]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=268</guid>
		<description><![CDATA[I should preface this article by saying that I&#8217;ve consumed hundreds of code tutorials and walkthroughs &#8211; this is my first attempt to give back to the massive online library of free help. Also, I&#8217;ve never used git so I just zipped up the source and such instead of posting it on github. Hope you [...]]]></description>
			<content:encoded><![CDATA[<p>I should preface this article by saying that I&#8217;ve consumed hundreds of code tutorials and walkthroughs &#8211; this is my first attempt to give back to the massive online library of free help. Also, I&#8217;ve never used git so I just zipped up the source and such instead of posting it on github. Hope you all enjoy it.</p>
<p><strong>Background</strong><br />
I&#8217;m the technical co-founder of <a href="http://www.getsoundaround.com" target="_blank">Sound Around</a>. We make an online iphone app builder that lets bands and live performers create and manage their own custom iPhone applications. One of the features in the band&#8217;s app is to let the fans share out songs, news, shows, pics, etc, on twitter in just a couple clicks. All we use mgtwitterengine for is logging in, posting tweets, checking follow status and initiating following &#8211; your mileage may vary based on how extensively you use mgtwitterengine. Twitter will be shutting off Basic authentication soon, so I needed to venture out and implement xAuth and rebuild/resubmit all of our applications to apple to avoid the OAuthocalypse.</p>
<p><strong>Step 1: Request xAuth permission from the API team at twitter</strong></p>
<p>I simply sent a detailed message to api@twitter.com with my company information and intent to use xAuth. It took them 16 hours to get back to me with no questions asked. Not bad with a deadline so quickly approaching! <a href="http://dev.twitter.com/pages/xauth">http://dev.twitter.com/pages/xauth</a></p>
<p><strong>Step 2: Get my stripped iPhone mgtwitterengine with xauth </strong></p>
<p>This was the confusing part for me. The latest bleeding edge of mgtwitterengine on github had a lot of added fluff that I didn&#8217;t need for my iPhone project. There was added YAJL items and support for MAC OS X which just wasn&#8217;t necessary and was causing compile issues. I decided to strip all of that out and just include the files that were needed for the iPhone to be functional. Additionally, I picked up OAuthConsumer from <a href="http://github.com/jdg/oauthconsumer">http://github.com/jdg/oauthconsumer</a> and dropped it into the project.</p>
<p>Download: <a href="http://com.soundaround.web.misc.s3.amazonaws.com/mgtwitterengine.zip">http://com.soundaround.web.misc.s3.amazonaws.com/mgtwitterengine.zip</a></p>
<p><img alt="" src="http://com.soundaround.web.misc.s3.amazonaws.com/mgtwitterengine.png" title="mgtwitterengine project" class="alignnone" width="720" height="450" /></p>
<p>NOTE: I&#8217;m using MGTwitterEngine built as a static library that I compile as a dependency of my main project. You&#8217;ll need to look elsewhere for a tutorial on how to do that, or you can just copy the &#8220;Classes&#8221; source files into your project. The mgtwitterengine project from the zip file should build on its own with a couple warnings (not sure what from, didnt seem important to me)</p>
<p><strong>Step 3: set your consumer key and consumer secret after instantiating your mgtwitterengine instance</strong></p>
<p>Here is my code that gets called when my app launches. I have a single instance of mgtwitterengine that the whole app uses. Your key and secret will be available on your app profile page.</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;">self.m_twitterEngine <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span><span class="br0">&#91;</span>MGTwitterEngine alloc<span class="br0">&#93;</span> initWithDelegate<span class="sy0">:</span>self<span class="br0">&#93;</span> autorelease<span class="br0">&#93;</span>;<br />
<span class="br0">&#91;</span>self.m_twitterEngine setConsumerKey<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;your_key&quot;</span> secret<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;your_secret&quot;</span><span class="br0">&#93;</span>;</div>
</div>
<p><strong>Step 4: modify your &#8220;checkUserCredentials&#8221; type of function to use the new getXAuthAccessTokenForUsername function</strong></p>
<p>This is the bread and butter &#8220;login&#8221; check for the credentials provided by your users. It will return an NSString identifier like all other requests do &#8211; good idea to store this value for later checking in delegate methods. I also store the username and a UISwitch value for if they want us to remember their login (and auto-login their account next time the app launches). Yours may vary but it should have some variant of what I have below.</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>initiateCredentialCheckWithUsername<span class="sy0">:</span><span class="br0">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span class="kw5">NSString</span></a><span class="sy0">*</span><span class="br0">&#41;</span>_username password<span class="sy0">:</span><span class="br0">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span class="kw5">NSString</span></a><span class="sy0">*</span><span class="br0">&#41;</span>_password remember<span class="sy0">:</span><span class="br0">&#40;</span><span class="kw4">BOOL</span><span class="br0">&#41;</span>_remember <span class="br0">&#123;</span><br />
&nbsp; &nbsp; self.m_authenticateRequest <span class="sy0">=</span> <span class="br0">&#91;</span>self.m_twitterEngine getXAuthAccessTokenForUsername<span class="sy0">:</span>_username password<span class="sy0">:</span>_password<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; self.m_remember <span class="sy0">=</span> _remember;<br />
&nbsp; &nbsp; self.m_username <span class="sy0">=</span> _username;<br />
<span class="br0">&#125;</span></div>
</div>
<p><strong>Step 5: modify your delegate file to handle new &#8220;successful authentication&#8221; call</strong></p>
<p>Your current delegate method should already have a mechanism to handle failed login. Now that you&#8217;re using xAuth, the handling for failed logins wont change at all. What does change, however, is the sequence of events on a successful login.</p>
<p><u>In the event of a successful login, two delegate methods will be called (not sure if they&#8217;re called in order, or if its deterministic at all).</u> You&#8217;ll get a normal requestSucceeded callback, but you&#8217;ll also get a call to accessTokenReceived with an argument containing your access token that will be used for all subsequent requests. I put all of my &#8220;successful login&#8221; code in the latter method since it will only be called upon a successful authentication challenge, plus it has the cool token that you need to feed to your mgtwitterengine object.</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">void</span><span class="br0">&#41;</span>accessTokenReceived<span class="sy0">:</span><span class="br0">&#40;</span>OAToken <span class="sy0">*</span><span class="br0">&#41;</span>token forRequest<span class="sy0">:</span><span class="br0">&#40;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/"><span class="kw5">NSString</span></a> <span class="sy0">*</span><span class="br0">&#41;</span>connectionIdentifier <span class="br0">&#123;</span><br />
&nbsp; &nbsp; self.m_accessToken <span class="sy0">=</span> token;<br />
&nbsp; &nbsp; <span class="br0">&#91;</span>self.m_twitterEngine setAccessToken<span class="sy0">:</span>self.m_accessToken<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; self.m_authenticateRequest <span class="sy0">=</span> <span class="kw2">nil</span>;<br />
&nbsp; &nbsp; self.m_authenticated <span class="sy0">=</span> <span class="kw2">YES</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>self.m_remember<span class="br0">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>self saveLoginCredentials<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co2">//kick off the request to check if they&#8217;re following the band</span><br />
&nbsp; &nbsp; <span class="br0">&#91;</span>self initiateFollowStatusCheck<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="co2">//NSLog(@&quot;TWITTER: authenticate success&quot;, requestIdentifier);</span><br />
&nbsp; &nbsp; <span class="br0">&#91;</span><span class="br0">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSNotificationCenter_Class/"><span class="kw5">NSNotificationCenter</span></a> defaultCenter<span class="br0">&#93;</span> postNotificationName<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;twitter_login_success&quot;</span> object<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;twitter&quot;</span><span class="br0">&#93;</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>The only important part of the above code is that you set the access token for your mgtwitterengine object. Whatever  else you wish to do in this method is optional.</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="br0">&#91;</span>self.m_twitterEngine setAccessToken<span class="sy0">:</span>self.m_accessToken<span class="br0">&#93;</span>;</div>
</div>
<p><strong>Step 6: put in mechanisms to save the token and recall it on app launch</strong></p>
<p>Once you receive the token, the OAToken class has a built-in method that you can use to save it to NSUserDefaults. The following code snippet is the body of my [self saveLoginCredentials] that you see above after I successfully receive the token. Note that service provider name and prefix are strings that you can set to whatever you want.</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="br0">&#91;</span><span class="br0">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/"><span class="kw5">NSUserDefaults</span></a> standardUserDefaults<span class="br0">&#93;</span> setObject<span class="sy0">:</span>self.m_username forKey<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;twitter_username&quot;</span><span class="br0">&#93;</span>;<br />
<span class="br0">&#91;</span>self.m_accessToken storeInUserDefaultsWithServiceProviderName<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;soundaround&quot;</span> prefix<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;token&quot;</span><span class="br0">&#93;</span>;<br />
<span class="br0">&#91;</span><span class="br0">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/"><span class="kw5">NSUserDefaults</span></a> standardUserDefaults<span class="br0">&#93;</span> synchronize<span class="br0">&#93;</span>;</div>
</div>
<p>Now, on program init, we can check to see if NSUserDefaults has a token for us to use based on the provider and prefix strings we used to save it. Here is my init function that sets up my twitter stuff. You&#8217;ll notice that if I find a token via NSUserDefaults, I &#8220;trick&#8221; the class by manually calling the delegate method with the retrieved token as if we had received it from an authentication challenge &#8211; this allows the rest of the &#8220;successful login&#8221; code to execute as if they had entered their user credentials again.</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="sy0">-</span> <span class="br0">&#40;</span><span class="kw4">id</span><span class="br0">&#41;</span>init <span class="br0">&#123;</span><br />
&nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>self <span class="sy0">=</span> <span class="br0">&#91;</span>super init<span class="br0">&#93;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; self.m_twitterEngine <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span><span class="br0">&#91;</span>MGTwitterEngine alloc<span class="br0">&#93;</span> initWithDelegate<span class="sy0">:</span>self<span class="br0">&#93;</span> autorelease<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>self.m_twitterEngine setConsumerKey<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;your_key&quot;</span> secret<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;your_secret&quot;</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; self.m_accessToken <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span>OAToken alloc<span class="br0">&#93;</span> initWithUserDefaultsUsingServiceProviderName<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;soundaround&quot;</span> prefix<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;token&quot;</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span><span class="br0">&#40;</span>self.m_accessToken <span class="sy0">!=</span> <span class="kw2">nil</span><span class="br0">&#41;</span> <span class="br0">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">//token successfully restored, pull the username from user defaults</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.m_username <span class="sy0">=</span> <span class="br0">&#91;</span><span class="br0">&#91;</span><a href="http://developer.apple.com/documentation/Cocoa/Reference/Foundation/Classes/NSUserDefaults_Class/"><span class="kw5">NSUserDefaults</span></a> standardUserDefaults<span class="br0">&#93;</span> valueForKey<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;twitter_username&quot;</span><span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">//simulate received token as authentication</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; self.m_authenticateRequest <span class="sy0">=</span> <span class="co3">@</span><span class="st0">&quot;shirley&quot;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#91;</span>self accessTokenReceived<span class="sy0">:</span>self.m_accessToken forRequest<span class="sy0">:</span>self.m_authenticateRequest<span class="br0">&#93;</span>;<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="co2">//NSLog(@&quot;TWITTER: restored username:%@&quot;, self.m_username);</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">return</span> self;<br />
&nbsp; &nbsp; <span class="br0">&#125;</span><br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; <span class="kw1">return</span> <span class="kw2">nil</span>;<br />
<span class="br0">&#125;</span></div>
</div>
<p>And, to be nice, destroy the token when they want to logout of their account.</p>
<div class="codesnip-container" >
<div class="objc codesnip" style="font-family:monospace;"><span class="br0">&#91;</span>OAToken removeFromUserDefaultsWithServiceProviderName<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;soundaround&quot;</span> prefix<span class="sy0">:</span><span class="co3">@</span><span class="st0">&quot;token&quot;</span><span class="br0">&#93;</span>;</div>
</div>
<p><strong>Conclusion</strong></p>
<p>I hope this lets you focus what you needed to get your iPhone project running. Please tweet this article if it was helpful for you and link back to <a href="http://www.getsoundaround.com">http://www.getsoundaround.com</a> to help plug our company.</p>
<p>Also, we&#8217;re looking for another technical co-founder if you&#8217;re a rockstar ((Android || iPhone) &#038;&#038; LAMP) programmer and want to get in on an equity basis. Email me at scott@getsoundaround.com</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/07/switching-from-basic-to-xauth-with-mgtwitterengine-on-iphone/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Why 100 Hours per Week Works for Me</title>
		<link>http://www.2bros1blog.com/2010/07/why-100-hours-per-week-works-for-me/</link>
		<comments>http://www.2bros1blog.com/2010/07/why-100-hours-per-week-works-for-me/#comments</comments>
		<pubDate>Tue, 06 Jul 2010 15:15:04 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=266</guid>
		<description><![CDATA[I&#8217;ve been reading a lot about this lately &#8211; the whole work/life balance and how it affects health and relationships.
Mainly, I&#8217;m interested in productivity.
ANSWER: 100 hours per week works for me&#8230;but only right now.
The common fallacy I see in discussion of productivity for 50 vs 80 vs 120 hours per week to work is that [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been reading a lot about this lately &#8211; the whole work/life balance and how it affects health and relationships.</p>
<p>Mainly, I&#8217;m interested in productivity.</p>
<p><strong>ANSWER: </strong>100 hours per week works for me&#8230;but only right now.</p>
<p>The common fallacy I see in discussion of productivity for 50 vs 80 vs 120 hours per week to work is that it fails to mention enough context around what you&#8217;re doing for those hours. Studies usually site established corporations or other entities with revenue, a solid baseline product, and non-trivial new feature development.</p>
<p>Most people arguing in favor of 100 hours per week are probably like me.</p>
<p>This is my first software startup. We have me plus my co-founder, very little revenue, and work out of our apartment. There is a lot of low hanging fruit. There is a large amount of low hanging fruit. There is a <strong>tremendous</strong> amount of low hanging fruit. Product development, customer service, business development, many of these things can be done groggy at 5am probably with roughly similar quality as at the high point in the day. Things just have to get done and they take non-zero time to get them done.</p>
<p>In the future, this absolutely won&#8217;t be the case. In fact, it&#8217;s transitioning away from it now that we&#8217;ve just launched and have to really start buckling down to prioritize our time and make sure we&#8217;re going to be able to reach ramen profitability in as short as possible. New features on the development roadmap are definitely non-trivial and won&#8217;t stand up to only 5 hours a night of sleeping.</p>
<p>Bottom line, lets compare apples to apples when talking about productivity.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/07/why-100-hours-per-week-works-for-me/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>It&#8217;s real.</title>
		<link>http://www.2bros1blog.com/2010/06/its-real/</link>
		<comments>http://www.2bros1blog.com/2010/06/its-real/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 02:01:48 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=262</guid>
		<description><![CDATA[FIRST OFF: I want to thank Ryan Van Etten of VirtualMusic.tv so much for the article he wrote about us for his blog.
I don&#8217;t know if I&#8217;ve been living in a fantasy world for the past 6 months but this shit is real. I don&#8217;t know why, but tonight I&#8217;m realizing that this is actually [...]]]></description>
			<content:encoded><![CDATA[<p>FIRST OFF: I want to thank Ryan Van Etten of <a href="http://http://virtualmusic.tv/">VirtualMusic.tv</a> so much for the <a href="http://http://virtualmusic.tv/2010/06/sound-around/">article</a> he wrote about us for his blog.</p>
<p>I don&#8217;t know if I&#8217;ve been living in a fantasy world for the past 6 months but this shit is real. I don&#8217;t know why, but tonight I&#8217;m realizing that this is actually going to happen. Sound Around is going to make it&#8217;s way into the world. Sound Around is going to crush it. I can just feel it.</p>
<p>So much has changed in the past 6 months. Where to start? My lifestyle, my goals, the way I spend my time, the people I choose to spend my time with, what I value in people (and no it&#8217;s not that they&#8217;re are working hard, it&#8217;s people that are doing something they enjoy).</p>
<p>If you told me a year ago what the following year had in store for me&#8230;I&#8217;d slap you in the face for being a damn dirty liar. I spoke with the CEO and marketing director of a distribution company about an iPhone solution for the some of the <strong>400 record labels</strong> they do digital distribution for. Last year this time? I was&#8230;I think researching the different mobile platforms for the Bob and the Showgram App (which would never see the light of day). Oh how things of changed. I&#8217;m more conscious of how I spend my time&#8230;probably to a fault.</p>
<p>We&#8217;re launching in about a week and going balls-to-the-walls with this. I think we&#8217;re in an amazing position to be successful, maybe even win in this market. More beta apps coming down the pipes &#8212; 3 already on the App Store. We&#8217;re so lucky to be working with some amazing bands &#8212; a particularly famous one might be in the works&#8230;I really hope it all works out.</p>
<p>In the meantime, it&#8217;s nose to the grindstone. Late nights, early mornings, skipped parties, hardly watched NBA Finals, totally unwatched World Cup, neglected girlfriends (Sorry Caroline, I love you so much though =D ), neglected diets, neglected work outs but probably worst of all&#8230;no Super Smash Bros 64 =(. Oh, the humanity.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/06/its-real/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Filter the Advice You Get, Filter the Advisors</title>
		<link>http://www.2bros1blog.com/2010/05/dont-filter-the-advice-you-get-filter-the-advisors/</link>
		<comments>http://www.2bros1blog.com/2010/05/dont-filter-the-advice-you-get-filter-the-advisors/#comments</comments>
		<pubDate>Sun, 09 May 2010 22:48:05 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Web]]></category>
		<category><![CDATA[networking]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=248</guid>
		<description><![CDATA[One of the common pitfalls that I think people run into when starting a company is asking everyone what they think about their product, what features they should add/remove, what segment of their market they should target, how to advertise and gain customers, etc.  This exercise is good if you&#8217;re having conversation with somebody at [...]]]></description>
			<content:encoded><![CDATA[<p>One of the common pitfalls that I think people run into when starting a company is asking everyone what they think about their product, what features they should add/remove, what segment of their market they should target, how to advertise and gain customers, etc.  This exercise is good if you&#8217;re having conversation with somebody at a bar &#8211; &#8220;so what do you do?&#8221; &#8211; but on the whole I&#8217;ve found it to be mainly a waste of time to be seeking out anyone and everyone to talk about your product to.</p>
<p>Unfortunately, it takes learning the hard way to find this out for a couple of reasons:</p>
<ul>
<li>The media loves and glorifies the headstrong, stalwart leader for defying the common consensus and going it alone because they are made out to be some &#8220;visionary&#8221; or &#8220;prodigy&#8221; for finding the next thing. Starters tend to think that the more they get shot down the more they&#8217;re &#8220;defying the odds&#8221;. Go talk to Jeff Bezos, Ron Conway, Jeff Clavier, and, just for shits and giggles, go ask Jason Calacanis what he thinks &#8211; these people are a much better barometer for your web or technology startup than Grandma, creepy Uncle Tony, and the hipster who frequents your local coffee shop couch.</li>
<li>You realize that the common questions you receive aren&#8217;t asked by the smartest of angels, VCs, and advisors.  I hate getting asked &#8220;Do you have anything you can patent&#8221; or &#8220;what % of this market can you catch&#8221; or &#8220;how will you market your product&#8221; or &#8220;what if Google decides to do this&#8221;.  The answer to all of those is &#8220;I don&#8217;t know and I&#8217;m not going to waste time guessing&#8221;.  Really finding the answer to those things is done when you have a product and are able to measure the actual customer response</li>
<li>People try to give you advice based on their own experience which, not surprisingly, isn&#8217;t at all applicable to what you&#8217;re doing.  If you&#8217;re building a SaaS web app for graphic designers and run across Andy Bernard, Andy Bernard will probably start talking about his sales cycle in a B2B setting for inkjet printers and reams of paper.  He may or may not try to tie it back to your business, almost assuredly unsuccesfully.  Andy Bernard is the wrong person to ask or solicit advice for about your business.</li>
</ul>
<p>So, what can you do about this?  I&#8217;ve come up with a few guidelines that I&#8217;ve kept in my head about what I try to do to filter the advice coming in.  More importantly, you should be establishing criteria for the people you seek out to have coffee with, get to invest in your company, see your early product releases, etc.</p>
<ul>
<li>Avoid large market association.  Not only do people not understand your product in the first couple minutes, their previous college roommates will likely have no association either.  &#8221;Ya that sounds cool, my roommate in college used to work with websites and he just bought a sweet Toyota Yaris with all the money he&#8217;s made.&#8221;.  Unless he&#8217;s done a SaaS business before, or built a product for graphic designers, or is a graphic designer, chances are his &#8220;expert&#8221; or &#8220;experienced&#8221; feedback is going to go in the garbage can along with what your &#8220;analyst&#8221; rich neighbor said as well.</li>
<li>Previous success is not a bellwether for future success or awareness of their surroundings.  Steve Jobs ran Pixar and is running Apple like a banshee.  Put him in the context of Soy Bean farming and there is ZERO guarantee he&#8217;ll do well.  Your own experience and market familiarity is likely going to be more valuable than feedback from even the most successful people you&#8217;ll meet.</li>
<li>Business veterans often miss huge opportunities.  I was reading an <a title="http://www.readwriteweb.com/start/2010/05/when-entrepreneurs-should-ignore-advice.php" href="http://" target="_blank">article on RWW</a> about famous people ignoring advice given to them, and the common denominator seemed to be entrenchment having a positive correlation with rejection of revolutionary new ideas.  For my 23 years of being alive, things have yet to cool off on the &#8220;change&#8221; horizon with the internet &#8211; I don&#8217;t predict this to stop.  The better people to talk to are the people who have been in your market long enough to understand the driving core principles, but also can entertain earth shattering ideas that may flip the industry upside down.</li>
<li>Stop asking stupid questions.  &#8221;What should I do about problem X&#8221; isn&#8217;t going to get you a great response, neither is &#8220;What is the future of market Y?&#8221;.  I&#8217;ve found that advisors are like beta testers &#8211; they work much better when you tell them what you&#8217;re doing and solicit feedback.  &#8221;I have this problem X, and I&#8217;m thinking we could solve it with A, B, or C&#8221; &#8211; having your 3 most thought-out possible solutions will open the floodgates for response because the context around your problem is embedded in what YOU as the owner are thinking would be good ways to solve it.</li>
<li>Recognize the difference between and advisor and a cheerleader.  Some people are going to be overly excited about your product because they like you and want to see you succeed &#8211; your Mom and Grandma are good examples.  Anything you bring to them about what you&#8217;re building next or some cool new feature you developed will obviously make them go &#8220;honey this is wonderful!&#8221;.  Other entrepreneurs are most likely going to be cheerleaders; people you can talk to when you&#8217;re stressed and have a lonely job being at the top.  They&#8217;ve been through it before and their message of &#8220;there&#8217;s light at the end of the tunnel, keep pushing&#8221; is worth Gold when you&#8217;re in a slump or need some encouragement if things aren&#8217;t going as well as you&#8217;d hoped.  Advisors will be very honest with you if they think you&#8217;re making a mistake or aren&#8217;t seizing opportunities fast enough.  Don&#8217;t confuse cheerleaders with advisors just to feel better about your product.</li>
</ul>
<p>Any suggestions or stories are more than welcome.  I&#8217;d like to see hear about what others are experiencing and how they&#8217;re keeping a good filter on.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/05/dont-filter-the-advice-you-get-filter-the-advisors/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Oh, but you worked hard on it? I don&#8217;t care.</title>
		<link>http://www.2bros1blog.com/2010/04/oh-but-you-worked-hard-on-it-i-dont-care/</link>
		<comments>http://www.2bros1blog.com/2010/04/oh-but-you-worked-hard-on-it-i-dont-care/#comments</comments>
		<pubDate>Sat, 24 Apr 2010 04:46:52 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=239</guid>
		<description><![CDATA[I feel like I&#8217;ve been misled over the past 8 years of formal education that I&#8217;ve been a part of.  I don&#8217;t know if the education system or American culture is to blame, but there seems to be this permeating school of thought that may be a large contributor to the unemployment numbers we&#8217;re seeing [...]]]></description>
			<content:encoded><![CDATA[<p>I feel like I&#8217;ve been misled over the past 8 years of formal education that I&#8217;ve been a part of.  I don&#8217;t know if the education system or American culture is to blame, but there seems to be this permeating school of thought that may be a large contributor to the unemployment numbers we&#8217;re seeing today.  And, incidentally, this was a revelation to me in that <strong>I finally nailed down why entrepreneurship is so hard</strong>.  The answer, as usual, is pretty simple&#8230;</p>
<p>Society doesn&#8217;t care how hard you work. If you don&#8217;t produce anything of value that they&#8217;re willing to spend money on, it is your loss. The amount of invested time, money, blood, sweat, and tears only matter in your own eyes at the end of the day. Consumers reward the <em>smartest </em>workers, not the <em>hardest</em> workers; and if you think you can work at something for a little while just to sit back and take in the cash you&#8217;re sorely mistaken.</p>
<p>The grade school and corporation frame of mind tell us that if we try hard or if we do as our boss tells us enough to not get fired that we deserve that paycheck every Friday.  Obviously, this is exactly the opposite of how people spend their money, and people with their own companies will tell you first hand that you ask yourself every day if what you&#8217;re making is going to provide enough value.  Not only that, even those that have launched successful products still have to be on the leading edge to stay afloat.  &#8221;Trying&#8221; on my calculus homework didn&#8217;t get me nearer to coming up with revolutionary solar technology or cars that drive themselves, but my grade told me that it did.  People take pride at staying late on a Friday to cap off that 60 hour week, as if their team got the benefit of having 1.5 employees for just 1 salary &#8211; highly misleading.</p>
<p>Try asking your boss if you can work on something that will provide more value to your customers.  See what they say.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/04/oh-but-you-worked-hard-on-it-i-dont-care/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>iPad First Impressions</title>
		<link>http://www.2bros1blog.com/2010/04/ipad-first-impressions/</link>
		<comments>http://www.2bros1blog.com/2010/04/ipad-first-impressions/#comments</comments>
		<pubDate>Wed, 21 Apr 2010 00:48:32 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Reviews]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[computing]]></category>
		<category><![CDATA[devices]]></category>
		<category><![CDATA[ipad]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=242</guid>
		<description><![CDATA[I haven&#8217;t had time to sit down one-on-one with an iPad until about an hour ago.  Luckily for me, NCSU&#8217;s library bought a bunch of them and are loaning them out to students for free.  This was especially good because it comes without the promo software that the devices in the store have, and it [...]]]></description>
			<content:encoded><![CDATA[<p>I haven&#8217;t had time to sit down one-on-one with an iPad until about an hour ago.  Luckily for me, <a href="http://www.ncsu.edu" target="_blank">NCSU&#8217;s library</a> bought a bunch of them and are loaning them out to students for free.  This was especially good because it comes without the promo software that the devices in the store have, and it wasn&#8217;t a friend&#8217;s personal device. Long story short, I could have my way with it and not feel guilty (or get arrested).</p>
<p>In the lead up to the iPad, Apple did its thing pimping the App Store as much as humanly possible &#8211; they even went as far as to make the iPad backward compatible with all existing iPhone applications.  You could even run them in &#8220;double pixel&#8221; mode to get it to run full screen.  Although this sounds great in theory, it was not at all what I had hoped for in terms of Apple-esque delivery.  On the contrary, the apps built specifically for iPad &#8211; 3rd party and by Apple &#8211; were fantastic in their visual experience and supreme leverage of the newfound touch screen real estate.  Observations are below.</p>
<p><strong>Good</strong></p>
<ul>
<li>SDK additions for new layout and program flow: the split column and &#8220;large view pane with small bar on side&#8221; approach both make for great experience with a large area for the important stuff and your necessary navigation always available.  <a href="http://www.pandora.com" target="_blank">Pandora</a> was fantastic, as was YouTube and other items like Settings and Address Book</li>
<li>Responsiveness: rotation, touch, swipe and pinch, everything worked well and worked more snappy than the 3GS.  Moving from an iPhone 2G to and iPhone 3GS yielded amazing results in overall experience &#8211; Apple has continued that with the iPad.</li>
<li>Gaming: I played one game called <a href="http://aurorafeint.com/" target="_blank">Aurora Feint</a> for about 5 minutes and was absolutely enthralled.  Hats off to the game developer of course, but there&#8217;s something to be said about the iPad fitting into a nice form factor with 100% touch screen.  Throw in stunning graphics and headphones and it&#8217;s a very inclusive gaming experience equal to that of a desktop computer.  If I ever get back into gaming it may just be on the iPad.</li>
</ul>
<p><strong>Bad</strong></p>
<ul>
<li>Typing: I&#8217;m not sure if I&#8217;ve yet to figure this out, but I now have iPhone and iPad both on my S-list for typing.  I&#8217;m still at the library and the kid across from me is typing like a fiend as if his iPad were a keyboard.  No clue how well he&#8217;s doing, but the lack of tactile response just plain sucked for me.  The sad part is that I don&#8217;t know how or even if this will be remedied anytime soon &#8211; we may be seeing the raw limitations of efficient human input.</li>
<li>Running iPhone-only apps: this just plain sucked as well.  It&#8217;s literally a (double-pixel)-ing done with software with no sense of what/where text is, attempt at graphics interpolation, etc.  They seem to have done it just say that &#8220;out of the box this thing runs 200,000 apps&#8221;.  I&#8217;m not surprised, just upset that it was way oversold.  Also, MapKit is broke in the <a href="http://www.transloc.com" target="_blank">Transloc</a> <a href="http://bit.ly/bU5xi5" target="_blank">App</a>.  Hopefully we&#8217;ll want to buy an iPad to fix this&#8230;</li>
<li>Ergonomics: it&#8217;s cumbersome to hold.  My only advice is to sit somewhere that you can prop your feet up with your knees highest in the air and rest it on your legs.  I was able to have it rest part on my legs and part on the edge of the table that I&#8217;m at to form a pretty little 45 degree angle.  My neck started to hurt after a little bit so I laid it flat on the table to use it after that.</li>
</ul>
<p>That is all.  I may buy one when the 3G version comes out in order to assess what we want to do with it in terms of Sound Around.  My biggest interest, though, is how much of a development machine (or tool) I can turn it into.  iPhone has been out for 3 years and hasn&#8217;t come up with anything to take the developer community by storm &#8211; I&#8217;m not going to make the same judgement for the iPad just yet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/04/ipad-first-impressions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Entrepreneur&#8217;s Conundrum &#8211; Personal Consumerism</title>
		<link>http://www.2bros1blog.com/2010/04/the-entrepreneurs-conundrum-personal-consumerism/</link>
		<comments>http://www.2bros1blog.com/2010/04/the-entrepreneurs-conundrum-personal-consumerism/#comments</comments>
		<pubDate>Mon, 12 Apr 2010 17:14:04 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=231</guid>
		<description><![CDATA[The past 9 months &#8211; especially the last 4 &#8211; have taught me a lot about how much of a lifestyle doing startups is.  In particular, the time and emotional requirements are enough to make even the most &#8220;hard working&#8221; techies flee back to their comfy IBM cubicle.  One unfortunate side effect of this time [...]]]></description>
			<content:encoded><![CDATA[<p>The past 9 months &#8211; especially the last 4 &#8211; have taught me a lot about how much of a <em>lifestyle</em> doing startups is.  In particular, the time and emotional requirements are enough to make even the most &#8220;hard working&#8221; techies flee back to their comfy IBM cubicle.  One unfortunate side effect of this time commitment is my gradual removal from needing to entertain myself or &#8220;kill time&#8221; &#8211; it just doesn&#8217;t happen anymore.  There&#8217;s way too much to do to be bored.  And, even for those times where I do need a break to be entertained, I&#8217;m doing something productive with people or a book &#8211; I&#8217;m not buying &#8220;things&#8221;.</p>
<p>Girls buy shoes and clothes, guys buy video games and lifted trucks, people who start companies bring sandwiches to their part time jobs so they can keep the development server up and running.  This removal from personal consumerism can be somewhat discouraging in so far as we&#8217;ll &#8220;miss the boat&#8221; or become too &#8220;disconnected&#8221; with how people are behaving and what trends the dollars are moving toward.  Just because I find entertainment in working on my company doesn&#8217;t mean that others will, in fact most of them don&#8217;t.  Also, my lack of consumerism doesn&#8217;t take away from the entertainment value provided by entrepreneurs like myself that are working toward providing something that the world will enjoy.  Regardless, my job is to figure out how to be enough of a participant to stay relevant, but be enough removed that I can effectively stay focused.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/04/the-entrepreneurs-conundrum-personal-consumerism/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Reflections on Boulder</title>
		<link>http://www.2bros1blog.com/2010/03/reflections-on-boulder/</link>
		<comments>http://www.2bros1blog.com/2010/03/reflections-on-boulder/#comments</comments>
		<pubDate>Mon, 08 Mar 2010 01:12:11 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Entrepreneurship]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=228</guid>
		<description><![CDATA[I loved Boulder. Steve loved Boulder. Boulder is amazing.  End of story.
This weekend was an absolute whirlwind of &#8220;data&#8221; points about our idea, the target market, team dynamics, future of the product &#8211; we talked about it all. We talked about it all with some of the brightest minds we&#8217;ve met to date. Raleigh [...]]]></description>
			<content:encoded><![CDATA[<p>I loved Boulder. Steve loved Boulder. Boulder is amazing.  End of story.</p>
<p>This weekend was an absolute whirlwind of &#8220;data&#8221; points about our idea, the target market, team dynamics, future of the product &#8211; we talked about it all. We talked about it all with some of the brightest minds we&#8217;ve met to date. Raleigh isn&#8217;t necessarily a breeding ground for software startup people; you can imagine our fascination with the warm tech scene that Boulder had to offer. They just get it.</p>
<p>We talked to a lot of teams at techstars for a day. Outside of the event the conversation was all with techstars grads and other people in the area recommended to us by these previous grads &#8211; mentors and locals who are heavily involved in the startup process. Their feedback was candid and very much appropriate for our situation and our outlook moving forward.</p>
<p>Our conclusion? We need to pivot.  Whether we pivot some or pivot completely is still up in the air, but the writing on the wall as we saw it this weekend is more than enough evidence for us to do some due diligence to switch gears.  We&#8217;ll continue to surround ourselves with people much smarter than us and make the most informed decision before we go back to flying by the seat of our pants.</p>
<p>Big thanks to everyone at Techstars and in Boulder who helped us out &#8211; Next Big Sound (David, Alex, Samir, Eric), Micah Baldwin, Ben Brinckerhoff, Tom Higley, Jason Mendelson, Seth Levine, David Cohen, Nicole Glaros (congrats on the baby!), Rob LaFave, and everyone else we met in passing.  You all left a great impression on us and are solid recruiters for keeping Boulder alive and thriving.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/03/reflections-on-boulder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>My Favorite Dev-Cycle So Far</title>
		<link>http://www.2bros1blog.com/2010/02/my-favorite-dev-cycle-so-far/</link>
		<comments>http://www.2bros1blog.com/2010/02/my-favorite-dev-cycle-so-far/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 14:56:34 +0000</pubDate>
		<dc:creator>steve</dc:creator>
				<category><![CDATA[Entrepreneurship]]></category>
		<category><![CDATA[Trends]]></category>
		<category><![CDATA[Web Technology]]></category>
		<category><![CDATA[dave mcclure]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[techstars]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=221</guid>
		<description><![CDATA[woot.
Complete graphics overhaul coming up. No more of this blah blah blah boring server side coding to be done.  For the next three weeks we are focusing almost exclusively on making the app and the website look better. Photoshop + XHTML + CSS + jQuery (more commonly known as the Devil) all day every day. [...]]]></description>
			<content:encoded><![CDATA[<p>woot.</p>
<p>Complete graphics overhaul coming up. No more of this blah blah blah boring server side coding to be done.  For the next three weeks we are focusing almost exclusively on making the app and the website look better. Photoshop + XHTML + CSS + jQuery (more commonly known as the Devil) all day every day. It&#8217;s interesting, the majority of the work that has to be done for this product will never be actually SEEN by the end user (tough cookies, Scott). On the same design note, we&#8217;re possibly taking on a co-founder this summer that will be focusing on design.</p>
<p>I keep thinking about a <a href="http://500hats.typepad.com/500blogs/2010/01/startups-vcs-eat-your-own-damn-dogfood.html">post</a> by <a href="http://twitter.com/davemcclure">Dave Mcclure</a> about the importance of design in consumer internet start ups. We really do need to put a lot more effort into making addicting user experiences if we want to be successful. I&#8217;m becoming more and more of a Dave fanboy as time goes on. I really like his writing style &#8211; very flow of conscious.</p>
<p>Final note: TechStars for a day. Holy bleeep.  Nuff said.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/02/my-favorite-dev-cycle-so-far/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Techstars for a Day</title>
		<link>http://www.2bros1blog.com/2010/02/techstars-for-a-day/</link>
		<comments>http://www.2bros1blog.com/2010/02/techstars-for-a-day/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 01:49:21 +0000</pubDate>
		<dc:creator>scott</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://www.2bros1blog.com/?p=219</guid>
		<description><![CDATA[The awesome people over at Techstars just sent us an invite to come to Techstars for a Day in March!  We&#8217;ll be flying out on Thursday the 4th and staying through Sunday.  Big thanks to the people at Next Big Sound for agreeing to house us for the nights that we will be there &#8211; [...]]]></description>
			<content:encoded><![CDATA[<p>The awesome people over at Techstars just sent us an invite to come to <a title="Techstars for a Day" href="http://www.techstars.org/techstars-for-a-day/" target="_blank">Techstars for a Day</a> in March!  We&#8217;ll be flying out on Thursday the 4th and staying through Sunday.  Big thanks to the people at <a href="http://www.nextbigsound.com" target="_blank">Next Big Sound</a> for agreeing to house us for the nights that we will be there &#8211; always appreciate being able to sleep on a floor if we don&#8217;t have to pay for hotel costs.  They seem like awesome guys and should be great resources for information about Boulder, Techstars, and being in a music startup.</p>
<p>On that note, if anyone finds it in their Giri to donate money to help offset the cost of plane tickets, we would gladly put up a huge plug for all 12 of our blog readers to see.</p>
<p>Also, if anyone reading this is also attending TSFAD, send me an email at scott@getsoundaround.com so that we can hook up while in Boulder for coffee.  I&#8217;d love to have a packed schedule while we&#8217;re there doing as much networking as possible.</p>
<p>See you in March.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.2bros1blog.com/2010/02/techstars-for-a-day/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
