<?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>Curtis Henson &#187; Design</title>
	<atom:link href="http://curtishenson.com/version7/category/design/feed/" rel="self" type="application/rss+xml" />
	<link>http://curtishenson.com/version7</link>
	<description>Freelance Web Designer and Wordpress Guru</description>
	<lastBuildDate>Wed, 21 Jul 2010 15:53:38 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	
		<item>
		<title>Creating a Chart on Your WordPress Archives Page</title>
		<link>http://curtishenson.com/version7/creating-a-chart-on-your-wordpress-archives-page/</link>
		<comments>http://curtishenson.com/version7/creating-a-chart-on-your-wordpress-archives-page/#comments</comments>
		<pubDate>Tue, 07 Jul 2009 16:00:29 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[functions]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[tutorial]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=638</guid>
		<description><![CDATA[One part of WordPress that I've never been overly impressed with is archives. This isn't so much a WordPress problem as it an archive problem, archives are inherently boring. As a result of this revelation I've spent some time thinking up new ways to present the information. My latest idea was adding charts to represent some of the data from the archives.]]></description>
			<content:encoded><![CDATA[<p>One part of WordPress that I&#8217;ve never been overly impressed with is archives. This isn&#8217;t so much a WordPress problem as it an archive problem, archives are inherently boring. As a result of this revelation I&#8217;ve spent some time thinking up new ways to present the information. My latest idea was adding charts to represent some of the data from the archives. This is a fairly simple function to output the info and style it as a chart. </p>
<p><em>If you want to use a flash or javascript chart, scroll to the bottom for a different function.</em></p>
<p><img src="http://curtishenson.com/wp-content/uploads/2009/07/chart.jpg" alt="chart" title="chart" class="alignnone size-full wp-image-650" /></p>
<h3>The Chart</h3>
<p>After looking for a lightweight flash or javascript charting solution, I decided for an archives page just plain CSS charts would be the way to go at first. So the output we are going for is something like this:</p>
<pre name="code" class="html">
&lt;dl class=&quot;barGraph 2008&quot;&gt;
	&lt;dt style=&quot;&quot; class=&quot;label&quot;&gt;&lt;a href=&quot;&quot;&gt;Jun&lt;/a&gt;&lt;/dt&gt;
	&lt;dd title=&quot;Jun&quot; style=&quot;height: 200px;&quot; class=&quot;bar Jun&quot;&gt;6&lt;/dd&gt;

	&lt;dt style=&quot;left: 55px;&quot; class=&quot;label&quot;&gt;&lt;a href=&quot;&quot;&gt;Jul&lt;/a&gt;&lt;/dt&gt;
	&lt;dd title=&quot;Jul&quot; style=&quot;height: 66.6667px; left: 55px;&quot; class=&quot;bar Jul&quot;&gt;2&lt;/dd&gt;

	&lt;dt style=&quot;left: 110px;&quot; class=&quot;label&quot;&gt;&lt;a href=&quot;&quot;&gt;Aug&lt;/a&gt;&lt;/dt&gt;
	&lt;dd title=&quot;Aug&quot; style=&quot;height: 100px; left: 110px;&quot; class=&quot;bar Aug&quot;&gt;3&lt;/dd&gt;

	&lt;dt style=&quot;left: 165px;&quot; class=&quot;label&quot;&gt;&lt;a href=&quot;&quot;&gt;Sep&lt;/a&gt;&lt;/dt&gt;
	&lt;dd title=&quot;Sep&quot; style=&quot;height: 133.333px; left: 165px;&quot; class=&quot;bar Sep&quot;&gt;4&lt;/dd&gt;

	&lt;dt style=&quot;left: 220px;&quot; class=&quot;label&quot;&gt;&lt;a href=&quot;&quot;&gt;Oct&lt;/a&gt;&lt;/dt&gt;
	&lt;dd title=&quot;Oct&quot; style=&quot;height: 166.667px; left: 220px;&quot; class=&quot;bar Oct&quot;&gt;5&lt;/dd&gt;

	&lt;dt style=&quot;left: 275px;&quot; class=&quot;label&quot;&gt;&lt;a href=&quot;&quot;&gt;Nov&lt;/a&gt;&lt;/dt&gt;
	&lt;dd title=&quot;Nov&quot; style=&quot;height: 100px; left: 275px;&quot; class=&quot;bar Nov&quot;&gt;3&lt;/dd&gt;

	&lt;dt style=&quot;left: 330px;&quot; class=&quot;label&quot;&gt;&lt;a href=&quot;&quot;&gt;Dec&lt;/a&gt;&lt;/dt&gt;
	&lt;dd title=&quot;Dec&quot; style=&quot;height: 66.6667px; left: 330px;&quot; class=&quot;bar Dec&quot;&gt;2&lt;/dd&gt;
&lt;/dl&gt;
</pre>
<h3>The Code</h3>
<p>The code in the function is essentially a Frankenstein of the wp_get_archives function from the WordPress core, and this <a href="http://www.terrill.ca/design/vertical_bar_graphs/">tutorial on creating vertical bar graphs</a>. It pulls the year, month and number of posts out of the database, then formats them into a list suitable for styling into a CSS chart.</p>
<pre name="code" class="php">
&lt;?php
function ch_archive_graph($args = ''){
	global $wpdb, $wp_locale;

	//template tag defaults
	$defaults = array(
		'graphYear' =&gt; '2007',
		'limit' =&gt; '13',
		'graphHeight' =&gt; '200',
		'xIncrement' =&gt; '55'
	);

	$maxHeight = 1;
	$scale = 1;

	$r = wp_parse_args( $args, $defaults );
	extract( $r, EXTR_SKIP );

	if ( '' != $limit ) {
		$limit = absint($limit + 1);
		$limit = ' LIMIT '.$limit;
	}

	$where = apply_filters('getarchives_where', &quot;WHERE post_type = 'post' AND post_status = 'publish'&quot;, $r );

	$query = &quot;SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb-&gt;posts $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit&quot;;
	$key = md5($query);
	$cache = wp_cache_get( 'ch_archive_graph' , 'general');

	$output = '&lt;dl class=&quot;barGraph '.$graphYear.'&quot;&gt;';

	if ( !isset( $cache[ $key ] ) ) {
		$arcresults = $wpdb-&gt;get_results($query);
		$cache[ $key ] = $arcresults;
		wp_cache_add( 'ch_archive_graph', $cache, 'general' );
	} else {
		$arcresults = $cache[ $key ];
	}
	if ( $arcresults ) {

		//Loop through to find the highest number of posts
		foreach ( (array) $arcresults as $arcresult ) {
			//number of posts in a month
			$total = $arcresult-&gt;posts;
			if($maxHeight &lt; $total) $maxHeight = $total;
		}

		//Reverse the months
		$arcresults = array_reverse($arcresults);
		foreach ( (array) $arcresults as $arcresult ) {
			//Limit to one year
			if($arcresult-&gt;year == $graphYear){
				//Get month name, then appreviate, delete the second line if you want full month names
				$month = sprintf(__('%1$s'), $wp_locale-&gt;get_month($arcresult-&gt;month));
				$month = sprintf(__('%1$s'), $wp_locale-&gt;get_month_abbrev($month));
				//Get archive link
				$url = get_month_link( $arcresult-&gt;year, $arcresult-&gt;month );
				//Number of posts in the month
				$num_posts = $arcresult-&gt;posts;

				//Determine the scale and the height of the bar
				$scale = $graphHeight / $maxHeight;
				$height = ($arcresult-&gt;posts * $scale);

				//Put it all together
				$output .= &quot;&lt;dt class='label' style='left: &quot;.$xOffset.&quot;px;'&gt;&lt;a href=&quot;.$url.&quot;&gt;&quot;.$month.&quot;&lt;/a&gt;&lt;/dt&gt;&quot;;
				$output .= &quot;&lt;dd class='bar &quot;.$month.&quot;' style='height: &quot;.$height.&quot;px; left: &quot;.$xOffset.&quot;px;' title=&quot;.$month.&quot;&gt;&quot;.$num_posts.&quot;&lt;/dd&gt;&quot;;

				//Increase the offset for the next bar
				$xOffset = $xOffset + $xIncrement;
			}
		}
	}	

	$output .= &quot;&lt;/dl&gt;&quot;;
	echo $output;

}
</pre>
<h3>Styling the Chart with CSS </h3>
<p>Styling the chart is made easier by the definition list.</p>
<pre name="code" class="css">
.barGraph {
	height: 200px;
	margin: 0;
	padding: 0;
	position: relative;
	}

.barGraph dt {
	bottom: 0;
	list-style:none;
	margin: 0;
	padding: 0;
	position: absolute;
	text-align: center;
	width: 54px;
	}

.barGraph dd {
	border: 1px solid #005559;
	bottom: 0;
	list-style:none;
	margin: 0 0 1.5em 0;
	padding: 0;
	position: absolute;
	text-align: center;
	width: 50px;
	background-color: #00868B;
	border-right: 5px solid #005559;
	color: #fff;
	font-weight: bold;
	}

	.barGraph dd:hover {
		border: 1px solid #FA8000;
		background-color: #F5BA52;
		border-right: 5px solid #FA8000;
		color: #000;
		}
</pre>
<h3>How to use the Graph</h3>
<p>The function works just like any other template tag. Add the above function to your functions.php file and the CSS to style.css. Then call the chart in your template like so: <code>&lt;?php ch_archive_graph(); ?></code></p>
<p>The template tag also includes a few options to make customizing it easier:</p>
<ul>
<li>&#8216;<code>graphYear</code>&#8216;   this is the year of the archive you want to display</li>
<li>&#8216;<code>xIncrement</code>&#8216;   this is the width of the bars in the chart</li>
<li>&#8216;<code>graphHeight</code>&#8216;  this is the height in pixels of the chart</li>
<li>&#8216;<code>limit</code>&#8216;    this is number of posts you want to display</li>
</ul>
<p>Example:<br />
<code>&lt;?php ch_archive_graph('graphYear=2007&#038;xIncrement=40&#038;graphHeight=400&#038;limit=6'); ?></code></p>
<h3>Bonus: For Javascript Charts</h3>
<p>If you need the output for a javascript based chart, you only need to alter things a bit to get a javascript array or months and number of posts, then plug them into whatever charting you want to use.</p>
<pre name="code" class="php">
function ch_count_months_js_output($args = ''){
	global $wpdb, $wp_locale;

	$defaults = array(
		'limit' =&gt; '',
		'before' =&gt; ''
	);

	$r = wp_parse_args( $args, $defaults );
	extract( $r, EXTR_SKIP );


	$where = apply_filters('getarchives_where', &quot;WHERE post_type = 'post' AND post_status = 'publish'&quot;, $r );
	$join = apply_filters('getarchives_join', &quot;&quot;, $r);

	$query = &quot;SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM $wpdb-&gt;posts $join $where GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC $limit&quot;;
	$key = md5($query);
	$cache = wp_cache_get( 'ch_count_months_js_output' , 'general');

	if ( !isset( $cache[ $key ] ) ) {
		$arcresults = $wpdb-&gt;get_results($query);
		$cache[ $key ] = $arcresults;
		wp_cache_add( 'ch_count_months_js_output', $cache, 'general' );
	} else {
		$arcresults = $cache[ $key ];
	}
	if ( $arcresults ) {
		$arcresults = array_reverse($arcresults);
		$posts = array();
		$months = array();
		foreach ( (array) $arcresults as $arcresult ) {
			$month = sprintf(__('%1$s'), $wp_locale-&gt;get_month($arcresult-&gt;month));
			array_push($months, $month);
			array_push($posts, $arcresult-&gt;posts);
		}
	}	
	print_r($months);
	print_r($posts); 

	echo '&lt;p type=&quot;text/javascript&quot;&gt;'; 
	echo 'var months = [&quot;', join($months,'&quot;,&quot;'), '&quot;];'; 
	echo 'var posts = [', join($posts,','), ']';
	echo '&lt;/p&gt;';
}
</pre>
<blockquote><p>Let me know if you use it or improve it!</p></blockquote>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/creating-a-chart-on-your-wordpress-archives-page/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Checkmate 2.0: A Free Premium WordPress Theme</title>
		<link>http://curtishenson.com/version7/checkmate-20-a-free-premium-wordpress-theme/</link>
		<comments>http://curtishenson.com/version7/checkmate-20-a-free-premium-wordpress-theme/#comments</comments>
		<pubDate>Fri, 12 Dec 2008 23:07:10 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Curtis Henson]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[Free Themes]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=392</guid>
		<description><![CDATA[Checkmate 2.0 is a popular premium WordPress theme used by people all over the world that just received a major update.  It has minimalist design based on a grid with plenty of theme options, ad management and more! ]]></description>
			<content:encoded><![CDATA[<p>Checkmate has been a very popular WordPress theme with thousands of users worldwide. Now it is has been made even better. I&#8217;ve learned a thing or two from the users of Checkmate, listened to the feature requests and I&#8217;ve decided it is time to release Checkmate 2.0.  Checkmate 2.0 is built on the original version of Checkmate, but could almost be considered a completely new theme. </p>
<p>The interface has gotten a huge and much needed update. The layout is still simple and clean but now is more polished and modern. Customizing the CSS and the look of theme is even better, the entire site was coded with the end user customizing the site in mind.</p>
<h3>Download Checkmate 2.0</h3>
<ul class="download">
<li><a href="http://demos.curtishenson.com/checkmate">View the Demo Site</a></li>
<li><a class="downloadlink" href="http://curtishenson.com/version7/wp-content/plugins/download-monitor/download.php?id=10" title="Version2.0.4 downloaded 3718 times" >Checkmate 2.0 (3718)</a></li>
</ul>
<div class="clearfix gallery">
<a href="http://curtishenson.com/wp-content/uploads/2008/12/checkmate.png"><img src="http://curtishenson.com/wp-content/uploads/2008/12/checkmate-158x300.png" alt="checkmate" title="checkmate" width="158" height="300" class="alignleft size-medium wp-image-409" /></a><a href="http://curtishenson.com/wp-content/uploads/2008/12/a-post-with-images.png"><img src="http://curtishenson.com/wp-content/uploads/2008/12/a-post-with-images-157x300.png" alt="a-post-with-images" title="a-post-with-images" width="157" height="300" class="alignleft size-medium wp-image-413" /></a><a href="http://curtishenson.com/wp-content/uploads/2008/12/checkmate-203a-checkmate-options-2014-wordpress.png"><img src="http://curtishenson.com/wp-content/uploads/2008/12/checkmate-203a-checkmate-options-2014-wordpress-106x300.png" alt="checkmate-203a-checkmate-options-2014-wordpress" title="checkmate-203a-checkmate-options-2014-wordpress" width="106" height="300" class="alignleft size-medium wp-image-411" /></a>
</div>
<h3>Theme Options</h3>
<p>There has been a total redesign of the theme options page, and also new theme options to make <strong>customizing Checkmate even easier</strong>. Checkmate 2.0 has the ability to <strong>automatically detect uploads</strong> for CSS, logos, and backgrounds, which can easily be changed via the theme options page.</p>
<h3>Layout Options</h3>
<p>I mentioned the layout has been updated, well now it is also more flexible. Several users wanted a true <strong>3 column layout</strong>(<em>columns on each side of the content</em>), now this is possible along with a single right column, a split right column, or a combo right column. All this is controlled using theme options and widget areas, no code editing!</p>
<h3>Ad Management</h3>
<p>Ad management remains in Checkmate 2.0 unchanged. It is the same simple and flexible widget and theme options combination which gives you a quick and easy way to get ads on your theme.</p>
<h3>Support</h3>
<p>Support for Checkmate has always been a strong point and something I&#8217;ve strove to provide the best support a free theme offers. Alas WordPress comments and email aren&#8217;t the best solution, so all support will now be handled via Tender. Where you <a href="http://curtishenson.tenderapp.com"><strong>can ask questions, read documentation, and contribute to discussions</strong></a>.</p>
<h3>Features</h3>
<p>Checkmate already had a big feature list, now it is even bigger:</p>
<ul>
<li>Optional background header images controlled by theme options and uploads are automatically detected</li>
<li>User defined style sheets, easily changed and uploads are automatically detected</li>
<li>Auto detected logo controlled through theme options</li>
<li>Optional featured categories</li>
<li>Feedburner integration</li>
<li>Drop down Page menu, with theme options to control which Pages show in the menu</li>
<li>Optional footer widget areas</li>
<li>Option to use Checkmate&#8217;s previous rounded corner look</li>
<li>Ability to insert code or content into the header, after a post, or footer, without editing theme files</li>
<li>Ad management</li>
<li>Checkmate comes with 4 color themes for you to build on: grey, brown, cake, and dark.</li>
<li>Custom widgets built for Checkmate.</li>
<li>Tabbed Content Box &#8211; widget enabled</li>
<li>Two, Three, or Split Column Design</li>
<li>Feedburner Integration</li>
<li>Optional Widget enabled footer</li>
<li>Custom Icons</li>
<li>Gravatar support for authors and comments(WordPress 2.5)</li>
<li>Custom author, archive, tag, category, and search pages.</li>
<li>Widget Enabled Sidebars</li>
</ul>
<h3>Updates</h3>
<ul>
<li>Version 2.0.1</li>
<ul>
<li>Updated for WordPress 2.7</li>
<li>Threaded Comments Enabled</li>
<li>Utilizes post_class()</li>
<li>Automatically Checks for Updates</li>
</ul>
<li>Version 2.0.2</li>
<ul>
<li>Trackbacks/pingbacks style change, automatically hidden</li>
<li>Comments navigation for 2.7 fixed</li>
<li>Upgraded theme to use jQuery 1.3</li>
<li>disabled auto check for update for now due to server load</li>
</ul>
<li>Version 2.0.3</li>
<ul>
<li>Added Localization</li>
<li>Changed title structure for single post pages</li>
</ul>
<li>Version 2.0.4</li>
<ul>
<li>Converted widgets to 2.8 API</li>
<li>Fixed bugs in widgets</li>
</ul>
</ul>
<h3>License</h3>
<p>Checkmate is released under the <a href="http://creativecommons.org/licenses/by-sa/3.0/us/">Creative Commons Attribution-Share Alike 3.0</a> license.  All I ask is that you link back to my website somewhere in your site.</p>
<ul class="download">
<li><a class="downloadlink" href="http://curtishenson.com/version7/wp-content/plugins/download-monitor/download.php?id=10" title="Version2.0.4 downloaded 3718 times" >Checkmate 2.0 (3718)</a></li>
</ul>
<h4>Really Like It?</h4>
<p>If you really like this theme and would like updates, more features, and new styles, why not grease the wheel and make a donation?<br />
<span id="msg_moreamount" class="error" style="display:none;">PayPal takes $0.35 commission for a $1 donation. Please enter at least $1.35 , thank you!</span>
	<span id="msg_noamount" class="error" style="display:none;">Please enter the amount you wish to donate and try again.</span>
	<span id="msg_activity" class="success" style="display:none;">Transferring to PayPal, please wait...</span>
		
	<form id="form_paypal" action="https://www.paypal.com/cgi-bin/webscr" method="post">
	  	<input type="hidden" name="cmd" value="_donations">
	  	<input type="hidden" name="business" value="svenhenson@gmail.com">
	  	<input type="hidden" name="item_name" value="Curtis Henson Theme Donation">
	  	<input type="hidden" name="no_shipping" value="0">
	  	<input type="hidden" name="no_note" value="1">
	  	<input type="hidden" name="currency_code" value="USD">
	  	<input type="hidden" name="tax" value="0">
	  	<input type="hidden" name="bn" value="PP-DonationsBF">
	  	<label for="">Amount (US$) : </label>
		<div>
			<input type="text" name="amount" id="input_amount" width="10" class="text" />
		  	<input type="submit" name="submit" value="Donate through Paypal" class="submit" />
		</div>
	</form></p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/checkmate-20-a-free-premium-wordpress-theme/feed/</wfw:commentRss>
		<slash:comments>41</slash:comments>
		</item>
		<item>
		<title>Grunt Labs is Alive!</title>
		<link>http://curtishenson.com/version7/grunt-labs-is-alive/</link>
		<comments>http://curtishenson.com/version7/grunt-labs-is-alive/#comments</comments>
		<pubDate>Sun, 28 Sep 2008 18:39:47 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Articles]]></category>
		<category><![CDATA[Curtis Henson]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[css3]]></category>
		<category><![CDATA[Downloads]]></category>
		<category><![CDATA[grunt]]></category>
		<category><![CDATA[jQuery]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=239</guid>
		<description><![CDATA[Every mad scientist needs his Frankenstein. Mine just happens to be a website. <a href="http://labs.gruntdesign.com/">Grunt Labs</a> is my ongoing experiment, a place to play, test, and generally ignore browsers lagging behind. <a href="http://labs.gruntdesign.com/">Grunt Labs</a> is also a sign of things to come for the blog and Grunt, but more on that later.]]></description>
			<content:encoded><![CDATA[<p><a href="http://curtishenson.com/wp-content/uploads/2008/09/gruntlabs.jpg"><img src="http://curtishenson.com/wp-content/uploads/2008/09/gruntlabs.jpg" alt="" title="gruntlabs" width="450" height="100" class="alignnone size-full wp-image-241" /></a></p>
<p>Every mad scientist needs his Frankenstein. Mine just happens to be a website. <a href="http://labs.gruntdesign.com/">Grunt Labs</a> is my ongoing experiment, a place to play, test, and generally ignore browsers lagging behind. <a href="http://labs.gruntdesign.com/">Grunt Labs</a> is also a sign of things to come for the blog and Grunt, but more on that later.</p>
<h3>So what is it really?</h3>
<p><a href="http://labs.gruntdesign.com/">Grunt Labs</a> is a repository for all my downloads(at least the good ones), projects, ideas, and general nuttiness I can come up with.  Ever since I launched <a href="http://labs.gruntdesign.com/checkmate/">Checkmate</a> I wanted a separate site where people could go get downloads and support. Grunt Labs will be integrated with <a href="http://lighthouseapp.com/">Lighthouse</a> in the future enabling issue tracking and all the goodness Lighthouse has to offer.</p>
<p><a href="http://curtishenson.com/wp-content/uploads/2008/09/gruntlabs2.jpg"><img src="http://curtishenson.com/wp-content/uploads/2008/09/gruntlabs2.jpg" alt="" title="gruntlabs2" width="450" height="179" class="alignnone size-full wp-image-243" /></a></p>
<h3>Playtime!</h3>
<p>Grunt Labs is also a playground for me to stretch out my code and try out new things. It uses CSS3 and <a href="http://jquery.com">jQuery</a> extensively and it is important to note this is an ongoing project. As I learn new things, better ways to code, and browsers evolve, the site will change and evolve into what I hope is ridiculously impressive. </p>
<h4>The Design</h4>
<p>The design is very basic and sparse. This is partly because of the crazy javascript going on and partly because the site is meant to change for each project. At this point the project pages don&#8217;t change much besides the background. That will change and vary from project to project.</p>
<h4>The Code</h4>
<p>The code consists of mostly basic html and CSS and the skeleton of the site was built on top of the Blueprint CSS Framework. Things get interesting when I mix in some CSS3 elements. To see the site in it&#8217;s full glory you&#8217;ll need Firefox 3 or a Webkit based browser like Safari. </p>
<p>Then comes in jQuery. My favorite javascript framework by far. This was my first push into the world of full page animation, and already I can see different ways of doing it. The page obviously uses some Coda style popups, full page animation, but it also uses some more subtle things.  Some elements are dynamically added and removed via javascript. I&#8217;ve got plans for much more javascript in the near future, but that has to wait on something being released ;) </p>
<p>I think I&#8217;ll save explaining more about the javascript in detail for another post.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/grunt-labs-is-alive/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Don&#8217;t Forget the Milk</title>
		<link>http://curtishenson.com/version7/dont-forget-the-milk/</link>
		<comments>http://curtishenson.com/version7/dont-forget-the-milk/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 20:32:22 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Notes]]></category>
		<category><![CDATA[art]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=215</guid>
		<description><![CDATA[This was just too good to not share. I have no other comment other than &#8220;Pure Awesome&#8221;. Yes you can [...]]]></description>
			<content:encoded><![CDATA[<p>This was just too good to not share. I have no other comment other than &#8220;Pure Awesome&#8221;. Yes you can quote me on that.</p>
<p>via <a href="http://ffffound.com/image/54a2773d8aa2c11e51f90768356dad3a0c1f1324">FFFFOUND!</a><br />
<a href="http://ffffound.com/image/54a2773d8aa2c11e51f90768356dad3a0c1f1324"><img alt="Grocery List" src="http://curtishenson.com/wp-content/uploads/2008/09/groverylist.jpg" title="Grocery List"  /></a></p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/dont-forget-the-milk/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Grunt Design Launches</title>
		<link>http://curtishenson.com/version7/grunt-design-launches/</link>
		<comments>http://curtishenson.com/version7/grunt-design-launches/#comments</comments>
		<pubDate>Mon, 11 Aug 2008 19:23:01 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Curtis Henson]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[freelance]]></category>
		<category><![CDATA[grunt]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=192</guid>
		<description><![CDATA[So what have I&#8217;ve been doing for the last few weeks? I&#8217;m happy to announce the launch of GRUNT at [...]]]></description>
			<content:encoded><![CDATA[<p><img src="http://curtishenson.com/wp-content/uploads/2008/08/grunt.jpg" alt="" title="grunt" width="430" height="150" class="alignnone size-full wp-image-191" /><br />
So what have I&#8217;ve been doing for the last few weeks?  I&#8217;m happy to announce the launch of <a href="http://gruntdesign.com">GRUNT</a> at gruntdesign.com.  This is my new business identity and a step forward in my freelance career.  CurtisHenson.com started out as a portfolio, and then became a blog, I recently redesigned the site to try and incorporate a portfolio but wasn&#8217;t happy with it.  So I decided to separate the man from the myth(or something like that).</p>
<p>I decided to build an identity around a logo I had done, which is pretty much ass backwards from the way most people would do it.  The gorilla was originally for a side project but now fronts the GRUNT name which I truly believe is an appropriate name and identity for me(being the megalomaniac I am).  Domain inspiration came from my friend <a href="http://blog.blinking8s.com/index.php">Will</a>, which also included several other &#8220;colorful&#8221; suggestions.</p>
<p>The website is built on what else but WordPress, backed up by jQuery and the usual suspects.  The portfolio is still going to get attention(i.e. — I need to find all that stuff), pagination and some separation.  But if I didn&#8217;t launch it, I would tinker with it for another few years.  So expect a few more features and eye candy in the future.</p>
<h3>So what about curtishenson.com?</h3>
<p>Ch-Ch-Ch-Changes.  Well just a few.  I always thought this current design was a bit busy and crowded, so I&#8217;ll be opening things up and creating white space(dark space?).  I&#8217;m also going to get rid of everything that doesn&#8217;t have to do with a blog or me.  A reorganization of content is coming which will also probably mean some more regular posting and more RSS feeds so you can tune how high the crap pushed to your RSS reader gets.</p>
<p>There is also going to be a new sub-site which is going to contain all the downloads and side projects I do and maybe even a support forum as the comments are getting a little crowded for Checkmate.</p>
<h3>New Projects</h3>
<p>Just a quick heads up on some projects.  I promise I am going to get started on Checkmate ver. 2.0, which will be light years ahead of the current version, as soon as I get some time.  I&#8217;ve also started programming a lifestream/tumblelog app in ruby on rails, so look for that in the future.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/grunt-design-launches/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Checkmate 2.0 Needs Your Input</title>
		<link>http://curtishenson.com/version7/checkmate-20-needs-your-input/</link>
		<comments>http://curtishenson.com/version7/checkmate-20-needs-your-input/#comments</comments>
		<pubDate>Wed, 25 Jun 2008 22:01:57 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Curtis Henson]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Free Themes]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[checkmate]]></category>
		<category><![CDATA[download]]></category>
		<category><![CDATA[theme]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=186</guid>
		<description><![CDATA[The Checkmate WordPress theme has been very popular and successful and it is time to start on the next version.  I want the input of all the people that have used Checkmate.  Help me make the best theme possible!]]></description>
			<content:encoded><![CDATA[<p>As I write this, my Checkmate Theme has 800 downloads and so far the feedback I&#8217;ve gotten on it has been great.  The theme is and has been used on large sites and been successful and for the most part error free.  </p>
<p>I think Checkmate is a great theme and I want to build on its frame and use what I&#8217;ve learned to improve it.  I want to update the look of Checkmate and add some more functionality to the theme.  This is where all you users come in.</p>
<p>I want to know what the people that are interested in Checkmate want out of the theme&#8217;s next version.  What do you want to be able to customize?  More custom widgets?  More theme options?  Let me know what features you would like to see Checkmate have!</p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/checkmate-20-needs-your-input/feed/</wfw:commentRss>
		<slash:comments>5</slash:comments>
		</item>
		<item>
		<title>Google Now Hosts Javascript Libraries</title>
		<link>http://curtishenson.com/version7/google-now-hosts-javascript-libraries/</link>
		<comments>http://curtishenson.com/version7/google-now-hosts-javascript-libraries/#comments</comments>
		<pubDate>Sat, 07 Jun 2008 17:55:55 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Code]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[Links]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Web Development]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=161</guid>
		<description><![CDATA[Google has released their Ajax Libraries API, and I for one welcome it.  Anything I can do to <strong>speed up websites</strong> and offload files is something I'll likely take advantage of.]]></description>
			<content:encoded><![CDATA[<p>News of <a href="http://code.google.com/apis/ajaxlibs/">Google Ajax Libraries API</a> is spreading fast, and I for one welcome it.  Anything I can do to <strong>speed up websites</strong> and offload files is something I&#8217;ll likely take advantage of.</p>
<p>They&#8217;ve recently added jQuery, and I&#8217;ve started using it with this new design.  So far it is working great, but will it last?  Anyone who uses Google Analytics knows that at times it can slow your page down.  Although Google says this is a faster alternative to using your own server, I think the chance for slow response time is still there.  </p>
<h3>The Real Benefit</h3>
<p>However, offloading the file to the <a href="http://en.wikipedia.org/wiki/Hackers_(film)">Gibsons</a> over at Google is not the main reason this is faster.  <strong>Caching is what makes this so much faster</strong>, after the initial download, the library is cached and no longer re-downloaded at every website.  For example if a user visits jQuery&#8217;s site, then visits mine, they will no longer have to wait for the jQuery library to load as it will already be cached on their computer.  Obviously this only works if people start using the service.  I imagine plenty of web 2.0 companies will start using the service, which will benefit everyone, and you should use it too.</p>
<h3>Security Risks</h3>
<p>All is not rosy though, there is some security risk when using the service.  If someone was able to hack into the service(unlikely) or someone with access was to turn evil(more likely, think postal workers) they would be able to inject javscript into your site.  This would be a flawless victory and fatality(<-- mortal kombat reference) for the hacker.  I think there is a <strong>VERY</strong> small chance of this actually happening, so the reward well exceeds that risk.</p>
<p>Another point to consider is Google will have access to data about your website it may not normally have access to.  This doesn&#8217;t bother me in the least as I worship at the Google temple, but for some the invasion may be more of a serious issue.</p>
<h3>How do I use it?</h3>
<p>Thats easy, you can either call the new script in a simple &lt;script> tag like I am currently doing.  Or use the google.load function.</p>
<p>Below is the script tag I use which calls the minified jQuery library.  The url structure is pretty straightforward: name of the library, version, and file name.  <strike>I believe using 1 as the version number gets the latest version, but I&#8217;m not 100% sure.</strike>  The structure below uses a version wild card to get the latest 1.*.* version.  I would recommend using the full version number for better  results(see Mark Lucovsky comment).</p>
<pre class="html">
&lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript">&lt;/script>
</pre>
<p>The next example uses the google.load function and is straight from the Google page.</p>
<pre class="js" name="code">
&lt;script src=&quot;http://www.google.com/jsapi&quot;&gt;&lt;/script&gt;
&lt;script&gt;
  // Load jQuery
  google.load(&quot;jquery&quot;, &quot;1&quot;);

  // on page load complete, fire off a jQuery json-p query
  // against Google web search
  google.setOnLoadCallback(function() {
    $.getJSON(&quot;http://ajax.googleapis.com/ajax/services/search/web?q=google&amp;;v=1.0&amp;;callback=?&quot;,

      // on search completion, process the results
      function (data) {
        if (data.responseDate.results &amp;&amp;
            data.responseDate.results.length&gt;0) {
          renderResults(data.responseDate.results);
        }
      });
    });
&lt;/script&gt;
</pre>
<p>For more information about the API see Google&#8217;s <a href="http://code.google.com/apis/ajaxlibs/">AJAX libraries</a> page</p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/google-now-hosts-javascript-libraries/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CurtisHenson.com Version 3.0</title>
		<link>http://curtishenson.com/version7/curtishensoncom-version-30/</link>
		<comments>http://curtishenson.com/version7/curtishensoncom-version-30/#comments</comments>
		<pubDate>Fri, 06 Jun 2008 16:53:58 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Curtis Henson]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[development]]></category>
		<category><![CDATA[Javascript]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=160</guid>
		<description><![CDATA[It's alive!  And <em>almost</em> error free.  I was never happy with the previous designs of this site, they seemed pasted together like a bad 80's collage.  So I set on the adventure to re-design my own site, something I hate doing because I always want to go in a thousand different directions.]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s alive!  And <em>almost</em> error free.  I was never happy with the previous designs of this site, they seemed pasted together like a bad 80&#8242;s collage.  So I set on the adventure to re-design my own site, something I hate doing because I always want to go in a thousand different directions.</p>
<h3>The Design</h3>
<p>I liked some things about the previous design like the color scheme(for now).  But I didn&#8217;t like the background much, and it left me limited in what I could do.  This time around I wanted a &#8220;cleaner&#8221; look, but not too clean.  This proved to be harder than I thought, but eventually I combined two other designs into what you see now.  I set out to freshen everything up and give it a good scrubbing and I&#8217;m happy with results(for now).  I did sacrifice whitespace, almost all of it.  I think I may need to address that in the future because I think the site looks somewhat &#8220;busy&#8221;(What do you think?).  </p>
<h3>The Layout</h3>
<p>This new design uses almost the same grid as the previous designs, but now it actually sticks to it throughout the site.  I&#8217;ve got some plans for the future and I wanted(needed) a strong grid and to actually stick to it this time.  The homepage is now something I&#8217;m happy with, it meets all my goals, and I will be able to update the top with my latest projects.  The site in whole is much more structured and hopefully easier to navigate now.</p>
<h3>The Portfolio</h3>
<p>This site used to be my portfolio, but when I started blogging a trashed it.  Since then it felt like this site had a bit of an identity crisis.  It wasn&#8217;t a really just a blog, but wasn&#8217;t a portfolio either.  I feel I&#8217;ve integrated by business and the blog much nicer now.  I wanted a flashy portfolio, but simple and effective at the same time.  I decided to use some AJAX for it, mainly because I wanted to experiment.  The result is a cool portfolio&#8230;that barely works at the moment.  I&#8217;m still working on the kinks and usability issues(like bookmarking) so if you spot any errors(or better ways of doing it) please let me know.  It is also pretty sparse over there as I haven&#8217;t really uploaded much to it yet.</p>
<h3>Cleanup</h3>
<p>I still haven&#8217;t done my ritual of going through the code and cleaning it all up and making it pretty so the backend is not optimized at this time. In fact the code for this website looks like a monkey grabbed my keyboard.  But it works, which is the most important part, unless you are a one of those people that reads the code to see how un-semantic sites are.  If you are one of those people(I read web-pages in pure HTML), you might have a heart attack looking at the code right now(give me a week, for your health&#8217;s sake).  The javascript also will need some attention at some point, but that will likely happen when jQuery 1.5 is released.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/curtishensoncom-version-30/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Democracy Sucks At Web Design</title>
		<link>http://curtishenson.com/version7/democracy-sucks-at-web-design/</link>
		<comments>http://curtishenson.com/version7/democracy-sucks-at-web-design/#comments</comments>
		<pubDate>Thu, 05 Jun 2008 23:31:08 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Design]]></category>
		<category><![CDATA[Links]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=145</guid>
		<description><![CDATA[Anyone that has ever had to use a U.S. Government website knows that they are horrible.  And by horrible I mean awful.  And by awful I mean terrible.  And by terrible I mean they are abominations of all that is good in the universe and beyond.  I have given up hope of these sites joining us in the new millennium but all is not lost.]]></description>
			<content:encoded><![CDATA[<p>Anyone that has ever had to use a U.S. Government website knows that they are horrible.  And by horrible I mean awful.  And by awful I mean terrible.  And by terrible I mean they are abominations of all that is good in the universe and beyond.  I have given up hope of these sites joining us in the new millennium but all is not lost.  </p>
<h3>RSS/XML to the Rescue</h3>
<p>There are a few sites that take government data and organize it into usable presentable information a non Tom Cruise type being can interpret.  But getting this data means manually scraping it, which &#8230;well&#8230; sucks.  I&#8217;m not going to spend my time doing it, and I doubt you would either.</p>
<p>Well the smarty pants guys(I&#8217;m just jealous) over at Princeton have written a paper suggesting stop the nonsense redesigning of government websites, and <a href="http://arstechnica.com/news.ars/post/20080603-study-gov-websites-should-focus-on-rss-xmlnot-redesigns.html">deliver the raw data via a structured format like RSS and XML</a>.  This would allow much more talented people to grab the data and run with it.   I can only imagine the beautifully usable sites that would come from easily obtainable data.  </p>
<h3>Throw in an API</h3>
<p>It would be pushing it, really pushing it, but creating an API for certain government websites could open all sorts of avenues.  Imagine a well done interface for the DMV, complete with AJAX, smooth gradients, and <em>calming</em> pastel colors.  I don&#8217;t know if we&#8217;ll ever see this type of integration but it is nice to imagine.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/democracy-sucks-at-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Observations, Tips and Some Complaining</title>
		<link>http://curtishenson.com/version7/observations-tips-and-some-complaining/</link>
		<comments>http://curtishenson.com/version7/observations-tips-and-some-complaining/#comments</comments>
		<pubDate>Thu, 08 May 2008 23:36:37 +0000</pubDate>
		<dc:creator>Curtis Henson</dc:creator>
				<category><![CDATA[Curtis Henson]]></category>
		<category><![CDATA[Design]]></category>

		<guid isPermaLink="false">http://curtishenson.com/?p=119</guid>
		<description><![CDATA[Designing a website is sort of like planning a large event, after a trip down the California coast to two large events I picked up on a few things.]]></description>
			<content:encoded><![CDATA[<p>Designing a website is sort of like planning a large event, after a trip down the California coast to two large events I picked up on a few things.  Mostly I wanted to complain, but these same complaints can be made of websites, and a few of my designs are guilty of them too.</p>
<h3>Plan It Out</h3>
<p><a href="http://www.bimmerfest.com/">Bimmerfest</a>, ah how I love thee.  Tons of nice BMWs and even more traffic, a lot more traffic.  Bimmerfest has been going on a few years now, and there is always a traffic jam.  I can excuse the traffic outside the event but it is inside the event that gets my panties in a bunch.  Whats this got to do with web design?  Not a whole lot but I&#8217;ll try to relate it.</p>
<p>With some planning the traffic inside the event could be kept mostly flowing.  There is a lot of bottlenecks when people are trying to leave and enter at the same time.  This can also happen in design.  There can be <strong>bottlenecks or choke points in navigation</strong>, places were clicking stops being intuitive and grinds to a halt, this can lead to <strong>visitors getting frustrated and leaving</strong>.</p>
<p>Planning out navigation(or directing traffic) will not only prevent choke points but also help you better plan out your website.  Visitors will be happy, you&#8217;ll be happy, and <strong>I&#8217;ll get a good parking place at the car show</strong>.</p>
<h3>Make It Obvious</h3>
<p>The next stop on my trip was the <a href="http://www.redbullairrace.com/">Red Bull Air Race</a>, which I highly recommend seeing in person&#8230;once.  My first problem was when I bought tickets I assumed they were seats, they weren&#8217;t, so I had to push through the 54,000 people to get to where I could see.  Oh well for me, but if you <strong>mislead visitors on your website</strong>(especially in sales) they will not be so understanding.</p>
<p>My second problem was finding the place.  No directions on the website(which with all the map API&#8217;s is inexcusable) and no signs pointing the way in downtown San Diego.  I ended up walking 15 minutes to the island because even people from San Diego couldn&#8217;t figure out where to go.  </p>
<p><strong>So make things painfully obvious</strong>!  Don&#8217;t assume because you know where South Embarcadero Island is that everyone else does.  In design this would be akin to <strong>mystery meat navigation or links with no visual cues</strong>.  People would rather have their hand held and treated like a 3 year old than to not be able to find the information at all.  So put out your hand, <strong>spit shine their cheek</strong>, smile, and take them to where they can give you money.</p>
<h3>Leave a Backdoor</h3>
<p>One thing about Bimmerfest is if you know Santa Barbara and the entrances, you can get in without waiting very long.  Like experienced or returning visitors, I know my way around, and can go through the backdoor.</p>
<p>Depending on your type of site, you may also be able to leave navigation aimed at returning users.  This way <strong>more mature users can bypass the hand holding and get straight to what they want</strong>.  Keyboard shortcuts are a great way to do this, experienced users will know they are there, but it won&#8217;t get in the way of new users.</p>
<h3>Sum it up</h3>
<p>Plan out traffic whether it be foot, car, boat, or packets on the inter tubes.   Make sure you have a plan to handle all the people.</p>
<p>Tell people where to go.  Like a sheep herding dog, bark until everyone goes in the right direction.  This can be a map, signs, ropes, web addresses, whatever just make sure it is plastered EVERYWHERE.</p>
]]></content:encoded>
			<wfw:commentRss>http://curtishenson.com/version7/observations-tips-and-some-complaining/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

