<?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>Stay curious my friends</title>
	<atom:link href="http://startscratching.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://startscratching.com</link>
	<description></description>
	<lastBuildDate>Wed, 31 Aug 2011 04:50:26 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>What&#8217;s New in Rails 3.1.0?</title>
		<link>http://startscratching.com/2011/08/31/whats-new-in-rails-3-1-0/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=whats-new-in-rails-3-1-0</link>
		<comments>http://startscratching.com/2011/08/31/whats-new-in-rails-3-1-0/#comments</comments>
		<pubDate>Wed, 31 Aug 2011 04:48:49 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Tech Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=215</guid>
		<description><![CDATA[<p>At Gojee, we are running Rails 3.0.7.  Recently, we&#8217;ve been experimenting with the Sprockets, Coffeescript, and Sass.</p> <p>With tonight&#8217;s release of 3.1.0.  All of our experimentation will soon become fully compatible with mainstream Rails, since 3.1.0 comes with default support for JQuery, Sprockets, Coffeescript and Sass.</p> <p>I also found the following updates to 3.1.0 awesome [...]]]></description>
			<content:encoded><![CDATA[<p>At Gojee, we are running Rails 3.0.7.  Recently, we&#8217;ve been experimenting with the Sprockets, Coffeescript, and Sass.</p>
<p>With tonight&#8217;s release of 3.1.0.  All of our experimentation will soon become fully compatible with mainstream Rails, since 3.1.0 comes with default support for JQuery, Sprockets, Coffeescript and Sass.</p>
<p>I also found the following updates to 3.1.0 awesome and important.  For the full list go<a href="http://guides.rubyonrails.org/3_1_release_notes.html#action-controller"> here</a></p>
<p>&nbsp;</p>
<p>Reading up on some of the rails 3.1 features:</p>
<div>
<ul>
<li>HTTP Streaming, allowing a user&#8217;s browser to download Stylesheets and JS while the server is generating the response.</li>
</ul>
<ul>
<li>Default scopes are now evaluated at the latest possible moment, to avoid problems where scopes would be created which would implicitly contain the default scope, which would then be impossible to get rid of via Model.unscoped.</li>
</ul>
<ul>
<li>Support the <tt>:dependent</tt> option on <tt>has_many :through</tt> associations. For historical and practical reasons, <tt>:delete_all</tt> is the default deletion strategy employed by<tt>association.delete(*records)</tt>, despite the fact that the default strategy is <tt>:nullify</tt>for regular has_many. Also, this only works at all if the source reflection is a belongs_to. For other situations, you should directly modify the through association.</li>
</ul>
<ul>
<li>Migrations are now reversible, meaning that Rails will figure out how to reverse your migrations. To use reversible migrations, just define the <tt>change</tt> method.</li>
<li>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>
<div><code>class</code> <code>MyMigration &lt; ActiveRecord::Migration</code></div>
<div><code>  </code><code>def</code> <code>change</code></div>
<div><code>    </code><code>create_table(</code><code>:horses</code><code>) </code><code>do</code></div>
<div><code>      </code><code>t.column </code><code>:content</code><code>, </code><code>:text</code></div>
<div><code>      </code><code>t.column </code><code>:remind_at</code><code>, </code><code>:datetime</code></div>
<div><code>    </code><code>end</code></div>
<div><code>  </code><code>end</code></div>
<div><code>end</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</li>
<li>Migrations now use instance methods rather than class methods</li>
<li>
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div>
<div><code>class</code> <code>FooMigration &lt; ActiveRecord::Migration</code></div>
<div><code>  </code><code>def</code> <code>up </code><code># Not self.up</code></div>
<div><code>    </code><code>...</code></div>
<div><code>  </code><code>end</code></div>
<div><code>end</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</li>
</ul>
</div>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/08/31/whats-new-in-rails-3-1-0/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Caution with Authlogic Password Reset</title>
		<link>http://startscratching.com/2011/08/15/caution-with-authlogic-password-reset/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=caution-with-authlogic-password-reset</link>
		<comments>http://startscratching.com/2011/08/15/caution-with-authlogic-password-reset/#comments</comments>
		<pubDate>Mon, 15 Aug 2011 15:42:55 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Tech Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=212</guid>
		<description><![CDATA[<p>Over the past few weeks, we kept on having emails sent to us about how Gojee&#8217;s password reset was broken.  We kept on trying it on our side and couldn&#8217;t replicate the problem.  So we assumed that it was due to some peculiarity in those users&#8217; environments.  (Except.. of course it wasn&#8217;t and was due [...]]]></description>
			<content:encoded><![CDATA[<p>Over the past few weeks, we kept on having emails sent to us about how Gojee&#8217;s password reset was broken.  We kept on trying it on our side and couldn&#8217;t replicate the problem.  So we assumed that it was due to some peculiarity in those users&#8217; environments.  (Except.. of course it wasn&#8217;t and was due to our misunderstanding of how Authlogic perishable tokens worked).</p>
<p>This weekend, when two more emails came through, we decided to take another debugging approach and look at those users&#8217; activity logs.  That turned up something interesting. None of them had logged into the site for a while&#8230; (duhh!). To be more specific, they haven&#8217;t logged in for longer than our perishable token expiration period.</p>
<p>This got us thinking about what was really going behind the scenes with Authlogic perishable tokens.  How does Authlogic determine when the token expires?  Turns out, perishable token references the user.updated_at attribute to determine if it has expired.  Authlogic DOES NOT automatically manage expired tokens and reset them upon expiration, for good reason.</p>
<p><strong>So make sure to use a &#8220;user.reset_perishable_token!&#8221; before you send that password reset email</strong>.  Otherwise, users who haven&#8217;t logged in for a while, will be getting an expired password reset link.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/08/15/caution-with-authlogic-password-reset/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Resilience</title>
		<link>http://startscratching.com/2011/07/17/resilience/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=resilience</link>
		<comments>http://startscratching.com/2011/07/17/resilience/#comments</comments>
		<pubDate>Sun, 17 Jul 2011 23:33:23 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=209</guid>
		<description><![CDATA[<p>What an amazing demonstration of human spirits sports can be.</p> <p>How did the Japanese women&#8217;s soccer team (all 5&#8217;4&#8243; of them) beat the U.S. team (average height 5&#8217;7&#8243;) for the World Cup?</p> <p>The U.S. was clearly the more athletically talented team, but it was the Japanese who had the mental edge.  What else could explain [...]]]></description>
			<content:encoded><![CDATA[<p>What an amazing demonstration of human spirits sports can be.</p>
<p>How did the Japanese women&#8217;s soccer team (all 5&#8217;4&#8243; of them) beat the U.S. team (average height 5&#8217;7&#8243;) for the World Cup?</p>
<p>The U.S. was clearly the more athletically talented team, but it was the Japanese who had the mental edge.  What else could explain 3 missed penalty kicks for a U.S. team that was perfect just a week before?</p>
<p>In 120 minutes and 2 equalizer goals, the Japanese team showed their nation and the world what a gritty attitude and an indomitable will can bring.</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/07/17/resilience/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Many Ways I Failed as a First Year Entrepreneur</title>
		<link>http://startscratching.com/2011/07/02/the-many-ways-i-failed-as-a-first-year-entrepreneur/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=the-many-ways-i-failed-as-a-first-year-entrepreneur</link>
		<comments>http://startscratching.com/2011/07/02/the-many-ways-i-failed-as-a-first-year-entrepreneur/#comments</comments>
		<pubDate>Sat, 02 Jul 2011 04:26:00 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Startup Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=39</guid>
		<description><![CDATA[<p>How fast time flies.</p> <p>It&#8217;s been a full year since Mike and I officially started working on Gojee full-time.  I&#8217;d left a job I really enjoyed for the chance of accomplishing a dream I&#8217;ve had since childhood &#8212; starting my own company.  Team Gojee was ready to take on the world and nothing could stop [...]]]></description>
			<content:encoded><![CDATA[<p>How fast time flies.</p>
<p>It&#8217;s been a full year since Mike and I officially started working on Gojee full-time.  I&#8217;d left a job I really enjoyed for the chance of accomplishing a dream I&#8217;ve had since childhood &#8212; starting my own company.  Team Gojee was ready to take on the world and nothing could stop us.</p>
<p>&#8230;since then, I&#8217;ve been humbled many times over and made more mistakes than I can count on.  Want some examples?</p>
<ul>
<li>I showed my hand too early during vendor negotiations and probably cost us a few thousand dollars (<strong>take-away:</strong> keep your mouth shut and let the other guy name the price first)</li>
<li>I missed a train to an important business meeting and had to take a VERY-EXPENSIVE cab ride (<strong>take-away:</strong> keep 2 alarm clocks, and don&#8217;t think 2 hrs of sleep is going to be fine and you can just ride on adrenaline)</li>
<li>I had a heated skirmish with my cofounder right in front of our team and then had to admit I was wrong to everyone (<strong>take-away: </strong>take heated debates to a private setting, otherwise you run the risk of introducing doubt to your whole team)</li>
</ul>
<p>The past year has taught me real-world lessons that no business school class can teach and given me valuable skills that no 6-figure finance job can give.  The ones that left the most impression on me were the ones that challenged (and replaced) existing views and biases I previously had.</p>
<p>- <strong>Startup = 24&#215;7 Work (Wrong!).</strong> Working hard is important, working SMART is too.  For the first 6 months of Gojee, we worked 7 days a week, until 3AM on most days.  I didn&#8217;t do much sleeping and my programming/general intelligence was seriously degrading.  While people were always impressed that I could work so much, I wasn&#8217;t sure it was a good thing.  I soon realized sleeping 8 hrs a day and having some time off on weekends actually improved productivity and mood.  Try it, if you don&#8217;t believe me.</p>
<p>- <strong>We Can Be Leaders in Many Ways (Wrong). </strong>Leadership takes many forms, but that doesn&#8217;t mean it&#8217;s a license to choose.  I always believed in leading by example.  But as Gojee grew, I realized that it&#8217;s a very passive form of leadership (irony is thy name) and not exactly scalable.  An effective leader is vocal, persuasive, strategic, compassionate, tough, AND aware of the big picture. OR is not an option here.</p>
<p><strong>- Good Processes = Good Results (Wrong). </strong>Using methodologies like Agile, Scrum, Lean Startup can help a startup&#8217;s productivity. But there is no silver bullet.  Those methodologies can make a good team better, but they can&#8217;t make a bad team good.  In a small team format, people and culture outweighs process.  Find team members who care about the work they do AND have the right character traits.</p>
<p><strong>- Raise Money Only When You Need It (Wrong). </strong>When we raised our second financing round, we didn&#8217;t need the money, but Mike had a good argument for why we need it (it&#8217;s insurance money just in case our product didn&#8217;t gain market traction).  Am I glad we did it.  It turns out, we did have to pivot and the &#8220;insurance money&#8221; gave us the confidence and run-way to move in a new direction.  The startup world is risky, a good entrepreneur finds ways to derisk.</p>
<p>After 2 financing rounds, building our team to 7 people, launching a website (3 times&#8230;), I feel like the journey is just beginning.  I look forward to my mistakes and learning from them.</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/07/02/the-many-ways-i-failed-as-a-first-year-entrepreneur/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>What Every Entrepreneur Can Learn from the Mavs</title>
		<link>http://startscratching.com/2011/06/13/how-the-mavs-are-a-great-role-model-for-entrepreneurs/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-the-mavs-are-a-great-role-model-for-entrepreneurs</link>
		<comments>http://startscratching.com/2011/06/13/how-the-mavs-are-a-great-role-model-for-entrepreneurs/#comments</comments>
		<pubDate>Mon, 13 Jun 2011 04:06:22 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Startup Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=166</guid>
		<description><![CDATA[<p>I&#8217;ve never been a huge Dallas Mavericks fan.  To me, they weren&#8217;t exciting, they weren&#8217;t fun, and nothing about them stood out.  The truth is, I never really gave them a chance, because they were so unassuming.</p> <p>But somehow these Mavs are the NBA champions.  And the deserve that title.</p> <p>Watch <a href="http://www.nba.com/video/channels/playoffs/2011/06/10/0041000405_mia_dal_gm5_minimovie.nba">the mini-movies for [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve never been a huge Dallas Mavericks fan.  To me, they weren&#8217;t exciting, they weren&#8217;t fun, and nothing about them stood out.  The truth is, I never really gave them a chance, because they were so unassuming.</p>
<p>But somehow these Mavs are the NBA champions.  And the deserve that title.</p>
<p>Watch <a href="http://www.nba.com/video/channels/playoffs/2011/06/10/0041000405_mia_dal_gm5_minimovie.nba">the mini-movies for each Finals game</a> on NBA.com and you&#8217;ll see that this team is methodical, disciplined, and confident.  Every team they faced seemed stronger than them, but ultimately the Mav&#8217;s toughness won out.</p>
<p>Each of these opponents faltered due to a weak-link in team chemistry.</p>
<ul>
<li>The Lakers&#8217; Pau Gasol all but disappeared from the basketball court, leaving his teammates and coach exasperated</li>
<li>OKC&#8217;s Westbrook was heavily criticized for being a selfish point guard, while Durant seemed at times tentative and unready to take on the role of team leader.</li>
<li>For all their talents, Miami&#8217;s triumvirate seemed immature.  Lebron James shied away from his opportunities for greatness.  Dwayne Wade started the infamous &#8220;Cough Gate&#8221; giving Dallas extra incentive to win.  Chris Bosh&#8230; well he was quiet&#8230; too quiet.</li>
</ul>
<p>On the other hand, the Mavs role players stepped up at crucial times when their numbers were called.  Jason Terry, J.J Barea, Jason Kidd, Tyson Chandler, and Shawn Marion lightened the load off of their leader Dirk when the team needed it most.</p>
<p>In a league rich with stars, and against teams that are stacked with &#8220;talent&#8221;, Dallas proved that teamwork and define roles within a team can still win championships.</p>
<p>To all the aspiring entrepreneurs out there, I hope you&#8217;re building a team like the Mavs.  You&#8217;re hiring for attitude just as much as you&#8217;re hiring for aptitude, because it&#8217;s just as important that everyone on your team can be on the same wavelength, feast off of each other&#8217;s energy, and inspire each other.</p>
<p>Build a team that have heart and an identity, even if it is one that is &#8220;unassuming.&#8221;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/06/13/how-the-mavs-are-a-great-role-model-for-entrepreneurs/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How Gojee Threw Away Its Entire Codebase and Got to a Better Product, Faster</title>
		<link>http://startscratching.com/2011/05/27/writing-tests-when-does-it-make-sense-for-quick-prototyping/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=writing-tests-when-does-it-make-sense-for-quick-prototyping</link>
		<comments>http://startscratching.com/2011/05/27/writing-tests-when-does-it-make-sense-for-quick-prototyping/#comments</comments>
		<pubDate>Fri, 27 May 2011 17:00:36 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Startup Posts]]></category>
		<category><![CDATA[Tech Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=132</guid>
		<description><![CDATA[<p>Since March, Team Gojee Engineering (<a href="http://twitter.com/#!/eric_hummel">@eric_hummel</a>, <a href="http://twitter.com/#!/dhf2001">@dhf2001</a>, and I[<a href="http://twitter.com/#!/hetianye">@hetianye</a>]) have been heads down developing the new Gojee.  Using Rails 3 and plentiful pots of coffee, we were able to quickly develop a prototype.  After 3 months, we&#8217;re finally <a href="http://www.gojee.com">live</a>!</p> <p>This is a short story on how we decided to sacrifice TDD/BDD [...]]]></description>
			<content:encoded><![CDATA[<p>Since March, Team Gojee Engineering (<a href="http://twitter.com/#!/eric_hummel">@eric_hummel</a>, <a href="http://twitter.com/#!/dhf2001">@dhf2001</a>, and I[<a href="http://twitter.com/#!/hetianye">@hetianye</a>]) have been heads down developing the new Gojee.  Using Rails 3 and plentiful pots of coffee, we were able to quickly develop a prototype.  After 3 months, we&#8217;re finally <a href="http://www.gojee.com">live</a>!</p>
<p>This is a short story on how we decided to sacrifice TDD/BDD for development velocity in the face of uncertainty, and how we reintroduced testing when we felt the time was right.</p>
<p><strong>The Setting</strong><br />
Gojee hasn&#8217;t always been a recipe inspiration site, in fact, up until March 5, we were more of a data-centric site&#8230; that is until a late night conversation between Mike and I resulted in a memorable trip for Team Gojee to Soho Park where we announced the new direction of the company.</p>
<p>Because of the major shift in focus towards recipes, it rendered the old site essentially useless.  Everything from the user experience, to the design, and code had to be rethought and built from the ground up.  The engineering team decided to blow away our code base of 9 months and start everything from scratch.</p>
<p><strong>The Beginning</strong><br />
Thanks to the magic of Ruby on Rails, within 2 weeks, we had a functional prototype.  It was buggy and not ready for primetime, but it actually wasn&#8217;t too different than what we currently have.</p>
<p>For the next 8 weeks, the product team spent a lot of time refining the prototype&#8211;introducing add-on features, removing many of them, and in general writing and deleting much of the code base.</p>
<p>During those 10 weeks, we ignored writing any tests because of the high uncertainty on whether a feature would actually persist for more than a week.  We favored a quick release over developing 100% to spec, because we wanted the entire team to play around with the new features ASAP.</p>
<p><strong>The Problem</strong><br />
While the &#8220;no-testing&#8221; approach worked great to start, by the end of 10 weeks, releasing code without testing became a huge liability for everyone.  Everyone on the Gojee team from Engineering to Design to Marketing and Content was beginning to pay the price.  Without tests:</p>
<ul>
<li><strong>We had to rely on human testing.</strong> This was slow, imprecise, and a horrible drain on time.</li>
<li><strong>We didn&#8217;t find out about broken features until 2-3 deploys after they were initially introduced into the site.</strong> This made every team member a little nervous about each deploy.</li>
<li><strong>Debugging took a long time</strong> because we didn&#8217;t have spec tests to tell us where exactly the code was broken and we didn&#8217;t know when the bug was introduced into the codebase.</li>
</ul>
<p>When development had just started, the tech team had a ridiculous velocity and benefitted from the lack of test. By the tenth week, our velocity was significantly crippled by the extra time we spent debugging.</p>
<p>The worst part was that people were beginning to doubt the quality of work by the engineering team.  Dan, Eric, and I pride ourselves in the quality of work we do. To get such feedback was devastating.</p>
<p><strong>We had to do something </strong>because any level of distrust within a team can be detrimental to its performance.</p>
<p><strong>The Solution</strong><br />
To find a solution, we took a step back and surveyed our effort.  What we saw was:</p>
<ul>
<li>There was a core set of features that was considered &#8220;stable&#8221;</li>
<li>The site has gone from doing 1 thing (showing recipe pictures) to doing many things (invitation, account setting, educating users, etc&#8230;)</li>
<li>New features that were in the pipeline, interacted with many parts of the site, meaning side affects will only get worse</li>
</ul>
<p>All signs pointed to the need to start testing.  We decided to first catch up on tests that are missing and then shift to test driven development (TDD) as features become more stable. So we took a week&#8217;s time to catch up on our technical debt.  We implemented Cucumber for feature tests, RSpec for unit tests, and Jasmine for JS tests.</p>
<p><strong>The Results</strong></p>
<p>While our test suite isn&#8217;t perfect all the time, we&#8217;ve already started reaping the reward of having them.  Just this week, we found a bug that we otherwise wouldn&#8217;t have discovered.   The rest of the Gojee team, now spend more time on their real jobs rather than as human guinea pigs.  More importantly, we&#8217;ve earned back some of the trust from the rest of our team.</p>
<p>While I don&#8217;t think we had the perfect development process.  I feel like forsaking test for development speed was the right decision for us, because of how uncertain we were of the final form of Gojee 3.0.  It allowed us to prototype fast and experiment with many different variations of features.  We were less hesitant to blow away code, because we spent the absolute minimal amount of time writing them.  However, as our code got more complicated, the design specifications became more complex, and the team&#8217;s time began to get weighed down by manual testing.  At that point, it made all the sense in the world to begin introducing tests.</p>
<p>We are not TDD yet, but we probably will be soon.  Now that we&#8217;re beginning to make incremental changes that don&#8217;t change from day-to-day, it makes sense.  I&#8217;m not sure we&#8217;ll ever be full BDD, that&#8217;ll depend on things that I can&#8217;t predict.</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/05/27/writing-tests-when-does-it-make-sense-for-quick-prototyping/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Testing Hover Features with Cucumber</title>
		<link>http://startscratching.com/2011/05/17/testing-hover-features-with-cucumber/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=testing-hover-features-with-cucumber</link>
		<comments>http://startscratching.com/2011/05/17/testing-hover-features-with-cucumber/#comments</comments>
		<pubDate>Tue, 17 May 2011 15:46:56 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Tech Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=138</guid>
		<description><![CDATA[<p>To test &#8220;hover&#8221; state in cucumber, we were previously using &#8220;When I click an &#60;element&#62;&#8221;, but then we made clicking and hover have different behaviors and that broke a bunch of tests.</p> <p>After some unfruitful searches, I found the .mouseover() event in Jquery, and came up with the follow step for testing mouseover events.</p> <p>When [...]]]></description>
			<content:encoded><![CDATA[<p>To test &#8220;hover&#8221; state in cucumber, we were previously using &#8220;When I click an &lt;element&gt;&#8221;, but then we made clicking and hover have different behaviors and that broke a bunch of tests.</p>
<p>After some unfruitful searches, I found the .mouseover() event in Jquery, and came up with the follow step for testing mouseover events.</p>
<blockquote><p>When /^I hover over &#8220;([^"]*)&#8221;$/ do |selector|<br />
&nbsp;&nbsp;&nbsp;&nbsp;page.execute_script(&#8220;$(&#8216;#{selector}&#8217;).mouseover();&#8221;)<br />
end</p></blockquote>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/05/17/testing-hover-features-with-cucumber/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>A Simple Trick for Repeating Cucumber Steps</title>
		<link>http://startscratching.com/2011/05/13/a-simple-trick-for-repeating-cucumber-steps/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=a-simple-trick-for-repeating-cucumber-steps</link>
		<comments>http://startscratching.com/2011/05/13/a-simple-trick-for-repeating-cucumber-steps/#comments</comments>
		<pubDate>Fri, 13 May 2011 04:31:28 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Tech Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=135</guid>
		<description><![CDATA[<p>After 8 weeks of development, we finally started writing tests for Gojee 3.0 this week!</p> <p>It took us this long because we weren&#8217;t sure what features would stick around.  3.0 is a completely different experience than the previous site, and we literally wrote all of the code from the ground up (&#8230; or at least [...]]]></description>
			<content:encoded><![CDATA[<p>After 8 weeks of development, we finally started writing tests for Gojee 3.0 this week!</p>
<p>It took us this long because we weren&#8217;t sure what features would stick around.  3.0 is a completely different experience than the previous site, and we literally wrote all of the code from the ground up (&#8230; or at least 99% of it).</p>
<p>Living without tests initially helped us get a very fast velocity, but by the end really slowed us down due to the long time spent debugging untested code.  So it felt really good to have a week to catch up on some serious technical debt.</p>
<p>We are primarily using three testing suites.  Jasmine for Javascript,  Cucumber for Rails Feature Testing, and RSpec for Rails Unit Testing.  Today, as I was writing a cucumber test, I found the need to repeat a Cucumber step quite a few times (e.g. clicking a right arrow on the page 20 times).</p>
<p>I did a quick google search and couldn&#8217;t find any code that allowed me to repeat a Cucumber step X times.  So I made my own.</p>
<p>Under &#8216;features/step_definitions&#8217;, we have a &#8216;common_steps.rb&#8217;.  I added the following step definition:</p>
<blockquote><p>When /^([^"]*) ([0-9]*) times$/ do |step, number|<br />
&nbsp;&nbsp;&nbsp;&nbsp;number.to_i.times { When step }<br />
end</p></blockquote>
<p>Hope somebody else finds this useful!</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/05/13/a-simple-trick-for-repeating-cucumber-steps/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Four Ways That Gojee Recruits For Talent</title>
		<link>http://startscratching.com/2011/05/02/how-to-recruit-for-your-startup/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=how-to-recruit-for-your-startup</link>
		<comments>http://startscratching.com/2011/05/02/how-to-recruit-for-your-startup/#comments</comments>
		<pubDate>Mon, 02 May 2011 04:17:21 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Startup Posts]]></category>
		<category><![CDATA[hiring startups]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=126</guid>
		<description><![CDATA[<p>Chris Dixon recently wrote a nice piece on the importance of just &#8220;showing up&#8221; when recruiting talent.  His view is that talent is out there, you just have to look harder than everyone else.</p> <p>He&#8217;s absolutely right.</p> <p>When Mike and I started Gojee a year ago, we knew we needed to recruit design and technical [...]]]></description>
			<content:encoded><![CDATA[<p><!-- p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica} p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px} li.li1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica} ul.ul1 {list-style-type: disc} -->Chris Dixon recently wrote a nice piece on the importance of just &#8220;showing up&#8221; when recruiting talent.  His view is that talent is out there, you just have to look harder than everyone else.</p>
<p>He&#8217;s absolutely right.</p>
<p>When Mike and I started Gojee a year ago, we knew we needed to recruit design and technical talent ASAP.  We asked startup veterans what they found to be the best way to recruit talent, but found no consensus.  So we decided to just leave no stone unturned.</p>
<p>Here&#8217;s what we did.</p>
<ul>
<li>We scoured LinkedIn for potential candidates and used InMail for outreach (Mike literally spent weeks doing this).</li>
<li>We went to design and tech meetups on a regular basis (Every week)</li>
<li>I posted our Engineering job description on as many Ruby job lists as I could</li>
<li>We hosted a hackathon</li>
<li>We asked for referrals every chance we got</li>
</ul>
<p>It took a good 4 months to fill the Gojee team to the 9 people we are now.  Each method we tried brought us new leads, and we interviewed incessantly (~1-2 people a week).</p>
<p>The most successful measure we tried also required the least effort.  We tapped into our existing network.  Four of the team members we recruited were friends with existing Gojee team members before they joined Gojee.  I&#8217;m a huge fan of referrals (especially from current team members) because 1) there is a strong quality guarantee and 2) there&#8217;s almost no chance of cultural fit problems.  Not all referrals are the same by the way, I prefer &#8220;I&#8217;ve worked with&#8230;&#8221; rather than just &#8220;I know a friend&#8230;&#8221;</p>
<p>LinkedIn turned out to be the best external resource for us.  We hired four people from there as well.  It&#8217;s important to note, even though LinkedIn and our &#8220;network&#8221; both yielded four team members, the effort it took to narrow down the field to the final four was significantly higher using LinkedIn.  But when you need talent, you should try everything possible regardless of the amount of effort.</p>
<p>The last measure that yielded real results was simple brute force job postings.  Dan, our co-lead Engineer, happen to have ran into a job posting I made on http://jobs.rubynow.com/.  There is an art to the Job Posting that really deserves its own post, so I won&#8217;t go into it here.</p>
<p>Meetups actually didn&#8217;t yield any short-term hireable candidates for us, but I think they do provide a great place for expanding/collecting contacts in an area that the entrepreneur isn&#8217;t familiar with.  They helped us get to know other design/tech/marketing professionals in the NYC startup scene.</p>
<p>At the end of the day, I don&#8217;t think there is a sure-fire way to hire for early stage startups.  The key is to be consistently on the look out and keep in touch with any great talent you happen to meet, even if you&#8217;re not looking.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/05/02/how-to-recruit-for-your-startup/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Social Media is NOT a fad, It&#8217;s the Future</title>
		<link>http://startscratching.com/2011/02/21/social-media-is-not-a-fad-its-the-future/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=social-media-is-not-a-fad-its-the-future</link>
		<comments>http://startscratching.com/2011/02/21/social-media-is-not-a-fad-its-the-future/#comments</comments>
		<pubDate>Mon, 21 Feb 2011 07:15:59 +0000</pubDate>
		<dc:creator>Tian</dc:creator>
				<category><![CDATA[Startup Posts]]></category>

		<guid isPermaLink="false">http://startscratching.com/?p=91</guid>
		<description><![CDATA[<p>For a while now, everyone in the tech world has been talking about the social media bubble (citing the $10bn valuation on Twitter, $35bn valuation on Facebook).  Up until a week ago, I would have fallen in that camp (even though I co-founded a social media startup), but now I am almost certain these companies [...]]]></description>
			<content:encoded><![CDATA[<p>For a while now, everyone in the tech world has been talking about the social media bubble (citing the $10bn valuation on Twitter, $35bn valuation on Facebook).  Up until a week ago, I would have fallen in that camp (even though I co-founded a social media startup), but now I am almost certain these companies are undervalued.  My reason is simple&#8230; social proof.</p>
<p>I&#8217;m talking about Egypt.</p>
<p>It seems like a week ago, everyone, everywhere was talking about the recent events in Egypt.  People often referred to what transpired over the 21 day period as &#8220;remarkable&#8221;.</p>
<p>I think that&#8217;s on par as describing Anthony Bourdain as a &#8220;good&#8221; cook, or Apple as an &#8220;ok&#8221; design company, or Michael Jordan as a &#8220;decent&#8221; basketball player.</p>
<p><strong>IMHO, the social revolution of 2011 is THE most impactful event to occur in the first ~10 years of the 21st Century.  It is also the marque event that is going to affect what happens in the world in the next 90 years. </strong></p>
<p>Up until now, many people place 9/11 as the most important event of 21st century.  The Egyptian Revolution of 2011 is magnitudes larger of importance than 9/11 because of the revolution&#8217;s profound impact on the fundamental laws of sovereign governance.</p>
<p><strong>Think about these events<br />
1776</strong>, <strong>the Declaration of Independence</strong> establishes the first democracy in the world.<br />
<strong>1848</strong>, <strong>the Communist Manifesto</strong> unleashes the idea of an egalitarian society in answer to the growingly restless peasant/servant classes of the world.<br />
<strong>1919</strong>,<strong> the Fascist Manifesto</strong> establishes fascism as a new form of extreme government.</p>
<p>Each century in the past 300 years has been marked by the rise of a new form of government that profoundly impacts the course of human history.  In our century, in our life-time, I believe the beginning of a new era will be marked by &#8220;The Egyptian Revolution of 2011&#8243;.</p>
<p>It marks the beginning of a new form of sovereign governance that leaves traditional representational democracies in the dust.  This new form of governance, enabled by the advancement of communication technology such as the cell phone, internet, and social media, gives citizens the power to directly AND IMMEDIATELY involve themselves in government decision WITHOUT going through any formal regulatory/legislative process.</p>
<p>We&#8217;ve seen this before in religion.  Martin Luther&#8217;s 95 Theses (1517) took down the Powerful Roman Catholic church.  And the spread of Protestanism over continental Europe couldn&#8217;t have happened without the invention of the moveable type 77 years earlier (1440).</p>
<p><strong>Real-time internet and social media is the modern moveable type</strong>. They are going to change our lives beyond just how we search for information, shop for books, or make friends.  It is going to affect the very way we govern and make large-scale decisions affecting millions of people at a time.</p>
<p>The voices of the Egyptian youths gave proof to the fantastic power of social media and it signaled the beginning of the convergence of technology and government.</p>
<p>What technological advances will accelerate this new form of real-time governance?  I don&#8217;t know&#8230; maybe something related to <a href="http://www.squidoo.com/BrainWaveReader">brain-wave scanners</a> or live real-time polling with your cell phone?  Regardless of the form of technology, social media will be extensively involved.</p>
<p>Facebook is quickly becoming the platform for publishing/distributing social media, while Twitter is a crucial communication medium for the real-time web.  These two companies will constantly be touching everyone&#8217;s lives (directly and indirectly).</p>
<p>I wasn&#8217;t a believer in Twitter when I first saw it in 2007, @jrlevine can attest to that, but I am now.  There is a strong and clear value proposition for it, even if its business model has not caught up.</p>
<p>Social media is NOT a fad or a trend, it is here to stay.</p>
<p>The trick is for investors and entrepreneurs to pick the right horse.  The one lesson we can apply from the the Dot Com Bust and the Financial Bubble is don&#8217;t try to fit everything you know to the current hot topic.  Just like not everything can be a success by being online, or everything can be loaned against, not everything is conducive to Social Media (&#8230; did I hear someone say Hashable?) .</p>
<p>In the case of Facebook and Twitter, they are the best of breed. If you believe in social media, then you should believe in their future.</p>
]]></content:encoded>
			<wfw:commentRss>http://startscratching.com/2011/02/21/social-media-is-not-a-fad-its-the-future/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

<!-- Dynamic page generated in 0.569 seconds. -->
<!-- Cached page generated by WP-Super-Cache on 2012-05-20 06:12:59 -->

