<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:thr="http://purl.org/syndication/thread/1.0" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
    <title>PeteSearch</title>
    
    <link rel="alternate" type="text/html" href="http://petewarden.typepad.com/searchbrowser/" />
    <id>tag:typepad.com,2003:weblog-316266</id>
    <updated>2009-07-11T13:45:35-07:00</updated>
    <subtitle>Tips and tools for better searching</subtitle>
    <generator uri="http://www.typepad.com/">TypePad</generator>
    <link rel="self" href="http://feeds.feedburner.com/typepad/petewarden" type="application/atom+xml" /><entry>
        <title>What's your message?</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/6iNGjW0YDCM/whats-your-message.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/07/whats-your-message.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d83454428269e2011571f5702e970b</id>
        <published>2009-07-11T13:45:35-07:00</published>
        <updated>2009-07-11T13:45:35-07:00</updated>
        <summary>Photo by plusW "If I had more time, I would have written you a shorter letter" I've had a tough time taking all the swirling possibilities, plans and dreams of what Mailana can be and boiling it down to a...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Bildpersonalisierung_flaschenpost.jpg" style="display: inline;"><img alt="Messageinabottle2" border="0" class="at-xid-6a00d83454428269e201157100962b970c image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e201157100962b970c-800wi" title="Messageinabottle2" /></a> <br /><em><a href="http://commons.wikimedia.org/wiki/File:Bildpersonalisierung_flaschenpost.jpg">Photo by plusW</a><br /></em><br />"<a href="http://quotations.about.com/b/2008/01/08/pop-quiz-who-said-if-i-had-more-time-i-would-have-written-you-a-shorter-letter.htm">If I had more time, I would have written you a shorter letter</a>"</p><p>I've had a tough time taking all the swirling possibilities, plans and dreams of what Mailana can be and boiling it down to a succinct message. This might sound like an academic exercise, but creating a two-sentence explanation of your company creates a foundation beneath everything else you build. The brevity removes any gaps for fudging, vagueness or hand-waving, and forces you to focus laser-like on the core value of what you're doing.</p><p>Luckily I've had some intensive help from the master of messages, <a href="http://twitter.com/dgmandell">David Mandell</a>. Here's one of his secret weapons, a simple template where you fill in the blanks:</p><p><strong>For</strong> _____________ (<em>target market</em>)<br /><strong>XYZ is a</strong> ___________________ (<em>elevator pitch</em>)<br /><strong>as opposed to</strong> ______________ (<em>competitors/current situation</em>).<br /><strong>XYZ</strong> _______________ (<em>tag line</em>)</p><p>Try it for yourself, it's deceptively hard! I'm still working on mine, but here's where I'm at:</p><p><strong>For</strong> people trying to build their networks, <strong>Mailana is a</strong> way of sharing valuable and real relationships with their close friends, <strong>as opposed to</strong> conventional networking tools like LinkedIn that don't distinguish between acquaintances and strong relationships. <strong>Mailana</strong> gets you to "You guys should talk".</p><p>As another example, here's what I'd do for Craigslist:</p><p><strong>For</strong> people who want to trade second-hand goods locally, <strong>Craigslist is a</strong> free and convenient service matching buyers and sellers, <strong>as opposed to</strong> expensive and inconvenient alternatives like classified ads or ebay. <strong>Craigslist</strong> is <a href="http://craigslistfoundation.org/index.php">helping people help</a> each other.</p><p>Hmm, I really like that "helping people help each other" tag line, I wonder if it's too general to steal for Mailana?</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/07/whats-your-message.html</feedburner:origLink></entry>
    <entry>
        <title>You can't fail if you don't try! (Or why I left the UK)</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/LIWDDQuz0kk/you-cant-fail-if-you-dont-try-or-why-i-left-the-uk.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/07/you-cant-fail-if-you-dont-try-or-why-i-left-the-uk.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d83454428269e2011570fd7eaf970c</id>
        <published>2009-07-10T19:25:16-07:00</published>
        <updated>2009-07-10T19:25:16-07:00</updated>
        <summary>Photo by Zitona An article today and a talk last night reminded me why trying to get new stuff done (being an entrepreneur if you want to get fancy) was so damn hard in Britain. The article is from The...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><span style="text-decoration: underline;"><a href="http://www.flickr.com/photos/zitona/1338677254/" style="display: inline;"><img alt="Grumpy" border="0" class="at-xid-6a00d83454428269e2011571f23ed1970b " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011571f23ed1970b-800wi" title="Grumpy" /></a> </span> <br /><em><a href="http://www.flickr.com/photos/zitona/1338677254/">Photo by Zitona</a></em></p><p>An article today and a talk last night reminded me why trying to get new stuff done (being an entrepreneur if you want to get fancy) was so damn hard in Britain. The <a href="http://www.guardian.co.uk/technology/2009/jul/10/not-safe-for-work-internet-london">article</a> is from The Guardian on the death of the internet startup scene in the UK. Reading the body it's hard to escape how much the author is enjoying being negative. He doesn't seem sad or angry that the London ecosystem is apparently having so much trouble, more gleeful that he can point it all out. He's a poster child for:</p><p><strong>#1 Negativity</strong> - When I would talk about my crazy plans for awesome software back home, there'd always be some smirking bugger like Paul jumping in with a million reasons they would never work. I'm sure plenty of people over here think I'm crazy when I talk about what I'm doing, but they've been brought up to be constructive. At the least they'll keep quiet, and some of my most valuable feedback has come from skeptics who really think about what they don't agree with and articulate things they'd like to see improved.</p><p>Then I read through the article's comments, and found <a href="http://www.guardian.co.uk/technology/2009/jul/10/not-safe-for-work-internet-london?commentid=64d1306d-3ae7-4eae-8334-6577163fcc2b">one</a> that embodies:</p><p><strong>#2 Denial</strong> - "<em>And why do we want to be the same as the US Web 2.0 start-ups ?!?! ... Oddly enough over here we
