<?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>farfromfearless &#187; Developement</title>
	<atom:link href="http://www.farfromfearless.com/category/developement/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.farfromfearless.com</link>
	<description>Personal blog of Chris Murphy</description>
	<lastBuildDate>Thu, 23 Sep 2010 01:55:31 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0</generator>
		<item>
		<title>Enhancing The Previous &amp; Next Links in WordPress 3.0</title>
		<link>http://www.farfromfearless.com/2010/09/22/enhancing-the-previous-next-links-in-wordpress-3-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=enhancing-the-previous-next-links-in-wordpress-3-0</link>
		<comments>http://www.farfromfearless.com/2010/09/22/enhancing-the-previous-next-links-in-wordpress-3-0/#comments</comments>
		<pubDate>Wed, 22 Sep 2010 14:00:46 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Developement]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Themes]]></category>
		<category><![CDATA[current post]]></category>
		<category><![CDATA[get_adjacent_post]]></category>
		<category><![CDATA[next post]]></category>
		<category><![CDATA[previous post]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=598</guid>
		<description><![CDATA[The “previous post” and “next post” links that appear in your WordPress templates can be quite handy when navigating between posts, but for the most part the output of get_next_post_link() and get_previous_post_link() are quite limited.]]></description>
			<content:encoded><![CDATA[<p>Instead of going through all of the hassle to hack out new functionality to support an existing feature, we can rely on existing functionality within WordPress’ core to extend the feature. In this case, we can take advantage of WordPress’ underrated <em>get_adjacent_post()</em> function, which you can find in the link-template.php</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/2010/09/prev_next_post_lg.jpg"><img class="alignnone size-full wp-image-622" title="prev_next_post_lg" src="http://www.farfromfearless.com/wp-content/uploads/2010/09/prev_next_post_lg-e1285206822122.jpg" alt="Example of the featre enhancement in action." width="540" height="362" /></a></p>
<p><em><strong>Fig. 1</strong> The image above is an example of the feature enhancement in action.</em></p>
<h2>WordPress’ get_adjacent_post() Function</h2>
<p>The function, <em>get_adjacent_post()</em> has been around since WordPress 2.5, but despite it’s availability, I’ve seen a number of hacks that come in the form of bloated plug-in files and unnecessary SQL Queries (using WP_Query).</p>
<p>With all of the great upgrades that WordPress has received with the 3.0   release, it&#8217;s too bad that some of the core features didn&#8217;t receive   additional treatment&#8211;but then again, I suppose that an update to a  function like <em>get_adjacent_post()</em> wouldn&#8217;t make much sense and would likely break  backwards functionality (and not to mention that WordPress is intended  to be extensible.)</p>
<p>With that in mind, let&#8217;s take a look at how we can extend a core feature like <em>get_adjacent_post()</em>.</p>
<h2>The getPostNavigation() Function</h2>
<p>Using <em>get_adjacent_post()</em> we are able to retrieve the previous and next post easily, but the real benefit comes in the fact that we’re retrieving all of the data associated with that post: Post Title, Post Content, Post Excerpt, Post Permalink, etc.</p>
<p><strong>Note:</strong> There exists two other function calls that go unnoticed by the majority of theme developers: <em>get_previous_post()</em>, and <em>get_next_post()</em>. Both of these utility functions use <em>get_adjacent_post()</em>, but these are really just vanity methods for <em>get_adjacent_post()</em>&#8211;we want to go straight to the original method.</p>
<h3>Goals of this function:</h3>
<ol>
<li>Get the Previous, Next, and Current Post with one function call</li>
<li>Get a well-formatted unordered list</li>
<li>Extensibility</li>
</ol>
<pre class="brush: php;">
/**
 * Get either the current, previous or next post in an unordered list structure.
 * @param String $post_position The post position: &quot;previous&quot; = previous post, &quot;next&quot; = next post, &quot;current&quot; = current post.
 * @param Bool $showpermalink Show or hide the permalink in the post title (typically used only for the previous and next posts)
 * @param Array $classes An array of classes to be applied to the unordered list
 * @return string The previous or next post formatted in an unordered list that can be styled
 */
 function getPostNavigation( $post_position = 'previous', $showpermalink = false, $classes = array() )
 {
 try
 {
 $objPost;
 $classes[] = 'post-navi';
 switch( $post_position )
 {
 case 'next' :
 $objPost = get_adjacent_post( false, '', false );
 $classes[] = 'next-post';
 break;
 case 'current' :
 global $post;
 $objPost = $post;
 $classes[] = 'current-post';
 break;
 case 'previous' :
 default:
 $objPost = get_adjacent_post( false, '',true );
 $classes[] = 'prev-post';
 break;
 }

 if( empty( $objPost ) ) return;

 // The title with additional formatting applied
 // TODO: Apply your own formatting, truncation, etc.
$title        = htmlentities( $title );

 // An HTML safe string to be used with the tooltip
 $tooltip    = ( $post_position != 'current' ) ? &quot;View Post: &amp;quot;&quot; . $title . &quot;&amp;quot;&quot; : &quot;&amp;quot;&quot; . $title . &quot;&amp;quot;&quot;;

 // Standard elements, heading, permalink, and excerpt
 $heading    = ( $post_position != 'current' ) ? '&lt;a href=&quot;' . get_permalink( $objPost-&gt;ID ) . '&quot; title=&quot;' . $tooltip . '&quot;&gt;' . $title . '&lt;/a&gt;' : $title;
 $permalink    = '&lt;a href=&quot;' . get_permalink( $objPost-&gt;ID ) . '&quot; title=&quot;' . $tooltip . '&quot;&gt;Read More&lt;/a&gt;';
 $excerpt     = trim( strip_tags( $objPost-&gt;post_content ) ) ;

 // The formatted output
 $output     = &quot;&lt;ul class=\&quot;&quot; . implode(' ', $classes) . &quot;\&quot;&gt;\r\n&quot;;
 $output    .= &quot;&lt;li class=\&quot;post-navi-heading\&quot;&gt;{$heading}&lt;/li&gt;\r\n&quot;;
 $output    .= &quot;&lt;li class=\&quot;post-navi-excerpt\&quot;&gt;{$excerpt}&lt;/li&gt;\r\n&quot;;
 $output    .= ( $showpermalink == true ) ? &quot;&lt;li class=\&quot;post-navi-permalink\&quot;&gt;{$permalink}&lt;/li&gt;\r\n&quot; : '';
 $output    .= &quot;&lt;/ul&gt;\r\n&quot;;
 }
 catch( Exception $err )
 {
 throw new Exception( $err-&gt;getMessage() );
 }

 return $output;
 }
</pre>
<h3>Example Usage</h3>
<pre class="brush: php;">
if( function_exists( getPostNavigation ) )
 {
 $prev_post_ul = getPostNavigation( 'previous', true, array( 'your-custom-class', 'another-class', 'one-more-class' ) );
 $curr_post_ul = getPostNavigation( 'current', false, array( 'link-list', 'col', 'one-col' ) );
 $next_post_ul = getPostNavigation( 'next', true, array( 'link-list', 'col', 'one-col', 'last' ) );
 }

&lt;!-- SET: POST NAVIGATION --&gt;
 &lt;div&gt;
 &lt;?php echo $prev_post_ul; ?&gt;
 &lt;?php echo $curr_post_ul; ?&gt;
 &lt;?php echo $next_post_ul; ?&gt;
 &lt;/div&gt;
 &lt;!-- END: POST NAVIGATION --&gt;
</pre>
<p>Like the get_previous_post_link() and the get_next_post_link(), we can use the function’s output wherever we want in our template, giving us the flexibility to fit the output into simple or complex layouts.</p>
<h3>The Breakdown</h3>
<pre class="brush: php;">
 $objPost;
 $classes[] = 'post-navi';
 switch( $post_position )
 {
 case 'next' :
 $objPost = get_adjacent_post( false, '', false );
 $classes[] = 'next-post';
 break;
 case 'current' :
 global $post;
 $objPost = $post;
 $classes[] = 'current-post';
 break;
 case 'previous' :
 default:
 $objPost = get_adjacent_post( false, '',true );
 $classes[] = 'prev-post';
 break;
 }
</pre>
<p>All of the magic really happens in the Switch statement. It is here that we condition the <em>get_adjacent_post()</em> function to retrieve the previous and next post&#8211;but for the current post data, we simply use the readily available <strong>$post</strong> variable.</p>
<p><strong>Note:</strong> In order to use the <strong>$post</strong> variable in any function, it’s scope must be declared using the “<em>global</em>” keyword.</p>
<p>The Switch statement is also used to add three additional CSS classes to the unordered list that can be used for custom styling if you want to use the functions&#8217; defaults. These three classes allow for distinction amongst the expected output:</p>
<ol>
<li>next-post</li>
<li>prev-post</li>
<li>current-post</li>
</ol>
<h3>The Output</h3>
<p>The output itself is pretty straight-forward: we’re slugging various fields of the previous, next, or current post into an unordered list that we can style with CSS; here is an example:</p>
<pre class="brush: php;">
$output     = &quot;&lt;ul class=\&quot;&quot; . implode(' ', $classes) . &quot;\&quot;&gt;\r\n&quot;;
 $output    .= &quot;&lt;li class=\&quot;post-navi-heading\&quot;&gt;{$heading}&lt;/li&gt;\r\n&quot;;
 $output    .= &quot;&lt;li class=\&quot;post-navi-excerpt\&quot;&gt;{$excerpt}&lt;/li&gt;\r\n&quot;;
 $output    .= ( $showpermalink == true ) ? &quot;&lt;li class=\&quot;post-navi-permalink\&quot;&gt;{$permalink}&lt;/li&gt;\r\n&quot; : '';
 $output    .= &quot;&lt;/ul&gt;\r\n&quot;;
</pre>
<h2>Extending getPostNavigation()</h2>
<p>As usual, this function will need to be placed in your <strong>functions.php</strong> file, but you shouldn’t stop there—the output can be structured however you need it. Customization for your particular needs can be accomplished by simply replacing the html markup in the function with your own.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2010/09/22/enhancing-the-previous-next-links-in-wordpress-3-0/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>URL Token Replacement Techniques for WordPress 3.0</title>
		<link>http://www.farfromfearless.com/2010/09/07/url-token-replacement-techniques-for-wordpress-3-0/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=url-token-replacement-techniques-for-wordpress-3-0</link>
		<comments>http://www.farfromfearless.com/2010/09/07/url-token-replacement-techniques-for-wordpress-3-0/#comments</comments>
		<pubDate>Wed, 08 Sep 2010 01:12:27 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Developement]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Themes]]></category>
		<category><![CDATA[apply_filters]]></category>
		<category><![CDATA[Content Filters]]></category>
		<category><![CDATA[content_edit_pre]]></category>
		<category><![CDATA[content_save_pre]]></category>
		<category><![CDATA[get_the_content]]></category>
		<category><![CDATA[the_content]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=576</guid>
		<description><![CDATA[Automating the content migration process with WordPress as a CMS can often be a painful process, but with some simple techniques using WordPress' content filters and plug-in hooks, the process can be less cumbersome.]]></description>
			<content:encoded><![CDATA[<p>WordPress comes with many built-in features for working with Page and Post content, and in some cases WordPress’ feature sets are well suited to being used as a Content Management System (CMS) to power websites. But any good development workflow suffers from some common issues—in this case: content migration.</p>
<p>Generally speaking, if you’re using WordPress as a CMS (or any CMS really), you’re likely to have some sort of tiered development setup. Such a setup typically consists of a <strong>Development</strong>, <strong>Staging</strong>, and <strong>Production </strong>environment (servers—virtualized or otherwise), and with each of those environments will likely have a corresponding Database server like MySQL.</p>
<h2>The Issue</h2>
<p>A tiered development workflow typically requires that you promote changes in one database to another (upstream), e.g. Development to Staging to Production. In some cases the replication can be bi-directional (upstream and downstream), e.g. Production to Staging and Back to Production. This last case can be pretty rare, but it exists, and where a CMS is involved, replicating the database can be a chore unless you’ve done some serious work to automate the process.</p>
<p>Where WordPress is concerned, we run into issues when we migrate content from our Staging Server and onto our Production server.</p>
<h3>Here’s a Simple Illustration:</h3>
<p><strong>URL: http://localhost/mywordpress/</strong></p>
<pre class="brush: xml;">&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ut risus purus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. &lt;a href=&quot;http://localhost/mywordpress/2010/09/01/the-quick-brown-fox&quot;&gt;The quick brown fox jumps over the lazy dog&lt;/a&gt;. Integer iaculis augue non lorem fermentum ac vulputate odio convallis. Curabitur congue sem vitae ipsum tempor sagittis.&lt;/p&gt;</pre>
<p><strong>URL: http://www.stagingserver.com/mywordpress/</strong></p>
<pre class="brush: xml;">&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ut risus purus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. &lt;a href=&quot;http://localhost/mywordpress/2010/09/01/the-quick-brown-fox&quot;&gt;The quick brown fox jumps over the lazy dog&lt;/a&gt;. Integer iaculis augue non lorem fermentum ac vulputate odio convallis. Curabitur congue sem vitae ipsum tempor sagittis.&lt;/p&gt;</pre>
<p><strong>URL: http://www.productionserver.com/</strong></p>
<pre class="brush: xml;">&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit. Cras ut risus purus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. &lt;a href=&quot;http://localhost/mywordpress/2010/09/01/the-quick-brown-fox&quot;&gt;The quick brown fox jumps over the lazy dog&lt;/a&gt;. Integer iaculis augue non lorem fermentum ac vulputate odio convallis. Curabitur congue sem vitae ipsum tempor sagittis.&lt;/p&gt;</pre>
<p>Each instance of WordPress on the Development, Staging, and Production environments uses a replicated database. If you examine the links in each, you’ll see that each link is identical:</p>
<pre class="brush:xml">&lt;a href="http://localhost/mywordpress/2010/09/01/the-quick-brown-fox"&gt;…&lt;/a&gt;</pre>
<p>We’ve moved the content from one environment/database to the another, but the URIs in the content haven’t changed. That leaves us with our fundamental migration issue, and if you’ve been in such a situation, you’ll probably have taken the following approach to deal with it:</p>
<h3>Manually Updating The Database:</h3>
<p>In most cases, you’d likely run a Search &amp; Replace SQL statement that will modify all of the posts/pages/etc for you. Your Search &amp; Replace SQL might look something like this:</p>
<pre class="brush: sql;">
UPDATE wp_options SET option_value = REPLACE(option_value, &quot;localhost&quot;, &quot;www.stagingserver.com&quot;);
UPDATE wp_posts SET post_content = REPLACE(post_content, &quot;localhost&quot;, &quot;www.stagingserver.com&quot;);
UPDATE wp_posts SET post_content_filtered = REPLACE(post_content_filtered, &quot;localhost&quot;, &quot;www.stagingserver.com&quot;);
UPDATE wp_postmeta SET meta_value = REPLACE(meta_value, &quot;localhost&quot;, &quot;www.stagingserver.com&quot;);
</pre>
<p>With this approach you’d need to run this search and replace <strong>each time you migrate the database</strong> from your <em>localhost </em>to your <em>staging </em>platform.</p>
<p>What a pain.</p>
<h2>WordPress Content Filters to The Rescue</h2>
<p>To avoid all of the unnecessary hassle we need to dig a little deeper into some of the inner workings of WordPress. In this case, content filters.</p>
<p>WordPress comes with a number of built in filters that Plug-in developers can hook to enhance parts of WordPress’ core feature set. In fact, in a default setup, WordPress applies a number of filters to the content when you first save a draft; when you publish an article or page; and when you use features within the_loop().</p>
<h2>“Token” Replacement</h2>
<p>A token in the context of this article is simple a common placeholder string that can be easily referenced programmatically, and transformed/replaced with something else. As the term suggests, the “token” should be simple and easy to find in your html markup of your content.</p>
<p>The objective of this approach is to replace all of the instances of your site URL with that of a token, and do this in such a way that it is invisible to you or whomever is tasked with managing the content, e.g. set-it-and-forget-it.</p>
<p>Let’s begin.</p>
<h3>Step 1: Choosing a Token</h3>
<p>The first thing we need to do is to determine the format of our token. Here are some considerations:</p>
<ol>
<li>The token should be something that is unique in comparison to the surrounding content—meaning that if it was garbled in with html markup and other text, it would be easily recognizable.</li>
<li>The token should use only characters that are HTML safe—this excludes any special characters that might be transformed into HTML entities by WordPress’ other default content filters. There are ways to get around this, but that will be for you to discover.</li>
<li>The token that we determine should be stored as a reference in a globally accessible file, e.g. functions.php</li>
</ol>
<p>For the purposes of this article we will use the following as our token: <strong>[%URL%]</strong></p>
<h3>Step 2: The Token Replacement Functions</h3>
<pre class="brush: php;">
&lt;?php
$URL_TOKEN = '[%URL%]';
/**
* Find instances of the current domain and replace them with a token
* @param String $content - The orignal content
* @return String - The updated content with the token replacement in place of the site URL
*/
function f3_createDomainToken( $content )
{
	$domain = get_bloginfo('url');
	$token = $URL_TOKEN;

	$content = str_replace( $domain, $token, $content );

	return $content;
}

/**
* Find instances of the token and replace them with the current domain
* @param String $content - The orignal content
* @return String - The updated content with the site URL in place of the token
*/
function f3_replaceDomainToken( $content )
{
	$domain = get_bloginfo('url');
	$token = $URL_TOKEN;

	// Find instances of the token and replace them with the current domain
	$content = str_replace( $token, $domain, $content );

	return $content;
}
?&gt;
</pre>
<p>What we have with these two functions is a means to parse the content that is supplied to each one, and transform any initial references to your domains, e.g. “Site URL” into a token. Line 1 in the above code illustrates a constant that is accessible by each function and should be placed at the top of your <strong>functions.php</strong> file. The functions themselves will be to be placed in <strong>functions.php</strong> where you see fit.</p>
<h3>Step 3: The Content Filters, e.g. “Hooks”</h3>
<p>This last step is essential. In order for these functions to be of any benefit to you, they must be added to WordPress’ filter queue using the “add_filter()” method. You can use these functions independently rather than as filters, but you’ll only gain some marginal benefit, and it will require that you call the filters in your templates where you use the functions: <strong>the_content()</strong>, and <strong>get_the_content()</strong>.</p>
<p>What we want to do is ensure that when the_content() function is called in your template, the resulting output is already correctly formatted, e.g. your token has been replaced. Here are the hooks that you will need to use these functions effectively:</p>
<pre class="brush: php;">
&lt;?php
// DOMAIN REPLACEMENT FILTERS
add_filter( 'the_content',      'f3_replaceDomainToken', 11);
//add_filter( 'get_the_content',  'f3_replaceDomainToken', 11);
add_filter( 'content_edit_pre', 'f3_replaceDomainToken', 11);
add_filter( 'content_save_pre', 'f3_createDomainToken', 11);
add_filter( 'the_editor_content', 'f3_replaceDomainToken', 11);
?&gt;
</pre>
<p>The function “add_filter()” expects three parameters, two of which are required, and the last is optional. If you look at the example above, you can see that we’re using some of WordPress’ hooks:</p>
<pre class="brush: php;">
&lt;?php
the_content()
get_the_content()
content_edit_pre()
content_save_pre()
the_editor_content()
?&gt;
</pre>
<p>The first two you might already familiar with if you’ve done some template development, but the last three are ones that are primarily used by WordPress Plug-in Developers. What you probably don’t know is that all of what I’ve illustrated here can be easily wrapped into a simple WordPress plug-in. If you really consider how WordPress is built, you’ll also realize that <strong>functions.php</strong> is a very simple example of how a plug-in functions.</p>
<h4>Notes:</h4>
<ul>
<li>If you’re paying attention, you’ll notice that line 3 in the above code is commented out, this is because some plug-ins might already be applying filters to the output of get_the_content(), and you as a WordPress developer might want to do some other transformations on your content.</li>
<li>Line 6 is a rarely used (please correct me if I’m wrong) plug-in hook that’s used for plug-ins that introduce additional content fields into the normal WordPress editor.</li>
<li>You will still need to update the site url in the options  table (wp_options) when you migrate from one database/environment to another, but you  can use the first SQL statement I&#8217;ve provided in this article to handle  that.</li>
<li>Full automation of this process can be accomplished with some edits to the wp_config.php by defining a constant that will be automatically updated as you migrate from server to server; this constant will replace the reference to bloginfo(&#8216;url&#8217;) in the functions I&#8217;ve provided (I&#8217;m going to let you figure that one out).</li>
</ul>
<h2>Conclusion:</h2>
<p>Content migration is still going to be painful at times, and it doesn’t really matter if you’re using WordPress or some other setup (even your own); however, it doesn’t always have to be that way. What I’ve illustrated here is a means to mitigate some of that headache. Take some time to explore how WordPress&#8217; content filters work&#8211;you might be amazed at how much more control you actually have over your content and it&#8217;s formatting.</p>
<h3>References:</h3>
<ol>
<li>WordPress Codex: the_loop() <a title="WordPress Codex: the_loop()" href="http://codex.wordpress.org/The_Loop">explained</a></li>
<li>WordPress Codex: apply_filters() <a title="WordPress Codex: apply_filters() explained" href="http://codex.wordpress.org/Function_Reference/apply_filters">explained</a></li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2010/09/07/url-token-replacement-techniques-for-wordpress-3-0/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>How to Fix Your Broken CMS: Part 2</title>
		<link>http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-2/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-fix-your-broken-cms-part-2</link>
		<comments>http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-2/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 14:32:40 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Content Strategy]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Publication]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=502</guid>
		<description><![CDATA[Sometimes the "quick wins" on a project can turn out to be long-term losses. Has your CMS project turned into a win or loss for your organization? Perhaps it's time to take a step back and re-evaluate your CMS strategy or development roadmap.]]></description>
			<content:encoded><![CDATA[<div class="notice">
<p><strong>Author’s Note:</strong> Considering the subject matter and length of this particular article, I’ve decided to split it into two separate articles.</p>
</div>
<p><strong>Related Articles:</strong></p>
<ol>
<li><a title="How to Fix Your Broken CMS: Part 1" href="http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-1">How to Fix Your Broken CMS: Part 1</a></li>
<li><a title="How to Fix Your Broken CMS: Part 2" href="http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-2">How to Fix Your Broken CMS: Part 2</a></li>
</ol>
<h2>Background</h2>
<p>In <a title="How to Fix Your Broken CMS: Part 1" href="http://www.farfromfearless.com/2010/03/04/how-to-fix-your-broken-cms-part-1">Part 1</a> of this series, I wrote at length about the current state of CMS software in general, and proposed a dramatic shift in our attention from <em>features </em>to <em>user experience</em>. At the end of the article, I offered a possible direction in terms of how to build a better CMS, and how we might better fulfill end user expectations (needs vs. wants).</p>
<p>In Part 2 of this series, I’ll be addressing the elements of what I feel would make a truly effective CMS.</p>
<p>Read on…</p>
<h2>A Recipe For a Truly Effective CMS</h2>
<p>Rather than approach a CMS as the alpha and omega of managing content, we need to approach it fundamentally: as tools to support <em><strong>people </strong></em>(and their myriad flavours of an editorial process).</p>
<p>Keep it simple. Keep it lean. Keep it efficient.</p>
<h3>Ingredients</h3>
<p>We need a few ingredients:</p>
<ol>
<li>A system to facilitate the editorial workflow</li>
<li>A system to act as the delivery mechanism (loosely coupled with the presentation layer)</li>
<li>Enhanced user-profiles to determine access levels and the end user experience</li>
</ol>
<h3>Profiles</h3>
<p>Let’s begin with the last ingredient (the element that binds all others together): the user profile.</p>
<p>The fundamental need here is to deliver a user-experience designed for a wide range of end users without becoming homogenous, meaning that the interface with which an editor performs her job can differ dramatically from that of an content author.</p>
<p>Generally speaking, a single individual can act in one or all of the following capacities:</p>
<ol>
<li>The physical author of a piece of content</li>
<li>The reviewer of a body of content</li>
<li>The one delegated with the authority to promote content into another process</li>
</ol>
<p>Note: these are fairly general roles, and granular capabilities/responsibilities/access rights should be introduced to reflect the organization’s needs.</p>
<p>The goal of a profile is to allow users (and those governing the process) to determine their desired user-experience based on both their role in the workflow, including selecting or customizing the interface that is ideally suited for their job function.</p>
<p>Everything else can be considered excess unless it promotes efficiency or enables productivity.</p>
<p><strong>Example:</strong></p>
<p>For simplicity’s sake, let’s assume that we’re talking about a content author—we’ll use Karen McNally as our archetype—whose only responsibility is to <em>craft a piece of information</em> and then <em>promote it</em> into the workflow.</p>
<p>Karen’s profile grants her access to a collection of her work (material that is still considered a work-in-progress, e.g. a “draft”), which she can edit or revise as necessary. When the piece of content is crafted and ready for review, she promotes it into the workflow.</p>
<p>Karen Smith has now fulfilled her fundamental role and responsibility as a content author. It is now up to another person—Michael Bloor, our ‘editor’ archetype—to review and make suggestions that she can implement.</p>
<p>Michael will then review Karen’s recent draft, suggest changes, contribute to the subject matter, and later promote it back into the system where it is then promoted further into the production chain.</p>
<p><strong>What Karen likely sees in terms of an interface is a streamlined set of screens that:</strong></p>
<ul>
<li>Allows her to quickly access her work</li>
<li>Allows her to manipulate and edit her work, likely including suggestions for supporting material and media</li>
<li>Allows her to “check-in” her work into the editorial workflow</li>
</ul>
<p>In the example above, we know that Karen only needs a certain set of screens and features in order for her to fulfill her responsibility as a content author. At this point, the material is then subject to an editorial process that might repeat once or several times before it is then delegated to someone else in the workflow.</p>
<p>In her role, Karen has little interest in formatting for final presentation—that is someone else’s responsibility. She does care about ensuring some basic formatting to communicate the subject matter, and it’s likely that she does have an interest in providing other source material to support her work.</p>
<p><strong>As for Michael, he likely sees a set of of screens that:</strong></p>
<ul>
<li>Allows him to quickly access one or several drafts submitted to the editorial workflow</li>
<li>Allows him to make modifications and re-assign the draft back to the original author</li>
<li>Allows him to promote the draft into the production chain</li>
</ul>
<p>In Michael’s case, he has a narrow set of responsibilities; however, his profile provides him with similar screens as Karen along with a series of screens that she would not otherwise see. On top of this fundamental difference, Michael has enhanced privileges that allow him to promote content or delegate content for other systems/processes.</p>
<h3>The Delivery Mechanism</h3>
<p>It’s a fundamental truth that a website will undergo change at some point—it might not be today or tomorrow—but it will likely evolve either through the introduction of new content or other factors like a redesign.</p>
<p>In the case of a redesign, many aspects of a website are affected: the underlying architecture, the look and feel, and in all likely hood—the content.</p>
<p><strong>Considerations:</strong></p>
<ul>
<li>Most CMSs tend to be focused on short-term execution, e.g. getting a website developed and running</li>
<li>Most CMSs promote data-warehousing—a concept that is both dangerous in terms of potential liabilities for the organization, and inefficient in terms of productivity for the long-term users</li>
<li>Most CMSs are developer-centric and unfriendly to those who are not familiar with the developer’s philosophy around content management and the resulting methodology applied to the system in question</li>
</ul>
<p>What we’ve experienced are systems that are designed for short-terms success for a small group of users and long-term frustration for the intended users (Karen McNally and Michael Bloor in our previous example).</p>
<p>What we want is is a system that is still intended to facilitate the production of a website, but is a process that is <em>loosely coupled with the task of managing content</em>. This means that our once feature-bloated CMS should now be an efficient tool for <strong>developers</strong> and <strong>web-designers </strong>to execute the website’s look and feel and features without having to juggle data-entry at the same time.</p>
<p><strong>Essentials:</strong></p>
<ul>
<li>Integration with the editorial workflow</li>
<li>Light replication of data in the form of <em>content instances</em> that can be modified according to the rules of the presentation layer (the website)</li>
<li>A role-based interface for web-designers to execute the Information Architecture (IA) and Interaction Design (IxD) of the website, and apply presentation rules to content instances</li>
<li>A role-based interface for developers to visually access an manipulate data specifically related to the features and functionality of the website</li>
<li>An API for developers (font-end and back-end) to interact with content for enhanced presentation purposes or develop features for content dissemination</li>
</ul>
<p>The marketers behind most CMSs tend to advertise the ability to manage all of a site’s information in one place, but they forget that information does not begin and end with the CMS. Content needs to live on in a universally accessible and secure location and should in all likelihood be subject to both the organization’s <em><a title="Information Governance - Wikipedia" href="http://en.wikipedia.org/wiki/Information_governance">information governance</a></em> policies and <em><a title="Content Strategy - Kristina Halvorson, New Riders 2009" href="http://www.contentstrategy.com/">content strategy</a></em>.</p>
<p>Given the above, we must now assert that a website should not to be used as an organization’s information warehouse, and that the concept of a <em>content management system</em> is most definitely a misnomer.</p>
<p>The solution that manages the nuts and bolts of a website is a system designed to do exactly that (and perhaps a little bit more if you need it to), but it should not be responsible for the long-term management of content.</p>
<p>This now leaves us with answering the workflow issue.</p>
<h3>The Editorial Workflow</h3>
<p>The editorial workflow is a system designed to support the creation and governance of content. All of the objects that comprise content (subject matter, media, resources, etc) are managed and governed by this system.</p>
<p>We can expect that a system like this can get convoluted and complex very quickly, but let’s distil things down to essentials before we start thinking about the additional requirements that are needed to support the essentials.</p>
<p><strong>Essentials:</strong></p>
<ul>
<li>Integration with desktop systems/software (e.g. minimum: importing documents into the workflow; ideal: leveraging existing software like word processors to provide a familiar interface)</li>
<li>Version control and revision history to track the changes that are applied to a single unit of content</li>
<li>The ability to apply a strong taxonomy with support for folksonomy</li>
<li>The ability to link a unit of content with a collection of [supporting] source material (resource management)</li>
<li>The ability to promote a unit or collection of content from one user to another</li>
<li>Ensure access to the workflow is governed by user-profiles</li>
<li>Ensure that interfaces for the workflow customized according to roles and preferences</li>
<li>The ability to audit the collective content inventory (reporting)</li>
<li>The ability to provide data mappings</li>
</ul>
<p>The above list address both process and the need for flexibility for organizations that might have a strict or collaborative workflow.</p>
<p><strong>Some considerations:</strong></p>
<ul>
<li><strong>Not all content is created equal</strong>, meaning that while text is the easiest to manipulate and consume, the method of presentation for the subject matter is what people experience; organizations will produce content in many forms—text being the most common—and the workflow is there to track and move it along from one process to the next. Assembly and integration into the presentation layer should handled elsewhere, e.g. promoted to another process.</li>
<li><strong>The workflow overlays the repository and it’s complexity</strong>, meaning that while content is still created by people it needs to reside somewhere and in some mutable form—a database for all intents and purposes; however, that does not mean that the complexity of the database be reflected in the user-experience. Quite the opposite is needed.</li>
</ul>
<p>Sounds like a tall order? It’s not—the only thing that makes software complex is our unrealistic expectations. But we still need something to bridge the gap between the delivery mechanism and the editorial process.</p>
<h3>The Secret Sauce: Data-mapping (aka, our “bridge”)</h3>
<p>What is it?</p>
<p><a title="Data-mapping - Wikipedia" href="http://en.wikipedia.org/wiki/Data_mapping">Data mapping</a>* is the process of creating data element mappings between two distinct data models. Data mapping is used as a first step for a wide variety of data integration tasks including:</p>
<ul>
<li>Data transformation or data mediation between a data source and a destination</li>
<li>Identification of data relationships as part of data lineage analysis</li>
<li>Discovery of hidden sensitive data such as the last four digits social security number hidden in another user id as part of a data masking or de-identification project</li>
<li>Consolidation of multiple databases into a single data base and identifying redundant columns of data for consolidation or elimination</li>
</ul>
<p>* Source: <a title="Data Mapping - Wikipedia" href="http://en.wikipedia.org/wiki/Data_mapping">Wikipedia: Data Mapping</a></p>
<p>The point that we’re most interested in here is: <em>“Data transformation or data mediation between a data source and a destination”</em></p>
<p>What we want to do is map content that resides in the <em>editorial workflow</em> to areas in the <em>presentation layer</em> (the website templates, pages, parts, elements, what-have-you). This means that we are only referencing the source content, storing an <em>instance </em>of that content, and applying presentation rules derived from the presentation layer (the website).</p>
<p>Let me re-iterate that: <em>the intent is to avoid directly handling and manipulating the source material</em>.</p>
<p><strong>Further considerations:</strong></p>
<ul>
<li><strong>Instances of content are loosely-coupled</strong>, such that changes made to the source content do not necessarily affect the instance in the presentation layer until explicitly updated—we do this to preserve workflow and ensure governance</li>
<li><strong>Content changes are one-way</strong>, meaning that instances of content are just that—modification of the instances, such as formatting, do not necessarily affect the source content—we do this to maintain the integrity of the source content and ensure compliance with governance policies</li>
<li><strong>Instances are disposable</strong>, meaning that an instance of content might have a limited shelf-life; once decommissioned, the instance does not disappear completely. It still exists in it’s raw form in the editorial workflow</li>
</ul>
<p>The reason we implement data mapping is simple: A CMS is a <em>tactical system</em> and should be decoupled as much as possible from the workflow, which is an <em>operational system</em>.</p>
<h2>Effecting Change</h2>
<p>For the record, <em>this is why I think this approach would work</em>:</p>
<ol>
<li>The approach aligns with user’s needs (not wants)—we focus only on what the end user needs, and build only the features and systems that will help that end user be productive and efficient.</li>
<li>The approach bridges a fundamental gap between software and process—that is, it brings people back into the equation.</li>
<li>We are not re-inventing the wheel—that is to say that traditional models and workflows have continuously proven to work, and we can learn a lot from the hard lessons others have had to struggle through.</li>
</ol>
<p>I originally wrote this segment of the article to reflect the top <em>three reasons why this approach would work</em>. Instead, I changed my mind half-way through to reflect the crux of my argument: <strong>Content begins with <em>people </em>and ends with <em>people</em>.</strong></p>
<p>That is the single fundamental that we need to understand.</p>
<p>I wish I could simply say that the only reason why this approach would work is that, “<em>We need it to,” </em>but that would be pure fantasy. In the real world we’re faced with an infuriating mess of business requirements, politics, and budget constraints.</p>
<p>If we’re going to effect change, we need to build an effective business case that brings people back into focus, and only you—yes, you—can do that. If you’re a consumer, developer, or in a position to make these kinds of critical decisions, you have an opportunity (and responsibility to yourself and the people who work with you) to choose a better way.</p>
<h2>What’s Left?</h2>
<p>I’ll round this off with a challenge to the industry and to consumers. My hope is that someone with enough patience to have read through this rather long-winded series of articles, will embrace the fundamentals and concepts proposed here and evangelize them.</p>
<h3>A Message for CMS Developers &amp; Marketers</h3>
<p>I am not alone in feeling that software falls short of our expectations when it comes to managing content; after all, we see content published everyday and in all manner of forms.</p>
<p>It should not be this painful.</p>
<p>As a response to the <a title="CMS Matrix" href="http://www.cmsmatrix.org/">overwhelming volume of poor implementations of content management software currently being marketed</a>, I say this:</p>
<p>Forget the bloated features. Forget about development paths and methodologies; spare us the complexity. The act of managing content should not be obfuscated by deep click-paths or radical dependencies upon development skills or fanatic devotion to technology—it should begin and end with the end user (we, your <em>true customers</em>) in mind.</p>
<p>We want software that helps us do our jobs better, not by imposing what <em>you</em> feel should be our workflow and methodology—we’ll determine that, thank you very much—but by supporting our processes with tools designed to promote efficiency and with productivity in mind.</p>
<h3>A Message for CMS Users</h3>
<p>We <em>are</em> part of the problem and we need to make a full stop. We need to re-assess our current expectations of a CMS are and what is realistic.</p>
<p>Forget the marketing crap. You’ve been misled.</p>
<p>Your CMS is broken. You know it. I know it. But does your company’s leadership—the decision-makers who bought into the CMS know it? Does your IT group resent you for having to do your job on top of dealing with their own?</p>
<p>You need to speak up.</p>
<p>You need to find a way to <em>clearly articulate </em>why your CMS is broken, and influence your decision makers to move in the right direction: not by wasting more time and money on trying to fix what was broken from the beginning, but by stepping back and re-evaluating expectations.</p>
<p>You know that you hate wasting time and feeling incompetent and frustrated—its especially frustrating when you see it done so well in other forms. You want <em><span style="text-decoration: underline;">that</span></em>. And by ‘<em>that</em>’ you mean the process(es) that help traditional media get their content from concept to publication.</p>
<p>Adopting a better approach begins with knowing what you really need and tempering your expectations with pragmatism. You need to build a compelling business case for change.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-2/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How to Fix Your Broken CMS: Part 1</title>
		<link>http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-1/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-fix-your-broken-cms-part-1</link>
		<comments>http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-1/#comments</comments>
		<pubDate>Fri, 05 Mar 2010 14:30:35 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Content Management]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[User Experience]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[Content Strategy]]></category>
		<category><![CDATA[Process]]></category>
		<category><![CDATA[Publication]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=503</guid>
		<description><![CDATA[Are you or your organization considering implementing a CMS? Do you have one in place already? Before you move ahead with your CMS project, you may want to take a few minutes to consider your expectations of a CMS before you commit your resources to the project.]]></description>
			<content:encoded><![CDATA[<div class="notice">
<p><strong>Author’s Note:</strong> Considering the subject matter and length of this particular article, I’ve decided to split it into two separate articles.</p>
</div>
<p><strong>Related Articles:</strong></p>
<ol>
<li><a title="How to Fix Your Broken CMS: Part 1" href="http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-1">How to Fix Your Broken CMS: Part 1</a></li>
<li><a title="How to Fix Your Broken CMS: Part 2" href="http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-2">How to Fix Your Broken CMS: Part 2</a></li>
</ol>
<p>In recent weeks I’ve been fielding a number of questions from prospective clients and visitors to my site regarding criterion for selecting the right CMS for their website. More often than not, I tend to direct them to an article I wrote previously on this particular subject: <a title="Top 3 Myths of Content Management Systems" href="http://www.farfromfearless.com/2009/02/06/top-3-myths-of-content-management-systems/">Top 3 Myths of Content Management Systems &#8211; Feb. 6th, 2009</a></p>
<p>The article offers some recommendations on selecting the right CMS for your organization, and some insights into common myths surrounding CMSs in general; however, the article does not necessarily provide the desired criterion for determining what makes a good CMS (or not).</p>
<p>The reality is that they are all pretty much the same—big (and getting bigger), feature-bloated, and a serious impediment for efficiency.</p>
<p>In short: your CMS can most certainly be considered a serious productivity killer.</p>
<p>From my perspective, the issues I’ve mentioned above stem from a series of false expectations on the part of CMS consumers that exploited by CMS developers by and large.</p>
<p>Read on…</p>
<h2>Background</h2>
<p>In my previous article I ranked the following as the <em>number one</em> myth surrounding CMSs:</p>
<blockquote><p>“Myth No. 1: A CMS Should Manage <em>Everything</em>”</p></blockquote>
<p>The statement asserts what I feel to be one of the most misleading notions of CMSs—the ability of a single software solution to <em>manage every aspect</em> of a website. After further consideration on this particular myth’s origins, I’ve come to realize that most of this stems from aggressive and misleading software marketing. And we—the consumers—are partially to blame for this.</p>
<p>Why?</p>
<p>For some absurd reason, we have this strange notion that a <em>single solution</em> is all we need, and in response, software vendors develop and market to that notion. The current market is saturated by systems both open-source and licensed and all of them tend to suffer from the same problem: feature-bloating.</p>
<p>Feature-boating is one of the tell-tale signs—to me—that a solution is trying to be too many things for too many people. The solution in question is trying hard to manage too many things when really it should only manage a handful of tasks or better: support a well thought out workflow that is tailored to the organization.</p>
<p>It seems to me that the software vendors—CMS developers in this case—tend to forget the end user and <em>their experience</em>.</p>
<h3>The Tired Debate(s)</h3>
<p>There are several ongoing debates about the merits and flaws of content management systems and content management in general. Chief amongst these debates are the following:</p>
<ul>
<li>Content Management Systems are for IT <em>only</em>:<br />
The notion of managing the assets and objects of a website are the sole responsibility of IT for the simple fact that it is seen as a <strong>technical task</strong> and not an <strong>operational responsibility</strong>.</li>
<li><em>Distribute</em> the responsibility of managing content:<br />
The notion of <strong>decentralizing</strong> content management and enabling “content owners”—those seen to be subject matter experts or authors—to take responsibility of conceptualizing and publishing their content.</li>
</ul>
<p>These are diametrically opposing views serve to illustrate the chasm dividing opinion as to how to circumvent the issue of poorly implemented CMSs. There are strong advocates of better practices and better approaches to managing content, with some strong arguments and <a title="Why content management fails - adaptive path - April 1, 2004" href="http://www.adaptivepath.com/ideas/essays/archives/000315.php">proposals</a> in favour of better processes.</p>
<h3>The Perspective</h3>
<p>For the most part these debates only touch the surface of the issue. The typical approach/solution is to look at the the type and makeup of the organization, its stakeholders, and their particular roles/responsibilities as it applies to the website’s business requirements. At that point, whomever is in charge of making the ‘big decision’ then selects a solution with enough features to address 80-90% of these business requirements.</p>
<p>The selection of a CMS is almost as politically driven as the content that it is supposed to manage.</p>
<p>The resulting solutions places the organization back into the same vicious cycle created by lack of infrastructure, inhuman methodologies, and an understandable fear of technology. As a result, expectations are not met and the organization falls prey to its old habits, falling back into old patterns.</p>
<p>And the familiar debate begins anew.</p>
<h2>A Different Approach to The Problem</h2>
<p>What if we’re looking at the issue from the wrong perspective? What if it’s not enough to simply circumvent the issue with more systems and software?</p>
<p>It seems to me that given the emphasis on trying to become software agnostic by re-focusing on process alone, or attempting to become software-gnostic by relying exclusively on the software, we overlook the fundamental problem: <em>the software we choose is still broken</em>.</p>
<p>What we should be doing is focus on the following:</p>
<ol>
<li><strong>A sound editorial process</strong>—a tailored (read: organization specific) workflow for getting content from concept to creation and eventually online.</li>
<li><strong>A better understanding of what is content vs. resources</strong>—the difference between the subject matter of a website and the assets and objects that help to communicate the subject matter.</li>
<li><strong>A shift in software development from <em>Features</em> to <em>User Experience informed by Content Strategy</em></strong>—a fundamental movement by software vendors to move away from creating <em>yet-another-CMS-with-identical-features-as-it’s-predecessors</em> (accepting that the market <em>will</em> buy into software that addresses a fundamental <em>need</em> rather than a <em>perceived</em> notion).</li>
</ol>
<p>The last two points—previously mentioned—are perhaps the two most underappreciated facets of building a better solution.</p>
<h2>Resources vs. Content</h2>
<p>In 2005 <a title="Adam Mathes" href="http://www.adammathes.com/">Adam Mathes</a> published an interesting paper titled, “<a title="Source vs. Resource Ontology - Adam Mathes, 2005" href="http://www.adammathes.com/academic/krfo/sourceresource.html">Source vs. Resource Ontology</a>”. In his paper, Mathes attempts to present a better definition of <em>resources</em> in the context of electronic documents on the web.</p>
<p>There are some interesting insights in his work, and I particularly appreciate his pragmatic view of what resources are perceived to be in the real world.</p>
<blockquote><p>A significant issue is that even pages we often refer to as being static are not in a strict sense, static, complicating things. &#8220;Small&#8221; edits over time, for example spelling corrections, change the resource content depending on your perspective. In many cases a &#8220;base&#8221; of static content is surrounded by dynamic content. For example, a news article that contains advertising. The &#8220;article&#8221; in one sense doesn&#8217;t change, but it is a dynamic resource in an important sense as the advertisements change. Other examples of small amounts of dynamic content in generally static resource include having the current day and time displayed on a page, even if the rest of the page is unchanged. <cite>Adam Mathes, 2005</cite></p></blockquote>
<p>This brings me to my point: we’ve been led to believe—through pervasive feature-focused marketing—that CMSs are able to effectively manage all aspects, assets, and objects of a website, e.g. “the content”. Resource are not <span style="text-decoration: underline;"><em>Content</em></span>. Resources are <em><span style="text-decoration: underline;">resources</span></em>, and a CMS is little better than a crippled operating system sitting on top of a very complex database.</p>
<p>“Content” in the context of a CMS is both erroneous and problematic. It is erroneous for the fact that the fundamental experience of web is still text-based, and this is evidenced by:</p>
<ol>
<li>Continued emphasis on producing text-based content first and media later;</li>
<li>Reliance on text-based search</li>
<li>Ease of access</li>
</ol>
<p>The notion is problematic for the following reasons:</p>
<ol>
<li>Content is abstracted to the point that a single piece of information cannot be distinguished from another by the fact that the “system” sees all as being equal. And often we see CMSs without strong implementations of a Taxonomy or Folksonomy solution to give the resources any meaning.<br />
<strong> </strong><strong>Note:</strong> abstraction is necessary where software is concerned—after all, defining meaning and purpose is a human’s task and not the sole province of the the software; however, you still need your software to support that fundamental task.</li>
<li>As we incorporate more resources to communicate the subject matter of our content, the software intended to manage the resources requires a proportionate amount of systems or features to “connect-the-dots”—meaning that a a software’s complexity can be directly linked to the degree of abstraction as previously described. What we end up with is more “power tools for developers” and less productivity for those responsible for the long-term management of content (read: real people).<br />
Victor Lombardi’s article on Boxes and Arrows is an excellent resource that presents a good case for <a title="Managing the Complexity of Content Management Systems - Victor Lombardi, 2004/02/09" href="http://www.boxesandarrows.com/view/managing_the_complexity_of_content_management">managing the complexity of content management systems</a>.</li>
<li>CMSs emerge on the market with nearly identical features and with only small variations on their approach—and yet again, we still experience the emphasis on short-term development and less on long-term strategy and governance.</li>
</ol>
<h2>Emphasise “User Experience &amp; Content Strategy” vs. “Software Features”</h2>
<p>So far, I’ve made reference to several sources that go back as far as 2004—what that simply indicates is that serious issues with CMSs are not an emerging trend. They are in my observation, a continuing trend. And we continue to support that trend.</p>
<p>We the consumers—being a fundamental contributor to the problem of CMSs—have made it acceptable for software vendors to saturate the market with products that miss the mark completely when it comes to addressing a fundamental aspect of content management: <strong>Content begins with <em>people</em> and ends with <em>people</em>.</strong></p>
<h3>The Impact of Poor CMS implementations</h3>
<p>If I am to sum up the impact of a poor CMS implementation it would be, quite simply: <strong>Frustration</strong> and <strong>Abandonment</strong>.</p>
<p>Both <a title="In Defense of the CMS - Erin Kissane 2010" href="http://incisive.nu/2010/in-defense-of-the-cms/">Erin Kissane</a>, and <a title="Stop Letting People Use Your CMS - Jeff Cram, 2010" href="http://www.cmsmyth.com/2010/02/stop-letting-people-use-your-cms/">Jeff Cram</a> blogged about their particular frustrations and perspectives on CMSs and CMS implementations and their impacts on the organization. What’s interesting in both articles is that we see the continuing trend of the CMS getting in the way of efficiency and productivity. While Cram’s article nicely illustrates the frustrations of a poor CMS implementation (are there any good ones?), Kissane urges us to refocus on workflow.</p>
<blockquote><p>…Create a workflow that works for your organization. Make sure your CMS supports that workflow. <cite>Erin Kissane</cite></p></blockquote>
<p>Users don’t care about the technology; they take it for granted that the technology will be there to support their jobs, but the sad reality is that the technology gets in the way. Again.</p>
<p>What users do care about is their <em>experience</em> with the CMS. Was it a good experience? Was it a bad experience? These are questions that influence decisions as to whether or not they will repeat the experience or abandon it.</p>
<p>When we talk about “user experience” in the context of a CMS, we’re talking about aspects like productivity, efficiency, and overall comfort level with the system in question. It is pretty clear to me that the vast majority of CMS developers take it for granted that their particular methodology of working with content (ahem, <em>resources</em>) is The Way To Go with little consideration for reality. And reality in this case is the end-user’s experience.</p>
<h3>On Software Features</h3>
<p>Software developers have proven that their ability to build pretty much anything in terms of systems to facilitate getting data into and out of a database. The feature lists of many of the available CMSs alone are enough to illustrate that point. But features alone do not make one CMS better than the next.</p>
<p>Unfortunately for the rest of us, those feature-bloated systems fall short in fulfilling expectations—one expectation in particular is that:<em> I as a subject matter expert or content author should be able contribute to the creation of a body of information, without getting lost in the nuts and bolts of my CMS or without fear of liability (read: breaking the system).</em></p>
<p>Packing more features into the CMS compounds the issue.<em> </em>Stop. Take a good look at the audience—the <em><strong>people</strong></em>—who end up with the task of actually using the CMS after the development team has implemented it.</p>
<p>When it comes to audiences, it doesn’t matter if it’s an individual, a small business, or an enterprise-level organization that is using the CMS—they all have at least one thing in common: the end users are <em><strong>people</strong> </em>who have jobs to do, not a heck of a lot of time to do it, and likely don’t have the patience to tackle the learning curb for that nifty new Cadillac of CMS [that is supposed to make their lives easier].</p>
<p>And when it comes to enterprise—there’s just a whole heck of a lot more of the same folks who share those same traits.</p>
<h3>On Content Strategy</h3>
<p>When it comes to the user experience with Content Management Systems, it has become increasingly difficult to discuss the topic without bringing <em><strong>Content Strategy</strong></em> into the conversation. And for good reason.</p>
<p>You cannot effectively implement a CMS solution without the Content Strategy to inform its use or role in the process.</p>
<p>There are some refreshing forward-thinkers out there like <a title="Kristina Halvorson - Brain Traffic" href="http://www.braintraffic.com/our-people/kristina-halvorson/">Kristina Halvorson</a>, who make a compelling case for the necessity of a Content Strategy to help organizations effectively define and identify their priorities for content, and to teach better/pragmatic ways of approaching <a title="Content Strategy for the web - Kristina Halvorson, New Riders 2009" href="http://www.contentstrategy.com/">content for the web</a>. In her book, Halvorson addresses the concept of a strong workflow to audit, capture, and produce better content through several phases.</p>
<p>What is compelling about her argument is that it is once again focused on <strong><em>people</em></strong>, not software.</p>
<p>Halvorson’s book, <em>Content Strategy for the Web</em>, does not cover—in full—CMS strategy (Software selection, design, and implementation)*</p>
<p class="small">* Content Strategy for the Web, Kristina Halvorson, 2010, <em>“What this Book Is Not”</em></p>
<h2>Fundamentals First</h2>
<p>Before we can start to improve the software we must also examine other models that have implemented a solid combination of software and process to provide a productive and efficient workflow that, well, works.</p>
<p><strong>Case Study: The Traditional Editorial Process (aka Publication Production):</strong></p>
<p>In an traditional news publication, the responsibility of conceptualizing/determining what is news worthy is left in the hands of the editors and may also be subject to a schedule [in the case of features].</p>
<p>It is the responsibility of the writing staff to develop the stories and craft them into something appropriate for the readership. Stories are then subject to editorial review and approvals, after which, it is promoted to the production cycle.</p>
<p>It is the responsibility of the production team to format the content into a presentable form—ready for mass consumption.</p>
<p>In the above example, we might see a single story evolve from concept to creation, and further evolution through review, contribution, and editing until it’s ready for publication. This is one flavour of the traditional editorial process, and may be present in more intricate or rudimentary forms in other organizations.</p>
<p><strong>What’s notable about this example:</strong></p>
<ul>
<li>A single story goes through a process and is handled by more than just one person (editorial process)</li>
<li>A single story is always subject to a form of governance (editorial responsibility)</li>
<li>The resulting story is then <em>delegated to another process</em> that shapes it according to the requirements of the medium (presentation)</li>
<li>The system described above is a collection of several processes—the system of <strong><em>Publication Production</em></strong>.</li>
</ul>
<p>What is still amazing to me is the fact that despite the evolution of software and the emergence of technology, <em>the editorial process is still relevant</em>. And they’ve been doing this every single day for decades without pause.</p>
<p><strong>That begs the question:</strong> why—with all of the technology and knowledge at our disposal—are the content management systems unable to effectively replicate the efficiency and scalability of a traditional publication system?</p>
<p><strong>The answer:</strong> software is the impediment—we the consumers and developers—expect software to do anything and everything with our content, forgetting that first and foremost that <strong>content begins with <em>people</em> and ends with <em>people</em>.</strong></p>
<p>What we want is a solution (or set of solutions) that enables <strong><em>people</em></strong> to contribute to an organization’s <strong><em>collective knowledge</em></strong>, and ensure that the responsibility of disseminating content is left in the hands of <strong><em>people</em></strong> who [should] know where it goes and how best to present it.</p>
<h2>A Little About the End Users</h2>
<p>We need to recognize a few things about the typical end user:</p>
<ol>
<li>Software developers have proven—<em>ad nauseum—</em>their ability to manipulate data in all kinds of interesting ways—the typical end user <strong><span style="text-decoration: underline;"><em>doesn’t care</em></span></strong>.</li>
<li>The typical end user <strong><span style="text-decoration: underline;"><em>doesn’t care</em></span></strong> about the fact that your CMS uses stored procedures or that you’re using ORM for database modeling.</li>
<li>The typical end user <strong><span style="text-decoration: underline;"><em>doesn’t care</em></span></strong> a wit about the technical marvels you—the software developer—have pulled off in order to make your CMS function the way it does.</li>
<li>The typical end <strong><span style="text-decoration: underline;"><em>user is concerned largely</em></span></strong> with the fact that they have a job to do and very little time to do it, but instead are starring dumbfounded at a screen loaded with all kinds of strange and confusing doodads that require a user-manuals thick enough to break windows.</li>
<li>Lastly, [most] <strong><em><span style="text-decoration: underline;">people care about people</span></em></strong>—human interaction is essential in organizations, and the reason workflows, work, is due to human interaction that drives the workflow.</li>
</ol>
<h3>Considerations</h3>
<p>This leaves us with a fundamental question to answer:</p>
<p><strong>Q: </strong>If the goal is to de-emphasise <em>feature development</em> and emphasise developing <em>better user-experiences </em>for the end user, how do we do that?</p>
<p><strong>A:</strong> We start by <em>clearly establishing expectations (wants vs. needs) </em>of what a CMS is and what it should do for us—the end users, and stop letting the software dictate our limitations.</p>
<h2>A Unifying Concept</h2>
<p>All of this talk about state-of-the-market and fundamentals is all well and good, but putting it to practice—truly developing and empowering CMS—is another thing altogether.</p>
<p>What we need is a unifying concept: the flux-capacitor to transcend the barrier of… well, you get the picture.</p>
<p><strong>What this means is:</strong></p>
<ol>
<li>If we’re going to start with the user, we need to ensure we address the end user’s fundamental expectations by providing an experience that is designed for <em>them, </em>and not a homogenized user experience that is meaningless—one size does not fit all.</li>
<li>Content should not be managed in a silo but as part of a <em>collaborative workflow</em>—informed by strategy*, regulated through governance, and supported by technology.</li>
<li>The system should <em>not enforce workflow </em>through strict methodology or present technical barriers but provide <em>flexibility</em>—allowing greater access to the process/system to effect productivity and promote efficiency.<strong> </strong></li>
</ol>
<p><strong>* I</strong> wrote earlier about the necessity of a CMS being driven by  strategy—forgive the double-speak—but when I talk about strategy in the  context of a CMS, I do mean both the Operational Strategy (the workflow,  logistics, etc) and the Content Strategy (the heart and soul of  Content).</p>
<p><strong>Let’s summarize what we’ve been talking about so far into a set of actionable principles:</strong></p>
<ol>
<li>A CMS should not be the start-point and end-point of a content creation process (the editorial workflow), in fact managing content should be considered an on-going process.</li>
<li>A CMS should be a system that allows <em>instances </em>of content to be formatted and manipulated according to the requirements of the presentation layer (the website). Instances by nature can be disposable.</li>
<li>A CMS should be—at the very least—a <em><strong>set</strong></em> of <em>loosely coupled systems</em>: the first to facilitate the editorial workflow; and the second to facilitate production/publication for the presentation layer</li>
</ol>
<p>With these concepts in mind, let’s focus on what’s needed executing the concept…</p>
<p><em>Cont’d,</em> <a title="How to Fix Your Broken CMS: Part 2" href="http://www.farfromfearless.com/2010/03/04/how-to-fix-your-broken-cms-part-2">How to Fix Your Broken CMS: Part 2</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2010/03/05/how-to-fix-your-broken-cms-part-1/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Out with the Old and in with Something Dramatically Different.</title>
		<link>http://www.farfromfearless.com/2009/04/06/out-with-the-old-and-in-with-something-dramatically-different/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=out-with-the-old-and-in-with-something-dramatically-different</link>
		<comments>http://www.farfromfearless.com/2009/04/06/out-with-the-old-and-in-with-something-dramatically-different/#comments</comments>
		<pubDate>Mon, 06 Apr 2009 13:00:00 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[WordPress Themes]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=399</guid>
		<description><![CDATA[As some of you may have noticed by now, I’ve updated farfromfearless. I suppose “update” is a bit of an understatement. If you’re reading this post, it’ll be in the context of a dramatically new theme and structure. Change is good. What’s New? A number of things have changed over the past few months &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p>As some of you may have noticed by now, I’ve updated <strong>farfromfearless</strong>. I suppose “update” is a bit of an understatement. If you’re reading this post, it’ll be in the context of a dramatically new theme and structure.</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-3.jpg"><img style="display: inline" title="WordPress Theme - Dusk - About" src="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-3-thumb.jpg" alt="WordPress Theme - Dusk - About" width="550" height="397" /></a></p>
<p>Change is good.</p>
<h2>What’s New?</h2>
<p>A number of things have changed over the past few months &#8212; my current circumstances not withstanding &#8212; I’m now in the position where <a href="http://www.farfromfearless.com/about/">I&#8217;m able to take on consulting work</a> and wanted to communicate that fundamental change on many levels (the most obvious place to start being my blog, of course).</p>
<p>I’ve talked about shifting focuses on this site for the last couple of years, but never had the time or need to push the change forward. I do now and what you’re looking at is the result. Where before my blog mostly concentrated on the things that interest me (it still does), it’s taken second stage to the need to <a href="http://www.farfromfearless.com/portfolio/">showcase my work</a> in a meaningful way.</p>
<p>You can learn more about <a title="Chris Murphy - UxD/IxD Consultant" href="http://www.farfromfearless.com/about/">what I offer as a consultant here</a>, but if you’re more interested in the work I’ve done, you can take a look at <a title="Chris Murphy - Portfolio" href="http://www.farfromfearless.com/portfolio/">a cross section of that material here</a>.</p>
<h3>What To Expect</h3>
<p>I’ll still be continuing my series on WordPress Theme Development and the ongoing updates to some of the other minor series, but I will also be posting about the work I’ve completed in the form of case studies. My hope is that I can share some of my experience in a way that is meaningful (without putting me out of work <img src='http://www.farfromfearless.com/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' />  ).</p>
<h2>About This Theme</h2>
<p>This new WordPress theme is called <strong>“Dusk”</strong>, currently at version 0.5, as I’m quite sure there will be a number of tweaks to the design and features over the coming weeks.</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-0.jpg"><img style="display: inline" title="WordPress Theme - Dusk - Home" src="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-0-thumb.jpg" alt="WordPress Theme - Dusk - Home" width="274" height="198" /></a><a href="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-2.jpg"><img style="display: inline" title="WordPress Theme - Dusk - Single" src="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-2-thumb.jpg" alt="WordPress Theme - Dusk - Single" width="274" height="198" /></a></p>
<p>It’s possible that I will release this theme to the public in a year or so when I’m ready to re-design – or perhaps I’ll market it as a premium theme (who knows). But I do plan to release it at some point as I have with my other themes.</p>
<h3>The Design Concept</h3>
<p>The inspiration for this new theme came largely from watercolour paintings – mostly the texture and the vibrancy of colours, but also the techniques involved in working with the medium.</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-1.jpg"><img style="display: inline" title="WordPress Theme - Dusk - Footer" src="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-1-thumb.jpg" alt="WordPress Theme - Dusk - Footer" width="274" height="198" /></a><a href="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-4.jpg"><img style="display: inline" title="WordPress Theme - Dusk - Comments" src="http://www.farfromfearless.com/wp-content/uploads/2009/04/dusk-4-thumb.jpg" alt="WordPress Theme - Dusk - Comments" width="275" height="198" /></a></p>
<p>I felt that it would be a strong juxtaposition to the more technical and rigid structure of the content – one balancing the other. The primary focus of this theme is showcasing my work first and my writing second. The layout for the main page was given a unique structure most appropriate to the type of blended content without overpower the other.</p>
<h3>Behind The Design</h3>
<p><strong>“Dusk”</strong> is based on the 960px grid concept and implemented using <a title="Blueprint: A CSS Framework | Spend your time innovating, not replicating" href="http://www.blueprintcss.org/">Blueprint CSS</a>. I’ve been focusing on <a title="Blueprint: A CSS Framework | Spend your time innovating, not replicating" href="http://www.blueprintcss.org/">Blueprint CSS</a> lately as it (amongst others) expedites some of the common CSS development tasks, allowing me to focus on ensuring the creative aspects of a design aren’t compromised. This of course assumes that the design adheres to the 960px grid concept (and this one does).</p>
<h2>Final Thoughts</h2>
<p>If you’re interested in how I might help your project succeed, <a href="http://www.farfromfearless.com/about/#services">I can help you in one capacity or another</a>. Don’t hesitate to ask <img src='http://www.farfromfearless.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2009/04/06/out-with-the-old-and-in-with-something-dramatically-different/feed/</wfw:commentRss>
		<slash:comments>12</slash:comments>
		</item>
		<item>
		<title>Top 3 Myths of Content Management Systems.</title>
		<link>http://www.farfromfearless.com/2009/02/06/top-3-myths-of-content-management-systems/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=top-3-myths-of-content-management-systems</link>
		<comments>http://www.farfromfearless.com/2009/02/06/top-3-myths-of-content-management-systems/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 20:42:10 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Developement]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[Web Strategy]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content Management Strategy]]></category>
		<category><![CDATA[User Experience]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=214</guid>
		<description><![CDATA[When it comes to choosing a CMS, its a challenge to know where to begin in terms of finding the software that is best suited for your needs -- particular as they may be.]]></description>
			<content:encoded><![CDATA[<p>Search Google for the term, “<a title="Content Management Systems - Google search results" href="http://www.google.ca/search?q=Content+Management+System&amp;ie=utf-8&amp;oe=utf-8&amp;aq=t&amp;rls=org.mozilla:en-US:official&amp;client=firefox-a">Content Management System</a>”, “<a title="Content Management Systems - Google search results" href="http://www.google.ca/search?hl=en&amp;client=firefox-a&amp;rls=org.mozilla%3Aen-US%3Aofficial&amp;hs=rQX&amp;q=CMS&amp;btnG=Search&amp;meta=">CMS</a>” or about any permutation of the concept you might think of, and you’ll get anywhere from 90,000 to 160,000 potential results. If only one percent of those results yield A to B-grade Content Management Systems, that is still a tremendous number of systems to attempt feature comparisons.</p>
<p>The math makes my head hurt already.</p>
<p>If any when you do manage to find a handful of solutions that you feel might answer your particular needs, your challenge will be in settling on one system out of many. How do you decide what stays and what goes?</p>
<p>Here are some of the top three myths that lead people astray:</p>
<h3>Myth No. 3 &#8212; A CMS is ready “<em>out of the box</em>”.</h3>
<p><strong>General Perception:</strong></p>
<p>Content Management Systems provide website administrators with everything they need to launch, manage, and maintain a website with little to no effort.</p>
<p><strong>Reality Check: </strong></p>
<p>Launching a website is never as easy as 1, 2, 3.</p>
<p>The level of effort and resources required to get a CMS up and running corresponds directly to the business requirements of the site, and size/complexity of the CMS.</p>
<p>Forget what was advertized on the box.</p>
<p>If you’re in a position where you’re still thinking about which CMS to go with, consider talking to customers who are actively using the software. Compare notes. Ask specifically about how key features worked for them or more importantly, what didn’t work for them and why.</p>
<p>This is a good opportunity to consider your own requirements for needing a CMS. It’s easy to get lost in all the hype and lose sight of why you needed it in the first place, so put your needs into writing and use your list as a guide post when evaluating features.</p>
<h3>Myth No. 2 &#8212; <em>Anyone</em> can use a CMS.</h3>
<p><strong>General Perception:</strong></p>
<p>“If you can use MS Word, you can use a CMS”.</p>
<p><strong>Reality Check:</strong></p>
<p>Understand that every CMS subscribes to a different philosophy when it comes to working with content. The methodology behind the workflow might make sense for one group and be totally alien to another, which makes it more difficult when you’re attempting to do feature comparisons (ultimately, they all follow a few common strategies).</p>
<p>It comes down to the User Experience.</p>
<p>You cannot legitimately equate the whole experience of using a CMS to something like MS Word. You <em>can</em> legitimately equate a <em>feature</em> of the CMS to MS Word (if it exists).</p>
<p>The User Experience between a system like “<a title="Joomla! Content Management System" href="http://www.joomla.org/">Joomla!</a>”, “<a title="Magnolia CMS" href="http://www.magnolia-cms.com/home.html">Magnolia</a>”, or “<a title="Drupal" href="http://drupal.org/">Drupal</a>” are dramatically different. I won’t get too deep into the how and why of things, but suffice to say that if your comparison between package was based only on side-by-side comparisons of their interfaces, you’d immediately see how different they are from each other.</p>
<p>Consider who will actually be using the CMS. Is it a group of developers or is it a group off general staffers tasked with the responsibility? Think about the end user here; it’s not the site visitor who will be directly affected by the CMS, but the people managing the content.</p>
<p>What kind of interface are they most comfortable using (WYSIWYG, form based, code)? Do any of them have working experience with HTML, CSS or a scripting language?</p>
<p>This is your red flag.</p>
<p>Stop.</p>
<p>Take a step back and look to your content team &#8212; get their input.</p>
<h3>Myth No. 1 &#8212; A CMS should manage <em>everything</em>.</h3>
<p><strong>General Perception:</strong></p>
<p>Content Management Systems are designed to manage all of a website’s content and features.</p>
<p><strong>Reality Check:</strong></p>
<p>Content Management Systems come in all flavours, but not one of them handles every facet of a website in an elegant manner (thus the reasons for Myth No. 2, 3).</p>
<p>I’m not quite sure how this myth started, but I’m sure anyone who has had the opportunity to work with a CMS understands this: there is an expectation that a CMS has the ability manage the content of every single asset, feature, function, or concept in a given website.</p>
<p>This is so – dangerously – far from the truth.</p>
<p>Think about it this way: <em>Your CMS does not define your website</em>.</p>
<p>Read that last sentence again. Memorize it for the next time you’re making recommendations to your clients or shopping around for yourself.</p>
<p>A CMS is designed to help you manage content, but unless engineered to be, two websites are never the same beast. Content volume, features, design, strategies can vary wildly, and so it is next to impossible to have a single CMS (out of the box) manage every aspect of a website without running into the need to extend, include plug-ins, or write unique code to support the site’s particular requirements.</p>
<p>Consider that feat the Holy Grail of all CMS.</p>
<p>Be realistic about what you need a CMS to do. Think about the content of your site, and if you haven’t already, consider bringing on a Content Strategist to help you define the Information Architecture.</p>
<p>An important thing you should try to understand is that you don’t need <em>one tool</em> to manage <em>everything</em> – in the real world, you need a toolbox full of the the most reliable, appropriate tools to help you manage your website content.</p>
<h3>Things to consider when you do manage to find a suitable CMS.</h3>
<p>It’s easy to get misled by the marketing and hype, and technical jargon around a CMS. If you can only remember three things before you start searching, keep the following in mind:</p>
<ol>
<li><strong>Find a tool that your organization can implement:</strong> Speak to your development team/IT to get a realistic scope on what it will take to get up and running. </li>
<li><strong>Realize <em>who</em> will actually use the software</strong>: Most importantly, interview your content management group to find out what their expectations (and level of experience) is with a CMS or similar software. </li>
<li><strong>Develop a content strategy:</strong> Interview the key stakeholders to find out what the common needs are, and what the business requirements are for the website – don’t engineer your content to fit the limitations of one tool. </li>
</ol>
<p>Ultimately speaking, a CMS is just one tool for the task of managing the content of your website, and sometimes you need different tools to do the job. There is no doubt that finding the right tool is going to be an easy task – expect a difficult road – but with a little forethought, some planning, and a good understanding of your needs (not wants), choosing a CMS will be less painful in the long run.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2009/02/06/top-3-myths-of-content-management-systems/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>FrogCMS &#8211; Content Management Simplified.</title>
		<link>http://www.farfromfearless.com/2008/11/10/frogcms-content-manage-simplified/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=frogcms-content-manage-simplified</link>
		<comments>http://www.farfromfearless.com/2008/11/10/frogcms-content-manage-simplified/#comments</comments>
		<pubDate>Mon, 10 Nov 2008 21:57:30 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Content Management System]]></category>
		<category><![CDATA[RadiantCMS]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/2008/11/10/frogcms-content-manage-simplified/</guid>
		<description><![CDATA[I don't normally blog about content management systems as these kinds of posts tend to degenerate into a my-cms-is-better-than-yours-palooza, but I wanted to give a shout out to a project that has been in the works for almost two years and has finally matured into something worth talking about.]]></description>
			<content:encoded><![CDATA[<p>Content Management Systems come in so many flavours, and while I don&#8217;t advocate any one system over another, I have no hesitation in saying that this product is one to keep an eye out for. Created by Quebec-based developer, <a title="Philippe Archambault" href="http://www.philworks.com/">Philippe Archambault</a> , FrogCMS is one of the few I would include in my web-designer&#8217;s toolbox. The system is not inherently original in it&#8217;s approach, being a derivative/port of another popular system called RadianCMS (developed on the Ruby Framework), but like RadiantCMS, it&#8217;s approach does appear to live up to it&#8217;s promise in simplifying the task of developing a scalable website by abstracting the components of a website into simple concepts: &#8220;pages&#8221;, &#8220;snippets&#8221;, &#8220;layouts&#8221;, &#8220;files&#8221;, and &#8220;comments&#8221;.</p>
<p>Here are a few screenshots of the product:</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_01.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_01_thumb.jpg" alt="Pages" width="540" height="322" /></a> <a href="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_02.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_02_thumb.jpg" alt="Snippets" width="540" height="322" /></a> <a href="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_03.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_03_thumb.jpg" alt="Layouts" width="540" height="322" /></a> <a href="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_04.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/FrogCMSContentManageSimplified_E103/frogcms_04_thumb.jpg" alt="Files" width="540" height="322" /></a></p>
<h2>Features</h2>
<p>Here are some of the features from the website:</p>
<p><strong>Unlimited hierarchically structured page navigation menu</strong><br />
The page navigation menu provides critical information and functions. It allows you to perform quickly common actions on pages and shows how information has been organized.</p>
<p><strong>Drag and drop page ordering</strong><br />
This function simplifies the organization of your site’s pages. It makes new sorting arrangements of pages possible.</p>
<p><strong>Flexible page content: body, sidebar, extended, summary</strong><br />
Each page can have its own customized parts (divisions). It can be ‘extended’ text for news, or ‘summary’ for article: you can define whatever you want, whenever you want. These can even be used for extended metadata fields.</p>
<p><strong>Per page layout customization</strong><br />
Pages can have their own layout, or can inherit the layout of the parent page, or they can reuse another page layout. This allows the site owner to make every page look exactly as desired.</p>
<p><strong>Simple and reusable content snippets</strong><br />
You can define ‘snippets’: small pieces of content used across several pages, like page headers or footers, or contact info, etc. This means less cut-and-paste text in your pages. This will reduce your modification time when you need to add, remove or change the text in it.</p>
<h2>Other</h2>
<ul>
<li>Password protected administration.</li>
<li>Simple user and permission management.</li>
<li>File manager (plugin) allows you to upload, browse and edit files.</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/11/10/frogcms-content-manage-simplified/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>How To Style Your Most Recent WordPress Posting</title>
		<link>http://www.farfromfearless.com/2008/09/06/how-to-style-your-most-recent-wordpress-posting/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-style-your-most-recent-wordpress-posting</link>
		<comments>http://www.farfromfearless.com/2008/09/06/how-to-style-your-most-recent-wordpress-posting/#comments</comments>
		<pubDate>Sun, 07 Sep 2008 02:52:55 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Developement]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Themes]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Techniques]]></category>
		<category><![CDATA[WordPress Posts]]></category>
		<category><![CDATA[WordPress Theme Design]]></category>
		<category><![CDATA[XHTML]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=167</guid>
		<description><![CDATA[One question that I'm asked most often is: "how do I get my most recent post to look different than my older posts?", and second to that is, "how do I show alternate colors in my posts?"]]></description>
			<content:encoded><![CDATA[<p>How you choose to style your blog postings is largely dependent on the theme you&#8217;ve selected to use on your blog, your writing style, as well as &#8212; perhaps &#8212; your skill at modifying the themes.</p>
<p>For the most part, you may be stuck with using the setup that the Theme Designer decided to adopt.</p>
<p>Blogs typically take one of three common approaches to displaying posts:</p>
<ol>
<li>Posts are displayed as excerpts with a &#8220;read more&#8221; link.</li>
<li>Posts are displayed with the full body of the posting.</li>
<li>Only one post is displayed with pagination available.</li>
</ol>
<p>The first approach &#8212; the most common of the three &#8212; is likely a result of the Theme Designer choosing to use the out-of-the-box functionality of the blogging software (and to be fair, it is likely the most efficient); however, not everyone wants a cookie cutter solution to displaying their posts.</p>
<p>The reality is such that you don&#8217;t actually need to do a lot of work to get your blog postings to appear the way you want them to. I can&#8217;t speak for other blogging software packages, but when it comes to WordPress, there are a many techniques you can apply to customize your postings.</p>
<h2>WordPress &#8211; The Loop</h2>
<p>The meat-and-potatoes of WordPress is &#8220;<a title="WordPress - The Loop" href="http://codex.wordpress.org/The_Loop">The Loop</a>&#8220;. If you&#8217;ve ever attempted to customize a WordPress theme, it&#8217;s likely you&#8217;ve encountered this The Loop (essentially a &#8220;while&#8221; loop). This is an example of a very simple loop (taken from the WordPress codex):</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   1:</span> <span style="color: #0000ff;">if</span> (have_posts()) :</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   2:</span>    <span style="color: #0000ff;">while</span> (have_posts()) :</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   3:</span>       the_post();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   4:</span>       the_content();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   5:</span>    endwhile;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   6:</span> endif;</pre>
</div>
</div>
<p>This is a better explanation if you&#8217;re not too familiar with code:</p>
<blockquote><p><strong>The Loop</strong> is used by WordPress to display each of your posts. Using The Loop, WordPress processes each of the posts to be displayed on the current page and formats them according to how they match specified criteria within The Loop tags.</p></blockquote>
<p>If you examine one of the template files of your theme you may encounter a more complicated version of the above snippet.  The Loop is where we are going to start to customize the appearance of your postings.</p>
<h2>Postings</h2>
<p>A post in WordPress is comprised of a number of elements such as the Title of the post, the Content of the post, and assorted information like the Date/Time, etc. In the common approaches, all of the postings share the exact same format and display identical information.</p>
<p>Boring.</p>
<p>But it doesn&#8217;t have to be this way. The developers of WordPress were smart enough to realize that while the majority of theme designers don&#8217;t mind this type of homogenous approach, there are a few Theme Designers out there who prefer not to follow this pattern. As such, WordPress is built with with the ability to modify how The Loop is applied.</p>
<p>There are several approaches to modifying The Loop, but the two that I prefer are:</p>
<ol>
<li>Use <a title="WordPress - query_posts(...)" href="http://codex.wordpress.org/Template_Tags/query_posts">query_posts</a> with counter and offset.</li>
<li>Use The Loop with counter and conditions.</li>
</ol>
<h2>The Loop With query_posts(&#8230;)</h2>
<p>It took me a while to understand what this feature did; quite simply put, it adds additional parameters in the The Loop to instruct WordPress on what to output.</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   1:</span> &lt;?php query_posts(<span style="color: #006080;">'showposts=1'</span>); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   2:</span> &lt;?php <span style="color: #0000ff;">if</span> (have_posts()) : <span style="color: #0000ff;">while</span> (have_posts()) : the_post(); ?&gt;</pre>
</div>
</div>
<p>The snippet above was taken from <a title="Lemon Twist v2.0 Updated WordPress Theme" href="http://www.farfromfearless.com/2008/01/11/lemon-twist-v20-updated-wordpress-theme/">one of my WordPress themes</a>. In the theme, I use the above approach to display ONLY my most recent posting in full. Here&#8217;s a simplified version of the markup I use:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   1:</span> &lt;!-- set main-entry --&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   2:</span> &lt;?php query_posts(<span style="color: #006080;">'showposts=1'</span>); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   3:</span> &lt;?php <span style="color: #0000ff;">if</span> (have_posts()) : <span style="color: #0000ff;">while</span> (have_posts()) : the_post(); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   4:</span> &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"main-entry"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   5:</span>     &lt;h2&gt;&lt;a href=<span style="color: #006080;">"&lt;?php the_permalink(); ?&gt;"</span> rel=<span style="color: #006080;">"bookmark"</span> title=<span style="color: #006080;">"Permanent Link to &lt;?php the_title(); ?&gt;"</span>&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h2&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   6:</span>     &lt;?php <span style="color: #008000;">//the post meta ?&gt;</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   7:</span>     &lt;ul <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"meta-top"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   8:</span>         &lt;li&gt;&lt;strong&gt;Posted:&lt;/strong&gt; &lt;?php the_time(<span style="color: #006080;">'F j, Y'</span>); ?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   9:</span>         &lt;li&gt;&lt;strong&gt;Author:&lt;/strong&gt;  &lt;?php the_author(); ?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  10:</span>         &lt;li&gt;&lt;strong&gt;Filed under:&lt;/strong&gt; &lt;?php the_category(<span style="color: #006080;">','</span>); ?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  11:</span>         &lt;li&gt;&lt;?php <span style="color: #0000ff;">if</span>( get_the_tags() != NULL ) { the_tags(<span style="color: #006080;">'&lt;strong&gt;Tags:&lt;/strong&gt; '</span>,<span style="color: #006080;">', '</span>); }<span style="color: #0000ff;">else</span>{ echo <span style="color: #006080;">"&lt;strong&gt;Tags:&lt;/strong&gt; No tags set for this entry."</span>; }?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  12:</span>     &lt;/ul&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  13:</span>     &lt;?php</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  14:</span>         the_content(<span style="color: #006080;">'Read more...'</span>);</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  15:</span>     ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  16:</span> &lt;/div&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  17:</span> &lt;?php endwhile; endif; ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  18:</span> &lt;!-- end main-entry --&gt;</pre>
</div>
</div>
<p>In this example, The Loop is executed only once and only once. The query_posts() function passes instructions to The Loop to show only one post (using query_posts(<strong>&#8216;showposts=1&#8242;</strong>)). While The Loop is executed, it will output all of the post&#8217;s information that I&#8217;ve specified using the appropriate Post tags.</p>
<p><strong>NOTE: </strong>I have set the container &lt;div&gt; class to &#8220;main-entry&#8221;. This references a rule in my CSS file that will style the output accordingly.</p>
<p>Unfortunately, you&#8217;re stuck with only one posting on your page. We need to display older postings as well, and ideally in a format that is different than the most recent.</p>
<p>As previously mentioned, The Loop was executed only once with the example above. This is a powerful feature of query_posts(), in that you have a tremendous amount of control over The Loop &#8212; in this case, how many times it is executed.</p>
<p>To render the older postings, you can do this:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   1:</span> &lt;!-- set past-entry --&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   2:</span> &lt;?php query_posts(<span style="color: #006080;">'showposts=9&amp;offset=1'</span>); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   3:</span> &lt;?php <span style="color: #0000ff;">if</span> (have_posts()) : <span style="color: #0000ff;">while</span> (have_posts()) : the_post(); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   4:</span> &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"past-entry"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   5:</span>     &lt;ul <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"dateblock left"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   6:</span>         &lt;li <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"top"</span>&gt;&lt;?php the_time(<span style="color: #006080;">'M Y'</span>); ?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   7:</span>         &lt;li <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"bottom"</span>&gt;&lt;?php the_time(<span style="color: #006080;">'j'</span>); ?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   8:</span>     &lt;/ul&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   9:</span>     &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"entry-content"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  10:</span>         &lt;h1&gt;&lt;a href=<span style="color: #006080;">"&lt;?php the_permalink() ?&gt;"</span> rel=<span style="color: #006080;">"bookmark"</span> title=<span style="color: #006080;">"Permanent Link to &lt;?php the_title(); ?&gt;"</span>&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h1&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  11:</span>         &lt;?php</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  12:</span>             the_excerpt();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  13:</span>         ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  14:</span>     &lt;/div&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  15:</span> &lt;/div&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  16:</span> &lt;?php endwhile; endif; ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  17:</span> &lt;!-- end past-entry --&gt;</pre>
</div>
</div>
<p>Aside from the simpler markup, the core difference between this second snippet and the first are the instructions/parameters in query_posts(), and the CSS class which is referenced.</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   1:</span> &lt;?php query_posts(<span style="color: #006080;">'showposts=9&amp;offset=1'</span>); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   2:</span> &lt;?php <span style="color: #0000ff;">if</span> (have_posts()) : <span style="color: #0000ff;">while</span> (have_posts()) : the_post(); ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   3:</span> &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"past-entry"</span>&gt;</pre>
</div>
</div>
<p>If you combine both of the examples above, what you&#8217;ll find is that you&#8217;re actually running The Loop twice &#8212; in the first instance, The Loop only outputs the most recent post. In the second instance, it skips over the most recent  post completely, and outputs as many older posts as you defined in query_posts().</p>
<p><strong>NOTE:</strong> if you examine the parameters in the second query_posts() instance, you should see &#8220;<strong>showposts=9&amp;offset=1</strong>&#8221; &#8212; this will output <strong>10</strong> posts in total on your page, where <strong>9</strong> such posts are older.</p>
<h3>Styling The Posts</h3>
<p>What you need now are two CSS rules which define:</p>
<ol>
<li>&#8220;main-entry&#8221;</li>
<li>&#8220;past-entry&#8221;</li>
</ol>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   1:</span> <span style="color: #008000;">/* CSS Snippet */</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   2:</span> #post-container div.main-entry {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   3:</span>     background-color: #CCCCCC;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   4:</span>     color: #000000;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   5:</span>     font-size: 1em;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   6:</span> }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   7:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   8:</span> #post-container div.past-entry {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   9:</span>     background-color: #ffffff;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  10:</span>     color:#333333;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  11:</span>     font-size: .92em;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  12:</span> }</pre>
</div>
</div>
<p>The XHTML markup does not have to be different between these posts, and as you can see in the CSS snippet above, you can get away with as little as displaying a different background color, font color or a larger font size.</p>
<h3>The Caveat</h3>
<p>Yes, there is a downside to using query_posts(). Programmatically speaking, you should try to optimize the number of queries you execute against your database. Since WordPress is largely database driven, you can expect a high volume of requests on any given page. Using query_posts() should be done sparingly (I limit it&#8217;s use to the homepage of my blog).</p>
<p>Also, if you are wanting to support pagination, you will need to do a little more work to setup the query properly &#8212; you can <a title="WordPress - query_posts()" href="http://codex.wordpress.org/Template_Tags/query_posts">read more about it here</a>.</p>
<h2>The Loop With Counter &amp; Conditions</h2>
<p>The simplest method to determine and style your most recent post in contrast to your older postings is a pure implementation of &#8220;The Loop&#8221;. This implementation also relies on using a counter to keep track of how many posts you&#8217;re outputting (as determined by your WordPress settings), as well as a condition to determine which class to reference when styling the output.</p>
<p>Here is an example of this in action:</p>
<div style="border: 1px solid gray; margin: 20px 0px 10px; padding: 4px; overflow: auto; font-size: 8pt; width: 97.5%; cursor: text; max-height: 200px; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<div style="border-style: none; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;">
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   1:</span> &lt;?php</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   2:</span>     <span style="color: #0000ff;">if</span> (have_posts()) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   3:</span>         <span style="color: #008000;">// the counter (initialized to 0 );</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   4:</span>         $n = 0;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   5:</span>         <span style="color: #008000;">// the while loop</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   6:</span>         <span style="color: #0000ff;">while</span> (have_posts()) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   7:</span>             <span style="color: #008000;">// the CSS class to apply</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   8:</span>             $<span style="color: #0000ff;">class</span> = ( $n == 0 ) ? <span style="color: #006080;">"main-entry"</span> : <span style="color: #006080;">"past-entry"</span>;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">   9:</span> ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  10:</span>             &lt;!-- set post --&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  11:</span>             &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"&lt;?php echo $class; ?&gt;"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  12:</span>                 &lt;ul <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"dateblock"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  13:</span>                     &lt;li <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"top"</span>&gt;&lt;?php the_time(<span style="color: #006080;">'M Y'</span>); ?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  14:</span>                     &lt;li <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"bottom"</span>&gt;&lt;?php the_time(<span style="color: #006080;">'j'</span>); ?&gt;&lt;/li&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  15:</span>                 &lt;/ul&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  16:</span>                 &lt;div <span style="color: #0000ff;">class</span>=<span style="color: #006080;">"entry-content"</span>&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  17:</span>                     &lt;h1&gt;&lt;a href=<span style="color: #006080;">"&lt;?php the_permalink() ?&gt;"</span> rel=<span style="color: #006080;">"bookmark"</span> title=<span style="color: #006080;">"Permanent Link to &lt;?php the_title(); ?&gt;"</span>&gt;&lt;?php the_title(); ?&gt;&lt;/a&gt;&lt;/h1&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  18:</span>                     &lt;?php</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  19:</span>                         <span style="color: #0000ff;">if</span>( $n == 0 ) {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  20:</span>                             the_content();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  21:</span>                         }<span style="color: #0000ff;">else</span> {</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  22:</span>                             the_excerpt();</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  23:</span>                         }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  24:</span>                     ?&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  25:</span>                 &lt;/div&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  26:</span>             &lt;/div&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  27:</span>             &lt;!-- set post --&gt;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  28:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  29:</span> &lt;?php</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  30:</span>             <span style="color: #008000;">// incriment the counter</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  31:</span>             $n .= 1;</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  32:</span>         }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  33:</span></pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  34:</span>     }</pre>
<pre style="border-style: none; margin: 0em; padding: 0px; overflow: visible; font-size: 8pt; width: 100%; color: black; line-height: 12pt; font-family: consolas,'Courier New',courier,monospace; background-color: #f4f4f4;"><span style="color: #606060;">  35:</span> ?&gt;</pre>
</div>
</div>
<p>As you can see from the example above, we&#8217;ve taken a basic instance of The Loop and added in two variables:</p>
<ol>
<li><strong>$n</strong> &#8212; this is the counter used to determine which which is the most recent (starting at &#8220;0&#8243; &#8212; the first).</li>
<li><strong>$class</strong> &#8212; this is the CSS class that we want to reference (&#8220;main-entry&#8221; or &#8220;past-entry&#8221;).</li>
</ol>
<p>The method and approach to styling the post is the same as the examples in query_posts(). The XHTML markup can be re-used between new and older postings, but this is not required. With a little work you can supply The Loop with two different sets of markup to render.</p>
<h3>The Caveat</h3>
<p>While this implementation is rather straight forward, it can get complicated quickly if you want to include more and more variations between postings. Each variation requires a little more forethought, and the appropriate conditions to determine what to do and what to render. What you may end up with is a lot of messy markup that is difficult to read.</p>
<h2>Conclusion</h2>
<p>It doesn&#8217;t take a lot of work to modify your WordPress template to render your most recent posting in a unique fashion. In some cases, you can download plugins to help you style your postings; for me, having to rely on additional plugins seems more overhead than is necessary. The techniques outlined in this article are only two of many such approaches (and certainly a manual approach).</p>
<p>Don&#8217;t feel as if you have to select one over the other. In fact, your writing style and your choice of template play a large part in determining which method is most appropriate.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/09/06/how-to-style-your-most-recent-wordpress-posting/feed/</wfw:commentRss>
		<slash:comments>69</slash:comments>
		</item>
		<item>
		<title>How To Quote Comments In A WordPress Comment List</title>
		<link>http://www.farfromfearless.com/2008/08/29/how-to-quote-comments-in-wordpress-comment-list/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-quote-comments-in-wordpress-comment-list</link>
		<comments>http://www.farfromfearless.com/2008/08/29/how-to-quote-comments-in-wordpress-comment-list/#comments</comments>
		<pubDate>Fri, 29 Aug 2008 21:17:31 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Developement]]></category>
		<category><![CDATA[How To]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Themes]]></category>
		<category><![CDATA[Code Snippet]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Quotes]]></category>
		<category><![CDATA[WordPress Commenting]]></category>
		<category><![CDATA[WordPress Comments]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=161</guid>
		<description><![CDATA[Sometimes it's the little details that make WordPress themes really shine, other times it's the little features you can add that make working with a WordPress theme a nice experience for readers.]]></description>
			<content:encoded><![CDATA[<p>I received an email from a reader this afternoon, asking about one of the commenting features that I built into the <a title="Download Lemon Twist 2.0.x" href="http://www.farfromfearless.com/2008/01/11/lemon-twist-v20-updated-wordpress-theme/">Lemon Twist</a> theme: quote comments.</p>
<blockquote><p>Hi Chris,</p>
<p>I’m really curious on how you got that quote feature on your comment section. Do you mind sharing your code?</p>
<p>Cheers,<br />
[<span style="text-decoration: line-through;">author name omitted</span>]</p></blockquote>
<p>While this is not a new feature by and large, it is one that I thought would bring a sense of discussion to the linear WordPress comment format much like how forums work. I&#8217;ve attempted to use threaded commenting plugins, but they are ugly and overly complicated for something that should be fairly straight forward.</p>
<p>In any case, this is the JavaScript snippet that I wrote (you need <a title="jQuery" href="http://jquery.com/">jQuery</a>, but comes with the theme)</p>
<pre>// attach a function to the quote comment link
  $('a.quote-comment').click( function() {
      var tb = $('#comment');
      var strQuote = $(this).attr('title');
      // assign the value
      tb.val('&lt;blockquote&gt;' + strQuote + '&lt;/blockquote&gt;');
      return false;
   });</pre>
<p>This is the result:</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowtoQuoteCommentsinWordPressCommentList_ECB9/quote.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowtoQuoteCommentsinWordPressCommentList_ECB9/quote_thumb.jpg" alt="quote" width="540" height="173" /></a></p>
<p>There are a couple caveats to this feature</p>
<ol>
<li>You can only quote one comment at a time, as I didn&#8217;t build in concatenation.</li>
<li>It is not parameterized so you&#8217;ll have to customize it for your own theme.</li>
<li>Requires some additional styling (no big deal).</li>
</ol>
<p>If anyone wants to improve on this, feel free to share!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/08/29/how-to-quote-comments-in-wordpress-comment-list/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>WordPress Plugins For The Not-so-everyday Blog.</title>
		<link>http://www.farfromfearless.com/2008/08/25/wordpress-plugins-for-the-not-so-everyday-blog/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-plugins-for-the-not-so-everyday-blog</link>
		<comments>http://www.farfromfearless.com/2008/08/25/wordpress-plugins-for-the-not-so-everyday-blog/#comments</comments>
		<pubDate>Mon, 25 Aug 2008 21:34:50 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Developement]]></category>
		<category><![CDATA[Software]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Themes]]></category>
		<category><![CDATA[Comments]]></category>
		<category><![CDATA[Posts]]></category>
		<category><![CDATA[Social Bookmarking]]></category>
		<category><![CDATA[WordPress Plugins]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=145</guid>
		<description><![CDATA[The WordPress plugin section is rife with some great extensions for WordPress, each offering something unique that the WordPress "core system" doesn't offer out-of-the-box.]]></description>
			<content:encoded><![CDATA[<p>For those of you who aren&#8217;t familiar with plugins &#8212; WordPress offers the ability for software developers to extend the basic functionality of WordPress in order to display, perform or provide functionality that does not currently exist.</p>
<p>Sometimes you can have too much of a good thing, and WordPress is no exception. There are many plugins that offer surprisingly similar features with the exception that one might handle the same task in a slightly different manner.</p>
<p>Sifting through plugin lists isn&#8217;t fun either.</p>
<p>I thought I would share a <strong>short</strong> list of the WordPress plugins that I found to be useful without being too gimmicky.</p>
<h2>Posts</h2>
<p><strong>Plugin:</strong> the_excerpt Reloaded</p>
<p><strong>URL:</strong> <a title="http://guff.szub.net/2005/02/26/the_excerpt-reloaded/" href="http://guff.szub.net/2005/02/26/the_excerpt-reloaded/">http://guff.szub.net/2005/02/26/the_excerpt-reloaded/</a></p>
<p><strong>Description:</strong> Displays the excerpt of a posting (or uses the content of your post if no excerpt is available), and formats the excerpt accordingly.</p>
<p>This plugin was developed in 2005, and there are other similar plugins that have come along since, but I like this one simply because it works as advertised. If you&#8217;ve downloaded and installed my theme, you&#8217;ll notice that I use it in areas such as the main posting, and in the archive or past postings.</p>
<p><strong>Plugin:</strong> &#8220;Add to Any: Share/Save/Bookmark Button&#8221;</p>
<p><strong>URL:</strong> <a title="http://wordpress.org/extend/plugins/add-to-any/" href="http://wordpress.org/extend/plugins/add-to-any/">http://wordpress.org/extend/plugins/add-to-any/</a></p>
<p><strong>Description:</strong> Adding social bookmark features can be a bit of a pain, and implementations are inconsistent. This plugin takes the pain out of adding social bookmarking abilities to your postings using a very simple UI for the user to interact with.</p>
<h2>Comments</h2>
<p><strong>Plugin:</strong> Get Recent Comments</p>
<p><strong>URL</strong>: <a title="http://wordpress.org/extend/plugins/get-recent-comments/" href="http://wordpress.org/extend/plugins/get-recent-comments/">http://wordpress.org/extend/plugins/get-recent-comments/</a></p>
<p><strong>Description:</strong> Displays a formatted list of the most recent comments on your site. This plugin has a number of new features, but I typically use only the basic features &#8212; for me it&#8217;s a time saver, as well as a quick and easy way to implement a comment list without a lot of work.</p>
<h2>Archives</h2>
<p><strong>Plugin:</strong> SRG Clean Archives</p>
<p><strong>URL:</strong> <a title="http://www.geekwithlaptop.com/projects/clean-archives/" href="http://www.geekwithlaptop.com/projects/clean-archives/">http://www.geekwithlaptop.com/projects/clean-archives/</a></p>
<p><strong>Description:</strong> Displays a formatted list of your archived posts with additional functionality for animation and user interaction.</p>
<p>I just love the fact that I can take this plugin and output an archive with minimal fuss. I disable all of the additional features and apply my own CSS to customize the look and feel. It&#8217;s really quite easy, and if you&#8217;re into experimenting with some of the extra JavaScript features, you can come up with some fun results.</p>
<p>You don&#8217;t need a lot of plugins to enhance the features of your blog, and I personally recommend against relying heavily on plugins; instead, I do recommend that you pick plugins that effectively suit the features you need to communicate better on your blog.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/08/25/wordpress-plugins-for-the-not-so-everyday-blog/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>How To Use Mail Merge In Microsoft Word 2007</title>
		<link>http://www.farfromfearless.com/2008/08/05/how-to-use-mail-merge-in-microsoft-word-2007/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-use-mail-merge-in-microsoft-word-2007</link>
		<comments>http://www.farfromfearless.com/2008/08/05/how-to-use-mail-merge-in-microsoft-word-2007/#comments</comments>
		<pubDate>Wed, 06 Aug 2008 04:16:39 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Developement]]></category>
		<category><![CDATA[Email]]></category>
		<category><![CDATA[Grrr]]></category>
		<category><![CDATA[2007]]></category>
		<category><![CDATA[Black List]]></category>
		<category><![CDATA[Email Deployment]]></category>
		<category><![CDATA[Mail Merge]]></category>
		<category><![CDATA[MS Office]]></category>
		<category><![CDATA[MS Word 2007]]></category>
		<category><![CDATA[White List]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=141</guid>
		<description><![CDATA[Email deployments give me a headache. I hate doing them, and I hate watching other people doing them. But they are a necessary part of web-marketing and communications.]]></description>
			<content:encoded><![CDATA[<p>In a recent project that required a mass email deployment, I encountered one of the most overlooked issues when sending bulk emails within a large company from an external source: corporate black-list policy. Quite simply, this is an IT policy that protects a company&#8217;s email servers from being overwhelmed and exploited by malicious sources. It&#8217;s a good policy, and if properly implemented, it can quickly stonewall persistent spammers.</p>
<p>Given that I am not the only one to encounter this issue, I thought I would share my recent experience and a work-around.</p>
<p><strong>DISCLAIMER:</strong> Please note that I do not in any way advocate this as a permanent solution for any mass e-mail deployments on a budget. At best this article should be taken as <strong>a cautionary tale</strong>.</p>
<h2>The Task</h2>
<p>I developed an micro site for a client for an HR and team-building campaign. The micro site required internal users to claim their pre-assigned accounts through a simple &#8220;claim&#8221; URI provided in a email that was to be sent out after an internal event. One click; confirm the email address; accept a new user-defined password, and that was it. Simple and quick.</p>
<h2>The Issue</h2>
<p>The account claim workflow was simple, and my team and I had tested the system numerous times. We tested the standard exploits; we tested cross-location claims; we tested unorthodox methods of faking and breaking into the site. What we hadn&#8217;t tested as thoroughly was the e-mail deployment.</p>
<p>I made the assumption that we wouldn&#8217;t have issues with the email deployment since my team had done previous deployments for this particular client in the past. Easy peasy, right?</p>
<p>Not really.</p>
<p>The email was scheduled to deploy close to the end of the day yesterday. It went out. It came back. Rejected. As it turns out, I had also forgotten that the previous deployments were for <strong>external</strong> email lists &#8212; this was the first time we were handling a mass deployment to an internal employee list.</p>
<h2>The Drama</h2>
<p>By 9:30 this morning, I had a couple urgent notes from the client and spent the following hours following up with their IT department and our email service provider, along with our bulk e-mail distributor. It was then I found out that the email servers and the domain needed to be &#8220;white-listed&#8221; before any mass emails could filter through.</p>
<p>(You know those moments when you take a second and realized what a rookie mistake you just made &#8212; that was me this afternoon &#8212; email deployment cardinal sin numero uno).</p>
<p>By 4:00PM I was pretty much ready to hang myself after waiting for hours to hear back from the &#8220;deliverabily&#8221; department and the support desk to whom I submitted this rather urgent ticket. Not a fun day.</p>
<p>Desperate, I considered last resorts:</p>
<p>1. Have the client distribute the email themselves.</p>
<p>2. Set up a new account with a new provider specifically for this project.</p>
<p>3. Delay the deployment.</p>
<p>For various and obvious reasons, neither of the options were appealing to the client. The email deployment was 24 hours behind schedule at this point, and employees were chomping at the bit to claim their promised accounts on this micro site. It was time to fall back to some unorthodox means.</p>
<p>Enter Microsoft Word and Mail Merge (I feel dirty just writing this already).</p>
<h2>The Solution</h2>
<p>Mail Merge is one of those Microsoft Office features (there may be similar features in other products &#8212; I wouldn&#8217;t know), that is either loved or hated. I personally dislike it for the fact that it just wasn&#8217;t easy to use, and the lack of an intuitive workflow; however, it did come through for me today, so I&#8217;m going to cut it some slack.</p>
<p><strong>Before we get started, this is what you should know:</strong></p>
<ol>
<li>If your target company has an IT policy in place to deal with bulk emails and spammers, you <strong>need</strong> to contact them <strong>first</strong> in order to get your e-mail server &#8220;white-listed&#8221;. No solution, even the one I&#8217;m outlining here, will get through a well-implemented IT policy. Read that last statement again and remember it.</li>
<li>You will need to provide the IT administrators at the target company with at least two things: the static IP address (possibly range) of your email server, and your the domain you are sending from. e.g. sender<strong>@somedomain.com</strong> &#8212; you will likely be asked to verify this through some simple test emails.</li>
<li>You will want to setup a new mailbox or profile through your Exchange server (contact your system admin for help on this). This will prevent you &#8212; your email account &#8212; from receiving a potentially overwhelming volume of bounce-backs or auto responses, etc.</li>
<li>If you have MS Outlook installed, start it up as you will need it to connect with your email server to send emails.</li>
<li>Lastly, you are definitely going to need some patience.</li>
</ol>
<p>If you&#8217;ve done your due diligence and saw to it that the IT department of your target company has &#8220;white-listed&#8221; both your email server and domain, you can safely send a volume of emails through.</p>
<p>As with any bulk email deployments, you will also need a target list. Your list can come in one of several formats, the most common of which is a *.CSV formatted list.</p>
<p>I had several data fields in my list such as &#8220;first name&#8221;, &#8220;last name&#8221;, &#8220;email&#8221;, and &#8220;claimid&#8221;, so take some time before firing up MS Word to clean up your list.</p>
<p><strong>NOTE:</strong> for the purpose of this article, I am using MS Office 2007</p>
<h3>Step 1: Prepare your email list</h3>
<p>Assuming that your list was previously validated, here are a couple house-keeping tasks that you might want to deal with first:</p>
<ol>
<li>Ensure that your target list has the appropriate field/column headers.</li>
<li>Remove unnecessary fields.</li>
<li>Remove duplicates (mail merge helps you with this, but take the time to parse your list previous to using it).</li>
</ol>
<p>I&#8217;m sure there are a number of best-practices you should keep in mind when dealing with email lists, but that&#8217;s not what this article is about (and it&#8217;s clear that I am not an authority or I wouldn&#8217;t be writing this article).</p>
<p>You can create a *.CSV using any text editor, but the most popular method for businesses is to take an existing Excel spreadsheet and save it as a *.CSV formatted document. Doing this will essentially strip out any proprietary document format information, but preserve the data, its structure, and order.</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/list.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/list_thumb.jpg" alt="Sample email list in MS Excel 2007" width="540" height="405" /></a></p>
<p>In this example I have two records (recipients) to whom I will send the email message to. I have four main fields which are denoted as follows (you can name and format them as you wish, this is just an example): [firstname], [lastname], [email], [claimid].</p>
<p>You will need all of the fields despite the fact that you may only use one or two of them for personalizing the email message.</p>
<p>The last step here is to save your *.XLS (*.XLSX if you&#8217;re using Office 2007) as a CSV, but before you do that, you should be aware that the application will display a couple of warnings regarding saving the file in a different format. To avoid multiple warning, simple delete out an unused worksheets from your document.</p>
<p>To save your file as a *.CSV you must do the following:</p>
<ol>
<li>Select File &gt; Save As.</li>
<li>When you see the &#8220;Save As&#8221; dialog, click on the &#8220;Save As Type&#8221; drop down and select &#8220;CSV (MS-DOS) *.csv&#8221; from the list. If you&#8217;re on a different platform (mac), select the appropriate encoding type (&#8220;CSV (Macintosh)&#8221;).</li>
<li>Click Save.</li>
</ol>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/save_as.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/save_as_thumb.jpg" alt="save_as" width="540" height="405" /></a></p>
<p>The first warning should pop up, which looks like this:</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/warning_1.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/warning_1_thumb.jpg" alt="warning_1" width="540" height="115" /></a></p>
<p>Click &#8220;Yes&#8221; to finish saving your document. If you did not delete any unused worksheets as I mentioned earlier, you may be prompted with a second warning; get past them and save out your CSV or use another application if the experience is becoming frustrating.</p>
<h3>Step 2: Prepare Your Message</h3>
<p>If you&#8217;re planning on sending out a mass email, you&#8217;ll need to have a message to send, and fields to populate. At this point you can fire up MS Word. You should be presented with a new document. Compose your message (or copy and paste it from whatever document you had originally composed it in), and create personalization fields. For example:</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/message.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/message_thumb.jpg" alt="Sample message in MS Word 2007" width="540" height="405" /></a></p>
<p>At this point it is safe to note that the Microsoft Office development team should seriously consider over-hauling this component for usability (their usability metrics be damned).</p>
<h3>Step 3: Import Your Email List</h3>
<p>This is the part that I had the most trouble with as I was both nervous about supplying the wrong fields, and generally hitting the wrong button that might cause MS Word to send the email &#8220;accidentally&#8221;. Zero points for usability Microsoft.</p>
<p>Jump back to MS Word and select the &#8220;Mailings&#8221; tab in the ribbon (if you&#8217;re using previous versions of MS Word, you&#8217;ll have to Google the location of that feature). Once you have selected the Mailing&#8217;s tab, you can click on the &#8220;Start Mail Merge&#8221; button to kick things off.</p>
<ol>
<li>When you click the &#8220;Start Mail Merge&#8221; button, you will be presented with a short menu of choices.</li>
<li>Select the option &#8220;Email Messages&#8221; from the list.</li>
</ol>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/mailings.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/mailings_thumb.jpg" alt="Sample Mailings Tab in MS Word 2007" width="540" height="405" /></a></p>
<p>Next, click on the &#8220;Select Recipients&#8221; button. You will be presented with three options in the drop-down list. Select &#8220;User Existing List&#8230;&#8221; from the options.</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/existing_list.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/existing_list_thumb.jpg" alt="existing_list" width="540" height="256" /></a></p>
<p>You will be presented with a &#8220;Select Data Source&#8221; dialog. Browse to the location where you saved your *.CSV and select the file and click &#8220;Open&#8221;. If you still have your CSV file open in Excel or another application, you may receive a prompt to open a &#8220;Read-only&#8221; copy or create a &#8220;Local&#8221; copy. Select read-only as that is about the only action we&#8217;re performing with the file.</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/sample_csv.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/sample_csv_thumb.jpg" alt="Sample Select Data Source dialog in MS Word 2007" width="265" height="222" /></a> <a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/mail_merge_recipients.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/mail_merge_recipients_thumb.jpg" alt="Sample of Mail Merge Recipeints dialong in MS Word 2007" width="265" height="195" /></a></p>
<p>If you&#8217;re curious to see the data you imported, click on &#8220;Edit Recipient List&#8221; in the main menu &#8212; you will get a dialog that lists the records in your *.CSV. There are a few useful aspects to this feature such as selecting and deselecting recipients, de-duping, sorting, and validation.</p>
<p>Moving on&#8230;</p>
<h3>Step 4: Customize The Message Format</h3>
<p>This next step is important (as are the following). You will need to personalize the email message along with some fields which are not readily apparent later on. The first thing you should do is customize the appearance of the recipient&#8217;s name. To do this, click on the &#8220;Address Block&#8221; button. You will receive a dialog that will assist you in choosing an appropriate format for the name. I&#8217;ve chosen the disable &#8220;Postal Code Insert&#8221; as those fields do not exist in my email list; however, the last option is worth considering &#8212; &#8220;Format address according to the destination country/region&#8221;. A sample of the output is displayed on the right-hand of the dialog.</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/address_block.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/address_block_thumb.jpg" alt="address_block" width="540" height="285" /></a></p>
<p>Click &#8220;OK&#8221; when your settings are customized.</p>
<p>The next button beside &#8220;Address Block&#8221; (working from left to right), is &#8220;Greeting Line&#8221;. This feature allows you to create a greeting line such as: &#8220;Dear John Smith,&#8221; &#8212; going so far as to allow you to apply additional formatting. It can be useful for form messages, but for the purpose of this exercise, we&#8217;ll use the sample message and greeting like we created earlier.</p>
<p>The next thing you&#8217;re going to want to do (in fact, you can probably do this before some of the previous steps to personalizing the message), is match the fields in your CSV to the fields the typical Mail Merge expects. You can do this by clicking on the &#8220;Match Fields&#8221; button:</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/match_fields.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/match_fields_thumb.jpg" alt="Sample Match Fields Button in MS Word 2007" width="265" height="199" /></a> <a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/fields.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/fields_thumb.jpg" alt="Sample Fields dialog in MS Word 2007" width="265" height="199" /></a></p>
<p>You will be presented with a small dialog which, if you&#8217;ve formatted your CSV properly will have automatically detected the matching fields, otherwise you will need to manually troll through the list and match the fields as needed. Since we have only a few fields to deal with, it shouldn&#8217;t be a big chore. If you recall, we have a fourth field &#8220;claimid&#8221;. We&#8217;ll get to that one in a moment.</p>
<p>Click &#8220;OK&#8221; to continue.</p>
<h3>Step 5: Personalizing The Email Message</h3>
<p>At this point the task is almost complete. You now have all the necessary mappings for your email list along with a working copy of your message. It is now time to insert the personalization fields.</p>
<p>To insert personalization fields perform the following steps:</p>
<ol>
<li>Select [firstname] from the greeting line (first line).</li>
<li>Click on the &#8220;Insert Merge Field&#8221; button. You will be presented with a list of fields matching your email list.</li>
<li>Select &#8220;firstname&#8221; from the list.</li>
</ol>
<p>What you should now see is the greeting line as it is customized with the fields. e.g.</p>
<p>Dear <strong>[firstname]</strong> [lastname], is now Dear <strong>«firstname»</strong> [lastname],</p>
<p>Repeat these steps for the last name and any other field you might want to insert into your message.</p>
<p><strong>NOTE:</strong> since MS Word 2007 automatically converts text that looks like a URI into an html link, you will need to ensure that the link remains as plain text, especially if you are adding a personalization field. Allowing the application to automatically format your links does not mean it is correct. e.g http://www.somedomain.com/<strong>«</strong>claimid» may be parsed as:</p>
<pre>&lt;a href="http://www.somedomain.com/"&gt;http://www.somedomain.com/<strong>«</strong>claimid»&lt;/a&gt;</pre>
<p>Once you are finished with this step, you may want to use the &#8220;Auto Check for Errors&#8221; feature located here:</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/autocheck.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/autocheck_thumb.jpg" alt="Sample Auto Check For Errors dialog in MS Word 2007" width="540" height="405" /></a></p>
<p>There are three options &#8212; the first of which is likely the most useful (and grief-free).</p>
<h3>Step 6: Deploying The Email</h3>
<p>This IS the last step, after which I highly recommend you take a breather and get yourself a beer, if only to calm the nervousness of relying on this method of deployment &#8212; believe me, it&#8217;s understandable.</p>
<p>To send your email message, click on the &#8220;Finish &amp; Merge&#8221; button:</p>
<p><a href="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/send.jpg"><img src="http://www.farfromfearless.com/wp-content/uploads/HowToUseMailMergeInMicrosoftWord_111CC/send_thumb.jpg" alt="Sample Finish and Merge dialog in MS Word 2007" width="540" height="405" /></a></p>
<p>There are three options with this feature, but the one you&#8217;re going to want to use with this excercise is &#8220;Send E-mail Messages&#8221;. Selecting the last option will present you with a dialog (yet again); complete the dialog options before sending.</p>
<ol>
<li>Select the field you&#8217;ve mapped for the recipient&#8217;s email address.</li>
<li>Supply a relevant subject line.</li>
<li>Select a message format (text or HTML).</li>
<li>Select how many recipients are to receive the message.</li>
</ol>
<p>Click &#8220;OK&#8221; when you are done.</p>
<p>MS Word will now send your Mail Merged message(s) &#8212; individually &#8212; using MS Outlook. If you have not started the application, it will automatically prompt you to do so. To be safe, monitor your outbox and your sent messages to confirm that the email was deployed. Depending on the volume of email recipients in your list, you should have <strong>just as many individual emails</strong> sitting in your sent/outbox.</p>
<p>That&#8217;s it. You&#8217;re done. Go get a beer (I need one now after writing this).</p>
<h2>Conclusion</h2>
<p>As I warned in my earlier statements, this method is not ideal &#8212; and in all likelihood should be avoided at all costs unless you are in a serious bind.</p>
<p>I cannot guarantee the results of this method as it will vary from deployment to deployment. If you skipped past the first few steps and neglected to contact your target company&#8217;s IT administrators to conform to IT policy, you&#8217;re in for an inbox loaded with bounce-backs and delivery failures at best &#8212; at worst, you&#8217;re going to get a call from someone with a lot of very uncomfortable questions.</p>
<p>Again, there ARE repercussions if you avoid your due diligence; however, if you are attempting this method, you&#8217;re best off to apply it to low volume deployments. If you want anything larger than say 100 recipients, you&#8217;re better off using a service provider who can supply a smoother process, and help you navigate the pitfalls of email deployments.</p>
<p>You&#8217;ve been duly warned.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/08/05/how-to-use-mail-merge-in-microsoft-word-2007/feed/</wfw:commentRss>
		<slash:comments>26</slash:comments>
		</item>
		<item>
		<title>How to BETTER Communicate Design Decisions to Clients</title>
		<link>http://www.farfromfearless.com/2008/07/23/how-to-better-communicate-design-decisions-to-clients/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=how-to-better-communicate-design-decisions-to-clients</link>
		<comments>http://www.farfromfearless.com/2008/07/23/how-to-better-communicate-design-decisions-to-clients/#comments</comments>
		<pubDate>Wed, 23 Jul 2008 20:27:39 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[Grrr]]></category>
		<category><![CDATA[Web Strategy]]></category>
		<category><![CDATA[Analytics]]></category>
		<category><![CDATA[guidelines]]></category>
		<category><![CDATA[Strategy]]></category>
		<category><![CDATA[Website Metrics]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/?p=137</guid>
		<description><![CDATA[Communication is the cornerstone of building effective relationships. This is invariably true in business and when it comes to the business of website design and strategy, communication is critical.]]></description>
			<content:encoded><![CDATA[<p>In a recent recent article on Smashing Magazine, &#8220;<a title="How to communicate design decisions to clients" href="http://www.smashingmagazine.com/2008/07/22/how-to-communicate-design-decisions-to-clients/">How to communicate design decisions to clients</a>&#8220;, writer <a title="Brian D. Armstrong" href="http://www.startbreakingfree.com/">Brian D. Armstrong</a> laid out a five-point guideline on how to rationalize and present design for web-projects.</p>
<p>Mr. Armstrong opens with a fairly provocative statement:</p>
<blockquote><p>You may have noticed that in certain business and marketing circles there exists a <strong>“backlash” against the design community</strong>. Despite the rise of attractive, user-friendly solutions, in such circles unattractive designs have somehow managed to remain at the verge of acceptance.</p></blockquote>
<p>There are two things I would like to note about this broad-reaching statement: the backlash is not against the <strong>design community</strong>, but rather the <strong>agencies</strong>, <strong>vendors</strong>, and <strong>consultants</strong>. More specifically the backlash is a direct response to service-providers who are unable to provide solid end-to-end solutions to answer key business and marketing requirements.</p>
<p>Good or bad aesthetics aside, a business to business (B2B) or business to consumer (B2C) website that provides leads or successfully converts a prospect to a customer is more valuable by the simple fact that it does what it was intended to do: to market or to convert.</p>
<p>No amount of &#8220;business speak&#8221; by a <span style="text-decoration: line-through;">designer</span> agency/vendor/consultant can compensate for a poorly conceived product.</p>
<h2>&#8220;Pretty doesn’t mean effective: statistics are your friend!&#8221;</h2>
<p>Mr. Armstrong makes some good points in the article, the most notable &#8212; I believe &#8212; is this first guideline.</p>
<p>It is true that statistics are definitely your friend, but you have to be very careful on how you interpret the statistics.</p>
<p>The example given compares two websites from dramatically different industries. The first, <a title="2Advanced Studios" href="http://www.2advanced.com/">2Advanced Studios</a>, is a design firm while the second, <a title="Perry Marshall" href="http://www.perrymarshall.com/google/index.htm">Perry Marshall</a> is an author&#8217;s site. You might argue that they have similar business goals in mind, but the reality is that you cannot effectively compare these two businesses and glean true insight into what works and what does not.</p>
<p>Comparative statistics should be taken from competitor websites within the client&#8217;s industry or a related industry.</p>
<p>The adage: &#8220;What&#8217;s good for the goose&#8230;&#8221; does not apply here.</p>
<p>When refreshing an existing business website, your client will usually have a number of pre-conceived goals in mind.</p>
<p>The most typical goals are:</p>
<ul>
<li>Improve sales</li>
<li>Capture more leads</li>
<li>Build awareness (brand, industry issues, products &amp; solutions, etc).</li>
<li>Foster brand trust and build brand equity.</li>
</ul>
<p>Your client&#8217;s business goals should be your Rosetta Stone when interpreting and establishing your baseline metrics for success, and at this point aesthetics are a non-issue. This segues into Mr. Armstrong&#8217;s second guideline&#8230;</p>
<h2>&#8220;Every design should have a measurable goal&#8221;</h2>
<p>I have a particular issue with this statement:</p>
<blockquote><p>Saying that the goal is to “build the brand of XYZ” or “create an online presence” is basically meaningless to a business-minded person. <strong>A goal is only a goal if it is measurable</strong>.</p></blockquote>
<p>I agree that brand building might seem ephemeral and subjective, but there are quantifiable metrics for this &#8212; it <strong>does </strong>have meaning for a client.</p>
<p>A smart business will have clearly defined what constitutes effective brand recognition and build their brand&#8217;s equity on these definitions. The brand-building activities and their results are quantifiable (see &#8220;build brand awareness, Foster brand trust&#8230;&#8221;) &#8212; &#8220;Build the brand of XYZ&#8221; <strong>is</strong> a legitimate business goal.</p>
<p>That aside, &#8220;measurable goals&#8221; should be a reflection of the business goals, and if you can answer the challenge from a design perspective, and provide insight through incremental testing, etc. you will have built a stronger foundation for the client to determine their success metrics.</p>
<h2>&#8220;Your site should have one clear path&#8221;</h2>
<p>Mr. Armstrong suggests that:</p>
<blockquote><p>As a customer comes to your site, you want to be in complete control of the 1st thing they see, the 2nd, the 3rd, and all the way down until they accomplish your goal that you’ve set. In other words, they have entered your sites “funnel” or “chute”.</p></blockquote>
<p>In a perfect world we would all build sites that work on this principle. The reality is that entry points into a website vary from user to user, campaign to campaign, and search engine to search engine. The notion of strictly engineering the site to control your users and their behaviour is akin to trying to catch the wind.</p>
<p>On a business site, the most overlooked exercise is to determining what the audience wants from the website and compare it to what the website actually offers. What you should expect is a handful of common use-cases which illustrate the behaviour of the target audience and how they truly interact with the website.</p>
<p>If your client&#8217;s website offers only one service or product, then the primary audience will likely follow one common path, and Mr. Armstrong&#8217;s proposition can ring true; however, if your client&#8217;s website offer&#8217;s multiple products and solutions to several key audiences, the most effective thing you can do is develop a user-interaction strategy to help users qualify themselves quickly and funnel them to the right place regardless of their entry-point into the website.</p>
<p>E.g. from a user&#8217;s perspective: &#8220;I am this type of user, and I am looking for this type of content.&#8221;</p>
<p>Whatever strategy you take, the execution should remain simple, effectively changing the principle to : &#8220;Your site should drive your traffic effectively&#8221;.</p>
<h2>&#8220;Provide performance metrics&#8221;</h2>
<p>I would consider this an irresponsible statement:</p>
<blockquote><p>Finally, if you really want to impress business people, put together a little report of how a design performs. It doesn’t have to be fancy — maybe a little spreadsheet (those business types do love Excel) with some basic metrics you can pull off of Google Analytics like visitors, time on site, most popular funnel path, and even a goal conversion rate.</p></blockquote>
<p>I definitely agree that providing post-launch metrics are an effective means of helping to justify or support certain design decisions on a website, but this needs to be put into serious perspective: a responsible <span style="text-decoration: line-through;">designer </span>Agency/Vendor/Consultant will look first to ensure that the metrics support the design recommendations as it applies to the <strong>business goals</strong>.</p>
<p>To be clear: look to the business goals of the website FIRST &#8212; design decisions when it comes to websites should be considered with an eye towards <strong>better usability</strong> to support those business goals.</p>
<p>My biggest point of contention with this last guideline is that metrics are interpretive and can easily be used to disguise a poor architecture or site user-interaction strategy.</p>
<p>The value of certain metrics are largely determined by type of website, which in many cases is a reflection of the fundamental difference between a E-commerce website vs. a Lead Generation website. &#8220;Traffic Volume&#8221; for one site does not equate to &#8220;Lead Capture&#8221; on another.</p>
<p>Simply providing a spreadsheet and some screen captures is a easy way to obfuscate or skew the meaningful metrics. Be responsible and avoid polluting your client&#8217;s metrics without providing a deeper understand of the &#8216;why&#8217; behind the numbers.</p>
<h2>Conclusion</h2>
<p>What the last section of Mr. Armstrong&#8217;s article should have proposed is:</p>
<p>Much of the time, &#8220;business speak&#8221; can (and will likely) hamper true conversations and discussions around meeting business goals. I would suggest that rather than effect pretence, speak plainly.</p>
<p>When you are engaged with a client to develop or refresh their website, it is your responsibility to educate yourself and your client about what constitutes good design as it is applied to their project, and ultimately how the goals are quantified.</p>
<p>This is how an agency/vendor/consultant can add true value for a client.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/07/23/how-to-better-communicate-design-decisions-to-clients/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Separating the creative from the technical in web-design.</title>
		<link>http://www.farfromfearless.com/2008/06/24/separating-the-creative-from-the-technical-in-web-design/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=separating-the-creative-from-the-technical-in-web-design</link>
		<comments>http://www.farfromfearless.com/2008/06/24/separating-the-creative-from-the-technical-in-web-design/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 04:45:17 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[challenge]]></category>
		<category><![CDATA[Creative]]></category>
		<category><![CDATA[solutions]]></category>
		<category><![CDATA[technical]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/2008/06/24/separating-the-creative-from-the-technical-in-web-design/</guid>
		<description><![CDATA[The first lesson I learned when I started in web-design was that it was extremely difficult to separate the technical from the creative. This is the foundation of my design philosophy and something that comes up now and then in discussions around what it means to "do better work". Over the years, and with the rapid advances in web-technologies, the notion of "extremely difficult" has evolved into "extremely naive".]]></description>
			<content:encoded><![CDATA[<p>Web-design in all it myriad forms, can be characterized as the marriage of creative vision and technical implementation. But it is the limitations and resulting solutions for what can be achieved technically that &#8212; to me &#8212; is the truest definition.</p>
<p>Understandably, this is a touchy standpoint to take depending on who you talk to. From a design and creative perspective, one could argue that it&#8217;s all about the ideas; and from a development perspective, one could argue, equally, that the technology drives the creative.</p>
<p>I don&#8217;t see that either argument is truly wrong; rather, it has been my experience that creative ideas that steam ahead without regard for the technology required to execute the idea, have typically run amok. This is a lesson that I&#8217;m forced to re-iterate whenever I start on a new project.</p>
<h2>The road to project hell</h2>
<p>When I&#8217;m involved in any sort of discussion around creative for online media, one of my first questions is always, &#8220;how is it supposed to work?&#8221;</p>
<p>Depending on how that question is answered, three typical scenarios arise:</p>
<ol>
<li>People will hedge around the issue of technology and gloss over it with a dismissive, &#8220;let&#8217;s address that later &#8212; this is creative discussion,&#8221; response.</li>
<li>The &#8220;build it and they will come&#8221; syndrome rears its ugly head once again (this is, by far,  my personal favourite and one that I&#8217;d put money on if the occasion presents itself).</li>
<li>Technical members of a team are conveniently uninvited from the next few meetings until the concept is baked, and only once it&#8217;s ready to go into development are they brought back into the mix.</li>
</ol>
<p>Follow any of the above scenarios &#8212; unimpeded &#8212; to their natural conclusion, and the result is an uncomfortable, awkward discussion with the client about how the concept needs to be revisited.</p>
<p>This is the not-so-fun part where I usually get dragged back into the mix to help sort things out. For some reason &#8212; and despite my best efforts &#8212; the same issues come up time and again.</p>
<p>(At this point I usually excuse myself for a sanity check.)</p>
<p>Seriously, how many awkward client conversations does it take for folks to realize the pattern? How much more of a projects&#8217; profit margin need to be consumed before the red flags start to go up? What about the impact to public/client perception of the creative company as a whole?</p>
<h2>Rock the boat</h2>
<p>When it comes to online media, it is naive to foster the notion that separating the creative from the technical is sound practice.</p>
<p>If you find yourself in a scenario such as the ones I mentioned earlier, consider the following:</p>
<ol>
<li>Challenge the assumptions and address the issue head-on. There are solid technical solutions to creative challenges, and just because the problem cannot be solved one way does not immediately discount the possibility of it being solved in some other manner. Engage the creative process with a healthy amount of pragmatism.</li>
<li>Web-projects need strategy, planning, and enough time to execute effectively. Very few online experiences/applications are instant hits. The rare ones that are (<a href="http://www.twitter.com">Twitter</a>, <a href="http://www.facebook.com">FaceBook</a>, <a href="http://www.basecamphq.com">BaseCamp</a>, etc), have strategy and planning behind them, each with enough time to evolve. Do not be afraid to play the devil&#8217;s advocate and ask the tough questions.</li>
<li>Designing and conceptualizing in a silo is rarely ever effective. External input (partial or impartial) can be the difference between having to call a client and tell them you can&#8217;t execute on what you proposed, and taking the kernel of an idea and pushing it in a direction previously not considered. Keep your technical team involved as much as possible &#8212; they are the last ones who have to execute the concept.</li>
</ol>
<p>When asked, this is how I consider being able to &#8220;do better work&#8221;:</p>
<p>If a creative team can accept the notion that separating the creative from the technical is folly, the possibility of conceptualizing better ideas and solutions (stronger creative) is all the more tangible.</p>
<p>Perhaps I am over-simplifying the issue (clients do play a big role in contributing to the issue as well), and there are many other considerations, but all of that aside, at some point common sense needs to prevail.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/06/24/separating-the-creative-from-the-technical-in-web-design/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Working at an Advertising Agency or a Boutique Shop &#8211; which option is better?</title>
		<link>http://www.farfromfearless.com/2008/03/18/working-at-an-advertising-agency-or-a-boutique-shop-which-option-is-better/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=working-at-an-advertising-agency-or-a-boutique-shop-which-option-is-better</link>
		<comments>http://www.farfromfearless.com/2008/03/18/working-at-an-advertising-agency-or-a-boutique-shop-which-option-is-better/#comments</comments>
		<pubDate>Tue, 18 Mar 2008 19:16:44 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[Grrr]]></category>
		<category><![CDATA[Agencies]]></category>
		<category><![CDATA[Creative]]></category>
		<category><![CDATA[Development]]></category>
		<category><![CDATA[Internships]]></category>
		<category><![CDATA[Work Experience]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/2008/03/18/working-at-an-advertising-agency-or-a-boutique-shop-which-option-is-better/</guid>
		<description><![CDATA[It's internship season again and the queries are starting to flow in greater numbers. One of the most frequently asked questions I hear from students is, "am I better off working at an ad agency or a boutique shop?" This is usually followed up by, "is one better than the other?"]]></description>
			<content:encoded><![CDATA[<p>With all the stiff competition for limited placements in agencies, it&#8217;s not difficult to understand the concern over wanting to work for the best and at the best creative agency. To confuse students further, they now have much more to choose from in terms of creative agencies &#8212; so much so that it is more difficult to draw a clear distinction between a traditional ad agency and a boutique shop when it comes to web.</p>
<p>The creative industry has seen an incredible upsurge in companies adding &#8220;interactive&#8221; to their service offering, and along with that we have a number of other vendor companies which bill themselves as agencies with similar services.</p>
<p>If you are a student, you may want to consider that the idea of &#8220;working for the best&#8221; is more of a matter of determining where you can best hone your craft &#8212; in this case, web design or development.</p>
<h4>Is there a difference?</h4>
<p>Yes. But let&#8217;s take a step back for a moment and take a look at the question holistically.</p>
<p>The creative industry is comprised of many players, but you can draw a clean line right down the middle &#8212; I can say this because I&#8217;ve been on both side of that industry line.</p>
<p>The players fall into two distinct categories: the traditional Advertising Agency, and the Boutique Shops (vendors).</p>
<p>In the past, it was possible to make a distinction based on their portfolios, but given the current state of the creative industry, we need to consider what makes an ad agency versus what makes a boutique shop.</p>
<p>For the most part, ad agencies have a much broader service offering than a boutique shop. A traditional ad agency will typically offer their clients such services as: branding, messaging, conceptualization, and design. These types of agencies bill themselves as a &#8220;full service&#8221; agency as most of them include additional services like &#8220;media buying&#8221;. A full service agency also has the added benefit of several organization layers &#8212; management specifically designed to handle a large volume of projects.</p>
<p>The service offering of a Boutique Shop is considerably less. In most cases, a Boutique Shop will offer only a fraction of the services which an ad agency supports. The services are typically design, development, broadcast, post-production, etc. Companies like this have chosen to specialize in one field or another and offer their specializations to larger companies who outsource to them. A Boutique Shop does not [always] have the organizational layers to handle volume.</p>
<p>When it comes to Interactive Services such as web design and development &#8212; this includes flash, application programming, etc, &#8212; ad agencies typically rely on outsource partners to provide that specialization.</p>
<p>At this point I can already see the emails coming in to argue this particular point, but let me say this much: ad agencies can often provide &#8220;Interactive Services&#8221; through internal web-teams, but most of them do not. This as more to do with their particular focus in the industry (traditional media, print, etc).</p>
<h4>Why the distinction?</h4>
<p>The distinction has less to do with size than it does with capabilities. More specifically, it&#8217;s about the creative.</p>
<p>Advertising agencies want to own the creative on every level. Quality is obviously important, but the execution is not something they want to concern themselves with most times. The capabilities of an advertising agency are quite considerable, but again, this all relies upon their outsourcing relationships &#8212; printers, media, etc. An ad agency relies on the specializations of a vendor to help them execute a concept.</p>
<p>Boutique shops typically do not have the capability to execute a fully integrated campaign on a national level let alone a global scale. That is not to say that they can&#8217;t leverage serious partnerships to allow them to do that, but even then the campaigns are limited in scope &#8212; mostly online with limited if any offline components.</p>
<p>Interactive boutique shops know this. Quite honestly, most of them appear to be quite happy with this distinction. There are certain financial and client-related constraints which boutique shops do not have to worry about simply because they typically will not encounter them. On the flip side, you get the few who attempt to bill themselves as a full service &#8220;agency&#8221;. Well, nobody is being fooled, least of all the client (if they&#8217;re smart).</p>
<p>Don&#8217;t get me wrong &#8212; a boutique shop can be creative and have great ideas. Sometimes those ideas resonate so strongly that they propagate into a campaign idea or platform, which may or may not turn into a national or global campaign. But you get the idea.</p>
<p>Suffice it to say that what a boutique shop does is execute on components of a campaign. A boutique shop can do this quickly where ad agencies with internal web development teams might take longer &#8212; specializations remember?</p>
<h4>Which is better?</h4>
<p>Neither is better … or worse.</p>
<p>Ad agencies offer tremendous opportunity for creative development, where as a boutique shop might offer better opportunity for technical development. For students, an internship is an opportunity to challenge the way you think and work, and ultimately what you&#8217;ve learned. If you are a student, you may want to consider the company which offers you the best experience in terms of professional growth and opportunity, and not necessarily what looks best on a resume.</p>
<p>When it comes to interactive &#8212; web design and development &#8212; I strongly suggest interning with a creative company which will challenge the skills and theories you&#8217;ve learned in school. The work you may encounter as an intern is a direct reflection of the capabilities of a creative company (ad agency or boutique shop), so make the determination based on what you might end up working on, and what you can walk away with.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/03/18/working-at-an-advertising-agency-or-a-boutique-shop-which-option-is-better/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>WordPress Theme Design Part 3: Color and Contrast</title>
		<link>http://www.farfromfearless.com/2008/01/24/wordpress-theme-design-part-3-color-and-contrast/?utm_source=rss&amp;utm_medium=rss&amp;utm_campaign=wordpress-theme-design-part-3-color-and-contrast</link>
		<comments>http://www.farfromfearless.com/2008/01/24/wordpress-theme-design-part-3-color-and-contrast/#comments</comments>
		<pubDate>Thu, 24 Jan 2008 20:18:02 +0000</pubDate>
		<dc:creator>Chris Murphy</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Developement]]></category>
		<category><![CDATA[Tutorial]]></category>
		<category><![CDATA[WordPress]]></category>
		<category><![CDATA[WordPress Themes]]></category>
		<category><![CDATA[Color]]></category>
		<category><![CDATA[Color Schemes]]></category>

		<guid isPermaLink="false">http://www.farfromfearless.com/2008/01/24/wordpress-theme-design-part-3-color-and-contrast/</guid>
		<description><![CDATA[In previous articles, I have written about colour and its importance when it comes to design. Since we're discussing design as it applies to WordPress themes, I thought it appropriate to revist the topic.]]></description>
			<content:encoded><![CDATA[<p>Color selection can be troublesome especially when it comes to designing for yourself. WordPress themes are no exception, and the exercise itself is possibly one of the more challenging aspects of creating a new theme. When it comes to design in general, there are some basic guidelines that you can follow to make things a little easier.</p>
<p>In my previous article &#8220;<a href="http://www.farfromfearless.com/2006/11/16/getting-emo-with-color/" title="Getting emo with color" target="_blank">Getting emo with color</a>&#8221; I discussed the benefits of understanding the emotional impact of color.</p>
<blockquote><p>&#8230;think about how certain colors can provoke a response. A combination of responses creates an experience. So when we design with color, what we’re really doing is designing an experience. So before you start mashing pixels together in your next design, ask yourself this one question: “What kind of experience do I want to create?” <a href="http://www.farfromfearless.com/2006/11/16/getting-emo-with-color/" title="Getting emo with color" target="_blank">Source: &#8220;Getting emo with color&#8221;</a></p></blockquote>
<p>When you&#8217;re designing your WordPress theme, consider what kind of experience you want your readers to have. This goes back to <a href="http://www.farfromfearless.com/2008/01/18/wordpress-theme-design-part-2-typography/" title="WordPress Theme Design Part 2: Web Typography" target="_blank">Part 2</a> of this series where I suggested asking yourself which type of blogger/writer you considered yourself. Knowing that is part of understanding how to develop an experience for your readers. If your articles are verbose then you may want to consider a color scheme that allows better readability over a longer period of time, or if you are brief, then a more flexible color scheme may be considered.</p>
<h4>A emotional user experience</h4>
<p>Color influences the User Experience in ways you might not immediately consider, and while color affects people in various ways, there are some generally accepted understandings:</p>
<ul>
<li>High-energy colors &#8212; colors that fall in the warmer part of the spectrum &#8212; tend to make readers feel restless. Certain combinations of colors can make readers feel agitated and that reflects in the amount of time they are willing to spent on a given page.</li>
<li>Low-energy colors &#8212; colors which fall in the cooler part of the spectrum &#8212; tend to leave readers feeling passive. Again, this is not necessarily a good thing as you are not engaging the reader (let&#8217;s hope your content is engaging).</li>
<li>Neutral colors &#8212; colors which are neither warm nor cool &#8212; make for a bland experience.</li>
</ul>
<p>Here are some examples of color schemes to illustrate color temperature. Keep in mind that not all of these sample pallets translate well for a design, but they are a good foundation to build on.</p>
<p><strong>Warm Colors:</strong></p>
<p><a href="http://www.colourlovers.com/palette/262435/affectionately"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/affectionately.png" alt="affectionately" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/257681/Alienor"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Alienor.png" alt="Alienor" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/213494/Hot_spice"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Hot_spice.png" alt="Hot_spice" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/260803/Mr._Camo_Pants"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Mr._Camo_Pants.png" alt="Mr._Camo_Pants" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/262466/S%C3%A6vik"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Svik.png" alt="Sævik" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/261965/Sphinx"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Sphinx.png" alt="Sphinx" height="124" width="175" /></a></p>
<p><strong>Cool Colors:</strong></p>
<p><a href="http://www.colourlovers.com/palette/262429/The_Lonely_Palm_Tree"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/The_Lonely_Palm_Tree.png" alt="The_Lonely_Palm_Tree" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/261046/from_pink_to_blue"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/from_pink_to_blue1.png" alt="from_pink_to_blue-1" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/213487/You_were_saying"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/You_were_saying.png" alt="You_were_saying" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/235767/Blow_Away"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Blow_Away1.png" alt="Blow_Away-1" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/255052/market_pepper"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/market_pepper.png" alt="market_pepper" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/3330/TrendyRobe"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/TrendyRobe.png" alt="TrendyRobe" height="124" width="175" /></a></p>
<p><strong>Neutral Colors:</strong></p>
<p><a href="http://www.colourlovers.com/palette/262452/Bad_News"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Bad_News.png" alt="Bad_News" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/213483/Blind_man_dream"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Blind_man_dream.png" alt="Blind_man_dream" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/262467/Dream_Home"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Dream_Home.png" alt="Dream_Home" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/246892/Green_Envy"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Green_Envy.png" alt="Green_Envy" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/257623/in_the_earth"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/in_the_earth.png" alt="in_the_earth" height="124" width="175" /></a> <a href="http://www.colourlovers.com/palette/234744/Missed"><img src="http://www.farfromfearless.com/wp-content/uploads/WordPressThemeDesignPart3_ABD6/Missed.png" alt="Missed" height="124" width="175" /></a></p>
<p><strong>Note:</strong> All samples were taken from <a href="http://www.colourlovers.com/" title="COLORLovers" target="_blank">COLOURLovers</a>.</p>
<h4>Contrast is key</h4>
<p>Take a look through <a href="http://www.smashingmagazine.com/2008/01/08/100-excellent-free-high-quality-wordpress-themes/" title="100 Excellent Free WordPress Themes" target="_blank">SmashingMagazine.com&#8217;s collection of WordPress themes</a>. What you&#8217;ll notice is that the color palettes fall equally on both sides of the spectrum (with a bare handful that are monochromatic). But what you may not immediately recognize is that each of them employs contrast to a high degree.</p>
<p>Contrast is a tool that works well to deliver focus add tension in a design. Developing contrast is not always as straightforward as designating a big block of white space (literally) as the content area. In order to develop a good balance between your color scheme and necessary contrast for your readers, you need to figure out a few things:</p>
<ul>
<li>On average, how long are your articles? The longer the article, the longer it takes for your readers to consume it. In a case like this, low contrast makes it quite difficult for a reader to maintain their attention and adds undue physiological strain.</li>
<li>Is there functionality or features in your sidebar that are absolutely integral to the reading experience. I&#8217;m not only talking about ad space here, I&#8217;m also talking about search features, or a list of recent or related articles, links, etc. If the sidebar features are not integral to the reading experience, you may want to make sure they recede into the background through lower contrast.</li>
<li>What is relevant in terms of content? Do you want your latest article to stand out from the rest? Consider that readers interested in your blog will be visiting through varying methods(RSS, Organic Search, Track-backs, etc.), which means you may want to ensure they get what they are looking for quickly.</li>
</ul>
<h4>Tools of the trade</h4>
<p>In my previous article, &#8220;<a href="http://www.farfromfearless.com/2006/11/16/getting-emo-with-color/" title="Getting emo with color" target="_blank">Getting emo with color</a>&#8220;, I mentioned a few tools that can help you in developing color schemes. Here is a site that I personally love: <a href="http://www.colourlovers.com/" title="COLORLovers" target="_blank">COLOURLovers</a>.</p>
<p>The samples generated by the community are great to experiment with and it also helps to see what others are doing as well. But be careful, these are color schemes and do not necessarily reflect a real-world application, just an aesthetic.</p>
<p>Fortunately, there are tools out there that can help you in terms of gauging contrast. Take a look at Jon Snook&#8217;s &#8220;<a href="http://snook.ca/archives/accessibility_and_usability/colour_color_co/" title="Color (color) contrast check" target="_blank">Colour (color) contrast check</a>&#8221; article. Jon provides a nifty little utility for evaluating the contrast of your color selections. The example page lists two other utilities which you can play around with as well. <a href="http://www.456bereastreet.com/archive/200709/10_colour_contrast_checking_tools_to_improve_the_accessibility_of_your_design/" title="10 colour contrast checking tools to improve the accessibility of your design" target="_blank">456Bereastreet.com complied a list of additional utilities</a> which are both desktop and web applications.</p>
<p>I can&#8217;t tell you which color schemes work best &#8212; that is for you to decide; however, I can tell you that regardless of the color scheme you end up with, it is wise to ensure that you provide contrast in the right places for the right reason. Understand your goals and design accordingly.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.farfromfearless.com/2008/01/24/wordpress-theme-design-part-3-color-and-contrast/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
	</channel>
</rss>

