<?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>Trevor Burnham</title>
	<atom:link href="http://trevorburnham.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://trevorburnham.com</link>
	<description>Sure, it works in practice...</description>
	<lastBuildDate>Tue, 09 Mar 2010 16:19:40 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>My Idea Sucks</title>
		<link>http://trevorburnham.com/2010/03/06/my-idea-sucks/</link>
		<comments>http://trevorburnham.com/2010/03/06/my-idea-sucks/#comments</comments>
		<pubDate>Sat, 06 Mar 2010 20:35:18 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[autobiography]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=300</guid>
		<description><![CDATA[Just got back from Tech­Stars for a Day, a meetup of several Tech­Stars appli­cants, alums and mentors. The latter two groups gave talks to us aspiring tech entre­pre­neurs, of which the key recur­ring theme was: Your idea sucks. Or: No one actually does the idea they applied with. Or: Your team is what matters.]]></description>
			<content:encoded><![CDATA[<p>Just got back from <a href="http://www.techstars.org/techstars-for-a-day/boulder2010/" class="liexternal">TechStars for a Day</a>, a meetup of several TechStars applicants, alums and mentors. The latter two groups gave talks to us aspiring tech entrepreneurs, of which the key recurring theme was: <strong>Your idea sucks.</strong> Or: <strong>No one actually does the idea they applied with.</strong> Or: <strong>Your team is what matters.</strong></p>
<p>Now, this assertion is absurd on its face, so it took me a while to grok what these veteran founders and investors were talking about. If the idea doesn’t matter, why does the application even ask for it? And even among the alums present, some (such as <a href="http://sendgrid.com/" class="liexternal">SendGrid</a>) had succeeded with essentially the same concept they’d applied with. Sure, obviously the ability to execute—to write good (or, preferably, <strong>amazing</strong>) software in a limited timeframe—is more important than the idea. As one speaker put it, “An A team with a B idea is way more likely to succeed than a B team with an A idea.” But what’s this about ideas sucking?</p>
<p>That glib pronouncement finally made sense as the founder alums spoke about their experiences. As it turns out, most (like <a href="http://www.crunchbase.com/company/socialthing" class="liexternal">SocialThing</a>) applied with an idea in a certain space (they’d wanted to create a competitor to MySpace), realized during the summer that there was a better opportunity in the same space (a utility that lets you sync information across multiple social networks), and built that instead. <em>Aha!</em> Now I got it: “Your idea sucks” is just a pithy way of expressing the following:</p>
<ol>
<li>No matter how good your idea may be, <em>do not</em> regard it as sacred.</li>
<li>You need to spend time <em>listening</em> to (potential) customers and modifying your idea accordingly.</li>
<li>Having a good idea <em>does</em> matter, but only insofar as it <strong>a)</strong> shows that you are capable of generating good ideas, and <strong>b)</strong> shows that you’re interested in a market with potential.</li>
</ol>
<p>As it happens, I read Steve Blank’s <em><a href="http://www.amazon.com/gp/product/0976470705?ie=UTF8&#038;tag=trevblog-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=0976470705" class="liexternal">The Four Steps to the Epiphany</a></em> on the flight over, on Dug Song’s recommendation. Blank’s theme is similar to the above, saying that startups should center their efforts on “customer development” rather than “product development,” lest they develop a first-rate solution to a problem no one has. To cite one of his examples: The Segway had a great engineering team, but they fell in love with their idea rather than getting feedback from the folks they were planning to sell the thing to.</p>
<p>So, how does this relate to Theoryville, the idea I’ve been fleshing out with my teammates since November? Based on early feedback from potential customers, I believe that our strategy should be to resegment the statistical software market into “collaborative” and “non-collaborative” software by introducing the first collaboration-oriented stats app for professional researchers and students. That’s the space we want to go into. But beyond that, our ears are open. We’ve designed a non-linear graphical workflow interface that we all think is quite clever, but we won’t really know if it solves a problem until we start showing it to people. We think our initial target market will be social scientists, but we’re also considering classrooms, and some of the folks we talked to at TS4AD suggested that financial analysts and MBA students would <em>love</em> our easy-to-use interface. We need to test those assumptions, and we can’t wait until the end of the summer to do so. We have to do so <strong>constantly</strong>.</p>
<p>I have to admit that Paul Graham compressed all of the above down to just seven words in <a href="http://www.paulgraham.com/really.html" class="liexternal">What Startups Are Really Like</a>, #10: <strong>Fast iteration is the key to success.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/03/06/my-idea-sucks/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>This Week in Theoryville</title>
		<link>http://trevorburnham.com/2010/02/26/this-week-in-theoryville/</link>
		<comments>http://trevorburnham.com/2010/02/26/this-week-in-theoryville/#comments</comments>
		<pubDate>Fri, 26 Feb 2010 16:36:16 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[autobiography]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=289</guid>
		<description><![CDATA[On Tuesday, Noah and I had lunch with Dug Song, the central hub of Ann Arbor’s entre­pre­neur­ial ecosys­tem. The guy is a walking gold mine of startup business knowl­edge. The thing he empha­sized most was Paul Graham’s highest prin­ci­ple of startup success: Know your cus­tomers. It’s an obvious rule, but we realized that we haven’t been giving it the priority it deserves. ]]></description>
			<content:encoded><![CDATA[<p>It’s been an exciting/intense/terrifying/gratifying week for me. It started with a valuable lesson: <strong>If you want your blog to get more hits, announce that you’re leaving a PhD program.</strong> Responses at SI have been largely warm: “We hate to see you go, but you’ve gotta do what you feel is right”; “You’ve been a terrific person to have in our community”; “You’re launching a startup? That’s so exciting!” That’s been a great relief. Some schools would see a second-year dropout as a failed investment. That I haven’t gotten that reaction is a testament to the friendly, positive atmosphere at SI.</p>
<p>Meanwhile, following the Theoryville team’s surprise chat with Harj of Y Combinator, we’ve received more and more positive signals. First, we were invited to <a href="http://www.techstars.org/techstars-for-a-day/boulder2010/" class="liexternal">TechStars for a Day</a>; so, one week from today, Noah and I will be networking up a storm in Boulder! (Tom had a conflicting obligation.) We were named as <a href="http://momentum-mi.com/blog/entry/top-25-announced/" class="liexternal">Momentum MI</a> finalists, and awarded free summer office space by <a href="http://techarb.org/" class="liexternal">TechArb</a>, putting us into contention for the <a href="http://cfe.umich.edu/businessaccelerator" class="liexternal">TechArb Accelerator</a> (this year’s successor to the <a href="http://rpmvc.com/rpm10/" class="liexternal">RPM10</a>). We’ve received encouraging queries from the folks at <a href="http://www.dreamitventures.com/" class="liexternal">DreamIt Ventures</a> and <a href="http://www.betaspring.com/" class="liexternal">BetaSpring</a>. And all the while, we’ve been building our first functional demo, set to go online before TS4AD.</p>
<p>On Tuesday, Noah and I had lunch with Dug Song, the central hub of Ann Arbor’s entrepreneurial ecosystem. The guy is a walking gold mine of startup business knowledge. The thing he emphasized most was Paul Graham’s <a href="http://paulgraham.com/13sentences.html" class="liexternal">highest principle of startup success</a>: <em>Know your customers.</em> It’s an obvious rule, but we realized that we haven’t been giving it the priority it deserves. Sure, a working demo is nice, but input from prospective customers is <strong>priceless</strong>. We need to fill in the blank in “I’d pay for Theoryville if it let me _________,” and convince investors that there are tens of thousands of researchers with that same blank.</p>
<p>We also realized during our conversation with Dug that a secondary market we’d only been glancing at might actually be our <em>primary</em> market: <strong>education</strong>. These days, introductory courses on statistics are typically taught using Stata, SPSS, or R. Many of those students have never written computer code before in their lives, so they’re encountering both programming and statistics for the first time—a harrowing experience! Wouldn’t it be nice to have a code-free environment that could be used for rigorous hands-on data analysis in the classroom?</p>
<p>So, our strategy right now: Finish our rough, built-in-two-weeks proof-of-concept demo (what we’re calling <strong>Version 0.01a</strong>). Then contact as many potential users as we can (not just the handful of profs and grad students we know personally) to find out how we can make their research/teaching <em>simpler, faster,</em> and <em>more fun.</em></p>
<p>And what about you, dear reader? How might Theoryville make <strong>your</strong> life better?</p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/02/26/this-week-in-theoryville/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Merit of Ideas</title>
		<link>http://trevorburnham.com/2010/02/19/the-merit-of-ideas/</link>
		<comments>http://trevorburnham.com/2010/02/19/the-merit-of-ideas/#comments</comments>
		<pubDate>Fri, 19 Feb 2010 23:25:12 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[autobiography]]></category>
		<category><![CDATA[startup]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=285</guid>
		<description><![CDATA[The story so far: Leaving grad school. Two weeks to show that my team has the potential to turn our idea into a useful, slick-looking app this summer. No pressure.]]></description>
			<content:encoded><![CDATA[<p>I’m leaving the University of Michigan School of Information PhD program after this semester. It’s been a great two years, and I’m very grateful for the <a href="http://stiet.si.umich.edu/" title="Socio-technological infrastructure for e-commerce transactions" class="liexternal">STIET</a> fellowship that’s supported me. At SI, I’ve been surrounded by people who think deeply about technology not for its own sake, but for how it affects our lives and our culture. I’ve gotten the chance to take courses on everything from recommender systems to methods in experimental economics, not to mention the wonderful first-year micro and game theory sequence at the UMich Econ department. I got to present a short paper at the <a href="http://www.hcomp2009.org/" class="liexternal">HCOMP</a> conference in Paris last summer. And I’ve had the honor of serving on the Faculty Search Committee, helping to decide who the school will hire from an extremely talented pool of applicants. So this is not a decision I’ve made lightly. It is, however, one I’m sure of.</p>
<p>When I first came here, I liked to tell people that in five years I’d be an absent-minded professor, most likely of Economics. My advisor helped me to find novel areas of research, and I started perusing the literature and creating theoretical models. But I soon found that I was much more excited about building stuff that people could actually use than I was about writing academic papers. Last summer, when I built a social bookmarking app called Quocial (now defunct), I thought the two interests could co-exist. Since then, though, I’ve gradually reached the conclusion that the optimal allocation of my time is 100% software development, 0% academic stuff. Which means leaving grad school and seeking funding for my dream: <strong>To create an amazing, web-based alternative to STATA</strong>.</p>
<p>Now, of course I don’t expect to attract investors on the basis of my idea alone. (What do you think this is, the <em>1990s?)</em> To quote a trope that’s rightly permeated the startuposphere: “<a href="http://www.oreillynet.com/onlamp/blog/2005/08/ideas_are_just_a_multiplier_of.html" title="Derek Sivers – Ideas are just a multiplier of execution" class="liexternal">Ideas are worth nothing unless executed. Execution is worth millions.</a>” And I know I’m not the only one who’s had this idea. Someone <a href="http://news.ycombinator.com/item?id=1109396" class="liexternal">posted a rough prototype</a> to Hacker News just two weeks ago that was very similar in concept, in fact.</p>
<p>Fortunately, I have more than just the idea. I have two amazing SI Master’s students as teammates, <a href="http://noahliebman.com/" class="liexternal">Noah Liebman</a> and <a href="http://tom-haynes.com/" class="liexternal">Tom Haynes</a>. We call ourselves <a href="http://theoryville.com/" class="liexternal">Theoryville</a>. We’ve been meeting since November to flesh out the concept and do some basic market research, and we’ve recently started pitching our idea around.</p>
<p>Today we got a nice call from Harj Taggar, founder of Auctomatic and currently a part of <a href="http://ycombinator.com" class="liexternal">Y Combinator</a>, asking us some informal questions about our application. One of the things he encouraged us to do was to build a demo before it comes time for him and the rest of the Y Combinator folks to pick finalists. Coincidentally, I’d told my team the same thing earlier this week: <strong>We need a demo.</strong> We need to show that we can execute.</p>
<p>And that’s the story so far: Leaving grad school. Two weeks to show that my team has the potential to turn our idea into a useful, slick-looking app this summer. No pressure.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/02/19/the-merit-of-ideas/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Maps as Virtual Reality</title>
		<link>http://trevorburnham.com/2010/02/15/maps-as-virtual-reality/</link>
		<comments>http://trevorburnham.com/2010/02/15/maps-as-virtual-reality/#comments</comments>
		<pubDate>Mon, 15 Feb 2010 18:45:01 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[augmented reality]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=270</guid>
		<description><![CDATA[The work the Photosynth team has been doing since their acquisition by Microsoft is truly mind-blowing. I had to check my watch during this 8-minute TED talk by Blaise Aguera y Arcas to make sure that it was still 2010, not 2100.]]></description>
			<content:encoded><![CDATA[<p>I’m not normally very excited about augmented reality apps. Typical use cases tend to go something like: “So, if I point my iPhone camera at that Starbucks, you’ll tell me that there’s a Starbucks there? <strong>Awesome.</strong>”</p>
<p>But the work the Photosynth team has been doing since their acquisition by Microsoft is truly mind-blowing. I had to check my watch during this 8-minute TED talk by Blaise Aguera y Arcas to make sure that it was still 2010, not 2100.</p>
<div style="text-align: center;"><object width="446" height="326"><param name="movie" value="http://video.ted.com/assets/player/swf/EmbedPlayer.swf"></param><param name="allowFullScreen" value="true" /><param name="wmode" value="transparent"></param><param name="bgColor" value="#ffffff"></param><param name="flashvars" value="vu=http://video.ted.com/talks/dynamic/BlaiseAguerayArcas_2010-medium.mp4&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/BlaiseAgueraYArcas-2010.embed_thumbnail.jpg&#038;vw=432&#038;vh=240&#038;ap=0&#038;ti=766&#038;introDuration=16500&#038;adDuration=4000&#038;postAdDuration=2000&#038;adKeys=talk=blaise_aguera;year=2010;theme=new_on_ted_com;theme=a_taste_of_ted2010;theme=the_creative_spark;event=TED2010;&#038;preAdTag=tconf.ted/embed;tile=1;sz=512x288;" /><embed src="http://video.ted.com/assets/player/swf/EmbedPlayer.swf" pluginspace="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" wmode="transparent" bgColor="#ffffff" width="446" height="326" allowFullScreen="true" flashvars="vu=http://video.ted.com/talks/dynamic/BlaiseAguerayArcas_2010-medium.mp4&#038;su=http://images.ted.com/images/ted/tedindex/embed-posters/BlaiseAgueraYArcas-2010.embed_thumbnail.jpg&#038;vw=432&#038;vh=240&#038;ap=0&#038;ti=766&#038;introDuration=16500&#038;adDuration=4000&#038;postAdDuration=2000&#038;adKeys=talk=blaise_aguera;year=2010;theme=new_on_ted_com;theme=a_taste_of_ted2010;theme=the_creative_spark;event=TED2010;"></embed></object></div>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/02/15/maps-as-virtual-reality/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Flicker-free Typekit</title>
		<link>http://trevorburnham.com/2010/01/28/flicker-free-typekit/</link>
		<comments>http://trevorburnham.com/2010/01/28/flicker-free-typekit/#comments</comments>
		<pubDate>Fri, 29 Jan 2010 01:26:22 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[coding]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Typekit]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=254</guid>
		<description><![CDATA[I’m a fan of Typekit. Being able to go beyond the old Arial-​​Verdana-​​Times-​​Georgia paradigm, on any modern browser, without Flash (unlike sIFR), and with selec­table text (unlike Cufón), is a dream come true. One problem, though: It takes a few mil­lisec­onds to load up and render those fonts. That’s not so bad in itself; what’s bad is that the browser renders every­thing in non-​​Typekit fonts first, creating an annoying flicker every time the page loads as the text gets replaced by fancier fonts.]]></description>
			<content:encoded><![CDATA[<p>I’m a fan of <a href="http://typekit.com" class="liexternal">Typekit</a>. Being able to go beyond the old Arial-Verdana-Times-Georgia paradigm, on any modern browser, without Flash (unlike <a href="http://wiki.novemberborn.net/sifr/" title="Scalable Inman Flash Replacement" class="liexternal">sIFR</a>), and with selectable text (unlike <a href="http://cufon.shoqolate.com/" title="Pure JavaScript text replacement" class="liexternal">Cufón</a>), is a dream come true.</p>
<p>One problem, though: It takes a few milliseconds to load up and render those fonts. That’s not so bad in itself; what’s bad is that the browser renders everything in non-Typekit fonts first, creating an annoying flicker every time the page loads as the text gets replaced by fancier fonts.</p>
<p>Fortunately, there’s a fairly easy solution (though not an officially supported one—see below). Just add this to your site body:</p>

<div class="wp_syntax"><table><tr><td class="line_numbers"><pre>1
2
3
4
5
6
7
8
9
10
11
12
13
</pre></td><td class="code"><pre class="javascript" style="font-family:monospace;">&lt;body id=&quot;domain-com&quot;&gt;
  &lt;script type=&quot;text/javascript&quot; src=&quot;http://use.typekit.com/KIT_ID.js&quot;&gt;&lt;/script&gt;
  <span style="color: #339933;">&lt;</span>script type<span style="color: #339933;">=</span><span style="color: #3366CC;">&quot;text/javascript&quot;</span><span style="color: #339933;">&gt;</span>
    document.<span style="color: #660066;">getElementById</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'domain-com'</span><span style="color: #009900;">&#41;</span>.<span style="color: #660066;">style</span>.<span style="color: #660066;">opacity</span> <span style="color: #339933;">=</span> <span style="color: #CC0000;">0</span><span style="color: #339933;">;</span>
    setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;document.getElementById('domain-com').style.opacity = 1&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1000</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
    Typekit.<span style="color: #660066;">load</span><span style="color: #009900;">&#40;</span><span style="color: #3366CC;">'KIT_ID'</span><span style="color: #339933;">,</span> <span style="color: #009900;">&#123;</span>
      afterLoad<span style="color: #339933;">:</span> <span style="color: #003366; font-weight: bold;">function</span><span style="color: #009900;">&#40;</span>data<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
      	setTimeout<span style="color: #009900;">&#40;</span><span style="color: #3366CC;">&quot;document.getElementById('domain-com').style.opacity = 1&quot;</span><span style="color: #339933;">,</span> <span style="color: #CC0000;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
      <span style="color: #009900;">&#125;</span>
    <span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
  <span style="color: #339933;">&lt;/</span>script<span style="color: #339933;">&gt;</span>
  &lt;!-- content goes here --&gt; 
&lt;/body&gt;</pre></td></tr></table></div>

<p>Then substitute your actual domain for <code>domain-com</code>, and (<strong>important!</strong>) your site’s unique Typekit ID for <code>KIT_ID</code>. You can get this ID by logging in to Typekit, launching the Kit Editor, and clicking the “Embed Code” link; it’s an 8-letter alphanumeric combination.</p>
<p>Here’s a breakdown:</p>
<ol>
<li>The <code>&lt;body&gt;</code> ID on line 1 isn’t just a good selector; <a href="http://css-tricks.com/id-your-body-for-greater-css-control-and-specificity/" title="CSS-Tricks: ID your body for greater CSS control and specificity" class="liexternal">it’s good form</a>. The most common convention is to use your domain (with a dash instead of a dot), which makes things easier for the <a href="http://userscripts.org/" title="User scripts" class="liexternal">Greasemonkey types</a>.</li>
<li>The script include on line 2 brings in the Typekit description of your site’s kit. You can move this line up to your <code>&lt;head&gt;</code> section if you want.</li>
<li>Line 4 makes your entire site disappear. Because this is at the top of your body, nothing is going to get rendered. It’s important that this line be here, rather than in another file or even at the foot of your body.</li>
<li>The call to <code>Typekit.load</code> does the actual loading of the fonts, and the <code>afterLoad</code> callback will be executed right after that happens. That’s when we want to make the body opaque again, right? Well, not quite. It seems that there’s a small delay between the callback and text refresh. Fortunately, using <code>setTimeout</code> to add a tiny delay (1ms) seems to eliminate this, finally ridding us of the dreaded flicker.
</li>
</ol>
<p><strong>Caveat:</strong> The <code>afterLoad</code> event is currently considered <a href="http://gist.github.com/192350" title="Code released by Typekit but not yet ready for live sites" class="liexternal">experimental</a>. An official solution for avoiding flicker is likely to be added in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/01/28/flicker-free-typekit/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>The Most Important IDE Feature</title>
		<link>http://trevorburnham.com/2010/01/24/the-most-important-ide-feature/</link>
		<comments>http://trevorburnham.com/2010/01/24/the-most-important-ide-feature/#comments</comments>
		<pubDate>Sun, 24 Jan 2010 21:46:44 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[coding]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=249</guid>
		<description><![CDATA[Why navigate the depths of a file tree when you can simply type the name of the file you want? This is the most impor­tant feature an IDE can offer. In Eclipse, it’s called Open Resource. In TextMate, it’s called Go to File. In Coda and Apple’s own XCode, it’s aptly dubbed Open Quickly.]]></description>
			<content:encoded><![CDATA[<p>Say you’re working on a project with hundreds of files. Changes to one file necessitate changes in others in an unfathomably complex tree structure. Using <code>File -> Open</code> each time you need to switch files is time-consuming, which is why simple text editors have been widely abandoned by programmers in favor of integrated development environments (IDEs) that offer tabs and a widget that shows the file structure at all times. This, more than syntax highlighting, is the reason why few projects are edited in Notepad.</p>
<p>But that’s still not enough. Why navigate the depths of a file tree when you can simply type the name of the file you want? <strong>This is the most important feature an IDE can offer.</strong> In <a href="http://eclipse.org/" class="liexternal">Eclipse</a>, it’s called <code>Open Resource</code>. In <a href="http://macromates.com/" class="liexternal">TextMate</a>, it’s called <code>Go to File</code>. In <a href="http://www.panic.com/coda/" class="liexternal">Coda</a> and Apple’s own <a href="http://developer.apple.com/tools/xcode/" class="liexternal">XCode</a>, it’s aptly dubbed <code>Open Quickly</code>, and goes one step further by performing full-text search on the files in the current project using Spotlight. Personally, I prefer the instantaneous of the Eclipse/TextMate approach; but either way, it’s certainly faster than using the mouse.</p>
<p>If you’re a developer who isn’t using this feature, find it. It will change your life at least as much as I’m guessing <a href="http://quicksilver.en.softonic.com/mac" title="Application launcher for the Mac" class="liexternal">Quicksilver</a> already has.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/01/24/the-most-important-ide-feature/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Stronger Passwords for a Stronger America</title>
		<link>http://trevorburnham.com/2010/01/21/stronger-passwords-for-a-stronger-america/</link>
		<comments>http://trevorburnham.com/2010/01/21/stronger-passwords-for-a-stronger-america/#comments</comments>
		<pubDate>Thu, 21 Jan 2010 20:07:23 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[wach]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=236</guid>
		<description><![CDATA[If your appli­ca­tion has enough of a need for security to require a password, it should require a good password. So when a user tries to create an account secured by the string 123456, just don’t let them. If their password is in the first 10,000 guesses that Password Recovery Toolkit might try, tell them to pick another. Then imple­ment some kind of throt­tling and/​or CAPTCHA. If you fail to do this, accounts will be hijacked.]]></description>
			<content:encoded><![CDATA[<p><a href="http://xkcd.com/538/" class="liimagelink"><img src="http://trevorburnham.com/images/secure_laptop_(xkcd).png" width="448" height="274" alt="Laptop secured with 4096-bit RSA" class="center" /></a>One thing that struck me when I was developing Quocial last summer was that I was spending a staggering amount of time on details that had little to do with the core functionality of my site. Thousands of little things go into making a webapp that works the way people expect. And yet, even when using a convention-over-configuration framework like Rails, developers constantly stumble into common problems and spend hours reinventing common solutions.</p>
<p>So, I’ve decided to start cataloging these frequent sticking points. Eventually, I’d like to organize them into a book, tentatively titled <em>The Web Application Checklist</em>. But for now, I’m just going to post them here on an as-I-think-of-them basis, with the tag <a href="http://trevorburnham.com/tags/wach" title="Read all posts tagged ‘wach’" class="liinternal"><strong>wach</strong></a>. These entries are rough drafts and subject to heavy revision.</p>
<p>Today’s item: passwords. If your application has enough of a need for security to require a password, it should require a <strong>good password</strong>. So when a user tries to create an account secured by the string <a href="http://www.nytimes.com/2010/01/21/technology/21password.html" title="NYTimes: Simple Passwords Remain Popular, Despite Risk of Hacking" class="liexternal"><code>123456</code></a>, just don’t let them. If their password is in the first 10,000 guesses that <a href="http://www.schneier.com/essay-148.html" title="Bruce Schneier: Secure Passwords Keep You Safer" class="liexternal">Password Recovery Toolkit might try</a>, tell them to pick another. Then implement some kind of throttling and/or CAPTCHA. If you fail to do this, accounts will be hijacked. This goes double for admins: <a href="http://www.codinghorror.com/blog/archives/001206.html" title="Coding Horror: Dictionary attacks 101" class="liexternal">As Twitter learned</a>, you can’t even trust your own colleagues to pick good passwords.</p>
<p>Each time someone picks a password, run it by the <a href="http://www.whatsmypass.com/the-top-500-worst-passwords-of-all-time" class="liexternal">Top 500 Worst Password of All Time</a>. Reject it if it differs from anything in the list only by one or two characters. There ought to be a good, standard, open-source library for doing this, but I’m not aware of any (suggestions?), so you might have to hack together some regex yourself.</p>
<p>And, for those of you who’ve never done this before, don’t forget to only store the hash in the database, <em>and</em> salt the hash. <a href="http://www.codinghorror.com/blog/archives/000949.html" title="Coding Horror: Rainbow Hash Cracking" class="liexternal">Here’s why</a>.</p>
<p>[<strong>Update, 1/21</strong>: <a href="http://www.smashingmagazine.com/2010/01/14/web-security-primer-are-you-part-of-the-problem/" title="Smashing Magazine: Web security primer" class="liexternal">Here</a> is a nice overview of security concerns for webapps, including passwords. And <a href="http://sharetext.org/BEM" title="Twitter banned passwords function" class="liexternal">here</a> is some JavaScript code used by Twitter after <strong>The Incident</strong> to reject common passwords.]</p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/01/21/stronger-passwords-for-a-stronger-america/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>From the Department of Obscure Media</title>
		<link>http://trevorburnham.com/2010/01/19/from-the-department-of-obscure-media/</link>
		<comments>http://trevorburnham.com/2010/01/19/from-the-department-of-obscure-media/#comments</comments>
		<pubDate>Wed, 20 Jan 2010 00:55:35 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=225</guid>
		<description><![CDATA[An ad for bullets that are touted as both Cer­ti­fied Lead Free and offering Optimal Soft Tissue Pen­e­tra­tion. I get that lead bullets are a serious envi­ron­men­tal issue, but still, there’s some­thing odd about seeing these two claims in the same set of, er, bullet points.]]></description>
			<content:encoded><![CDATA[<p><img src="http://trevorburnham.com/images/confidential_folder.jpg" width="610" height="266" alt="Confidental" />Today I received an unsolicited free trial issue of <a href="http://thecounterterroristmag.com/" title="The Counter Terrorist Magazine" class="liexternal"><em>The Counter Terrorist</em></a>, which touts itself as the “Official Journal of the Homeland Security Professional.” It’s a slick, glossy magazine that carries advertisements for explosives, body armor, <a href="http://www.z-medica.com/products/quikclot-combat-gauze.asp" title="QuikClot Combat Gauze™" class="liexternal">military-grade first aid</a>, thermal cameras, “throwable tactical vehicles,” and (alarmingly) <a href="http://en.wikipedia.org/wiki/Chemical,_biological,_radiological,_and_nuclear" rel="nofollow" class="liwikipedia">CBRN ensembles</a>. It’s a Tom Clancy fan’s dream come true!</p>
<p>Most curious moment: An ad for bullets that are touted as both <strong>Certified Lead Free</strong> and offering <strong>Optimal Soft Tissue Penetration</strong>. I get that lead bullets are a serious environmental issue, but still, there’s something odd about seeing these two claims in the same set of, er, bullet points.</p>
<p>I have no idea why I received this issue. It served as a nice reminder, though: <strong>Print is not dead. It just grew a longer tail.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/01/19/from-the-department-of-obscure-media/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Kings: A Libertarian Reading</title>
		<link>http://trevorburnham.com/2010/01/16/kings-a-libertarian-reading/</link>
		<comments>http://trevorburnham.com/2010/01/16/kings-a-libertarian-reading/#comments</comments>
		<pubDate>Sun, 17 Jan 2010 02:06:12 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[philosophy]]></category>
		<category><![CDATA[tv]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=209</guid>
		<description><![CDATA[If there is a message to the series, it’s this: Everyone loves King Silas for the occa­sional mercy that he shows. To us, the sophis­ti­cated, democracy-​​loving viewers, this is obvi­ously absurd: Why should the king get credit for rectifying injus­tices that he merely restrains himself from com­mit­ting? And yet, any gov­ern­ment, even an elected one, is subject to this same paradox.]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.codyogden.com/kings/" title="Kings wallpaper image" class="liimagelink"><img src="http://trevorburnham.com/images/Kings_butterfly_logo.jpg" width="610" height="317" /></a>You might not have heard of the short-lived NBC drama <em>Kings</em>. It’s a modern retelling of the rise of David from humble Goliath-slayer to majestic ruler, but that’s not important. What’s important is the sheer pleasure of seeing a world much like our own, in terms of technology and culture, that’s geopolitically stuck in the Old Testament. Picture <em>The West Wing</em>, but with the lovably presidential Martin Sheen replaced by a ruthless, theocratic dictator, King Silas, brilliantly portrayed by Ian McShane.</p>
<p>As with <em>Deadwood</em>, Ian McShane alone makes the series worth watching. But there’s something else that struck me after a few episodes. If there is a message to the series, it’s this: Everyone loves King Silas for the occasional mercy that he shows. (Most acutely, we learn in episode six that there’s an annual holiday, “Judgment Day,” on which the king hears exactly ten appeals from the lower courts.) To us, the sophisticated, democracy-loving viewers, this is obviously absurd: Why should the king get credit for rectifying injustices that he merely <strong>restrains himself</strong> from committing? And yet, any government, even an elected one, is subject to this same paradox. Having an unquestionable king is just the extreme case.</p>
<p>I can’t say for sure whether King Silas is intended to be the complex, conflicted, sinister yet sympathetic personification of “Big Government.” But it’s certainly possible to interpret him that way. Ayn Rand could learn a thing or two from <em>Kings.</em></p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/01/16/kings-a-libertarian-reading/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Boycott www!</title>
		<link>http://trevorburnham.com/2010/01/14/boycott-www/</link>
		<comments>http://trevorburnham.com/2010/01/14/boycott-www/#comments</comments>
		<pubDate>Fri, 15 Jan 2010 02:32:27 +0000</pubDate>
		<dc:creator>Trevor</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[web 2.0]]></category>

		<guid isPermaLink="false">http://trevorburnham.com/?p=194</guid>
		<description><![CDATA[It’s so easy, even a rocket sci­en­tist could do it.]]></description>
			<content:encoded><![CDATA[<p>There was a dark chapter in the early history of the Internet when, any time you wanted to go to a website, you had to <strong>painstakingly</strong> type “www.” in front of its domain name. This served a purpose of sorts: It told the server, in no uncertain terms, that you wanted to surf the World Wide Web. Never mind that the <code>http://</code> prefix already said as much; Internet configuration was a dark and untested art, and it just seemed safest to use subdomains like <code>www</code> and <code>ftp</code> to be clear about which of your servers people were connecting to.</p>
<p>But then, as the millenium came to a close, and non-protocol related subdomains like <code>webmail</code> and <code>blog</code> began to proliferate, the <code>www</code> prefix began to fade away. To be sure, it remained on many sites as a vestigial reminder of the days of dial-up and Netscape Navigator, but most of the web’s denizens had learned that it could be safely forgotten. As hip newcomers like <a href="http://twitter.com/" class="liexternal">Twitter</a> and <a href="http://foursquare.com/" class="liexternal">foursquare</a> dropped the prefix altogether, the augurs seemed clear: <code>www</code> was going gently into that good night.</p>
<p>Or was it?</p>
<p>Yesterday, someone <a href="http://news.ycombinator.com/item?id=1049246" title="Hacker News: Why doesn’t NASA get its URL to work?" class="liexternal">posted to Hacker News</a> that the domain <a href="http://nasa.gov" class="liexternal">nasa.gov</a> is broken. You have to put <code>www</code> in front of it, or it won’t work. (Note that many browsers, like Firefox, automatically put <code>www.</code> in front of the domain you enter if it can’t reach it without it. But the most popular browser, Internet Explorer, doesn’t.) I replied that it had to be a temporary glitch—some idiot added a new subdomain to their DNS records and accidentally deleted the root!—but no, someone else pointed out, <a href="http://army.mil" class="liexternal">army.mil</a> and <a href="http://navy.mil" class="liexternal">navy.mil</a> suffer from the same issue. It’s like they don’t <strong>want</strong> recruits who don’t habitually triple-tap ‘w’ before every web address!</p>
<p>Look: <code>www</code> has got to go. It’s a waste of bytes and time, our nation’s two most valuable resources. If you own a domain, here’s how to fix the problem:</p>
<ol>
<li>Find your nameserver settings, specifically your <a href="http://en.wikipedia.org/wiki/Zone_file" rel="nofollow" class="liwikipedia">A records</a>. Make sure that your root domain is pointing to the same IP address as your <code>www</code> subdomain.</li>
<li>Redirect <code>www.yourdomain.com/whatever</code> to <code>yourdomain.com/whatever</code>. If you’re using Apache, you just need to add the following to either your configuration or a <code>.htaccess</code> file in the domain’s document root:
<p><code><br />
RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^www\.yourdomain\.com.* [NC]<br />
RewriteRule ^(.*)$ http://yourdomain.com$1 [R=301,L]</code></p>
</li>
</ol>
<p>That’s it! Now if anyone tries to use <code>www</code>, even in a link to a specific page, they’ll still get to the right place. It’s so easy, even a rocket scientist could do it.</p>
<p><small>P.S. If you absolutely must keep <code>www</code>, at the very least allow those who omit it get where they’re trying to go. To do this, just modify the instructions above by using these lines in your Apache config instead:
<p><code>RewriteEngine On<br />
RewriteCond %{HTTP_HOST} ^yourdomain\.com.* [NC]<br />
RewriteRule ^(.*)$ http://www.yourdomain.com$1 [R=301,L]</code></p>
<p></small></p>
<p>This is what Facebook does, for instance. But just as they dropped their superfluous “The” (remember?), rest assured that there will come a time when Facebook.com will truly stand alone.</p>
]]></content:encoded>
			<wfw:commentRss>http://trevorburnham.com/2010/01/14/boycott-www/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
