<?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>Joe Dolson Accessible Web Design &#187; Web Development</title>
	<atom:link href="http://www.joedolson.com/articles/category/web-development/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.joedolson.com/articles</link>
	<description>Tips and Commentary on Web Accessibility, Usability, and Search Marketing best practices.</description>
	<lastBuildDate>Sat, 13 Mar 2010 16:14:08 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=abc</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>When More is Less</title>
		<link>http://www.joedolson.com/articles/2010/03/when-more-is-less/</link>
		<comments>http://www.joedolson.com/articles/2010/03/when-more-is-less/#comments</comments>
		<pubDate>Sat, 13 Mar 2010 16:14:08 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[design]]></category>
		<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=693</guid>
		<description><![CDATA[One of the most famously cliched spy movie themes is the absurdly complex method (and accompanying explanation) in which the villain intends to kill the hero. Layer upon layer of killer sharks, laser beams, poisonous gases, and robot assassins employed with the sole intention of killing one fundamentally normal person (albeit a very suave person, [...]<p><strong><a href="http://www.joedolson.com/articles/2010/03/when-more-is-less/">When More is Less</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>One of the most famously cliched spy movie themes is the absurdly complex method (and accompanying explanation) in which the villain intends to kill the hero. Layer upon layer of killer sharks, laser beams, poisonous gases, and robot assassins employed with the sole intention of killing one fundamentally normal person (albeit a very <em>suave</em> person, of&nbsp;course.)</p>
<p>And, naturally, it always fails. Something goes wrong in the system; gross negligence of maintenance causes a malfunction; or some unanticipated exception allows the hero to&nbsp;escape. </p>
<p>This is an important thing to keep in mind when designing or building a web site, in every aspect. When you think you&#8217;re adding fabulous new functionality or greater accessibility, you should always be thinking about whether you&#8217;re ultimately supporting your visitor&#8217;s needs&thinsp;&#8212;&thinsp;or just making your system needlessly more&nbsp;complex. </p>
<p>Jared Smith, from Web AIM, recently published an article on <a href="http://webaim.org/blog/web-accessibility-preferences-are-for-sissies/">web accessibility preferences</a> expounding on the notion that in most cases, providing tools for your disabled users to change their experience usually means that you haven&#8217;t done your job right in the first place. Perhaps, rather than adding a tool to enable people to adjust your site, you should simply <strong>fix the site</strong>. Jared makes the very good point that in most cases, the people who need text enlargement have already taken care of it through their browser settings or operating system; and those who need extreme enlargement can&#8217;t be helped by a common accessibility widget&thinsp;&#8212;&thinsp;they need software&nbsp;support.</p>
<p>So, given this case, what do you actually accomplish by adding accessibility widgets to a web&nbsp;site? </p>
<p>If you&#8217;ve added them to a global element, to make them available throughout the site, you&#8217;ve made your site more complex: there&#8217;s more information on every page which needs to be sorted through or skipped over. You&#8217;ve added an additional technical element which needs to be supported and maintained&thinsp;&#8212;&thinsp;as browsers change, you&#8217;ll need to be rechecking not just your default settings, but all of the various combinations you&#8217;re providing, as&nbsp;well. </p>
<p>If you&#8217;ve added the same options to a page dedicated to these accessibility options, you&#8217;ve pretty well avoided the problem of having a globally more complicated interface. However, you need to ask yourself whether the problems your accessibility options fix will prevent the users who need them from finding the options!  Take this example: you&#8217;ve chosen a relatively low-contrast (but attractive) text color for your footer and secondary header navigation. Since this color is below the <a href="http://www.joedolson.com/articles/2008/05/testing-color-contrast/"><acronym title="Web Content Accessibility Guidelines">WCAG</acronym> 2 color contrast requirements</a>, you&#8217;re providing a link to a page where the user can select a high-contrast&nbsp;option. </p>
<p>Unfortunately, since the link is in your footer, that user who needs a high-contrast page can&#8217;t actually find the page where they can make the&nbsp;change. </p>
<p>Problems with site complexity don&#8217;t only effect web accessibility, however. Any additional function to your web site needs to be carefully considered before  implementation: is it worth while to add an audio player with auto start to your home page? What are the consequences of making this change? You may think that it&#8217;s a great opportunity to immediately promote your band&#8217;s music to those who want to hear it; but you&#8217;re making the gross assumption that those visitors want to hear it <strong>right now</strong>. They may not. And if they&#8217;re in a sensitive situation&thinsp;&#8212;&thinsp;checking you out from their quiet office cubicle, for example&thinsp;&#8212;&thinsp;then their first reaction is likely to be &#8220;How do I turn this&nbsp;off!&#8221;</p>
<p>Assuming you have decided to add this audio player to your web site&thinsp;&#8212;&thinsp;you may not realize that the most important control you need to have is a prominent <em>STOP</em> button. Otherwise, the most natural way to stop the music is to leave your&nbsp;site. </p>
<p>Any piece of new functionality adds complexity to a site. It may create an undesirable reaction, it may create user confusion&thinsp;&#8212;&thinsp;or it may be a brilliant idea which turns your home business into a multi-million dollar corporation. You shouldn&#8217;t avoid adding functionality on the grounds that anything complicated is going to be a problem; but you should certainly take a very close look at every new feature and decide whether it will add to the user experience. When making that decision, the points to consider are not limited to the value of that feature alone. You need to also consider all the other features which will be simultaneously available; you may want to add a new feature, but move an existing one. It&#8217;s usually not any given feature which causes problems; it&#8217;s having too many paths to follow which may confuse your visitors.
<p><strong><a href="http://www.joedolson.com/articles/2010/03/when-more-is-less/">When More is Less</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2010/03/when-more-is-less/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Taking a holistic view of SEO in parts.</title>
		<link>http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/</link>
		<comments>http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/#comments</comments>
		<pubDate>Thu, 27 Aug 2009 15:40:33 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Search Engines]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[discussion]]></category>
		<category><![CDATA[marketing]]></category>
		<category><![CDATA[sef]]></category>
		<category><![CDATA[sem]]></category>
		<category><![CDATA[seo]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=582</guid>
		<description><![CDATA[A couple years ago, I wrote an article addressing the differences between working in a search engine friendly manner and working on search engine optimization. That article talked extensively about what is included in optimization which is not necessarily a part of being search engine&#160;friendly. 
Shari Thurow, a well-respected researcher in the search engine optimization [...]<p><strong><a href="http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/">Taking a holistic view of SEO in parts.</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>A couple years ago, I wrote an <a href="http://www.joedolson.com/articles/2007/05/search-engine-friendly-vs-search-engine-optimized/">article addressing the differences between working in a search engine <em>friendly</em> manner and working on search engine <em>optimization</em></a>. That article talked extensively about what is included in optimization which is not necessarily a part of being search engine&nbsp;friendly. </p>
<p>Shari Thurow, a well-respected researcher in the search engine optimization and usability realm, suggested that separating the two concepts is, in fact,&nbsp;ridiculous. </p>
<p>Well, that may be. However, I think that it&#8217;s crucial to break a task into parts if you want to gain a thorough understanding of the whole. Search engine marketing is an excellent example of a whole which is greater than the sum of it&#8217;s&nbsp;parts. </p>
<p>As I see it, building a search engine friendly site is one of the first stages of best practice search marketing. The adage &#8220;if you build it, they will come&#8221; fails to hold, however: a site which is constructed <em>merely</em> to be search engine friendly will gain little to no&nbsp;traffic.</p>
<h3>Being part of the&nbsp;process</h3>
<p>Being search engine friendly is a part of the process of search engine optimization; which is, itself, a part of the process of search engine marketing. In addition to these two aspects, search engine marketing may also include pay-per-click advertising, print advertising, link building and social media participation. Search engine marketing is a large area, and very, very few people are expert in all aspects. I&#8217;m certainly&nbsp;not. </p>
<p>From a marketing standpoint, what parts of this marketing whole are necessary for your business to succeed is going to vary radically depending on your industry and the way your business intersects with the internet. It will also depend on your definition of success. If you&#8217;re looking to maximize growth, you&#8217;ll probably want to be investing in all aspects of&nbsp;marketing. </p>
<p>So I&#8217;m arguing that search marketing, while clearly a practice in which the parts of the whole are highly interwoven and carry clear dependencies on each other, can nonetheless be separated into it&#8217;s component parts for a variety of reasons, including for the sake of&nbsp;discussion. </p>
<p>Now let me take this a step further. Not only is it possible to separate search engine marketing into separate aspects for discussion, it&#8217;s&nbsp;<em>valuable</em>.</p>
<p>If you want to understand the interactions between the different aspects of a task, it&#8217;s important to have some information about all parts. In this context, it&#8217;s necessary to treat the whole of search engine marketing in a given discussion. However, when you want to understand the details of a specific task, it&#8217;s important to stay focused on your part of that&nbsp;task. </p>
<p>It&#8217;s necessary for practitioners in search engine marketing to know, in general, what the impact their work will be on all aspects of the marketing campaign. It is <em>crucial</em> for practitioners in search marketing to know, in detail, exactly how to perform their own tasks in the best possible manner for their clients.  It&#8217;s important to treat an area of expertise specifically. Talking through the nature of that area; comparing and contrasting it to other related areas; considering the specific nature of tasks within that area of expertise: these are all ways of better defining and refining knowledge on a specific&nbsp;subject. </p>
<h3>Why does this&nbsp;matter?</h3>
<p>It doesn&#8217;t, really. It&#8217;s all semantics. Search engine optimization is the commonly known term, and it frequently is understood to encapsulate search engine marketing. Or the other way around. The industries around search engines and marketing (and just about anything internet) are young, and the vocabularies aren&#8217;t really all the firmly established. As a result, some people have a very firm opinion of what a given term means which may not always coincide with others&nbsp;definitions. </p>
<p>Well, that&#8217;s why we write about it. We&#8217;re all hoping that our definitions will ultimately win. <img src='http://www.joedolson.com/articles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' />
<p><strong><a href="http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/">Taking a holistic view of SEO in parts.</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2009/08/taking-a-holistic-view-of-seo-in-parts/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>How NOT to use Post meta fields in WordPress Themes</title>
		<link>http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/</link>
		<comments>http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/#comments</comments>
		<pubDate>Tue, 25 Aug 2009 23:09:54 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[custom fields]]></category>
		<category><![CDATA[post object]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=577</guid>
		<description><![CDATA[A little while ago, while working on a site built by another developer, I came across this rather interesting example of how to use custom fields badly in a WordPress theme (abbreviated for, well,&#160;brevity):
(The original also did this for meta keywords and meta descriptions&#8201;&#8212;&#8201;but the demonstration of this &#8220;logic&#8221; only requires one&#160;field.)

&#160;
&#60;? if &#40;is_front_page&#40;&#41;&#41; &#123; [...]<p><strong><a href="http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/">How NOT to use Post meta fields in WordPress Themes</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>A little while ago, while working on a site built by another developer, I came across this rather interesting example of how to use custom fields <em>badly</em> in a WordPress theme (abbreviated for, well,&nbsp;brevity):</p>
<p>(The original also did this for meta keywords and meta descriptions&thinsp;&#8212;&thinsp;but the demonstration of this &#8220;logic&#8221; only requires one&nbsp;field.)</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>is_front_page<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;Handwritten title&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">334</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-2&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">383</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-3&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">381</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-4&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">383</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span>is_page<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;page-name-5&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?=</span> get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">387</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">TRUE</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>And so on. For approximately 40 separate pages. It made my brain hurt. For reference, the exact same thing&thinsp;&#8212;&thinsp;for all pages on the site&thinsp;&#8212;&thinsp;could have been accomplished (with better fallback conditions, in fact) with this&nbsp;code:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;">&nbsp;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span>get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">==</span><span style="color: #0000ff;">&quot;&quot;</span> <span style="color: #339933;">&amp;&amp;</span> is_page<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?</span> wp_title<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'|'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'right'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>
	&lt;title&gt;<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #b1b100;">echo</span> <span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span>get_post_meta<span style="color: #009900;">&#40;</span><span style="color: #000088;">$wp_query</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ID</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'meta_title'</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span> | <span style="color: #000000; font-weight: bold;">&lt;?</span> bloginfo<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'name'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span>&lt;/title&gt;
<span style="color: #000000; font-weight: bold;">&lt;?php</span> <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Now, the original code may actually look cleaner&thinsp;&#8212;&thinsp;it does, after all, have fewer functions and fewer variables. However, the second example is a <strong>hell</strong> of a lot more&nbsp;maintainable. </p>
<p>If you add a new page to the site in the first example, you have&nbsp;to:</p>
<ol>
<li>Create the new&nbsp;page.</li>
<li>Add a custom field with the&nbsp;title.</li>
<li>Check the new page&#8217;s&nbsp;ID.</li>
<li>Find the theme file which contains the meta data&nbsp;references.</li>
<li>Add a new line in the <code>elseif</code> loops which references your new page first by slug and then by&nbsp;ID</li>
</ol>
<p>With the second example, you&nbsp;simply:</p>
<ol>
<li>Create the new&nbsp;page.</li>
<li>Add a custom field with the&nbsp;title.</li>
</ol>
<p>No coding, no <acronym title="Hypertext PreProcessing">PHP</acronym>, no editing themes&thinsp;&#8212;&thinsp;it just works. Well, isn&#8217;t that handy? This is just basic good coding practice: make your code reusable. There&#8217;s absolutely no reason to code something into your WordPress Themes which is not readily transportable unless you&#8217;re doing yourself a favor by avoiding an unnecessary server call by hard-coding the site name or other known&nbsp;elements. </p>
<p>The basic difference between these two examples is simple: the first requires you to hard code the ID and page slug for each example; the second grabs the post ID from the existing post object. The second example also has a fall-back if no information has been entered in a given custom field&thinsp;&#8212;&thinsp;which is lacking in the original&nbsp;code. </p>
<p>Word to the wise: save yourself some&nbsp;work!</p>
<p><strong><a href="http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/">How NOT to use Post meta fields in WordPress Themes</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2009/08/how-not-to-use-post-meta-fields-in-wordpress-themes/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>&#8220;Selling Usability,&#8221; by John Rhodes.</title>
		<link>http://www.joedolson.com/articles/2009/04/selling-usability-by-john-rhodes/</link>
		<comments>http://www.joedolson.com/articles/2009/04/selling-usability-by-john-rhodes/#comments</comments>
		<pubDate>Wed, 01 Apr 2009 14:20:31 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Usability]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=503</guid>
		<description><![CDATA[ The worst thing I can say about John Rhodes is that the writing coming from his usability blog has been alarmingly infrequent in the last couple of years. 13 posts in the last 12 months just doesn&#8217;t really cut&#160;it!
Thankfully, the reason for his blogging silence is pretty straightforward: he&#8217;s been writing a book.&#160;Sweet!
The book [...]<p><strong><a href="http://www.joedolson.com/articles/2009/04/selling-usability-by-john-rhodes/">&#8220;Selling Usability,&#8221; by John Rhodes.</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.amazon.com/gp/product/1442103736?ie=UTF8&#038;tag=joedolsonacce-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1442103736"><img src="http://ecx.images-amazon.com/images/I/41klH6Jyj5L._SL500_AA240_.jpg" alt="Selling Usability: User Experience Infiltration Tactics" class="floatright" /></a> The worst thing I can say about John Rhodes is that the writing coming from <a href="http://www.webword.com/wp/">his usability blog</a> has been alarmingly infrequent in the last couple of years. 13 posts in the last 12 months just doesn&#8217;t really cut&nbsp;it!</p>
<p>Thankfully, the reason for his blogging silence is pretty straightforward: he&#8217;s been writing a book.&nbsp;<strong>Sweet</strong>!</p>
<p>The book is entitled &#8220;Selling Usability,&#8221; which is a bit of a misnomer, since the subject of the book is perhaps more accurately described as &#8220;Making Usability Happen, Despite the Regrettable Lack of Understanding on the Part of Your Managers.&#8221; To be fair, that would be a pretty unusable&nbsp;title. </p>
<p>It&#8217;s clear within the first 20 pages that John and I share a core philosophy concerning the application of usability: as much as you&#8217;d like people to buy in to the core ideals of user experience, you <em>need</em> them to buy in to making the change. By hook or by crook, making the change is what needs to happen in the&nbsp;end.</p>
<p>You can only teach those who are willing to learn; but you can guide anybody to the right decision if you use the arguments they understand and care&nbsp;about. </p>
<p><a href="http://www.amazon.com/gp/product/1442103736?ie=UTF8&#038;tag=joedolsonacce-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1442103736">Selling Usability: User Experience Infiltration Tactics</a> is a guide to convincing decision-makers towards user-experience focused decisions by using business-focused arguments and&nbsp;tactics. </p>
<p><span class="dquo">&#8220;</span>Selling Usability&#8221; is about communicating&nbsp;effectively. </p>
<p>John&#8217;s writing is frank and clear. He writes in a casually persuasive voice which quickly drives through the description of a problem into the analysis of <em>why</em> this is a problem&thinsp;&#8212;&thinsp;and how you might start to solve&nbsp;it.</p>
<p>This book is <em>not</em> about usability. You&#8217;ll learn a lot about <em>understanding</em> and <em>communicating</em> the user experience by reading this book, but it&#8217;s not going to teach you how to study user&nbsp;interaction. </p>
<p><a href="http://www.amazon.com/gp/product/1442103736?ie=UTF8&#038;tag=joedolsonacce-20&#038;linkCode=as2&#038;camp=1789&#038;creative=390957&#038;creativeASIN=1442103736">Buy it now</a>. You&#8217;ll learn more than you think you will, no matter your&nbsp;background.</p>
<p><strong><a href="http://www.joedolson.com/articles/2009/04/selling-usability-by-john-rhodes/"><span class="dquo">&#8220;</span>Selling Usability,&#8221; by John Rhodes.</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2009/04/selling-usability-by-john-rhodes/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Let&#8217;s find a way to do this right!</title>
		<link>http://www.joedolson.com/articles/2009/03/lets-find-a-way-to-do-this-right/</link>
		<comments>http://www.joedolson.com/articles/2009/03/lets-find-a-way-to-do-this-right/#comments</comments>
		<pubDate>Sat, 21 Mar 2009 17:56:53 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[project planning]]></category>
		<category><![CDATA[scope]]></category>
		<category><![CDATA[webdev]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=495</guid>
		<description><![CDATA[Most new projects come with some kind of baggage. An old version of the site with, shall we say, incredible code, an expensive CMS with rotten core HTML generation, tools the site owner has fallen in love with which fail to offer even a nod in the direction of accessibility, or demands for some kind [...]<p><strong><a href="http://www.joedolson.com/articles/2009/03/lets-find-a-way-to-do-this-right/">Let&#8217;s find a way to do this right!</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>Most new projects come with some kind of baggage. An old version of the site with, shall we say, <em>incredible</em> code, an expensive <acronym title="Content Management System">CMS</acronym> with rotten core <acronym title="HyperText Markup Language">HTML</acronym> generation, tools the site owner has fallen in love with which fail to offer even a nod in the direction of accessibility, or demands for some kind of concept which only barely registers as possible within the boundaries of <acronym title="HyperText Transfer Protocol">HTTP</acronym>&nbsp;protocol. </p>
<p>And, as the developer, it&#8217;s your job to figure out how to re-do these projects. Usually, there will be more than one way to get the job done: at minimum, you&#8217;ll see a quick and dirty method and an arduous, finicky, complicated method which makes tears spring to your eyes in anticipation of the painstaking&nbsp;hours. </p>
<p>Finding the &#8220;right&#8221; way to do the job is a matter of balancing needs. In an ideal world, the &#8220;right&#8221; way is the method which gives you perfect accessibility, fantastic usability, and helps sell a million copies of your client&#8217;s product in the first 24 hours. <img src='http://www.joedolson.com/articles/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
<p>In the real world, it&#8217;s the best compromise between your time, your client&#8217;s budget, and the needs of the site audience. It may even be a more specific audience&thinsp;&#8212;&thinsp;the users of the specific portion of the site which is creating this&nbsp;challenge. </p>
<h3>The Challenge of&nbsp;Scale</h3>
<p>When you encounter a dozen pages with code which is layered with <code>font</code> elements, excessive <code>span</code> elements and dozens of unnecessary <code>style</code> attributes it&#8217;s a trivial task to strip the extra <acronym title="HyperText Markup Language">HTML</acronym> and replace it with the bare minimum required for your needs. When you encounter 12,000 pages like this, of course, you may be looking at man hours which aren&#8217;t available&nbsp;anymore. </p>
<h3>The Challenge of Legacy&nbsp;Systems</h3>
<p>Rebuilding that <acronym title="Content Management System">CMS</acronym> to deliver a reasonable facsimile of conforming <acronym title="HyperText Markup Language">HTML</acronym> may not only be beyond the scope of practicality&thinsp;&#8212;&thinsp;it could well be a violation of the client&#8217;s license to use the software. If it&#8217;s expensive software, sacrificing a support relationship with the software developer could be very&nbsp;damaging. </p>
<p>With major <acronym title="Content Management System">CMS</acronym> rebuilds, the most important thing is to identify the scope of changes you can make. Maybe you can&#8217;t replace every problem, but it&#8217;s honestly not worth discarding $30,000 worth of software investment for the sake of validation. It <em>is</em> worth discarding $30,000 worth of software for the sake of legitimate accessibility barriers. If the system will not allow you to create an accessible form, or generates a shopping cart which cannot be operated without using a mouse, that software should be&nbsp;replaced.</p>
<h3>The Challenge of Fancy&nbsp;Widgets</h3>
<p>Your client is <em>in love with</em> that poorly-designed Flash widget provided from CrazySite.com. They&#8217;ve just <em>gotta</em> have it! It can&#8217;t be used by anybody who isn&#8217;t using a mouse, the font size can&#8217;t be adjusted and is set to 8pt Arial, and there&#8217;s a constant red flash which might trigger seizures. But it&#8217;s just so&nbsp;cool!</p>
<p>Before you even start discussing the issues above&thinsp;&#8212;&thinsp;the un-sexy and hard to sell accessibility problems&thinsp;&#8212;&thinsp;it&#8217;s good to have a serious discussion with the client the answer one key question: <em>Why</em>. Does the widget serve a purpose for their business? Does it help their users? Does it help sell their product? Sometimes you can successfully get a client to make the right decision on their own once they realize that a function does not actually support their business in any&nbsp;way. </p>
<p>If, on the other hand, it <em>does</em> actually support their business, you&#8217;ve potentially stuck yourself with the greater challenge: replacing the functionality of the widget using an alternate means. Programming APIs are great, but not every site actually offers&nbsp;one. </p>
<h3>The Challenge of Impossible&nbsp;Functionality</h3>
<p><span class="dquo">&#8220;</span>Impossible&#8221; functionality is actually a bit of hyperbole. In my own experience, I&#8217;m not sure I recall ever having been asked for something which was actually <em>impossible</em>. However, I have been asked for functionality where the labor to value ratio was extremely unfavorable to the client, which is probably close&nbsp;enough. </p>
<p>Now, this is a highly variable challenge. Sometimes, the best thing to do here is just to ask for a second opinion from a programmer with more specific knowledge than you have. However, assuming that the request is actually unreasonable, the challenge is pretty much the same as above&thinsp;&#8211;&thinsp;find out what the client <em>really</em> wants. Sometimes, the difficulty is simply terminology. Some clients might use technical terms in an overly general manner, which can sometimes lead to&nbsp;misunderstandings. </p>
<p>Learning to inquire about project needs without using technical terminology is one of the most valuable tools in your scoping toolkit&thinsp;&#8212;&thinsp;it can save you tremendous amounts of time, wasted effort, and frustrated&nbsp;miscommunication. </p>
<h3>What is doing it&nbsp;right?</h3>
<p>So, in the end, what does it mean to do something right? Ultimately, it means not getting lost in the impossibilities of requests and avoiding being distracted by confusing requests. Doing a project right always starts with good scoping: continually asking questions until you&#8217;re absolutely certain that what you&#8217;re working on is really the project requested. Once the project is properly defined, the tools are known and understood, then doing the project itself is simply a matter of time and normal best practices&nbsp;development!</p>
<p><strong><a href="http://www.joedolson.com/articles/2009/03/lets-find-a-way-to-do-this-right/">Let&#8217;s find a way to do this right!</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2009/03/lets-find-a-way-to-do-this-right/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WebAIM Survey on Screen Reader Usage</title>
		<link>http://www.joedolson.com/articles/2009/01/webaim-survey-on-screen-reader-usage/</link>
		<comments>http://www.joedolson.com/articles/2009/01/webaim-survey-on-screen-reader-usage/#comments</comments>
		<pubDate>Sat, 31 Jan 2009 16:13:35 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[screen readers]]></category>
		<category><![CDATA[survey]]></category>
		<category><![CDATA[web accessibility]]></category>
		<category><![CDATA[webaim]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=487</guid>
		<description><![CDATA[WebAIM has just published the preliminary results of a survey of screen reader users. With over 1,100 respondents&#8201;&#8212;&#8201;among whom over 1,000 used a screen reader due to a disability&#8201;&#8212;&#8201;the survey shows promise of revealing an interesting and valuable perspective on the practical usage of screen readers among disabled&#160;populations. 
Obviously, no survey is perfect&#8201;&#8212;&#8201;but observing the [...]<p><strong><a href="http://www.joedolson.com/articles/2009/01/webaim-survey-on-screen-reader-usage/">WebAIM Survey on Screen Reader Usage</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<p>WebAIM has just published the <a href="http://webaim.org/projects/screenreadersurvey/">preliminary results of a survey of screen reader users</a>. With over 1,100 respondents&thinsp;&#8212;&thinsp;among whom over 1,000 used a screen reader due to a disability&thinsp;&#8212;&thinsp;the survey shows promise of revealing an interesting and valuable perspective on the practical usage of screen readers among disabled&nbsp;populations. </p>
<p>Obviously, no survey is perfect&thinsp;&#8212;&thinsp;but observing the overall scope of responses can effectively expose some aspects of screen reader&nbsp;usage. </p>
<p>In fact, the preliminary results evidence a number of interesting conclusions. Among the statistics are indications that screen reader and web site evaluators who do not have a disability sometimes have a very disparate idea of what is more accessible than those with disabilities&thinsp;&#8212;&thinsp;an issue possibly connected to the evaluator&#8217;s lack of sophisticated familiarity with the screen&nbsp;readers. </p>
<p>It&#8217;s not altogether surprising that we in the web accessibility industry do not always choose the path which is actually most preferred&thinsp;&#8212;&thinsp;our impressions are necessarily biased by our own understanding of the technology, our presumptions of what is sufficient information, and our lack of ability to fully ignore the visual input we <em>do</em>&nbsp;receive. </p>
<p>That&#8217;s what makes this survey so particularly valuable: it begins to expose the difference between common misconceptions of what is accessible and those which are truly of&nbsp;benefit. </p>
<p>In the evidence in this study are included indications that disabled users would prefer that photos which are part of a page should be fully identified: as a photograph, and as the object depicted. There are indications that while site maps may be valuable, they are not in fact widely used by disabled users. There are indications that on-site search and navigation by headings are two of the most important navigation methods on a site for the&nbsp;disabled. </p>
<p>And, unsurprisingly, there&#8217;s fairly definitive confirmation that Flash is difficult for the disabled to&nbsp;use. </p>
<p>Nonetheless, the conclusions drawn from this information aren&#8217;t really that simple. With Flash, for example: the problem with Flash is almost certainly that the Flash web sites visited were not designed with accessibility in mind. Flash <em>can</em> be used accessibly, but in 9 cases out of 10 (a number I&#8217;m <strong>making up for hyperbolic purposes</strong>) it&#8217;s been developed with no regard whatsoever for accessibility issues. So the issue is not precisely with Flash&thinsp;&#8212;&thinsp;rather, the problem is with Flash&nbsp;<em>developers</em>.</p>
<p>The preliminary observations from this survey are well worth reading; and I&#8217;m definitely looking forward to seeing further analysis of the&nbsp;results. </p>
<p>Thank you, WebAIM!
<p><strong><a href="http://www.joedolson.com/articles/2009/01/webaim-survey-on-screen-reader-usage/">WebAIM Survey on Screen Reader Usage</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2009/01/webaim-survey-on-screen-reader-usage/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Wordpress Post Custom Styling</title>
		<link>http://www.joedolson.com/articles/2008/12/wordpress-post-custom-styling/</link>
		<comments>http://www.joedolson.com/articles/2008/12/wordpress-post-custom-styling/#comments</comments>
		<pubDate>Mon, 22 Dec 2008 16:26:21 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Blogging]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[articles]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[magazine]]></category>
		<category><![CDATA[post styling]]></category>
		<category><![CDATA[styles]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=472</guid>
		<description><![CDATA[
Current Version:&#160;1.2.1
Download WP Post&#160;Styling.
Read more about this&#160;plugin.
Support this&#160;Plugin

New in Version&#160;1.2.1:

Added ability to delete CSS from the style&#160;library

New WordPress plugin: WP Post Styling. The plugin serves only one purpose: to create a place to add custom styles which will only apply to the current page or post in your WordPress&#160;blog. 
Although not widely used on the [...]<p><strong><a href="http://www.joedolson.com/articles/2008/12/wordpress-post-custom-styling/">Wordpress Post Custom Styling</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<div class="aside">
<p>Current Version:&nbsp;<strong>1.2.1</strong></p>
<p><a href="http://wordpress.org/extend/plugins/wp-post-styling/">Download WP Post&nbsp;Styling</a>.</p>
<p><a href="http://www.joedolson.com/articles/wp-post-styling/">Read more about this&nbsp;plugin</a>.</p>
<p><a href="http://www.joedolson.com/donate.php">Support this&nbsp;Plugin</a></p>
</div>
<p><strong>New in Version&nbsp;1.2.1:</strong></p>
<ul>
<li>Added ability to delete <acronym title="Cascading Style Sheets">CSS</acronym> from the style&nbsp;library</li>
</ul>
<p>New WordPress plugin: <a href="http://wordpress.org/extend/plugins/wp-post-styling/">WP Post Styling</a>. The plugin serves only one purpose: to create a place to add custom styles which will only apply to the current page or post in your WordPress&nbsp;blog. </p>
<p>Although not widely used on the internet, it&#8217;s a valuable magazine design technique to give each article a unique look and feel. A look and feel which shows the face of that article in a light which best represents the subject, topic, or&nbsp;style. </p>
<p>This plugin is intended to make that kind of post-by-post styling&nbsp;simpler. </p>
<p>It&#8217;s not that you can&#8217;t readily do this in WordPress&thinsp;&#8212;&thinsp;either by using a theme which applies style hooks for unique articles, by utilizing WordPress conditional functions to check whether a given page is active, or by whatever other means you might imagine&thinsp;&#8212;&thinsp;but this makes it much simpler, since you can simply enter the desired styles into a textarea directly in the&nbsp;post. </p>
<p>Comments and requests should be made at the <a href="http://www.joedolson.com/articles/wp-post-styling/">WP Post Styling</a> home page.
<p><strong><a href="http://www.joedolson.com/articles/2008/12/wordpress-post-custom-styling/">Wordpress Post Custom Styling</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2008/12/wordpress-post-custom-styling/feed/</wfw:commentRss>
		<slash:comments>10</slash:comments>
		</item>
		<item>
		<title>Best Practices in Web Development: Part 5</title>
		<link>http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/</link>
		<comments>http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/#comments</comments>
		<pubDate>Fri, 05 Sep 2008 13:46:49 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[error management]]></category>
		<category><![CDATA[interaction design]]></category>
		<category><![CDATA[site administration]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=280</guid>
		<description><![CDATA[

Part 1 (Contracts, Site Requirements,Information&#160;Architecture)
Part 2 (Hosting and&#160;Security)
Part 3 (Navigation,&#160;Scent)
Part 4 (Semantics, Structure vs. Design, Universal&#160;design)
Part 5 (Interaction, Errors, and&#160;Administration)


After all the labor you put into designing an elegant site which allows users to readily follow the scent of information, all the work dedicated to developing effective semantics and separating your structure from design, it&#8217;s [...]<p><strong><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/">Best Practices in Web Development: Part 5</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<div class="aside">
<ul>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-1/">Part 1</a> (Contracts, Site Requirements,Information&nbsp;Architecture)</li>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-2/">Part 2</a> (Hosting and&nbsp;Security)</li>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/">Part 3</a> (Navigation,&nbsp;Scent)</li>
<li><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/">Part 4</a> (Semantics, Structure vs. Design, Universal&nbsp;design)</li>
<li>Part 5 (Interaction, Errors, and&nbsp;Administration)</li>
</ul>
</div>
<p>After all the labor you put into designing an elegant site which allows users to readily follow the scent of information, all the work dedicated to developing effective semantics and separating your structure from design, it&#8217;s easy for you to still end up with a royally screwed up web&nbsp;site. </p>
<p>Designing interactions with your users and managing errors (expected and unexpected) are a critical part of best practices web development. It hardly matters at all whether somebody can find their way to the right information if they encounter so many problems along the way that they lose trust in your site or give up on their purchase out of&nbsp;frustration!</p>
<p>It&#8217;s not that difficult to keep user interactions running smoothly, if you just keep a few basic rules firmly in&nbsp;mind:</p>
<ul>
<li>Your users don&#8217;t <em>care</em> about error&nbsp;codes.</li>
<li>Messages should tell people what to do next, not what they did&nbsp;wrong.</li>
<li>Every action taken by a user should have a&nbsp;response.</li>
<li>Users <em>will</em> do the things you can&#8217;t imagine them&nbsp;doing.</li>
<li>If you&#8217;re going to <em>require</em> something, you better mean&nbsp;it.</li>
</ul>
<h3 id="interaction">Interaction&nbsp;Design</h3>
<p>Even the most static web site has interactive features. If your site has a single hyperlink, there&#8217;s interaction built into your site. A very small amount of interaction, granted, but there is interaction. The interaction information you can communicate using that single link is based on five specific&nbsp;states:</p>
<ol>
<li><code>link</code>: A link in it&#8217;s normative, unactivated&nbsp;state.</li>
<li><code>hover</code>: The state of the link while a mouse-type pointer is hovering over&nbsp;it.</li>
<li><code>focus</code>: In most browsers, the state of the link when focus is placed on the link by means other than a mouse-type&nbsp;pointer.</li>
<li><code>active</code>: In most browsers, the state of the link while the requested action takes&nbsp;place.</li>
<li><code>visited</code>: The state of the link after the action is&nbsp;completed.</li>
</ol>
<p><acronym title="HyperText Markup Language">HTML</acronym> doesn&#8217;t provide a lot of options by default, but these four pieces of information are critical to making basic interactions effective for all users. Simply communicating to the user that what they are doing has an effect is&nbsp;invaluable.</p>
<p>Similarly, providing interactive information when no interaction is possible can be very confusing. Simply put: if the user can do something with a control, give them information (scent, anybody?) which indicates that <em>this</em> area has a function. If the control is a link, you are able to ensure that&nbsp;it:</p>
<ul>
<li>has an appearance different from the surrounding text (blue,&nbsp;underlined,)</li>
<li>provides information to mouse users that they are in a position to activate the&nbsp;control</li>
<li>provides information to keyboard or alternative devices users that they have focused on the&nbsp;control</li>
<li>indicates that you have performed an action, and that the link is&nbsp;activated</li>
<li>indicates that the control has been&nbsp;used.</li>
</ul>
<p>Now, from a practical perspective, this much information isn&#8217;t always necessary or helpful. For basic links, it&#8217;s rarely necessary to differentiate between <code>hover</code> states and <code>active</code> states. Because of flaws in Internet Explorer&#8217;s use of these commands, it&#8217;s frequently <em>necessary</em> to assign the same appearance to <code>active</code> and <code>focus</code>&nbsp;states. </p>
<p>Nonetheless, the basic principles at work in these five states are valuable, and can be used to guide your approach to interaction design. Simply keeping in mind that form inputs and script responses are not the <em>only</em> ways to communicate interactively with your users will help you shape the behavior of interactive&nbsp;pages.</p>
<h3 id="errors">Error&nbsp;Management</h3>
<p>The possibilities for errors in any complex project are endless, so I&#8217;m going to contain myself to a very simple example: a standard contact form. Possibly the most standard expectation for many sites is a means for the visitor to contact the site owner (or whatever appropriate person is involved.) Although providing a phone number and address is generally expected&thinsp;&#8212;&thinsp;it may not be the preferred means of communication for either party. Since email addresses are essentially a big, open invitation to spam, contact forms are left as the best method of defining a way for visitors to contact&nbsp;you.</p>
<p>The basic contact form I&#8217;m going to discuss is asking for four pieces of information: a name, an email address, a phone number (which is optional,) and a written message. It&#8217;s not a lot of information, but still leaves a lot of room for screwing&nbsp;up.</p>
<p>When creating a programming example of this form, all that&#8217;s generally covered is the basics: how to gather the information in a form and send it to an end user (usually, by email.) This is the core functionality of a contact form, so it&#8217;s reasonable that it&#8217;s the first thing to be&nbsp;covered. </p>
<p>This is only a problem if you stop programming before working through the rest of the&nbsp;scenario. </p>
<p>Depending on how it&#8217;s written, the program described above will do one of two things on being submitted: display a blank screen to the user, or show itself again, with the information submitted removed from the fields. Neither of these options are particularly palatable by themselves, but they each serve a purpose in providing best practice responses to the&nbsp;users.</p>
<p>First, let&#8217;s assume that the user is making a <em>lot</em> of errors. They&#8217;re putting a phone number in the name field, gave a web address for an email, and left out their message&nbsp;entirely.</p>
<p>Without any data checking, this message may simply be sent off: the site owner gets useless information, and the visitor wonders why that damned site owner never answers his&nbsp;email.</p>
<p>Obviously, doing a little data checking is good for more than just security: it helps make sure that you&#8217;ll actually get the information you needed from the&nbsp;form.</p>
<p>Now, having checked this information, we want to let the user know that something just wasn&#8217;t working quite right. But this is a crucial thing to do right&thinsp;&#8212;&thinsp;I&#8217;m sure we&#8217;ve all been to forms where one of the following&nbsp;happened:</p>
<ul>
<li>The error message didn&#8217;t tell you what your errors were, and requires you to use the Back button to return to the&nbsp;form.</li>
<li>The error message doesn&#8217;t tell you the errors, and <em>deleted</em> all the work you did with the&nbsp;form.</li>
<li>The error message tells you what errors you made, but <em>doesn&#8217;t</em> tell you that it also blanked the password field (which was&nbsp;fine.)</li>
<li>The error message informs you of an error which you wouldn&#8217;t have made had the information been available before you used the&nbsp;form.</li>
</ul>
<p>Ideally, if an error is made with the form, the response&nbsp;will:</p>
<ul>
<li>Identify which fields included&nbsp;errors.</li>
<li>Return the user to the form&nbsp;itself.</li>
<li>Retain any information the user supplied in the&nbsp;form.</li>
</ul>
<p>If relevant, the response might tell you what was wrong with the data you supplied&thinsp;&#8212;&thinsp;but, ideally, this shouldn&#8217;t be necessary. To take passwords as an example, a response error might inform you that passwords are required to include a capital letter, a number, and a non-alphanumeric character. It may <em>appear</em> helpful for the message to tell you this&thinsp;&#8212;&thinsp;but in truth, the form should have already contained that&nbsp;information.</p>
<p>If you&#8217;re going to check data, you need to make a point to inform the user what data is required <em>before</em> they submit the form. With the <a href="http://www.joedolson.com/articles/2007/10/accessibility-and-usability-issues-with-ajax/">wonders of AJAX</a> available, it&#8217;s possible for a form to point out your errors as you make them: but you can&#8217;t count on the perceivability or availability of AJAX to your user, so this shouldn&#8217;t be the only means of gathering the&nbsp;information. </p>
<p>Information which should be made available to the user in advance includes any required formatting (999-123-4567); any required fields; any specifically forbidden information (profanity or <acronym title="HyperText Markup Language">HTML</acronym>); or any specific requirements or restrictions on length (passwords must be at least 8 characters, message a maximum of&nbsp;1000.) </p>
<p>Preventing errors before they are made is possibly one of the most important aspects of error&nbsp;management!</p>
<p><span class="dquo">&#8220;</span>Error management&#8221; is actually a bit of a misnomer, when you get right down to it. Above, I mentioned a scenario in which a form is submitted resulting in either a blank page or itself: while having the form re-appear following a user error is an absolute must, the blank page introduces an equally valuable scenario: the success&nbsp;response. </p>
<p>After all, &#8220;error messages&#8221; are merely a subset of all the responses a form might make&thinsp;&#8212;&thinsp;having a useful <em>success</em> message is equally&nbsp;important.</p>
<p>Obviously, a blank page is not a great success message. All it tells the user is that <em>something</em> happened&thinsp;&#8212;&thinsp;but what that was, who knows?  An effective success response should clearly state to the user what happened with their request.&nbsp;Specifically,</p>
<ul>
<li>What information they&nbsp;entered.</li>
<li>What information was&nbsp;sent.</li>
<li>Whether the script believes the information was sent&nbsp;successfully.</li>
<li>Whether they should expect any response, and&nbsp;when.</li>
<li>If a response is expected, what to do if they <em>don&#8217;t</em> receive it within the specified&nbsp;time.</li>
</ul>
<p>Whether the form is offered up to the user again following submission is going to depend on the context. Some forms (like a basic contact form) are primarily intended to be submitted only once in succession. It&#8217;s <em>preferable</em>, in my view, for these kinds of forms not to be displayed after submission. Other forms (like a photo uploader) may be expecting repeat use&thinsp;&#8212;&thinsp;it&#8217;s far more helpful to the user to allow them the option to upload a second image immediately following the first, without having to return to the&nbsp;form. </p>
<h4>What about server&nbsp;errors?</h4>
<p>Yes, obviously I haven&#8217;t addressed basic error messages such as a 404 &#8220;missing&#8221; error or other important messages from the server. This is a long article already, so I&#8217;ll be brief: provide a customized error message. Make sure that it includes pointers to key pages including the home page, site map, and search&nbsp;page.</p>
<h3 id="admin">Site&nbsp;Administration</h3>
<p>It may seem like long-term administration is a completely different issue from best practices in web development. After all, administration is pretty far removed from doing all the design, configuration, and development work you&#8217;ve worked hard&nbsp;on!</p>
<p>However, you also need to acknowledge that the vast majority of the lifespan of most projects is the time <em>after you&#8217;ve finished</em>. Whether you&#8217;re going to be maintaining the site yourself, passing it over to an assistant, or passing it off to the client, there are a lot of things you can do to help protect the&nbsp;site.</p>
<p>For yourself, you can establish a style guide for the site: a list of pre-established styles and elements, what they look like, how they&#8217;re used, etc. For myself, I use a custom piece of database-driven software which ties a database of elements and script fragments for a given site to the templates for that site. This allows me (or anybody else) to readily browse either for the element I want or the appearance I want and grab the template code I&nbsp;need.</p>
<p>This kind of a tool helps you remember what you&#8217;ve done, even if you&#8217;re looking at the site a year down the road&thinsp;&#8212;&thinsp;and it can provide a guide for your clients or assistants to know what is expected for a given&nbsp;site. </p>
<p>When a client is maintaining the site, the best thing you can offer them (in addition to a style guide) is education and documentation: teach them what they need to know. Document everything they need to do. There&#8217;s absolutely no way you can truly cover everything, but you can certainly&nbsp;try.</p>
<p>In the long run, your site belongs to your client, and there&#8217;s nothing you can do to prevent them from screwing it up. However, the more you&#8217;ve done to make sure they know how to do things <em>right</em>, the better the chances are that they&nbsp;will.</p>
<p class="supplemental">This concludes the <a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-1/">Best Practices in Web Development</a> series. Although much has not been covered, those subjects will just have to&nbsp;wait!
</p>
<p><strong><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/">Best Practices in Web Development: Part 5</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Best Practices in Web Development: Part 4</title>
		<link>http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/</link>
		<comments>http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/#comments</comments>
		<pubDate>Wed, 03 Sep 2008 13:05:18 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Semantics]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[best practices]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[universal design]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=278</guid>
		<description><![CDATA[

Part 1 (Contracts, Site Requirements,Information&#160;Architecture)
Part 2 (Hosting and&#160;Security)
Part 3 (Navigation,&#160;Scent)
Part 4 (Semantics, Structure vs. Design, Universal&#160;design)
Part 5 (Interaction, Errors, and&#160;Administration)


So, we&#8217;re finally getting to the meat of best practice web development. This is what people are usually thinking of when they ask about best practices in web design or web programming: actually building the web [...]<p><strong><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/">Best Practices in Web Development: Part 4</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<div class="aside">
<ul>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-1/">Part 1</a> (Contracts, Site Requirements,Information&nbsp;Architecture)</li>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-2/">Part 2</a> (Hosting and&nbsp;Security)</li>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/">Part 3</a> (Navigation,&nbsp;Scent)</li>
<li>Part 4 (Semantics, Structure vs. Design, Universal&nbsp;design)</li>
<li><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/">Part 5</a> (Interaction, Errors, and&nbsp;Administration)</li>
</ul>
</div>
<p>So, we&#8217;re finally getting to the meat of best practice web development. This is what people are usually thinking of when they ask about best practices in web design or web programming: actually building the web site&nbsp;itself. </p>
<p>Web design best practices encompass a wide range of needs&thinsp;&#8212;&thinsp;everything from the visual look of the design and use of well-chosen markup to the implementation of alternate styles for mobile devices or print shows up in this area. Covering it in one article is, perhaps, <em>ambitious</em>. Fortunately, I&#8217;ve written on parts of this subject frequently in the past, so I&#8217;ll be providing a lot of&nbsp;links.</p>
<p>It&#8217;s important for best practices to clearly separate the structure of your web design (the internal labeling and definition of page elements) from the design elements (the appearance of these elements.) In the <a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/">last article in this series</a>, I discussed a few key elements of design: not in terms of color, layout, or typography, but in terms of communicating&nbsp;information. </p>
<p>Best practices ultimately leads to creating a universal or accessible design, and this practice hinges on two key concepts: web semantics and the separation of your structure from your&nbsp;design.</p>
<h3 id="semantics">The Semantics of&nbsp;<acronym title="HyperText Markup Language">HTML</acronym></h3>
<p>You can argue for days (or years, if you take look at the search results for &#8220;<acronym title="HyperText Markup Language">HTML</acronym> semantics&#8221; or &#8220;web semantics&#8221;) on the detailed semantics of how <acronym title="HyperText Markup Language">HTML</acronym> tags should be used. I&#8217;ve written on this several times, myself, including articles discussing the <a href="http://www.joedolson.com/articles/2007/01/is-a-br-tag-semantic/">value of empty elements</a>, the age-old debate between <a href="http://www.joedolson.com/articles/2007/08/tables-or-css-layout/">table-based or <acronym title="Cascading Style Sheets">CSS</acronym> layout</a>, among <a href="http://www.joedolson.com/articles/category/web-standards/semantics/" rel="nofollow">many&nbsp;others</a>.</p>
<p>Semantics are very important. However, when you really look closely at <acronym title="HyperText Markup Language">HTML</acronym> you&#8217;ll inevitably notice that it&#8217;s not a strongly semantic language&thinsp;&#8212;&thinsp;the mark-up language doesn&#8217;t even come close to describing all possible uses of the tags. Many tags end up inevitably serving multiple&nbsp;functions. </p>
<p>So what web semantics really require is <em>interpretation</em>. The <a href="http://www.w3.org/TR/html4/"><acronym title="HyperText Markup Language">HTML</acronym> specification</a> provides one version of this interpretation, with suggested uses and meanings for elements. I&#8217;ve provided <a href="http://www.joedolson.com/articles/2008/04/guide-to-semantic-html/">my own interpretation</a>, as well. There are without question differences of opinion between those&nbsp;documents.</p>
<p>Obviously, you can argue very convincingly that any interpretation which disagrees explicitly with the <acronym title="HyperText Markup Language">HTML</acronym> 4 specification is <em>wrong</em>. Feel free. The core of best practices in web semantics is to use them and make decisions: it&#8217;s about thinking, not specific&nbsp;rigor.</p>
<p>We need to differentiate, however, between the <em>semantics of <acronym title="HyperText Markup Language">HTML</acronym></em> and <em>web semantics</em>. The semantics of <acronym title="HyperText Markup Language">HTML</acronym> are specific and defined: meaning as applied to the elements of <acronym title="HyperText Markup Language">HTML</acronym>. This is a finite list of items, although the complete definition of meaning is less so. Web semantics, on the other hand, describe the application of meaning on the web. This is a more global concept, and applies to all aspects of your web development&nbsp;process.</p>
<p>Web semantics includes everything used to add meaning to your site, providing better comprehension of code and content. Using describe class and ID naming conventions, descriptive function names in server or client-side scripting, or providing helpful comments within your code can all be considered points of web semantics. Best practices means providing a site which is meaningful in both the front and back&nbsp;end.</p>
<p>For specific suggestions about element use, refer to <a href="http://www.joedolson.com/articles/2008/04/guide-to-semantic-html/">my guide to semantic&nbsp;<acronym title="HyperText Markup Language">HTML</acronym></a>. </p>
<h3 id="structure">Separation of Structure from&nbsp;Design</h3>
<p>This is such an old question to harp on, but the importance of separating the organization of your page from the way it looks has never really&nbsp;flagged. </p>
<p>At a superficial level, it may appear that any markup you use has an effect on the appearance of your site. After all, there&#8217;s a clear visual difference between unstyled text marked as a heading and unstyled text marked as a blockquote! However, this visual difference only truly exists because the description &#8220;unstyled&#8221; is truly a&nbsp;misnomer. </p>
<p>If you disable stylesheets on a web site, you&#8217;ll see an extremely plain view of the site. It is not precisely &#8220;unstyled,&#8221; however&thinsp;&#8212;&thinsp;the design has simply been reduced to the default styles applied by the browser. In general, every browser has very similar defaults&thinsp;&#8212;&thinsp;but they&#8217;re not exactly the same. This is one of the reasons that it&#8217;s common to begin a stylesheet with a set of <a href="http://meyerweb.com/eric/thoughts/2007/05/01/reset-reloaded/">reset&nbsp;styles</a>. </p>
<p>If you conscientiously remove the browser default styling, it can make your own development easier: the slight differences between browsers can then be&nbsp;ignored.</p>
<p>The point is that you should never place anything in your markup which exists purely to create a different <em>appearance</em>. Attributes or tags which define font faces, colors, or styles are obvious problems&thinsp;&#8212;&thinsp;but the use of <code>small</code> or <code>strong</code> can also be problems. It&#8217;s not that you should never <em>use</em> <code>small</code>: but your use of the element shouldn&#8217;t <em>depend</em> on the text being rendered smaller than the surrounding&nbsp;text. </p>
<p>It might not happen, after&nbsp;all.</p>
<p>This is one of the key complaints about using tables for design layout. A table is designed to organize information by providing easy access to it in a matrix. The columns and rows visual appearance of a table is a formality used because it is an expected way to view this type of data&nbsp;organization. </p>
<p>When you take a table and use it to layout your design, you are violating the separation of structure from appearance: your design is now <em>dependent</em> on the default organization of tables. Should somebody attempt to re-organize your table (for example, to <a href="http://www.w3.org/WAI/References/Tablin/">linearize the information</a>,) they may encounter a radically illogical data&nbsp;structure. </p>
<h3 id="universal">Fundamentals of Universal Design for the&nbsp;Web</h3>
<p>The goal of universal design is very simple: make the information in your website available to every person or device which attempts to access it. This includes mobile devices, search engines, assistive technology, disabled users, and standard desktop&nbsp;browsers. </p>
<p>Universal design is where we bring everything above together. Attention to web semantics and a strong separation between structure and design give your web site at least a fighting chance of being universally usable. Obviously, you can still screw things&nbsp;up!</p>
<p>In the same way that <a href="http://www.joedolson.com/articles/2008/02/using-standards-doesnt-make-it-right/">following web standards doesn&#8217;t mean that you&#8217;ve made a web site accessible</a>, following best practices for general web development doesn&#8217;t mean that you&#8217;ve made a site which will be great on a hand-held device or with a screen&nbsp;reader. </p>
<p>Different devices (like people) have different special&nbsp;needs.</p>
<p>Creating a web site which is truly universal requires you to be aware of the special needs of every device you&#8217;re working for&thinsp;&#8212;&thinsp;but a few basic principles will get you 95% of the way&nbsp;there.</p>
<p>The <a href="http://www.design.ncsu.edu/cud/about_ud/udprincipleshtmlformat.html#top">Principles of Universal Design</a> provided by The Center for Universal Design at North Carolina State University are a good guideline for thinking about universal design. Although these principles are truly designed to be universal, in that they are intended to be applied well outside the realm of web development, the basic principles are sound in any&nbsp;context. </p>
<p>If you break the concept of universal design down to a single core issue, it could be that <em>dependencies</em> break <em>access</em>. Whenever you set up a situation in which a specific technical or design element must be present (a dependency on Javascript, a requirement that a control matches the description provided, or a requirement that a user must see a given image, for example,) then you are creating the potential for design failure. Avoid creating anything which <em>depends</em> anything out of your&nbsp;control.</p>
<p>Knowing what is and isn&#8217;t in your control (and, more importantly, what <em>seems</em> like it&#8217;s in your control, but really isn&#8217;t) is critical to best practices in web development. Acknowledging that although you can set the color of the text, you can neither guarantee that a visitor will be capable of seeing that color <em>nor</em> that the text will in fact <em>be</em> that color at the point that a visitor sees it is a critical step in understanding universal&nbsp;design.</p>
<p class="supplemental">
<a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/">Best Practices in Web Development: Part 5</a> (published on Friday, September 5th) covers interaction design, error management, and long-term site&nbsp;administration.
</p>
<p><strong><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/">Best Practices in Web Development: Part 4</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/feed/</wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>Best Practices in Web Development: Part 3</title>
		<link>http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/</link>
		<comments>http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 12:26:17 +0000</pubDate>
		<dc:creator>Joe Dolson</dc:creator>
				<category><![CDATA[Accessibility]]></category>
		<category><![CDATA[Usability]]></category>
		<category><![CDATA[Web Development]]></category>
		<category><![CDATA[navigation design]]></category>
		<category><![CDATA[noise]]></category>
		<category><![CDATA[scent]]></category>

		<guid isPermaLink="false">http://www.joedolson.com/articles/?p=276</guid>
		<description><![CDATA[

Part 1 (Contracts, Site Requirements,Information&#160;Architecture)
Part 2 (Hosting and&#160;Security)
Part 3 (Navigation,&#160;Scent)
Part 4 (Semantics, Structure vs. Design, Universal&#160;design)
Part 5 (Interaction, Errors, and&#160;Administration)


You could say that this part of the series is really breaking the concepts of information architecture down into components immediately relevant to web development. Practically speaking, I&#8217;m going to cover the necessities of navigation design, [...]<p><strong><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/">Best Practices in Web Development: Part 3</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web Design</small></p>
]]></description>
			<content:encoded><![CDATA[<div class="aside">
<ul>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-1/">Part 1</a> (Contracts, Site Requirements,Information&nbsp;Architecture)</li>
<li><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-2/">Part 2</a> (Hosting and&nbsp;Security)</li>
<li>Part 3 (Navigation,&nbsp;Scent)</li>
<li><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/">Part 4</a> (Semantics, Structure vs. Design, Universal&nbsp;design)</li>
<li><a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-5/">Part 5</a> (Interaction, Errors, and&nbsp;Administration)</li>
</ul>
</div>
<p>You could say that this part of the series is really breaking the concepts of information architecture down into components immediately relevant to web development. Practically speaking, I&#8217;m going to cover the necessities of navigation design, the concept of &#8220;scent of information&#8221; and the question of design &#8220;noise.&#8221; (Canonicalization was supposed to be covered in this part of the series, as well, but I&#8217;ve moved&nbsp;it.)</p>
<p>Navigation design is obvious: the primary organization of all aspects of site navigation. This is an area of web design and development where it&#8217;s very easy to go massively and devastatingly wrong&thinsp;&#8212;&thinsp;like most best practice concepts, avoiding the pitfalls is 90% of the&nbsp;battle. </p>
<p><span class="dquo">&#8220;</span>Scent&#8221; refers to information design which provides &#8220;clues&#8221; to help show the user where they are, where they&#8217;ve been, and how to get where they need to go. Planning your site should include careful planning to think about these&nbsp;processes.</p>
<p><span class="dquo">&#8220;</span>Noise&#8221; is a term I&#8217;m using to describe the opposite of &#8220;scent.&#8221; Noisy elements of design are those elements which detract or distract from a user&#8217;s needs. They may generate confusion or prevent users from following the path of action they&nbsp;need. </p>
<h3 id="navigation">Navigation&nbsp;Design</h3>
<p>Navigation design has two parts: organizing the documents and sections of your site into links, and generating the visual and interactive method which will be used to access that navigation. It&#8217;s important to do this in the correct order&thinsp;&#8212;&thinsp;and this is the point in the development process where you simply need to know the scope of content on the web&nbsp;site. </p>
<p>It&#8217;s neither necessary nor desirable to actually know every single item which will be on the site. In fact, it&#8217;s usually not even possible. A website should grow after it&#8217;s initial development, so you should always provision for the addition of future documents. What you need to know <em>now</em> is as much as possible about the documents which will definitely be on the&nbsp;site. </p>
<p>To get started, ask your clients for this&nbsp;information:</p>
<ul>
<li>A list of content&nbsp;categories,</li>
<li>A list of representative content titles and&nbsp;summaries,</li>
<li>A list of additional features which will require&nbsp;access.</li>
</ul>
<p>Ideally, you&#8217;ve already got a lot of this information from the contract phase. But, if not, now is the time to get&nbsp;it. </p>
<p>For the first steps in navigation design, you&#8217;re going to focus exclusively on the content and&nbsp;features. </p>
<p>The organizational needs will be different from site to site. Obviously, a site which is focused primarily around a specific tool will need to primarily concentrate on getting people to that tool. Text content, such as help files or related articles, will automatically be relegated to a secondary position in the navigation. In general, however, this article is dealing with text and content oriented sites: sites which need to communicate certain types of information to&nbsp;users.</p>
<p>A classic method for categorizing documents is to <a href="http://www.boxesandarrows.com/view/card_sorting_a_definitive_guide">perform a simple card sort</a>.  You can perform this test with as large or as small a test group as you feel comfortable with. Restrict users to people who have a reasonable chance of being able to use the information&thinsp;&#8212;&thinsp;you may not want to use your grandmother to sort documents on structural engineering. (Depends on <a href="http://www.dwforum.org/award.html">your grandmother</a>,&nbsp;naturally.)</p>
<p>Ultimately, you may want to perform two separate card sorts: an open sort (with no established groupings) and a closed sort (using the client&#8217;s requested groupings.) For the sake of brevity, I&#8217;m assuming that you&#8217;ve worked with the client to refine the requested&nbsp;categories.</p>
<p>The guidelines for the process are simple: write the document titles (and brief descriptions, if the title is ambiguous) on index cards. Give people a pile of cards (usually between 30 and 100), and ask them to sort them into groups of like items. This is an excellent way to gain insight into how potential users of the site might expect to find&nbsp;information. </p>
<p>A card sort certainly shouldn&#8217;t be your only method to find a logical navigation structure, but it will provide valuable clues concerning what might be expected by visitors. You should also realize that disagreement between sorters doesn&#8217;t mean that you need to pick one option: it may simply mean that additional lists of information using different sorting mechanisms may need to be&nbsp;available.</p>
<p>Your ultimate goal in sorting information is to avoid requiring users to look in more than one place: the apparent likelihood that a given document will be found in one category should always lean in one&nbsp;direction. </p>
<p>The second step is relatively simple: building and designing the navigation. Best practices pretty much insist on accessibility and the use of web standards to construct navigation. I&#8217;ve written an <a href="http://www.joedolson.com/accessible-navigation.php">extensive article on accessible navigation design already</a>, so I&#8217;m simply going to refer you to that article for this&nbsp;section.</p>
<h3 id="scent">Scent of&nbsp;Information</h3>
<p>Providing a strong scent of information is a good follow up to categorizing your information. Having spent all this time filing information away, I&#8217;m sure you noticed that some information just flat out belongs in more than one place. A classic example (for almost everything, actually) is the iPod. Is it computer equipment? Is it audio equipment? What about entertainment&nbsp;equipment? </p>
<p>Ideally, you want to provide enough information about your categories to help users visit the right category first&thinsp;&#8212;&thinsp;and not by using the site-cluttering cop-out of putting your items in all relevant&nbsp;categories. </p>
<h4>Seed your navigation with extra&nbsp;information</h4>
<p>When there&#8217;s a possibility of doubt, one of the first steps you can take is to add information which describes your category. Instead of just listing &#8220;Computers&#8221; in the navigation, say &#8220;Computer: Laptops, monitors, mice, keyboards.&#8221;  You can&#8217;t (and shouldn&#8217;t) list everything in the category, but providing a representative sample can help users target their navigation more&nbsp;accurately.</p>
<h4>Provide navigation to related&nbsp;information</h4>
<p>A second method you can use it to provide links to related information. When you have a site set up where there&#8217;s a possibility of confusion, you should be able to identify most of these potential problems in advance. Using the same example, you may want to provide a link to iPods and digital music players if somebody is browsing under sound cards or audio&nbsp;software.</p>
<h4>Use descriptive&nbsp;linking</h4>
<p>A link which tells you precisely what it links to is far more valuable than a generic link text. It&#8217;s more likely to attract the eye, more likely to result in an action by the user, and will help your users quickly target the <em>right</em>&nbsp;document. </p>
<p>It&#8217;s not just for accessibility that you want to avoid repetitive or meaningless link texts. From a usability or marketing perspective, the right words can make all the&nbsp;difference. </p>
<h4>Use meaningful trigger&nbsp;words</h4>
<p>What behavior do you want to encourage? When somebody writes &#8220;Click here,&#8221; they are obviously interested in the short term: they want a <em>click</em>. If somebody writes &#8220;Read &#8216;The biography of a whale&#8217; Now&#8221; they&#8217;re asking you to <em>read</em> the document. Similarly, using words like &#8220;Buy,&#8221; &#8220;Explore,&#8221; or &#8220;Hire,&#8221; you&#8217;re providing a specific, task-oriented clue within the text of the link. Because of this, the user knows better what to expect when they follow the link&thinsp;&#8212;&thinsp;and are more likely to follow the link they really want&nbsp;first.</p>
<p>Or, thinking persuasively, are more likely to <em>want</em> what you&#8217;re trying to offer. It goes both&nbsp;ways. </p>
<h3 id="noise">Design&nbsp;Noise</h3>
<p>On the opposite side of the coin from scent, we find noise. Bad information, information pollution, stink&thinsp;&#8212;&thinsp;whatever you might want to call it, the end result is the same. This is information which leads the user the <em>wrong&nbsp;way</em>.</p>
<h4>Identify your primary&nbsp;goal</h4>
<p>If you&#8217;re a sales-oriented site, the strongest scent should be provided to guide users to products and along the purchase path. You may want to provide a lot of essential and valuable information about your products, about your business, or about the industry you&#8217;re working in&thinsp;&#8212;&thinsp;but if information isn&#8217;t your primary business, you should let these parts of your site take <em>somewhat</em> of a back&nbsp;seat. </p>
<h4>Link to your documents accurately and&nbsp;understandably</h4>
<p>Make sure that whatever you&#8217;ve used to link to a page is <em>accurate</em>. If you&#8217;ve stated that an article contains certain information, or has a certain product on it&thinsp;&#8212;&thinsp;it bloody well better! This seems like it should be obvious, yet I can&#8217;t even begin to count the number of times I&#8217;ve found myself following a seemingly valuable link just to be stymied by the document&nbsp;itself. </p>
<p>Following a related logic, you should be careful to link the document in a manner which is readily understood. If you&#8217;re providing a tool for people to estimate what the salary for their desired job should be, don&#8217;t link it using &#8220;Proximal Salary/Earnings Indices by Region.&#8221; Instead, link to it saying &#8220;What should you earn where you live? Find out&nbsp;here!&#8221; </p>
<p>Using easy language may sometimes be less precise, but will almost always be more&nbsp;useful.</p>
<h4>Don&#8217;t try to give everybody everything at&nbsp;once!</h4>
<p>Too much information crammed into a finite space means only one thing: you don&#8217;t know what your users need. And as a result, your visitors probably only need one link&thinsp;&#8212;&thinsp;the back button in their&nbsp;browser. </p>
<p>The reason for information organization, at heart, is to reduce the problem of information overload. It&#8217;s certainly <em>possible</em> for people to find information given a page of 700 links, but is it an efficient way of working? No. Ultimately, it&#8217;s far faster to follow two or three links with a strong scent than to have the possibility of offering a single-click path to&nbsp;information. </p>
<h3>Additional&nbsp;Resources</h3>
<ul>
<li><a href="http://www.steptwo.com.au/papers/kmc_informationscent/">Information scent: helping people find the content they&nbsp;want</a></li>
<li><a href="http://www.useit.com/alertbox/20040802.html">Deceivingly Strong Information Scent Costs&nbsp;Sales</a></li>
<li><a href="http://www.boxesandarrows.com/view/card_sorting_a_definitive_guide">Card Sorting: A Definitive&nbsp;Guide</a></li>
</ul>
<p class="supplemental">
<a href="http://www.joedolson.com/articles/2008/09/best-practices-in-web-development-part-4/">Web Development Best Practices: Part 4</a> (published on Wednesday, September 3rd) covers semantics, separation of structure from content, and the fundamentals of universal design for the&nbsp;web.
</p>
<p><strong><a href="http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/">Best Practices in Web Development: Part 3</a></strong><br /><small>Copyright 2004&thinsp;&ndash;&thinsp;2010 Joseph C Dolson, Accessible Web&nbsp;Design</small></p>]]></content:encoded>
			<wfw:commentRss>http://www.joedolson.com/articles/2008/08/best-practices-in-web-development-part-3/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
