<?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>Chris Stead &#187; World Wide Weird</title>
	<atom:link href="http://www.chrisstead.com/archives/category/world-wide-weird/feed" rel="self" type="application/rss+xml" />
	<link>http://www.chrisstead.com</link>
	<description>Web, the Universe and everything</description>
	<lastBuildDate>Fri, 23 Mar 2012 18:56:43 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Javascript Debugging: The Slick Way</title>
		<link>http://www.chrisstead.com/archives/494</link>
		<comments>http://www.chrisstead.com/archives/494#comments</comments>
		<pubDate>Fri, 23 Mar 2012 18:56:43 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Internet Culture]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Site Architecture]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=494</guid>
		<description><![CDATA[So, we all know about FireBug, right? That handy dandy little debugging utility for Javascript. It&#8217;s great and all as long as you actually have a syntax error in your script. The console says a lot about the issues it found, unrecoverable errors and all that. What if your script doesn&#8217;t actually bomb, it just [...]]]></description>
			<content:encoded><![CDATA[<p>So, we all know about FireBug, right?  That handy dandy little debugging utility for Javascript.  It&#8217;s great and all as long as you actually have a syntax error in your script.  The console says a lot about the issues it found, unrecoverable errors and all that.  What if your script doesn&#8217;t actually bomb, it just doesn&#8217;t do what it&#8217;s supposed to?<span id="more-494"></span></p>
<p>If you&#8217;re anything like me, you&#8217;ve used the alert message function as a means to figure out where things were falling apart.  That&#8217;s great and all, except that it sucks.  I hate needing popup messages to debug things like mouseovers.  It&#8217;s no fun.  If you forget to pull one out of your code before it goes to production, it can be miserable trying to track it down later when users are getting alerts that say things like &#8220;Why doesn&#8217;t my function work??&#8221;</p>
<p>Whoops.</p>
<p>So, I started thinking about developing in pretty much any other language out there, but mainly Java since I have to touch that only slightly less than I touch PHP scripts.  Java is great because you can output directly to a console, so you can log stuff and watch as the mayhem unfolds while your program bombs.  It&#8217;s REALLY helpful.</p>
<p>SO&#8230;</p>
<p>I decided I wanted a console I could output to at any time.  Something I could review on the fly and see what is happening.  This would allow me to review any logged output I wanted in real time, and I could avoid the alert box altogether.  Hmm&#8230; what could I output to? The DOM!</p>
<p>Right??</p>
<p>I sat down and cranked out a handy dandy script that will write to whatever div you decide to use as a console.  If you are lazy, like me, then it will also do something really spiffy and just append a console to the end of your document.</p>
<p>The nice thing is you can just define a console div and write to it.  When you send your code to production, you can just style your console with display:none.  If you forgot to pull a write statement out of your code somewhere, the world won&#8217;t come to an end, and your users will be none the wiser. (For the record, I still strongly encourage you to NOT leave test code in your production code. This is just a CYA measure.)</p>
<p>So, where is this code and what do you do to make it go?</p>
<p>Let&#8217;s start with the &#8220;making it go&#8221; part first.  Include the script in your code, I&#8217;ll give you a link to the file in a moment. Then add this line of code to your document:</p>
<p>var ow = new OutputWriter();</p>
<p>Tadaaa!!</p>
<p>You now have a console on your page you can write to.  If you want to write to the console for whatever reason, it goes a little like this:</p>
<p>ow.writeln(&#8220;your message.&#8221;);</p>
<p>If you made your own console, and you want to write to it, then instantiate the writer thusly:</p>
<p>var ow = new OutputWriter({ consoleId: &#8220;your_console_id&#8221; });</p>
<p>There are other things it can do as well, like clear the console:</p>
<p>ow.clear();</p>
<p>Store and retrieve cleared history:</p>
<p>var ow = new OutputWriter({ consoleId: &#8220;your_console_id&#8221;, storeHistory: 1 });<br />
ow.clear();<br />
var history0 = ow.gethistory(0);</p>
<p>You get the idea.</p>
<p>There are more parameters you can set too.  I put them all in the comments at the top so you can decide what to use and what to skip.  They are all 100% optional, so don&#8217;t worry about it if you don&#8217;t want to set them.</p>
<p>So, on with the script, already!  Just download <a href="http://www.chrisstead.com/media/OutputWriter.js" target="_blank">this one little file</a> and you have everything you need to do all of the console-writing magic I described and, potentially, more.  Debug your code with grace and style and make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/494/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Web Designers Rejoice: There is Still Room</title>
		<link>http://www.chrisstead.com/archives/454</link>
		<comments>http://www.chrisstead.com/archives/454#comments</comments>
		<pubDate>Tue, 28 Sep 2010 17:01:00 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[General Blogging]]></category>
		<category><![CDATA[Internet Culture]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=454</guid>
		<description><![CDATA[I&#8217;m taking a brief detour and talking about something other than user tolerance and action on your site. I read a couple of articles, which you&#8217;ve probably seen yourself, and felt a deep need to say something. Smashing Magazine published Does The Future Of The Internet Have Room For Web Designers? and the rebuttal, I [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;m taking a brief detour and talking about something other than user tolerance and action on your site.  I read a couple of articles, which you&#8217;ve probably seen yourself, and felt a deep need to say something.  Smashing Magazine published <i><a href="http://www.smashingmagazine.com/2010/09/24/does-the-future-of-the-internet-have-room-for-web-designers/" target="_blank">Does The Future Of The Internet Have Room For Web Designers?</a></i> and the rebuttal, <i><a href="http://www.smashingmagazine.com/2010/09/27/i-want-to-be-a-web-designer-when-i-grow-up/" target="_blank">I Want To Be A Web Designer When I Grow Up</a></i>, but something was missing.</p>
<p>Both articles focused on content and how it gets passed around.  The problem is, there is a lot more going than just content on the web.  What both articles overlook is the work of the web developer or web engineer.  No, this isn&#8217;t an attempt to shoehorn engineers into this discussion.  It&#8217;s about the fact that they are needed to produce function.</p>
<p>Beyond the world of content is a whole slew of function on the web.  Web apps have become increasingly important in the landscape of the web.  As a matter of fact, you&#8217;re currently visiting a web app.  Yes, you&#8217;re seeing content, but you are also interacting with an application which allows me to manage and publish that content for you to see.<span id="more-454"></span></p>
<p>Other things which happen on the web include buying insurance, banking, playing games, posting comments, public forums, meeting whiteboards, chat and many other items which are missing from my list.  Web applications are vital to the new web experience.</p>
<p>So, what about the web designers?</p>
<p>Web designers are needed to make all of the extant and constantly emerging applications sensible and enjoyable.  Regardless of the particular language or server structure used to produce the web apps you use every day, one of the primary interfaces is still the browser.  This means what is an application in one sense is a web page in another.  Who designs these pages you see? Web designers.</p>
<p>This link between the design world and the application world has been developing for decades.  Designers are vital in the production of web applications just as much as the engineers are.  The world of applications today isn&#8217;t the same as it was even in the 1990&#8242;s.</p>
<p>Users crave satisfaction.</p>
<p>As little as 15 or 20 years ago, to simply have a working application was a feat unto itself.  If you could enter input and get a meaningful result in return, the application was launched.  People, today, expect more.  They want to be able to enter what they need and get the meaningful output they expect, but they also desire rich interaction.  They crave visually stimulating and sensible interfaces.  Users have gotten more design savvy and they won&#8217;t stand for mediocre if they can have the best.</p>
<p>Regardless of where the content, which is fed from a website, is displayed, neither Facebook nor Google will ever be able to serve the function you provide on your site.  Moreover, they will not give your user the experience they expect from your company.  Only by interacting directly with YOUR site will the user ever find the satisfaction they seek.</p>
<p>Ultimately, the people responsible for bridging the gap between the engineer and the user are designers.  Designers come in various flavors from the jack-of-all-trades to the specialist interaction, user experience and interface designers.  Designers make the user comfortable.  Designers provide the problem-solving expertise which is so crucial to making an interface meaningful and usable.</p>
<p>In the end, to say that the future of the internet has no room for designers would be just as foolish as saying the future of the internet has no place for engineers.  I mean, there are all of these turnkey software packages out there, what do you need an engineer for?</p>
<p>It&#8217;s foolishness.</p>
<p>Ultimately, engineers and designers are both critical to the web experience.  They have been until now and the need is only expanding.  Even as content is served out to other distribution channels, the home still needs to be somewhere.  Even as content is still king, the sea of applications continues to expand.  Much like Jell-O there is always room for designers.  Go, design and make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/454/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Anticipating User Falloff</title>
		<link>http://www.chrisstead.com/archives/429</link>
		<comments>http://www.chrisstead.com/archives/429#comments</comments>
		<pubDate>Mon, 13 Sep 2010 16:45:39 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Site Architecture]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=429</guid>
		<description><![CDATA[As we discussed last week, users have a predictable tolerance for wait times through waiting for page loading and information seeking behaviors. The value you get when you calculate expected user tolerance can be useful by itself, but it would be better if you could actually predict the rough numbers of users who will fall [...]]]></description>
			<content:encoded><![CDATA[<p>As we discussed last week, <a href="http://www.chrisstead.com/archives/369" target="_blank">users have a predictable tolerance</a> for wait times through waiting for page loading and information seeking behaviors.  The value you get when you calculate expected user tolerance can be useful by itself, but it would be better if you could actually predict the rough numbers of users who will fall off early and late in the wait/seek process.</p>
<p>It is reasonable to say that no two people have the same patience for waiting and searching.  Some people will wait and search for an extraordinary amount of time while others get frustrated quickly and give up almost immediately.  To expect that all of your users will hold out until the very last moment of the predicted 13, or so, seconds hardly reflects reality.</p>
<p>Instead, we can say that we have some maximum tolerance, L, which we can compute which the very last holdouts will actually wait for.  Unfortunately, we also know that a majority of users, if they have to wait very long, won&#8217;t even see your site since they will fall off before the page finishes loading.  This means that the bulk of the users which see your site will be something less than the number of users who actually attempted to load your site.<span id="more-429"></span></p>
<p>There were some really smart guys who lived about 100-200 years ago and did lots of math.  The really neat thing is they did a lot of work that I don&#8217;t have to reproduce or prove since they were smarter, more patient and far more talented than I am.  One of them was named Carl Friedrich Gauss, who some refer to as the Prince of Mathematics.  He was really smart. Newton smart. Possibly smarter than Newton.</p>
<p>What does Gauss have to do with user experience?</p>
<p>Gauss is the guy who figured out how to evaluate (1/(2pi)^.5)e^(-1/2*x^2) when integrated from negative to positive infinity.  Did I just see your eyes glaze over?  It&#8217;s alright.  That happens to me a lot.</p>
<p>What this really translates to is, Gauss figured out how to work with the statistical standard normal curve.  This probably means a lot more to you, right?  This function happens to be really useful in developing something meaningful regarding users and their falloff over time from initial click through to our tolerance, L.</p>
<p>I spent an entire weekend where I slept little and did math a lot.  During that time, I developed a function, based on the standard normal curve which says something reasonably meaningful about users and how long they are willing to stay on your site and either a) search for what they need and b) not satisfice.  I&#8217;ll give you the function without justification.  Contact me if you want all the formalities, I have them in a folder, on the ready.</p>
<p>Our function looks something very much like the following:</p>
<p>u(t) = u_0^(1-(t/L)^2)</p>
<p>What this says is that the number of users still on your site, at time t, is equal to the initial users times some falloff function evaluated for t.  The cool thing is, we already know everything that goes into this little gem when we are testing.  We know how many users we started with and we know what L is.  The really interesting bit is, when t>L, u(t) is less than one.  This means that the probability we will have a user after we reach the maximum tolerance is exactly what we expect it to be.</p>
<p>Below is an estimation of what the graph would look like for your analysis:</p>
<div class="wp-caption alignnone" style="width: 390px"><img alt="User Falloff Graph" src="/wp-content/uploads/2010/09/user-falloff.png" title="User Falloff Graph" width="380" height="235" /><p class="wp-caption-text">User Falloff Over Time</p></div>
<p>This may not seem like much of a revelation.  We all know that, as people run out of patience, they leave the site.  What this does is it gives us something we can plug into our calculators and project some sort of quantified result.  What this also means is, if you can produce results which fall beyond the bounds of this graph as you are testing, you know you are outperforming expected results.  You can also use this to compare to the number of people who satisfice during testing.</p>
<p>Probably one of the most important things is comparing the number of users who remain on a site for an expected amount of time to the amount of time needed to produce a conversion.  This offers a real, concrete means to offer up ROI on your efforts to encourage users to remain on your site.</p>
<p>The uses of this modest function are so numerous I can&#8217;t afford the space here to list them.  I will offer up more insight into this function as well as other, related, functions which can be used for further prediction.  I encourage you to sit and play with this.  See how it compares with your test findings.  Gauge how you are performing against the model.  Improve and test again and, above all else, make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/429/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>User Frustration Tolerance on the Web</title>
		<link>http://www.chrisstead.com/archives/369</link>
		<comments>http://www.chrisstead.com/archives/369#comments</comments>
		<pubDate>Tue, 07 Sep 2010 16:00:49 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Site Architecture]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=369</guid>
		<description><![CDATA[I have been working for quite a while to devise a method for assessing web sites and the ability to provide two things. First, I want to assess the ability for a user to perform an action they want to perform. Second I want to assess the ability for the user to complete a business [...]]]></description>
			<content:encoded><![CDATA[<p>I have been working for quite a while to devise a method for assessing web sites and the ability to provide two things. First, I want to assess the ability for a user to perform an action they want to perform.  Second I want to assess the ability for the user to complete a business goal while completing their own goals.</p>
<p>Before we start down this particular rabbit hole, there&#8217;s a bit of a prerequisite for our discussion.  It is important that you understand <a href="http://chrisstead.posterous.com/fittss-law-and-the-steering-law" target="_blank">Fitts&#8217; Law and its generalization, the Steering Law</a>.  These are critical to understanding how much time a user will be willing to dedicate to your site the first time they arrive, or after a major overhaul, before abandoning their goals and leaving the site.<span id="more-369"></span></p>
<p>So, let&#8217;s suppose you have users visiting your site, or, better yet, you are performing user testing and want to evaluate how your site is performing with the users you are testing.  It is important to have a realistic expectation regarding what users would really tolerate on the web before they leave so you can evaluate the results of your test accordingly.</p>
<p>Most users have some sort of tolerance level.  By this, I mean most users are only willing to give you a fraction of their day before they get fed up.  Reasonably, some users will have a shorter fuse than others, but all will eventually blow the proverbial gasket and leave your site, never to return.  Let&#8217;s call this tolerance for pain and frustration &#8216;L.&#8217;</p>
<p>L is the amount of time, typically in seconds, that your user is willing to spend time looking over your site and trying to accomplish their goals.  It is becoming common to say that a user will attempt to satisfy a goal and, ultimately, they will attempt to <a href="http://en.wikipedia.org/wiki/Satisficing" target="_blank">satisfice</a> if nothing else seems to work.</p>
<p>When they hit the satisfice point they are reaching their tolerance for frustration.  The satisfice action comes quickly, so we have very little time to fully satisfy the user.  There are actually 3 items which go into the base tolerance before satisficing occurs:</p>
<ol>
<li>The maximum acceptable page load time (p)</li>
<li>The maximum time it takes after page load to locate a satisfactory action to achieve their goal (g)</li>
<li>The Fitts&#8217;/Steering time it takes to get to their preferred action item (fs)</li>
</ol>
<p>The maximum acceptable page load time seems to range from one to ten seconds depending on who you talk to or read on the web.  I am opting to take the average and say that the maximum page load time should take around five seconds, though this can vary depending on other factors which are outside the scope of this discussion.</p>
<p>Users, once the site has loaded, have a maximum time they will spend searching for something to satisfy their goals.  The number I keep seeing thrown around is seven seconds, so I am going to accept that as my number for a general baseline for user behavior.</p>
<p>Finally we have Fitts&#8217; Law and the Steering Law.  This lends a little complication to the matter as these functions will return varying results.  The simplest case would be a Fitts&#8217; law case where the user can move directly to an item on the screen without interruption or interference.  Each person knows how much time it takes them to move from one place to another on the screen and they will, generally, allow for time to move the cursor to a target.</p>
<p>If the screen does other, unexpected things while the user is moving their pointer, like opening and closing ads, displaying inline pop-ups which cover the target or other interferences, the user will get distracted and frustrated.  This is where a Fitts&#8217; Law asset can become a Steering Law liability.  A frustrated user is far more likely to leave than a satisfied user.  For each item which interferes with the user&#8217;s ability to move to their target, their patience will wane.  Reasonably, then, using the variables I defined above, we can calculate the tolerance constant as follows:</p>
<p>L = p + g + fs &#8211; (sum of all subsequent change in fs)</p>
<p>Better yet, if we plug in the basic values I collected from around the web, we get this:</p>
<p>L = 5 + 7 + fs &#8211; (sum of all subsequent change in fs) = 12 + fs &#8211; (sum of all subsequent change in fs)</p>
<p>Moving from one place on the screen to another is a relatively quick motion, so we can see, given there aren&#8217;t major issues with user-flow interruption, that the average user tolerance is going to be between 12 and 13 seconds for a site from beginning to end.  That&#8217;s not a very long time, but to a user, it&#8217;s an eternity.  Don&#8217;t believe me? Sit and watch the clock for 13 seconds, uninterrupted.  Go on, I&#8217;ll wait.</p>
<p>Kind of a painful experience, isn&#8217;t it?  Keep this in mind as you create your site and watch users test it.  During your next test, run a stopwatch. If it takes your tester more than a quarter of a minute to sort everything out and do what they were tasked with, you have some serious issues to consider.</p>
<p>I threw a lot out in one little post, today.  Let it soak for a while and tell me what you think in the comments.  As you work on guiding users through your site and as you test, think about the 13 seconds just watching the clock tick.  Consider your user and their tolerance for frustration and pain.  Keep the journey quick and painless and make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/369/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Google Geocoding with CakePHP</title>
		<link>http://www.chrisstead.com/archives/355</link>
		<comments>http://www.chrisstead.com/archives/355#comments</comments>
		<pubDate>Tue, 31 Aug 2010 21:26:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Site Architecture]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=355</guid>
		<description><![CDATA[Google has some pretty neat toys for developers and CakePHP is a pretty friendly framework to quickly build applications on which is well supported. That said, when I went looking for a Google geocoding component, I was a little surprised to discover that nobody had created one to do the hand-shakey business between a CakePHP [...]]]></description>
			<content:encoded><![CDATA[<p>Google has some pretty neat toys for developers and CakePHP is a pretty friendly framework to quickly build applications on which is well supported.  That said, when I went looking for a Google geocoding component, I was a little surprised to discover that nobody had created one to do the hand-shakey business between a CakePHP application and Google.</p>
<p>That is, I didn&#8217;t find anyone, though they may well be out there.</p>
<p>I did find several references to a Google Maps helper, but, that didn&#8217;t help too much since I had an address and no geodata.  The helpers I found looked, well&#8230; helpful once you had the correct data, mind you.  Before you can do all of the maps-type stuff, you have collect the geodata and that&#8217;s where I came in.<span id="more-355"></span></p>
<p>I built a quick little script which takes an address and returns geodata.  It isn&#8217;t a ton of code, it doesn&#8217;t handle paid accounts and it isn&#8217;t fancy.  What it lacks in bells and whistles, it makes up for in pure, unadulterated Google Maps API query ability.  Let&#8217;s have a look at how to implement the code.</p>
<p>First, <a href="/media/googlegeocode.zip">download the file</a> and unzip it.  Place it in /app/controllers/components.  That&#8217;s the bulk of the work.  Once you have the component added to your components directory, just add it to the components array in your controller and call the getCoords() function like in the code below.</p>
<pre class="brush:php">
class FakeController extends AppController
{

     var $components = array("Googlegeocode");

     /* functions and whatever other code ... */

     function getGeoData()
     {

          $address = $this->data["ModelName"]["address"];
          $coords = NULL;
          if($address)
          {
               $coords = $this->Googlegeocode->getCoords($address);
          }
          $this->set("coords", $coords);

     } // End of function

} // End of class
</pre>
<p>There is more code there in general class setup and comments than there is in actually making the coordinate request.  Note, do not URL encode your address before passing it into the function.  This can have unexpected results as the geocoding component will properly encode the address for you.</p>
<p>There are a couple of other functions in case you need them.  First is a call to retrieve the data set which is returned from Google.</p>
<pre class="brush:php">
// ... code ...
$geodataRecord =
     $this->Googlegeocode->getGeodataRecord($address);
// ... code ...
</pre>
<p>This will return an array built directly from the XML returned by Google.  From this you can extract all of the information they typically return, including status, address information and geodata as well as several other odds and ends.  There is actually quite a bit of data returned for each address.</p>
<p>Two other useful functions are the lastCoords() and lastGeodataRecord() functions.  They are called as follows:</p>
<pre class="brush:php">
// ... code ...
$coords = $this->Googlegeodata->lastCoords();
$geodataRecord = $this->Googlegeodata->lastGeodataRecord();
// ... code ...
</pre>
<p>Once a record is retrieved, it is stored in memory until a new record is requested.  You can refer to these as needed to recall the latest records retrieved from Google until the script finishes executing.</p>
<p>Though this isn&#8217;t the typical user experience related post, hopefully this will help you get moving more quickly on your project involving geocoding addresses for use with the Google Maps UI API.  I hope you find my component useful and you use it to make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/355/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Know Thy Customer</title>
		<link>http://www.chrisstead.com/archives/340</link>
		<comments>http://www.chrisstead.com/archives/340#comments</comments>
		<pubDate>Tue, 17 Aug 2010 21:02:42 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Company Culture]]></category>
		<category><![CDATA[General Blogging]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=340</guid>
		<description><![CDATA[I&#8217;ve been tasked with an interesting problem: encourage the Creative department to migrate away from their current project tracking tool and into Jira. For those of you unfamiliar with Jira, it is a bug tracking tool with a bunch of toys and goodies built in to help keep track of everything from hours to subversion [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been tasked with an interesting problem: encourage the Creative department to migrate away from their current project tracking tool and into Jira.  For those of you unfamiliar with Jira, it is a bug tracking tool with a bunch of toys and goodies built in to help keep track of everything from hours to subversion check-in number.  From a developer&#8217;s point of view, there are more neat things than you could shake a stick at.  From an outsider&#8217;s perspective, it is a big, complicated and confusing system with more secrets and challenges than one could ever imagine.</p>
<p>Years ago, I built a project tracking system for the Creative department at my current company which they use for everything.  More projects come and go through the Creative project queue than I had planned on, but it has held together reasonably well.  That said, the Engineering director would like to get everyone in the company on the same set of software in order to streamline maintenance efforts.</p>
<p>In theory, this unification makes lots of good sense.  Less money will be spent maintaining disparate software and more will be spent on keeping things tidy, making for a smooth experience for all involved.<span id="more-340"></span></p>
<p>Unsurprisingly, I was met with resistance from the Director of Communications.  She told me she was concerned about the glut of features and functions she had no use for.  She prefers the simple system because the creative team is a small team of three.  Tracking all of the projects a small team has is just challenging enough to require a small system, but not so challenging that she needed all the heavyweight tools a team of 50-100 people would.</p>
<p>I am currently acting as negotiator between the Engineering and Creative departments.  Proposals and counter proposals are being thrown back and forth and I&#8217;m caught in the middle.  The challenge I see sneaking about in the grass is that the Engineering team doesn&#8217;t know their customer.</p>
<p>This doesn&#8217;t mean the Engineering team is bad.  It doesn&#8217;t mean they don&#8217;t care.  It simply means they don&#8217;t live in the same headspace the Creative team does and they don&#8217;t have enough time to think about it.</p>
<p>This puts me in a sticky situation.</p>
<p>I worked exclusively with the Creative team for the first two years I was with the company.  I ate lunch with them, worked with them, met their deadlines, played by their rules and build 95% of the tools they use today.  It was a really great insight into what a creative time is really like.  Something many engineers never have the opportunity to experience.</p>
<p>Now, I am part of the Engineering team again and playing by their rules.  Engineers think differently.  I am an engineer and my father was an engineer before me.  I know a thing or two about engineers and their quirks.  Ultimately, I can see both sides of the argument and the standoff is looking a little hairy.  </p>
<p>&#8220;So, where are you going with all this,&#8221; you might ask.</p>
<p>If you are going to propose a solution to a problem, instead of learning all you can about the solution you are going to offer, learn about your customer instead.  Don&#8217;t try to shoehorn a customer into a solution saying &#8220;it kind of does most of what you need as long as you need the stuff it does.&#8221;  It will never work out for you.</p>
<p>Learn your customer&#8217;s language.  Uncover little secrets about them and figure out how they really work.  Customers will rarely pony up and say &#8220;here&#8217;s everything you need to know about us and our problem.&#8221;  Almost always, they say &#8220;here is our problem. Fix it.&#8221;</p>
<p>If you don&#8217;t know your customer, you&#8217;ll never solve their problem.  If, on the other hand, you DO know your customer, you have a fighting chance.  Mind you, even if you know your customer, they may still disregard your solution anyway, but at least you know you gave them the best you had.</p>
<p>Don&#8217;t fret if it takes some time to learn to think like your customers, though.  It&#8217;s not something that comes overnight.  I know it took a while for me to stop thinking like an engineer for 30 seconds and think like a designer.  One day, I woke up and everything had to be diagrammed.  There were so many things which could only be said through images.  The shift happened and the code disappeared.</p>
<p>Look for the transparency.  If you can stop and step into your customer&#8217;s head for a few minutes you may discover that the real problem is not the issue they have with the solution you offered, it may be with the solution that doesn&#8217;t solve their problem.  Creatives, engineers, accountants, executives and marketing people all work in different ways.  Businesses are much the same.  Find how their problem is different and you will find the solution.  Know thy customer and make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/340/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>When SEO Goes Bad</title>
		<link>http://www.chrisstead.com/archives/329</link>
		<comments>http://www.chrisstead.com/archives/329#comments</comments>
		<pubDate>Tue, 06 Jul 2010 21:22:01 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Internet Culture]]></category>
		<category><![CDATA[SEO]]></category>
		<category><![CDATA[Site Architecture]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=329</guid>
		<description><![CDATA[My last post was about finding a healthy balance between client- and server-side technology. My friend sent me a link to an article about SEO and Google&#8217;s &#8220;reasonable surfer&#8221; patent. Though the information regarding Google&#8217;s methods for identifying and appropriately assessing useful links on a site was interesting, I am quite concerned about what the [...]]]></description>
			<content:encoded><![CDATA[<p>My last post was about finding a healthy balance between client- and server-side technology.  <a href="http://www.designbycandlelight.com/" target="_blank">My friend</a> sent me a link to an article about <a href="http://searchengineland.com/seo-implications-of-googles-reasonable-surfer-patent-44222" target="_blank">SEO and Google&#8217;s &#8220;reasonable surfer&#8221; patent</a>.  Though the information regarding Google&#8217;s methods for identifying and appropriately assessing useful links on a site was interesting, I am quite concerned about what the SEO crowd was encouraging because of this new revelation.</p>
<p>It is important to consider search engines during the site building process, however I feel the SEO guys often get carried away.  In this article it is suggested that you de-emphasize navigation and forget footers along with lots of other questionable advice.</p>
<p>These two suggestions alone are enough for me to consider this article, at best, a crackpot spouting extremist ideas.  SEO experts often seem to forget a very important element on the web: the user.<span id="more-329"></span></p>
<p>Something designers are told and people are wise to heed is, pretty things work better.  Do they ACTUALLY work better in some sort of quantifiable way? Probably not, but that doesn&#8217;t matter to the user.  If a site is attractive and seems easy to use, the user is more likely to invest the time to learn how it works.</p>
<p>User experience people know that navigation is key to moving a user through the site.  Let&#8217;s take, for example, Amazon.  They are a top-rated site for Google searches.  Have they gone and done away with navigation? No. Why? They know users rely on navigation to move through the site.  Moreover, their designers know that pretty navigation works.</p>
<p>While the SEO nuts will scream &#8220;de-emphasize navigation,&#8221; Amazon bucks the &#8220;trend&#8221; and keeps on doing what they know works best for making money: directing users.</p>
<p>Regarding forgetting about footers, if anyone in the SEO world ever thought footers were there for search engines, they are fooling themselves.  Footers are only ever implemented for the user.  Information which a small group of users may want is typically stored in the footer.  This kind of information is stuff like license numbers, contact information and other legal odds and ends.</p>
<p>Other common footer items include convenience links, brief site navigation and polish elements which finish out a site.  Footers, especially those of the fat variety, were never intended to be SEO tools.  They are for the user.</p>
<p>If an SEO guru were to design a site, it would probably be a huge mass of text with a few peppered images, some meta information at the top, a link which says &#8220;home&#8221; and the required legal information at the bottom in a big, unattractive text block.</p>
<p>Though a page like this would garner a couple of extra points from search engines for being easy to parse, it would lose mega points for being completely useless to a user.  The more useless your site is, the fewer users will return. The fewer return visitors you have, the lower your site rank will be.  Ultimately, you will win the battle and lose the war.</p>
<p>Moreover, what is really making the money, the search engine or your product?  Trust me, if you have a product everyone wants, the search engines will bump you up the list even if your SEO stinks.  On the other hand, if your SEO is top-notch, but your site fails to deliver conversions you may as well pack it in now.</p>
<p>Finally, something I never seem to hear SEO people talk about which should be absolutely top of their list is the semantic web.  The semantic web can be horribly complex which seems a little daunting, but it doesn&#8217;t have to be.  Simply remember to use the right tags at the right time and you&#8217;ll be on your way to better SEO without all of the extraneous pain involved in new metadata information embedded in your pages.</p>
<p>Remember to do things like break your pages up into headers, divisions, paragraphs, lists and tables.  If you want to get really fancy, add definition lists.  This will score big points with the search engines and it will also score big with your audience.  The more you can divide your information into digestible chunks and then style with CSS, the happier everyone will be.  Users will be able to quickly skim the page in search of what they are there for and the search engines will be able to parse your pages better, potentially leading to better overall ranking.</p>
<p>In the end it is best to build your pages the right way: semantic tagging, strong user focus and dense metadata components.  There are many SEO techniques which work better for both search engines and users.  Forget about completely re-building your page just to impress the Google spider, because you won&#8217;t.  Think about the user, build a compelling site, mark it up correctly and make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/329/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Coding Transparency: Development from Design Comps</title>
		<link>http://www.chrisstead.com/archives/312</link>
		<comments>http://www.chrisstead.com/archives/312#comments</comments>
		<pubDate>Thu, 20 May 2010 21:12:54 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Internet Culture]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=312</guid>
		<description><![CDATA[Since I am an engineer first and a designer second in my job, more often than not the designs you see came from someone else&#8217;s comp. Being that I am a designer second, it means that I know just enough about design to be dangerous but not enough to be really effective over the long [...]]]></description>
			<content:encoded><![CDATA[<p>Since I am an engineer first and a designer second in my job, more often than not the designs you see came from someone else&#8217;s comp.  Being that I am a designer second, it means that I know just enough about design to be dangerous but not enough to be really effective over the long run.</p>
<p>When I say I am a designer second I mean I am, in fact, a design school dropout.  I went, I learned just enough to &#8220;get it&#8221; and then I ended up dropping out.  I did go back to school and I got a math degree, but that is a different story for a different day.</p>
<p>If there is anything I learned from design school, it was that everything in design is done for a reason.  Mind you, this is when design is at its best.  Every designer that is working to solve a problem and communicate with the viewer has incorporated elements and done things so a specific message comes through.<span id="more-312"></span></p>
<p>Unfortunately, many of my engineer colleagues don&#8217;t have this insight.  Typically people who opt for the engineering route do so when they are in high school or earlier and rarely set foot into the creative world.  They may be proficient hobbyists in a particular art or craft, but their real love is engineering.  Typically they really have little or no knowledge of design whatsoever.</p>
<p><strong>People who don&#8217;t understand design make really poor designers.</strong></p>
<p>Sorry, it&#8217;s true.  This is not to say people without design skill can&#8217;t convey messages, but they tend to be inconsistent and unpredictable.  Moreover, engineers, in specific, are typically more interested in solving a puzzle than making the final presentation precisely &#8220;so.&#8221;</p>
<p>This is the benefit of design comps.  Designers, unlike engineers, are trained in design and are able to consistently and deftly communicate ideas with a clear voice.  When they create a design comp for a website, or several depending on circumstances, they are creating a visual roadmap to communicate with the world.</p>
<p>Engineers, even as wonderfully detail oriented as they are, tend to see the big-picture items like color and location of items on a page, but they miss items which are equally important, like typography, subtle shading and other items which create a polished look that tells the user this is something made by professionals.</p>
<p>Ultimately, what happens is engineers color the design with their desire to finish slapping that UI together so they can solve the really meaty problems.  When I joined Arrowhead, the company I currently work for, much of the Creative-specific projects looked pretty good, though the code was abominable.  The collaborative work between Creative and Engineering seemed to suffer.</p>
<p>Mind you, this does not mean the engineers here are bad at what they do.  Quite the contrary.  They simply colored the output when they worked on it.  Designs would fall apart as content was added and the best laid plans met the real world.</p>
<p>Engineers and developers need to work on being more coding-transparent.  Regardless of how ugly the first iteration of the code might be, get the page looking good.  When you think you&#8217;re done, take a printout of the original comp and hold it next to the completed page.  Do the look the same?  Do they look different?  How do they differ?</p>
<p>In order to achieve coding transparency it is important to take a moment and understand what the designer is trying to communicate.  See what the pieces of the design do when they work in concert.  Understand the intention.</p>
<p>Ultimately, this may lead to asking the designer questions.  They don&#8217;t mind answering questions like &#8220;what am I supposed to be doing here,&#8221; or &#8220;when I add content, the design seems to break like this, any thoughts?&#8221;  Questions like these help designers to work with you and, hopefully, develop a more robust design, capable of handling what the world throws at it.</p>
<p>Designers, on the other hand, hate questions like &#8220;what is this for? Do you really need that?&#8221;  The answer is typically &#8220;yes,&#8221; so don&#8217;t ask.  Try to implement it and then ask questions if something breaks.</p>
<p>As you work through a design, you may find you have to interpolate or extrapolate on a designer&#8217;s idea.  If it is clear how to build from what they have done, just go for it and brace yourself for minor tweaks.  It&#8217;s okay, changes happen.  If you don&#8217;t understand what they want or it&#8217;s not clear how the design extends to what you are currently working on, then stop and ask questions.</p>
<p>When engineers ask questions which lead to better design decisions, designers feel more confident about how the end product will turn out.  Much like engineers feel when people ask questions about whether items are possible to implement rather than just assuming they are and promising the world.</p>
<p>In the end, coding transparency is all about communication.  It is about communication between the designer and the engineer and it is about communication between the designer/engineer team and the user.  If communication breaks down anywhere along the way, the message will never reach the user or worse, it does and it&#8217;s ugly.</p>
<p>In the end, everything we do is intended to reach an audience.  The more we can do to facilitate the message as it comes down the wire, the better.  So, the next time you receive a comp and rush through, slapping elements into place without review, imagine what your system would look like without testing and code review.  Practice coding transparency and make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/312/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Inclusive or Exclusive Web?</title>
		<link>http://www.chrisstead.com/archives/304</link>
		<comments>http://www.chrisstead.com/archives/304#comments</comments>
		<pubDate>Mon, 26 Apr 2010 19:21:22 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Internet Culture]]></category>
		<category><![CDATA[Site Architecture]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=304</guid>
		<description><![CDATA[When you start working on a website or application, what is your goal? In the current state of the web, there are many ways you can carry your user but, in the end, you must choose web inclusive or web exclusive. Sites with rich APIs which interact with the world around them are web inclusive. [...]]]></description>
			<content:encoded><![CDATA[<p>When you start working on a website or application, what is your goal?  In the current state of the web, there are many ways you can carry your user but, in the end, you must choose web inclusive or web exclusive.  Sites with rich APIs which interact with the world around them are web inclusive.  Sites which focus internally, drawing little content from the outside web and, ultimately, giving nothing back are web exclusive.</p>
<p>The web is moving away from exclusivity.  When the web started, documents were shared, whole, and people had to visit a particular site to view their content.  It rarely came to you, typically requiring you went to it.  This was the face of the web in the 1990&#8242;s.  Autonomous operating sites maintained individually for the sake of the content maintained within.<span id="more-304"></span></p>
<p>The modern web, <a href="http://chrisstead.posterous.com/modularity-and-the-web" target="_blank">as I discussed last week</a>, is constructed with a blend of autonomous content and content-objects from across the web.  This kind of shared content structure is a natural development beginning with sites maintained as interfaces interacting with content sources like databases.</p>
<p>By creating an exclusive web application you gain certain benefits.  You control your environment.  You get to set the rules and everyone who uses your system must obey.  You maintain the images.  You store the copy.  You define the network.  Everything you do lives within the ecosystem you create.</p>
<p>For as good as it sounds to have supreme power over a web ecosystem, there are drawbacks.  You are solely responsible for maintaining the system.  When things break, it is your job to fix them.  When enhancements are made, you are the one on the hook to build them.  The onerous is on you and you alone.</p>
<p>There is another issue that comes with maintaining a partially or fully closed ecosystem. You can lose trust.  People get wise when others start watching everything they are doing.  This kind of realization hurts companies.  Facebook appears to be suffering from just this kind of loss of trust right now.  As they get more aggressive with sharing user data, they lose user trust.  Since Facebook is a closed ecosystem, an exclusive web application, and users are aware they are being watched, trust in the system wanes.</p>
<p>Inclusive web applications, on the other hand, lend a feeling of freedom and sharing due to the transparent sharing of information across the wire.  The inclusive web draws information in from APIs and RSS feeds across the web.  Just as information flows in, the local API allows information back out again.</p>
<p>When the inclusive web also allows people to manage their own privacy, users feel more secure.  They know they can collect the information they want and share it with whomever they like without feeling the burden of filtering or censoring their preferences in order to please people they neither know nor are aware even exist.</p>
<p>The benefit you gain from running an inclusive web application is the ease of production.  You maintain the code base for a hub and your unique function while allowing other services to manage the content they specialize in.  This community development process leads to many different groups acting in a specialized way and supporting a subset of the total code that builds the end user experience.</p>
<p>For the gains available in the inclusive web, there are pitfalls as well. Privacy management becomes a more complicated task for the user.  Instead of managing the privacy controls at a single dashboard, they are required to manage their privacy as it applies to each system they touch.  This can become a burden if a user suddenly decides to overhaul the privacy settings across their personal social ecosystem.</p>
<p>Another concern to weigh against is control.  The more inclusive your application is the less control you have over the experience your user has when they interact with the ecosystem in its entirety.  Within the scope of your application, users can, and should, have a consistent experience.</p>
<p>All APIs, however, are not made equal, so preparing and presenting an interface for your user does not mean you will be able to give them the same rich experience they would have when interacting with the primary service.  On the other hand, this may be preferable as you can offer a subset of functions which relate directly to your service without directly mirroring the function of the service you are interacting with.</p>
<p>With these control issues in mind it is likely still a greater benefit to be inclusive rather than exclusive.  Through acting in an open, inclusive way your site becomes a boon to the user, enhancing their experience and making the web a friendlier place to be.</p>
<p>In the end, however, the inclusive web is where users truly live.  No user interacts solely with any specific web application forsaking all others.  They look to constantly enhance their experience on the web through richer interactions.  These interactions, however, are not just with a machine.  They are interactions with people.  People don&#8217;t all live in once place.</p>
<p>Instead of trying to fight the inevitable rise of the inclusive web as an expectation of the user, embrace it.  Think about the sites and services your users prefer.  Engage your users with new ways of acting with and upon the web around them.  Provide your users an open, inclusive experience.  Make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/304/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Usabilibloat or Websites Gone Wild</title>
		<link>http://www.chrisstead.com/archives/300</link>
		<comments>http://www.chrisstead.com/archives/300#comments</comments>
		<pubDate>Wed, 21 Apr 2010 16:00:18 +0000</pubDate>
		<dc:creator>Chris</dc:creator>
				<category><![CDATA[Coding]]></category>
		<category><![CDATA[Site Architecture]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[World Wide Weird]]></category>

		<guid isPermaLink="false">http://www.chrisstead.com/?p=300</guid>
		<description><![CDATA[It&#8217;s always great when you have the opportunity to built a site from the ground up. You have opportunities to design things right the first time, and set standards in place for future users, designers and developers alike. These are the good times. More often than not, sites are already built and deployed for the [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s always great when you have the opportunity to built a site from the ground up.  You have opportunities to design things right the first time, and set standards in place for future users, designers and developers alike.  These are the good times.</p>
<p>More often than not, sites are already built and deployed for the world to view.  Moreover, there are probably unintentional standards in place which get in the way of your best efforts to do right by the site, the content and the user.</p>
<p>It can be said that, much like user experience is either good or bad, there is no such thing as no standard, there is merely a good or bad standard.  Once a project is underway, if there are no standards to work from, they will create themselves.</p>
<p>Pretty soon you find yourself in the corner holding a roller and a can of paint with a confused look on your face.<span id="more-300"></span></p>
<p>&#8220;How did I get HERE,&#8221; you ask.</p>
<p>Patterns become entrenched.  People begin to rely on the uneven foundation.  It is expected that things are going to be built around warps in the floorboards.  Broken becomes the new fixed.</p>
<p>Suppose you approach a site that has a decade, or more, of this kind of entrenched patterning.  You will quickly discover that doing any updating, making any change or acting upon the site in any way is a momentous task.</p>
<p>On one side of the fence stand the engineers who have cobbled together this house in the swamp and there you stand, Captain Ahab, looking at the white whale of usability and proclaiming you will have victory regardless of the cost.</p>
<p>This kind of standoff leads to what I refer to as usabilibloat.  Usabilibloat is the unexpected and swift expansion of codebase and resource usage to support a cumbersome system and a user interface which may be little more than merely passable.  Typically this kind of situation is not grown out of contention or malevolence but simply out of &#8220;organic growth.&#8221;</p>
<p>Organic growth, when controlled and directed, can allow a site, tool or other system to flourish and become a loved and trusted tool.  When uncontrolled, organic growth of a site becomes malignant.</p>
<p>The first step to take when approaching a site which is in danger of developing usabilibloat is to assess what is easy to fix and what is hard.  The hard things are typically systemic problems, likely related to cutting a corner years ago.  Often, the person who cut said corner is long gone and others are left to pick up the pieces.</p>
<p>The easy problems should be evaluated as to level of efficacy regarding user experience and ease of maintenance in the long run.  Don&#8217;t ignore any of them, but make a list and order the problems as they should be handled.</p>
<p>Sometimes easy problems reveal systemic ones, so be aware.  If an easy problem starts to become a systemic problem, shift it from the easy list and move on.</p>
<p>Once you have sorted the easy problems in order of importance and immediacy, evaluate the ideal user experience.  Note the key features and make a list of them.  These are the do or die features.  These are the &#8220;if our system doesn&#8217;t have these, it is a non-starter.&#8221;</p>
<p>Appraise the list of easy-to-fix issues and non-starter features and roll these out in the earliest version of your site.  Forget about the other neato things you intend to put in place one day.  Just get the site rolling with what you need and give people something to click on.</p>
<p>Something that is key for limiting usabilibloat: build an API.  Create something to allow your UI to interact with the system below.  It can be hacky.  It can be ugly.  It may not work quite right the first time you try it.  Regardless, with a good programming interface, you can interact with the user in a consistent way while the developers pull the system back from the edge of the abyss.</p>
<p>By building an API, you separate the UI from the system and allow the pieces to move more independently.  A major benefit you will gain from this approach is the ability to give your users something to click on early.  The more user testing you can incorporate the better.  If you can incorporate it early, you are doing well.</p>
<p>User testing will help to eliminate more usabilibloat.  Your users will tell you if something works better, worse or about the same as what they were expecting.  Sometimes you will discover you can cross items off your list as they are unrelated to what your user is truly interested in.</p>
<p>After you&#8217;ve accomplished these critical steps, continue to work through your site in much the same way, iterating in the UI elements as they are appropriate and refine the system to work more efficiently within the scope of the user needs.</p>
<p>Usbilibloat should be managed from the earliest possible moment.  The only remedy available once usabilibloat sets in is time and sweat.  If bloat is carried too far, your users will suffer for your sins.</p>
<p>The key to your salvation is planning.  If you see your site heading for the edge, take a moment.  Sit down with your developers and make a plan.  managing the issue early will save lots of grief for both you and your users.  Meet the problem head on.  Break your UI away from the rest of the system.  Save your users and make the web a better place.</p>
<p>&copy;2012 <a href="http://www.chrisstead.com">Chris Stead</a>. All Rights Reserved.</p>.]]></content:encoded>
			<wfw:commentRss>http://www.chrisstead.com/archives/300/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