like to think we have some sense and want to invest in things that can
be seen to work, at least in theory</em>." How's that working out for you? Sure dodged a bullet with Microsoft (who's going to use dinky micro-computers?), Amazon (buying books online?! ha!), Google (who's going to pay for search?). Thanks to those sort of lucky escapes Britain has no major players in the software or internet industries. Considering how much raw development talent there is, this is a massive failure, and it's impossible to claim that this 'sensible' approach to technology investing works.</p><p>I think these two both actually come from a deeper cause, and <a href="http://pberberian.typepad.com/">Paul Berberian</a> gave an amazing talk on it last night:<br /><strong><br />#3 Fear of Failure</strong> - In Britain, failing in business is a Scarlet Letter, a stain that won't rub off. This is especially dumb in the technology world. Pretty much every founder is setting off to climb Everest naked, hoping to pick up clothing and equipment along the way. The odds of making it to the summit are against you, but the value from the ones who do succeed more than makes up for it. It's impossible to tell in advance who will succeed, so you want as many credible teams trying as you can get. </p><p>Paul had already done <a href="http://www.berberian.com/berberians_blog/2008/04/tango-blue.html">one of my favorite all-time blog posts</a> on the failure of his last startup, and he spent an hour talking in-depth about what went wrong. He owned the failure, accepted responsibility for it, but the underlying theme was <a href="http://bobsutton.typepad.com/my_weblog/2007/10/failure-sucks-b.html">failure sucks but instructs</a>. Back in the UK there were lots of people trying to make sure I didn't screw up, and incidentally preventing me from trying some <a href="http://bobsutton.typepad.com/my_weblog/2006/08/twelve_weird_id.html">weird ideas that just might work</a>. Here in the US I'm free to fail, which means I'm free to try and learn, and maybe succeed with something out of left-field too. That's why I love it here, I can get things done!</p><p>ps, if you want to see the craziest promo video for a startup ever, check out <a href="http://www.youtube.com/watch?v=aXQ0LT_NYyE">this one for Zenie</a></p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/07/you-cant-fail-if-you-dont-try-or-why-i-left-the-uk.html</feedburner:origLink></entry>
    <entry>
        <title>Only Connect</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/Mrp2xYZXvXk/only-connect.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/07/only-connect.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d83454428269e2011571deb4f4970b</id>
        <published>2009-07-08T18:03:16-07:00</published>
        <updated>2009-07-08T18:03:16-07:00</updated>
        <summary>A friend is researching how prominent journalists and bloggers are connected to each other and particular topics. He's having to manually scan through their sites, and Google for pairs of names to spot connections. As you can imagine, with even...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://bit.ly/Z1CG7" style="display: inline;"><img alt="Economicsbloggers" border="0" class="at-xid-6a00d83454428269e2011571deac35970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011571deac35970b-800wi" title="Economicsbloggers" /></a> </p><p>A friend is researching how prominent journalists and bloggers are connected to each other and particular topics. He's having to manually scan through their sites, and Google for pairs of names to spot connections. As you can imagine, with even a few dozen people the number of searches you need to cover all the possible pairs becomes enormous!</p><p>Using the magic of <a href="http://developer.yahoo.com/search/boss">Yahoo's BOSS search API</a>, <a href="http://icant.co.uk/sandbox/yboss/">the excellent YBoss library</a> and my Flash graph visualizer I created a tool to automate part of the process:<br /><a href="http://web.mailana.com/labs/onlyconnect/">http://web.mailana.com/labs/onlyconnect/</a></p><p>Enter some people's names, and some topic keywords, and it will start building a graph of how they're connected. If you click on any two terms in the graph you'll see the search results that include both of them.</p><p>I don't think this will take over from text search results anytime soon ("It left me with a feeling of motion sickness and confusion" as <a href="http://marshallk.com/">Marshall Kirkpatrick</a> said when I showed it to him), but it's a good way to dig into how a group of people are connected. Here's an example exploring the connections between economics bloggers:<br /><a href="http://bit.ly/Z1CG7">http://bit.ly/Z1CG7</a></p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/07/only-connect.html</feedburner:origLink></entry>
    <entry>
        <title>Customer Optimization</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/dcCrRYY1DJA/customer-optimization.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/07/customer-optimization.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d83454428269e2011570e0bb04970c</id>
        <published>2009-07-07T18:23:41-07:00</published>
        <updated>2009-07-07T18:23:41-07:00</updated>
        <summary>Photo by Todd Baker There's a lot of skills that are really hard to develop because they go against our instincts. The most familiar one to engineers is optimizing code, but I've realized that building a great user experience has...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/technowannabe/562918256/" style="display: inline;"><img alt="Happycustomer" border="0" class="at-xid-6a00d83454428269e2011570e07372970c image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011570e07372970c-800wi" title="Happycustomer" /></a> <br /><em><a href="http://www.flickr.com/photos/technowannabe/562918256/">Photo by Todd Baker</a></em></p><p>There's a lot of skills that are really hard to develop because they go against our instincts. The most familiar one to engineers is optimizing code, but I've realized that building a great user experience has the same problem.</p><p>When a newbie programmer has a program that's executing too slowly, she'll stare at the code, spot some ugly-looking loops or function calls and start re-writing. Hours or days later, she'll try the rewritten program and it will run <em>at the exact same speed as before</em>.</p><p>This happens because we're really, really bad at deducing why a program is slow from just inspecting the code and theorizing in our heads. One of the most important lessons programmers learn is to always, <em>always</em> profile before making any changes aimed at improving performance, and then perform controlled experiments measuring what changes work. You will be surprised, every time, guaranteed.</p><p>I've been wrestling with the <a href="http://startuplessonslearned.blogspot.com/2008/11/what-is-customer-development.html">Customer Development philosophy</a>, and it only truly clicked was when I realized it was just about applying the principles behind effective code optimization to your interactions with users.</p><p>When a newbie entrepreneur has a service that nobody's using, he'll stare at the website, spot some missing features or ugly design and start coding. Hours or days later, he'll launch the rewritten site and <em>still no one will use it</em>.</p><p>This happens because we're really, really bad at deducing why people don't love a service from just inspecting the website and theorizing in our heads. One of the most important lessons we should learn is to always, <em>always</em> talk to current and potential users to see what they think before making any changes, and then perform controlled experiments measuring what changes work. I <strong><em>am</em></strong> surprised, every time!</p><p>This mental mapping makes sense of a lot of issues I've struggled with. I was uncomfortable when <a href="http://500hats.typepad.com/">Dave McClure</a> recently proposed that you should start off with an AdWords campaign before doing any coding, to figure out what people want. That seemed like a good corrective to founders' tendency to geek out and build without understanding their customer's needs, but taken literally would have ruled out a lot of innovative companies. What would Twitter's landing page and search terms have been?</p><p>Thinking about it as profiling cleared up my confusion. Your company has a mission, a reason for existence, an itch you have to scratch. You can run AdWords campaigns to test the best ways of reaching those goals, without letting go of your reason for existence. It's the same as using profiling to guide changes to your program while making sure it still produces the right output. </p><p>I think that was always implicit in Dave and <a href="http://startuplessonslearned.blogspot.com/">Eric's</a> advice (IMVU didn't turn itself into a warez site just because a lot of people were searching for pirated software on Google), but thinking it through helped me realize that measurement doesn't have to kill the passion.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/07/customer-optimization.html</feedburner:origLink></entry>
    <entry>
        <title>Why I love America</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/okVQcki2i6s/why-i-love-america.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/07/why-i-love-america.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d83454428269e2011570c43aef970c</id>
        <published>2009-07-04T14:33:09-07:00</published>
        <updated>2009-07-04T14:33:09-07:00</updated>
        <summary>Photo by Nulla I recently ran across part of an essay by Henry Farlie, an English-born journalist in America. On previous Independence Days I've tried to articulate why I love America, but he says it so much better than I...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/nulla/3658606976/" style="display: inline;"><img alt="Wavinghi" border="0" class="at-xid-6a00d83454428269e2011571b915b1970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011571b915b1970b-800wi" title="Wavinghi" /></a> <br /><em><a href="http://www.flickr.com/photos/nulla/3658606976/">Photo by Nulla</a><br /></em><br />I recently <a href="http://andrewsullivan.theatlantic.com/the_daily_dish/2009/07/the-america-i-love.html">ran across</a> part of an essay by <a href="http://www.tnr.com/politics/story.html?id=7ab892f6-fa3e-448e-852b-ed8df8097630">Henry Farlie</a>, an English-born journalist in America. On previous Independence Days <a href="http://petewarden.typepad.com/searchbrowser/2008/07/independence-da.html">I've tried to articulate why I love America</a>, but he says it so much better than I ever could:</p><p><em>I had been in the country about eight years, and was living in Houston,
