<?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>Philip Jacob / Whirlycott</title>
	<atom:link href="http://www.whirlycott.com/phil/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.whirlycott.com/phil</link>
	<description>Philip Jacob's web page</description>
	<lastBuildDate>Sun, 12 May 2013 00:11:21 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Recover Authorize.net credentials from a Magento installation</title>
		<link>http://www.whirlycott.com/phil/2012/08/26/recover-authorize-net-credentials-from-a-magento-installation/</link>
		<comments>http://www.whirlycott.com/phil/2012/08/26/recover-authorize-net-credentials-from-a-magento-installation/#comments</comments>
		<pubDate>Mon, 27 Aug 2012 00:48:40 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[General]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2503</guid>
		<description><![CDATA[In case you ever find yourself trying to recover an Authorize.net API login and transaction key from a Magento installation, you&#8217;re in the right place.  What makes this slightly more difficult than reading a value from a config file is &#8230; <a href="http://www.whirlycott.com/phil/2012/08/26/recover-authorize-net-credentials-from-a-magento-installation/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In case you ever find yourself trying to recover an Authorize.net API login and transaction key from a Magento installation, you&#8217;re in the right place.  What makes this slightly more difficult than reading a value from a config file is that Magento Enterprise encrypts the values.  So this is how to decrypt them.</p>
<p>First off, find the login and trans_key in the database for your Magento installation:</p>

<div class="wp_syntax"><div class="code"><pre class="sql" style="font-family:monospace;"><span style="color: #993333; font-weight: bold;">SELECT</span> <span style="color: #993333; font-weight: bold;">VALUE</span> <span style="color: #993333; font-weight: bold;">FROM</span> core_config_data <span style="color: #993333; font-weight: bold;">WHERE</span> path <span style="color: #993333; font-weight: bold;">IN</span> <span style="color: #66cc66;">&#40;</span><span style="color: #ff0000;">&quot;payment/authorizenet/login&quot;</span><span style="color: #66cc66;">,</span> <span style="color: #ff0000;">&quot;payment/authorizenet/trans_key&quot;</span><span style="color: #66cc66;">&#41;</span>;</pre></div></div>

<p>Next, use this code to decrypt the values (the values I&#8217;ve provided below are fake):</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #666666; font-style: italic;">/* Substitute appropriate Mage path: */</span>
<span style="color: #b1b100;">require_once</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;/path/to/Mage.php&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
Mage<span style="color: #339933;">::</span><span style="color: #004000;">app</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>setCurrentStore<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$hlp</span> <span style="color: #339933;">=</span> Mage<span style="color: #339933;">::</span><span style="color: #004000;">helper</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'core'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">echo</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$hlp</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>decrypt<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;0:2:31cd17ea0becc0:d67642b7da2fab==&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$hlp</span><span style="color: #339933;">-&amp;</span>gt<span style="color: #339933;">;</span>decrypt<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;0:2:c4b2ee0255d1a5:abc06b1bcb3394==&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">.</span> <span style="color: #0000ff;">&quot;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2012/08/26/recover-authorize-net-credentials-from-a-magento-installation/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Pinterest and copyright</title>
		<link>http://www.whirlycott.com/phil/2012/03/07/pinterest-and-copyright/</link>
		<comments>http://www.whirlycott.com/phil/2012/03/07/pinterest-and-copyright/#comments</comments>
		<pubDate>Thu, 08 Mar 2012 03:21:38 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2498</guid>
		<description><![CDATA[There&#8217;s a little flare-up going on over at Hacker News over a blog post about Pinterest&#8217;s TOS (dated March 29, 2011, which I note only in case it materially changes in the future).  Most of the comments on HN are infuriating &#8230; <a href="http://www.whirlycott.com/phil/2012/03/07/pinterest-and-copyright/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>There&#8217;s a little <a href="http://news.ycombinator.com/item?id=3677393">flare-up going on</a> over at Hacker News<a href="http://whatblag.com/2012/03/07/pinterest-we-have-a-problem/"> over a blog post</a> about Pinterest&#8217;s <a href="http://pinterest.com/about/copyright/">TOS</a> (dated March 29, 2011, which I note only in case it materially changes in the future).  Most of the comments on HN are infuriating because the staggering level of naivete of the top voted comments is greater than normal.</p>
<p>So Pinterest has a TOS doc.  People are starting to pay attention because Pinterest is getting really, really, <em>really</em> big.  The theme of many of the HN comments is that this is typical cover-your-ass boilerplate language and that it&#8217;s totally normal, so therefore just shut up and accept it.  This is nothing more than teenage peer pressure logic applied to what is possibly the hottest Internet startup in the country right now.</p>
<p>In other words, time to start focusing on it a bit more.</p>
<p>I actually care a lot about terms of service and how users interact with them.  And while I have lot of respect for what Pinterest has built (and have learned a few things from studying them), TOS and copyright are areas that we spent a lot of time working on at StyleFeeder in conjunction with our legal counsel and advisors (including one world-renowned expert in copyright law).  By contrast, here&#8217;s the relevant portion of StyleFeeder&#8217;s pre-acquisition TOS that I happen to have in an old file on my laptop.</p>
<p>This, people, is how to write a TOS that allows the business to function with flexibility and protection yet doesn&#8217;t overreach <strong>(bold text is mine).  </strong></p>
<p style="padding-left: 30px;"><strong>3. User-Posted Content.</strong></p>
<p style="padding-left: 30px;">StyleFeeder depends on the content that you post. In fact, that&#8217;s the whole point of the Site. While we encourage you to add links to great products and to post your profiles and reviews, some content just isn&#8217;t appropriate for the Site, including, but not limited to, links to illegal or counterfeit items or sexually-explicit, racist, or vulgar content. While we have no obligation to monitor use of the Site, we do reserve the right to review, modify and/or remove content, for example, content found offensive by other users or content found to be illegal.<br />
&#8230;<br />
StyleFeeder is not responsible for the manner or circumstances by which third parties may access such public content and is under no obligation to disable or otherwise restrict this access, although we reserve the right to do so when we deem appropriate. <strong>By posting such items, information, messages and comments in a public area, you are granting permission to us to use, display, modify, distribute and otherwise exploit such items, information, messages and comments in connection with the Site and otherwise in connection with our business.</strong></p>
<p style="padding-left: 30px;"><strong>9. Copyrights.</strong></p>
<p style="padding-left: 30px;">StyleFeeder-posted content included on the Site, such as text, graphics, logos, data compilations, APIs, software and the compilation of all content on the Site, is the property of StyleFeeder and its licensors, and is protected by United States and international copyright laws. <strong>StyleFeeder makes no claim to third-party content that is rightfully posted on the Site.</strong></p>
<p>Notice that this language is markedly tighter than what Pinterest currently chooses to use.  I wish Pinterest put the same level of thought and innovation into their TOS as they did with their product.</p>
<p>PS Also note that imgur&#8217;s <a href="http://imgur.com/tos">TOS</a> doesn&#8217;t overreach.  <a href="http://en.wikipedia.org/wiki/IANAL">IANAL</a> so perhaps it&#8217;s not as good, but my reading of it is that it is philosophically very different from that of Pinterest.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2012/03/07/pinterest-and-copyright/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to organize your CDN hostnames</title>
		<link>http://www.whirlycott.com/phil/2012/02/29/how-to-organize-your-cdn-hostnames/</link>
		<comments>http://www.whirlycott.com/phil/2012/02/29/how-to-organize-your-cdn-hostnames/#comments</comments>
		<pubDate>Wed, 29 Feb 2012 21:38:31 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2490</guid>
		<description><![CDATA[I&#8217;ve used the following scheme to manage my hostnames on CDNs for the past few years and I find that it is particularly clean and easy to work with.  While the general scheme I propose here has no ties to &#8230; <a href="http://www.whirlycott.com/phil/2012/02/29/how-to-organize-your-cdn-hostnames/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I&#8217;ve used the following scheme to manage my hostnames on CDNs for the past few years and I find that it is particularly clean and easy to work with.  While the general scheme I propose here has no ties to any software platform, framework or CDN, I think it would be quite cool if Web framework designers built in support for this.  That being said, I&#8217;ve done this on two Java sites and one Rails site using a range of CDNs from Akamai to Amazon.  This is simple, so follow along.</p>
<p>All of your CDN hostnames will follow this scheme:</p>
<pre style="padding-left: 30px;">type-serial.environment.something.tld</pre>
<p>The components are:</p>
<ol>
<li><strong>type</strong>: typical values include jscss, product-image, avatar.  Basically, you put a whole class of content on one hostname.  Sometimes these divisions are artificial, based on performance or based on architecture.  For example, you may keep your product images (if you run an e-commerce site) inside a big S3 bucket that you want to front with a CDN.  You may want your Javascript and CSS served off of one host.  Anyway, this is your chance to make functional groupings.</li>
<li><strong>serial</strong>: You start with 0.  If you have a website that tends to present many images on one page, it can be beneficial to serve the same images off of several hostnames for performance reasons.  It&#8217;s also useful to have a serial field in case you migrate from one CDN provider to another since you can just bump up the serial number during the migration.  These are nuances, so I will come back to this shortly.  But if you run a small site, the value for &#8216;serial&#8217; is 0.</li>
<li><strong>environment</strong>: typical values correspond to dev, integration, qa, staging or prod.  You will have your own names for these; obviously, you will want to use your own terminology.</li>
<li><strong>something.tld</strong>: generally, it is a good idea to serve your CDN accelerated assets from a domain name that is different to your main website.  For example, if your site is www.something.com, you should buy another domain like something-static.net.  There are a few reasons for this, but generally you neither need nor want your HTTP cookies being sent to your CDN hosts because this is normally not necessary for serving up static files that don&#8217;t differ from one visitor to another.  There are also security benefits (in case a host on your CDN&#8217;s network gets cracked) and performance (unnecessary HTTP overhead sending useless cookies).</li>
</ol>
<p>And that&#8217;s it.</p>
<p>When you put it all together, you might end up with something like this for your production hostnames (I&#8217;ll use this domain, whirlycott.com as the example site):</p>
<pre>jscss-0.prod.whirlycdn.net
avatars-0.prod.whirlycdn.net
blog-images-0.prod.whirlycdn.net</pre>
<p>Your dev, qa and staging hostnames are easy to guess from this scheme, so I shall avoid repeating them.</p>
<p>I mentioned a nuance in relation to the serial number field.  If you find yourself in a position where you are generating web pages that have lots of, say, images, you can split up your content across multiple hostnames quite easily:</p>
<pre>product-images-0.prod.foocdn.net
product-images-1.prod.foocdn.net
product-images-2.prod.foocdn.net</pre>
<p>The advantage here is that your browser will typically download from multiple hostnames faster than from a single hostname (don&#8217;t go crazy with this and generate a hundred hostnames).  Of course, you do incur an extra DNS lookup, so you have to consider that.  When you are generating the serials for your assets, I recommend generating the same serial number (and therefore a consistent hostname) for a given piece of content.  If you have a website with pictures of butterflies, you might have a bunch of jpegs served like this  (note the alternating serial numbers):</p>
<pre>http://animal-pics-0.prod.mycdn.net/blue-butterfly.jpg

http://animal-pics-1.prod.mycdn.net/green-butterfly.jpg


http://animal-pics-0.prod.mycdn.net/red-butterfly.jpg


http://animal-pics-1.prod.mycdn.net/yellow-butterfly.jpg</pre>
<p>If you have fifty photos per page on your site, you should ideally generate the same hostname for each image to improve cacheability (there may also be some tangential benefits for Google image search).  Let&#8217;s say you want browsers to download animal-pics from two hostnames.  In this case, use a standard hash/mod approach to generate a gaussian distribution of your assets across your two hostnames.  Note that you will need to do this server-side.  In python, you&#8217;d do it like this:</p>
<pre>&gt;&gt;&gt; import hashlib
&gt;&gt;&gt; hash = hashlib.sha1()
&gt;&gt;&gt; hash.update("blue-butterfly.jpg")
&gt;&gt;&gt; result = hash.hexdigest()
&gt;&gt;&gt; result
'775da2f0b764b712b7c3615f479794e0095cc8ce'
&gt;&gt;&gt; serial = int(result, 16) % 2
&gt;&gt;&gt; serial
0L
&gt;&gt;&gt;</pre>
<p><a href="http://en.wikipedia.org/wiki/SHA-1">SHA1</a> returns a 160-bit integer.  Python will handle large numbers for you automatically.  In Java, you have to use a <a href="http://docs.oracle.com/javase/1.5.0/docs/api/java/math/BigInteger.html">BigInteger</a> and <a href="http://commons.apache.org/codec/apidocs/org/apache/commons/codec/digest/DigestUtils.html">DigestUtils</a> to coax it into something you can do actual math with.  In this case, for the blue-butterfly.jpg, the correct serial is 0.  If you repeat this test on your python repl using &#8220;green-butterfly.jpg&#8221;, you will notice that the serial number is 1.</p>
<p>What I like about this layout is that it scales well, is easy to understand, easy to debug and simple to implement.  You do, however, end up with a proliferation of hostnames, but if you are successful, you will want something closely resembling this, so take the extra hour to set up your site the right way.  I like to avoid doing the same thing twice.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2012/02/29/how-to-organize-your-cdn-hostnames/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Contractor agreements</title>
		<link>http://www.whirlycott.com/phil/2011/09/26/contractor-agreements-nda-piia/</link>
		<comments>http://www.whirlycott.com/phil/2011/09/26/contractor-agreements-nda-piia/#comments</comments>
		<pubDate>Mon, 26 Sep 2011 20:31:00 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2486</guid>
		<description><![CDATA[As part of the diligence process when we sold StyleFeeder to Time Inc. last year, I had to come up with a detailed list of all (yes, all) contracts that the company had executed.  To my surprise, this amounted to &#8230; <a href="http://www.whirlycott.com/phil/2011/09/26/contractor-agreements-nda-piia/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>As part of the diligence process when we sold StyleFeeder to Time Inc. last year, I had to come up with a detailed list of all (yes, all) contracts that the company had executed.  To my surprise, this amounted to several <em>hundred</em> agreements that I had executed with employees, affiliates, hosting partners and &#8211; something relevant to this discussion &#8211; contractors.  Imagine my culture shock when I wandered into Time Inc. in a post-acquisition haze and expected to sign contracts on my own and was instead shown the laborious process required to get something simple signed.  Normal trajectory for getting something signed frequently took a whole month (yes, in the Gregorian calendar!  I know!).</p>
<p>Previously, whenever I wanted to onboard a contractor, we would simply whip out our template legal docs (which I shall come back to in a moment), fill in a few blanks, get the contractor and me to execute it and then file it away in our filing cabinet.  It wasn&#8217;t until later that I realized how critical this ability was to our success.</p>
<p><a href="https://secure.flickr.com/photos/alex_ford/4121621598/"><img class="alignnone" title="CC: Alex Ford" src="https://farm3.static.flickr.com/2553/4121621598_7a71a6e31d.jpg" alt="" width="500" height="375" /></a></p>
<p>Sometimes you need a designer.  Or an iconographer.  Or a developer.  Or whatever.  It should be easy to bring that person on for a week or a year to help make your project successful.  It should not require any effort as effort is a chilling effect.  You should also empower people to make these decisions and expand and contract your team as necessary.</p>
<p>I signed 18 contractor agreements with people or companies that did work for StyleFeeder.  Most were designers or developers and were located all over the place, from a few blocks away to Maryland to Brazil to far-flung corners of Canada to Romania.  Bringing someone on board took maybe five minutes, but consisted of a few key agreements:</p>
<ol>
<li><strong>NDA</strong> &#8211; a standard mutual nondisclosure agreement that says you won&#8217;t convey information about the gig to anybody</li>
<li><strong>PIIA</strong> &#8211; a proprietary information and inventions agreement that assigns all the IP and ownership of the work the contractor does to the company</li>
</ol>
<p>We had four agreements based on whether the entity was an individual, a company and their location (either inside our outside the US).  Our law firm, Gunderson Dettmer, made this really practical for us.  The agreements were reasonable, short and simple and were never met with any objection by any of the parties we did work with.  The fact that these docs were simple and easy to process gave me great confidence that everything we were doing was done properly as there was precious little that a competent person could screw up.</p>
<p>If you&#8217;re starting a company, be sure to ask your legal counsel for docs like these as there are a few nuances that you should be aware of (entities in Quebec, for example).  And if you&#8217;re managing a company, insist with iron-fisted stubbornness that every contractor sign the docs and that they are stored in your filing cabinet.  If you&#8217;re lucky, a grey corporate lawyer will come along and ask you for them some day.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2011/09/26/contractor-agreements-nda-piia/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>StyleFeeder: a retrospective</title>
		<link>http://www.whirlycott.com/phil/2011/08/05/stylefeeder-history/</link>
		<comments>http://www.whirlycott.com/phil/2011/08/05/stylefeeder-history/#comments</comments>
		<pubDate>Sat, 06 Aug 2011 03:42:21 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2444</guid>
		<description><![CDATA[I haven&#8217;t said much publicly about the acquisition of StyleFeeder by Time Inc. for various reasons, but perhaps it&#8217;s worth spending a few moments on this topic.  First, vital statistics: $4M invested from Schooner Capital and Highland Capital Partners along &#8230; <a href="http://www.whirlycott.com/phil/2011/08/05/stylefeeder-history/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I haven&#8217;t said much publicly about the acquisition of <a href="http://www.stylefeeder.com/">StyleFeeder</a> by <a href="http://www.timeinc.com/pressroom/detail.php?id=releases/01192010.php">Time Inc.</a> for various reasons, but perhaps it&#8217;s worth spending a few moments on this topic.  First, vital statistics:</p>
<ul>
<li>$4M invested from <a href="http://www.schoonercapital.com/">Schooner Capital</a> and <a href="http://www.hcp.com/">Highland Capital Partners</a> along with a small army of supportive angels</li>
<li>Acquisition price: <a href="http://www.quora.com/How-much-was-StyleFeeder-acquired-for">undisclosed</a></li>
<li>Team size: 5 tech, 1 bizdev, 1 marketing, half-time office manager</li>
<li>Cash flow positive for around a year with money still left in the bank at the time the deal closed</li>
<li>Started: January 2005<br />
Publicly <a title="StyleFeeder – Step 1: Start!" href="http://www.whirlycott.com/phil/2005/10/17/stylefeeder-step-1-start/">launched</a>: October 16th, 2005<br />
Funded: May 2006<br />
Acquired: January 15th, 2010</li>
</ul>
<p>StyleFeeder roughly falls into a category I call &#8220;next generation e-commerce,&#8221; a rather broad umbrella that describes a reinvention of the classic e-commerce model in which companies sell stuff online directly to consumers.  From the consumer perspective, companies in this space offer <a href="http://www.ecommercetimes.com/story/The-Key-to-Shopping-20-Success-Empowering-Customers-60523.html?wlc=1312599083">Web-wide product search/discovery</a> and organization through social and algorithmic techniques.  To the retailer, this represents a partial shift of their merchandising role to a third party &#8211; not per se desirable, but when viewed through another lens looks like a highly targeted customer acquisition channel.  A techie friend saw the first implementation of StyleFeeder and declared it &#8220;del.icio.us for clothes,&#8221; which wasn&#8217;t an altogether horrible starting point for those familiar with the social bookmarking site.</p>
<p>Social sharing of product links was certainly a core part of our initial product offering, but once we started to grow, the problem of finding cool clothes on the web started to appear locally as it became darn near impossible to find anything useful on StyleFeeder.  Fortunately, I anticipated this in advance and invested heavily in building our own highly fancy recommendation engine.  After a few false starts, we ended up with something that worked well for our needs and could handle our volume. Our investment in innovation and technology stands out still as one of the key differentiators of StyleFeeder.  While our competitors invested in other areas, leading edge technology was one zone where we really stood out.  You have to do what you were good at&#8230; and we were good at building product.  So we did that.</p>
<div id="attachment_2454" class="wp-caption aligncenter" style="width: 810px"><img class="size-full wp-image-2454" title="Eric Savage and Philip Jacob at the first StyleFeeder office" src="http://www.whirlycott.com/phil/wp-content/uploads/2011/08/phil-and-savage-stylefeeder.jpg" alt="Eric Savage and Philip Jacob at the first StyleFeeder office" width="800" height="600" /><p class="wp-caption-text">Eric Savage and me at the first StyleFeeder office in Harvard Square, July 2006</p></div>
<h2>Competitors</h2>
<p>At various points in our history, I considered us competitive with <a href="http://www.stylehive.com/">Stylehive</a>, <a href="http://www.thisnext.com/">ThisNext</a>, <a href="http://www.kaboodle.com/">Kaboodle</a>, <a href="http://www.thefind.com/">TheFind</a>, <a href="http://www.like.com/">Like.com</a>, <a href="http://www.pronto.com/">Pronto</a> and <a href="http://www.shopstyle.com/">Shopstyle</a>.  There were a few other companies that I kept my eye on, but I didn&#8217;t consider them serious threats.</p>
<p>Kaboodle sold to Hearst in August 2007, almost exactly four years ago.  I remember the moment that I found out that they had sold &#8211; I was at the office with some folks at 4am putting the finishing touches on a big <a href="http://mashable.com/2007/08/08/stylefeeder-personal-shopper/">product launch</a> when the <a href="http://techcrunch.com/2007/08/08/hearst-acquires-kaboodle-for-30-million/">news broke on TechCrunch</a>, including disclosure that the price was around $30M (although Crunchbase indicates <a href="http://www.crunchbase.com/company/kaboodle">it was $18M</a>, which is closer to what I heard through the grapevine).  Since <a href="http://www.linkedin.com/in/manishchandra1">Manish Chandra&#8217;s LinkedIn</a> profile indicates he is still at Hearst, I&#8217;m going to speculate that they got a four year lockup period (we were only locked up for one year, which I thought was very civilized).  I tried long and hard to figure out Kaboodle.  I mean no disrespect to anybody who ever worked at that company, but I never thought the product was original.  However, it was clear that they were stomping our asses at customer acquisition and traffic generation.  I think it was through email marketing, but I never did get clarity on that and would love to know.  Kaboodle was a success &#8211; hats off to them.</p>
<p>ThisNext popped on the radar in August 2006 and had tremendous <a href="https://www.nytimes.com/2006/09/11/technology/11ecom.html">launch coverage</a> along with a technology team that seemed like a credible threat.  However, it soon became clear that their PR skills were a few steps ahead of their <a href="http://blog.thisnext.com/blog/thisnext-is-working-for-the-weekend.html">ability to execute</a>.  Slowly, <a href="http://www.linkedin.com/in/ehammond">their</a> <a href="http://www.linkedin.com/in/craigogg">founders</a> <a href="http://www.linkedin.com/in/gordonrgould">left</a>.  I monitored their employees&#8217; <a href="https://secure.flickr.com/photos/thisnext/">Flickr photostreams</a> closely to keep track of headcount and burn rate and estimated they had about ~26 people on their team.  Years later, one of their executives sat across from me in a restaurant in Cambridge and asked if we were interested in acquiring the company; we declined.  They later merged with Stylehive and are now reinventing themselves under new management.  Who knows, they may finally strike gold.  I wish them the best as they move forward.</p>
<p>Pronto is a unique bird.  They&#8217;re owned by IAC and had a decent product offering put together by a very large tech team that they <a href="http://searchenginewatch.com/article/2064687/Up-Close-with-IACs-Pronto-Shopping-Search">acquired from Semantic Discovery</a>.  They also had an unusual incentive structure in that their management team had a pre-negotiated exit from IAC, which seemed potentially thorny to me, though the details are not something I know about.  A few years ago, their business was basically SEM arbitrage, which is alright if you can make it work for long periods of time at scale.</p>
<p>TheFind has $26M in and, from what I can tell, is doing well.  They seem like a quiet bunch that maintains a heads-down profile.</p>
<p>Like.com had $47M at the time they <a href="http://techcrunch.com/2010/08/20/its-official-google-acquires-like-com/">sold to Google</a> last year for $100M; from what I understand, this was principally an acquisition of IP and talent. In our user testing research, neither Like.com nor TheFind fared well with our target audience (female, 18-35), which, I suppose, is not a surprise.  Like.com has some advanced image recognition technology, but that seemed more of a feature than the basis for a website to me.  I can attest that not one single person in our user research ever noticed or tried the feature that Like.com had spent so much time and effort in building (<em>Postscript: after being acquired by Google, Like.com launched Boutiques.com, a smorgasbord of beta-quality features.  Based on Compete data, Google is currently <a href="http://siteanalytics.compete.com/boutiques.com/">starving the site</a>.</em>)</p>
<p>However, the real standout in our competitors was Shopstyle, part of the Sugar Inc. empire ($46M invested).  It seemed to me that Shopstyle was an <a href="http://techcrunch.com/2007/09/25/sugar-publishing-acquires-shopstyle/">opportunistic acquisition</a> for Sugar, but they have built a formidable SEO fortress around it, driving traffic to important keywords.  Fashionistas adore the site.  After researching and deconstructing their site, we decided that two qualities drive their product success: the black header color indicates &#8220;high end&#8221; and the visual product density per page is optimally tuned.  All other variants of praise for Shopstyle fundamentally boil down to those two characteristics (including the distinctive horizontal scrolling).  They did a wonderful job in putting together both the product and growth strategy and deserve a lot of credit for it.</p>
<p><em>If founders or CEOs from any of these companies can share more from their experiences in the comments, I would be eager exchange perspectives.</em></p>
<h2>Partnerships</h2>
<p>We bumped into Shopstyle a few times during our partnership building efforts, as they had a compelling white-label offering for media companies.  At one point, we were outsourcing our ad sales to Hachette Filipacchi Media (ELLE.com, if you&#8217;re not aware of HFM) and I managed to <a href="http://www.xconomy.com/boston/2009/03/18/stylefeeder-partners-with-elle-publisher/">scuttle their plans</a> to use Shopstyle in favor of our own shopping solution for publishers.  That immediately boosted our credibility.  Otherwise, partnership deals tended to be cumbersome and distracting.</p>
<h2>Capital Efficiency Rules</h2>
<p>If there is a high order bit here, it&#8217;s that StyleFeeder did more with less than anybody else in our space. How did we compete with companies that had 2-10x our resources? Hard work, <a href="http://www.whirlycott.com/phil/2010/10/01/focus/">focus</a>, culture and excellent business relationships. If you know me personally, you will know that I am not a cheapskate. It&#8217;s just that we didn&#8217;t blow our cash on parties, fancy office space, <a href="http://www.whirlycott.com/phil/2010/12/03/marketing-the-blimp-test/">speculative marketing</a> adventures, or &#8220;passengers&#8221;.</p>
<p>I had a &#8220;no passengers&#8221; hiring rule which basically meant that everyone has to be both an individual contributor, able to do their job without support and capable of handling a team (or contractors, or vendors, etc.). We divided our efforts and learned to trust each other to get the job done.</p>
<div id="attachment_2450" class="wp-caption aligncenter" style="width: 810px"><a href="http://www.whirlycott.com/phil/wp-content/uploads/2011/08/stylefeeder-office-614-mass-ave.jpg"><img class="size-full wp-image-2450   " title="StyleFeeder office at 614 Massachusetts Avenue, Cambridge, MA" src="http://www.whirlycott.com/phil/wp-content/uploads/2011/08/stylefeeder-office-614-mass-ave.jpg" alt="StyleFeeder office at 614 Massachusetts Avenue, Cambridge, MA" width="800" height="600" /></a><p class="wp-caption-text">Being a night owl at StyleFeeder&#39;s third office. My chair is to the left of the beam.</p></div>
<h2>Making Deals</h2>
<p><a href="http://twitter.com/#!/shergul">Shergul</a> ran bizdev and corp dev for us and he was pretty astounding at getting us an audience with C-level executives at any company we wanted to talk to.  We were principally searching for partnerships to help in growing revenues and customer growth (but, hey, a venture funded startup is automatically on a certain kind of trajectory), so as we were able to demonstrate our product, technology, vision and the super StyleFeeder team, sometimes things got a bit more serious.</p>
<p>We received offers from four different companies (three of which are public companies); I won&#8217;t disclose who these companies are as I intend to honor my NDAs. I learned a lot from this experience: the cost of distraction, the importance of a simple deal structure, what matters to a buyer, how to build leverage and so on.  Turning down a written offer from the CEO of a public company is not a bubbly fun experience, especially when that offer could set you up pretty well in life.  However, it pays to be patient and cold-blooded in analyzing deal terms.  I had to learn that.  It didn&#8217;t come naturally at first.</p>
<p>By the time that Time Inc. got serious with us, I think I was personally in a better position to know when things were on the right track.  The people we did the deal with at Time Inc. are wonderfully friendly and intelligent, knew what they wanted and moved quickly, a sharp distinction from many large companies.  I think the whole deal took around six months from the first meeting to closing.</p>
<div id="attachment_2453" class="wp-caption aligncenter" style="width: 810px"><img class="size-full wp-image-2453" title="StyleFeeder Team" src="http://www.whirlycott.com/phil/wp-content/uploads/2011/08/stylefeeder-diligence-docs.jpg" alt="" width="800" height="600" /><p class="wp-caption-text">The StyleFeeder team wrapping up some diligence docs: Lana, Shergul, Dina, Alex, Kilby, Ben, Savage and me</p></div>
<h2>The Future</h2>
<p>I would be overstating reality to claim that StyleFeeder made a massive impact on the e-commerce space.  We played a part in disrupting the status quo and served as an inspiration for other companies that followed us.  Although I&#8217;m no longer working on StyleFeeder, the site is still being run by a highly capable group at Time Inc. that includes some of the original team.  I think that the power of Time Inc.&#8217;s brands, especially <a href="http://www.people.com/">People</a> and <a href="http://www.instyle.com/">InStyle</a> will accelerate <a href="http://www.stylefind.com/">StyleFind</a>, a new site that we launched last winter and which is built on StyleFeeder technology.</p>
<p>I&#8217;m also keeping my eye on newcomers like <a href="http://www.curisma.com/">Curisma</a>, <a href="http://www.pinterest.com/">Pinterest</a>, <a href="http://www.suddenlee.com/">Suddenlee</a> and <a href="http://www.svpply.com/">Svpply</a>.  <em>Are there other innovative e-commerce companies I should be aware of?  Please let me know about them in the comments.</em></p>
<p>For a range of reasons, I&#8217;m omitting a lot.  But to everybody on the team, investors, contractors and vendors, I&#8217;ll say it one last time: thank you.</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2011/08/05/stylefeeder-history/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Moving on from Time Inc.</title>
		<link>http://www.whirlycott.com/phil/2011/07/28/moving-on-from-time-inc/</link>
		<comments>http://www.whirlycott.com/phil/2011/07/28/moving-on-from-time-inc/#comments</comments>
		<pubDate>Fri, 29 Jul 2011 03:49:37 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[General]]></category>
		<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2435</guid>
		<description><![CDATA[In January of 2010, we sold StyleFeeder, the startup I founded, to Time Inc. (additional coverage at WSJ, Xconomy, TechCrunch) and, since then, I&#8217;ve spent a truly enjoyable time at the company.  However, I recently decided that I wanted to take &#8230; <a href="http://www.whirlycott.com/phil/2011/07/28/moving-on-from-time-inc/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>In January of 2010, we sold <a href="http://www.stylefeeder.com/">StyleFeeder</a>, the startup I founded, to <a href="http://www.timeinc.com/pressroom/detail.php?id=releases/01192010.php">Time Inc</a>. (additional coverage at <a href="http://online.wsj.com/article/SB10001424052748703626604575011191771805782.html">WSJ</a>, <a href="http://www.xconomy.com/boston/2010/01/18/stylefeeder-acquired-by-time-inc/">Xconomy</a>, <a href="http://techcrunch.com/2010/01/19/time-buys-stylefeeder/">TechCrunch</a>) and, since then, I&#8217;ve spent a truly enjoyable time at the company.  However, I recently decided that I wanted to take some time off to relax and consider the future, so I resigned a few weeks ago and finished up at the end of last week.</p>
<p>Whenever I told people that we sold to Time Inc., I could usually detect that they were somehow reminded of AOL and TimeWarner (<a href="http://www.google.com/search?q=worst+merger+ever">worst merger ever</a>).  Sure enough, &#8220;<em>And how&#8217;s that working out for you?</em>,&#8221; they would smirk.  The reality is that it was going great.  In the past year, we built and launched <a href="http://www.stylefind.com/">StyleFind</a> using StyleFeeder technology and business relationships.  StyleFind is off to a great start and will no doubt become a major player in the women&#8217;s fashion e-commerce space.</p>
<p>The people we sold the company to knew we had created a high-output, super-functional organization&#8230; and they weren&#8217;t about to screw that up. Mostly, they kept the corporate stuff out of my way and strongly encouraged us to keep doing the things we were good at.  We were in NYC frequently, presenting both to the company&#8217;s top management and to the technology leadership.  I know we contributed a lot to Time Inc. and we were treated very well in return.  If you ever have a chance to work for Time Inc., I would recommend it.  And if you are ever lucky enough to sell a company to them, you&#8217;ll find that nearly everyone is both intelligent and nice to work with.</p>
<p>I will have a lot to say about StyleFeeder and e-commerce in the coming days, so come back soon.</p>
<p><img class="alignnone size-full wp-image-2446" title="philip-jacob-stylefeeder-business-cards" src="http://www.whirlycott.com/phil/wp-content/uploads/2011/07/philip-jacob-stylefeeder-business-cards.jpg" alt="" width="750" height="1212" /></p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2011/07/28/moving-on-from-time-inc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Some thoughts about Scrum</title>
		<link>http://www.whirlycott.com/phil/2011/07/05/some-thoughts-about-scrum/</link>
		<comments>http://www.whirlycott.com/phil/2011/07/05/some-thoughts-about-scrum/#comments</comments>
		<pubDate>Tue, 05 Jul 2011 19:32:04 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Startups]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2433</guid>
		<description><![CDATA[I was involved in a wee little exchange on ye olde Twitter social medium over the weekend with @dcancel and @pt in which I said I didn&#8217;t like certain aspects of Scrum (which, by the way, is a software development &#8230; <a href="http://www.whirlycott.com/phil/2011/07/05/some-thoughts-about-scrum/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>I was involved in a <a href="http://twitter.com/#!/dcancel/status/87532653124919296">wee little exchange</a> on ye olde Twitter social medium over the weekend with <a href="http://twitter.com/#!/dcancel">@dcancel</a> and <a href="http://twitter.com/#!/pt">@pt</a> in which I said I <a href="http://twitter.com/#!/whirlycott/status/87555960175984640">didn&#8217;t like certain aspects of Scrum</a> (which, by the way, is a software development methodology).  I was <a href="http://twitter.com/#!/pt/statuses/87631352052187136">asked to elaborate</a>.</p>
<p>I think <a href="http://en.wikipedia.org/wiki/Scrum_%28development%29">Scrum</a> has a lot of good aspects.  I&#8217;ll go a step further and say that for most startups and probably most software projects, Scrum should be your default.  You should be required to make a case for not using it before moving to something else.  However, there are two effects of Scrum that I don&#8217;t like.</p>
<p>Most importantly, I think <strong>Scrum does have a chilling effect on innovation</strong>.  Common symptoms of this are people saying things like &#8220;Stick to what is in the sprint&#8221; or &#8220;That&#8217;s a super idea &#8211; put it in the backlog and let&#8217;s consider it during our next planning meeting.&#8221;  Innovation and creativity don&#8217;t respond well to statements like this.  They appear suddenly and without warning and are opportunities that you must seize and run with.  Damn your plans.  Scrum is part of a family called &#8220;agile methods,&#8221; and, by comparison, it absolutely is.  Well, maybe sometimes it just isn&#8217;t agile enough.  But I guess it depends on what you are optimizing for.</p>
<p>The second thing that I don&#8217;t like about Scrum is that if you have a <strong>highly functional team</strong> that is cranking, applying Scrum to the chemistry of your team will <strong>absolutely slow things down</strong>.  As lightweight as it is, there most certainly is overhead involved.  Perhaps there are other benefits of having Scrum in place, but speed isn&#8217;t one of them.  That being said, Scrum can be fairly lightweight and is probably the most responsible choice you can make in the face of actual methodologies that you can, say, buy books about.</p>
<p><em>Now, what do I like if it&#8217;s not Scrum?</em></p>
<p>I like <strong>goals</strong>.  The objective of a sprint (using Scrum parlance) is to complete the specified work.  Hopefully that maps to your overall strategy.  Hopefully that makes your goals a few steps closer than before.  The reality is that reaching your goals are the most important thing, not necessarily how they are achieved.  If you want to boost conversions, increase registrations, reduce latency, etc., it&#8217;s way better to stick with a few key numbers that you can measure against and simply chase those until you&#8217;ve moved whatever needle you are measuring.  It is very frequently the case that you will have no idea what will end up working for you in terms of actual tactics.  But the ability to make guesses, learn, retry and iterate is going to get you there.  Sticking to a plan and realizing halfway through a sprint that things are Not Going Well is <em>not</em> going to lead to the desired outcome.  And constantly changing the composition of a sprint makes the whole process seem very flimsy.</p>
<p>But Scrum is just a hammer in your toolkit.  Choose it for the right job and it can be very valuable (yes, really!).  If you adopt it during a phase in your company&#8217;s lifecycle when you are trying to focus on innovation, consider yourself warned.</p>
<p>Do you have techniques to make Scrum work better in an environment that requires innovative thinking put into practice?</p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2011/07/05/some-thoughts-about-scrum/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Marketing: The Blimp Test</title>
		<link>http://www.whirlycott.com/phil/2010/12/03/marketing-the-blimp-test/</link>
		<comments>http://www.whirlycott.com/phil/2010/12/03/marketing-the-blimp-test/#comments</comments>
		<pubDate>Fri, 03 Dec 2010 21:35:26 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2425</guid>
		<description><![CDATA[&#8220;I need you to find out something for me,&#8221; I asked my office manager in a way that caused her to look at me with suspicious eyes. &#8220;Sure, what is it?&#8221; she replied, knowing full well that this was going &#8230; <a href="http://www.whirlycott.com/phil/2010/12/03/marketing-the-blimp-test/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>&#8220;I need you to find out something for me,&#8221; I asked my office manager in a way that caused her to look at me with suspicious eyes.  &#8220;Sure, what is it?&#8221; she replied, knowing full well that this was going to be another non-standard request.  &#8220;I need you to find out how much it costs to rent a <a href="http://www.google.com/images?q=blimps&#038;biw=1482&#038;bih=901">blimp</a> for an afternoon,&#8221; I said, trying not to smile too much.  &#8220;Really?&#8221;  &#8220;Really.&#8221;</p>
<p>Some of the most impressive marketing people I&#8217;ve worked in the past had a background at big credit card companies.  Everything they did was based on numbers and analytics.  No guessing, in any material sense, anyway.  Every dollar they spent was tracked.  At the beginning of the StyleFeeder story, I blew quite a bit on misguided marketing efforts involving SEM and really silly ad buys.  I did a calculation at one point after a particularly unsuccessful spend in which we threw $3K at a prominent women&#8217;s blogging network and only six (6) people signed up for StyleFeeder as a result.  Yeah, $500/user.  I know.  Tell me about it.  </p>
<p>So I coined the blimp test.  </p>
<p>Let&#8217;s pretend that it costs $50K to rent a blimp out for a few hours and fly it over a major city.  Let&#8217;s say you print up fifty thousand postcards advertising your product/service/website/whatever.  Attach a $20 bill to each postcard.  Take the blimp out for a ride and start throwing the postcards over the side.  How much publicity can you generate like this?  You&#8217;ll have spent around $1M, almost certainly landed yourself on the evening news and probably turned a few heads along the way.  But will it affect anything you&#8217;re trying to do?  Your cost per lead is probably going to be in the $100+ range.  Insane, isn&#8217;t it?  Totally crazy.</p>
<p>Yet a lot of marketing efforts aren&#8217;t much more than this.  Take a few hundred thousand dollars and poof them away.  Whenever someone tells you about some cocamamie scheme that isn&#8217;t specifically <strong>designed to affect identifiable key metrics by a specified amount</strong> and that will almost certainly just blow a large chunk of cash, my suggestion is that you tell them that their idea probably wouldn&#8217;t pass The Blimp Test.  Tell them this story and ask if it might be more effective than what they&#8217;ve suggested.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2010/12/03/marketing-the-blimp-test/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Focus</title>
		<link>http://www.whirlycott.com/phil/2010/10/01/focus/</link>
		<comments>http://www.whirlycott.com/phil/2010/10/01/focus/#comments</comments>
		<pubDate>Sat, 02 Oct 2010 01:21:23 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Startups]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2415</guid>
		<description><![CDATA[One of the things that appears to happen when you sell a venture funded startup is that you receive a license to give advice to people. As I have not yet received such a certificate in the mail, you would &#8230; <a href="http://www.whirlycott.com/phil/2010/10/01/focus/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p>One of the things that appears to happen when you sell a venture funded startup is that you receive a license to give advice to people.  As I have not yet received such a certificate in the mail, you would be well with your rights to suggest that I shove off, but I do have a few observations from my recent experiences that you may find useful, especially if you are running a startup of any stage.</p>
<p>As the dust starts to settle and I reflect back on the past few years running StyleFeeder, our team did several things exceedingly well.  One of them was our collective ability to focus on a goal and execute towards that, whether our objective was related to revenue, product development, fixing a problem or otherwise.  That ability to focus as a team is one of our core strengths.</p>
<p>You hear this all the time, right?  It&#8217;s not new.  It sounds obvious enough.  In real life, it&#8217;s <em>hard</em>.</p>
<p>Part of the reason is that focusing implies that something else gets de-emphasized, but in small startups, subtleties don&#8217;t work.  If you&#8217;re trying to do something, stop doing everything else.  It&#8217;s a primitive caveman-like approach, but devoting 50% of your resources (time, money, or attention) means that whatever you&#8217;re doing will surely take <em>much longer</em> than 2x as long due to the inevitable distractions. Be brutal in your willingness to get your team to drop everything and just do that one important thing.</p>
<p>We had some principles that enabled this, notably with our product work that helped us avoid the cost of context switching.  Whenever we built something, the goal was that (a) you wouldn&#8217;t go back to it for at least a year and (b) it had to scale 10x without intervention.  These principles shaped our work in a way that yielded quality, stability and operational reliability and we still follow them.  These principles also weren&#8217;t so aggressive that they promoted a culture of over-engineering with our team building the Infinitely Scalable System.</p>
<p>If you don&#8217;t adopt principles like this, even your successes can be cause for alarm.  Crap, you got ten thousand new signups today and that underscored a scalability problem that you didn&#8217;t know about?  Well, whatever your team was focusing on before has now been sidelined by a crashing website and emergency late-night patches.  You rushed a feature out the door without properly considering the security holes that went along with it and someone cracked your site?  Now you get to clean up that mess instead of doing something useful.</p>
<p>Starting to sound familiar?</p>
<p>I&#8217;ll give you a concrete example.  Years ago, you used to be able to import your Amazon wishlist intto your StyleFeeder account.  You&#8217;d type in some identifying information into a search box and select the Amazon Wishlist you wanted to import.  We asked around and found that my friend <a href="http://tieguy.org/">Luis Villa</a> had the biggest list we could find with almost 500 products!  Literally five minutes after we pushed this feature live, the site crashed hard.  Upon investigation, we discovered that someone tried to import a wishlist with over 5,000 books on it (we were attracting a lot of book lovers back then).  Since we were holding a bunch of this data in memory, the server simply ran out and died.  Wonderful.  It was a stupid design decision on our part.  The lesson was that this quick and dirty approach didn&#8217;t scale past the first few minutes of service.  And users will always exceed whatever reasonable limits you think they&#8217;ll never exceed.  Instead of moving on to work on another feature on the site, we had to immediately redesign the feature we had just finished building.  That&#8217;s really costly.</p>
<p>What were we working on again?  Oh, right.. the thing we were supposed to be focusing on.</p>
<p>During StyleFeeder&#8217;s trajectory, we added a lot of features to the site, some of which were pretty interesting and some of which weren&#8217;t obvious failures.  One of the other skills that we didn&#8217;t get particularly good at until the later years was killing off stuff that wasn&#8217;t helping us or that we couldn&#8217;t properly support.  An example might be a partnership that isn&#8217;t performing well and your company is powering features on another company&#8217;s website.  Kill the partnership.  It&#8217;s a distraction.  Or, get some data and decide if you can make it work well enough to keep around.  But your first instinct should be to view this underperforming lump of a partnership as an alarming problem that needs to be addressed one way or another.</p>
<p>There are many wonderfully witty quotes about how important reliable data is and how everybody except God needs supporting figures, etc., but it&#8217;s worth emphasizing that it&#8217;s all true.  We now have wonderful realtime dashboards of all key metrics that we&#8217;re tracking.  For many reasons, getting your entire team to focus on these metrics &#8211; and to build them as part of every feature &#8211; is The One True Path.  Once you have tools like this, you&#8217;ll realize that you&#8217;ve just been a fool stumbling around in a dark room without any notion of where you&#8217;re going.</p>
<p>If I had to do it all again, I&#8217;d re-adopt these same principles and be even more aggressive in limiting the company&#8217;s activities to a short list of Things That Matter.  It&#8217;s all a bit of a fine art and you&#8217;ll have plenty of opportunities to experiment with the right balance.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2010/10/01/focus/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Open source election software</title>
		<link>http://www.whirlycott.com/phil/2009/10/29/open-source-election-software/</link>
		<comments>http://www.whirlycott.com/phil/2009/10/29/open-source-election-software/#comments</comments>
		<pubDate>Fri, 30 Oct 2009 00:29:45 +0000</pubDate>
		<dc:creator>Philip Jacob</dc:creator>
				<category><![CDATA[Politics]]></category>
		<category><![CDATA[Technology]]></category>

		<guid isPermaLink="false">http://www.whirlycott.com/phil/?p=2400</guid>
		<description><![CDATA[Read this article about the announcement earlier this week of an open source election system that was made publicly available. Now read this wee little blog post about why this isn&#8217;t providing us much in the way of guarantees. The &#8230; <a href="http://www.whirlycott.com/phil/2009/10/29/open-source-election-software/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
				<content:encoded><![CDATA[<p><a href="http://www.wired.com/threatlevel/2009/10/open-source/">Read this</a> article about the announcement earlier this week of an open source election system that was made publicly available.  Now <a href="http://benlog.com/articles/2009/10/29/source-code-and-voting-whats-really-on-that-machine/">read this</a> wee little blog post about why this isn&#8217;t providing us much in the way of guarantees.  </p>
<p>The open source nature of the code is helpful in the long run, but it provides absolutely nothing in the way of assurance to voters.  Ben Adida&#8217;s <a href="http://blog.heliosvoting.org/">Helios Voting System</a> provides voters with a cryptographic, verifiable receipt that their vote was counted.  Commercial implementations or Open Source versions of this software would both still need to provide a cryptographic receipt.  That&#8217;s your proof.  That&#8217;s something that can support the weight of democracy.  </p>
]]></content:encoded>
			<wfw:commentRss>http://www.whirlycott.com/phil/2009/10/29/open-source-election-software/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
