<?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>Particletree &#187; Features</title>
	<atom:link href="http://particletree.com/archives/features/feed/" rel="self" type="application/rss+xml" />
	<link>http://particletree.com</link>
	<description>Everyone needs a hug.</description>
	<lastBuildDate>Thu, 25 Feb 2010 16:54:43 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.6</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>PHP Quick&#160;Profiler</title>
		<link>http://particletree.com/features/php-quick-profiler/</link>
		<comments>http://particletree.com/features/php-quick-profiler/#comments</comments>
		<pubDate>Thu, 23 Apr 2009 16:50:11 +0000</pubDate>
		<dc:creator>Ryan Campbell</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/?p=642</guid>
		<description><![CDATA[Introduction

In our company, code reviews play an integral part in the development process for making quality software. We opt for a mentor style approach with Wufoo, where a developer works on a segment for a period of time and then passes it up to a more experienced developer for review. We really like this approach [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>In our company, <a href="http://en.wikipedia.org/wiki/Code_review" title="Code Review">code reviews</a> play an integral part in the development process for making quality software. We opt for a <a href="http://www.codinghorror.com/blog/archives/001229.html">mentor style approach</a> with Wufoo, where a developer works on a segment for a period of time and then passes it up to a more experienced developer for review. We really like this approach because it means more developers become familiar with the foundation of different code level services. More importantly, they act as an additional safeguard against security holes, memory leaks, poor queries and heavy file structures. Unfortunately, these reviews are also very time consuming and in a small team can sometimes be an inconvenience to the reviewer &#8212; another developer with their own todo list to accomplish.</p>

<p><a class="ptad" href="http://wufoo.com?t=19" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>

<p>Given that all reviews check against the same list of requirements, we&#8217;ve found ourselves repeating the same tasks over and over again. We spend a lot of time echoing queries, memory stats and objects to the browser just to see how they are being used in the code. To reduce this repetition, we invested some time creating something we&#8217;ve called the <strong>PHP Quick Profiler</strong>&#8212;we call it <code>PQP</code> for short. It&#8217;s a small tool (think Firebug for PHP) to provide profiling and debugging related information to developers without needing them to add a lot of programmatic overhead to their code. Now, we only need to toggle one config setting to true and our reviewers have access to an automated tool to help create a faster and more consistent review experience. Since anyone can use it, <code>PQP</code> also gives the initial developer an idea of where their code stands before the review.</p>

<p>We&#8217;ve been using <code>PQP</code> for a while now with Wufoo. It&#8217;s been so useful that we decided to take some time to package everything, write out some documentation and offer it up for anyone to use.</p>

<h3>See it in Action</h3>

<p>We&#8217;ve created an <a href="http://particletree.com/examples/pqp/" title="PQP In Action">online example</a> showing a landing page with <code>PQP</code> turned on. The profiler contains a 5 tabbed interface that presents pages for logging messages, measuring execution time, analyzing queries, revealing memory used and showing the files included.</p>

<p><a href="http://particletree.com/examples/pqp/" title="PHP Quick Profiler"><img src="http://farm4.static.flickr.com/3625/3463457814_0a558911e9_o.png" width="606" alt="PHP Quick Profiler" /></a></p>

<p>Thanks to Kevin&#8217;s help, who did a great job of designing and encapsulating the interface, there&#8217;s no need here to add links to external CSS files or Scripts to make it show up right. When included on a page in PHP, <code>PQP</code> automatically inserts the markup, CSS and JavaScript needed to make the interface show up and just work. <code>PQP</code> should work with Internet Explorer 6 and up, Firefox and Safari.</p>

<h3>Getting Started</h3>

<p>We&#8217;ve provided a zip file which contains the entire setup for <code>PQP</code> and some basic instructions for installation.</p>

<p><strong>Download: <a href="http://particletree.com/files/pqp/pqp.zip" title="PHP Quick Profiler">pqp.zip</a></strong></p>

<p>Once you&#8217;ve downloaded the zip, upload the contents to a PHP enabled web server. Navigating to the root directory in your browser will show the same online example we linked to above. At this point, each tab should work <em>except</em> for the database tab, which requires some additional configuration.</p>

<p>Once you get the example working, the next step would be integration with your own project. It&#8217;s important to note that <strong>dropping the folder into your own project directory will not work</strong>. This is because 5 different aspects of the code are being looked at, and you may handle those situations differently than we do. That said, integration is pretty straightforward, and by following the guidelines for each section below, you should be up and running in no time.</p>

<h3>Using It In Your Code</h3>

<p>The easiest way to make <code>PQP</code> work in your own code is to include <code>PhpQuickProfiler.php</code> into the page you want to see it on. That alone will enable the <strong>console</strong>, <strong>memory</strong> and <strong>file</strong> logging. Speed and database logging take a bit more work, which we&#8217;ll cover later. Now, enabling the default logging is great, but nothing will display to the screen by just including the file. To display to the screen, a bit more knowledge on what&#8217;s happening is required.</p>

<p>As code is being executed, details are being logged and analyzed in <code>PQP</code>. Once the code is finished, <code>PQP</code> finishes up also, and displays the output to the screen. The tricky part is knowing when the code is finished, since in an ideal world this tool would work with as little developer input as possible. In this example, we determine that the code has finished by looking at when the parent object runs its destructor. So a timeline would be:</p>

<ul>
<li>Landing Page constructor declares an instance of <code>PhpQuickProfiler</code>.</li>
<li>Landing Page executes all needed code.</li>
<li>Landing Page destructor tells the <code>PhpQuickProfiler</code> to cleanup and display output.</li>
</ul>

<p>Of course, this setup would cause <code>PQP</code> to always display, which isn&#8217;t ideal for production. To make it more useful, we created a Config flag in our code (<code>debugMode = true</code>) that checks to make sure it is set to true before displaying. Below is a sample class that can perform the steps we just covered:</p>

<pre><code>class ExampleLandingPage {

    private $profiler;
    private $db;

    public function __construct() {
        $this-&gt;profiler = new PhpQuickProfiler(PhpQuickProfiler::getMicroTime());
    }

    public function __destruct() {
        if($debugMode == true) $this-&gt;profiler-&gt;display($this-&gt;db);
    }

}
</code></pre>

<h3>Logging to the Console</h3>

<p>Given the code shell above, <code>PQP</code> is configured and ready to be used. We can start referencing the helper functions, starting with logging. The console log is just a step above an <code>echo</code> statement in that it condenses and formats the output using <code>print_r</code>. This is useful for reviewers because it provides a way to view debugging information without blowing up the layout of the page. To output data to the console, just statically call the function:</p>

<pre><code>Console::log($data);
</code></pre>

<p>The static function call accepts any data type and is available as long as the <code>PhpQuickProfiler.php</code> class is included. We chose to implement this with a static call so that the class does not have to be instantiated before use. The downside to a static call is that we store the log history in a global php variable. Should you wish to avoid globals, the <code>Console.php</code> class could always hold the log as a member variable given that it is instantiated. But as is, the class just acts as a read and write wrapper around a global PHP variable.</p>

<p>On top of logging variables, the console also has four additional functions.</p>

<pre><code>Console::logError($exception);
Console::logMemory();
Console::logMemory($variable, $name);
Console::logSpeed();
</code></pre>

<p>Let&#8217;s start with <code>logError()</code>. Logging an error is useful for displaying information related to a PHP exception. In our code, we&#8217;ll use a <code>catch</code> block for handling errors so we can silence an exception. We do this because we want that error to be ignored and not affect what the user is doing. An example of this would be logging data that isn&#8217;t crucial. If that log fails, the users shouldn&#8217;t have to stop what they&#8217;re doing. Now, in development, it&#8217;s still nice to know those exceptions were thrown, so in the <code>catch</code> block a call to <code>logError()</code> can be made to display the information to the console like so:</p>

<pre><code>try {
    // Execute non critical code
}
catch(Exception $e) {
    Console::logError($e, 'Unable to execute non critical code');
}
</code></pre>

<p>Additionally, the console can provide even more value by using some of the helper functions that PHP natively provides. For example, logging <code>debug_backtrace()</code> will print related information about the script at a given point in time. PHP also provides us with magic constants like <code>__LINE__</code>, <code>__FILE__</code>, <code>__FUNCTION__</code>, <code>__METHOD__</code> and  <code>__CLASS__</code>, which allows for printing of script data. Take a look at the screenshot below to see some example usage of this:</p>

<p><a href="http://www.flickr.com/photos/wufoo/3465935161/" title="PQP Height Expanded by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3557/3465935161_9cac2d37f6_o.png" width="606" alt="PQP Height Expanded" /></a></p>

<h3>Watching Memory Usage</h3>

<p>Object oriented PHP is a beautiful thing to behold, but there are definitely a <a href="http://particletree.com/notebook/object-oriented-php-memory-concerns/" title="OO Memory Usage">few concerns</a> to keep in mind when it comes to memory usage. These concerns tend to rear their heads when dealing with recursive output (i.e.: exporting to Excel), if there&#8217;s a leak in the creation of the objects or if objects aren&#8217;t being destroyed properly. All of this can lead to unexpected resource usage and fatal errors that serve to aggravate the end user.</p>

<p>The debugger aids with memory management by displaying the maximum amount of memory used by the script. A simple call to the built in <code>memory_get_peak_usage()</code> is where the data originates. The system setting for memory allowed (through <code>ini_get()</code>) is also shown to see how much wiggle room there is. If an overview isn&#8217;t enough, you can drill down into your resource usage with a point in time memory call.</p>

<pre><code>Console::logMemory();
Console::logMemory($variable, $name);
</code></pre>

<p>Calling <code>logMemory()</code> in your code without any parameters will output the current amount of memory that PHP is using when the function is called. This is perfect for watching a loop in your script to see if memory is building up during each iteration. Likewise, a variable and a name can be passed in to the function. Doing so will output the memory used by the variable to the console. Knowing that a script is hogging memory is wonderful, and knowing which variable is doing the hogging allows the problem to be fixed. Take a look at the screenshot below to see an example of string concatenation that is slowly eating up memory.</p>

<p><a href="http://www.flickr.com/photos/wufoo/3463780326/" title="PQP Memory Usage by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3615/3463780326_bfffe5cb13_o.png" width="606"  alt="PQP Memory Usage" /></a></p>

<h3>Runaway Includes</h3>

<p>Similar to memory getting out of control, included files (especially on large complex projects) can multiply and take over your app before very quickly. Even worse, too many includes don&#8217;t throw the hard errors that memory usage does. Instead, the page just slows down and resources get eaten up on every request served. Avoiding this pitfall is pretty easy&#8212;just make sure the same file isn&#8217;t included multiple times, and catch any excessive includes of unnecessary files.</p>

<p><a href="http://www.flickr.com/photos/wufoo/3466762904/" title="PQP File Includes by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3555/3466762904_45da31d7d1_o.png" width="606" alt="PQP File Includes" /></a></p>

<p>The <code>PQP</code> files tab shows the total files included with a count call on <code>get_included_files</code> and their total sizes are summed up. The names and sizes of the individual files are output to the console for easy scanning as well. The largest file included is noted on the left, which clearly points out if a large library is being used when it shouldn&#8217;t be. For example, on Wufoo we found out that we had a script always including <a href="http://www.bioinformatics.org/phplabware/internal_utilities/htmLawed/index.php" title="XSS parser">htmLawed</a>, a fairly decent sized file, when it wasn&#8217;t needed.</p>

<p>Also, keep in mind, autoloading classes or using <code>require_once</code> will usually alleviate any problems with file includes. That said, it never hurts to be aware of the situation, especially when using plugins, old code, or borrowed code.</p>

<h3>Page Execution Time</h3>

<p>Emphasis is always placed on database optimization when it comes to performance considerations (rightfully so), but that doesn&#8217;t mean PHP execution time should be ignored completely. The standard method for calculating load time is to find the difference between the time when the script starts and then again when the script finishes. This is where the integration of the debugger into your own project becomes tricky. Since the debugger is called on the destruction of the parent page, we know when the script is ending. But since every project is different, the start time can vary. The example code that you can download sets the start time in the construction of the parent object with a call to <code>PQP</code>&#8217;s <code>getMicroTime()</code>. This will work in most cases, but if you have a lot of code going on before the parent is constructed, be sure to specifically set the start time when needed.</p>

<pre><code>$this-&gt;profiler = new PhpQuickProfiler(PhpQuickProfiler::getMicroTime());
</code></pre>

<p>Given the page execution time, the next step would be to find meaning in the information. A quick glance will show if the time falls into an acceptable range. Assuming it doesn&#8217;t, how would we go about debugging the problem? Using the query section of the debugger, we can rule out query execution time (explained more in the next section). If queries aren&#8217;t the problem, then some portion of the script is. We can find this with the console.</p>

<pre><code>Console::logSpeed();
</code></pre>

<p>A call to <code>logSpeed()</code> will tell us how long the script has taken up until that point in time. For example, imagine we have an <a href="http://en.wikipedia.org/wiki/Factory_object">object factory</a> that constructs complex objects from a database. We also have an <a href="http://en.wikipedia.org/wiki/Data_Access_Object">object engine</a> that returns the object names from a database. When displaying 100 objects names to the screen, we would use either the factory or the engine. But using the engine would be much faster because we only need the names, and do not need the logic processing of object creation. If the developer did use the factory, <code>logSpeed()</code> would reveal the slowdown in the display loop, which ultimately identifies the problem.</p>

<p><a href="http://www.flickr.com/photos/wufoo/3463039665/" title="PQP Execution Time by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3489/3463039665_7c65f67535_o.png" width="606" alt="PQP Execution Time" /></a></p>

<p>On a similar note, we recently discovered that <a href="http://xcache.lighttpd.net/" title="xCache">xCache</a> improves our page execution time by over 60%. This was compared against other benchmarks by having all of our developers run quick tests against the code they were responsible for using <code>PQP</code>.</p>

<h3>A Glance at Database Activity</h3>

<p>Getting the debugger to report database information is the hardest part of integration with your own project. This step will only work if your database interaction is abstracted in some way. We talked about a <a href="http://particletree.com/features/database-simplicity-with-class/" title="Database Class">simple database class</a> awhile back, and have also released an example with the zip download (<strong>MySqlDatabase.php</strong> &#8212; you can follow the code in there to see a full implementation). The reason a class is so important is because information about each query must be stored as it happens, and a class allows the queries to each go through the same analysis without additional work by the programmer.</p>

<p>As a query is called, the database wrapper class stores the query and logs the time. The simplified code looks like this:</p>

<pre><code>function query($sql) {
    $start = $this-&gt;getTime();
    $rs = mysql_query($sql, $this-&gt;conn);
    $this-&gt;logQuery($sql, $start);
    return $rs;
}

function logQuery($sql, $start) {
    $query = array(
        'sql' =&gt; $sql,
        'time' =&gt; ($this-&gt;getTime() - $start)*1000
    );
    array_push($this-&gt;queries, $query);
}
</code></pre>

<p>Using that concept, the class will have an array of all query information available to it. Then, the debugger can take that array and print out the information. The information that is currently stored is the query itself, and the time to execute. The time to execute is not exact &#8212; it is the microtime until PHP has a handle on the recordset, which will be slower than the query time if there is network latency with the database server. Viewing the queries at a glance is an easy and helpful way to look for queries that would affect more records than intended, that are being duplicated or those that open themselves up to SQL injection.</p>

<p>One of the most useful database features added to the debugger is the ability to <code>EXPLAIN</code> each query run. Each query is run again using the <a href="http://dev.mysql.com/doc/refman/5.0/en/explain.html" title="EXPLAIN">explain</a> statement, and the results are presented below the query. This makes it easy to identify which queries are using their indexes properly.</p>

<p><a href="http://www.flickr.com/photos/wufoo/3463902088/" title="PQP Database Queries by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3633/3463902088_5d9738164c_o.png" width="606" alt="PQP Database Queries" /></a></p>

<h3>Wrapping Up</h3>

<p>The end goal of this debugging tool is to present a summary of useful information in an automated format. Usually, finding out about certain aspects of the code would require manual work and thought. And then if a problem is encountered, the debugger will hopefully make narrowing down the problem easier through the use of the extended Console functions. With that in mind, this tool is just an aid and is in no way meant to replace the standard, thorough procedures available to developers. The <a href="http://dev.mysql.com/doc/refman/5.1/en/slow-query-log.html" title="Slow Query Log">slow query log</a>, <a href="http://www.addedbytes.com/php/php-ini-guide-error-handling-and-logging/" title="PHP Error Log">PHP error log</a> and full fledged <a href="http://particletree.com/notebook/silence-the-echo-with-macgdbp/" title="Silence the Echo">debuggers and profilers</a> are encouraged on top of this high level view to supplement the tools available to developers.</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/php-quick-profiler/feed/</wfw:commentRss>
		<slash:comments>135</slash:comments>
		</item>
		<item>
		<title>How Not to Pitch to a&#160;Startup</title>
		<link>http://particletree.com/features/how-not-to-pitch-to-a-startup/</link>
		<comments>http://particletree.com/features/how-not-to-pitch-to-a-startup/#comments</comments>
		<pubDate>Thu, 19 Feb 2009 15:00:04 +0000</pubDate>
		<dc:creator>Kevin Hale</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/?p=605</guid>
		<description><![CDATA[Several months ago, Infinity Box, our company, and thus Wufoo were listed in a publication targeted at investors, angels and venture capital firms as a promising young startup. We have, unfortunately, not been able to track down the source of this recommendation (investors seem odd about keeping their sources mysterious), but what followed for us [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<p>Several months ago, Infinity Box, our company, and thus <a href="http://wufoo.com">Wufoo</a> were listed in a publication targeted at investors, angels and venture capital firms as a promising young startup. We have, unfortunately, not been able to track down the source of this recommendation (investors seem odd about keeping their sources mysterious), but what followed for us has been a series of emails and phone calls over the last few months that have come from associates of various VC firms.</p>

<p><a class="ptad" href="http://wufoo.com?t=19"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>

<p>Now, our funding situation is that we took some initial seed money ($18,000) from <a href="http://ycombinator.com">Y Combinator</a> and then followed that up with a small angel round ($100,000) to get us to launch. That&#8217;s all the money we&#8217;ve taken and that was all done within the first 4 months of 2006. Since then, we&#8217;ve been blessed to have Wufoo do very well out there and we&#8217;ve been able to grow our team, product, user base and profits solely off of the service&#8217;s revenues. We did not take VC money because <strong>1)</strong> we like control and shares and <strong>2)</strong> we just weren&#8217;t interested in getting big fast, which meant VC money seemed like overkill to us in regards to our plans for growth. So when these calls started coming in, our stance was (and still is) that we&#8217;re not interested in seeking additional funding, but we&#8217;d be happy to talk because, well, you never know.</p>

<p>Of course, before every one of these phone calls, we would look up the firm&#8217;s web site, we would read their history, we would look at their portfolio, we would look up the associate that we&#8217;re going to talk to (there&#8217;s always a photo and there&#8217;s always a bio) and we would even look up some of the companies their firm had invested in. If the associate we&#8217;re going to talk to had a Facebook, Twitter or Linkedin page, we would look at that too. We think of it as basic research and it&#8217;s just how we do things. It&#8217;s how we write the articles on this blog and it&#8217;s how we make all of the decisions in our company. We&#8217;re like boy scouts. We like being prepared.</p>

<p>Additionally, we think it&#8217;s a basic form of courtesy to show someone else a level of concerted interest, if they&#8217;re showing interest in us. This way, hopefully, time would not be wasted on posturing and excessive introductions. Unfortunately, it&#8217;s become very clear to us after every one of these exchanges (there are no exceptions I&#8217;m afraid) that these investors and associates do not do the same. All of the associates we talk to seem to have three goals in mind when they contact us:</p>

<ol>
<li><p><strong>To put us into a database of companies their firm is aggregating.</strong> From what we understand, most VC firms send out an army of these associates to just gather basic research on companies, but for some reason, their flavor of choice for data collection is via a phone call rather than actually using the Internet to scrape most of the mundane stuff that they&#8217;re asking us. We&#8217;ve actually had conversations where we can hear them typing into a spreadsheet in the background as we talked to them.</p></li>
<li><p><strong>To regurgitate the firm&#8217;s history and mission statement from their web site.</strong> We noticed this early on and that&#8217;s why we started going over them ahead of time so we could skip it, but apparently this information must always be passed on orally to a potential company regardless of whether the company is able to finish their sentences.</p></li>
<li><p><strong>To let us know that they were different, that they give more than just money and that we should keep them in mind when we do decide to take on more funding.</strong> Needless to say, we find it very odd (if not funny) to hear every firm state how different they were in exactly the same way as everyone else.</p></li>
</ol>

<p>Obviously, we are not against gathering research. We are not against unsolicited introductions. And we actually think the intention of the act&#8212;to start an earnest conversation or relationship with a company that appears promising is a great idea. We&#8217;d love that. But the execution of these exchanges completely baffle us. Every associate asks us the same surface questions that can easily be answered by reading a few short pages on our web site (specifically our <a href="http://wufoo.com/faq/">FAQ</a> and our <a href="http://wufoo.com/about/">About</a> pages&#8212;they are definitely not hard to find). In fact, we&#8217;ve actually had people call us with promises of expertise and advice that&#8217;s never even created an account with Wufoo or know how we made money (that we have a freemium software-as-a-service subscription model).</p>

<p>Now, we understand that the typical relationship regarding a startup and a VC firm is to have the startup pitch to the VC. It is the startup&#8217;s job <strong>if they want money</strong> to convince the VC that they are worthy of investment. We also understand that the associate that&#8217;s calling us is making like a million of these calls a day. It&#8217;s probably just a job to them. We get that. We do.</p>

<p>However, if it&#8217;s the VC firm that initiated an unsolicited conversation and the company indicated ahead of time that it wasn&#8217;t interested in more money, and the VC firm insisted on talking anyway&#8230;well, then it&#8217;s sort of not cool to not do your homework and effectively make the company do the pitch anyway. Then we&#8217;re doing your job. Then, when you show the company how not different you are from everyone else following what is apparently the same lead, you&#8217;ve accomplished the exact opposite of what you intended: We do not think you&#8217;re different. We are not confident in your ability to establish strong relationships with companies. And we will probably not think of you when we need funding later on.</p>

<p>I know. That&#8217;s really harsh stuff. In fact, I&#8217;m unfortunately notorious for being rough on venture capitalists during meetings when we were based in Silicon Valley. Which is why <strong>1)</strong> I&#8217;m not allowed to sit across from potential investors during lunch/dinner meetings so they can&#8217;t see the reactions on my face and <strong>2)</strong> Chris, Ryan and I rotate returning these calls to VC inquiries. And so, thankfully, it&#8217;s not just me. We all feel surprised, which means these firms are probably giving the same impression to countless other companies.</p>

<p>What we find surprising is how every single one of these associates miss the opportunity to be a hero&#8212;to truly make an impression. Because, honestly, it&#8217;s so bad out there, that it would probably take very little to actually impress us even a little bit. All you would have to do is indicate to us that you&#8217;ve at least read the marketing materials on our web site (<strong>the thing that you want to pump money into</strong>) and tried out our service (<strong>the thing that&#8217;s potentially going to make you more money</strong>).</p>

<p>At least then, you&#8217;d be in a decent position to have a conversation that has give and take&#8212;maybe even provide criticism that we might find valuable. And <strong>that</strong> would be the event that would have me write down your name. The moment someone tells me, a person that&#8217;s been thinking obsessively about how to improve my company 24/7 for the last 3 years, something insightful about my business, product or future that I haven&#8217;t thought of before would be awesome. Also, bonus points would probably be given to the investor that calls us with knowledge of any of the number of articles we&#8217;ve labored over for this blog.</p>

<p>Anyway, the take away from all this for venture capital firms is that we&#8217;re not <strong>really</strong> complaining. I mean, technically that&#8217;s all I&#8217;ve been doing, but I also want you to know that we are definitely honored to be in a position to have VCs that want our attention. We know that&#8217;s a rare position to be in and we don&#8217;t take it lightly. Which is why we&#8217;re actually rooting for you. For that hero associate out there to get a hold of us and maybe knock our socks off with a little insight or even just some good ol&#8217; fashioned genuine enthusiasm. For good reasons, we don&#8217;t want our time wasted. And we really do want you to accomplish your goals, which is to be remembered. You don&#8217;t have to be our biggest fan. We don&#8217;t expect that at this point, but we do think that if you&#8217;re asking us to consider handing over a percentage of our soul (a soul that we&#8217;ve cultivated with our own blood, sweat and tears) in the hopes of capitalizing on our now apparent successful trajectory, then we&#8217;d hope that you&#8217;ll at least do us the honor of reading our words and learning our craft.</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/how-not-to-pitch-to-a-startup/feed/</wfw:commentRss>
		<slash:comments>27</slash:comments>
		</item>
		<item>
		<title>How We Prepare a&#160;Demo</title>
		<link>http://particletree.com/features/how-we-prepare-a-demo/</link>
		<comments>http://particletree.com/features/how-we-prepare-a-demo/#comments</comments>
		<pubDate>Thu, 30 Oct 2008 05:15:23 +0000</pubDate>
		<dc:creator>Kevin Hale</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/?p=568</guid>
		<description><![CDATA[Introduction

While I&#8217;ve highlighted best practices and resources on how to pitch your ideas in the past, I thought I&#8217;d take some time to share exactly how we prepare for our demos when we&#8217;ve been invited to showcase Wufoo at conferences, events and VC boardrooms. We&#8217;ve spent a lot of time refining and practicing our workflow [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>While I&#8217;ve highlighted best practices and resources on <a href="http://particletree.com/notebook/pitching-ideas-roundup/">how to pitch your ideas</a> in the past, I thought I&#8217;d take some time to share exactly how we prepare for our demos when we&#8217;ve been invited to showcase Wufoo at conferences, events and VC boardrooms. We&#8217;ve spent a lot of time refining and practicing our workflow for presentations and after doing this a number of times now, I think we have a method that seems to <a href="http://wufoo.com/2007/03/28/wufoo-at-under-the-radar/">produce results</a> that we&#8217;ve been pretty proud of. While the amount of prep work we do probably isn&#8217;t for everyone and might be overkill to some of you, hopefully there will be some tips in here that will help you in your own presentations and demos.</p>

<p><a class="ptad" href="http://wufoo.com/?gad=CO_3o6UDEghyApM_y2FKeRjZ8LH7AyDP_uch&#038;gkw=submit+button" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>

<p>For all the examples in this article, I&#8217;ll be referring to the prep materials I generated for a 7 minute demo we were asked to do this past summer at the <a href="http://convention.nscs.org/">National Society of Collegiate Scholars</a> Convention in Orlando, FL. Because we (the founders) have demoed Wufoo countless times, we had one of our new hires, Tim Sabat, do the presentation to get some experience under his belt. Because this would be his first time with the material and because we&#8217;re obsessed about polish, you&#8217;ll notice that we leave very little to chance and improvisation.</p>

<h3>Getting Started</h3>

<p>If we&#8217;re presenting something completely new, we&#8217;ll start about a week before the presentation. If it&#8217;s something I&#8217;ve presented before and I have the slides and prep work already done, then I can probably get away with looking at stuff a day or two before. Either way, I&#8217;m probably going to be working and tweaking the slides all the way up until the moment before it&#8217;s time to go on stage. Because I wanted to try a new script (Wufoo had a lot of upgrades since the last time we demoed it) and Tim was new to this, I treated this presentation as if I were creating it from scratch.</p>

<p>We like to start every presentation with a rough outline. In fact, I pretty much start every thing I ever write with an outline and it&#8217;s one of the most common recommendations I have for people that have trouble with rambling and organization. It seems obvious, but you&#8217;d be surprised at the number of people that try to wing these things. Outlines keep us focused and help us make sure we hit the points that we need to cover like who we are, what we do, who uses us and the major features we want to highlight in the app. Here&#8217;s the <a href="http://s3.amazonaws.com/particletree-keynotes/NSCS/WufooDemoOutline.txt">outline I developed for our NSCS demo</a>.</p>

<pre><code>Introduction

- Particletree
- Treehouse
- Wufoo

What is Wufoo?
- online form builder
- help people collect information over web
- Infopath but friendlier

etc.
</code></pre>

<h3>The Transcript</h3>

<p>If the time allotted for the demo is under 15 minutes, which this was, then I basically take that outline and write out a full transcript&#8212;a word for word articulation of what would be said during the presentation. Not going to lie, it&#8217;s a lot of work to do this, but it&#8217;s definitely worth it. During a 6-8 minute demo, there isn&#8217;t any time to waste on finding your words. We believe a good short demo is like a  good short story&#8212;it&#8217;s carefully crafted. Even with material that feels like I should be very familiar and intimate with it (like talking about a startup and application I created from the ground up), I feel much more comfortable knowing that if I have a brain fart on stage, there&#8217;s a safety net for me to read from. Here&#8217;s a copy of the <a href="http://s3.amazonaws.com/particletree-keynotes/NSCS/WufooDemoTranscript.txt">final transcript I made for Tim for our NSCS demo</a>.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2780683763/" title="Wufoo Demo Transcript by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3015/2780683763_28c38f4676_o.png" width="606" height="346" alt="Wufoo Demo Transcript" /></a></p>

<p>The first version of this transcript is written as fast as possible since I know that it&#8217;ll go through lots of revisions when we start timing it and whittling it down. After the first draft is done, I&#8217;ll do a time check. Basically, I time how long it takes to read the introduction, how long it takes to read the demo and how long it takes to read the closing. I&#8217;m careful to make sure I&#8217;m reading slowly but clearly (I actually have a problem with speaking too fast when I&#8217;m confident), which is probably the most important part of this process. For me, I know I&#8217;m reading at the right pace when it starts to feel a little uncomfortable. Timing and reading out loud will let you know where there&#8217;s flow problems and also what needs to be cut or made more succinct.</p>

<p>For this presentation we aimed for about 2:45 in the introduction, 2 minutes for the demo and then about 2 minutes for the closing. Now, when we first launched Wufoo, we didn&#8217;t have any of the information on traction and usage and so during those presentations, our intro was obviously shorter and our demo time was then extended to show more features. One thing we&#8217;ve learned about demoing features is that it&#8217;s impossible to show everything. Even if I took the entire 7 minutes, I couldn&#8217;t show all the things possible with Wufoo and so it was important for us to hit the highlights and then compromise by just showing screenshots of other major features to wet an audience&#8217;s appetite and imagination for more.</p>

<p>After I was happy with what I came up with, I sent a copy off to Tim so he can look over it and let me know what phrasings didn&#8217;t sound like him or felt uncomfortable rolling off his tongue. I&#8217;ll also have him do a time check since he&#8217;ll actually be presenting. When that&#8217;s done, I&#8217;ll leave him to practice while I work on the slides.</p>

<h3>The Slides</h3>

<p>I do all of our presentation work in <a href="http://www.apple.com/iwork/keynote/">Keynote</a>. We&#8217;re all on Macs and so it&#8217;s very convenient. And while I do love the way everything looks on it, I&#8217;m pretty sure I could be just as effective with the latest version of <a href="http://office.microsoft.com/en-us/powerpoint/FX100487761033.aspx">Powerpoint</a>. Here&#8217;s a copy of the <a href="http://s3.amazonaws.com/particletree-keynotes/NSCS/WufooDemo.pdf">slides from the NSCS Demo</a>.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2985775820/" title="Untitled by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3197/2985775820_4ea58e61ae.jpg" width="500" height="381" alt="" /></a></p>

<p>The nice thing about making slides from a transcript is that it&#8217;s much more efficient. When I&#8217;ve made presentations based on just an outline in the past, I would usually waste a lot of time making a bunch of pretty slides that ended up being cut out of the final presentation after going through a few rehearsals and timings. In regards to actually designing it, there are so many ways to effectively illustrate a presentation. Since we&#8217;ve covered this <a href="http://particletree.com/notebook/powerpoint-and-presentation-tips/">in</a> <a href="http://particletree.com/notebook/great-speakers/">past</a> <a href="http://particletree.com/notebook/pitching-ideas-roundup/">articles</a>, I&#8217;ll just share some of the things I like to do when I design one:</p>

<ul>
<li><p>As you can see from the slide overview above, I like to use a lot of bright colors, images and screenshots. I prefer to illustrate rather than explain.</p></li>
<li><p>When showing a web site, I&#8217;ll cover a screenshot of the site with the <a href="http://www.flickr.com/photos/wufoo/2984919931/">url in large text</a> so it&#8217;s easy to read even in the back of the room.</p></li>
<li><p>When I purposely want the audience to feel overwhelmed, I&#8217;ll show lots of <a href="http://www.flickr.com/photos/wufoo/2984919961/">text</a> or <a href="http://www.flickr.com/photos/wufoo/2985775628/">images</a> on a single slide. Otherwise, it&#8217;s never more than a short sentence, if that.</p></li>
<li><p><a href="http://www.flickr.com/photos/wufoo/2780683733/">Duplicate the first slide</a>. A tip I got from Tim. This way you can leave it up on a screen without my notes showing or the timer starting.</p></li>
<li><p>Try to use <a href="http://www.flickr.com/photos/wufoo/2984920057/">humor</a> when possible. Sparingly and tastefully, of course.</p></li>
<li><p>Add any slides at the end that will easily answer some of the most commonly asked questions (this is why pricing page is added after the Thanks! slide).</p></li>
</ul>

<p>Additionally, I try to avoid using any transitions or animations in my presentation. I know some of them can be really slick, but in a demo with strict time limits, not only do I fee like I don&#8217;t have any time to waste, but I also don&#8217;t want the audience distracted by eye candy that makes them wonder about the software powering the presentation over what&#8217;s actually being said.</p>

<h3>Using Notes</h3>

<p>In Keynote (and I&#8217;m pretty sure in Powerpoint as well), you can add notes to each slide that will only display on your laptop when showing slides through a secondary display. Honestly, I think this notes feature is one of the most under-appreciated features in presentation applications. Ever since I&#8217;ve started using them, I&#8217;ve never gotten lost again or wondered why a certain slide was showing in the middle of a presentation. And so after the slides are done, I&#8217;ll start to copy and paste the appropriate sections in the transcript into the notes for each slide. Here&#8217;s a copy of the <a href="http://s3.amazonaws.com/particletree-keynotes/NSCS/WufooDemoWithNotes.pdf">slides with the transcript inserted as notes</a>.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2780683489/" title="slidetextformat2 by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3109/2780683489_6754ba3983.jpg" width="500" height="365" alt="slidetextformat2" /></a></p>

<p>One thing that you&#8217;ll notice in the slides with notes is that <a href="http://www.flickr.com/photos/wufoo/2780683267/">certain sentences or phrases</a> are copied across multiple slides and formatted with odd line breaks. The duplication is done so that if a sentence is illustrated by multiple slides, the rhythm of a sentence won&#8217;t be disturbed during the slide changes. Each new paragraph represents when the presenter should proceed to the next slide.</p>

<p>In Keynote, I&#8217;m not a fan of the default layout for showing notes. Thankfully, you can change these settings under <strong>Preferences -> Presenter Display -> Edit Presenter Layout&#8230;</strong></p>

<p><a href="http://www.flickr.com/photos/wufoo/2780683117/" title="keynotepreferences2 by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3238/2780683117_9854f8a02e.jpg" width="500" height="374" alt="keynotepreferences2" /></a></p>

<p>Obviously, you should experiment and find the layout that works best for you, but I like to maximize the amount of notes I can see and so the presenter layouts for my keynotes are set up like this:</p>

<p><a href="http://www.flickr.com/photos/wufoo/2780683023/" title="keynoteslidesetup by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3102/2780683023_b1efa393f4.jpg" width="500" height="348" alt="keynoteslidesetup" /></a></p>

<h3>Pre-Recorded Screencast</h3>

<p>There are a number of studies out there that show that <a href="http://www.codinghorror.com/blog/archives/000691.html">mult-tasking is a myth</a>. Our brains aren&#8217;t meant to do it. It should therefore be no surprise that driving your application and talking about it articulately at the same time is a really hard thing to do well&#8212;especially, when you&#8217;re under pressure to do so in a narrow range of time. During practices, we&#8217;d notice that when we tried this, it was never smooth. There would be awkward gaps of silence whenever any thought processing needed to be done to show off a feature and, for some reason, the ability to type always seemed to escape the person when they were talking at the same time. That&#8217;s when we made our demos a two man operation.</p>

<p><a href="http://flickr.com/photos/briansolis/432639397/"><img src="http://farm1.static.flickr.com/145/432639397_f0297cf3da.jpg" alt="Kevin and Chris at Under the Radar by Brian Solis" /></a></p>

<p>One person would drive the application and the other person would do a running commentary of what was happening on the screen. This worked out alright, but it also had its issues. For example, there would be this awkward transition where you have to wait to pull out of the program and then open a browser to start the demo part. Because of this, you couldn&#8217;t fall back on your notes inside the presentation software, which means you have to effectively completely memorize this part of the sequence along with your driver.</p>

<p>You could bring two laptops, but most displays at conferences aren&#8217;t prepared for this setup and you end up with an even more awkward transition that has the potential for a dreaded AV malfunction. Additionally, this also added two additional variables to your presentation: another person and another piece of software. In addition to having to pay for two people to do every demo, you and your driver both have to be in sync and your application just has to work. Even though we would run everything off a development localhost on our laptop so we wouldn&#8217;t have to rely on an Internet connection, it always made us nervous. And so after a few presentations run like this, we decided that it would be better to just pre-record the demo as a screencast. Here&#8217;s a copy of the <a href="http://s3.amazonaws.com/particletree-keynotes/NSCS/WufooNSCS.mov">movie used in the NSCS demo</a>.</p>

<p><object width="500" height="373"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=2091884&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" />  <embed src="http://vimeo.com/moogaloop.swf?clip_id=2091884&amp;server=vimeo.com&amp;show_title=1&amp;show_byline=0&amp;show_portrait=0&amp;color=ffffff&amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="500" height="373"></embed></object></p>

<p>Using a screencast solved the awkward transition problem, allowed us to still utilize notes, eliminate the variables of another person and software and made sure that we would not go over on time for that part of the demo. Keynote makes it very easy to insert movies into presentations. Just drag the movie into a blank slide and it&#8217;ll work pretty much like you expect. The only problem I have with it in Keynote is that the movie only plays on the secondary display and not in the presenter layout view and so you have to make sure you&#8217;re looking on the screen behind you so that you start speaking at the same time. But when it&#8217;s done right, it&#8217;s a pretty smooth experience.</p>

<p>The down side, of course, is that you have to do a lot more work ahead of time in prep. For the NSCS demo, I had Tim read off the demo portion of the script while I recorded myself doing the screencast with <a href="http://www.ambrosiasw.com/utilities/snapzprox/">Snapz Pro X</a> without the sound. It took us about 10 takes to get it just right and in the time span that we wanted.</p>

<h3>Keynote Display Preferences</h3>

<p>And that&#8217;s pretty much how we do it. After all the prep work is done, it&#8217;s pretty much up to the presenter to practice it enough for a smooth delivery and to memorize enough of the material so that they don&#8217;t have to rely on the script. Before I leave you to make and modify your own demos, I&#8217;d like to quickly share with you one last tip. Make sure you set up your presentation display settings ahead of time if you&#8217;re using Keynote. Here&#8217;s our settings:</p>

<p><a href="http://www.flickr.com/photos/wufoo/2780683077/" title="keynotepreferences by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3287/2780683077_c6f8673618.jpg" width="500" height="374" alt="keynotepreferences" /></a></p>

<p>Basically, have it set up to <strong>Present on secondary display</strong> and then definitely check your Display Preferences to make sure <strong>Show displays in menu bar</strong> is checked off so you can easily make adjustments on the spot. When you&#8217;re plugged into the secondary display, then you&#8217;ll want to make sure your Mac is <strong>not mirroring the primary display</strong> (done in display preferences). If that&#8217;s done right, your presenter notes will show properly on your laptop and keep you from looking like a spaz when the projector isn&#8217;t doing what you expected. Alright, good luck and happy demoing!</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/how-we-prepare-a-demo/feed/</wfw:commentRss>
		<slash:comments>33</slash:comments>
<enclosure url="http://s3.amazonaws.com/particletree-keynotes/NSCS/WufooNSCS.mov" length="6124990" type="video/quicktime" />
		</item>
		<item>
		<title>Be Kind to the Color&#160;Blind</title>
		<link>http://particletree.com/features/interfaces-and-color-blindness/</link>
		<comments>http://particletree.com/features/interfaces-and-color-blindness/#comments</comments>
		<pubDate>Mon, 20 Oct 2008 16:57:08 +0000</pubDate>
		<dc:creator>Chris Campbell</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/?p=516</guid>
		<description><![CDATA[Introduction

Hi, my name is Chris Campbell and I have a color vision deficiency. Like roughly 7-10% of all males, my deuteranomaly makes it difficult to differentiate between some colors, like red and green. Color deficiency, or color blindness as it&#8217;s commonly referred to, doesn&#8217;t mean that I or people with similar conditions cannot see certain [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>Hi, my name is Chris Campbell and I have a color vision deficiency. Like roughly <a href="http://en.wikipedia.org/wiki/Color_blindness#Prevalence">7-10% of all males</a>, my deuteranomaly makes it difficult to differentiate between some colors, like red and green. Color deficiency, or color blindness as it&#8217;s commonly referred to, doesn&#8217;t mean that I or people with similar conditions cannot see certain colors. They&#8217;re not invisible and I don&#8217;t see in black and white (a condition that is actually very, very rare). I can still use crayons effectively, find meaning in beautiful sunsets and even enjoy clear blue skies. What it does mean is that certain colors in the visual spectrum look a lot like one another and so I have a hard time sometimes telling the difference between certain colors and even shades.</p>

<p><a class="ptad" href="http://wufoo.com/?gad=CO_3o6UDEghyApM_y2FKeRjZ8LH7AyDP_uch&#038;gkw=submit+button" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>

<p>Because of this, designing software and interfaces that will also work effectively for people like me takes a bit of concerted effort. Of all the <a href="http://www.johnlovett.com/test.htm">elements of design</a> (line, shape, size, texture, etc.), color is probably one of the most used elements to pass on informational states. This is probably because it allows a designer to say many things without having to change the form or layout of the design. While there are a number of <a href="http://www.456bereastreet.com/archive/200709/10_colour_contrast_checking_tools_to_improve_the_accessibility_of_your_design/">simulators and plugins</a> that can help you &#8220;visualize&#8221; what a color deficient person might be seeing, I honestly don&#8217;t recommend spending a lot of time with them. Instead, I&#8217;d like to propose just a few simple guidelines along with plenty of examples to help you effectively ensure that a good percentage of your audience won&#8217;t misinterpret your message.</p>

<h3>Avoid Using Colors Alone as Visual Cues</h3>

<p>Using color and color alone as a visual cue is appealing because it&#8217;s usually an aesthetically pleasing and a minimalist design technique. Calls to action and visual cues are critical to interface designers because users, especially on the web, have <a href="http://eyetrack.poynter.org/keys_01.html">limited patience</a> and are looking to process information and make decisions quickly. Since the brain recognizes and <a href="http://findarticles.com/p/articles/mi_m0FCR/is_3_38/ai_n6249223">forms an emotional bond</a> with colors almost immediately, colors are a natural choice for visual cues. Unfortunately, it&#8217;s easy to alienate or confuse some of your users when some of those aesthetically pleasing colors look very similar. To point out a few interfaces that use hard to differentiate colors as visual cues, here are a few examples that have given me some trouble.</p>

<p><strong>Bad Cues</strong></p>

<div class="inlineImages">
<a href="http://www.flickr.com/photos/wufoo/2919012489/" title="Apple iPhone Availability by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3177/2919012489_ec4e236bf9.jpg" height="155" alt="Apple iPhone Availability" /></a>

<a href="http://www.flickr.com/photos/wufoo/2919012537/" title="MAMP Server Status by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3143/2919012537_d79da84cab.jpg" height="155" alt="MAMP Server Status" /></a>

<a href="http://www.flickr.com/photos/wufoo/2919857588/" title="Warhammer Online Server Status by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3289/2919857588_ccabc63c0a.jpg" height="155" alt="Warhammer Online Server Status" /></a>
</div>

<p>As you can see, all three of these interfaces use only red and green (two of the most misinterpreted colors) to convey states or provide information to the user.</p>

<ul>
<li><a href="http://apple.com">Apple&#8217;s</a> iPhone availability indicator uses color alone as a visual indicator. Interestingly enough, they <a href="http://developer.apple.com/documentation/Accessibility/Conceptual/AccessibilityMacOSX/AccessibilityMacOSX.pdf">state in their usability guidelines</a>:</li>
</ul>

<blockquote>
  <p>&#8220;Although color can greatly enhance a user interface, <strong>make sure it is not the only source of information</strong>. A color blind user may not be able to distinguish between two objects that differ only in color.&#8221;</p>
</blockquote>

<p>Now, what they do provide is a legend of what red and green are supposed to look like for each state. But for me, it&#8217;s still barely possible to match their indicators to the live data, and so the example remains pretty frustrating. It is, however, slightly better than the other two examples.</p>

<ul>
<li><a href="http://www.warhammeronline.com/">Warhammer Online</a>, a video game, and <a href="http://www.mamp.info/en/index.php">MAMP</a>, a development server application, exemplify the worst culprits because not only do they use similarly contrasting red and green colors as cues, but they don&#8217;t give you a reference or legend to help distinguish or label what &#8220;red&#8221; and &#8220;green&#8221; are even supposed to look like. </li>
</ul>

<p>In order to avoid an <a href="http://digg.com/gaming_news/Color_blind_gamers_common_Developer_awareness_Minimal">angry mob of color deficient users</a>, or to just ensure that you and your users are on the same page, here are some aesthetically pleasing interface examples that use text and icons, in addition colors, to communicate what&#8217;s going on.</p>

<p><strong>Good Cues</strong></p>

<div class="inlineImages">
<a href="http://www.flickr.com/photos/wufoo/2919859200/" title="Dropbox File Status"><img src="http://farm4.static.flickr.com/3242/2919859200_c7bf516f07.jpg" height="135" alt="Dropbox File Status" /></a>

<a href="http://www.flickr.com/photos/wufoo/1468761989/" title="Entry Manager"><img src="http://farm2.static.flickr.com/1310/1468761989_2de41db5bc.jpg" height="135" alt="Entry Manager - Viewing an Entry" /></a>

<a href="http://www.flickr.com/photos/wufoo/2919861782/" title="Versions"><img src="http://farm4.static.flickr.com/3115/2919861782_40eeb74ea6.jpg" height="135" alt="Versions" /></a>
</div>

<ul>
<li><p><a href="http://getdropbox.com">Dropbox</a> users know the status of their files because of the colored circles and icons attached to each file. The colored circles can be confusing to a small percentage of viewers, but it&#8217;s pretty hard to misunderstand what&#8217;s going on unless you&#8217;re both colorblind and not familiar with their commonly used icons.</p></li>
<li><p>The <a href="http://wufoo.com">Wufoo</a> and <a href="http://www.versionsapp.com/">Versions</a> screenshots pretty much leave no room for misinterpretation because they, like a stop sign, use combinations of shape, color, and a word / icon to give their visual cues meaning and context. You&#8217;re sure to leave very little to interpretation when you use three visual cues to convey a single message.</p></li>
</ul>

<p><strong>More Good Cues</strong></p>

<div class="inlineImages">
<a href="http://www.flickr.com/photos/wufoo/2958461684/" title="Apple Window Buttons by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3168/2958461684_06bda3145b.jpg" height="200" alt="Apple Window Buttons" /></a>
    
<a href="http://www.flickr.com/photos/wufoo/2919014483/" title="Tivo Menu by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3195/2919014483_772e72cff3.jpg" height="200" alt="Tivo Menu" /></a>
</div>

<ul>
<li><p>Again, Apple uses the hard to distinguish red, yellow, and green orbs as visual cues throughout their OSX windows, but this time they help those with color deficiencies by providing icons whenever you hover over the colored orbs. Since a user is only going to be interacting with those orbs when their mouse is hovering over them, it doesn&#8217;t hurt to hide the icons and keep the interface aesthetically pleasing until the user is clearly interacting with them.</p></li>
<li><p>The <a href="http://www.tivo.com/">TiVo</a> interface is strapped for space, and in order to give multiple visual cues using color by itself, a recorded show is represented with a full, green orb, and a show that is currently being recorded is represented with a smaller, red orb. Even if somebody cannot differentiate the colors that Tivo is using in this situation, they can tell the difference between a small and large circle.</p></li>
</ul>

<h3>Use Contrasting Colors</h3>

<p>Of course, as an interface designer, there are going to be times when you do not want to use icons or text as a cue due to space or aesthetic constraints. While I recommend using icons or text when you can, sometimes color and color alone is the most logical way or only choice to convey different information. Maps, for example, often use colors to display separate areas of information about a location. Also, sometimes designers want to indicate state by coloring just the text itself.</p>

<p>If you are going to use color alone, the best way to accommodate for the color deficient viewers out there is to get familiar with <strong>contrast</strong>. Kevin wrote an excellent article recently on <a href="http://particletree.com/notebook/calculating-color-contrast-for-legible-text/">programmatically finding good contrasting colors</a>. Additionally, a couple of great resources about how to choose proper contrasting colors can be found over at <a href="http://www.lighthouse.org/accessibility/effective-color-contrast/">lighthouse.org</a> and <a href="http://www.456bereastreet.com/archive/200709/10_colour_contrast_checking_tools_to_improve_the_accessibility_of_your_design/">456bereastreet</a>, but to give you a quick overview of what works and doesn&#8217;t work in my world, here are a couple examples.</p>

<p><strong>Bad Contrast</strong></p>

<div class="inlineImages">
<a href="http://www.flickr.com/photos/wufoo/2919857926/" title="NYTimes Map 2 by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3228/2919857926_60dc34a8c9.jpg" height="120" alt="NYTimes Map 2" /></a>
    
<a href="http://www.flickr.com/photos/wufoo/2919858618/" title="Trulia Map 1 by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3050/2919858618_4f1bf21f9c.jpg" height="120" alt="Trulia Map 1" /></a>

<a href="http://www.flickr.com/photos/wufoo/2957966777/" title="Bad Contrast Text by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3287/2957966777_71ab25cf7b_o.gif" height="120" alt="Bad Contrast Text" /></a>
</div>

<ul>
<li><p>This <a href="http://nytimes.com">New York Times</a> map is frustrating because the &#8220;Yes&#8221; and &#8220;Did Not Vote&#8221; colors are extremely close in contrast, and they basically look like the same thing to me. I wouldn&#8217;t even recognize there are four colors being used on that map. And actually, the classic example for bad contrast for the color blind in Wikipedia is <a href="http://flickr.com/photos/wufoo/2919123545/">this NY Times Map</a>.</p></li>
<li><p><a href="http://trulia.com">Trulia&#8217;s</a> maps are sometimes extremely tough to interpret for me because they not only use red, yellow and green, but they use multiple shades of those colors. I see this a lot of times in graphs and pie charts, and it&#8217;s probably the most frustrating example of all the screenshots I&#8217;ve documented in this article.</p></li>
<li><p>The red/black and red/green text are sometimes used as hyperlink colors on web sites. They can be problematic because certain combinations are colors that those with a deficiency often have trouble seeing.</p></li>
</ul>

<p><strong>Good Contrast</strong></p>

<div class="inlineImages">
<a href="http://www.flickr.com/photos/wufoo/2919016713/" title="NYTimes Map 1 by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3233/2919016713_95dd05e80f.jpg" height="135" alt="NYTimes Map 1" /></a>

<a href="http://www.flickr.com/photos/wufoo/2859942789/" title="Public Report Upgrades by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3216/2859942789_03f7952a97.jpg" height="135" alt="Public Report Upgrades" /></a>

<a href="http://www.flickr.com/photos/wufoo/2957966809/" title="Good Contrast Text by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3060/2957966809_fddae01baf_o.gif" height="135" alt="Good Contrast Text" /></a>
</div>

<ul>
<li><p>In this map, the New York Times does a better job because red and blue are easy to differentiate, and while light yellow and light blue can be confused by an extremely small percentage of people, the stripes they use clearly separate the states.</p></li>
<li><p>While this pie chart in Wufoo does use red and green, the colors in this example are contrasting enough to tell apart, especially when viewed directly next to another.</p></li>
<li><p>Here&#8217;s another set of text examples that are again a red/black and red/green combo, but they&#8217;re more distinguishable due to their higher contrast differences.</p></li>
</ul>

<h3>Conclusion</h3>

<p>For the most part, this isn&#8217;t a call to arms. I&#8217;m not on a quest to change the world, fight discrimination or demand visual equal rights. As you can see, if you want to avoid making color blunders, all you really need to do is to take a minute to make sure you provide a legend, use icons or words when possible and make sure your visual cues are high contrasting. You probably do not need to run your designs through a color checker and stress over whether or not your interface is going to offend your viewers. In fact, there&#8217;s a pretty good chance you&#8217;re working near or know somebody with a color deficiency, so having them give your design a once over is a great way to ensure your message is seen properly.</p>

<h3>Additional Reading</h3>

<ul>
<li><p><a href="http://critiquewall.com/2007/12/10/blindness">Blindness</a> - A series of images that are shown in both normal vision and how they appear to someone with a red/green colorblindness.</p></li>
<li><p><a href="http://www.colblindor.com/2007/02/06/colorblind-at-the-traffic-light/">What about Traffic Lights?</a> - Daniel Flück writes about why traffic lights do not confuse him. <a href="http://en.wikipedia.org/wiki/Traffic_light">Wikipedia also notes</a>, &#8220;Usually, the red light contains some orange in its hue, and the green light contains some blue, to provide some support for people with red-green color blindness.&#8221; This explains why color blind people do not actually need to memorize the location of where green and red lights are located, especially in the dark when you cannot pinpoint the location of where a light is coming from.</p></li>
<li><p><a href="http://en.wikipedia.org/wiki/Timeline_of_Crayola#1990.E2.80.93present">Emerson Moser</a> - In 1990, Moser was Crayola&#8217;s most senior crayon moulder and retired after 37 years. After moulding approximately 1.4 billion crayons, he revealed that he is actually color blind.</p></li>
<li><p><a href="http://discovermagazine.com/2007/apr/the-upside-of-color-blindness">Camouflage Detecter</a> - There is an upside to being color blind and it&#8217;s that you have the super human ability to detect camouflage like <a href="http://health.discovery.com/centers/kids/colorblind/colorblind_02.html">U.S. soldiers did in World War II</a>. That might also help explain why most animals have some form of color blindness.</p></li>
<li><p><a href="http://www.joystiq.com/2006/07/30/colorblind-gaming-or-table-tennis-is-impossibly-hard/">Colorblind gaming or: Table Tennis is impossibly hard!</a> - A color blind video gamer explains why Rockstar&#8217;s Table Tennis may be the most difficult game ever.</p></li>
<li><p><a href="http://www.colormatters.com/kaufman.html">Seeing Through the Eyes of The Color Blind Shopper</a> - &#8220;Many consumers throughout the United States have impaired or limited information processing capabilities as part of congenital or illness-related disabilities, yet their specific problems and needs are often not formally considered by firms, by researchers, or by students preparing to enter the business world. I learned this quite by accident in my own Consumer Analysis class when I gave a routine assignment to my students.&#8221;</p></li>
</ul>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/interfaces-and-color-blindness/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>On Asking Users For Their&#160;Feelings</title>
		<link>http://particletree.com/features/on-asking-users-for-their-feelings/</link>
		<comments>http://particletree.com/features/on-asking-users-for-their-feelings/#comments</comments>
		<pubDate>Wed, 16 Jul 2008 19:09:23 +0000</pubDate>
		<dc:creator>Kevin Hale</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/?p=325</guid>
		<description><![CDATA[Introduction

It&#8217;s a fickle world out here on the Internet and I&#8217;ve gotten used to bloggers coming and going, but my heart (and feedreader) still feels a deep pang of longing since Kathy Sierra&#8217;s exit from the scene over a year ago. Creating Passionate Users was and still is my favorite resource for inspirational outside-the-box ideas [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>It&#8217;s a fickle world out here on the Internet and I&#8217;ve gotten used to bloggers coming and going, but my heart (and feedreader) still feels a deep pang of longing since Kathy Sierra&#8217;s exit from the scene over a year ago. <a href="http://headrush.typepad.com/">Creating Passionate Users</a> was and still is my favorite resource for inspirational outside-the-box ideas for reaching out and exciting our users. And so I was delighted to hear at the beginning of the year that she would be speaking in our neck of the woods in Miami at <a href="http://futureofwebapps.com/2008/miami/">Future of Web Apps</a>.</p>

<p><a class="ptad" href="http://wufoo.com?gad=CO_3o6UDEghyApM_y2FKeRjZ8LH7AyDP_uch&#038;gkw=paypal" title="PayPal Integration"><img src="/images/ads/wufooad11.gif" alt="PayPal Integration" /></a></p>

<p>And it was fantastic. No surprise, I know, but Kathy Sierra has that rare ability to never disappoint and I think that&#8217;s remarkable. She titled the talk, <strong>Cognitive Seduction 3.5</strong> (Here&#8217;s the <a href="http://cdn3.libsyn.com/carsonsystems/02_Kathy_Sierra_Miami_08.mp3">audio</a>,  <a href="http://futureofwebapps.wordpress.com/2008/02/29/kathy-sierra-cognitive-seduction-35/">transcript</a> and <a href="http://www.futureofwebapps.com/2008/miami/assets/downloads/Kathy_Sierra.zip">slides</a>), and it was an updated lecture of her developing thesis of how software can take advantage of what science tells us about exciting our mammalian brains. What I want to share with you is one of the things we got out of her talk that&#8217;s definitely had a nice impact over at <a href="http://wufoo.com">Wufoo</a>.</p>

<p><a href="http://www.flickr.com/photos/whiteafrican/2299622481/"><img src="http://farm3.static.flickr.com/2094/2299622481_5e9a7cde67.jpg" alt="Kathy Sierra at FOWA Miami" /></a></p>

<p>One of the highlights of the presentation covered the importance of addressing your users&#8217; feelings. Establishing empathy is one of the harder things to recreate over the web and Kathy showed the irony of designing and approaching customer support as if your user is blindly excited to be going through forums and documentation to troubleshoot their issues. There&#8217;s a disconnect in those situations because we often forget that real-world interpersonal communication is 90% non-verbal. And while the dream may be to look at face recognition technology for what the future might hold for customer support, that future, unfortunately, isn&#8217;t here now.</p>

<h3>A Delicate Thing to Ask</h3>

<p>The idea I came up with as an alternative was that while we couldn&#8217;t passively detect our user&#8217;s feelings we could actively ask them. On Wufoo, if you can&#8217;t find the information you need to help yourself, we provide a <a href="http://wufoo.com/support/">Support Request Form</a> to help us identify and track your issues.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2277374923/" title="Wufoo Support Request"><img src="http://farm3.static.flickr.com/2055/2277374923_2986611eeb.jpg" width="500" height="338" alt="Wufoo Support Request Emotions" /></a></p>

<p>My idea was to simply add a dropdown field of possible feelings to the form and have them select the appropriate one. The tricky part we realized right away was in the copy. The obvious way to ask this is to write &#8220;How are you feeling?&#8221; But as soon as we wrote it, it felt all wrong. Basically, no customer support person would actually ask that in person especially if that user was visibly angry.</p>

<p>When you get to Wufoo&#8217;s Support Request Form, it&#8217;s because you couldn&#8217;t find the answer on the site and so we knew there was going to be some level of frustration brought to the table when encountering this type of form. Additionally, if you&#8217;ve never experienced customer support with our team, then you might also be skeptical about how things are going to play out based on past experiences with other services. Anyway, with that baggage of frustration, &#8220;How are you feeling?&#8221; ends up sounding condescending and I think it&#8217;s because it has connotations and allusions to being in a room with a psychiatrist, which is probably not the person you&#8217;re interested in having solve your technical support issues. Even I had a visceral reaction to the language and I made the field. And so after some fiddling, we ended up going live with &#8220;Emotional State.&#8221;</p>

<p><a href="http://www.flickr.com/photos/wufoo/2312905764/" title="Emotional State Added to Support Request Form"><img src="http://farm3.static.flickr.com/2385/2312905764_f5d98cb98d_o.png" width="360" height="348" alt="Emotional State Added to Support Request Form" /></a></p>

<p>It was the most neutral wording we could come up with and I think in context of the form, it fit because like everything else on there, it was ultimately about trying to efficiently get to the core of the user&#8217;s situation.</p>

<p>Now, this isn&#8217;t the first time we&#8217;ve taken to heart <a href="http://headrush.typepad.com/creating_passionate_users/2006/08/why_marketing_s.html" title="Why marketing should make the user manuals!">past advice</a> Kathy Sierra has given on customer support like <a href="http://wufoo.com/2008/02/19/wufoo-documentation-v20/">making our help and documentation as good as our marketing materials</a>. The changes we made there worked out fantastically for us and actually cut down our support requests by 20% as soon as we implemented it. That being said, I didn&#8217;t really have any expectations for the Emotional State dropdown. I was curious, but didn&#8217;t have a working hypothesis for what was going to happen. Part of this is because I&#8217;ve given up on predicting the future since everything always seems to be a surprise when it comes to users, but we were also not planning on changing how we reacted to a support request based on that dropdown (we answer every request as it comes in as fast as we can, regardless of whether that user is paying or not). And some of us were even skeptical that it would be used since we didn&#8217;t make any announcements and didn&#8217;t make it required on the form.</p>

<h3>The Results</h3>

<p>We added the emotional state dropdown to Wufoo&#8217;s Support Request Form on <strong>March 1, 2008</strong>. As of the writing of this article (July 16th, 2008), we&#8217;ve received <strong>801</strong> support requests since then and <strong>607</strong> of those requests specified an emotion using the drop down, which means <strong>75.8%</strong> of our users needing help were willing to share that information. To put that into perspective, the percentage of users filling out what browser they&#8217;re using in the form is only <strong>78.1%</strong>. So much for users not using it or thinking it&#8217;s not pertinent to solving their problems. Here&#8217;s the breakdown of the emotions that were collected.</p>

<table cellspacing="0" style="float:left">
    <thead>
        <tr>
            <td>Emotion</td><td>Number</td><td>Percentage</td>
        </tr>
    </thead>
    <tbody>
        <tr><td>Angry</td><td>20</td><td>3%</td></tr>
        <tr><td>Confused</td><td>278</td><td>46%</td></tr>
        <tr><td>Excited</td><td>61</td><td>10%</td></tr>
        <tr><td>Panicked</td><td>73</td><td>12%</td></tr>
        <tr><td>Upset</td><td>41</td><td>7%</td></tr>
        <tr><td>Worried</td><td>134</td><td>22%</td></tr>
        <tr><td colspan="3">&nbsp;</td></tr>
        <tr><td><b>Total</b></td><td><b>607</b></td><td><b>100%</b></td></tr>
    </tbody>
</table>

<p><a href="http://www.flickr.com/photos/wufoo/2674875130/" title="Emotional State Breakdown by Percentage"><img src="http://farm4.static.flickr.com/3238/2674875130_622d6ac236_o.png" width="305" height="215" alt="Emotional State Breakdown by Percentage since March 1, 2008" /></a></p>

<p>Additionally, not only did people use the field, they were moved by it. We were surprised at the number of emails, <a href="http://www.viget.com/inspire/wufoo-a-web-app-with-a-ui-that-really-cares/">blog</a> <a href="http://www.readwriteweb.com/archives/good_ui_design_make_it_easy_show_me_you_care.php">posts</a> and <a href="http://community.zdnet.co.uk/blog/0,1000000567,10007655o-2000331777b,00.htm">articles</a> written about this little dropdown. And the thing is, that was never our intention. We didn&#8217;t really want to bring attention to something like this, because if there was any magic in it (positive impacts to the user experience), we knew, like all things magical, that the spell would be broken if efforts were made to exploit it. The reason we&#8217;ve decided to share our experiences on Particletree is because 37Signals wrote recently about a <a href="http://www.37signals.com/svn/posts/1111-design-decisions-basecamp-support-request-form">design decision</a> to not go forward with a similar change to their request form and we felt that was a shame since the benefits we received were greater than just a better understanding of the nature of the user&#8217;s request.</p>

<p>For example, if you&#8217;re a fan of the writings of <a href="http://en.wikipedia.org/wiki/Jacques_Lacan#Other_concepts">Jacques-Marie-Émile Lacan</a>, then you know that written language is often a poor medium for expressing our thoughts. Before we added this drop down, and I never thought about this before we introduced it, our users had to compensate with tone and voice. One of the best things to come out of this is that the language used by our users to describe their issues now are more rational and dramatically less expressive (ie. nasty, filled with capital letters and exclamation marks). Ben McCann explains this best:</p>

<blockquote>
  <p><a href="GetSatisfaction.com">GetSatisfaction.com</a> also has this feature, which is really nice when you’re upset because you can express that without getting nasty. I&#8217;ve been in many situations where I&#8217;ve only gotten help from the customer service reps if I&#8217;ve gotten upset or angry at them.  Now it&#8217;s almost my default to be angry when talking to someone in customer service because of how many times I&#8217;ve been ignored while being polite. However, when I see something like this it calms me down because I get the sense that the company will listen without me having to be a jerk.  I much prefer being able to leave a courteous and informative message and I&#8217;m sure the people working in customer service prefer it as well.</p>
</blockquote>

<p>And he&#8217;s right, when it comes to customer support, I&#8217;d much prefer to deal with Mormons over prison inmates. A request that&#8217;s polite makes doing what you need to for your customers, which is often repetitive and frustrating, noticeably more pleasant. In our company, where every employee is required to handle a percentage of customer support, that&#8217;s a big impact on the everyone&#8217;s state of mind during what&#8217;s usually considered a grind in other organizations. Also, when 70% of your support requests all of a sudden become nicer, when the calls for help are noticeably more polite, you tend to go the extra distance. It&#8217;s a self-serving cycle that couldn&#8217;t have been predicted if we didn&#8217;t actually try it and honestly shouldn&#8217;t be underestimated when it comes to providing quality customer support.</p>

<p>Another thing that&#8217;s surprising to me in hindsight is what appears to be the relative honesty of the feelings expressed. If you&#8217;ve ever been to an emergency room, one of the first questions they ask you is to rate your pain on a scale of 1 to 10. It&#8217;s obvious that they use this to triage patients and so veterans of the system will exaggerate their pain level to reduce the time they spend in the waiting room. Chris had first-hand experience of this when he injured his ankle and the boy scout in him wouldn&#8217;t let him utter a number higher than 3, which resulted in a 6 hour wait for an xray while level 8 ear infections and pink eyes plowed ahead of him. Now, our users didn&#8217;t know that we were NOT going to use the emotional state as a way of setting priority to a request, but it turns out, for the most part, most people did not try to game the system. One theory for that is there wasn&#8217;t a feedback loop for this kind of behavior. Because we didn&#8217;t act differently, our users didn&#8217;t react to the dropdown as a variable to hack.</p>

<h3>Final Thoughts</h3>

<p>One thing I&#8217;d like to note, though, is that this is not a plug-and-play solution. I hope no one takes from this article that all you need for good customer service is to add a dropdown like this to your support request form. I truly believe that the motivations have to be genuine and part of a holistic approach that values your users&#8217; satisfaction. If you don&#8217;t believe or really care about your users&#8217; feelings, then this is probably going to backfire on you. The most important part of a request form is responsiveness (getting the problem addressed quickly and fixed). Once you have that foundation laid, then I would recommend assessing the emotional impact of the situation.</p>

<p>I know there are pessimists out there that think this touchy-feely stuff is bound to annoy more people than help them, but our users have responded surprisingly positive to us just asking the question. It&#8217;s about comfort. I think it might be that programmers, engineers and hackers are usually all about efficiency. You don&#8217;t need empathy to fix a bug or answer a question. It&#8217;s not a class they teach in Computer Science. But at Wufoo, we&#8217;ve come to discover that knowing how a person feels is one of the first steps towards humility. If our users are constantly confused or upset about how to do something in our application, then obviously that&#8217;s a failure on our end. Humility helps us accept our short-comings and make the changes necessary or help the person in a way that provides, in the end, a satisfying experience and a lasting relationship. And while that&#8217;s not something you need to fix your software, it is a vital part of running a good business.</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/on-asking-users-for-their-feelings/feed/</wfw:commentRss>
		<slash:comments>18</slash:comments>
		</item>
		<item>
		<title>Eclipse to Textmate: An IDEological&#160;Change</title>
		<link>http://particletree.com/features/eclipse-to-textmate-an-ideological-change/</link>
		<comments>http://particletree.com/features/eclipse-to-textmate-an-ideological-change/#comments</comments>
		<pubDate>Thu, 19 Jun 2008 15:08:52 +0000</pubDate>
		<dc:creator>Alex Vazquez</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/?p=321</guid>
		<description><![CDATA[Introduction

Hi everyone, my name is Alex Vazquez and I&#8217;m one of the new additions to the Wufoo Team. Because Chris, Kevin and Ryan prefer OSX and work primarily with PHP and JavaScript, they naturally wanted me to try moving over to their favorite development environment, Textmate. In this article, I thought I&#8217;d share some of [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>Hi everyone, my name is Alex Vazquez and I&#8217;m one of the new additions to the Wufoo Team. Because Chris, Kevin and Ryan prefer OSX and work primarily with PHP and JavaScript, they naturally wanted me to try moving over to their favorite development environment, <a href="http://macromates.com/">Textmate</a>. In this article, I thought I&#8217;d share some of my experiences making that switch from the perspective of someone used to handling large IDEs.</p>

<p><a class="ptad" href="http://wufoo.com?gad=CO_3o6UDEghyApM_y2FKeRjZ8LH7AyDP_uch&#038;gkw=paypal" title="PayPal Integration"><img src="/images/ads/wufooad11.gif" alt="PayPal Integration" /></a></p>

<p>The right development environment can save a programmer countless hours and is like a hammer in the carpenter&#8217;s tool belt. Since my background was in Java, my preference was for large sledge hammers and my development environment of choice was the de facto <a href="http://www.eclipse.org/">Java IDE Eclipse</a>. It has a number of amazing features like autocomplete, refactoring and hundreds of plugins for every task imaginable. It&#8217;s no secret Java requires mountains of code, but Eclipse was made to move mountains.</p>

<p>In the beginning, moving over to Textmate felt like I was given just paper and pencil to do my job. The truth of the matter is that IDE lovers like myself usually imagine something like <a href="http://en.wikipedia.org/wiki/Notepad">Notepad</a> when a developer mentions that all they use is a text editor to write code. This is usually what we&#8217;re thinking:</p>

<blockquote>
  <p>Okay that&#8217;s cute, but seriously where do you do your development? You&#8217;ve got to have some real tools somewhere. I mean they do give Eclipse away for free you know. Like free as in free beer.</p>
</blockquote>

<h3>Aesthetics</h3>

<p>While my conversion to Textmate was a bit slow, one of the first things I quickly fell in love with was their Twilight theme for color coding programming syntax.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2592022825/" title="Twilight Theme"><img src="http://farm4.static.flickr.com/3280/2592022825_69c317290b.jpg" width="498" height="500" alt="textmatetwilight" /></a></p>

<p>If Twilight doesn&#8217;t quite cut it for you, I highly recommend trying out the <a href="http://alternateidea.com/blog/articles/2006/1/3/textmate-vibrant-ink-theme-and-prototype-bundle" title="Vibrant Ink Theme">Vibrant Ink</a> color theme by Justin Palmer. It was nice to know that if I was going to be using something &#8220;dumb&#8221; it was at least going to look pretty. In fact, the entire application is very beautiful, which is one of the nice side-effects of working on a Mac.  I also found that the details in a number of simple features like &#8216;Find in Project&#8217; were really well done.</p>

<h3>Shortcut Keys</h3>

<p>Learning Textmate&#8217;s shortcut keys went a long way to making me comfortable with the editor and speeding up my development. Shortcuts work best when they feel like a reflex. I knew it was going to take some time to undue years of habits cultivated in another environment and so I prepared myself to be patient during the process. Because Textmate has such a minimal interface, using shortcuts is actually a crucial part of executing functions and commands efficiently in the application. Here are some of my favorite shortcuts in Textmate:</p>

<h4>Commands I&#8217;ve Committed to Memory</h4>

<table class="left" cellspacing="0">
<thead>
<tr>
<td>Action</td>
<td>Shortcut Keys</td>
<td>Phonetic Version</td>
</tr>
</thead>

<tbody>
<tr>
<td>Jump to File</td>
<td>&#x2318; T</td>
<td>Command T</td>
</tr>

<tr>
<td>Find</td>
<td>&#x2318; F</td>
<td>Command F</td>
</tr>

<tr>
<td>Find in Project</td>
<td>&#x2318; &#x21E7; F</td>
<td>Command Shift F</td>
</tr>

<tr>
<td>Use Selected Text in Find</td>
<td>&#x2318; E</td>
<td>Command E</td>
</tr>

<tr>
<td>Inline Find</td>
<td>&#x2303; S</td>
<td>Control S</td>
</tr>

<tr>
<td>Reveal the Current File in the Gutter</td>
<td>&#x2303; &#x2318; R</td>
<td>Control Command R</td>
</tr>
</tbody>
</table>

<h4>Commands that are Nice to Know</h4>

<table class="left" cellspacing="0">
<thead>
<tr>
<td>Action</td>
<td>Shortcut Keys</td>
<td>Phonetic Version</td>
</tr>
</thead>

<tbody>
<tr>
<td>Select Bundle Item</td>
<td>&#x2303; &#x2318; T</td>
<td>Control Command T</td>
</tr>

<tr>
<td>Move to Left Tab</td>
<td>&#x2325;  &#x2318; &#x2190;</td>
<td>Option Command Left</td>
</tr>

<tr>
<td>Move to Right Tab</td>
<td>&#x2325;  &#x2318; &#x2192;</td>
<td>Option Command Right</td>
</tr>

<tr>
<td>Build PHP and Show Syntax Errors</td>
<td>&#x2303; &#x21E7; V</td>
<td>Control Shift V</td>
</tr>

</tbody>
</table>

<p>For a great sheet of a lot more shortcuts, check out the <a href="http://manual.macromates.com/en/preface">Textmate manual</a>.</p>

<h3>Plugins</h3>

<p>Because Textmate&#8217;s API is very extensible, the plugins developed by outside parties are both varied and powerful. Two plugins that went a long way to making Textmate feel more complete to me were the <a href="http://jannisleidel.com/2008/02/missingdrawer/">Missing Drawer</a> and <a href="http://ciaranwal.sh/2007/11/29/svnmate-update">SVNMate</a>.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2592059727/" title="Missing Drawer"><img src="http://farm4.static.flickr.com/3174/2592059727_49b3115ed1_o.png" width="498" height="335" alt="missingdrawer-screenshot" /></a></p>

<p>The <strong>Missing Drawer</strong> plugin moves the file browser out of the drawer interface and into a side bar built into the project window so that it looks like a seamless extension of the editor.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2592059775/" title="SVNMate"><img src="http://farm4.static.flickr.com/3169/2592059775_1dc1db6468_o.png" width="655" height="261" alt="svnmate" /></a></p>

<p><strong>SVNMate</strong> visually displays the SVN status of files and directories in your file browser using color and shape coded icons. An integrated visual system likes this is really nice since it helps me avoid having to go back and forth with an external SVN client to see what I&#8217;m currently modifying. For a list of other plugins available for Textmate, check out the <a href="http://wiki.macromates.com/Main/Plugins">Plugin Wiki Page</a>.</p>

<h3>Bundles</h3>

<p>The true power of Textmate comes from its bundles. Bundles are snippets of code that help to extend the functionality of the application as you edit text. They&#8217;re usually triggered by key commands and tend to be language specific. It wasn&#8217;t until I learned about how to use and create commands and snippets, that Textmate became more than just a pretty text editor to me. Textmate has over a hundred available bundles. There&#8217;s so many that it actually helps to <a href="http://manual.macromates.com/en/bundles#hiding_bundles">hide the ones you don&#8217;t use regularly</a> using their Bundle Editor.</p>

<p>The genius of bundles is that they can be written in any of the major scripting languages (PHP, Python, Perl or Ruby). Developers from any language can easily extend the functionality of Textmate within minutes of learning how Bundles work. The entire Unix shell is even at your disposal, including GREP, SED and AWK, which are all right there and accessible from the text editor. Textmate also provides tons of examples so you don&#8217;t have to start from scratch. You can even view the source for the built-in bundles right in their Bundle Editor, although most of them seem to be written in Ruby.</p>

<p>A perfect example highlighting the beauty of bundles is the TODO bundle. A commonly excepted comment in the programming world is TODO, which notes tasks that still need to be done.</p>

<pre><code>/*
TODO - Escape all output from this function.
*/
</code></pre>

<p>Development environments then take all of those comments, and combine them into one todo list with clickable links back to the code. This is great, but since the TODO comment is so common, a lot of third party libraries use it generously throughout their code, which means your nice list has 100&#8217;s of items that you will never touch. To solve this, just go to the TODO bundle and select preferences. You can ignore TODO, and make your own such as ALEXTODO, TIMTODO and RYANTODO. Then, in your code place:</p>

<pre><code>/*
ALEXTODO - Escape all output from this function.
RYANTODO - Implement error handling.
*/
</code></pre>

<p>This will provide us with two todo lists, separated by developer, and with no todo items from third party libraries.</p>

<p><a href="http://www.flickr.com/photos/wufoo/2593021004/" title="Textmate TODO by wufoo, on Flickr"><img src="http://farm4.static.flickr.com/3120/2593021004_ee5c165568_o.png" width="612" height="313" alt="Textmate TODO" /></a></p>

<p>While this isn&#8217;t earth shattering, it is pretty convenient. Thanks to the simplicity of the bundle system, it allowed us to tweak the source code to meet our specific needs with little hassle. In comparison to Eclipse, extending Textmate is a breeze.</p>

<p>So far, I&#8217;ve written a shell command that opens my SVN client, <a href="http://www.lachoseinteractive.net/en/community/subversion/svnx/">SVNX</a>, without leaving Textmate and a command that formats text into a PHP comment block using Wufoo&#8217;s standard format. I did it in a few minutes and they&#8217;re both written in PHP. For more information on implementing Textmate commands in PHP, I recommend <a href="http://ciaranwal.sh/2008/04/04/textmate-tip-using-php-for-commands">Cirian Walsh&#8217;s article</a> on the subject. You&#8217;ll want to take a look through the source, text and PHP bundles functionality. With just a few custom commands, Textmate has quickly and easily become a personalized PHP editor for me.</p>

<h3>Final Thoughts</h3>

<p>Right now, the possibilities with Textmate seem limitless. The simplicity of the application and the ease of its extensibility is too inviting to ignore and I&#8217;m very excited about seeing how far I can push this little editor. It&#8217;s beautiful, lightweight and speedy&#8212;attributes that weren&#8217;t associated with my old Eclipse IDE. Because Textmate has a very strong following, there&#8217;s a lot of blogs and resources covering its use. Two must reads are <a href="http://blog.circlesixdesign.com/2007/01/02/digging-in-to-textmate/">Circle Six</a> and the excellently executed <a href="http://manual.macromates.com/en/">Textmate manual</a>. If you still can&#8217;t get enough after that, here&#8217;s some links to help you get the most out of my new favorite environment&#160;:</p>

<ul>
<li><a href="http://projects.serenity.de/textmate/tutorials/basics/" title="The Textmate Basics">An In Depth Guide Covering The Basics of Using Textmate</a>.</li>
<li>Our favorite Textmate screencasts on <a href="http://macromates.com/screencast/insert_html_tags.mov" title="HTML Tags in Textmate">html tags</a>, <a href="??http://macromates.com/screencast/html_text_transformations.mov" title="Text Transformations in Textmate">text transformations</a> and <a href="http://macromates.com/screencast/math_and_column_selections.mov" title="Column selections in Textmate">column selections</a>.</li>
<li><a href="http://blog.peterhaza.no/textmate2-what-we-can-expect-to-come/" title="Textmate 2 Rumors">Textmate 2 Rumors</a> and a <a href="http://www.screencast.com/users/Ciaran/folders/Jing/media/5944fb24-5a64-4b6f-b22c-65a5873c9d34" title="Textmate Codesense">Video of Codesense</a> in action, which will only be available in Textmate 2.</li>
<li>And if you&#8217;re hardcore, definitely join the Textmate discussions at <a href="irc://irc.freenode.net/##textmate">irc://irc.freenode.net/##textmate</a>.</li>
</ul>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/eclipse-to-textmate-an-ideological-change/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
<enclosure url="http://macromates.com/screencast/insert_html_tags.mov" length="8801991" type="video/quicktime" />
<enclosure url="http://macromates.com/screencast/html_text_transformations.mov" length="13907105" type="video/quicktime" />
<enclosure url="http://macromates.com/screencast/math_and_column_selections.mov" length="27615540" type="video/quicktime" />
		</item>
		<item>
		<title>Visualizing Fitts&#8217;s&#160;Law</title>
		<link>http://particletree.com/features/visualizing-fittss-law/</link>
		<comments>http://particletree.com/features/visualizing-fittss-law/#comments</comments>
		<pubDate>Wed, 03 Oct 2007 22:55:15 +0000</pubDate>
		<dc:creator>Kevin Hale</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/features/visualizing-fittss-law/</guid>
		<description><![CDATA[Introduction

In preparation for the redesigns and overhauls we implemented in Wufoo, I took some time to revisit a few HCI (Human-Computer Interaction) fundamentals with the hopes of gleaning something new out of the decades of research dedicated to making interfaces easier to use. One thing that surprised me was how most of the material was [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>In preparation for the <a href="http://wufoo.com/blog/2007/07/26/form-building/">redesigns</a> and <a href="http://wufoo.com/blog/2007/10/01/refreshing-the-entry-manager/">overhauls</a> we implemented in Wufoo, I took some time to revisit a few HCI (Human-Computer Interaction) fundamentals with the hopes of gleaning something new out of the decades of research dedicated to making interfaces easier to use. One thing that surprised me was how most of the material was pretty dense, heavily geared towards mathematicians it seemed and written in the impenetrable language of the academic elite. You&#8217;d think that if they&#8217;d really wanted to make an impact (especially on designers), they&#8217;d create documents that were a bit easier to digest.</p>

<p><a class="ptad" href="http://wufoo.com?gad=CO_3o6UDEghyApM_y2FKeRjZ8LH7AyDP_uch&#038;gkw=paypal" title="PayPal Integration"><img src="/images/ads/wufooad11.gif" alt="PayPal Integration" /></a></p>

<p>Back in school, I remember that it wasn&#8217;t until I started taking classes in physics that calculus made any kind of real sense to me. I just need diagrams to function. In that spirit, I thought it would be nice to go over <a href="http://en.wikipedia.org/wiki/Fitts'_law">Fitts&#8217;s Law</a>, a staple in the HCI diet, with a few visuals to explain both the concept and why it&#8217;s ideas are a bit more complicated than most would have you believe.</p>

<h3>Math of the Obvious</h3>

<p>Published in 1954, Fitts&#8217;s Law is an effective method of modeling the relationship of a very specific, yet common situation in interface design. That situation involves a human-powered appendage at rest (whether it&#8217;s physical like your finger or virtual like a mouse cursor) and a target area that&#8217;s located somewhere else. Here&#8217;s diagram the first:</p>

<p><img src="/examples/fitt/f0.gif" alt="Figure 1" /></p>

<p>Mathematically, Fitts&#8217;s law is stated as follows:</p>

<blockquote>
  <p>MT = a + b log2(2A/W)</p>
</blockquote>

<p>Basically, that means that the time to acquire a target is a function of the distance to and size of the target. It seems like a no brainer. The farther you are and the smaller the target, the longer it takes to move the cursor and point at said target. However, Tom Stafford said it best:</p>

<blockquote>
  <p>&#8220;Although the basic message is obvious (big things are easier to select) it is the precise mathematical characterization that is exciting, and that this characterization includes a logarithmic function - which means that the shape of the relationship between size and reaction time is curved so that small increases in size for small objects make it much easier to select them (whereas small increases in size for big objects don&#8217;t make that much difference). And the same applies for changes in target distance.&#8221;</p>
  
  <p><a href="http://www.mindhacks.com/blog/2005/01/size_and_selection_t.html">Size and selection times: Fitts&#8217;s Law</a></p>
</blockquote>

<p>Just to bring it into the real world, this makes sense since a penny is a lot easier to point at than a freckle and a house is just as easy to point at as an apartment complex. So the next time you <a href="http://www.mezzoblue.com/archives/2004/08/19/fitts_law/">optimize your web site based on Fitts&#8217;s Law</a>, remember that if your link is already huge, making it &#8220;huger&#8221; will not significantly increase the speed at which one can access it. However, making tiny links a little bigger does make a difference.</p>

<h3>Fitts&#8217;s Law is Made of Lines!</h3>

<p>Wanting to find practical lessons from Fitts&#8217;s equation, interface designers have derived a few rules of best practice to take advantage of one of the very few laws of human interaction. One rule, <strong>The Rule of Target Size</strong>, combines ideas behind Fitts&#8217;s Law and <a href="http://en.wikipedia.org/wiki/Hick's_law">Hick&#8217;s Law</a> (a law I&#8217;ll talk about on a later date) to state that the size of a button should be proportional to its expected frequency of use. Bruce &#8220;Tog&#8221; Tognazzini of Apple interface fame even developed an <a href="http://www.asktog.com/columns/022DesignedToGiveFitts.html">excellent quiz</a> to explain how Fitts&#8217;s Law can be used to develop rules to drastically improve operating system interfaces.</p>

<p>Before you go and follow these rules blindly in your applications, I want to remind you that Fitts&#8217;s Law describes a very specific situation. There is an assumption that the movement from the starting position is rapid and aimed, which means it&#8217;s always in a straight line and confident (starts with high initial velocity as if there were no other targets and you knew exactly where you needed to go). Also, I&#8217;ve seen a lot of people think Fitts&#8217;s Law describes the following situation:</p>

<p><img src="/examples/fitt/f1.gif" alt="Figure 1" /></p>

<p>However, in the equation shown above, there&#8217;s no variable for height of the target area, only width. And so one of the most talked about limitations of Fitts&#8217;s law in HCI circles is that it predicts movement in only one dimension. In Fitts&#8217;s original experiments, he actually only tested human performance in making horizontal moves toward a target. Both the amplitude of the move and the width of the terminating region were measured along the <strong>same axis</strong>, which means the model it describe looks more like this:</p>

<p><img src="/examples/fitt/f2.gif" alt="Figure 1" /></p>

<p>Now, if we were to base link size optimizations solely on Fitts&#8217;s Law and we assume that vertical and diagonal movements can be described using the same equation, then the ease at which you can point to a specific target actually depends on where your starting position is in relation to your target.</p>

<p><img src="/examples/fitt/f3.gif" alt="Figure 1" /></p>

<p>In the example above, the cursor on the right will technically have an easier time selecting the target than the cursor on the left since it will have more &#8220;target width&#8221; to work with. Notice that Fitt&#8217;s Law would work fine for circular targets since the width to the center of the object would be the same from all angles. However, it becomes less accurate for rectangular targets and even more so for irregular objects. In the next example, we&#8217;ll look at two attempts to optimize the target area of a link by increasing rectangular dimensions.</p>

<p><img src="/examples/fitt/f7.gif" alt="Figure 1" /></p>

<p>The second figure increases the width of the target box and the third increases the height. As you can see, based on where the mouse cursor starts, not all size increases on a rectangular target result in an easier target acquisition, which could be significant for web designers considering all CSS designs are based on the <a href="http://www.w3.org/TR/REC-CSS2/box.html">Box Model</a>.</p>

<h3>Physical vs Virtual Pointing</h3>

<p>Hundreds of derivative experiments have been performed since the publication of Fitts&#8217;s findings. One interesting paper from 1996 by <a href="http://www.sigchi.org/chi96/proceedings/papers/Graham/edg_txt.htm">Evan Graham and Christine MacKenzine</a>, analyzed differences between how well we pointed at objects in real space versus objects on the computer screen. They show that the movement from the starting point to the target area could be divided into two parts: the initial high velocity phase and a deceleration phase.</p>

<p><img src="/examples/fitt/f8.gif" alt="Figure 1" /></p>

<p>In their study, they discovered that the first phase was only affected by the distance away from the target. The scale of the display nor the size of an object didn&#8217;t make you approach it more quickly from the start (bigger links don&#8217;t make you more eager). The phase that actually affects the time to select a smaller object at the same distance, is in the deceleration phase. Now, here&#8217;s the &#8220;interesting&#8221; part:</p>

<blockquote>
  <p>&#8220;The difference between the virtual and physical display is apparent only in the second movement phase, where visual control of deceleration to the smaller targets in the virtual task took more time than in the physical task.&#8221;</p>
</blockquote>

<p>Basically, links and buttons on a screen are harder to point out with your mouse than with your finger. And the problem with mice apparently is not in their ability to get to the target, but in our ability to decelerate accurately with them. Apple, I eagerly wait for the release of some multi-touch monitor goodness.</p>

<h3>Rule of the Infinite Edge</h3>

<p>It turns out that computer monitors add a very interesting twist to Fitts&#8217;s model of target selection, because they have something called &#8220;edges.&#8221; Jeff Atwood of Coding Horror actually explained this rather excellently last year in an article on <a href="http://www.codinghorror.com/blog/archives/000642.html">Fitts&#8217;s Law and Infinite Width</a>. Because a pointing device can only go so far in any direction, targets at the edge of the screen technically have infinite target widths as illustrated below.</p>

<p><img src="/examples/fitt/f4.gif" alt="Figure 1" /></p>

<p>For an operating system and on any full screen application, these edges are usually considered the most valuable real estate since they are technically the most accessible. Not only do they have infinite widths, they also don&#8217;t require the user to have a deceleration phase when they approach these targets, since the edge of the screen will just stop them. This is also why it&#8217;s incredibly fast and intuitive to assign actions like Expose and Dashboard to the corners of a screen.</p>

<p><img src="/examples/fitt/f5.gif" alt="Figure 1" /></p>

<p>Unfortunately, web applications do not get to benefit from the <strong>Rule of Infinite Edges.</strong> Having the limitation of needing to run in a browser window with borders, it&#8217;s of little value according to Fitts&#8217;s Law for web designers to place buttons and links at the edges and corners unless the browser is running at full screen, which seems to only happen for kiosk applications.</p>

<p><img src="/examples/fitt/f6.gif" alt="Figure 1" /></p>

<p>This also might explain why the interfaces of Web Operating Systems will never be as good as those that can take advantage of the entire real estate of your monitor.</p>

<h3>Fitts Still Rules!</h3>

<p>The few limitations of Fitts&#8217;s Law that I&#8217;ve presented here are not an attempt to have you throw its lessons out the window. My hope is that by illustrating some of the debates, it&#8217;ll show you how something as simple as pointing at something is just as relevant and debatable now as it was over 50 years ago. And while it&#8217;s technically not an accurate description of most interface situations&#8212;humans don&#8217;t always move confidently to a target, we don&#8217;t move in only straight lines, there are usually several targets that can confuse us and target areas are almost always two dimensional&#8212;research that has created a more accurate mathematical model that compensates for 2 and even 3 dimensions, hardware noise, human error and a host of other factors doesn&#8217;t seem to change the fundamental truths behind Fitts&#8217;s rather versatile equation:</p>

<blockquote>
  <p>&#8220;Fitts&#8217;s law has been shown to apply under a variety of conditions, with many different limbs (hands, feet, head-mounted sights, eye gaze), manipulanda (input devices), physical environments (including underwater!), and user populations (young, old, mentally retarded, and drugged participants).&#8221;</p>
</blockquote>

<p>In the end, the big idea I&#8217;d like designers to take away from this article is that the challenge of software application design is so complex and filled with so many variables, that blanket solutions derived from Fitts&#8217;s Law should be used cautiously. With the increasing size of monitors, the rising popularity of variables that increase mouse acceleration and <a href="http://www.logitech.com/index.cfm/mice_pointers/mice/devices/130&amp;cl=us,en">technologies that alter how we scroll</a> through large screens, it&#8217;ll be interesting see how software designers will take advantage of tools that let us augment our ability to close large distances quickly.</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/visualizing-fittss-law/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>The Importance of Design in&#160;Business</title>
		<link>http://particletree.com/features/the-importance-of-design-in-business/</link>
		<comments>http://particletree.com/features/the-importance-of-design-in-business/#comments</comments>
		<pubDate>Tue, 14 Aug 2007 17:16:56 +0000</pubDate>
		<dc:creator>Chris Campbell</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/features/the-importance-of-design-in-business/</guid>
		<description><![CDATA[Introduction

Most of the debates on the importance of design in business are usually focused on how aesthetics affect a business&#8217;s bottom line. Whether it&#8217;s Facebook vs Myspace or Microsoft vs Apple, the argument is a lot like the infamous invisibility vs flight hypothetical. With absolutely no data, it can be argued on several levels and, [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>Most of the debates on the importance of design in business are usually focused on how aesthetics affect a business&#8217;s bottom line. Whether it&#8217;s Facebook vs Myspace or Microsoft vs Apple, the argument is a lot like the infamous <a href="http://www.google.com/search?q=invisibility+vs+flight">invisibility vs flight hypothetical</a>. With absolutely no data, it can be argued on several levels and, in the end, often say more about the person than the companies involved.</p>

<p><a class="ptad" href="http://wufoo.com?gad=CO_3o6UDEghyApM_y2FKeRjZ8LH7AyDP_uch&#038;gkw=paypal" title="PayPal Integration"><img src="/images/ads/wufooad11.gif" alt="PayPal Integration" /></a></p>

<p>On our team, our experiences and workflow have brought about a richer appreciation for the role of good design in a company. While we do like to focus heavily on the look and usability of our products and experiments, we believe design&#8217;s greatest value to a business goes deeper than the idea that it&#8217;s a glossy exterior that attracts customers. In an interview with Fortune Magazine, Steve Jobs said:</p>

<blockquote>
  <p>&#8220;Design is the fundamental soul of a human-made creation that ends up expressing itself in successive outer layers of the product.&#8221;</p>
</blockquote>

<p>It&#8217;s a little romantic, but we believe the greatest asset of this &#8220;fundamental soul&#8221; is the ability to dramatically influence the quality of a product and the culture of a company before production even begins. We think it&#8217;s a shame when developers debate the merits of design after the core product is already completed, because it misses out on design&#8217;s true potential: to impact your internal business. <em>Good design in our company doesn&#8217;t just sell products. Good design fosters collaboration, communicates strategy, sets expectations, improves the efficiency of a team, and most importantly inspires and motivates like nothing else.</em></p>

<h3>Setting Expectations</h3>

<p>Seth Godin recently mentioned in a <a href="http://sethgodin.typepad.com/seths_blog/2007/07/expectations.html">post on expectations</a> that when it comes to business,  promising big and delivering bigger seems to be the only reliable strategy. To gain buzz you need to set expectations high. To gain and retain customers, you need to surpass those expectations on a regular basis.  A great way to start is by setting the table for quality early on inside your organization and one of the best ways to do this is through design.</p>

<p>Numerous research studies have illustrated the impact of expectations on individuals and groups. The <a href="http://en.wikipedia.org/wiki/Pygmalion_effect">Pygmalion effect</a>, which is more commonly known as the Teacher-Expectancy effect, describes situations where students perform better than other students simply because they are expected to do so. In 2003, J. Sterling Livingston wrote an article for the <a href="http://harvardbusinessonline.hbsp.harvard.edu/home.jhtml">Harvard Business Review</a> about the Pygmalion effect in management. He explained that &#8220;if [managers] are skillful and have high expectations, subordinates&#8217; self confidence will grow, their capabilities will develop, and their productivity will be high.&#8221;</p>

<p>Garr Nolds, an associate professor of management at Kansai Gaidai University and an ex-Apple employee, believes that these high expectations for an organization should be set with design.</p>

<blockquote>
  <p>&#8220;[Companies] are beginning to preach design internally and demand great design, not just of the product-development teams, but of all departments. If an organization&#8217;s true brand is actually inside the company, then we sure as heck better make sure we have an internal climate that preaches great design and lives incredible design everyday.&#8221;</p>
  
  <p><a href="http://www.garrreynolds.com/Design/whydesign.html">Why Design Matters</a></p>
</blockquote>

<h3>Two Types of Quality</h3>

<p>One culture that does a fantastic job of incorporating design expectations into business practices at every level is the Japanese. Their version of <a href="http://en.wikipedia.org/wiki/Total_Quality_Management">total quality management</a>, which is a management strategy aimed at embedding awareness of quality in all organizational processes, is heavily dependent on aesthetic values. The relationship between design and quality is very close for the Japanese, who believe that in order to have a quality product or service, it needs to be created in a way that satisfies <a href="http://www.sixsigmainstitute.com/news/sixsigma/2006/02/delivering-two-kinds-of-quality.html">two different ideas of quality</a>. The first, <em>atarimae hinshitsu</em>, which is roughly translated as &#8220;taken-for-granted quality,&#8221; is the idea that things will work as they are intended. The second, <em>miryokuteki hinshitsu</em>, which means &#8220;enchanting quality,&#8221; is the idea that things should have an aesthetic quality that appeals to a person&#8217;s sense of beauty. Here&#8217;s a simple example to help make it a bit more clear:</p>

<blockquote>
  <p><strong>atarimae hinshitsu</strong><br />A pen will write.</p>
  
  <p><strong>miryokuteki hinshitsu</strong><br />A pen will write in a way that is pleasing to the writer AND leave behind ink that is pleasing to the reader.</p>
  
  <p><cite>&#8212;<a href="http://en.wikipedia.org/wiki/Miryokuteki_Hinshitsu">Wikipedia on miryokuteki hinshitsu</a></cite></p>
</blockquote>

<p>For the Japanese, the product or service isn&#8217;t good enough when it just works&#8212;it needs to also work elegantly to be considered of a sufficient quality that makes it presentable to the consumer. This belief is embedded deeply into Japan&#8217;s corporate culture and permeates everyone&#8217;s values from management to the workers on the factory floor. What Nolds and Japanese companies like Toyota understand is that to be effective in creating values that expect quality work from everyone on a team (not just designers), you have to instill these design values from the beginning and at a fundamental level that presents a commitment to beauty and elegance for everyone and at every step in the process. When you do this, you find your team rising not to the challenge or your competitors&#8217; cries, but to the designs presented before them.</p>

<h3>Design Helps Get Things Done</h3>

<p>When you provide engineers with a design from the beginning, in addition to setting expectations of quality, you provide a holistic understanding and strategy for what needs to be accomplished. <a href="http://particletree.com/features/a-designers-guide-to-prototyping-ajax/">Good prototypes</a> show exactly what the product is supposed to look like, and which features need to be created without getting in the programmer&#8217;s way.</p>

<blockquote>
  <p>&#8220;&#8230;without product design, our manager&#8217;s two fears remain unquelled. She has not established whether or not the users will like the product, which indeed leaves its success a mystery. Nor has she established what a &#8216;complete&#8217; product looks like, which leaves its completion a mystery.&#8221;</p>
  
  <p><cite><a href="http://www.amazon.com/Inmates-Are-Running-Asylum-Products/dp/0672316498" title="The Inmates Are Running the Asylum">Alan Cooper</a></cite></p>
</blockquote>

<p>Good designs that are established at the start of a project prevent the programmer from leaving features incomplete or straying off course to create &#8220;neat&#8221; features that may turn out to add unneeded complexity and reduce the usability of your products. Incomplete features hinder productivity and when you remove a programmer&#8217;s cool features after they&#8217;ve already created them, you open up the potential for arguments and bruised egos. The <a href="http://particletree.com/notebook/programming-and-the-sunk-cost-fallacy/">sunk cost fallacy</a> might be one of the most difficult concepts to accept when it&#8217;s your time and energy that has to be sunk.</p>

<p>Most of the programmers we know seem to have a common problem where they love to start challenging projects, but have a hard time following through and finishing. You may disagree on exactly how detailed a functional spec should be, but when your engineers are also acting as your interaction designer, chances are your product is going to take longer to complete and you won&#8217;t end up with the results you intended. There&#8217;s actually a common saying that goes something like this:</p>

<blockquote>
  <p>&#8220;The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time.&#8221;</p>
  
  <p><cite><a href="http://en.wikipedia.org/wiki/Ninety-ninety_rule">Ninety-Ninety Rule</a></cite></p>
</blockquote>

<p>Our team is definitely no exception, and while we have no problems working on features that excite our users, the boring features like backend account management or even documentation seem to be a real drag. To help speed up the work on boring or tedious projects, we often turn to design to get us going. To illustrate what I&#8217;m talking about, here&#8217;s two screenshots showing the old administrative interface compared to the new design proposed by Kevin:</p>

<p><img src="http://farm2.static.flickr.com/1253/1116592071_826aa2618f_o.gif" alt="Old vs New Wufoo Admin Interface" /></p>

<p>We couldn&#8217;t help but want to actually make it work. Well-designed comps show you what could be accomplished if you would only get off your lazy butt and bring the design to life. Not only does design get us started, but we find ourselves finishing projects that were well designed ahead of time much faster than projects that didn&#8217;t have a wireframe or prototype (like our billing system). We&#8217;ve come to learn that it&#8217;s hard to motivate technical people, including ourselves, through money, colorful toys, or gigantic monitors. We try, instead, to have a design ready for everything we&#8217;re about to approach so the motivation for accomplishment is instilled by our need to see something that looks cool come alive.</p>

<p>A good design also has the ability to remind us that we&#8217;re working on something worthwhile, which is another way design can help fuel productivity. This seems to be a common motivational factor for programmers. Here&#8217;s a few quotes from programmers <a href="http://discuss.joelonsoftware.com/default.asp?biz.5.376485.29">discussing the problem on how to motivate programmers</a> in the Joel on Software forums&#160;:</p>

<blockquote>
  <p>&#8220;If they&#8217;re new meat they haven&#8217;t really had the feeling of shipping a product and seeing it in the real world help somebody. That&#8217;s what gives me the biggest kick.&#8221;</p>
  
  <p>&#8220;I think the inverse of that is why most programmer&#8217;s get so fired up about not wanting to ship crap. Having been involved with a couple of projects that were total garbage I can&#8217;t tell you how horrible it is to continually have to apologize for the complete piece of shit that is sitting in front of a user.&#8221;</p>
</blockquote>

<p>By designing first, you know that you&#8217;re working on a product with a soul and not some middle manager&#8217;s steaming turd of a project that they&#8217;re just trying to ship out the door to make their quarterly bonus. Programmers do not want to work on garbage and when they see something that&#8217;s useful, real, and worth accomplishing, they&#8217;re internally motivated to not only start but to also finish.</p>

<h3>Conclusion</h3>

<p>Deep down, we all have a desire to be proud of our work, and design is a great way to set the stage for excellence within your organization. When you start out with a beautiful and awe inspiring wireframe or prototype, your expectations about that product and everything associated with it is expected to also be beautiful and awe inspiring. If the initial expectations for a web application are low by bad or no design, then bad practices seem to find their way into the code, the web site marketing, and even the attitudes toward customers by employees. When you start with great design as a foundation, there is a snowball effect on the quality and execution of a product from start to finish.</p>

<p>In a healthy business culture, <a href="http://my.execpc.com/~jwoods/6values.htm">what&#8217;s good for the company and for customers comes together</a> and becomes the driving force behind what everyone does. Whether or not design results in a few more units sold can be debated, but I don&#8217;t believe we&#8217;d argue about the importance of instilling pride and values in your workforce. This is where the true value of design lies.</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/the-importance-of-design-in-business/feed/</wfw:commentRss>
		<slash:comments>15</slash:comments>
		</item>
		<item>
		<title>On the Tenacity of Internet Explorer&#160;6</title>
		<link>http://particletree.com/features/on-the-tenacity-of-internet-explorer-6/</link>
		<comments>http://particletree.com/features/on-the-tenacity-of-internet-explorer-6/#comments</comments>
		<pubDate>Tue, 03 Jul 2007 18:02:39 +0000</pubDate>
		<dc:creator>Kevin Hale</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/features/on-the-tenacity-of-internet-explorer-6/</guid>
		<description><![CDATA[Being someone that&#8217;s interested in having as many people using browsers with the latest CSS and JavaScript implementations, I&#8217;ve been struggling to figure out why Firefox adoption rates and even Internet Explorer 7 adoption rates are flat lining. Have we basically converted everyone that had a problem with Internet Explorer 6?

And that&#8217;s when it got [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<p>Being someone that&#8217;s interested in having as many people using browsers with the latest CSS and JavaScript implementations, I&#8217;ve been struggling to figure out why <a href="http://software.silicon.com/security/0,39024655,39130294,00.htm">Firefox adoption rates</a> and even <a href="http://www.pcworld.com/article/id,131600-c,internetexplorer/article.html">Internet Explorer 7 adoption rates</a> are <a href="http://www.clickdensity.com/Browser-Adoption-Rates.aspx?AspxAutoDetectCookieSupport=1">flat lining</a>. Have we basically converted everyone that had a problem with Internet Explorer 6?</p>

<p>And that&#8217;s when it got me thinking. What were the problems to the masses that got them switching over in the first place? Last year I wrote a bit about <a href="http://particletree.com/notebook/the-change-function/">The Change Function</a>, a concept that proposes that people move over to new products based on the relationship of two variables: <strong>Perceived Crisis</strong> and <strong>Total Perceived Pain of Adoption</strong>. And at the height of the Firefox craze, there was a a very real crisis across the Internet and it came in the form of viruses, pop-ups and spyware.</p>

<p><a class="ptad" href="http://wufoo.com" title="PayPal Integration"><img src="/images/ads/wufooad11.gif" alt="PayPal Integration" /></a></p>

<p>Between 2003 - 2004, we were at the peak of the crisis with the Internet suffering from spam terrorism. During the height of conversions, Firefox was one of the first popular solutions for making the web usable again. Yes, it loaded faster and sure it had tabbed browsing, but the biggest difference of opening a web site in Firefox versus Internet Explorer 6 was that you weren&#8217;t ashamed to do so around children and colleagues at work.</p>

<h3>Toolbars Killed the Firefox Star</h3>

<p>In 2005 something happened. Pop-ups and spyware started to become less of a problem. Here&#8217;s a graph courtesy of Google Trends that shows the decline in users searching for <strong>popup</strong> and <strong>pop-up</strong> over the last few years.</p>

<p><a href="http://www.google.com/trends?q=popup%2C+pop-up&amp;ctab=0&amp;geo=all&amp;date=all&amp;sort=0"><img src="/images/viz.png" alt="Popup, Pop-up" /></a></p>

<p>Firefox was just one solution of many that were released by <strong>everyone</strong> and their mom to help make the Internet safe again from popups and spyware. There were countless programs created to help fight the good fight. Even AOL pitched in, releasing AOL version 9.0 and AOL Spyware Protection in 2004. My guess is that <a href="http://toolbar.google.com">Google Toolbar</a>, <a href="http://toolbar.yahoo.com">Yahoo Toolbar</a>, <a href="http://toolbar.msn.com">MSN Search Toolbar</a> and <a href="http://toolbar.live.com">Windows Live Toolbar</a> were probably the most popular and they all patched up IE6&#8217;s biggest problem (in the eyes of users) by blocking popups.</p>

<p>In regards to the spyware hysteria, here&#8217;s a look at the activity involving searches for the term <strong>spyware</strong> in relation to the popup searches in Google Trends:</p>

<p><a href="http://www.google.com/trends?q=popup%2C+pop-up%2C+spyware&amp;ctab=0&amp;geo=all&amp;date=all&amp;sort=0"><img src="/images/viz-1.png" alt="Popup, Pop-up, Spyware" /></a></p>

<p>To give you some context that might explain things, at the end of 2004, Microsoft finally released Windows XP Service Pack 2 and if you look at the <a href="http://www.microsoft.com/windowsxp/sp2/features.mspx">feature list</a>, you&#8217;ll notice the first one highlighted is &#8220;Internet Explorer Pop-up Blocker.&#8221; In January 2005, Microsoft launched their Anti-Spyware and Anti-Virus Tools, which was offered for free and seeing that it came from a familiar (and some-what) trusted source&#8212;it too, was downloaded like gangbusters.</p>

<p>And so we shouldn&#8217;t be surprised that in the fall of 2005, a <a href="http://www.mezzoblue.com/archives/2005/10/18/firefox_grow/">number</a> of <a href="http://www.456bereastreet.com/archive/200510/why_is_firefox_adoption_slowing_down/">reports</a> started coming in from bloggers wondering about the slowing of Firefox adoption. By the end of the first quarter of 2006, we can see that spyware was on the slow decline in the minds of users of the Internet. By the time Internet Explorer 7 came out in the fall of 2006, the crisis was basically over and the masses were already content customizing their favorite web 1.0 application (MySpace), which worked just fine in IE6.</p>

<p>One might even argue that the arrival of IE7 was way too late and probably explains why the browser&#8217;s adoption rate (and I&#8217;m guessing here) follows the adoption rates of Vista and those who are willing to let SP2 just install it for them. What&#8217;s interesting is that Microsoft should be thanking Google. The company that had done the most to encourage Firefox adoption, might have also done the most harm with their, well&#8230;excellent toolbar for IE6. In fact, Google&#8217;s toolbar and desktop search applications pretty much launched the whole toolbar battle that&#8217;s been raging between the trinity (Yahoo, Google and Microsoft). My bet is that for every toolbar that was installed on Internet Explorer 6, it effectively halted the need for that user to convert to a different browser.</p>

<h3>The Effect of iTunes and BitTorrent</h3>

<p>If you can remember, the primary delivery mechanism of a number of spyware and popup programs was through file sharing networks like <a href="http://www.imilly.com/kazaa.htm">Kazaa</a> and <a href="http://www.auditmypc.com/process/bearshare.asp">BearShare</a>. The need of the public to search and download millions of songs and videos (and porn) was exploited by numbers of malicious advertisers and web sites by uploading tons of self-installing programs disguised as desirable media. File sharing programs themselves even <a href="http://news.com.com/2100-1023-257592.html">turned out to be spyware</a>.</p>

<p>In April of 2003, which was in the middle of this crisis, Apple launched the <a href="http://www.apple.com/itunes/store/">iTunes Music Store</a>, a legal alternative to downloading music that people seemed to be happy to see just work. It took a few years, but by the summer of 2005 over half a billion songs had been downloaded through the iTunes. Following their lead, a number of music download services launched and the demand for music and videos was met with a safe, perceptively cheap and extremely easy outlet.</p>

<p>In addition to a legal alternative, traditional file sharing networks were also being replaced by a new mechanism for media transfer: <a href="http://en.wikipedia.org/wiki/BitTorrent">BitTorrent</a>. What&#8217;s interesting about the torrent community, is their dedication to quality. The most popular torrents are carefully cataloged and meticulously labeled and compressed. It&#8217;s a relatively safer community than traditional file sharing networks based on Gnutella clients and the worst thing you&#8217;ll come across in your downloads are poisoned torrents from HBO.</p>

<p>While Bram Cohen, implemented the first versions back in 2001, it wasn&#8217;t until 2003 that the protocol became hot when it was combined with RSS to create <a href="http://en.wikipedia.org/wiki/Broadcatching">broadcatching</a>. Popularized by <a href="http://web.archive.org/web/20040213093750/http://scottraymond.net/archive/4745">Steve Gilmor&#8217;s article</a>, which was written for Ziff-Davis (they own PC Magazine and a number of other popular media sites), the idea that you can just subscribe to your favorite shows and watch them the day after they aired captured the imaginations of a large number of users hoping for the convenience of TIVO without the costs.</p>

<p>And so, in addition to spyware being blocked by toolbars and other helpful applications, the channel by which spyware and viruses were infecting browsers and computers, was replaced by alternatives that produced clean downloads. The crisis that gave birth to Firefox&#8217;s rising popularity was extinguished on two fronts and from unexpected sources.</p>

<h3>What about Safari?</h3>

<p>In regards to Safari, the increased adoption there (like Internet Explorer 7) is probably tied to the increased market share Apple&#8217;s computers are making in the PC market. I find it interesting that some people think Apple&#8217;s release of Safari for Windows is a serious attempt to gain browser adoption on the personal computer. The thing is nothing has changed. The factors that lead users to switch to Firefox aren&#8217;t around anymore and so what real hopes does Apple have for people to switch to Safari?</p>

<p>Safari is entering a crowded space and is far from being above and beyond better than its competition. Let&#8217;s face it, Firefox is a great browser with a great development team behind it and beating it on quality and innovation will be tough. If anyone understands the importance of a vacuum or crisis to cause users to switch, Apple certainly does. The iPod, iTunes Music Store and iPhone were are released in those conditions. Knowing this going in, I&#8217;d like to argue that Steve Jobs has no real passion about growing Safari usage on Windows. If you listen to the keynote when he announced the beta, he was even half-hearted about his enthusiasm for Safari making some headroom in the market.</p>

<p>No, browsing on the Internet on a personal computer doesn&#8217;t suck anymore. Where it does suck, however, is on the cell phone. Safari isn&#8217;t leaps and bounds better than Firefox or IE7, but it is ridiculously better than every mobile browser out on the market today. So the serious strategy, I think, for Safari is to grow it like iTunes, which piggybacked off the iPod. Make the hardware associated with it (iPhone) number one in its market and then by it being the default and only browser on the system (one of the adoption factors I list below), you spread your software better than if you were to try and compete directly with other vendors. Considering the <a href="http://valleywag.com/tech/iphone/the-iphone-sales-estimate-guessing-game-274508.php">fanfare</a> iPhone has received so far, it&#8217;s hard to believe it won&#8217;t take off like the iPod.</p>

<p>Here&#8217;s what I think about the release of Safari on the Windows platform. It has less to do with attempting to actually be a competitor in the browser space as it does with giving developers a tool to accurately test and build iPhone applications. Steve Jobs said there wouldn&#8217;t be an SDK for the iPhone because he essentially just announced it with the release of Safari 3 for both operating systems, which is, for the most part, exactly what he said. Apple is betting that Safari is going to be the #1 mobile browser because the iPhone is probably going to be the #1 cell phone. And if the world is moving towards an Internet powered by mobile broadband, then developers (knowing how the story went with IE6) are going to make sure their sites and web applications works on the #1 platform.</p>

<h3>In Conclusion</h3>

<p>My theory of browser adoption is built on the foundation that your typical user is incredibly lazy and hates change. There are really only two factors driving browser adoption.</p>

<ul>
<li>Was it the default browser on the system?</li>
<li>Does it make browsing the Internet suck?</li>
</ul>

<p>Now, you may think IE6 obviously makes browsing the Internet suck because it doesn&#8217;t have tabs and tends to implement CSS and JavaScript poorly. But that&#8217;s because if you&#8217;re reading this site, you&#8217;re probably a designer or developer. Remember: ugly, buggy and slow aren&#8217;t enough to make users think it sucks enough to switch (think MySpace and Windows). In hindsight, the best thing to happen to Firefox was probably the rise of file sharing networks, spyware and pop-ups. Basically, everything that made the web suck. Everything that made the web a safer place to browse, made Firefox less relevant and quelled the urgency that made an alternative to IE6 a necessity.</p>

<p>What I find most interesting is that web developers (specifically those of the standards and Web 2.0 variety, which includes myself), were so excited by the Firefox momentum that we were convinced that it was a revolution. We actually thought the masses were starting to believe Internet Explorer was Satan incarnate. Just goes to show that it has to be in your face popups of wangs and cooters to make you download something different.</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/on-the-tenacity-of-internet-explorer-6/feed/</wfw:commentRss>
		<slash:comments>45</slash:comments>
		</item>
		<item>
		<title>Web App&#160;Autopsy</title>
		<link>http://particletree.com/features/web-app-autopsy/</link>
		<comments>http://particletree.com/features/web-app-autopsy/#comments</comments>
		<pubDate>Tue, 26 Jun 2007 15:41:47 +0000</pubDate>
		<dc:creator>Ryan Campbell</dc:creator>
				<category><![CDATA[Features]]></category>

		<guid isPermaLink="false">http://particletree.com/features/web-app-autopsy/</guid>
		<description><![CDATA[Introduction

Some of the most difficult questions about a startup have to do with making predictions about the future. Estimates are just part of the game if you&#8217;re trying to manage the precious few resources you have at various points in the beginnings of your company. The problem is we&#8217;re all pretty terrible about extrapolations because [...]<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></description>
			<content:encoded><![CDATA[<h3>Introduction</h3>

<p>Some of the most difficult questions about a startup have to do with making predictions about the future. Estimates are just part of the game if you&#8217;re trying to manage the precious few resources you have at various points in the beginnings of your company. The problem is we&#8217;re all pretty terrible about extrapolations because if you&#8217;re an entrepreneur, by definition, all your estimates will be wildly optimistic.</p>

<p>Making mistakes about your skills and speed can lead you to hold off on a billing system until the last minute or estimate that you have 1 month to launch when you really have 4. And if you&#8217;re not careful, hubris might kick in and have you predicting a $1 million in revenue within 8 months of launch.</p>

<p><a class="ptad" href="http://wufoo.com?gad=CO_3o6UDEghyApM_y2FKeRjZ8LH7AyDP_uch&#038;gkw=submit+button" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>

<p>In this feature, we&#8217;d like to help you minimize those mistakes by dissecting 4 very different web application companies that are at varying stages of their life cycle. In addition to age and size, these companies vary in their business models, programming languages and views on approaching the web as a platform. Specifically, we&#8217;ll be sharing code line counts, business processes, conversion rates, support requests revenues per customer. It&#8217;s good stuff and we&#8217;re hoping it&#8217;ll help you identify some trends that&#8217;ll make your predictions a bit more accurate.</p>

<h3>The Participants</h3>

<p>Here is a quick overview of the companies featured in this article:</p>

<ul>
<li><p><strong><a href="http://wufoo.com">Wufoo</a></strong> is our web application. It&#8217;s an online HTML form builder that helps anybody collect information over the Internet. When you design a form with Wufoo, it automatically builds the database, backend and scripts needed to make collecting and understanding your data easy, fast and fun.</p></li>
<li><p><strong><a href="http://blinksale.com">Blinksale</a></strong> is used to invoice clients for services or products sold. Blinksale is used by attorneys, accountants, designers, IT professionals, software developers, journalists, contractors, engineers, architects, videographers, and more. Basically, if you need to send invoices, Blinksale can work for you.</p></li>
<li><p><strong><a href="http://feedburner.com">FeedBurner</a></strong> is the leading provider of media distribution and audience engagement services for blogs and RSS feeds. Their web-based tools help bloggers, podcasters and commercial publishers promote, deliver and profit from their content on the Web.</p></li>
<li><p><strong><a href="http://regonline.com">RegOnline</a></strong> is one of the largest online registration systems on the web having processed over 3,537,094 registrations for more than 49,133 events worldwide. Over the past eight years they&#8217;ve invested over 20,000 development hours into the system and is considered one of the most mature and robust event registration systems available today.</p></li>
</ul>

<h3>The Basics</h3>

<p>Looking over the basics, everything is fairly standard. The longer a startup has been around, the more employees it has, and programming language alone will not make or break a company.</p>

<table cellspacing="0">
<thead>
<tr><td></td><td>Language</td><td>Time to Launch</td><td>Launch Date</td><td>Current Employees</td></tr>
</thead>
<tbody>
<tr><td><b>Wufoo</b></td><td>PHP</td><td>6 months</td><td>July 2006</td><td>3</td></tr>
<tr><td><b>Blinksale</b></td><td>Ruby on Rails</td><td>3 months</td><td>July 2005</td><td>6</td></tr>
<tr><td><b>FeedBurner</b></td><td>Java</td><td>5 months</td><td>February 2004</td><td>~30</td></tr>
<tr><td><b>RegOnline</b></td><td>.NET</td><td>3 years</td><td>1996</td><td>50</td></tr>
</tbody>
</table>

<p>The largest discrepancy is with time to launch. All companies were started with 3 or less people working on the code, but RegOnline in particular took the tough route: bootstrapping. The original founder worked a full time job, and wrote the code in his off time. This approach is definitely more demanding and requires much more dedication than receiving funding or backing by your freelance firm, but it can be done. All participants agreed that language had little to do with time to launch.</p>

<h3>Code Line Counts</h3>

<p>Not surprisingly, the longer a company has been around the more code it has. Experience also shows that once you are past your base set of code, the percentage dedicated to server side code starts to increase. This is primarily due to added complexity of features and other enhancements (spam protection, security, error handling, etc.) that do not necessarily have an interface element attached to them.</p>

<p><a href="/sxsw/autopsy.pdf"><img src="/sxsw/autopsy1.gif" alt="Download a PDF of the Slides" /></a></p>

<p>As far as the original interface is concerned, it&#8217;s interesting to see how Wufoo, the youngest company, has 29% of it&#8217;s code invested in JavaScript with the second highest line count for that language among all 4 companies. Arguably, this trend will probably continue with other young &#8220;Web 2.0&#8221; apps as they adopt more Ajax intensive programming techniques.</p>

<p>As far as choice of language goes, all 4 companies are satisfied with their choices. There are a few minor complaints &#8212; FeedBurner wishes to some extent that the lighter, simple web interface tasks were in a different language (but they&#8217;re just fine with the heavy processing in Java), while RegOnline is aware of the fees that need to be paid in order to use a Microsoft based development platform &#8212; but overall, everyone is happy. In the end, it seems that choosing a language that you&#8217;re comfortable with can result in less lines of code and a quicker development time.</p>

<h3>Line Counts per Business Process</h3>

<p>The goal of this section was to uncover any task that might be overlooked. When writing a software product, the tendency is to focus 100% on the application. Items like support, marketing, and especially billing never cross your mind &#8212; in addition to the <a href="http://particletree.com/notebook/the-underbelly-of-a-web-app/" title="Underbelly of a Web App">rest of the underbelly</a>.</p>

<p><a href="/sxsw/autopsy.pdf"><img src="/sxsw/autopsy2.gif" alt="Download a PDF of the Slides" /></a></p>

<p>While these business processes seem to only contribute towards 10% of the code base for the two most established companies, it is important to recognize that the core for the business code has to be in place during launch, if not shortly after.</p>

<h3>Support Requests</h3>

<p>Before even looking at the numbers, it is worth noting that support is more demanding than most would anticipate. While multiple things can lead to support requests (poor code, bad interface, complexity, lack of documentation, etc.) what seems to matter the most to customers is how quickly, friendly, and accurately you handle it.</p>

<table cellspacing="0" width="300">
<thead>
<tr><td></td><td>Support Requests</td></tr>
</thead>
<tbody>
<tr><td><b>Wufoo</b></td><td>12/day</td></tr>
<tr><td><b>Blinksale</b></td><td>8/day</td></tr>
<tr><td><b>FeedBurner</b></td><td>45/day</td></tr>
<tr><td><b>RegOnline</b></td><td>234/day</td></tr>
</tbody>
</table>

<p>A few successful approaches to reducing the number of requests that have worked for the above companies are the introduction of the following:</p>

<ul>
<li>Forums</li>
<li>Knowledge Base</li>
<li>Documentation (with videos &amp; screenshots)</li>
<li>Useful, custom tools for support staff</li>
</ul>

<p>The amount of time dedicated towards improving support can speak volumes. A majority of the panel agreed that support requests tend to lean towards &#8220;How do I &#8230;&#8221; and &#8220;It would be cool if &#8230;&#8221;, which is why when RegOnline established their knowledge base they saw a huge decline in tickets of that nature. Personally, I am in agreement that this type of support reigns supreme, but be aware that heavy use of JavaScript (with JSON) and foreign characters will also keep you up for quite a few nights.</p>

<h3>Conversion Rates</h3>

<p>Getting users is one of the more stressful aspects of a startup. Without users, you have nothing. And contrary to grand expectations pre-launch, those users are tougher to convert than anticipated. In fact, 1% is a fairly standard number to expect. So of 100 people visit your homepage, 1 person will become a paying customer.</p>

<table cellspacing="0" width="300">
<thead> 
<tr><td></td><td class="positive">Free</td><td class="negative">Paid</td></tr>
</thead>
<tfoot>
<tr><td colspan="3"><small>Conversion per 100 Visits</small></td>
</tfoot>
<tbody>
<tr><td><b>Wufoo</b></td><td>7%</td><td>1%</td></tr>
<tr><td><b>Blinksale</b></td><td>11%</td><td>1%</td></tr>
<tr><td><b>FeedBurner</b></td><td>8%</td><td>N/A</td></tr>
<tr><td><b>RegOnline</b></td><td>1.52%</td><td>1.14%</td></tr>
</tbody>
</table>

<p>Free accounts can also generate revenue through ads, awareness, and link backs, but the amount of free accounts you have does not necessarily increase the conversion rate that leads to getting paid. Blinksale has the highest conversion to free ratio (even though their <a href="https://www.blinksale.com/firms/new?plan=Free" title="Blinksale Signup">signup form has 20 fields!</a>), but they still come in at 1% paid. On the other hand, RegOnline has a very limited free plan, which shows a significant drop in free signups along with a much higher free to paid conversion.</p>

<p>To place more emphasis on the difficulty to convert, we can look at the conversion of beta testers and free advertisements for Wufoo. After a few months of limited beta testing, everyone who provided active feedback was given a free account. Of 7000 other testers, less than 1% became paying customers even though they were given a 50% off lifetime discount. Similar to that, ads that we place on both Particletree and on free forms result in approximately a 1% conversion to paid.</p>

<h3>Average Revenue per Customer</h3>

<p>The three companies listed all rely on monthly and/or usage fees in order to make money. Obviously, RegOnline is in an enviable position here. A few things that may result in their revenue is the maturity of their product (and the number of features they have available) along with their 10 year reputation. Not to mention, their customers are all making money (event registration), so they are willing to spend money in order to make money.</p>

<table cellspacing="0" width="300">
<thead>
<tr><td></td><td>Avg Revenue/Customer</td></tr>
</thead>
<tbody>
<tr><td><b>Wufoo</b></td><td>$13.03/month</td></tr>
<tr><td><b>Blinksale</b></td><td>$12.25/month</td></tr>
<tr><td><b>RegOnline</b></td><td>$131/month</td></tr>
</tbody>
</table>

<p>Wufoo and Blinksale have a similar approach in that they are trying to get a swarm of users paying less money. The goal is to reach some of the smaller businesses that are more reluctant to jump into a big purchase, and also to increase word of mouth through the volume of customers. Finding the target price to charge for your product or service is no easy feat. When Blinksale first launched, they realized they underpriced their product, and had to make the <a href="http://www.firewheeldesign.com/sparkplug/2006/April/blinksale_20_coming_very_soon.php" title="Blinksale pricing.">appropriate adjustments</a> later down the road. The grandfather adjustments worked out for them, but time and programing effort had to be provided to solve the problem.</p>

<p>Equally challenging is how to raise the average price per customer. There are a couple of ways to attempt this:</p>

<ul>
<li>Keep adding features, and create truly worthwhile features that are only available to higher paid plans.</li>
<li>Improve the marketing/site direction of new users, so that they are more compelled to sign up for a higher paying plan.</li>
<li>Make it obvious in the application that certain features are missing from their lower paying account, without being blunt and obnoxious about it.</li>
<li>Make upgrading, downgrading, and canceling as painless as possible.</li>
<li>Varying levels of support.</li>
</ul>

<p>Speaking for Wufoo, we&#8217;ve been working on these ideas for a year now, and noticed varying levels of success. The worst payoff has been premium support, but we haven&#8217;t tried throwing phone support into that package. One noted benefit of phone support is the ability to resolve an issue immediately. Adding features is definitely a plus, but nothing drastic. Actually, slow and steady seems to be the way things are, so there may be no home run solution that increases this number by 20% in one go.</p>

<h3>Seasonal Trends</h3>

<p>Perhaps the most demoralizing thing that can happen to a first year startup is the change in sales from month to month. The only way to get through it is to go through a year and see what happens, but try to prepare yourself for the fluctuations, and to predict what months will and will not work for you.</p>

<table cellspacing="0" width="300">
<thead>
<tr><td></td><td class="positive">Best</td><td class="negative">Worst</td></tr>
</thead>
<tbody>
<tr><td><b>Wufoo</b></td><td>Feb</td><td>Dec</td></tr>
<tr><td><b>Blinksale</b></td><td>Jan</td><td>Dec</td></tr>
<tr><td><b>FeedBurner</b></td><td>Jan/Feb</td><td>Dec</td></tr>
<tr><td><b>RegOnline</b></td><td>Sept</td><td>Dec</td></tr>
</tbody>
</table>

<p>For most web services it will be a given that December is a horrible month comparatively. To put it into perspective, RegOnline has noticed an 18% decrease of registrations compared to the annual average, and Wufoo saw a 50% decrease. And even though the 50% figure is distorted by growth, December was still 25% lower than the prior October. A best guess prediction for the drop in sales is the trifecta of budgets running low towards the end of the year, the holiday season, and money being spent elsewhere (bonuses, travel, consumer goods).</p>

<h3>Thank You Participants!</h3>

<p>This article is based on the panel we presented at <a href="http://2007.sxsw.com/interactive/programming/panels/?action=show&amp;id=IAP060262">SXSW 2007</a>. Many thanks goes out to hours of data collection put in by all the members: <a href="http://johnzeratsky.com/" title="John Zeratsky">John Zeratsky</a> (of <a href="http://feedburner.com" title="FeedBurner">FeedBurner</a>), Josh Williams (of <a href="http://www.blinksale.com/home" title="Blinksale">Blinksale</a>) and William Flagg (of <a href="http://www.regonline.com/" title="RegOnline">RegOnline</a>). We asked a lot from them and they were generous enough to help us out and share their company&#8217;s information. You can download a copy of the graphs from the <a href="/sxsw/autopsy.pdf">presentation&#8217;s slides here</a>.</p>
<p><a class="ptad" href="http://wufoo.com/" title="HTML Form Builder"><img src="/images/ads/wufooad10.gif" alt="HTML Form Builder" /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://particletree.com/features/web-app-autopsy/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
	</channel>
</rss>