when a Texas friend asked me one evening: "Why do you like living in
America? I don't mean why you find it interesting--why you want to
write about it--but why you like living here so much." After only a
moment's reflection, I replied, "It's the first time I've felt free."
One spring day, shortly after my arrival in America, I was walking down
the long, broad street of a suburb, with its sweeping front lawns (all
that space), its tall trees (all that sky), and its clumps of azaleas
(all that color). The only other person on the street was a small boy
on a tricycle. As I passed him, he said, "Hi!"--just like that. No
four-year-old boy had ever addressed me without an introduction before.
Yet here was this one, with his cheerful "Hi!" Recovering from the 
culture shock, I tried to look down stonily at his flaxen head, but
instead, involuntarily, I found myself saying in return: "Well--hi!" He
pedaled off, apparently satisfied. He had begun my Americanization.<br /><br />"Hi!" As I often say--for Americans do not realize it--the word is a
democracy. (I come from a country where one can tell someone's class by
how they say "Hallo!" or "Hello!" or "Hullo," or whether they say it at
all.) But anyone can say "Hi!" Anyone does. Shortly after my encounter
with the boy, I called on the then Suffragan Bishop of Washington. Did
he greet me as the Archbishop of Canterbury would have done? No. He
said, "Hi, Henry!" I put it down to an aberration, an excess of
Episcopalian latitudinarianism. But what about my first meeting with
Lyndon B. Johnson, the President of the United States, the Emperor of
the Free World, before whom, like a Burgher of Calais, a halter round 
my neck, I would have sunk to my knees, pleading for a loan for my
country? He held out the largest hand in Christendom, and said, "Hi,
Henry!"<br /><br /></em>Happy 4th of July!<em><br /></em></p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/07/why-i-love-america.html</feedburner:origLink></entry>
    <entry>
        <title>Speed up your PHP with XHProf</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/TeIznEkr3_w/speed-up-your-php-with-xhprof.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/07/speed-up-your-php-with-xhprof.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d83454428269e2011571a23e98970b</id>
        <published>2009-07-02T08:30:01-07:00</published>
        <updated>2009-07-02T08:30:01-07:00</updated>
        <summary>I'll admit it, I'm doing performance-intensive code in PHP. I started my career writing demos in hand-coded assembler, but the need for development speed has pushed me towards using a scripting language. Part of making fast progress is reducing dependencies,...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Delta_IV_Medium_Rocket_DSCS.jpg" style="display: inline;"><img alt="Rocketlaunch2" border="0" class="at-xid-6a00d83454428269e20115719be3d5970b " src="http://petewarden.typepad.com/.a/6a00d83454428269e20115719be3d5970b-800wi" title="Rocketlaunch2" /></a> </p><p>I'll admit it, I'm doing performance-intensive code in PHP. I started my career writing demos in hand-coded assembler, but the need for development speed has pushed me towards using a scripting language. Part of making fast progress is reducing dependencies, which has meant sticking with PHP for the whole system, even for back-end analysis where another language might be more expected.</p><p>That's left me desperate to get more information on where the time is going when things slow down. My first weapon of choice is a simple pair of timing functions that I wrap around code to tell how long a whole block is taking. That's quick and easy, (and I've included my code below) but it doesn't give you any information about which parts of it are taking all the time.</p><p>For that you need a profiler, and if you do <a href="http://www.google.com/search?q=php+profiling">a search for php profiling</a>, almost every result talks about <a href="http://www.xdebug.org/docs/profiler">XDebug</a>. Unfortunately, as a profiler, it's a great debugger. You need to edit php.ini and restart the server, or pass in a URL input, you can only profile an entire script rather than just portions, and once you have generated the file you need to transfer them to one of several klunky desktop applications to explore the results.</p><p>After abandoning XDebug as too unwieldy, I spent some time searching for other solutions. I finally came across <a href="http://mirror.facebook.net/facebook/xhprof/doc.html">XHProf</a>, and I'm loving it. It was developed as an internal tool for Facebook and open-sourced in March, and you can tell it's been written by people who actually use it. It took a little bit of fiddling to install it, I couldn't get it going through PECL and ended up downloading the source and manually compiling. It was a dream to use after that. It let me trigger the profling programatically around the code I cared about, and then browse the results through a web interface.</p><p>There's a couple of caveats, it's missing a few advanced features I'm used to from advanced desktop profilers like detailed information on the full call stack for functions rather than the immediate parents and timing for individual lines of code rather than functions, but in practice it's got all the features I need to diagnose performance problems. I was able to speed up my IMAP email importing dramatically, largely by removing the use of a global variable in an inner loop, it turned out to be far faster to pass the object as a function argument! That's the sort of problem that would have taken me far longer to find without XHProf.</p><p>Here's the primitive timing functions I mentioned at the start:</p><p><em><strong>$g_start_time = 0;<br />$g_end_time = 0;<br /><br />function pete_start_timer()<br />{<br />    global $g_start_time;<br />    list($usec, $sec) = explode(' ',microtime());<br />    $g_start_time = ((float)$usec + (float)$sec);<br />}<br /><br />function pete_end_timer($dolog=true)<br />{<br />    global $g_start_time;<br />    global $g_end_time;<br />    list($usec, $sec) = explode(' ',microtime());<br />    $g_end_time = ((float)$usec + (float)$sec);<br />    $duration = ($g_end_time - $g_start_time);<br /><br />    if ($dolog)<br />    {<br />        $durationstring = 'pete_timer: %01.4f sec';<br />        error_log(sprintf($durationstring, $duration));<br />    }<br />    <br />    return $duration;<br />}<br /></strong></em></p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/07/speed-up-your-php-with-xhprof.html</feedburner:origLink></entry>
    <entry>
        <title>Sewers and startups</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/amoE_iZiNak/sewers-and-startups.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/07/sewers-and-startups.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-6a00d83454428269e20115719294a8970b</id>
        <published>2009-07-01T09:02:36-07:00</published>
        <updated>2009-06-30T11:20:44-07:00</updated>
        <summary>Photo by Elsie Esq. I had a chance to chat with Matt Mullenweg yesterday, and he focused on something I've been struggling with; building to last. It also got me thinking about plumbing. Joseph Bazalgette is one of my engineering...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/elsie/219203654/" style="display: inline;"><img alt="Sewer" border="0" class="at-xid-6a00d83454428269e201157190bd07970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e201157190bd07970b-800wi" title="Sewer" /></a> <br /><em><a href="http://www.flickr.com/photos/elsie/219203654/">Photo by Elsie Esq.</a></em></p><p>I had a chance to chat with <a href="http://ma.tt/">Matt Mullenweg</a> yesterday, and he focused on something I've been struggling with; building to last. It also got me thinking about plumbing.</p><p><a href="http://en.wikipedia.org/wiki/Joseph_Bazalgette">Joseph Bazalgette</a> is one of my engineering heros. He built London's first sewers in the 19th century, and started by estimating how large they'd need to be to cope with the current population. He then said "Well, we're only going to be doing this once and there's always the unforeseen" and doubled the diameter! Thanks to his foresight and the beautiful workmanship of the bricklayers, those same sewers are still serving Londoners today, despite a population many times larger.</p><p>The biggest enemy of early-stage startups is time. We can't afford <a href="http://onstartups.com/home/tabid/3339/bid/3055/Startups-and-The-Problem-Of-Premature-Scalaculation.aspx">premature scalation</a>, because before we've finished building a system robust enough to handle millions of active users we'll have run out of money. That means we end up accumulating <a href="http://martinfowler.com/bliki/TechnicalDebt.html">technical debt</a> as we struggle to get customers and revenue with the least possible amount of code.</p><p>The danger is we end up succesful, but so deeply mired in technical debt that we spend all our time paying interest rather than making meaningful progress with the product (see the last decade of Windows). As <a href="http://epiphanysuit.blogspot.com/2009/02/vernor-vinges-novel-deepness-in-sky.html">Vernor Vinge evokes so well</a>, there's a good chance some of our code will be in the lower layers of the stack essentially forever. It's a deep engineering sin to inflict shoddy sewers on future generations. </p><p>Matt's key insight was "<a href="http://onstartups.com/home/tabid/3339/bid/126/17-Pithy-Insights-For-Startup-Founders.aspx">When you're in the red, time is working against you. Once you're profitable, time is on your side</a>". Getting to even <a href="http://www.paulgraham.com/fundraising.html">Ramen profitability</a> changes everything, and gives you the ability to build for the long term. </p><p>When I joined Apple back in 2003, the central build farm for all projects had both PowerPC and x86 Darwin boxes, and our code had to compile on both. Steve was playing a long game, years before the Intel switch he was obviously planning for it, (though I only caught the significance in retrospect).</p><p>Looking at Wordpress, you can see the same combination of long-term planning sustained by profitability. A lot of focus in the startup world is on exits, but I'll be ecstatic if I'm still helping build Mailana in 20 years time. Seeing Matt's dedication to building something to last gave me hope, especially as he gave practical steps to get there.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/07/sewers-and-startups.html</feedburner:origLink></entry>
    <entry>
        <title>The SQL Trap</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/LvDXO76gGfc/the-sql-trap.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/06/the-sql-trap.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-68386869</id>
        <published>2009-06-22T18:05:14-07:00</published>
        <updated>2009-06-22T18:05:14-07:00</updated>
        <summary>Photo by Beatrice Murch Virtually every web developer starts off using a relational database like MySQL. It's so easy to use joins and sorts to implement complex operations your service needs, pretty soon you end up with big chunks of...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Meal_worm_in_venus_fly_trap.jpg" style="display: inline;"><img alt="Venusflytrap" border="0" class="at-xid-6a00d83454428269e2011571421c58970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011571421c58970b-800wi" title="Venusflytrap" /></a> <br /><em><a href="http://commons.wikimedia.org/wiki/File:Meal_worm_in_venus_fly_trap.jpg">Photo by Beatrice Murch</a></em></p><p>Virtually every web developer starts off using a relational database like MySQL. It's so easy to use joins and sorts to implement complex operations your service needs, pretty soon you end up with big chunks of application logic in your SQL queries. You don't know it, but you've just entered The SQL Trap.</p><p>I first heard the phrase from <a href="http://one.valeski.org/">Jud Valeski</a>, but it's something I've seen happen to every startup that deals with massive data sets, and I've struggled with it myself. You build a working service on a small scale, and that success brings in more users and data. Suddenly your database is the bottleneck.</p><p>At this point you have two choices. You can continue writing your queries in expressive high-level SQL and pour resources into speeding up the underlying system, or you can switch to the database equivalent of assembler with a key/value store and write application code to implement the complex operations on top of that.</p><p>In an ideal world a database is a black box - you send a query and the system figures out how to execute that operation speedily. Even in conventional databases though we end up deviating from that, eg by indexing certain rows we know we'll be querying on. After wrestling with speed problems I took a few steps beyond that by denormalizing my tables for common queries to avoid joins at the cost of more fragile update logic. As my data grew, even that wasn't enough, and simple sorts on indexed rows were taking several minutes. I spent some time trying to second-guess MySQL's optimizer by tweaking various <a href="http://dev.mysql.com/doc/refman/6.0/en/server-system-variables.html#sysvar_sort_buffer_size">opaque limits</a>, but it still insisted on sorting the few thousand rows by writing them out to disk and running something called <a href="http://dev.mysql.com/doc/refman/6.0/en/dba-dtrace-ref-filesort.html">FILESORT</a>.</p><p>At this point I was in the trap. Getting further would require somebody with deeper knowledge of MySQL's internal workings, and would take a lot of tweaking of my queries and my system setup. Large companies end up throwing money at consultants and database vendors at this point, which is a great result for the providers!</p><p>Instead as a starving startup I had to bite the bullet and throw out all my lovely queries. I <a href="http://petewarden.typepad.com/searchbrowser/2009/06/how-to-get-tokyo-tyrant-working-in-php.html">switched to a key/value database</a> for storage, and designed the keys and values to get a workable sub-set of the information I needed for any query. I then sucked all that data in PHP and did the sorting and refining there.</p><p>After the initial pain it was a massive relief. I was able to use my standard computer science skills to design the right data-structures and algorithms for my operations, rather than trying to second-guess <a href="http://dev.mysql.com/doc/refman/6.0/en/order-by-optimization.html">the black box of SQL optimization</a>. Sure I've now got a whole different set of problems with more complex application code to maintain, but it's taking a lot less time and resources than the SQL route.</p><p>Don't get me wrong, <a href="http://c2.com/cgi/wiki?PrematureOptimization">premature optimization is still the root of all evil</a>, but if you're dealing with massive datasets and your database is becoming a bottleneck, consider dropping SQL and falling back to something more primitive, before you're trapped!</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/06/the-sql-trap.html</feedburner:origLink></entry>
    <entry>
        <title>How to get Tokyo Tyrant working in PHP</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/e7pMjnzH2Y8/how-to-get-tokyo-tyrant-working-in-php.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/06/how-to-get-tokyo-tyrant-working-in-php.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-68226617</id>
        <published>2009-06-17T19:09:04-07:00</published>
        <updated>2009-06-17T19:09:04-07:00</updated>
        <summary>Photo by NNE Regular readers know that I've been both entranced and frustrated by Tokyo Tyrant. An elegantly minimal key/value database server with great performance, I've burnt days trying to get it running reliably with PHP. I'm extremely happy to...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Godzilla-iwa.JPG" style="display: inline;"><img alt="Godzillarock" border="0" class="at-xid-6a00d83454428269e20115702d9fa7970c image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e20115702d9fa7970c-800wi" title="Godzillarock" /><em>Photo by NNE</em></a> </p><p>Regular readers know that I've been both entranced and <a href="http://petewarden.typepad.com/searchbrowser/2009/03/an-example-of-tokyo-tyrant-in-php.html">frustrated</a> by <a href="http://tokyocabinet.sourceforge.net/tyrantdoc/">Tokyo Tyrant</a>. An elegantly minimal key/value database server with great performance, I've burnt days trying to get it running reliably with PHP.</p><p>I'm extremely happy to say I've now got it working, and it's everything I dreamed it could be. The major bug stopping me was truncation of values more than 16k in size, and that turns out to be a bug in the <a href="http://openpear.org/package/Net_TokyoTyrant">Net_TokyoTyrant PHP wrapper</a> (and arguably a bug in PHP's libraries). The wrapper was using a single <a href="http://us3.php.net/manual/en/function.fread.php">fread()</a> call to get values, but this has size limits, and so needs to be called repeatedly in a loop to get the full result. <a href="http://www.copiousfreetime.org/">Jeremy Hinegardner</a> got me attacking this again after he confirmed he was using Tokyo successfully through Ruby, and after some debugging made me suspicious of fread's reliability <a href="http://buyukliev.blogspot.com/2007/08/no-more-socket-trouble-in-php.html">Blagovest Buyukliev's post</a> confirmed it was the cause, and gave me a drop-in fix.</p><p>I can't find a way to contact the original author of Net_TokyoTyrant to offer a patch, but the code is included in this updated unit test <span class="at-xid-6a00d83454428269e20115702ddf84970c"><a href="http://petewarden.typepad.com/files/tokyotest.php">tokyotest.php</a></span></p><p>Incidentally, I'd highly recommend running through a unix file socket rather than a network socket on localhost, that's been a massive speedup for my use cases.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/06/how-to-get-tokyo-tyrant-working-in-php.html</feedburner:origLink></entry>
    <entry>
        <title>Help the Iranian people</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/qXyNgo8X4mA/help-the-iranian-people.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/06/help-the-iranian-people.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-68078721</id>
        <published>2009-06-13T17:11:01-07:00</published>
        <updated>2009-06-13T17:11:01-07:00</updated>
        <summary>I don't know how things in Iran will turn out, but show your support for their struggle by following Mousavi on one of the few channels left for them, on Twitter: http://twitter.com/mousavi1388 Seeing the photos and videos on there from...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p>I don't know how things in Iran will turn out, but show your support for their struggle by following Mousavi on one of the few channels left for them, on Twitter:<br /><a href="http://twitter.com/mousavi1388">http://twitter.com/mousavi1388</a></p><p>Seeing the photos and videos on there from Tehran is both terrifying and inspiring. My thoughts are with the Iranian people tonight.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/06/help-the-iranian-people.html</feedburner:origLink></entry>
    <entry>
        <title>Why I hate client-side code (and the cloud will win)</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/_rDevczoLBI/why-i-hate-clientside-code-and-the-cloud-will-win.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/06/why-i-hate-clientside-code-and-the-cloud-will-win.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-68005471</id>
        <published>2009-06-11T16:41:02-07:00</published>
        <updated>2009-06-11T16:41:02-07:00</updated>
        <summary>Photo by Saiki Most of my career's been spent on desktop or embedded systems code and I'm a relative newcomer to web programming. Despite the horrors of server-side development (debugger? ha!) it's so much faster to develop web services than...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Verkehrsunfall1.jpg" style="display: inline;"><img alt="Carcrash" border="0" class="at-xid-6a00d83454428269e2011570f91d18970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011570f91d18970b-800wi" title="Carcrash" /><em>Photo by Saiki</em></a> </p><p>Most of my career's been spent on desktop or embedded systems code and I'm a relative newcomer to web programming. Despite the horrors of server-side development (debugger? ha!) it's so much faster to develop web services than traditional apps. The main reason is that I have control over far more of the environment when the code is running on my own box and I'm only relying on a client to display the UI. The testing matrix for Apple Motion was insane because it ran on the GPU, every piece of hardware behaved differently, and so as new graphics cards and machines came out the combinations we had to check exploded.</p><p>So, I have a lot of sympathy with Microsoft, and the Xobni folks doing client-side processing, but <a href="http://support.microsoft.com/kb/2000071">this novel-length KB article on troubleshooting Outlook crashes</a> sums up why users are so happy with web apps, despite their limitations.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/06/why-i-hate-clientside-code-and-the-cloud-will-win.html</feedburner:origLink></entry>
    <entry>
        <title>An implicit data bill of rights</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/W9pHSnPehz8/an-implicit-data-bill-of-rights.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/06/an-implicit-data-bill-of-rights.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67638243</id>
        <published>2009-06-04T11:50:43-07:00</published>
        <updated>2009-06-04T11:50:43-07:00</updated>
        <summary>Photo by Vkx462 I've been lucky enough to spend some time with Ken Zolot this week, who's heavily involved with startups both through MIT and the Kaufmann foundation. He threw some fantastic papers in my direction, and one of the...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/vkx462/2598936967/" style="display: inline;"><img alt="Wethepeople" border="0" class="at-xid-6a00d83454428269e2011570bf60b2970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011570bf60b2970b-800wi" title="Wethepeople" /></a> <br /><em><a href="http://www.flickr.com/photos/vkx462/2598936967/">Photo by Vkx462</a><br /></em><br />I've been lucky enough to spend some time with <a href="http://bznotes.wordpress.com/2009/03/24/ken-zolot-defining-a-new-world-order-lab-for-startups/">Ken Zolot</a> this week, who's heavily involved with startups both through MIT and the <a href="http://www.kauffman.org/">Kaufmann foundation</a>. He threw some fantastic papers in my direction, and one of the most interesting finds was a proposal by <a href="http://web.media.mit.edu/%7Esandy/">Alex Pentland</a> on data privacy, what he calls <a href="http://www.sensenetworks.com/press/wef_globalit.pdf">a New Deal on Data</a>. I've been wrestling with <a href="http://petewarden.typepad.com/searchbrowser/2008/12/how-can-you-mine-email-and-not-become-corporate-spyware.html">how to use implicit data on people's behavior in an ethical and honest way</a> and Pentland's definition is really helpful.</p><p>He draws on English Common Law principles of possession, use and disposal, and applies them to data about ourselves, to match our intuitive feelings of ownership of information about ourselves.</p><p>1. <strong>You have a right to possess your data.</strong> Companies should adopt the role of a Swiss bank account for <br />your data. You open an account (anonymously, if possible), and you can remove your data whenever you’d like.</p><p>2. <strong>You, the data owner, must have full control over the use of your data.</strong> If you’re not happy with <br />the way a company uses your data, you can remove it. All of it. Everything must be opt-in, and not only clearly explained in plain language, but with regular reminders that you have the option to opt out. </p><p>3. <strong>You have a right to dispose or distribute your data.</strong> If you want to destroy it or remove it and redeploy it elsewhere, it is your call. </p><p>In practice these make some technical demands for the ability to export and delete information that few services provide. Try saving out your friend graph from Facebook without violating their terms-of-service! </p><p>This makes it a tough sell for corporations built around hoarding users' information as a proprietary asset. In the long-term though, the benefits of users sharing information widely will benefit services that don't lock in their users. You can already see that with Twitter's API; their lack of restrictions has led to applications that weren't even imagined before the data became available.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/06/an-implicit-data-bill-of-rights.html</feedburner:origLink></entry>
    <entry>
        <title>How can you measure influence?</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/YJ1CGxBMIOo/how-can-you-measure-influence.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/06/how-can-you-measure-influence.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67609447</id>
        <published>2009-06-03T17:54:10-07:00</published>
        <updated>2009-06-03T17:54:10-07:00</updated>
        <summary>Influence is the measure of your ability to persuade others to take an action. Micah of Lijit gave a barn-storming talk at Boulder NewTech last night, describing how they are starting to measure blogger's influence. It's not publicly released yet,...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Daniel_Huntington_Philosophy_and_Christian_Art.jpg" style="display: inline;"><img alt="Persuasion" border="0" class="at-xid-6a00d83454428269e201156fc7bc79970c image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e201156fc7bc79970c-800wi" title="Persuasion" /></a> </p><p>Influence is the measure of your ability to persuade others to take an action. <a href="http://learntoduck.com/">Micah</a> of <a href="http://lijit.com/">Lijit</a> gave a barn-storming talk at <a href="http://www.bdnewtech.com/">Boulder NewTech</a> last night, describing how they are starting to measure blogger's influence. It's not publicly released yet, but they're combining both raw audience figures and the user activity they measure through the Lijit widget, things like searches and clicks.</p><p>This is exciting to me because nobody's been able to use implicit data on people's behavior in a widespread way, because nobody's had access to a large enough set. I'm bullish on Lijit's prospects because they are in a unique position with hundreds of millions of user interactions across thousands of sites in their database (<a href="http://oneriot.com/">OneRiot</a> are the only other company I can think of that's got access to more info through its browser add-on).</p><p>Lijit's measure is a big step forward, but did leave me with a couple of questions. Influence has to be defined around an action, but their measure seems to be positioned as a universal metric. <a href="http://icanhascheezburger.com/">Lolcats</a> is a lot more likely to make me buy a t-shirt than the <a href="http://www.sunlightfoundation.com/">Sunlight Foundation</a>, but lolcats has no influence on how I vote. If you pick a single influence number you can't capture that.</p><p>There's also the question of who you're influencing. A picture on lolcats will get a lot more pageviews than a post on <a href="http://feld.com/">Brad's blog</a>, but a lot more influential people in the tech community will see the blog post. Google's <a href="http://en.wikipedia.org/wiki/PageRank">PageRank</a> tackles this by taking the influence of the people who link to a site into account to calculate its influence. That means a bunch of barely-read geocities (RIP) sites linking to you doesn't matter as much as a link from the New York Times. There's no equivalent way of compensating for the relevance of the users whose activity you're measuring. Having a single Steve Jobs viewing your pages is more influential than 1000 random teenagers.</p><p>I've some thoughts on fixing this, and actually started running PageRank on Twitter conversations to figure out who was most influential on the service, but had to put that on hold to focus on other work. I can't wait for Lijit to launch the rankings, despite all my niggling this should be a massive jump forward!</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/06/how-can-you-measure-influence.html</feedburner:origLink></entry>
    <entry>
        <title>Are you taking market risk or technology risk?</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/vZA-u4cUHhE/are-you-taking-market-risk-or-technology-risk.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/06/are-you-taking-market-risk-or-technology-risk.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67559285</id>
        <published>2009-06-02T13:33:29-07:00</published>
        <updated>2009-06-02T13:33:29-07:00</updated>
        <summary>Photo by MHuang If you're working in the pharmaceutical industry, your main risk is your new treatment won't work. There's a massive number of medical problems people are certain to pay money to solve, if you can create a drug...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/mhuang/344805404/" style="display: inline;"><img alt="Brokencasio" border="0" class="at-xid-6a00d83454428269e201156fc3fb9e970c image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e201156fc3fb9e970c-800wi" title="Brokencasio" /></a> <br /><a href="http://www.flickr.com/photos/mhuang/344805404/">Photo by MHuang</a></p><p>If you're working in the pharmaceutical industry, your main risk is your new treatment won't work. There's a massive number of medical problems people are certain to pay money to solve, <em><strong>if</strong></em> you can create a drug that works.</p><p>In the toy business, it's completely different. Building that new Pet Rock or Cabbage Patch Doll is easy, but for very hard-to-predict reasons people may not like it. You may not be able to distribute or market it even if there are some who do.</p><p>Most startups lie on a spectrum between these two extremes of technology and market risk, but I've learnt it's crucial to understand what your mix is. People from a business background prefer market risk, because that's something they know how to measure and mitigate. Techies like me have a bias towards hard engineering problems that they know how to solve.</p><p>I started off thinking that Mailana's main risk was technology - it's really hard to integrate with Exchange, build Outlook plugins and analyze millions of emails in real time. There were all sorts of end-user problems that can be solved with the information derived from that, so once the system was built, customers would come. You can chuckle at my naivity, but I never understood that there were two separate risks. I put a lot more effort into coding than understanding the market, and then discovered there were all sorts of unexpected cultural issues around privacy that scuppered my first attempt when it was in front of customers</p><p>The beautiful thing about market risk is that you can take very simple steps to reduce it before you spend months coding. Build slideware and ask your potential customers if they'd buy a working version. <a href="http://startuplessonslearned.blogspot.com/2008/11/using-adwords-to-assess-demand-for-your.html">Buy some relevant AdWords and point them at a dummy product page to see if anyone signs up for more information</a>. </p><p>If you're reading this, you're not Pfizer and you <em><strong>do</strong></em> have a market risk. Take a long hard look at your business and see what you can do to reduce it.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/06/are-you-taking-market-risk-or-technology-risk.html</feedburner:origLink></entry>
    <entry>
        <title>How to make connections with people you don't know</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/XllvtqYb4n4/how-to-make-connections-with-people-you-dont-know.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/05/how-to-make-connections-with-people-you-dont-know.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67422909</id>
        <published>2009-05-29T13:32:15-07:00</published>
        <updated>2009-05-29T13:48:11-07:00</updated>
        <summary>Matt Van Horn from Digg gave a talk I wasn't expecting last night; the practical side of networking. The whole mission of Mailana is "You guys should talk", I love it when I can connect two people who can help...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://icanhascheezburger.com/2008/11/03/funny-pictures-stalking-ur-doin-it-wrong/" style="display: inline;"><img alt="Stalking" border="0" class="at-xid-6a00d83454428269e201156fbab36d970c image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e201156fbab36d970c-800wi" title="Stalking" /></a> <br /><a href="http://twitter.com/mvanhorn">Matt Van Horn</a> from Digg gave a talk I wasn't expecting last night; the practical side of networking. The whole mission of Mailana is "You guys should talk", I love it when I can connect two people who can help each other. To make that happen, you have to be able to build bridges with strangers; Matt revealed his personal toolkit for reaching the right people.</p><p>Matt started off with the LOLCAT picture because if you're not used to networking it <strong>can</strong> feel creepy and exploitative. What I've realized, and Matt emphasized, is that you need to approach it as a way of helping other people, not just be a taker. It's a long-term project, not something you desperately turn to at the last minute when you need a job. </p><p>Having said that, the story of how Matt got to be business development manager at Digg is an example of how chutzpah pays off. He targeted Digg as a company he really wanted to work for, and queued for 2 hours at a trade show to get a business card from Jay Adelson, their CEO. After that he emailed him repeatedly trying to set up a meeting, as well as sending on relevant newspaper articles to the Digg offices. Then he guessed a couple of email addresses for their recruiter and CRO, and eventually landed an interview. They asked him to write a detailed description of the position he wanted to create in the company and how it would help Digg. Finally that landed him the job! Wouldn't you hire somebody who showed that much determination and resourcefulness?</p><p>Here's a few of the tips Matt gave out for getting in touch with people you want to talk to, but can't get a 'warm' introduction for:</p><p>- <strong>Guess email addresses</strong>. Most companies have a fixed format, eg pete.warden@company.com, pwarden@company.com, pete@company.com. Figure it out from public examples or just guess and fire off a message.</p><p>- <strong>Call at odd hours</strong>. Receptionists are usually only there 9-5, but most of us work before and after, so there's a good chance somebody helpful will pick up if you ring 7:00am to 9:00am or 5:00pm to 7:00pm.</p><p>- <strong>Contact them through random social networks</strong>. Last.fm and other common sites with a social element have ways of sending their users messages. If you can find the account of the person you're looking for, send them a message and it will most likely show up in their regular inbox.</p><p>- <strong>Send an 'I've worked with you' connect request on LinkedIn</strong>. Even if you haven't been a colleague, you've got a chance to explain in the note why you want to talk to them. I have <a href="http://www.linkedin.com/static?key=pro_info&amp;trk=sm_pro">a 'pro' account on LinkedIn</a> which lets me send a limited number of messages to people outside my connections, but a sparing use of this approach is much cheaper!</p><p>I have a few more ideas I've found effective:</p><p>- <strong>Blog about people or companies you like</strong>. I'll often spend time researching  companies or entrepreneurs I think are really cool so I can learn something, and then share it as a blog post. An awesome side-effect of that is that I often hear back from the people I've written about, that's how some of my best collaborations have come about. As I wrote in <a href="http://petewarden.typepad.com/searchbrowser/2007/10/beetlejuice-bee.html">Beetlejuice, Beetlejuice, Beetlejuice</a>, just saying someone's name on the internet is often the best way to get in touch.</p><p>- <strong>Comment on their blogs or Twitter streams</strong>. I find myself doing this naturally with interesting people I'm following, but it's also a great way to build a relationship and demonstrate a sustained commitment.</p><p>The key to all of these is thoughtfulness and sincerity. If you really don't care about what they're doing it will come across and you'll just be wasting time. Be natural, be passionate. Follow up, and show you're listening by referencing previous conversations when you do. Spend more time figuring out how you can help them than how they can help you.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/05/how-to-make-connections-with-people-you-dont-know.html</feedburner:origLink></entry>
    <entry>
        <title>Skynet runs on Windows/MFC</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/Zafc67db9ug/skynet-runs-on-windowsmfc.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/05/skynet-runs-on-windowsmfc.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67378105</id>
        <published>2009-05-28T11:32:17-07:00</published>
        <updated>2009-05-28T11:32:17-07:00</updated>
        <summary>Me and Liz were re-watching season 2 of the Sarah Connor Chronicles when I spotted some familiar-looking code on John Henry's bootup screen. WM_ACTIVATETOPLEVEL sure looks like a Win32 constant, and googling led me to MSDN documentation revealing it's a...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://petewarden.typepad.com/.a/6a00d83454428269e2011570ad37cf970b-pi" style="display: inline;"><img alt="Skynetscreenshot" border="0" class="at-xid-6a00d83454428269e2011570ad37cf970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011570ad37cf970b-800wi" title="Skynetscreenshot" /></a> </p><p>Me and Liz were re-watching season 2 of the Sarah Connor Chronicles when I spotted some familiar-looking code on John Henry's bootup screen. WM_ACTIVATETOPLEVEL sure looks like a Win32 constant, and googling led me to <a href="http://msdn.microsoft.com/en-us/library/xkd95027%28VS.80%29.aspx">MSDN documentation revealing it's a private message associated with MFC</a>. It looks like autosysconf is running some C++ code to boot up the AI. The other evidence in the series is ambiguous about what side John Henry is on, but AI code in MFC is clearly evil. Interestingly the most common use of FEP is from<a href="http://smbx.org/index.php/index.php?option=com_content&amp;task=view&amp;id=18&amp;Itemid=76"> The Symbolics Lisp Machine</a> as a front end processor, which would be a much more sensible language.</p><p>Interestingly though John Henry (and presumably his brother Skynet) appears to be Windows/x86-based, <a href="http://www.eeggs.com/items/19003.html">Terminators are known to use Apple II/6502 processors</a>. The thought of dealing with porting between those two almost makes me feel sorry for our future robot overlords.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/05/skynet-runs-on-windowsmfc.html</feedburner:origLink></entry>
    <entry>
        <title>Scrape your call history with Selenium</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/GaEApj0mfmU/scrape-your-call-history-with-selenium.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/05/scrape-your-call-history-with-selenium.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67335735</id>
        <published>2009-05-27T13:30:32-07:00</published>
        <updated>2009-05-27T13:30:32-07:00</updated>
        <summary>Photo by WallyG There's a lot of interesting data out on the web that's locked up in web pages, with no API access to make it machine-readable. I'm particularly interested in phone records; just like emails, IMs and tweets they...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://www.flickr.com/photos/wallyg/1393145965/" style="display: inline;"><img alt="Floorscrapers" border="0" class="at-xid-6a00d83454428269e2011570aa899b970b image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011570aa899b970b-800wi" title="Floorscrapers" /></a> <br /><em><a href="http://www.flickr.com/photos/wallyg/1393145965/">Photo by WallyG</a><br /></em><br />There's a lot of interesting data out on the web that's locked up in web pages, with no API access to make it machine-readable. I'm particularly interested in phone records; just like emails, IMs and tweets they form a detailed shadow of your social network. To tackle automatically grabbing my phone call history from the AT&amp;T site I turned to <a href="http://seleniumhq.org/">Selenium</a>, originally built as a testing tool but also well-suited to <a href="http://en.wikipedia.org/wiki/Screen_scraping">screen-scraping</a> on sites with complex login procedures.</p><p>To get started you can install the Selenium IDE in Firefox and record the steps you'd manually take to log in and get to the screen you're interested in. Selenium turns those actions into a script you can manually edit and replay. In my case I needed to add some 'type' commands to enter the phone number and password since those weren't captured. Here's the resulting script, you should be able to run this on your own account to download your call details in a csv file once you've added your own details:</p><p><span class="at-xid-6a00d83454428269e2011570aa8fd5970b"><a href="http://petewarden.typepad.com/files/attdownload">Download Attdownload</a></span></p><p>What's really handy is that you can use <a href="http://seleniumhq.org/projects/remote-control/">Selenium Remote Control</a> to then re-run that same script from your server, using PHP or other popular languages. It's a bit of a hack because it still requires windowing capabilities so it can run within Firefox and a proxy server process to insert the needed code into external pages, but once it's running it's an incredibly flexible way to deal with constantly changing websites.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/05/scrape-your-call-history-with-selenium.html</feedburner:origLink></entry>
    <entry>
        <title>Move fast and break stuff</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/ED41zs0MuY8/move-fast-and-break-stuff.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/05/move-fast-and-break-stuff.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67289161</id>
        <published>2009-05-26T11:49:36-07:00</published>
        <updated>2009-05-26T11:49:36-07:00</updated>
        <summary>Photo by mpires I recently talked to someone at a very innovative large web company (under Frie-NDA) who described their official engineering motto as "Move fast and break stuff". I love that philosophy because it ties in to research showing...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Emergency.jpg" style="display: inline;"><img alt="Breakglass" border="0" class="at-xid-6a00d83454428269e201156fb224b6970c image-full " src="http://petewarden.typepad.com/.a/6a00d83454428269e201156fb224b6970c-800wi" title="Breakglass" /></a> <br /><em><a href="http://commons.wikimedia.org/wiki/File:Emergency.jpg">Photo by mpires</a><br /></em><br />I recently talked to someone at a very innovative large web company (under Frie-NDA) who described their official engineering motto as "Move fast and break stuff". I love that philosophy because it ties in to <a href="http://bobsutton.typepad.com/my_weblog/2007/10/why-rewarding-p.html">research showing that really successful people get there by trying a lot more approaches than average folks</a>. They fail faster, cheaper and more often than ordinary people.</p><p>The key to making that work is that the cost of the total failures must be less than the value of the cumulative successes. This is a hard problem, because the default for most organizations is "managing to avoid blame". Their implicit motto is <a href="http://bobsutton.typepad.com/my_weblog/2009/02/reward-success-and-failure-punish-inaction.html">"Reward success and inaction, punish failure"</a>, which ends up making inaction the most appealing course. "Move fast and break stuff" encourages a different mentality, "Reward success <em><strong>and</strong></em> failure, punish inaction".</p><p>So how do you get that mindset in your organization? The most important step is to de-stigmatize failure. The web company I mentioned makes it clear to their engineers that they will not be punished if they break the site, even if it costs millions of dollars in lost revenue. I didn't get to dig deeper on that topic but I'd imagine there are some serious post-mortem procedures to understand why things go wrong and build tools to prevent a recurrence, like the <a href="http://startuplessonslearned.blogspot.com/2008/11/five-whys.html">Five Whys</a>.</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/05/move-fast-and-break-stuff.html</feedburner:origLink></entry>
    <entry>
        <title>Can you help me shape Mailana?</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/VuFFpFwtoCc/can-you-help-me-shape-mailana.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/05/can-you-help-me-shape-mailana.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67252633</id>
        <published>2009-05-25T11:26:43-07:00</published>
        <updated>2009-05-25T11:26:43-07:00</updated>
        <summary>I've got some important and tricky decisions to make about the future direction of Mailana. To make those choices I need to better understand the problems that people are facing, so I've designed a short 8 question survey. If you...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Lama_Sculptor.jpg" style="display: inline;"><img alt="Sculptor" border="0" class="at-xid-6a00d83454428269e201156fafe291970c " src="http://petewarden.typepad.com/.a/6a00d83454428269e201156fafe291970c-800wi" title="Sculptor" /></a> </p><p>I've got some important and tricky decisions to make about the future direction of <a href="http://twitter.mailana.com/">Mailana</a>. To make those choices I need to better understand the problems that people are facing, so I've designed <a href="http://www.surveymonkey.com/s.aspx?sm=GAxrTx02sg8Or3c1J1cZYg_3d_3d">a short 8 question survey</a>. If you are interested in the work I'm doing, it will help me a lot if you're able to take a few minutes to fill it out. It also gives you the chance to sign up for early previews of new features before they're publicly released. Thanks!</p></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/05/can-you-help-me-shape-mailana.html</feedburner:origLink></entry>
    <entry>
        <title>10 ways to kill my startup</title>
        <link rel="alternate" type="text/html" href="http://feedproxy.google.com/~r/typepad/petewarden/~3/QmwP47CTZp8/10-ways-to-kill-my-startup.html" />
        <link rel="replies" type="text/html" href="http://petewarden.typepad.com/searchbrowser/2009/05/10-ways-to-kill-my-startup.html" thr:count="0" />
        <id>tag:typepad.com,2003:post-67226947</id>
        <published>2009-05-24T14:10:06-07:00</published>
        <updated>2009-05-24T14:10:06-07:00</updated>
        <summary>Planning is overwhelming, it's hard to know where to begin. One solution I've picked up is 'anti-planning'; write out all the actions you'd take if you wanted to ensure failure. It's far easier to remember the background to past disasters...</summary>
        <author>
            <name>pwarden</name>
        </author>
        
        
<content type="xhtml" xml:lang="en-US" xml:base="http://petewarden.typepad.com/searchbrowser/">
<div xmlns="http://www.w3.org/1999/xhtml"><p><a href="http://commons.wikimedia.org/wiki/File:Dangclass6_1a.png" style="display: inline;"><img alt="Poisonlabel" border="0" class="at-xid-6a00d83454428269e2011570a360e7970b " src="http://petewarden.typepad.com/.a/6a00d83454428269e2011570a360e7970b-800wi" title="Poisonlabel" /></a> </p><p>Planning is overwhelming, it's hard to know where to begin. One solution I've picked up is 'anti-planning'; write out all the actions you'd take if you wanted to ensure failure. It's far easier to remember the background to past disasters than to understand why things succeeded. With those fresh in your mind you'll find drawing up an actual plan much simpler. It's also great to keep pinned to your notice-board, to remind yourself when you do start wandering towards one of those seductive traps.</p><p>Here's how I'd sabotage my startup, in 10 easy steps:</p><ol>
<li><a href="http://onstartups.com/home/tabid/3339/bid/6739/Entrepreneurs-and-Hey-There-s-A-Shiny-New-Thing.aspx">Get distracted by every shiny new idea and forget what my big goal is</a></li>
<li>Leave my product to sell itself; build it and they will come, right?</li>
<li>Have no idea who my customers are</li>
<li>When I describe what I'm building, focus on the technology</li>
<li>Worry about my grand strategy, not the logistics of executing</li>
<li>Spend more time meeting with investors than customers</li>
<li>Build features customers don't want</li>
<li>Focus on minor bug fixes</li>
<li>Ignore people who want to help</li>
<li>Rely on my intuition to tell what's working, not <a href="http://startuplessonslearned.blogspot.com/2008/11/what-is-customer-development.html">dull metrics</a></li>
</ol></div>
</content>


    <feedburner:origLink>http://petewarden.typepad.com/searchbrowser/2009/05/10-ways-to-kill-my-startup.html</feedburner:origLink></entry>
 
</feed><!-- ph=1 --><!-- nhm:dynamic-ssi -->
