<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0">
 
 <title>Curtis Henson - Articles</title>
 
 <link href="http://curtishenson.com/" />
 <updated>2011-10-15T19:58:40+00:00</updated>
 <id>http://curtishenson.com/</id>
 <author>
   	<name>Curtis Henson</name>
   	<email>curtishenson.feed@gmail.com</email>
 </author>

 
 	<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/curtishenson" /><feedburner:info uri="curtishenson" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>curtishenson</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><feedburner:feedFlare href="http://add.my.yahoo.com/rss?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcurtishenson" src="http://us.i1.yimg.com/us.yimg.com/i/us/my/addtomyyahoo4.gif">Subscribe with My Yahoo!</feedburner:feedFlare><feedburner:feedFlare href="http://www.newsgator.com/ngs/subscriber/subext.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcurtishenson" src="http://www.newsgator.com/images/ngsub1.gif">Subscribe with NewsGator</feedburner:feedFlare><feedburner:feedFlare href="http://feeds.my.aol.com/add.jsp?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcurtishenson" src="http://o.aolcdn.com/favorites.my.aol.com/webmaster/ffclient/webroot/locale/en-US/images/myAOLButtonSmall.gif">Subscribe with My AOL</feedburner:feedFlare><feedburner:feedFlare href="http://www.bloglines.com/sub/http://feeds.feedburner.com/curtishenson" src="http://www.bloglines.com/images/sub_modern11.gif">Subscribe with Bloglines</feedburner:feedFlare><feedburner:feedFlare href="http://www.netvibes.com/subscribe.php?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcurtishenson" src="http://www.netvibes.com/img/add2netvibes.gif">Subscribe with Netvibes</feedburner:feedFlare><feedburner:feedFlare href="http://fusion.google.com/add?feedurl=http%3A%2F%2Ffeeds.feedburner.com%2Fcurtishenson" src="http://buttons.googlesyndication.com/fusion/add.gif">Subscribe with Google</feedburner:feedFlare><feedburner:feedFlare href="http://www.pageflakes.com/subscribe.aspx?url=http%3A%2F%2Ffeeds.feedburner.com%2Fcurtishenson" src="http://www.pageflakes.com/ImageFile.ashx?instanceId=Static_4&amp;fileName=ATP_blu_91x17.gif">Subscribe with Pageflakes</feedburner:feedFlare><entry>
 	  	<title>WordPress Custom Post Type and Meta Boxes Example</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/nh7ZlVJwuE0/wordpress-custom-post-types-and-meta-boxes-example" />
 	  	<updated>2010-04-30T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/wordpress-custom-post-types-and-meta-boxes-example</id>
 	  	<content type="html">&lt;p&gt;WordPress 3.0 is coming soon and one of the biggest new features is the ability to add custom post types. Making these custom post types is pretty easy, below is a simple but complete example of creating a link type custom post.&lt;/p&gt;
&lt;h3&gt;Register the Custom Post&lt;/h3&gt;
&lt;p&gt;The first thing you see here is the &lt;code&gt;register_post_type&lt;/code&gt; function which starts everything. You can read about this on the &lt;a href='http://codex.wordpress.org/Function_Reference/register_post_type'&gt;codex page&lt;/a&gt; or &lt;a href='http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress'&gt;Justin Tadlock's post&lt;/a&gt;. These two pages should get you up to speed fast.&lt;/p&gt;
&lt;h3&gt;Actions and Filters&lt;/h3&gt;
&lt;p&gt;The next bit of code are all the callbacks. The first two deal with adding the meta box and saving it. The next two change the columns in the WordPress admin when viewing a list of the custom posts. The last is for using custom template names.&lt;/p&gt;
&lt;h4&gt;The Meta Box&lt;/h4&gt;
&lt;p&gt;The first two functions &lt;code&gt;link_url_meta_box()&lt;/code&gt; and &lt;code&gt;save_post_data()&lt;/code&gt; deal with the added meta box. I&amp;#8217;ve kept things simple here so it should be easy to follow what&amp;#8217;s happening.&lt;/p&gt;
&lt;h4&gt;Custom Columns&lt;/h4&gt;
&lt;p&gt;When looking through the list of your custom post you&amp;#8217;ll probably want to display custom columns so it&amp;#8217;s easier to find what you want. The &lt;code&gt;nav_columns&lt;/code&gt; and &lt;code&gt;custom_nav_columns&lt;/code&gt; control this: &lt;code&gt;nav_columns&lt;/code&gt; sets everything up, and &lt;code&gt;custom_nav_columns&lt;/code&gt; determines what will be listed there.&lt;/p&gt;
&lt;h4&gt;Custom Template Names&lt;/h4&gt;
&lt;p&gt;Wordpress by default will use &amp;#8221;&lt;em&gt;single-link.php&lt;/em&gt;&amp;#8221; for our template name since we named the custom post type &amp;#8221;&lt;em&gt;link&lt;/em&gt;&amp;#8221;. But if you wanted to use a different template name for instance &amp;#8221;&lt;em&gt;foorbarlink.php&lt;/em&gt;&amp;#8221; you can change it using this part of the code. If you&amp;#8217;re happy with WordPress&amp;#8217; default naming you can exclude this completely. &lt;em&gt;
Below is the function for a link type post, one that you might use in a tumble log. It's a basic example of how to use the Custom Post Type feature in WordPress 3.0+&lt;/em&gt; &lt;script src='http://gist.github.com/385765.js?file=custom_post_types.php' /&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=nh7ZlVJwuE0:qvq9Ktnyp-g:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=nh7ZlVJwuE0:qvq9Ktnyp-g:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=nh7ZlVJwuE0:qvq9Ktnyp-g:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=nh7ZlVJwuE0:qvq9Ktnyp-g:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=nh7ZlVJwuE0:qvq9Ktnyp-g:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/nh7ZlVJwuE0" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/wordpress-custom-post-types-and-meta-boxes-example</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Edward Tufte Weighs in on WP7S</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/QPSOIBj6sJw/edward-tufte-weighs-in-on-wp7s" />
 	  	<updated>2010-03-08T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/edward-tufte-weighs-in-on-wp7s</id>
 	  	<content type="html">&lt;p&gt;&lt;a href='http://www.edwardtufte.com/bboard/q-and-a-fetch-msg?msg_id=0003cy&amp;amp;topic_id=1&amp;amp;topic=Ask+E%2eT%2e'&gt;Tufte gives his thoughts on the Windows Phone 7 Series interface&lt;/a&gt; (&lt;em&gt;There's a name&lt;/em&gt;). He doesn&amp;#8217;t seem too impressed but no one has actually &lt;em&gt;used&lt;/em&gt; it yet so maybe the end result will be better, but I personally doubt it. Also the comments are worth checking out, they have some good ideas and points.&lt;/p&gt;

&lt;p&gt;Some pop out points: &lt;ul&gt;
&lt;li&gt;Design at the actual scale of the final device.&lt;/li&gt;
&lt;li&gt;Design for the product not the keynote.&lt;/li&gt;&lt;/ul&gt;&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=QPSOIBj6sJw:3b0r4pnpIAU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=QPSOIBj6sJw:3b0r4pnpIAU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=QPSOIBj6sJw:3b0r4pnpIAU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=QPSOIBj6sJw:3b0r4pnpIAU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=QPSOIBj6sJw:3b0r4pnpIAU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/QPSOIBj6sJw" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/edward-tufte-weighs-in-on-wp7s</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>CSS Preprocessors</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/RGngHmYdpf8/css-preprocessors" />
 	  	<updated>2009-12-04T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/css-preprocessors</id>
 	  	<content type="html">&lt;p&gt;I&amp;#8217;ve recently had my eyes opened to CSS preprocessors and been looking for an excuse to use one. While I haven&amp;#8217;t had a need for one quite yet I&amp;#8217;ve been educating myself on them. Nathan Borror recently posted the article &amp;#8221;&lt;a href='http://nathanborror.com/posts/2009/nov/30/sass-isnt-me/'&gt;Sass isn't for me&lt;/a&gt;&amp;#8221; about this very subject. While I agree with most of the points, the &lt;strong&gt;real gold here is in the discussion of the article&lt;/strong&gt;. If you want some opinions or info about CSS preprocessors, the way they work, or the way people think &lt;em&gt;they should work&lt;/em&gt;, &lt;a href='http://nathanborror.com/posts/2009/nov/30/sass-isnt-me/'&gt;read the comments&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;What do I think&lt;/h3&gt;
&lt;p&gt;Honestly I don&amp;#8217;t have a fixed position on the issue of &lt;a href='http://sass-lang.com/'&gt;Sass&lt;/a&gt;, &lt;a href='http://lesscss.org/'&gt;LessCss&lt;/a&gt;, or preprocessors in general yet since I haven&amp;#8217;t used them. However I know what &lt;em&gt;I want&lt;/em&gt; in a preprocessor. The first and biggest issue to me is syntax, I write CSS like Nathan, everything on one line. I know CSS, I have years of experience with it&amp;#8217;s syntax, I don&amp;#8217;t &lt;em&gt;want&lt;/em&gt; to learn a new syntax. That counts Sass out, for now (a new syntax is being developed for Sass that is more tightly coupled to CSS).&lt;/p&gt;

&lt;p&gt;The second is features. Ultimately this will be the deciding factor for any project. Right now &lt;a href='http://sass-lang.com/'&gt;Sass&lt;/a&gt; and &lt;a href='http://lesscss.org/'&gt;LessCSS&lt;/a&gt; look similar, although &lt;a href='http://wiki.github.com/chriseppstein/compass'&gt;Compass&lt;/a&gt; and Sass look incredibly powerful together.&lt;/p&gt;

&lt;p&gt;Most of us have tons of experience with CSS and are reluctant to move to anything new (remember what it took to get you away from table based layouts?) regardless of CSS shortcomings. But nonetheless CSS does have a few large shortcomings that need to be addressed and it looks like preprocessors are going to be the answer for right now.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=RGngHmYdpf8:dvBV02hD8mo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=RGngHmYdpf8:dvBV02hD8mo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=RGngHmYdpf8:dvBV02hD8mo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=RGngHmYdpf8:dvBV02hD8mo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=RGngHmYdpf8:dvBV02hD8mo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/RGngHmYdpf8" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/css-preprocessors</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Creating a Chart on Your WordPress Archives Page</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/2VjKuOqhljQ/creating-a-chart-on-your-wordpress-archives-page" />
 	  	<updated>2009-07-07T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/creating-a-chart-on-your-wordpress-archives-page</id>
 	  	<content type="html">&lt;p&gt;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. This is a fairly simple function to output the info and style it as a chart. 
&lt;/p&gt;
&lt;em&gt;If you want to use a flash or javascript chart, scroll to the bottom for a different function.&lt;/em&gt;

&lt;img src="http://curtishenson.com/wp-content/uploads/2009/07/chart.jpg" alt="chart" title="chart" class="alignnone size-full wp-image-650" /&gt;

&lt;h3&gt;The Chart&lt;/h3&gt;
&lt;p&gt;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:
&lt;/p&gt;
&lt;script src="http://gist.github.com/607015.js?file=chart.html"&gt;&lt;/script&gt;

&lt;h3&gt;The Code&lt;/h3&gt;
&lt;p&gt;The code in the function is essentially a Frankenstein of the wp_get_archives function from the WordPress core, and this &lt;a href="http://www.terrill.ca/design/vertical_bar_graphs/"&gt;tutorial on creating vertical bar graphs&lt;/a&gt;. 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.
&lt;/p&gt;
&lt;script src="http://gist.github.com/607018.js?file=chart.php"&gt;&lt;/script&gt;

&lt;h3&gt;Styling the Chart with CSS &lt;/h3&gt;
&lt;p&gt;Styling the chart is made easier by the definition list.
&lt;/p&gt;
&lt;script src="http://gist.github.com/607021.js?file=chart.css"&gt;&lt;/script&gt;

&lt;h3&gt;How to use the Graph&lt;/h3&gt;
&lt;p&gt;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: &lt;code&gt;&amp;lt;?php ch_archive_graph(); ?&gt;&lt;/code&gt;
&lt;/p&gt;
&lt;p&gt;The template tag also includes a few options to make customizing it easier:
&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;'&lt;code&gt;graphYear&lt;/code&gt;'   this is the year of the archive you want to display&lt;/li&gt;
&lt;li&gt;'&lt;code&gt;xIncrement&lt;/code&gt;'   this is the width of the bars in the chart&lt;/li&gt;
&lt;li&gt;'&lt;code&gt;graphHeight&lt;/code&gt;'  this is the height in pixels of the chart&lt;/li&gt;
&lt;li&gt;'&lt;code&gt;limit&lt;/code&gt;'    this is number of posts you want to display&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;
&lt;code&gt;&amp;lt;?php ch_archive_graph('graphYear=2007&amp;xIncrement=40&amp;graphHeight=400&amp;limit=6'); ?&gt;&lt;/code&gt;

&lt;h3&gt;Bonus: For Javascript Charts&lt;/h3&gt;
&lt;p&gt;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.
&lt;/p&gt;
&lt;script src="http://gist.github.com/607023.js?file=chart.js"&gt;&lt;/script&gt;

&lt;p&gt;Let me know if you use it or improve it!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=2VjKuOqhljQ:AkyqVb8HbyU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=2VjKuOqhljQ:AkyqVb8HbyU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=2VjKuOqhljQ:AkyqVb8HbyU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=2VjKuOqhljQ:AkyqVb8HbyU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=2VjKuOqhljQ:AkyqVb8HbyU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/2VjKuOqhljQ" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/creating-a-chart-on-your-wordpress-archives-page</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Tender Quietly Adds Killer Little Feature</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/b2pL-6HhUHg/tender-quietly-adds-killer-little-feature" />
 	  	<updated>2009-06-16T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/tender-quietly-adds-killer-little-feature</id>
 	  	<content type="html">&lt;p&gt;&lt;a href="http://tenderapp.com/"&gt;Tender&lt;/a&gt; just rolled out a new javascript widget which allows you to insert a form into your site which will post straight to Tender.  The widget even provides links to documentation, and the creation of a user account for the person.  All this without the user having to leave your site, I'll be integrating it here soon.  So right now you probably have two questions: &lt;strong&gt;What is Tender?&lt;/strong&gt; and &lt;strong&gt;Why Do I Care?&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;What is Tender?&lt;/h4&gt;
&lt;p&gt;It's a support web app, I know sounds boring, and it is to be honest. But some of us have to deal with supporting things. &lt;a href="http://tenderapp.com/"&gt;Tender&lt;/a&gt; makes this incredibly easy and painless.&lt;/p&gt; &lt;p&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2009/06/tender_widget.jpg" alt="tender_widget" title="tender_widget" width="470" height="426" class="alignright size-full wp-image-620" /&gt;&lt;/p&gt; &lt;p&gt;Tender has some features which set it apart for me. Numeral uno is I can manage support requests from email, I hardly ever have to actually log into the website.  Second is the integration with &lt;a href="http://lighthouseapp.com"&gt;Lighthouse&lt;/a&gt;, my ticket tracking app of choice.  When I first released Checkmate I encouraged people to post tickets to &lt;a href="http://curtishenson.lighthouseapp.com"&gt;my lighthouse&lt;/a&gt;, it was a massive failure.  However &lt;a href="https://curtishenson.tenderapp.com/"&gt;my Tender&lt;/a&gt; has been a success and has made responding to support requests much less painful.
&lt;/p&gt;
&lt;h4&gt;Why Do I Care?&lt;/h4&gt;
&lt;p&gt;If you don't support any software or services you don't care, you shouldn't care, and you should be happy you don't deal with it. If you do, OR you &lt;strong&gt;SHOULD&lt;/strong&gt; be supporting something(&lt;em&gt;*cough* your WordPress themes *cough*&lt;/em&gt;) then you should care. Tender is an efficient, user friendly way to offer quality support. And this new widget is just an example of their commitment to making things easy for the users, who are the most important part of your software/service.
&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=b2pL-6HhUHg:Y-AH_B9K6Ms:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=b2pL-6HhUHg:Y-AH_B9K6Ms:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=b2pL-6HhUHg:Y-AH_B9K6Ms:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=b2pL-6HhUHg:Y-AH_B9K6Ms:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=b2pL-6HhUHg:Y-AH_B9K6Ms:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/b2pL-6HhUHg" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/tender-quietly-adds-killer-little-feature</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Quick Tip: Delay Page Loading with jQuery</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/ZQXkP9KOCm8/quick-tip-delay-page-loading-with-jquery" />
 	  	<updated>2009-04-07T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/quick-tip-delay-page-loading-with-jquery</id>
 	  	<content type="html">&lt;p&gt;On a site I recently worked on I wanted to have an animation before the next page loaded. What I wanted to happen was: user clicks a link, animation plays out, page is loaded normally. It is a nice little effect, but this is probably a trick you want to use sparingly&amp;#8230;please&amp;#8230;use it sparingly.&lt;/p&gt;

&lt;p&gt;This uses the &lt;a href='http://gsgd.co.uk/sandbox/jquery/easing/'&gt;easing&lt;/a&gt; plugin for jquery. The below example includes the animation just as an example.&lt;/p&gt;
&lt;script src='http://gist.github.com/607009.js?file=jquery-delay.js' /&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZQXkP9KOCm8:BVagbyKvbEE:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZQXkP9KOCm8:BVagbyKvbEE:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=ZQXkP9KOCm8:BVagbyKvbEE:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZQXkP9KOCm8:BVagbyKvbEE:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=ZQXkP9KOCm8:BVagbyKvbEE:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/ZQXkP9KOCm8" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/quick-tip-delay-page-loading-with-jquery</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Press75 Releases Two New Plugins</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/xb6oxkv3h4Y/press75-releases-two-new-plugins" />
 	  	<updated>2009-04-01T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/press75-releases-two-new-plugins</id>
 	  	<content type="html">&lt;p&gt;There are a few things that have been the realm of premium themes and some rare free themes: &lt;strong&gt;post thumbnails&lt;/strong&gt;, and &lt;strong&gt;easy video embedding&lt;/strong&gt;(&lt;em&gt;that doesn't suck&lt;/em&gt;). Press75 just released two simple yet powerful and incredibly useful plugins: &lt;a href="http://www.press75.com/the-simple-post-thumbnails-wordpress-plugin/"&gt;Simple Post Thumbnails&lt;/a&gt; and &lt;a href="http://www.press75.com/the-simple-video-embedder-wordpress-plugin/"&gt;Simple Video Embedder&lt;/a&gt;. &lt;a href="http://www.press75.com/category/blog/"&gt;Go check them out&lt;/a&gt;, and let Jason know how awesome they are. &lt;/p&gt;

&lt;h4&gt;Simple Post Thumbnails&lt;/h4&gt;
&lt;p&gt;Easily add thumbnail capability to your theme. Previously most people used &lt;a href="http://code.google.com/p/timthumb/"&gt;timthumb&lt;/a&gt;, but Simple Post Thumbnails is a bit cleaner. The killer feature is the ability to upload from a URL to your own server.&lt;/p&gt;

&lt;blockquote&gt;With the Simple Post Thumbnails plugin, adding thumbnail images to your posts is as easy as uploading any image (no editing required) and clicking the Update Post button. Upon upload, the plugin will re-size and crop the selected image according to whatever parameters you specify within the plugin configuration. To view this process in action, check out the Simple Post Thumbnails &lt;a href="http://www.press75.com/docs/simple-post-thumbnails/simple-post-thumbnails.mp4"&gt;screencast&lt;/a&gt;.&lt;/blockquote&gt;

&lt;a href="http://www.press75.com/the-simple-post-thumbnails-wordpress-plugin/"&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2009/04/thumbs.jpg" alt="thumbs" title="thumbs" width="470" height="288" class="alignnone size-full wp-image-549" /&gt;&lt;/a&gt;

&lt;h4&gt;Simple Video Encoder&lt;/h4&gt;
&lt;p&gt;There are a few video embed plugins for WordPress, but I don't like most of them, they are heavy weighted and often add unnecessary headaches for theme developers and users. The &lt;a href="http://www.press75.com/the-simple-video-embedder-wordpress-plugin/"&gt;Simple Video Embedder&lt;/a&gt; is a simple and effective way to add video embedding to your theme.&lt;/p&gt;  

&lt;blockquote&gt;With the Simple Video Embedder plugin, adding video to your post is as easy as pasting the URL for the video you want to add within a field, and then click submit. You can even provide simple width and height parameters to size your video to match your theme. Currently, this URL embed method works perfectly with several services including Vimeo.com, YouTube.com, MetaCafe.com, Revver.com, Google Video and Seesmic.com. Or, of you want to host your own video, the plugin is also compatible with FLV (Flash Video) and Quicktime formats.&lt;/blockquote&gt;

&lt;a href="http://www.press75.com/the-simple-video-embedder-wordpress-plugin/"&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2009/04/videoembedder.jpg" alt="videoembedder" title="videoembedder" width="470" height="472" class="alignnone size-full wp-image-550" /&gt;&lt;/a&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=xb6oxkv3h4Y:eWJsG-E_qwU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=xb6oxkv3h4Y:eWJsG-E_qwU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=xb6oxkv3h4Y:eWJsG-E_qwU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=xb6oxkv3h4Y:eWJsG-E_qwU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=xb6oxkv3h4Y:eWJsG-E_qwU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/xb6oxkv3h4Y" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/press75-releases-two-new-plugins</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Dynamic Multi-level Page Menus in WordPress</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/niTHBEApFdE/dynamic-multi-level-page-menus-in-wordpress" />
 	  	<updated>2009-02-23T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/dynamic-multi-level-page-menus-in-wordpress</id>
 	  	<content type="html">&lt;p&gt;Something I often see while trolling boards (&lt;em&gt;and engaging in flame wars&lt;/em&gt;) is the question: "&lt;strong&gt;How do I display a menu with a parent level and child level, but only if the current page actually has child pages?&lt;/strong&gt;" or something similar, but better phrased.  The gist is, all the basic WordPress template functions don't really do this, at least not very well.  You can use a few functions to get something close, but it often is a compromise with the end result not quite what the designer had envisioned. I say no more!&lt;/p&gt;

&lt;h3&gt;What it actually does&lt;/h3&gt;
&lt;p&gt;The purpose of this article is to give you a function you can pop into a theme just like a regular template tag (&lt;code&gt;wp_list_pages&lt;/code&gt;) but with some changed functionality.  What you'll get is a top level menu, nothing fancy, basic use of wp_list_pages really, but this top level is always there.  You also get child menus, as many as you need. The child menus only display if the page actually has children, and it only displays one level of children instead of all of them.&lt;/p&gt;

&lt;h3&gt;The beginning of a beast&lt;/h3&gt;
&lt;p&gt;I'm not gonna lie, this is gonna get thick and fast, in fact the code barely makes sense to me and I wrote it. Here's the short: we display a top level menu(&lt;em&gt;easy&lt;/em&gt;), we check if a page is a child(&lt;em&gt;easy&lt;/em&gt;), we check if the page has children itself(&lt;em&gt;weird hack&lt;/em&gt;), we count the page's parents and display the menu accordingly(&lt;em&gt;huh?&lt;/em&gt;).&lt;/p&gt;

&lt;h4&gt;The top level&lt;/h4&gt;
&lt;p&gt;We'll start with the top level menu, this is just a call to the wp_list_pages function, nothing fancy here. Output is generated with an unordered list with a few class names for styling.&lt;/p&gt;

&lt;script src="http://gist.github.com/610359.js?file=multi.php"&gt;&lt;/script&gt;

&lt;h4&gt;Displaying the children&lt;/h4&gt;
&lt;p&gt;The meat of this example is this next part, displaying the children is in thought a very simple process, in practice it takes a bit of pounding a square peg into a round hole.  We are still using the wp_list_pages function, and most of this code has one purpose, &lt;strong&gt;to determine the right depth to pass to wp_list_pages&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Initially we'll check if a page has any parent pages using &lt;code&gt;$post-&gt;ancestors&lt;/code&gt; and count the ancestors. I count the ancestors to determine the depth used later. Then check if a page has any more children.  We'll then separate those pages with children and those without.&lt;/p&gt;

&lt;script src="http://gist.github.com/610361.js?file=multi.php"&gt;&lt;/script&gt;

&lt;p&gt;All of the counting done above(&lt;em&gt;$n, depth, ancestors, blah blah&lt;/em&gt;) is all done in order to display only the first child level. This way you are not showing all the children of the top level page.&lt;/p&gt;

&lt;h3&gt;The whole function&lt;/h3&gt;
&lt;p&gt;In the final function I've added some output for the children and combined everything above.&lt;/p&gt;

&lt;blockquote&gt;Updated 4/20/09 - the function has changed slightly since the explanation above.&lt;/blockquote&gt;

&lt;script src="http://gist.github.com/610362.js?file=multi.php"&gt;&lt;/script&gt;

&lt;h3&gt;The future and spaceships&lt;/h3&gt;
&lt;p&gt;That is one way to do multiple level menus in wordpress, right now this function is only using pages, but I will be expanding it to use categories as well.  There are actually quite a few ways I want to expand this in order to make it truly useful.  This function is part of the larger &lt;a href="http://curtishenson.com/wordpress-theme-tools-project-announcement/"&gt;WordPress Theme Tools project&lt;/a&gt; that I'm starting. If you have any suggestions for this, find a bug, or know a better way, let me know!
&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;: I've updated the code on 4/20/09 but the function still works the same. As it is right now &lt;strong&gt;the sub pages are displayed in the default nested way&lt;/strong&gt; that WordPress naturally does it.  &lt;em&gt;The benefit of the function is that it only shows one level under the parent page instead of hard coding the depth or showing all the children.&lt;/em&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=niTHBEApFdE:L8JeSEeMTxU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=niTHBEApFdE:L8JeSEeMTxU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=niTHBEApFdE:L8JeSEeMTxU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=niTHBEApFdE:L8JeSEeMTxU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=niTHBEApFdE:L8JeSEeMTxU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/niTHBEApFdE" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/dynamic-multi-level-page-menus-in-wordpress</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Get More Design Control Over WordPress 2.7 Comments</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/Gb-by8DySD8/get-more-design-control-over-wordpress-27-comments" />
 	  	<updated>2009-01-14T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/get-more-design-control-over-wordpress-27-comments</id>
 	  	<content type="html">&lt;p&gt;So you got this awesome design all ready for WordPress 2.7, you even got how those pesky threaded comments planned out &lt;strong&gt;perfect&lt;/strong&gt;! Oops, didn't you know? WordPress' comment function well, not lacking for a better term, sucks...&lt;em&gt;a lot&lt;/em&gt;. It'll probably get better in the future, but what to do right now? Bend them to your will, no mercy. That is what &lt;strong&gt;Chad Coleman&lt;/strong&gt; has done, and thank God it was him and not me. &lt;/p&gt;

&lt;p&gt;Go read his article &lt;a href="http://c.hadcoleman.com/2009/01/comment-design-for-wordpress-27/"&gt;Comment Design For WordPress 2.7&lt;/a&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=Gb-by8DySD8:8phYR9s16-0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=Gb-by8DySD8:8phYR9s16-0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=Gb-by8DySD8:8phYR9s16-0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=Gb-by8DySD8:8phYR9s16-0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=Gb-by8DySD8:8phYR9s16-0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/Gb-by8DySD8" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/get-more-design-control-over-wordpress-27-comments</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Separating and Hiding Trackbacks with Jquery in WordPress 2.7</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/I3QMmcGPf3Q/separating-and-hiding-trackbacks-with-jquery-in-wordpress-27" />
 	  	<updated>2009-01-12T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/separating-and-hiding-trackbacks-with-jquery-in-wordpress-27</id>
 	  	<content type="html">&lt;p&gt;If you're designing and coding themes for WordPress, please, I beg you, for love of all that is digitized and Tron like, separate your trackbacks and pingbacks from your comment threads. There is nothing more frustrating than having to navigate through a horde of unholy spam links to see the next comment in a thread. I also personally believe(ie I have no proof whatsoever) that a comment threat mucked with trackbacks correlates directly with less commenting. But trackbacks aren't all bad, some people (not me) use them to find out more about the blog post, theme, story, whatever...so I wouldn't just toss them aside like fruit cake.
&lt;/p&gt;
&lt;p&gt;If you look at most new well thought out themes, trackbacks are separated into another tab, or somehow minimized/hidden from the user that doesn't want them. WordPress 2.7 changed the commenting code quite a bit, and now separating everything is even easier. Add a little jQuery magic and you can hide and show those trackbacks on demand. Enough with this banter, lets rock out with our text-editor out.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3&gt;First a little catchup&lt;/h3&gt;
&lt;p&gt;So things are a wee bit different in the ol' comment file in Wordpress 2.7. I highly suggest taking a peek at Otto's &lt;a href="http://ottodestruct.com/blog/2008/09/29/wordpress-27-comments-enhancements/"&gt;WordPress 2.7 Comments Enhancements&lt;/a&gt; if you haven't already. He outlines how the new comment loop works, and all the spiffy javascript for threaded comments.&lt;/p&gt;

&lt;p&gt;Once you got a grasp on the comment changes in 2.7, checkout Matt's article on &lt;a href="http://sivel.net/2008/10/wp-27-comment-separation/"&gt;separating pings from comments&lt;/a&gt;. I'm not going to go into too much detail so if you find yourself not understanding a part of the code, try checking out those articles.&lt;/p&gt;

&lt;h3&gt;Separation makes the heart grow fonder of pings&lt;/h3&gt;
&lt;p&gt;I think that is the saying. Lets start with the comment loop, first the whole thing:&lt;/p&gt; 
&lt;script src="http://gist.github.com/610368.js?file=sep.php"&gt;&lt;/script&gt;

&lt;p&gt;There is the comment loop with the trackbacks already separated. The only trick to the separation is setting the '&lt;strong&gt;type&lt;/strong&gt;' option for the &lt;code&gt;wp_list_comments&lt;/code&gt; function. Set the 'type' to 'comment', for comments, and pings for ...well pings(trackbacks). Simple enough right?  Let's take a closer look at the HTML.&lt;/p&gt;

&lt;script src="http://gist.github.com/610371.js?file=sep.html"&gt;&lt;/script&gt;

&lt;p&gt;This is really the meat of the code, you can see the two blocks of code, one for comments and one for pings. The only real differences are setting the 'type' for wp_list_comments and changing the id and class names for styling. There is also one addition for the pings, a link to show them(it has a class of 'show_trackbacks'). You can either put this link in the actual code, or inject it using javascript.&lt;/p&gt;

&lt;h3&gt;The jQuery&lt;/h3&gt;
&lt;p&gt;There's a few ways to do this but I'm going to go with a simple slide up and slide down. First we'll hide the trackbacks by calling &lt;code&gt;slideUp()&lt;/code&gt; then add a function to detect the click on our show_trackbacks link which will call &lt;code&gt;slideDown()&lt;/code&gt;.&lt;/p&gt;
&lt;pre name="code" class="js"&gt;
$('ol.trackback').slideUp();&lt;br /&gt;
$('.show_trackbacks').click(function(){&lt;br /&gt;
	$('ol.trackback').slideDown();&lt;br /&gt;
});
&lt;/pre&gt;

&lt;p&gt;That's it?? Yeah, pretty simple actually, so I'll leave you with something else useful. A full comment file ready for wordpress 2.7.&lt;/p&gt;

&lt;h3&gt;The whole thing&lt;/h3&gt;
&lt;script src="http://gist.github.com/610375.js?file=sep.php"&gt;&lt;/script&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=I3QMmcGPf3Q:OaRvBeK4pdU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=I3QMmcGPf3Q:OaRvBeK4pdU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=I3QMmcGPf3Q:OaRvBeK4pdU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=I3QMmcGPf3Q:OaRvBeK4pdU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=I3QMmcGPf3Q:OaRvBeK4pdU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/I3QMmcGPf3Q" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/separating-and-hiding-trackbacks-with-jquery-in-wordpress-27</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Checkmate 2.0: A Free Premium WordPress Theme</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/lIujG8TLuxg/checkmate-20-a-free-premium-wordpress-theme" />
 	  	<updated>2008-12-12T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/checkmate-20-a-free-premium-wordpress-theme</id>
 	  	<content type="html">&lt;p&gt;Checkmate has been a very popular WordPress theme with thousands of users worldwide. Now it is has been made even better. I've learned a thing or two from the users of Checkmate, listened to the feature requests and I'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.&lt;/p&gt; 

&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;Download Checkmate 2.0&lt;/h3&gt;
&lt;ul class="download"&gt;
&lt;li&gt;&lt;a href="http://demos.curtishenson.com/checkmate"&gt;View the Demo Site&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/Checkmate2.zip"&gt;Download Checkmate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="clearfix gallery"&gt;
&lt;a href="http://curtishenson.com/wp-content/uploads/2008/12/checkmate.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/2008/12/a-post-with-images.png"&gt;&lt;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" /&gt;&lt;/a&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/2008/12/checkmate-203a-checkmate-options-2014-wordpress.png"&gt;&lt;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" /&gt;&lt;/a&gt;
&lt;/div&gt;
&lt;h3&gt;Theme Options&lt;/h3&gt;
&lt;p&gt;There has been a total redesign of the theme options page, and also new theme options to make &lt;strong&gt;customizing Checkmate even easier&lt;/strong&gt;. Checkmate 2.0 has the ability to &lt;strong&gt;automatically detect uploads&lt;/strong&gt; for CSS, logos, and backgrounds, which can easily be changed via the theme options page.&lt;/p&gt;

&lt;h3&gt;Layout Options&lt;/h3&gt;
&lt;p&gt;I mentioned the layout has been updated, well now it is also more flexible. Several users wanted a true &lt;strong&gt;3 column layout&lt;/strong&gt;(&lt;em&gt;columns on each side of the content&lt;/em&gt;), 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!&lt;/p&gt;

&lt;h3&gt;Ad Management&lt;/h3&gt;
&lt;p&gt;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.&lt;/p&gt;

&lt;h3&gt;Support&lt;/h3&gt;
&lt;p&gt;Support for Checkmate has always been a strong point and something I've strove to provide the best support a free theme offers. Alas WordPress comments and email aren't the best solution, so all support will now be handled via Tender. Where you &lt;a href="http://curtishenson.tenderapp.com"&gt;&lt;strong&gt;can ask questions, read documentation, and contribute to discussions&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;Features&lt;/h3&gt;
&lt;p&gt;Checkmate already had a big feature list, now it is even bigger:&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Optional background header images controlled by theme options and uploads are automatically detected&lt;/li&gt;
	&lt;li&gt;User defined style sheets, easily changed and uploads are automatically detected&lt;/li&gt;
	&lt;li&gt;Auto detected logo controlled through theme options&lt;/li&gt;
	&lt;li&gt;Optional featured categories&lt;/li&gt;
	&lt;li&gt;Feedburner integration&lt;/li&gt;
	&lt;li&gt;Drop down Page menu, with theme options to control which Pages show in the menu&lt;/li&gt;
	&lt;li&gt;Optional footer widget areas&lt;/li&gt;
	&lt;li&gt;Option to use Checkmate's previous rounded corner look&lt;/li&gt;
	&lt;li&gt;Ability to insert code or content into the header, after a post, or footer, without editing theme files&lt;/li&gt;
	&lt;li&gt;Ad management&lt;/li&gt;
	&lt;li&gt;Checkmate comes with 4 color themes for you to build on: grey, brown, cake, and dark.&lt;/li&gt;
	&lt;li&gt;Custom widgets built for Checkmate.&lt;/li&gt;
	&lt;li&gt;Tabbed Content Box - widget enabled&lt;/li&gt;
	&lt;li&gt;Two, Three, or Split Column Design&lt;/li&gt;
	&lt;li&gt;Feedburner Integration&lt;/li&gt;
	&lt;li&gt;Optional Widget enabled footer&lt;/li&gt;
	&lt;li&gt;Custom Icons&lt;/li&gt;
	&lt;li&gt;Gravatar support for authors and comments(Wordpress 2.5)&lt;/li&gt;
	&lt;li&gt;Custom author, archive, tag, category, and search pages.&lt;/li&gt;
	&lt;li&gt;Widget Enabled Sidebars&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Version 2.0.1&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;Updated for WordPress 2.7&lt;/li&gt;
	&lt;li&gt;Threaded Comments Enabled&lt;/li&gt;
	&lt;li&gt;Utilizes post_class()&lt;/li&gt;
	&lt;li&gt;Automatically Checks for Updates&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;Version 2.0.2&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;Trackbacks/pingbacks style change, automatically hidden&lt;/li&gt;
	&lt;li&gt;Comments navigation for 2.7 fixed&lt;/li&gt;
	&lt;li&gt;Upgraded theme to use jQuery 1.3&lt;/li&gt;
	&lt;li&gt;disabled auto check for update for now due to server load&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;Version 2.0.3&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;Added Localization&lt;/li&gt;
	&lt;li&gt;Changed title structure for single post pages&lt;/li&gt;
&lt;/ul&gt;
	&lt;li&gt;Version 2.0.4&lt;/li&gt;
&lt;ul&gt;
	&lt;li&gt;Converted widgets to 2.8 API&lt;/li&gt;
	&lt;li&gt;Fixed bugs in widgets&lt;/li&gt;
&lt;/ul&gt;

&lt;/ul&gt;

&lt;h3&gt;License&lt;/h3&gt;
&lt;p&gt;Checkmate is released under the &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/us/"&gt;Creative Commons Attribution-Share Alike 3.0&lt;/a&gt; license.  All I ask is that you link back to my website somewhere in your site.&lt;/p&gt;

&lt;ul class="download"&gt;
&lt;li&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/Checkmate2.zip"&gt;Download Checkmate&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=lIujG8TLuxg:fzhIeMu4Nrc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=lIujG8TLuxg:fzhIeMu4Nrc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=lIujG8TLuxg:fzhIeMu4Nrc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=lIujG8TLuxg:fzhIeMu4Nrc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=lIujG8TLuxg:fzhIeMu4Nrc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/lIujG8TLuxg" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/checkmate-20-a-free-premium-wordpress-theme</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>WordPress Posts Navigation Quick Tip</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/9I4zjE7LXXA/wordpress-posts-navigation-quick-tip" />
 	  	<updated>2008-12-08T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/wordpress-posts-navigation-quick-tip</id>
 	  	<content type="html">&lt;p&gt;Say you want to use the &lt;code&gt;next_posts_link()&lt;/code&gt; and &lt;code&gt;previous_posts_link()&lt;/code&gt; functions to display your post navigation. But you want to use some clever lookin' arrow images(&lt;em&gt;or just plain boring text&lt;/em&gt;). You also want the images(&lt;em&gt;or that plain boring text&lt;/em&gt;) grayed out when there are no more pages to link to.&lt;/p&gt; 

&lt;p&gt;Whoa there's the problem, the &lt;code&gt;next_posts_link()&lt;/code&gt; and &lt;code&gt;previous_posts_link()&lt;/code&gt; functions don't output anything when there are no more pages to link to. A little PHP to the rescue.&lt;/p&gt;

&lt;h3&gt;The Code&lt;/h3&gt;
&lt;p&gt;The code is pretty easy, just an &lt;strong&gt;if else&lt;/strong&gt; statement. We are going to use the &lt;code&gt;get_next_posts_link()&lt;/code&gt; and &lt;code&gt;get_previous_posts_link()&lt;/code&gt; to test if there is a link or not.&lt;/p&gt;

&lt;script src="http://gist.github.com/610397.js?file=post_nav.php"&gt;&lt;/script&gt;

&lt;p&gt;To break it down a bit, there is an &lt;strong&gt;if else&lt;/strong&gt; block for each link. The &lt;strong&gt;if&lt;/strong&gt; statement checks &lt;code&gt;get_next_posts_link()&lt;/code&gt; or &lt;code&gt;get_previous_posts_link()&lt;/code&gt;, if it returns a link we call &lt;code&gt;next_posts_link()&lt;/code&gt; or &lt;code&gt;previous_posts_link()&lt;/code&gt; if it doesn't we echo our own code.&lt;/p&gt;

&lt;p&gt;Something to keep in mind is that normally "&lt;em&gt;next&lt;/em&gt;" refers to older posts and "&lt;em&gt;previous&lt;/em&gt;" refers to newer posts, which can be confusing while looking at the code.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=9I4zjE7LXXA:KOky4silfc0:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=9I4zjE7LXXA:KOky4silfc0:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=9I4zjE7LXXA:KOky4silfc0:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=9I4zjE7LXXA:KOky4silfc0:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=9I4zjE7LXXA:KOky4silfc0:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/9I4zjE7LXXA" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/wordpress-posts-navigation-quick-tip</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>The Future of Blogging</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/YuxEaUCNh-I/the-future-of-blogging" />
 	  	<updated>2008-11-10T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/the-future-of-blogging</id>
 	  	<content type="html">&lt;p&gt;Blogging is changing, it has always been changing, and will continue to change. Blogs used to be about people's cats and weekend photos, blogs then became mini news outlets, then myspace came along and they were about cats again. Somewhere along the way blogs gained credibility and became major news sources, magazines, or just a wealth of useful information. And the next step is cutting down the ever growing number of feeds in your reader to just a few, corporation sized blogs.&lt;/p&gt;

&lt;p&gt;Blogs make money, and in some cases, a lot of money. But these are not blogs as a layperson would know them, they are huge sites with a massive amount of information, several posts a day with several different authors. I call them "Uber Blogs", &lt;em&gt;mostly because I'm a nerd&lt;/em&gt;. These "Uber Blogs" are more like publications, and what I see as "the future".&lt;/p&gt;

&lt;p&gt;Before you go and lynch me in angry mob style, let me explain the landscape of this blogging future. These uber blogs will become your bread and butter, your morning newspaper. They will be very author orientated, and as such, bloggers will save their best posts/tutorials/rantings/themes/whatever for the uber blogs. And the regular blog will essentially stay the same, except they will become more personal once again, just maybe not to the extent of seeing cat pictures again.&lt;/p&gt;

&lt;p&gt;I think this is a good thing! Keeping up with news is now a part time job, having a few key uber blogs covering the niches you are interested in will help. But blogging isn't going away, I'll still be able to read Khoi Vihn's thoughts about the news if I want.&lt;/p&gt; 

&lt;h3&gt;Questions Questions and More Questions&lt;/h3&gt;

&lt;p&gt;I'm curious to know what you think now. Where is blogging headed? Where do you want it to head? Should you wear pants while blogging? How do you think advertising will work for small blogs? Will the Raiders ever be good again? Are you still reading this? Are there too many questions for one post? Is blogging dead? Is micro blogging the future?&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=YuxEaUCNh-I:QhwpMA6HVts:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=YuxEaUCNh-I:QhwpMA6HVts:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=YuxEaUCNh-I:QhwpMA6HVts:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=YuxEaUCNh-I:QhwpMA6HVts:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=YuxEaUCNh-I:QhwpMA6HVts:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/YuxEaUCNh-I" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/the-future-of-blogging</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Halloween Fright Fest Movie List</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/-dp6kH97-vI/halloween-fright-fest-movie-list" />
 	  	<updated>2008-10-21T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/halloween-fright-fest-movie-list</id>
 	  	<content type="html">&lt;p&gt;Halloween is nearly here, and to take a break from the usual design, coding, theme banter here I&amp;#8217;m going to give you a list(&lt;em&gt;gasp!&lt;/em&gt;). Yes a list, one of those top whatever things that rule Digg and Delicious, the bane of the internet! But this is different(&lt;em&gt;not really&lt;/em&gt;) it is a list of horror movies you may want to check out for a night of fright(&lt;em&gt;can you tell I worked a haunted house?&lt;/em&gt;).&lt;/p&gt;

&lt;p&gt;These aren&amp;#8217;t your typical scream fests, if your looking for those skip to the bottom. But if you&amp;#8217;re looking for something a little different, a little more eccentric, a little more dare I say artsy, then this list is for you.&lt;/p&gt;
&lt;strong&gt;&lt;em&gt;Warning: This list contains some graphic images, adult language, and no poo jokes. If you're not into that sorta stuff, you should skip this one.&lt;/em&gt;&lt;/strong&gt;&lt;!--more--&gt;&lt;h3&gt;Ichi the Killer&lt;/h3&gt;&lt;a href='http://www.imdb.com/title/tt0296042/'&gt;&lt;img title='ichi_the_killer' class='alignnone size-full wp-image-302' src='http://curtishenson.com/wp-content/uploads/2008/10/ichi_the_killer.jpg' height='146' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;We're gonna start things off a little slow, at least in the fear category. &lt;a href='http://www.imdb.com/title/tt0296042/'&gt;Ichi the Killer&lt;/a&gt; is more of a crime, action, comedy film...oh and gore. Lots of gore, like "seriously you got to be kidding me" level of gore. The film is directed by Takashi Miike, and if you're into Asian cinematography you know what that means. If you're not prepare for a very wild ride.&lt;/p&gt;&lt;h3&gt;Suicide Club&lt;/h3&gt;&lt;a href='http://www.imdb.com/title/tt0312843/'&gt;&lt;img title='suicideclub2' class='alignnone size-full wp-image-303' src='http://curtishenson.com/wp-content/uploads/2008/10/suicideclub2.jpg' height='197' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0312843/'&gt;Suicide Club&lt;/a&gt; is more of a horror movie than Ichi the Killer. Japan has a problem with suicides and this movie pokes at the heart of it. A detective is trying to solve the case of a string of suicides with some peculiar circumstances. This movie will leave you with a bit of a strange state of mind. Which is perfect.&lt;/p&gt;&lt;h3&gt;Behind the Mask: The Story of Leslie Vernon&lt;/h3&gt;&lt;a href='http://www.imdb.com/title/tt0437857/'&gt;&lt;img title='behind-the-mask1' class='alignnone size-full wp-image-306' src='http://curtishenson.com/wp-content/uploads/2008/10/behind-the-mask1.jpg' height='195' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;&lt;a href='http://www.imdb.com/title/tt0437857/'&gt;Behind the Mask: The Story of Leslie Vernon&lt;/a&gt; is about the most entertaining "horror" movie ever conceived. But it technically isn't a horror movie, but rather a behind the scenes look at the making of psycho killer superstar. The movie is great for fans of classic slasher movies, and has one of the greatest most unpredictable plot twists in horror film history. This is a must see!&lt;/p&gt;&lt;h3&gt;Gozu&lt;/h3&gt;&lt;a href='http://www.imdb.com/title/tt0361668/'&gt;&lt;img title='s6_goz' class='alignnone size-full wp-image-305' src='http://curtishenson.com/wp-content/uploads/2008/10/s6_goz.jpg' height='214' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;We dive back into the world of Asian horror, and director Takashi Miike. Except this time instead of a gore fest, you are going to go on a journey. A journey you really probably would rather not go on. &lt;a href='http://www.imdb.com/title/tt0361668/'&gt;Gozu&lt;/a&gt; defies definition by my vocabulary. It will leave you confused, disturbed, and probably with the urge to send me hate mail. It is not the traditional hack and slash naked girl running and screaming type of stupid horrow, this is a slow, brutal, disturbing, mind fuck. If you don't mind that sort of film, you'll like this, but I warn you this is not for everyone.&lt;/p&gt;&lt;h3&gt;Severance&lt;/h3&gt;&lt;a href='http://www.imdb.com/title/tt0464196/'&gt;&lt;img title='severance1b' class='alignnone size-full wp-image-308' src='http://curtishenson.com/wp-content/uploads/2008/10/severance1b.jpg' height='234' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;Did you watch Gozu? Are you contemplating the meaning behind it? Well I got the fix, and it is called &lt;a href='http://www.imdb.com/title/tt0464196/'&gt;Severance&lt;/a&gt;. Severance is about an office outing, you know team building, except things go a little...ummm wrong. Severance has its scary moments but it really shines in the dark comedy. If your looking to tone down the scare a bit(&lt;em&gt;just a little itty bit&lt;/em&gt;) and up the laughs this is the horror film for you. &lt;/p&gt;&lt;h3&gt;The Vengeance Trilogy&lt;/h3&gt;&lt;a href='http://en.wikipedia.org/wiki/The_Vengeance_Trilogy'&gt;&lt;img title='vengeance' class='alignnone size-full wp-image-309' src='http://curtishenson.com/wp-content/uploads/2008/10/vengeance.jpg' height='181' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;OK so this is actually 3 movies, but three very good movies. Yes by this time you know I love Asian horror, but this is different...it is Korean! &lt;a href='http://en.wikipedia.org/wiki/The_Vengeance_Trilogy'&gt;The Vengeance Trilogy&lt;/a&gt; is made up of: Sympathy for Mr. Vengeance, Old Boy(my fav), and Lady Vengeance. These aren't technically horror movies, but they are so good I couldn't resist putting them here.&lt;/p&gt;&lt;h3&gt;The Host&lt;/h3&gt;&lt;a href='http://www.hostmovie.com/'&gt;&lt;img title='hpost' class='alignnone size-full wp-image-311' src='http://curtishenson.com/wp-content/uploads/2008/10/hpost.jpg' height='171' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;Staying in Korea this time it is a classic style monster movie, and one of the best to come out in a very long time. &lt;a href='http://www.hostmovie.com/'&gt;The Host&lt;/a&gt; brought the monster movie back into the spotlight before Cloverfield even had a chance to think about its viral marketing. It's a story of a family and a giant tadpole...yup that's right...and it is awesome! If you haven't seen this yet, check it out, no need to wait for Halloween to see this one.&lt;/p&gt;&lt;h3&gt;Black Sheep&lt;/h3&gt;&lt;a href='http://www.imdb.com/title/tt0779982/'&gt;&lt;img title='blacksheep' class='alignnone size-full wp-image-314' src='http://curtishenson.com/wp-content/uploads/2008/10/blacksheep.jpg' height='187' alt='' width='450' /&gt;&lt;/a&gt;&lt;p&gt;What could possibly end this list of "horror" movies?? Why none other than &lt;a href='http://www.imdb.com/title/tt0779982/'&gt;Black Sheep&lt;/a&gt;, not the Chris Farley movie, the New Zealand made film. Apparently sheep are somewhat popular in New Zealand, and also freakishly smart strong and effing scary. OK so unless you have an unrationalized fear of sheep this isn't that scary, but it definitely follows in a long line of New Zealand horror movies. It is entertaining, and disturbing and that is what I love...also it has mutant sheep, how could you go wrong!?&lt;/p&gt;&lt;h3&gt;Want some suggestions that are more horror and less screwed up?&lt;/h3&gt;
&lt;p&gt;OK so you aren&amp;#8217;t into Tokyo Shock? Korean life lessons? Or documentaries? Want something a little more &amp;#8220;get the girl to jump into your lap and cry&amp;#8221; type of movie? I got some suggestions for that too.&lt;/p&gt;
&lt;h4&gt;The Texas Chainsaw Massacre&lt;/h4&gt;
&lt;p&gt;The ORIGINAL, not the crappy remake or any number of the ridiculous sequels. It is a classic that still freaks people out and will make sure no one sleeps so long as there are chainsaw noises sporadically made during the night.&lt;/p&gt;
&lt;h4&gt;The Evil Dead&lt;/h4&gt;
&lt;p&gt;The first and second Evil Dead films are genius. What could be better than Bruce Campbell battling demons? Nothing.&lt;/p&gt;
&lt;h4&gt;House of a Thousand Corpses and The Devils Rejects&lt;/h4&gt;
&lt;p&gt;Rob Zombie has turned his twisted dreadlocked head towards film and what comes out is nothing short of terrifying. Want to be scared? Watch these films.&lt;/p&gt;
&lt;h4&gt;The Exorcist&lt;/h4&gt;
&lt;p&gt;The single scariest film ever created. Nothing more to be said about that.&lt;/p&gt;
&lt;h4&gt;Dead Alive&lt;/h4&gt;
&lt;p&gt;This one is actually one of those New Zealand flicks, maybe a bit &amp;#8220;out there&amp;#8221; for most people though. Also check out Bad Taste.&lt;/p&gt;
&lt;h4&gt;Dawn of the Dead&lt;/h4&gt;
&lt;p&gt;Or really any zombie movie(&lt;em&gt;even the movie named Zombie&lt;/em&gt;) with &amp;#8220;of the Dead&amp;#8221; in the title. I like zombies.&lt;/p&gt;
&lt;h4&gt;Fido&lt;/h4&gt;
&lt;p&gt;Another zombie flick, this one is pure comedy. If you got someone who refuses to watch a horror movie this is a good substitute.&lt;/p&gt;
&lt;h4&gt;Nightmare on Elm Street&lt;/h4&gt;
&lt;p&gt;Yeah, you know this one.&lt;/p&gt;
&lt;h3&gt;BOO!&lt;/h3&gt;
&lt;p&gt;There it is, my list of recommended horror flicks. This is by no means a complete list as I&amp;#8217;m a horror flick nut and could go on for pages and pages. What are your favorite horror flicks and recommendations? I&amp;#8217;m always looking for something I haven&amp;#8217;t seen.&lt;/p&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=-dp6kH97-vI:oRnpD-L6FPM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=-dp6kH97-vI:oRnpD-L6FPM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=-dp6kH97-vI:oRnpD-L6FPM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=-dp6kH97-vI:oRnpD-L6FPM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=-dp6kH97-vI:oRnpD-L6FPM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/-dp6kH97-vI" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/halloween-fright-fest-movie-list</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Complex WordPress Conditional Tags</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/4ZnS1rKj3sA/complex-wordpress-conditional-tags" />
 	  	<updated>2008-10-15T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/complex-wordpress-conditional-tags</id>
 	  	<content type="html">&lt;p&gt;The WordPress conditional tags are some of the most powerful tools a theme designer can master. As WordPress themes get more complicated and more CMS like, everyone will eventually run into the need for conditionals. In my previous post I showed you &lt;a href="http://curtishenson.com/wordpress-conditional-tags-write-less-code/"&gt;how to write less code&lt;/a&gt; using conditional tags and the WordPress hierarchy. Quite a few things have changed since that post, and this time I'm going to show you some more advanced ways to use conditional tags.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3&gt;What's New?&lt;/h3&gt;
&lt;p&gt;The WordPress dev team heard the cries of the masses and has added new conditional tags to the core.  A few include:
&lt;/p&gt;&lt;pre class="php" name="code"&gt;&amp;lt;?
is_front_page()
is_single(array(17,'beef-stew','Irish Stew'))
is_page(array(42,'about-me','About Me And Joe'))
is_page_template() ?&gt;&lt;/pre&gt;

&lt;p&gt;Head on over to the &lt;a href="http://codex.wordpress.org/Conditional_Tags"&gt;codex conditionals page&lt;/a&gt; for a full list. The most important new tags are the ones which allow you to use arrays. In the past you may have had to use &lt;a href="http://curtishenson.com/how-i-did-multiple-feature-categories-in-checkmate/"&gt;complex code&lt;/a&gt; to achieve the same result. The ability to filter content by several pages/categories/tags is incredibly useful especially in building large websites. The Codex does a good job at explaining the new tags so I won't go into that here.&lt;/p&gt;

&lt;h3&gt;How's Your PHP?&lt;/h3&gt;
&lt;p&gt;If you theme WordPress you probably know at least some basic PHP. The most basic and useful PHP you can learn are &lt;a href="http://us3.php.net/language.operators.comparison"&gt;comparison operators&lt;/a&gt;. The operators will return &lt;strong&gt;true&lt;/strong&gt; or &lt;strong&gt;false&lt;/strong&gt; and work the same way as the WordPress conditional tags.&lt;/p&gt;  

&lt;p&gt;Let's say you wanted some text to only show on the home page(&lt;em&gt;ID is 42&lt;/em&gt;) and your about page. One way to do this is:&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&lt;code&gt;&amp;lt;?
if ( is_page( array (42,'About') ) ){
	echo "Hello World";
}&lt;/code&gt;&lt;/pre&gt;
Lets say you &lt;strong&gt;didn't know the ID of the page or the name&lt;/strong&gt;, maybe it is in a theme and you want the user to set where the text appears. In this example &lt;code&gt;$text_pages&lt;/code&gt; is a list set somewhere either by the user or some other function.
&lt;pre class="php" name="code"&gt;&lt;code&gt;&amp;lt;?
$text_pages = get_option('pages');

if ( is_page( array($text_pages) ) ){
	echo "Hello World";
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h4&gt;More complex examples&lt;/h4&gt;
OK so far pretty basic stuff. Lets see something more complicated. We have text we want to show on a static home page, some posts &lt;strong&gt;in&lt;/strong&gt; a certain category, but not in the search pages. Using PHP comparison operators and WordPress conditionals this is easy.
&lt;pre class="php" name="code"&gt;&lt;code&gt;&amp;lt;?
if ( (is_front_page() || in_category('3') &amp;&amp; !( is_search() ) ) {
	echo "Hello World";
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Reading this in English goes like so: If is a static home page, or(||) in category 3 and(&amp;&amp;) is not(!) a search page. The exclamation mark is a shortcut for does not equal(!=).&lt;/p&gt;

&lt;p&gt;As you can see developing complex conditionals can be very powerful, and can also save you from writing a bunch of repeated code. Lets take it even further and use some &lt;strong&gt;variables&lt;/strong&gt; now.&lt;/p&gt;

&lt;p&gt;Lets say you want the user to choose if there is a feature post displayed. You also want them to be able to set the categories used for a feature post. You also want don't want the feature story repeating itself while paging. To accomplish this we're going to use a combination of variables, WordPress conditionals, and some if else statements.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&lt;code&gt;&amp;lt;?
$feature = get_option('feature');  // Gets the option to display feature post.
	if( ($feature == 'Yes') &amp;&amp; !(is_paged()) ) { //Excludes the feature post when paging through posts
		$feature_cats = get_option('feature_cats'); // Gets list of feature categories
		query_posts(array('category__in' =&gt; array($feature_cats)));
		//The loop and post formatting
  	}
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Making Your Own Conditionals&lt;/h3&gt;
&lt;p&gt;If you really want to get dirty, you can form your own conditionals. The Codex hints at this ability with this example:&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&lt;code&gt;!empty($post-&gt;post_excerpt) &lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Pretty simple right? If the post excerpt is empty this will return &lt;strong&gt;false&lt;/strong&gt;. Likewise removing the &lt;strong&gt;!&lt;/strong&gt; will then return false for anything that &lt;strong&gt;has an excerpt&lt;/strong&gt;.&lt;/p&gt; 

&lt;p&gt;With a basic understanding of if else statements, and a not so basic understanding of WordPress functions you could create a conditional statement for just about anything granted you had something to compare to get a true or false statement.&lt;/p&gt;

&lt;p&gt;Lets come up with another example. Say you want to display a special title whenever a post has approved comments.
&lt;/p&gt;&lt;pre class="php" name="code"&gt;&lt;code&gt;
&amp;lt;?php $foo = get_approved_comments($post-&gt;ID);
			if ( !empty($foo) ) { 
				echo "&amp;lt;h1&gt;I Gots Comments!&amp;lt;/h1&gt;";
				} ?&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;h3&gt;Quick Comparison Operators Overview&lt;/h3&gt;
&lt;p&gt;The &lt;a href="http://us3.php.net/language.operators.comparison"&gt;php comparison operators&lt;/a&gt; article goes into more detail but I'll give you quick overview from a WordPress point of view.&lt;/p&gt;

&lt;p&gt;When using these operators with WordPress conditional tags and if else statements keep track of your parenthesis! I've strung together quite a long string which ended in an equally long string of parenthesis, which will be a headache to decode later.&lt;/p&gt;

&lt;p&gt;There are a few operators that are used more often. These are: equal( &lt;strong&gt;==&lt;/strong&gt; ), not equal (&lt;strong&gt; !=&lt;/strong&gt; ), or( &lt;strong&gt;||&lt;/strong&gt; ), and( &lt;strong&gt;&amp;&amp;&lt;/strong&gt; ). Using these four you can construct some heavy conditionals.&lt;/p&gt; 

&lt;p&gt;Grouping is important! Just like math, you can group operators and conditionals to get different true or false statements. ex. &lt;code&gt;(in_category(42) &amp;&amp; !(is_search()) || is_archive())&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Use &lt;strong&gt;!()&lt;/strong&gt;, &lt;strong&gt;!empty()&lt;/strong&gt;, &lt;strong&gt;empty()&lt;/strong&gt; to achieve some more complex conditionals and create your own conditional statements.&lt;/p&gt;

&lt;h3&gt;The End&lt;/h3&gt;
&lt;p&gt;So there are some examples of complex WordPress conditionals, comparison operators, booleans, if elses, and some pie(&lt;em&gt;update: I ate all the pie&lt;/em&gt;). This isn't a complete list of what is possible, infact I don't think it even scratches the surface. Conditionals are great, and are even more powerful than ever.&lt;/p&gt; 
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=4ZnS1rKj3sA:vptD3qwpZQo:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=4ZnS1rKj3sA:vptD3qwpZQo:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=4ZnS1rKj3sA:vptD3qwpZQo:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=4ZnS1rKj3sA:vptD3qwpZQo:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=4ZnS1rKj3sA:vptD3qwpZQo:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/4ZnS1rKj3sA" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/complex-wordpress-conditional-tags</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Readernaut is Reading 2.0</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/M100Bil2C78/readernaut-is-reading-20" />
 	  	<updated>2008-10-03T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/readernaut-is-reading-20</id>
 	  	<content type="html">&lt;p&gt;It may not be obvious by my writing and general intelligence but I do in fact know how to read. I've even read some novels, and a few that didn't have big pictures. So when Jeff Croft mentioned &lt;a href="http://readernaut.com"&gt;Readernaut&lt;/a&gt; I got interested. I signed up for the beta and got my invitation a few weeks ago. At first I didn't know if I would actually use Readernaut, but I'm happy to say I do, and I like it.&lt;/p&gt;

&lt;img src="http://curtishenson.com/wp-content/uploads/2008/10/readernaut1.jpg" alt="" title="readernaut1" width="450" height="299" class="alignnone size-full wp-image-263" /&gt;

&lt;h3&gt;Whaa?&lt;/h3&gt;
&lt;p&gt;So what is Readernaut? It is a social community of well read people that make me look like I'm shuffling through old copies of Highlights magazine. It's a place to catalog the books you have read, add new books, keep track of your reading, comment, and share insight on books. But most importantly&lt;!--more--&gt; it gives the dull act of reading a book a decidedly web 2.0 gradient vector icon feel. &lt;/p&gt;

&lt;p&gt;I find myself checking the site for new notes concerning Anathem, or checking reviews of books I'm interested in. Adding recommended books to my "Plan to Read" list will be a huge savior to me in 2 years when I actually finish reading Anathem. The point being, I believe there are a few ways to use Readernaut, and not everyone will use it the same way.&lt;/p&gt;

&lt;img src="http://curtishenson.com/wp-content/uploads/2008/10/readernaut2.jpg" alt="" title="readernaut2" width="450" height="295" class="alignnone size-full wp-image-266" /&gt;

&lt;h3&gt;The Experience&lt;/h3&gt;
&lt;p&gt;Readernaut is a sort of complex time line with various ways to filter information into what you are actually looking for. In a twitter like fashion you can start with the public time line and continue drilling down.&lt;/p&gt;

&lt;p&gt;The site is pretty intuitive especially under the newest design. You have the timeline, your library, quick access to notes about your book, tags, contacts, and a profile. Each having their own options to organize the data. Books are organized with tags, which makes filtering your own books easy, but it also helps you find potential reading material. Which is where the real potential power of Readernaut comes in.&lt;/p&gt; 

&lt;p&gt;I haven't fully explored the community portion of Readernaut yet(&lt;em&gt;mostly because none of my friends are members&lt;/em&gt;) but I can already see massive potential in finding what like minded people are reading. Readernaut also integrates with Amazon, which makes finding, adding, and buying books so incredibly easy Appalachian mountain people may find themselves reading(&lt;em&gt;it's OK I grew up there&lt;/em&gt;).&lt;/p&gt;

&lt;img src="http://curtishenson.com/wp-content/uploads/2008/10/readernaut3.jpg" alt="" title="readernaut3" width="450" height="321" class="alignnone size-full wp-image-268" /&gt;

&lt;p&gt;It is hard to peg down the user experience because it is really up to the user how involved he(&lt;em&gt;or she, women being allowed to read, who could've imagined?&lt;/em&gt;) will become in the site and community. It could be nothing more than bookmarking tool, or a full blown dating service depending on how you use the site. &lt;/p&gt;

&lt;p&gt;Unfortunately you can't just go sign up for Readernaut quite yet, and there are no invitations to give out. But you can sign up for an invite which are sent out pretty steadily as Readernaut grows. But if you are a reader(naut) then I would suggest trying the site out. It has re-kindled my love for reading along with Neal Stephenson and Ruby on Rails books. And &lt;a href="http://readernaut.com/curtishenson/profile/"&gt;leave me a message&lt;/a&gt; if you're on it!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=M100Bil2C78:kdhnHpA4mlk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=M100Bil2C78:kdhnHpA4mlk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=M100Bil2C78:kdhnHpA4mlk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=M100Bil2C78:kdhnHpA4mlk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=M100Bil2C78:kdhnHpA4mlk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/M100Bil2C78" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/readernaut-is-reading-20</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Quick Tip: List Hover Effect with jQuery</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/tJQE66g4hr0/quick-tip-list-hover-effect-with-jquery" />
 	  	<updated>2008-10-01T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/quick-tip-list-hover-effect-with-jquery</id>
 	  	<content type="html">&lt;p&gt;A while ago a user asked me how the widget hover effects were done in my &lt;a href="http://curtishenson.com/checkmate/"&gt;Checkmate&lt;/a&gt; theme. Well I'm going to tell you. It is a little black magic, a little jquery, and passing through the outer realms of probability. But I think anyone can handle it.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3&gt;First things last&lt;/h3&gt;
&lt;p&gt;First you'll need &lt;a href="http://jquery.com"&gt;jQuery&lt;/a&gt; and the &lt;a href="http://plugins.jquery.com/project/color"&gt;color animations plugin&lt;/a&gt;. Add these in your footer so they load last(that's just good practice).&lt;/p&gt;
&lt;script src="http://gist.github.com/610519.js?file=jquery.html"&gt;&lt;/script&gt;

&lt;h3&gt;The basic markup&lt;/h3&gt;
&lt;p&gt;The basic HTML for this example is something like the following.
&lt;/p&gt;
&lt;script src="http://gist.github.com/610520.js?file=basic.html"&gt;&lt;/script&gt;

&lt;h3&gt;Hover Magic&lt;/h3&gt;
&lt;p&gt;Now for the code that makes the hover actually work. Don't blink you might miss it.&lt;/p&gt;
&lt;script src="http://gist.github.com/610522.js?file=js.js"&gt;&lt;/script&gt;

&lt;p&gt;That's it! Ok I'll explain a bit. The first two lines are setting up some variables, this makes the code a bit cleaner but you could include the variables directly if you wanted. The first variable is the original background color set in the CSS file. The second is the background color which will fade in.&lt;/p&gt;

&lt;p&gt;If you're familiar with jQuery you'll know the third line includes the selector(".widget ul li"). Next is the actual animation. First the line items background color is faded to the whatever the fadeColor is set to. Next the background color is faded out to the original color &lt;strong&gt;before&lt;/strong&gt; the mouse leaves. This is the effect I wanted, but if you want the color to fade out &lt;strong&gt;after&lt;/strong&gt; the mouse pointer leaves then add the &lt;pre&gt;&lt;code&gt;.animate( {backgroundColor: originalBG}, 950)&lt;/code&gt;&lt;/pre&gt; line to the second empty function like so:&lt;/p&gt;
&lt;script src="http://gist.github.com/610523.js?file=jquery.js"&gt;&lt;/script&gt;

&lt;h3&gt;The End&lt;/h3&gt;
&lt;p&gt;That is just a quicky, there are a different effects you can easily get from adding more animation, colors, and timing. But I'll let you figure all that out.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=tJQE66g4hr0:L-uAiAza120:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=tJQE66g4hr0:L-uAiAza120:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=tJQE66g4hr0:L-uAiAza120:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=tJQE66g4hr0:L-uAiAza120:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=tJQE66g4hr0:L-uAiAza120:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/tJQE66g4hr0" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/quick-tip-list-hover-effect-with-jquery</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Ubiquity: Browsing Extended, A Lot</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/5W4cuJVADxg/ubiquity-browsing-extended-a-lot" />
 	  	<updated>2008-09-02T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/ubiquity-browsing-extended-a-lot</id>
 	  	<content type="html">&lt;p&gt;I've just spent some time with Mozilla Labs newest creation &lt;a href="http://labs.mozilla.com/2008/08/introducing-ubiquity/"&gt;Ubiquity&lt;/a&gt;. And I'm impressed, ok I'm very impressed. If you have spent time on a mac, chances are you used &lt;a href="http://www.blacktree.com/"&gt;Quicksilver&lt;/a&gt; (&lt;em&gt;If you haven't you need to now! I'll wait&lt;/em&gt;). Quicksilver is the ultimate productivity tool and goes far, far (&lt;strong&gt;very far&lt;/strong&gt;) beyond just an app launcher. Now imagine taking all that wonderful power and transferring it to the your &lt;strong&gt;browser&lt;/strong&gt;. I know, mind numbing isn't it.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3&gt;What is Ubiquity?&lt;/h3&gt;
&lt;p&gt;Ubiquity strives to do just that. And in my experience is on its way. Ubiquity is still a &lt;strong&gt;prototype&lt;/strong&gt;, an impressive one, but still a prototype (&lt;em&gt;is prototype the new beta?&lt;/em&gt;). Your mileage may vary with how useful you find Ubiquity right now, as it has limited capabilities in this version, from Mozilla:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lets you map and insert maps anywhere; translate on-page; search amazon, google, wikipedia, yahoo, youtube, etc.; digg and twitter; lookup and insert yelp review; get the weather; syntax highlight any code you find; and a lot more.&lt;/li&gt;
&lt;li&gt;Find and install new commands to extend your browser's vocabulary through a simple subscription mechanism&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;I don't use that stuff&lt;/h3&gt;
&lt;p&gt;Now if you're like me, that is actually quite useful already. If your not like me, maybe you should be trying harder. The second bullet is the eye catching one for me. Like Quicksilver, Ubiquity supports a what I'm going to call, &lt;em&gt;a plugin architecture&lt;/em&gt;. This has potential to extend this prototype &lt;strong&gt;far beyond what it is currently capable of&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I'm using the term "&lt;em&gt;plugin architecture&lt;/em&gt;" loosely here, and Mozilla refers to new commands as "&lt;strong&gt;subscriptions&lt;/strong&gt;". You essentially go to a site that contains a script, and subscribe to the command. You can then use the command like any of the built in commands.&lt;/p&gt;

&lt;h3&gt;The lowdown&lt;/h3&gt;
&lt;p&gt;So what can it do? Honestly the best way to find out is to download and use it, but I'll give some highlights here.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;strong&gt;Email&lt;/strong&gt; — Seriously? I can already do that. No you can't. Yes I can. Not like this. Oh. Ubiquity allows you create emails while still on a page or import things such as maps without ever leaving gmail. Impressive? If you ever email it is.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Translate&lt;/strong&gt; — On the page. There are countless times when I want to know what is being said on a page about one of my themes, but I'm far too lazy to copy and paste into babel. Problem now solved.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Search&lt;/strong&gt; — You can search a plethora of sites directly in Ubiquity, no longer do you have to open google or go to youtube. And yes moving the mouse to the upper right corner wastes my time.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Define Terms&lt;/strong&gt; — Ever been reading a Merlin Mann post on &lt;a href="http://www.43folders.com/"&gt;43folders&lt;/a&gt; and didn't know what a word meant? Highlight and define right there in your browser.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That is a taste, a small portion, an itty bitty of what Ubiquity is capable of. Twitter, Facebook, Craigslist, yeah they are all there too.&lt;/p&gt;

&lt;h3&gt;But what about the masses?&lt;/h3&gt;
&lt;p&gt;The down side to ubiquity is that some people probably won't "&lt;em&gt;get it&lt;/em&gt;", much like people don't use Quicksilver to it's fullest. For me it is an easy transition into using the command line interface because I use it daily already. But what about the people who don't? I'm curious to know what they think of Ubiquity. With people spending more and more time in their browser I believe this is the future. Things are changing in browsers as evident by Google's Chrome and Ubiquity, and I for one am happy about it.&lt;/p&gt;

&lt;h3&gt;The Awesome Video&lt;/h3&gt;
&lt;object width="400" height="298"&gt;	&lt;param name="allowfullscreen" value="true" /&gt;	&lt;param name="allowscriptaccess" value="always" /&gt;	&lt;param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=1561578&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" /&gt;	&lt;embed src="http://vimeo.com/moogaloop.swf?clip_id=1561578&amp;amp;server=vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=1&amp;amp;show_portrait=0&amp;amp;color=&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="298"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://vimeo.com/1561578?pg=embed&amp;amp;sec=1561578"&gt;Ubiquity for Firefox&lt;/a&gt; from &lt;a href="http://vimeo.com/user532161?pg=embed&amp;amp;sec=1561578"&gt;Aza Raskin&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;amp;sec=1561578"&gt;Vimeo&lt;/a&gt;.

&lt;h3&gt;Update&lt;/h3&gt;
&lt;p&gt;ReadWriteWeb just released a &lt;a href="http://www.readwriteweb.com/archives/the_ultimate_list_of_custom_ubiquity_verbs.php"&gt;huge list of custom Ubiquity commands&lt;/a&gt;. Check out the some of the power Ubiquity already has.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=5W4cuJVADxg:yAuEASwXJns:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=5W4cuJVADxg:yAuEASwXJns:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=5W4cuJVADxg:yAuEASwXJns:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=5W4cuJVADxg:yAuEASwXJns:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=5W4cuJVADxg:yAuEASwXJns:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/5W4cuJVADxg" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/ubiquity-browsing-extended-a-lot</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>A Paypal Donation Form That Doesn't Suck</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/8GJ324a1WYo/a-paypal-donation-form-that-doesnt-suck" />
 	  	<updated>2008-08-03T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/a-paypal-donation-form-that-doesnt-suck</id>
 	  	<content type="html">&lt;p&gt;Pete, a Swiss guy who lives in Thailand (how could I not include that little tidbit), posted a great &lt;a href="http://www.flowdrops.com/2008/08/03/paypal-donation-form-with-css-and-jquery-for-wordpress/"&gt;tutorial&lt;/a&gt; on how he did his &lt;a href="http://www.flowdrops.com/donate/"&gt;donation page&lt;/a&gt;.  He uses jQuery, which is must (right?), and he even tells you how to put it into a WordPress theme.  If you have a donation form or page on your site and are using that ugly paypal button(like me) you need to get with the times (although I still want an animated gif email box).  Read the &lt;a href="http://www.flowdrops.com/2008/08/03/paypal-donation-form-with-css-and-jquery-for-wordpress/"&gt;PayPal donation form with CSS and jQuery for WordPress&lt;/a&gt; article now, or forever have an orange button on your site.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=8GJ324a1WYo:ThUfQNkYw68:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=8GJ324a1WYo:ThUfQNkYw68:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=8GJ324a1WYo:ThUfQNkYw68:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=8GJ324a1WYo:ThUfQNkYw68:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=8GJ324a1WYo:ThUfQNkYw68:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/8GJ324a1WYo" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/a-paypal-donation-form-that-doesnt-suck</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Make Sections MSNBC Style in WordPress</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/2CM2v_zEldY/make-sections-msnbc-style-in-wordpress" />
 	  	<updated>2008-07-01T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/make-sections-msnbc-style-in-wordpress</id>
 	  	<content type="html">&lt;p&gt;For &lt;a href="http://wpcandy.com/articles/wordpress/unofficial-international-wordpress-day.html"&gt;WordPress Day&lt;/a&gt; I decided to pull out an old trick of mine.  When I first saw the &lt;a href="http://www.msnbc.msn.com/"&gt;MSNBC&lt;/a&gt; redesign I immediately wanted to recreate the sections in a theme.  It proved to be a bit more involved than I had first imagined.  Look out ahead, heavy php content coming!&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3&gt;The Goal: People in Hell Want Ice Water&lt;/h3&gt;
&lt;p&gt;I wanted to break each category into a section.  The latest article would be displayed with a short summary with a thumbnail.  To the right of the latest article would be a list of the other stories in the category(section).  And to the right of that display the subcategories in a list.  This should be done for each category chosen by the user.  &lt;/p&gt;

&lt;h3&gt;Lets Start: Elephants Learn to Fly&lt;/h3&gt;
&lt;p&gt;The code below is going to setup everything.  Let me step through it.  &lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;First $index_cats gets which categories are to appear from a theme options page (&lt;a href="http://theundersigned.net/2006/06/wordpress-how-to-theme-options/"&gt;Learn to setup theme options here&lt;/a&gt;).&lt;/li&gt;
&lt;li&gt;I then setup the arguments I will pass along to the &lt;a href="http://codex.wordpress.org/Function_Reference/get_categories"&gt;get_categories&lt;/a&gt; function in the variable $args.  I store those categories in a variable named $cats and then start a foreach loop. &lt;/li&gt;
&lt;li&gt;The next few lines are setting up some variables to use in the code.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;?php 
&lt;br /&gt;
		$index_cats = get_option('ch_index_cats'); // What categories to show on Index page&lt;br /&gt;
		$args = array( &lt;br /&gt;
				'orderby' =&amp;gt; 'ID', 	&lt;br /&gt;
				'hierarchical' =&amp;gt; 0, &lt;br /&gt;
				'include' =&amp;gt; $index_cats, );  //Which categories to include, set on the theme options page&lt;br /&gt;
				&lt;br /&gt;
 		$cats = get_categories($args); //sets up everything to be looped through&lt;br /&gt;
&lt;br /&gt;
		foreach ($cats as $key =&amp;gt; $category) { // loops through categories in array and creates a section for each&lt;br /&gt;
			&lt;br /&gt;
		$catID = $category-&amp;gt;cat_ID; //sets catID to category ID number&lt;br /&gt;
		$catName = $category-&amp;gt;cat_name; // sets catName to category Name&lt;br /&gt;
		$cat = $cats[$key]; // Sets category&lt;br /&gt;
?&amp;gt;
&lt;/pre&gt;

&lt;h3&gt;Output It: Monkeys Fly Out of My Buttocks&lt;/h3&gt;
&lt;p&gt;First the title of the section and a link to the rss feed.  This is pretty straight forward WordPress stuff here.&lt;/p&gt;

&lt;pre class="html" name="code"&gt;
&amp;lt;?  //Category Title ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;column span-15 cat_sections&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;h3&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php echo get_category_link($catID); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $catName; ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php bloginfo('home'); ?&amp;gt;/wp-rss2.php?cat=&amp;lt;?php echo $catID ?&amp;gt;&amp;quot; class=&amp;quot;rss&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&lt;br /&gt;
	&amp;lt;/h3&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Now to display the lead story.  I used query_posts to retrieve one post from the current category ID then it is the loop as normal.  The thumbnail image is pulled from a custom field.  If the call fails error_form.php is called(this can be anything you want).&lt;/p&gt;

&lt;pre class="php" name="code"&gt;
&amp;lt;?php // Latest Story and Thumbnail&lt;br /&gt;
 	query_posts('showposts=1&amp;amp;cat='.$catID); //gets the latest post&lt;br /&gt;
 	if (have_posts()) : while (have_posts()) : the_post(); //the loop&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div class=&amp;quot;column span-7 border&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php //get thumbnail (custom field)&lt;br /&gt;
		 		$image = get_post_meta($post-&amp;gt;ID, 'thumbnail', true);&lt;br /&gt;
		 		if($image !== '') { &lt;br /&gt;
		?&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;img src=&amp;quot;&amp;lt;?php echo $image; ?&amp;gt;&amp;quot; alt=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/a&amp;gt;&lt;br /&gt;
		&amp;lt;?php } else { ?&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink() ?&amp;gt;&amp;quot;&amp;gt; &lt;br /&gt;
			&amp;lt;img src=&amp;quot;&amp;lt;?php bloginfo('template_directory'); ?&amp;gt;/images/default.jpg&amp;quot; title=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/a&amp;gt;	&lt;br /&gt;
		&amp;lt;?php } ?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;h4&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink(); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;?php the_excerpt(); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php endwhile; else:?&amp;gt;&lt;br /&gt;
		&amp;lt;?php include(TEMPLATEPATH . '/error_form.php'); //includes error form if no posts are found ?&amp;gt;&lt;br /&gt;
	&amp;lt;?php endif; ?&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Now we need to display the latest headlines.  I use the &lt;a href="http://codex.wordpress.org/Template_Tags/get_posts"&gt;get_posts&lt;/a&gt; function to do this, but there are a few ways you could get these headlines.  Notice the offset to exclude the first article and the number of posts is set to 4.  Then once again its loops stuff as normal.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;? //Displays 4 latest headlines from current category ?&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;column span-5&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Latest Headlines&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;ul&amp;gt;&lt;br /&gt;
			&amp;lt;?php&lt;br /&gt;
		 	global $post;&lt;br /&gt;
		 	$myposts = get_posts('offset=1&amp;amp;numberposts=4&amp;amp;category='.$catID);&lt;br /&gt;
		 	foreach($myposts as $post) :&lt;br /&gt;
		 	setup_postdata($post);&lt;br /&gt;
		 	?&amp;gt;&lt;br /&gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink(); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
		 	&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;
&lt;/pre&gt;

&lt;p&gt;Lets output a list of subcategories now.  Use the &lt;a href="http://codex.wordpress.org/Template_Tags/wp_list_categories"&gt;wp_list_categories&lt;/a&gt; function and your done.  Then finally close the entire loop.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;?php // Displays list of subcateogries ?&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;column span-3 last&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;ul&amp;gt;	&lt;br /&gt;
			&amp;lt;?php &lt;br /&gt;
			wp_list_categories('title_li=&amp;amp;hide_empty=0&amp;amp;child_of='.$catID); ?&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php } ?&amp;gt;
&lt;/pre&gt;

&lt;h3&gt;Enjoy: Your New Awesome Sections&lt;/h3&gt;
&lt;p&gt;Thats it, you have sections!  This is a pretty basic script that you could easily extend to pull in more information.  Sections are a great way to organize content on sites with lots and lots of content, so get writing.  Here is the entire code in its whole:&lt;/p&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;?php  	/*Below is the code needed to get the news style look on the index page.  It uses categories set on the theme options page.  It gets the latest story from the cateogry and its thumbnail, then lists the 4 latest stories from that category, then lists the subcategories. It then loops through all the cateogries that have been set to show up in the themes options page */&lt;br /&gt;
&lt;br /&gt;
		$index_cats = get_option('ch_index_cats'); // What categories to show on Index page&lt;br /&gt;
		$args = array( &lt;br /&gt;
				'orderby' =&amp;gt; 'ID', 	&lt;br /&gt;
				'hierarchical' =&amp;gt; 0, &lt;br /&gt;
				'include' =&amp;gt; $index_cats, );  //Which categories to include, set on the theme options page&lt;br /&gt;
				&lt;br /&gt;
 		$cats = get_categories($args); //sets up everything to be looped through&lt;br /&gt;
&lt;br /&gt;
		foreach ($cats as $key =&amp;gt; $category) { // loops through categories in array and creates a section for each&lt;br /&gt;
			&lt;br /&gt;
		$catID = $category-&amp;gt;cat_ID; //sets catID to category ID number&lt;br /&gt;
		$catName = $category-&amp;gt;cat_name; // sets catName to category Name&lt;br /&gt;
		$cat = $cats[$key]; // Sets category&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;?  //Category Title ?&amp;gt;&lt;br /&gt;
&amp;lt;div class=&amp;quot;column span-15 cat_sections&amp;quot;&amp;gt;&lt;br /&gt;
	&amp;lt;h3&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php echo get_category_link($catID); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php echo $catName; ?&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php bloginfo('home'); ?&amp;gt;/wp-rss2.php?cat=&amp;lt;?php echo $catID ?&amp;gt;&amp;quot; class=&amp;quot;rss&amp;quot;&amp;gt;&amp;amp;nbsp;&amp;lt;/a&amp;gt;&lt;br /&gt;
	&amp;lt;/h3&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;?php // Latest Story and Thumbnail&lt;br /&gt;
 	query_posts('showposts=1&amp;amp;cat='.$catID); //gets the latest post&lt;br /&gt;
 	if (have_posts()) : while (have_posts()) : the_post(); //the loop&lt;br /&gt;
?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;div class=&amp;quot;column span-7 border&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;?php //get thumbnail (custom field)&lt;br /&gt;
		 		$image = get_post_meta($post-&amp;gt;ID, 'thumbnail', true);&lt;br /&gt;
		 		if($image !== '') { &lt;br /&gt;
		?&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink() ?&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
			&amp;lt;img src=&amp;quot;&amp;lt;?php echo $image; ?&amp;gt;&amp;quot; alt=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/a&amp;gt;&lt;br /&gt;
		&amp;lt;?php } else { ?&amp;gt;&lt;br /&gt;
		&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink() ?&amp;gt;&amp;quot;&amp;gt; &lt;br /&gt;
			&amp;lt;img src=&amp;quot;&amp;lt;?php bloginfo('template_directory'); ?&amp;gt;/images/default.jpg&amp;quot; title=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot; /&amp;gt;&lt;br /&gt;
		&amp;lt;/a&amp;gt;	&lt;br /&gt;
		&amp;lt;?php } ?&amp;gt;&lt;br /&gt;
		&lt;br /&gt;
		&amp;lt;h4&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink(); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;?php the_excerpt(); ?&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
	&amp;lt;?php endwhile; else:?&amp;gt;&lt;br /&gt;
		&amp;lt;?php include(TEMPLATEPATH . '/error_form.php'); //includes error form if no posts are found ?&amp;gt;&lt;br /&gt;
	&amp;lt;?php endif; ?&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;? //Displays 4 latest headlines from current category ?&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;column span-5&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;h4&amp;gt;Latest Headlines&amp;lt;/h4&amp;gt;&lt;br /&gt;
		&amp;lt;ul&amp;gt;&lt;br /&gt;
			&amp;lt;?php&lt;br /&gt;
		 	global $post;&lt;br /&gt;
		 	$myposts = get_posts('offset=1&amp;amp;numberposts=4&amp;amp;category='.$catID);&lt;br /&gt;
		 	foreach($myposts as $post) :&lt;br /&gt;
		 	setup_postdata($post);&lt;br /&gt;
		 	?&amp;gt;&lt;br /&gt;
				&amp;lt;li&amp;gt;&amp;lt;a href=&amp;quot;&amp;lt;?php the_permalink(); ?&amp;gt;&amp;quot; title=&amp;quot;&amp;lt;?php the_title(); ?&amp;gt;&amp;quot;&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;&lt;br /&gt;
		 	&amp;lt;?php endforeach; ?&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;?php // Displays list of subcateogries ?&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;column span-3 last&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;ul&amp;gt;	&lt;br /&gt;
			&amp;lt;?php &lt;br /&gt;
			wp_list_categories('title_li=&amp;amp;hide_empty=0&amp;amp;child_of='.$catID); ?&amp;gt;&lt;br /&gt;
		&amp;lt;/ul&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
	&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php } ?&amp;gt;&lt;br /&gt;
&lt;/pre&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=2CM2v_zEldY:HcVqhmBFht4:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=2CM2v_zEldY:HcVqhmBFht4:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=2CM2v_zEldY:HcVqhmBFht4:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=2CM2v_zEldY:HcVqhmBFht4:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=2CM2v_zEldY:HcVqhmBFht4:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/2CM2v_zEldY" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/make-sections-msnbc-style-in-wordpress</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Add Update Notifications to Your WordPress Themes</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/1Ssd9FzpQ_o/add-update-notifications-to-your-wordpress-themes" />
 	  	<updated>2008-06-11T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/add-update-notifications-to-your-wordpress-themes</id>
 	  	<content type="html">&lt;p&gt;As &lt;a href="http://curtishenson.com/checkmate-a-free-wordpress-theme/"&gt;Checkmate&lt;/a&gt; approaches 300 downloads I started thinking about updates.  Checkmate has already received 4 bug fixes and I would like to be able to do a major update in the future.  But I also thought about those people that had not subscribed to the thread or the comments.  I'm not sure if these people check back often for updates but I would say most people don't. &lt;/p&gt; 

&lt;p&gt;So I thought about having themes "call home" and check for updates periodically and inform the user, much like how WordPress 2.5 informs users of updates.  But for a free theme this seemed a bit invasive to me.  A simpler and effective way I thought up is to pull a RSS feed into an admin page where users could check for update notices.  I know you can do this manually on the dashboard, but most theme users won't do that.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3&gt;How to do it&lt;/h3&gt;
&lt;p&gt;First we want to open up the functions.php from your theme directory(or create it) and create a function called &lt;strong&gt;mytheme_updates&lt;/strong&gt;.  This function is going to hold the code that pulls in an external RSS feed and displays it.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&amp;lt;?php
function mytheme_updates() { ?&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;wrap&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;table&amp;gt;&lt;br /&gt;
		&amp;lt;h2&amp;gt;Update Alerts&amp;lt;/h2&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&lt;br /&gt;
				&amp;lt;?php&lt;br /&gt;
				//get MagpieRSS&lt;br /&gt;
				 require_once(ABSPATH . WPINC . '/rss.php');&lt;br /&gt;
&lt;br /&gt;
				//Feed where updates are located&lt;br /&gt;
				 $rss = fetch_rss('http://feeds.feedburner.com/curtishenson');&lt;br /&gt;
&lt;br /&gt;
				if ($rss) {&lt;br /&gt;
&lt;br /&gt;
					// Split the array to show first 3&lt;br /&gt;
					 $items = array_slice($rss-&amp;gt;items, 0, 3);&lt;br /&gt;
&lt;br /&gt;
					//loop through the latest rss items&lt;br /&gt;
				 	foreach( $items as $item ) {&lt;br /&gt;
&lt;br /&gt;
				  		$pubdate=substr($item['pubdate'], 0, 16);&lt;br /&gt;
				  		echo '&amp;lt;p&amp;gt;&lt;br /&gt;
				   			&amp;lt;a href=&amp;quot;'.$item['link'].'&amp;quot; title=&amp;quot;'.$item['title'].'&amp;quot;&amp;gt;&amp;lt;h3&amp;gt;'.$item['title'].'&amp;lt;/h3&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
				   			&amp;lt;em&amp;gt;'.$pubdate.'&amp;lt;/em&amp;gt;&amp;lt;br /&amp;gt;'&lt;br /&gt;
				   			.$item['summary'].' summary&lt;br /&gt;
				   			&amp;lt;a href=&amp;quot;'.$item['link'].'&amp;quot;&amp;gt;more...&amp;lt;/a&amp;gt;&lt;br /&gt;
							&amp;lt;/p&amp;gt;'&lt;br /&gt;
						;&lt;br /&gt;
				  	}&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
				 	echo '&amp;lt;p&amp;gt;No updates yet&amp;lt;/p&amp;gt;';&lt;br /&gt;
				}&lt;br /&gt;
				?&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
}&lt;br /&gt;
?&gt;
&lt;/pre&gt;

&lt;p&gt;Now a lot just happened so let me explain whats going on.  We start out with some basic html to make everything look nice in the admin area.  We then call &lt;a href="http://magpierss.sourceforge.net/"&gt;MagpieRSS&lt;/a&gt; and enter the feeds location.  Magpie is an RSS parser and is used by WordPress so you don't need to install anything separately.&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php&lt;br /&gt;
				//get MagpieRSS&lt;br /&gt;
				 require_once(ABSPATH . WPINC . '/rss.php');&lt;br /&gt;
&lt;br /&gt;
				//Feed where updates are located&lt;br /&gt;
				 $rss = fetch_rss('http://feeds.feedburner.com/curtishenson');&lt;br /&gt;
&lt;/pre&gt;

&lt;p&gt;We then check if there are any feeds, limit the number of responses to three, and loop through them.  I printed out the title with a link to the post, the date and the summary.&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php&lt;br /&gt;
				if ($rss) {&lt;br /&gt;
&lt;br /&gt;
					// Split the array to show first 3&lt;br /&gt;
					 $items = array_slice($rss-&amp;gt;items, 0, 3);&lt;br /&gt;
&lt;br /&gt;
					//loop through the latest rss items&lt;br /&gt;
				 	foreach( $items as $item ) {&lt;br /&gt;
						&lt;br /&gt;
				  		$pubdate=substr($item['pubdate'], 0, 16);&lt;br /&gt;
				  		echo '&amp;lt;p&amp;gt;&lt;br /&gt;
				   			&amp;lt;a href=&amp;quot;'.$item['link'].'&amp;quot; title=&amp;quot;'.$item['title'].'&amp;quot;&amp;gt;&amp;lt;h3&amp;gt;'.$item['title'].'&amp;lt;/h3&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
				   			&amp;lt;em&amp;gt;'.$pubdate.'&amp;lt;/em&amp;gt;&amp;lt;br /&amp;gt;'&lt;br /&gt;
				   			.$item['summary'].' summary&lt;br /&gt;
				   			&amp;lt;a href=&amp;quot;'.$item['link'].'&amp;quot;&amp;gt;more...&amp;lt;/a&amp;gt;&lt;br /&gt;
							&amp;lt;/p&amp;gt;'&lt;br /&gt;
						;&lt;br /&gt;
				  	}&lt;br /&gt;
				}
&lt;/pre&gt;

The else statement is called when there is nothing in the RSS feed.

&lt;h3&gt;Next&lt;/h3&gt;
&lt;p&gt;We need to make another function now which I'll call &lt;strong&gt;mytheme_add_updates&lt;/strong&gt;.  This function will contain what we need to add the page into the admin section of WordPress.  This function calls a WordPress function named &lt;strong&gt;add_management_page&lt;/strong&gt; which will put my updates page under &lt;strong&gt;Manage&lt;/strong&gt; in the admin section.(&lt;em&gt;I could put it elsewhere also&lt;/em&gt;) &lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php
function mytheme_add_updates() {

    add_management_page("Theme Updates", "Update Alerts", 8, basename(__FILE__), 'mytheme_updates');

}
?&gt;
&lt;/pre&gt;

We're almost done!  We just need to use &lt;strong&gt;add_action&lt;/strong&gt; to invoke the &lt;strong&gt;mytheme_add_updates&lt;/strong&gt; function.

&lt;pre class="php" name="code"&gt;&amp;lt;?php
add_action('admin_menu', 'mytheme_add_updates');

?&gt;
&lt;/pre&gt;

&lt;p&gt;Now we will have a tab under &lt;strong&gt;Manage&lt;/strong&gt; which says &lt;strong&gt;Update Alerts
&lt;/strong&gt; that contains the three latest posts from whatever RSS feed you specify.  Theres plenty of ways you could use this: point the feed to a post's comments, a feed from a discussion thread, a hidden category on your site, etc.&lt;/p&gt;

&lt;h3&gt;The Whole Thing&lt;/h3&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;?php&lt;br /&gt;
//////////&lt;br /&gt;
function mytheme_add_updates() {&lt;br /&gt;
&lt;br /&gt;
    add_management_page(&amp;quot;Theme Updates&amp;quot;, &amp;quot;Update Alerts&amp;quot;, 8, basename(__FILE__), 'mytheme_updates');&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
function mytheme_updates() { ?&amp;gt;&lt;br /&gt;
	&amp;lt;div class=&amp;quot;wrap&amp;quot;&amp;gt;&lt;br /&gt;
		&amp;lt;table&amp;gt;&lt;br /&gt;
		&amp;lt;h2&amp;gt;Update Alerts&amp;lt;/h2&amp;gt;&lt;br /&gt;
		&amp;lt;tr&amp;gt;&lt;br /&gt;
			&amp;lt;td&amp;gt;&lt;br /&gt;
				&amp;lt;?php&lt;br /&gt;
				//get MagpieRSS&lt;br /&gt;
				 require_once(ABSPATH . WPINC . '/rss.php');&lt;br /&gt;
&lt;br /&gt;
				//Feed where updates are located&lt;br /&gt;
				 $rss = fetch_rss('http://feeds.feedburner.com/curtishenson');&lt;br /&gt;
&lt;br /&gt;
				if ($rss) {&lt;br /&gt;
&lt;br /&gt;
					// Split the array to show first 3&lt;br /&gt;
					 $items = array_slice($rss-&amp;gt;items, 0, 3);&lt;br /&gt;
&lt;br /&gt;
					//loop through the latest rss items&lt;br /&gt;
				 	foreach( $items as $item ) {&lt;br /&gt;
						&lt;br /&gt;
				  		$pubdate=substr($item['pubdate'], 0, 16);&lt;br /&gt;
				  		echo '&amp;lt;p&amp;gt;&lt;br /&gt;
				   			&amp;lt;a href=&amp;quot;'.$item['link'].'&amp;quot; title=&amp;quot;'.$item['title'].'&amp;quot;&amp;gt;&amp;lt;h3&amp;gt;'.$item['title'].'&amp;lt;/h3&amp;gt;&amp;lt;/a&amp;gt;&lt;br /&gt;
				   			&amp;lt;em&amp;gt;'.$pubdate.'&amp;lt;/em&amp;gt;&amp;lt;br /&amp;gt;'&lt;br /&gt;
				   			.$item['summary'].' summary&lt;br /&gt;
				   			&amp;lt;a href=&amp;quot;'.$item['link'].'&amp;quot;&amp;gt;more...&amp;lt;/a&amp;gt;&lt;br /&gt;
							&amp;lt;/p&amp;gt;'&lt;br /&gt;
						;&lt;br /&gt;
				  	}&lt;br /&gt;
				}&lt;br /&gt;
				else {&lt;br /&gt;
				 	echo '&amp;lt;p&amp;gt;No updates yet&amp;lt;/p&amp;gt;';&lt;br /&gt;
				}&lt;br /&gt;
				?&amp;gt;&lt;br /&gt;
			&amp;lt;/td&amp;gt;&lt;br /&gt;
		&amp;lt;/table&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;?php &lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
//////&lt;br /&gt;
add_action('admin_menu', 'mytheme_add_updates');&lt;br /&gt;
&lt;br /&gt;
?&amp;gt;
&lt;/pre&gt;

&lt;img src="http://curtishenson.com/wp-content/uploads/2008/06/picture-1.png" alt="" title="picture-1" width="460" height="202" class="alignnone size-full wp-image-185" /&gt;

&lt;h3&gt;Taking it further&lt;/h3&gt;
&lt;p&gt;There are many ways to improve this and expand this, and I plan on doing so.  I still would like to have some sort of notification of when there are updates to the feed.  If you have any improvements let me know!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=1Ssd9FzpQ_o:GucBOxS_Jk8:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=1Ssd9FzpQ_o:GucBOxS_Jk8:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=1Ssd9FzpQ_o:GucBOxS_Jk8:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=1Ssd9FzpQ_o:GucBOxS_Jk8:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=1Ssd9FzpQ_o:GucBOxS_Jk8:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/1Ssd9FzpQ_o" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/add-update-notifications-to-your-wordpress-themes</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Site Specific Browsers: Webapps for the Desktop</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/-nICH0dm-nU/site-specific-browsers-webapps-for-the-desktop" />
 	  	<updated>2008-06-10T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/site-specific-browsers-webapps-for-the-desktop</id>
 	  	<content type="html">&lt;p&gt;Site specific browsers(SSBs) are my new favorite &lt;em&gt;thing&lt;/em&gt;.  If you haven't heard of SSBs yet, this will change the way you use the web, and your life will change for the better forever and ever.  SSBs are just what they sound like: a &lt;strong&gt;browser specifically for one website&lt;/strong&gt;.  Sounds ridiculous and useless doesn't it?  Why would I want a bunch of browsers when I can have tabs in &lt;a href="http://www.mozilla.com/en-US/firefox/"&gt;Firefox&lt;/a&gt;?  Well I'm going to show you. &lt;/p&gt; 

&lt;h3&gt;Here comes Fluid&lt;/h3&gt;
&lt;p&gt;Fluid is a program(&lt;em&gt;Mac only, see below for windows recommendations&lt;/em&gt;) for &lt;strong&gt;creating these SSBs&lt;/strong&gt;.  From the &lt;a href="http://fluidapp.com/"&gt;Fluid website&lt;/a&gt;:&lt;/p&gt;

&lt;blockquote&gt;Fluid includes Tabbed Browsing, built-in Userscripting (aka Greasemonkey), URL pattern matching for browsing whitelists and blacklists, bookmarks, auto-software updates via the Sparkle Update framework, custom SSB icons, a JavaScript API for showing Dock badges, Growl notifications, and Dock menu items, and more.&lt;/blockquote&gt;

&lt;p&gt;That may sound dry and uninteresting to you at first, but once you see it in action you will start to see the light.  Watch the screencast as Todd Ditchendorf walks you through creating &lt;a href="http://twitter.com/svenhenson"&gt;twitter&lt;/a&gt; and digg SSBs. &lt;/p&gt;

&lt;object width="400" height="251"&gt;&lt;param name="allowfullscreen" value="true" /&gt;&lt;param name="allowscriptaccess" value="always" /&gt;&lt;param name="movie" value="http://www.vimeo.com/moogaloop.swf?clip_id=1003438&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=7accc8&amp;amp;fullscreen=1" /&gt;&lt;embed src="http://www.vimeo.com/moogaloop.swf?clip_id=1003438&amp;amp;server=www.vimeo.com&amp;amp;show_title=1&amp;amp;show_byline=0&amp;amp;show_portrait=0&amp;amp;color=7accc8&amp;amp;fullscreen=1" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="400" height="251"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;br /&gt;&lt;a href="http://www.vimeo.com/1003438?pg=embed&amp;sec=1003438"&gt;Desktop Clients via Fluid&lt;/a&gt; from &lt;a href="http://www.vimeo.com/user328540?pg=embed&amp;sec=1003438"&gt;Todd Ditchendorf&lt;/a&gt; on &lt;a href="http://vimeo.com?pg=embed&amp;sec=1003438"&gt;Vimeo&lt;/a&gt;.

&lt;p&gt;Convinced yet? No? Well you could check out &lt;a href="http://www.vimeo.com/895002"&gt;thumbnail browsing&lt;/a&gt; or the &lt;a href="http://www.vimeo.com/948558"&gt;tabbed browsing demo&lt;/a&gt;.  This was enough for me to start experimenting and seeing what &lt;a href="http://fluidapp.com/"&gt;Fluid&lt;/a&gt; could actually do.&lt;/p&gt;

&lt;h3&gt;My First Impressions&lt;/h3&gt;
&lt;p&gt;I fired up Fluid and decided to try out &lt;a href="http://www.pandora.com/"&gt;Pandora&lt;/a&gt;.  Creating a SSB is &lt;strong&gt;incredibly easy&lt;/strong&gt;.  Enter the address you want, name it, choose an icon.  You can use the favicon or check out the &lt;a href="http://www.flickr.com/groups/fluid_icons/pool/page2/"&gt;flickr group&lt;/a&gt; for icons.  After the initial setup you have &lt;strong&gt;options to customize and make the SSB behave how you like&lt;/strong&gt;.  You can even create a &lt;a href="http://fluidapp.com/blog/2008/05/14/menuextra-ssbs-preview/"&gt;menuextra&lt;/a&gt;.  
&lt;/p&gt;
&lt;p&gt;Now I can have Pandora behave more like a program, I can launch it with 2 keystrokes and it doesn't crash when Firefox will.  I used this little app, but it really wasn't all that amazing to me.  My revelation came when I found &lt;a href="http://listen.grooveshark.com/"&gt;Grooveshark&lt;/a&gt;.  This was the perfect site for a SSB.  I can launch Grooveshark in a SSB and have an &lt;strong&gt;unlimited music library&lt;/strong&gt; in a very slick iPod like interface.&lt;/p&gt;

&lt;p&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2008/06/grooveshark_ssb.jpg" alt="" title="grooveshark_ssb" width="460" height="320" class="wp-image-180" /&gt;&lt;/p&gt;

&lt;p&gt;This is when I realized how useful SSBs are.  I quickly jumped online and got &lt;a href="http://flingmedia.com/articles/making-google-reader-for-fluid/"&gt;Google Reader&lt;/a&gt; in its own SSB.  &lt;a href="http://twitlive.tv/"&gt;Twit live&lt;/a&gt; now has its own SSB.  And for productivity I added the &lt;a href="http://www.paymo.biz/"&gt;PayMo&lt;/a&gt; service into two SSBs.  One SSB is for the web based dashboard and adding things like clients, projects, and tasks.  The other is a menuextra I use to start and stop the time tracker.  Paymo already has a widget but I don't like using OS X's dashboard for anything other than checking weather, so this works out perfect for me.&lt;/p&gt;

&lt;h3&gt;My Lasting Impression&lt;/h3&gt;
&lt;p&gt;With so many web apps available the &lt;strong&gt;uses for Fluid and SSBs is almost unlimited&lt;/strong&gt;.  I think people like the way "programs" work, and how they interact with a program.  Freeing these web applications from the browser separates "&lt;em&gt;internet browsing&lt;/em&gt;" from the application which is important to me.&lt;/p&gt;

&lt;h3&gt;Windows?&lt;/h3&gt;
&lt;p&gt;Well I know not everyone is part of the Apple cult...yet.  So I searched around and found &lt;a href="http://bubbleshq.com/"&gt;BubblesHQ&lt;/a&gt;.  Unfortunately this looks &lt;strong&gt;much more limited&lt;/strong&gt; when compared to Fluid so your mileage may vary.  If anyone knows a good substitute for windows leave the link in the comments, until then google for "&lt;em&gt;Site Specific Browsers&lt;/em&gt;" and you will get plenty of sites to check out.&lt;/p&gt;

&lt;h3&gt;Whats Next?&lt;/h3&gt;
&lt;p&gt;If you want to know more about Fluid, I reccomend checking out the &lt;a href="http://fluidapp.com"&gt;website&lt;/a&gt;, &lt;a href="http://fluidapp.com/blog/"&gt;blog&lt;/a&gt;,  and &lt;a href="http://fluidapp.com/features/"&gt;feature list&lt;/a&gt;.  There is also a &lt;a href="http://fluidapp.com/community/"&gt;community&lt;/a&gt; around Fluid developing some really nifty scripts.  Fluid also supports many advanced features, scripting, and more which I plan on going over in another post.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=-nICH0dm-nU:etFtUf_Glmk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=-nICH0dm-nU:etFtUf_Glmk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=-nICH0dm-nU:etFtUf_Glmk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=-nICH0dm-nU:etFtUf_Glmk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=-nICH0dm-nU:etFtUf_Glmk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/-nICH0dm-nU" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/site-specific-browsers-webapps-for-the-desktop</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Google Now Hosts Javascript Libraries</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/4wONKpO0Ta0/google-now-hosts-javascript-libraries" />
 	  	<updated>2008-06-07T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/google-now-hosts-javascript-libraries</id>
 	  	<content type="html">&lt;p&gt;News of &lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;Google Ajax Libraries API&lt;/a&gt; is spreading fast, and I for one welcome it.  Anything I can do to &lt;strong&gt;speed up websites&lt;/strong&gt; and offload files is something I'll likely take advantage of.
&lt;/p&gt;
&lt;p&gt;They've recently added jQuery, and I'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.  &lt;/p&gt;

&lt;h3&gt;The Real Benefit&lt;/h3&gt;
&lt;p&gt;However, offloading the file to the &lt;a href="http://en.wikipedia.org/wiki/Hackers_(film)"&gt;Gibsons&lt;/a&gt; over at Google is not the main reason this is faster.  &lt;strong&gt;Caching is what makes this so much faster&lt;/strong&gt;, after the initial download, the library is cached and no longer re-downloaded at every website.  For example if a user visits jQuery'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.&lt;/p&gt;

&lt;h3&gt;Security Risks&lt;/h3&gt;
&lt;p&gt;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(&lt;-- mortal kombat reference) for the hacker.  I think there is a &lt;strong&gt;VERY&lt;/strong&gt; small chance of this actually happening, so the reward well exceeds that risk.&lt;/p&gt;

&lt;p&gt;Another point to consider is Google will have access to data about your website it may not normally have access to.  This doesn'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.&lt;/p&gt;

&lt;h3&gt;How do I use it?&lt;/h3&gt;
&lt;p&gt;Thats easy, you can either call the new script in a simple &amp;lt;script&gt; tag like I am currently doing.  Or use the google.load function.&lt;/p&gt;

&lt;p&gt;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.  &lt;strike&gt;I believe using 1 as the version number gets the latest version, but I'm not 100% sure.&lt;/strike&gt;  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).&lt;/p&gt;
&lt;pre class="html"&gt;
&amp;lt;script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js" type="text/javascript"&gt;&amp;lt;/script&gt;
&lt;/pre&gt;

&lt;p&gt;The next example uses the google.load function and is straight from the Google page.&lt;/p&gt;

&lt;pre class="js" name="code"&gt;
&amp;lt;script src=&amp;quot;http://www.google.com/jsapi&amp;quot;&amp;gt;&amp;lt;/script&amp;gt;&lt;br /&gt;
&amp;lt;script&amp;gt;&lt;br /&gt;
  // Load jQuery&lt;br /&gt;
  google.load(&amp;quot;jquery&amp;quot;, &amp;quot;1&amp;quot;);&lt;br /&gt;
&lt;br /&gt;
  // on page load complete, fire off a jQuery json-p query&lt;br /&gt;
  // against Google web search&lt;br /&gt;
  google.setOnLoadCallback(function() {&lt;br /&gt;
    $.getJSON(&amp;quot;http://ajax.googleapis.com/ajax/services/search/web?q=google&amp;amp;;v=1.0&amp;amp;;callback=?&amp;quot;,&lt;br /&gt;
&lt;br /&gt;
      // on search completion, process the results&lt;br /&gt;
      function (data) {&lt;br /&gt;
        if (data.responseDate.results &amp;amp;&amp;amp;&lt;br /&gt;
            data.responseDate.results.length&amp;gt;0) {&lt;br /&gt;
          renderResults(data.responseDate.results);&lt;br /&gt;
        }&lt;br /&gt;
      });&lt;br /&gt;
    });&lt;br /&gt;
&amp;lt;/script&amp;gt;
&lt;/pre&gt;

&lt;p&gt;For more information about the API see Google's &lt;a href="http://code.google.com/apis/ajaxlibs/"&gt;AJAX libraries&lt;/a&gt; page&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=4wONKpO0Ta0:e4YCvUuOeSQ:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=4wONKpO0Ta0:e4YCvUuOeSQ:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=4wONKpO0Ta0:e4YCvUuOeSQ:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=4wONKpO0Ta0:e4YCvUuOeSQ:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=4wONKpO0Ta0:e4YCvUuOeSQ:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/4wONKpO0Ta0" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/google-now-hosts-javascript-libraries</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Democracy Sucks At Web Design</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/ZvwVLKWnAPc/democracy-sucks-at-web-design" />
 	  	<updated>2008-06-05T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/democracy-sucks-at-web-design</id>
 	  	<content type="html">&lt;p&gt;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. &lt;/p&gt; 

&lt;h3&gt;RSS/XML to the Rescue&lt;/h3&gt;
&lt;p&gt;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 ...well... sucks.  I'm not going to spend my time doing it, and I doubt you would either.&lt;/p&gt;

&lt;p&gt;Well the smarty pants guys(I'm just jealous) over at Princeton have written a paper suggesting stop the nonsense redesigning of government websites, and &lt;a href="http://arstechnica.com/news.ars/post/20080603-study-gov-websites-should-focus-on-rss-xmlnot-redesigns.html"&gt;deliver the raw data via a structured format like RSS and XML&lt;/a&gt;.  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.&lt;/p&gt;  

&lt;h3&gt;Throw in an API&lt;/h3&gt;
&lt;p&gt;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 &lt;em&gt;calming&lt;/em&gt; pastel colors.  I don't know if we'll ever see this type of integration but it is nice to imagine.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZvwVLKWnAPc:-S0ghgutf18:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZvwVLKWnAPc:-S0ghgutf18:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=ZvwVLKWnAPc:-S0ghgutf18:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZvwVLKWnAPc:-S0ghgutf18:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=ZvwVLKWnAPc:-S0ghgutf18:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/ZvwVLKWnAPc" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/democracy-sucks-at-web-design</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Get the Category ID in WordPress</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/_NXM4iHO0sY/get-the-category-id-in-wordpress" />
 	  	<updated>2008-05-19T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/get-the-category-id-in-wordpress</id>
 	  	<content type="html">&lt;p&gt;Today I have a quick tip for all the WordPress theme developers.  I'm actually working on a theme right now and thought I would share a tip that will make your themes much more user friendly.&lt;/p&gt;

&lt;p&gt;Often when developing themes for one reason or another you want the end user to give you the ID for a category.  This could be so you could call certain categories, or exclude them, or create custom menus etc.  In previous WordPress versions &lt;!--more--&gt;the category ID's were listed along side the categories so it wasn't as hard for people to find the ID's.  This isn't true anymore, and for less savvy template users, finding a category ID may not be so easy.  At first I simply decided to give users a chart in the theme options page(you can see this in action in my CheckMate theme), and that works OK.  But it isn't ideal.
&lt;/p&gt;
&lt;h3&gt;No Worries, We Got A Function&lt;/h3&gt;
&lt;p&gt;That function is &lt;strong&gt;get_cat_id()&lt;/strong&gt; and can make end users life easier.  You can use this function to take the category name get it's ID number to use in functions like &lt;strong&gt;query_posts&lt;/strong&gt;.  Now all your users have to do is enter the category name in the theme options panel(or name a category something specific like "video").&lt;/p&gt;

&lt;h3&gt;Examples&lt;/h3&gt;
&lt;p&gt;This is a very basic example of how to use the function.&lt;/p&gt;
&lt;script src="http://gist.github.com/610421.js?file=cat_id.php"&gt;&lt;/script&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=_NXM4iHO0sY:vNbuFNB3Nhs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=_NXM4iHO0sY:vNbuFNB3Nhs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=_NXM4iHO0sY:vNbuFNB3Nhs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=_NXM4iHO0sY:vNbuFNB3Nhs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=_NXM4iHO0sY:vNbuFNB3Nhs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/_NXM4iHO0sY" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/get-the-category-id-in-wordpress</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Barely Teens are Better Coders Than You</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/y_k3AP9FPmw/barely-teens-are-better-coders-than-you" />
 	  	<updated>2008-05-13T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/barely-teens-are-better-coders-than-you</id>
 	  	<content type="html">&lt;p&gt;And Me.  I've recently noticed a disturbing trend, kids barely in their teens as web designers and developers.  And they are better at it than 20 somethings.  I started when I was 15 and quickly grasped HTML(that was HUGE back in the day).  I thought I was a pro and would laugh at my older counterparts fumbling around with their BBS boards.  Now I'm the fool fumbling around with the web while barely teens are already better skilled than I. &lt;/p&gt;  

&lt;p&gt;When I was twelve I was too busy playing police quest, giving a presentation on anything was out of the question.  Not for &lt;strong&gt;Dimitri&lt;/strong&gt; though!  He has a far better grasp on javascript and jQuery &lt;strong&gt;at the age of twelve&lt;/strong&gt; than I will when I'm fifty.  Check out the &lt;a href="http://www.youtube.com/watch?v=8mwKq7_JlS8"&gt;jQuery presentation&lt;/a&gt; he did for Google....yes Google.&lt;/p&gt;

&lt;p&gt;When I was 13 hacking to me meant taking over someones AOL AIM account and messaging their friends with "I'm a stupid head".  I didn't know what SQL was(if it was around then), and I surely didn't know how to hack(the happy hacker website wasn't around yet).  &lt;strong&gt;Hayes Potter&lt;/strong&gt; doesn't have that problem.  &lt;strong&gt;At 13 he can hack your website&lt;/strong&gt;, then tell you how to fix it, and pay his tuition to M.I.T. before he can drive.  Read his &lt;a href="http://xnme.exofire.net/2008/05/07/simple-sql-injection-hacking-techniques/"&gt;tutorial on SQL Injections&lt;/a&gt; at his blog, &lt;strong&gt;WordPress theme developers&lt;/strong&gt; should pay close attention to this.  He also has a surfer and Converse All Stars in his header which makes him extra cool with me.&lt;/p&gt;

&lt;p&gt;With kids(what do you call them when they are smarter than you?) like these around, the future of the net is very secure and will be an &lt;strong&gt;exciting place&lt;/strong&gt;.  Sometimes older web designers get jaded on technology, these kids remind me that the net is ever changing and moving forward and I for one have no problem learning from them.  So keep up guys, you don't want to be that grumpy old bearded guy working in a dirty office with 10 year old monitors and a huge rats nest of cat5 cables in the corner do you?  Actually that dude is pretty cool, he probably is really good at Word of Warcraft too.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=y_k3AP9FPmw:XVgFx_Gvx78:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=y_k3AP9FPmw:XVgFx_Gvx78:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=y_k3AP9FPmw:XVgFx_Gvx78:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=y_k3AP9FPmw:XVgFx_Gvx78:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=y_k3AP9FPmw:XVgFx_Gvx78:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/y_k3AP9FPmw" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/barely-teens-are-better-coders-than-you</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Checkmate: A Free Wordpress Theme</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/WrCnHQ9EgKU/checkmate-a-free-wordpress-theme" />
 	  	<updated>2008-04-25T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/checkmate-a-free-wordpress-theme</id>
 	  	<content type="html">&lt;blockquote&gt;&lt;strong&gt;Note:&lt;/strong&gt; &lt;a href="http://curtishenson.com/checkmate-20-a-free-premium-wordpress-theme/"&gt;A new version of Checkmate has been released. Get the new version now!&lt;/a&gt;&lt;/blockquote&gt;

&lt;p&gt;I told you earlier I was going to release it, and here it is!  The &lt;a href="http://curtishenson.com/checkmate/"&gt;Checkmate WordPress theme&lt;/a&gt;.  It is a classic blog style template with a minimalist design packed with features and customizing options.  This is one to definitely download and try out and includes a quick start guide to show you how to use some of the features.&lt;/p&gt;

&lt;a href="http://curtishenson.com/checkmate/"&gt;Checkmate Demo&lt;/a&gt; - &lt;em&gt;The demo is a bit messy looking because I tried to show off as much of the theme as I could.&lt;/em&gt;

&lt;div class="clearfix"&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/2008/03/picture-1-13-59-23.png" title="checkmate_screen1"&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/picture-1-13-59-23.thumbnail.png" width="200" height="139" alt="checkmate_screen1" class="imageframe imgalignleft" /&gt;&lt;/a&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/2008/03/picture-2-13-59-23.png" title="checkmate_screen2"&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/picture-2-13-59-23.thumbnail.png" width="200" height="139" alt="checkmate_screen2" class="imageframe imgalignleft" /&gt;&lt;/a&gt;&lt;/div&gt;
&lt;!--more--&gt;
&lt;h3&gt;Theme Options&lt;/h3&gt;
&lt;p&gt;Checkmate has a lot of options so you can get the most out of your theme without knowing any code.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;Optional Header Image&lt;/li&gt;
	&lt;li&gt;Optional Featured Categories&lt;/li&gt;
	&lt;li&gt;Feedburner Integration&lt;/li&gt;
	&lt;li&gt;Menu Customization&lt;/li&gt;
	&lt;li&gt;Optional Footer Widget Areas&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Features&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;Checkmate comes with &lt;strong&gt;7 color themes&lt;/strong&gt;.  Grey, Red, Blue, Green, Purple, Brown, and Grey/Red.&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Custom&lt;/strong&gt; widgets built for Checkmate.&lt;/li&gt;
	&lt;li&gt;Tabbed Content Box - widget enabled&lt;/li&gt;
	&lt;li&gt;&lt;strong&gt;Two, Three, or Split Column Design&lt;/strong&gt;&lt;/li&gt;
	&lt;li&gt;Feedburner Integration&lt;/li&gt;
	&lt;li&gt;Optional Widget enabled footer&lt;/li&gt;
	&lt;li&gt;Custom Icons&lt;/li&gt;
	&lt;li&gt;Gravatar support for authors and comments(Wordpress 2.5)&lt;/li&gt;
	&lt;li&gt;Custom author, archive, tag, category, and search pages.&lt;/li&gt;
	&lt;li&gt;Widget Enabled Sidebars&lt;/li&gt;
        &lt;li&gt;Includes the TimThumb script for resizing post thumbnails located under the post meta information.&lt;/li&gt;
        &lt;li&gt;Tested in Firefox 2, Safari(Mac), IE7, IE6. (IE6 has a problem with post thumbnails, if this concerns you bug me to fix it).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Ad Management&lt;/h3&gt;
&lt;p&gt;Checkmate has &lt;strong&gt;two forms of built in ad management&lt;/strong&gt;.  One form built right into theme options panel and another more advanced customizable form.  Both forms of management are controlled by widgets for &lt;strong&gt;easy placement&lt;/strong&gt; and you retain the ability to turn them on or off via theme options panel.&lt;/p&gt;

&lt;h3&gt;License&lt;/h3&gt;
&lt;p&gt;Checkmate is released under the &lt;a href="http://creativecommons.org/licenses/by-sa/3.0/us/"&gt;Creative Commons Attribution-Share Alike 3.0&lt;/a&gt; license.  All I ask is that you link back to my website somewhere in your site.&lt;/p&gt;

&lt;h3&gt;Updates&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Version 1.01&lt;/li&gt;
      &lt;ul&gt;
      &lt;li&gt;Added wp_footer hook for plugins&lt;/li&gt;
      &lt;/ul&gt;
&lt;li&gt;Version 1.02&lt;/li&gt;
      &lt;ul&gt;
      &lt;li&gt;Fixed Header Image Bug&lt;/li&gt;
      &lt;li&gt;Added browser detectable RSS Feeds (RSS2, RSS1.0/RDF, RSS0.92, RSS2 Comments, ATOM)&lt;/li&gt;
      &lt;/ul&gt;
&lt;li&gt;Version 1.03&lt;/li&gt;
      &lt;ul&gt;
      &lt;li&gt;Added page template with comments enabled&lt;/li&gt;
      &lt;/ul&gt;
&lt;li&gt;Version 1.04&lt;/li&gt;
      &lt;ul&gt;
      &lt;li&gt;Fixed sidebar error when requiring users to be registered and logged in to comment&lt;/li&gt;
      &lt;li&gt;Misc. code cleanup&lt;/li&gt;
      &lt;/ul&gt;
&lt;li&gt;Version 1.05&lt;/li&gt;
      &lt;ul&gt;
      &lt;li&gt;Removed query_posts from index.php for pagination support&lt;/li&gt;
      &lt;/ul&gt;
&lt;li&gt;Version 1.06&lt;/li&gt;
      &lt;ul&gt;
      &lt;li&gt;Changed "1 Comments" to "1 Comment"&lt;/li&gt;
      &lt;li&gt;Fixed the multiple categories as "featured" categories error&lt;/li&gt;
      &lt;/ul&gt;
&lt;/ul&gt;

&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=WrCnHQ9EgKU:oncjDRhZEIw:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=WrCnHQ9EgKU:oncjDRhZEIw:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=WrCnHQ9EgKU:oncjDRhZEIw:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=WrCnHQ9EgKU:oncjDRhZEIw:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=WrCnHQ9EgKU:oncjDRhZEIw:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/WrCnHQ9EgKU" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/checkmate-a-free-wordpress-theme</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Write Your Own Related Posts Plugin</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/YVF7s6XeEiA/write-your-own-related-posts-plugin" />
 	  	<updated>2008-04-11T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/write-your-own-related-posts-plugin</id>
 	  	<content type="html">&lt;p&gt;My previous post on writing a simple related posts plugin was a popular one, and one reader wanted to take it further for a website he was working on.  Well it was painfully obvious that my example was inadequate for doing any sort of fun stuff so I started adding bits and pieces to create a more robust widget.  If you haven't already, you might want to read the first post to get caught up.&lt;/p&gt;

&lt;p&gt;This isn't a true "plugin" in the sense you can activate it in Wordpress, but more of a widget you can plug into your theme.  This widget is going to grab posts based on tags and return specific info from the matching posts.  This will be a good chance to see some of the guts of Wordpress being used and how you might use them for your own projects.&lt;/p&gt;
&lt;!--more--&gt;
&lt;h3&gt;Start Your Hacking Engines&lt;/h3&gt;
&lt;p&gt;We'll first set up our widget.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&amp;lt;?php
//Start the related posts widget
function widget_related_posts() {
	//code goes here
} //End widget and register the widget for use in Wordpress
       if ( function_exists('register_sidebar_widget') )
       register_sidebar_widget(__('Related Posts'), 'widget_related_posts');
?&gt;&lt;/pre&gt;
&lt;p&gt;Ok, nothing major, got our widget ready, I'll be leaving this out of the code for the time being but everything I talk about below is contained where is says "code goes here".&lt;/p&gt;

&lt;h3&gt;PHP Is Your Friend&lt;/h3&gt;
&lt;p&gt;Not really.  Ok first things first, we need to get the tags for the current post.  This is easy, we'll use the function wp_get_post_tags().  Also set $post to global(we'll use $wpdb later so I'll set that to global too).  In order to get the current post's tags use $post-&gt;ID, if you want to make sure you are getting the tags use print_r().  The example below should make this all clear.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&amp;lt;?php
               global $wpdb, $post;
               $tags = wp_get_post_tags($post-&gt;ID);
               //print_r ($tags);&lt;/pre&gt;
&lt;p&gt;Now we have a variable named $tags, which has...tags, genius I know.  Now we need to do something with them.&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php
global $wpdb, $post;
               $tags = wp_get_post_tags($post-&gt;ID);
               //print_r ($tags);

               $taglist = "'" . str_replace("'",'',str_replace('"','',urldecode($tags[0]-&gt;term_id))) ."'";

               $tagcount = count($tags);
                       if ($tagcount &gt; 1) {
                       for ($i = 1; $i &lt;= $tagcount; $i++) {
                               $taglist = $taglist . ", '" . str_replace("'",'',str_replace('"','',urldecode($tags[$i]-&gt;term_id))) . "'";
                       }
                       }&lt;/pre&gt;
&lt;p&gt;What happens here is we get some info from the tags for use in a query(more on that in a sec).  The first $taglist is used if only one tag is present on the post.  The second $taglist checks if there is more than one tag, then loops through each one, preparing them for whats next.&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php
global $wpdb, $post;
               $tags = wp_get_post_tags($post-&gt;ID);
               //print_r ($tags);

               $taglist = "'" . str_replace("'",'',str_replace('"','',urldecode($tags[0]-&gt;term_id))) ."'";

               $tagcount = count($tags);
                       if ($tagcount &gt; 1) {
                       for ($i = 1; $i &lt;= $tagcount; $i++) {
                               $taglist = $taglist . ", '" . str_replace("'",'',str_replace('"','',urldecode($tags[$i]-&gt;term_id))) . "'";
                       }
                       }


               $limit = "LIMIT 10";
               $now = current_time('mysql',1);
               $q = "SELECT DISTINCT pm.meta_id, pm.meta_key, pm.meta_value, 
					p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb-&gt;term_taxonomy t_t,
					$wpdb-&gt;term_relationships t_r, $wpdb-&gt;posts p, $wpdb-&gt;postmeta pm
					WHERE t_t.taxonomy='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id 
					AND t_r.object_id  = p.ID 
					AND (t_t.term_id IN ($taglist)) AND p.ID != $post-&gt;ID AND p.post_status = 'publish' 
					AND p.post_date_gmt &lt; '$now' GROUP BY t_r.object_id 
					ORDER BY cnt DESC, p.post_date_gmt DESC $limit";
   				
				$related_posts = $wpdb-&gt;get_results($q);
               // print_r ($related_posts);
&lt;/pre&gt;

&lt;p&gt;There is a lot going on here.  What I've added is a database query($q).  This query is going to fetch the posts we want, and what we want from those posts.  I'll explain in short what is going on, but the Wordpress codex would be a good place to learn more about this.&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php
$q = "SELECT DISTINCT pm.meta_id, pm.meta_key, pm.meta_value, 
					p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb-&gt;term_taxonomy t_t,
					$wpdb-&gt;term_relationships t_r, $wpdb-&gt;posts p, $wpdb-&gt;postmeta pm
&lt;/pre&gt;
This line selects distinct posts and what we want from those posts.  The pm.* are getting the custom field information.  The p.* are getting post info(ID, Title, Date, Comment Count).  The "FROM" part is telling the query which databases to look for the information in.

&lt;pre class="php" name="code"&gt;&amp;lt;?php
WHERE t_t.taxonomy='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id 
					AND t_r.object_id  = p.ID 
					AND (t_t.term_id IN ($taglist)) AND p.ID != $post-&gt;ID AND p.post_status = 'publish' 
					AND p.post_date_gmt &lt; '$now'
&lt;/pre&gt;
&lt;p&gt;The WHERE section is telling the database you only want posts that match "where this criteria is met".  In this case we only want posts that match the tags associated with the current post.  You could read this statement like so:  Get posts that have tags matching those in $taglist but don't get the current post, make sure the post is published before the very second(ie don't get posts to be published in the future).&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php
GROUP BY t_r.object_id 
					ORDER BY cnt DESC, p.post_date_gmt DESC $limit";
   				
				$related_posts = $wpdb-&gt;get_results($q);
&lt;/pre&gt;
&lt;p&gt;We then group the posts by their ID in a descending order by date, but we limit the amount of posts to $limit(which is equal to 10 in this case).  Then we run the query through the Wordpress database, and set it to a variable called $related_posts.&lt;/p&gt;

&lt;p&gt;Thats it, almost.  Now we have an array with posts and their info and we are ready to print it out.  But first a quick recap.  We have gotten the tags for the current post, set them up for a database query, ran them through the database and got all the posts we want(and their specific info), then stuck them in an array.  And it all looks like this.&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php
global $wpdb, $post;
               $tags = wp_get_post_tags($post-&gt;ID);
               //print_r ($tags);

               $taglist = "'" . str_replace("'",'',str_replace('"','',urldecode($tags[0]-&gt;term_id))) ."'";

               $tagcount = count($tags);
                       if ($tagcount &gt; 1) {
                       for ($i = 1; $i &lt;= $tagcount; $i++) {
                               $taglist = $taglist . ", '" . str_replace("'",'',str_replace('"','',urldecode($tags[$i]-&gt;term_id))) . "'";
                       }
                       }


               $limit = "LIMIT 10";
               $now = current_time('mysql',1);
               $q = "SELECT DISTINCT pm.meta_id, pm.meta_key, pm.meta_value, 
					p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb-&gt;term_taxonomy t_t,
					$wpdb-&gt;term_relationships t_r, $wpdb-&gt;posts p, $wpdb-&gt;postmeta pm
					WHERE t_t.taxonomy='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id 
					AND t_r.object_id  = p.ID 
					AND (t_t.term_id IN ($taglist)) AND p.ID != $post-&gt;ID AND p.post_status = 'publish' 
					AND p.post_date_gmt &lt; '$now' GROUP BY t_r.object_id 
					ORDER BY cnt DESC, p.post_date_gmt DESC $limit";
   				
				$related_posts = $wpdb-&gt;get_results($q);
               // print_r ($related_posts);
&lt;/pre&gt;

&lt;h3&gt;Almost Done, Outputting&lt;/h3&gt;
&lt;p&gt;Ok now we have our posts sitting in an array and we need to output all the info.  I'm going to hard code in all the html for this example, but this is not always the best thing to do(Check out the &lt;a href="http://automattic.com/code/widgets/api/"&gt;widgets API&lt;/a&gt; for other ways). I'll start at the top:&lt;/p&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;?php
//Start the related posts widget
function widget_related_posts() { ?&gt;
	&amp;lt;div class="widget related_posts"&gt;
	       &amp;lt;h3&gt;Related Posts&amp;lt;/h3&gt;
&amp;lt;?php
	
	global $wpdb, $post; ...
&lt;/pre&gt;
&lt;p&gt;All I did there was add in a div (you could also use a unordered list here) and some class names to hook CSS into, also I added the title tag.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&amp;lt;?php
$related_posts = $wpdb-&gt;get_results($q);
	                //print_r ($related_posts); ?&gt;
	
		&amp;lt;ul&gt;
			&amp;lt;?php
			foreach ($related_posts as $related_post):
			//print_r ($related_post); ?&gt;
&lt;/pre&gt;
&lt;p&gt;This is the next step, after running our query take the array and do a "foreach" loop on it.  Now we can output all the data we want.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&amp;lt;?php
&amp;lt;li&gt;&amp;lt;a href="&amp;lt;?php echo get_permalink($related_post-&gt;ID); ?&gt;"&gt;
					&amp;lt;?php echo $related_post-&gt;post_title ?&gt;&amp;lt;/a&gt;&amp;lt;/li&gt;

				    	&amp;lt;?php //get thumbnail (custom field)
				        $image = get_post_meta($related_post-&gt;ID, 'image', true); 
						if ( $image != '') {?&gt;
				         	&amp;lt;a href="&amp;lt;?php echo get_permalink($related_post-&gt;ID); ?&gt;" rel="bookmark" 
								title="Permanent Link to &amp;lt;?php echo $related_post-&gt;post_title ?&gt;"&gt;
				      		&amp;lt;img src="&amp;lt;?php echo $image; ?&gt;" alt="&amp;lt;?php echo $related_post-&gt;post_title ?&gt;" /&gt;&amp;lt;/a&gt;

				    	&amp;lt;?php } endforeach; ?&gt;

		&amp;lt;/ul&gt;
	&amp;lt;/div&gt;
&lt;/pre&gt;
&lt;p&gt;This is all the really important stuff here.  I didn't use regular wordpress template tags here, I pulled the info straight out of the array.  This example gives you a list with the title of the post and an image assigned to the custom field key "image".  It also checks to see if anything is assigned to "image" so you don't get unexpected results.&lt;/p&gt; 

&lt;h3&gt;The Whole Thing&lt;/h3&gt;
&lt;p&gt;Obviously you wouldn't want to use this for just related posts as there are plenty of plug-ins that can do that, but if you want specific results, the plug-ins are usually too general.  The reader was going to use it to display related dvd's on posts, which is a perfect example of why you would want to build your own widget.&lt;/p&gt;

&lt;p&gt;Here is the final code:&lt;/p&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;?php
//Start the related posts widget
function widget_related_posts() { ?&gt;
	&amp;lt;div class="widget related_posts"&gt;
	       &amp;lt;h3&gt;Related Posts&amp;lt;/h3&gt;
&amp;lt;?php
	
	global $wpdb, $post;
	               $tags = wp_get_post_tags($post-&gt;ID);
	               //print_r ($tags);

	               $taglist = "'" . str_replace("'",'',str_replace('"','',urldecode($tags[0]-&gt;term_id))) ."'";

	               $tagcount = count($tags);
	                       if ($tagcount &gt; 1) {
	                       for ($i = 1; $i &amp;lt;= $tagcount; $i++) {
	                               $taglist = $taglist . ", '" . str_replace("'",'',str_replace('"','',urldecode($tags[$i]-&gt;term_id))) . "'";
	                       }
	                       }

	               $limit = "LIMIT 10";
	               $now = current_time('mysql',1);
	               $q = "SELECT DISTINCT pm.meta_id, pm.meta_key, pm.meta_value,
						p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb-&gt;term_taxonomy t_t,
						$wpdb-&gt;term_relationships t_r, $wpdb-&gt;posts p, $wpdb-&gt;postmeta pm
						WHERE t_t.taxonomy='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id
						AND t_r.object_id  = p.ID
						AND (t_t.term_id IN ($taglist)) AND p.ID != $post-&gt;ID AND p.post_status = 'publish'
						AND p.post_date_gmt &amp;lt; '$now' GROUP BY t_r.object_id
						ORDER BY cnt DESC, p.post_date_gmt DESC $limit";
					//echo $q;
					$related_posts = $wpdb-&gt;get_results($q);
	                //print_r ($related_posts); ?&gt;
	
		&amp;lt;ul&gt;
			&amp;lt;?php
			foreach ($related_posts as $related_post):
			//print_r ($related_post); ?&gt;
				
				&amp;lt;li&gt;&amp;lt;a href="&amp;lt;?php echo get_permalink($related_post-&gt;ID); ?&gt;"&gt;
					&amp;lt;?php echo $related_post-&gt;post_title ?&gt;&amp;lt;/a&gt;&amp;lt;/li&gt;

				    	&amp;lt;?php //get thumbnail (custom field)
				        $image = get_post_meta($related_post-&gt;ID, 'image', true); 
						if ( $image != '') {?&gt;
				         	&amp;lt;a href="&amp;lt;?php echo get_permalink($related_post-&gt;ID); ?&gt;" rel="bookmark" 
								title="Permanent Link to &amp;lt;?php echo $related_post-&gt;post_title ?&gt;"&gt;
				      		&amp;lt;img src="&amp;lt;?php echo $image; ?&gt;" alt="&amp;lt;?php echo $related_post-&gt;post_title ?&gt;" /&gt;&amp;lt;/a&gt;

				    	&amp;lt;?php } endforeach; ?&gt;

		&amp;lt;/ul&gt;
	&amp;lt;/div&gt;
&amp;lt;?php
} //End widget and register the widget for use in Wordpress
       if ( function_exists('register_sidebar_widget') )
       register_sidebar_widget(__('Related Posts'), 'widget_related_posts');
&lt;/pre&gt;
&lt;p&gt;A lot of this code is hacked up and stripped down from current plug-ins which I highly recommend looking into the code of if you are curious about WordPress and it's inner workings.  Seeing how other more advanced people code will open you up to new ideas.&lt;/p&gt;

&lt;h3&gt;Update&lt;/h3&gt;
&lt;p&gt;One of my readers Martin read the first article about a related posts widget and wanted to take it further, the result of that conversation was this article.  Once again Martin decided to take things even further and here are the results.&lt;/p&gt;

&lt;p&gt;This example makes sure the widget title will not be shown if there are no related posts and instead replaces it with a google ad.  This is a great use of real estate on a website.&lt;/p&gt;
&lt;pre class="php" name="code"&gt;
&amp;lt;?php function widget_related_dvds() {
        global $wpdb, $post;
        $title = get_the_title($post-&gt;ID);

        $taglist = "'" .

        str_replace("'",'',str_replace('"','',urldecode($tags[0]-&gt;term_id)))
        ."'";

        $tagcount = count($tags);
        if ($tagcount &gt; 1) {
                for ($i = 1; $i &lt;= $tagcount; $i++) {
                        $taglist = $taglist . ", '" .
                        str_replace("'",'',str_replace('"','',urldecode($tags[$i]-&gt;term_id)))
                        . "'";
                }
        }

        $limit = "LIMIT 10";
        $now = current_time('mysql',1);
        $q = "SELECT DISTINCT pm.meta_id, pm.meta_key, pm.meta_value, p.ID, p.post_title, p.post_date, p.comment_count, count(t_r.object_id) as cnt FROM $wpdb-&gt;term_taxonomy t_t, $wpdb-&gt;term_relationships t_r, $wpdb-&gt;posts p, $wpdb-&gt;postmeta pm WHERE t_t.taxonomy='post_tag' AND t_t.term_taxonomy_id = t_r.term_taxonomy_id AND t_r.object_id  = p.ID AND (t_t.term_id IN ($taglist)) AND p.ID != $post-&gt;ID AND p.post_status = 'publish' AND p.post_date_gmt &amp;lt; '$now' GROUP BY t_r.object_id ORDER BY cnt DESC, p.post_date_gmt DESC $limit";

        $related_posts = $wpdb-&gt;get_results($q);

        if (count($related_posts) &gt; 0) {
                print &amp;lt;h2 id="availability"&gt;DVD&amp;lt;/h2&gt;';
        }
        else {
                print '&amp;lt;div class="adver"&gt;';
                include(TEMPLATEPATH . '/google-ad-120x240.php');
                print '&amp;lt;/div&gt;&amp;lt;!-- end adhor --&gt;';
        }
?&gt;
&lt;/pre&gt;

&lt;p&gt;This example matches posts based on the Title and a certain category (in this case the DVD category).  Note this is just the query portion of the script.&lt;/p&gt;

&lt;pre class="php" name="code"&gt;&amp;lt;?php
global $wpdb, $post;
        $title = get_the_title($post-&gt;ID);
        $limit = "LIMIT 10";
        $now = current_time('mysql',1);
        $q = "SELECT DISTINCT
                p.ID,
                p.post_title,
                p.post_category,
                p.post_date,
                p.comment_count,
                count(t_r.object_id) as cnt
                FROM
                $wpdb-&gt;term_relationships t_r,
                $wpdb-&gt;posts p,
                $wpdb-&gt;postmeta pm
                WHERE p.post_title = '$title'
                AND p.post_category = 'DVD'
                AND t_r.object_id  = p.ID
                AND p.ID != $post-&gt;ID
                AND p.post_status = 'publish'
                AND p.post_date_gmt &lt; '$now'
                GROUP BY t_r.object_id
                ORDER BY cnt DESC, p.post_date_gmt DESC $limit";

        $related_posts = $wpdb-&gt;get_results($q);
&lt;/pre&gt;

&lt;p&gt;Still not enough? It wasn't for Martin.  Add this to the script and match posts based on tags and title!&lt;/p&gt;
&lt;pre class="php" name="code"&gt;&amp;lt;?php
$title = get_the_title($post-&gt;ID);
$related_posts = query_posts("category_name=DVD&amp;tag=$title+$title");
&lt;/pre&gt;

&lt;p&gt;There you go, three examples of this simple example made into something truly useful.  If you have used this script or have a better way to do things, leave a comment!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=YVF7s6XeEiA:hUzai7KWBqc:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=YVF7s6XeEiA:hUzai7KWBqc:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=YVF7s6XeEiA:hUzai7KWBqc:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=YVF7s6XeEiA:hUzai7KWBqc:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=YVF7s6XeEiA:hUzai7KWBqc:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/YVF7s6XeEiA" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/write-your-own-related-posts-plugin</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Speed Up Your Website: Part Deuce</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/js79G_aG5zs/speed-up-your-website-part-deuce" />
 	  	<updated>2008-03-31T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/speed-up-your-website-part-deuce</id>
 	  	<content type="html">&lt;p&gt;Last week I wrote a post about what I was doing to speed up my website.  While that post is an informative, well-written piece of literary genius, it didn&amp;#8217;t go into a whole lot of detail.  That detail is in this post, because two posts are better than one.  I&amp;#8217;ve tweaked, found problems, fixed a few problems, and learned a thing or two.  I also learned there is a lot to learn.&lt;br /&gt; 
&lt;em&gt;I&amp;#8217;ll mostly talk about wordpress in this post, but many of these tools and resources are not wordpress specific.&lt;/em&gt;&lt;/p&gt; 

&lt;h3&gt;Taming HTTP Requests&lt;/h3&gt; 
&lt;p&gt;If you&amp;#8217;re like me, you have plugins, more than a few plugins.  While on their own plugins are not the problem, the files they load however are a problem.  Seeing these plugins load javascript and css files on every page even though they were not being used quickly became a pet peeve (like a pet bird that poops on the furniture).  What to do? Chuck &amp;#8216;em in the trash.  Find a plugin that behaves itself.  &lt;a href="http://www.deliciousdays.com/cforms-plugin"&gt;Cforms&lt;/a&gt; was a plugin loading on every page, I knew for sure this was a quality plugin so I took a look at the options page and sure enough I was able to limit the loading to my &lt;a href="http://curtishenson.com/about/"&gt;About&lt;/a&gt; page only.  &lt;/p&gt; 
&lt;p&gt;Also consider using &lt;a href="http://www.alistapart.com/articles/sprites"&gt;CSS sprites&lt;/a&gt; rather than loading a lot of images. &lt;/p&gt; 
&lt;p&gt;The point is, look around for a way to limit the HTTP requests, if something is loading that shouldn&amp;#8217;t be get rid of it.  This is one of the easiest ways to speed up your website, so limit your requests.&lt;/p&gt; 
&lt;h3&gt;Database Queries&lt;/h3&gt; 
&lt;p&gt;As someone who designs themes for public use, I usually don&amp;#8217;t hard code links, titles, and whatnot even on my personal sites.  This creates excess SQL queries, which take time, and time, keeps on ticking.  Don&amp;#8217;t use a wordpress tag or database query when simple beautiful fast HTML will do.&lt;/p&gt; 
&lt;p&gt;This goes for any CMS, and while this may be more relevant for large sites it can&amp;#8217;t hurt to think big when your a little guy.&lt;/p&gt; 

&lt;h3&gt;WP Super Cache&lt;/h3&gt; 
&lt;p&gt;This one is wordpress specific, but there are lots of ways to cache your website.  &lt;a href="http://ocaoimh.ie/wp-super-cache/"&gt;WP Super Cache&lt;/a&gt; converts your page into a static, pure HTML file for users that have not logged in or left a comment.  There are two big advantages to this:&lt;br /&gt; 
1. You don&amp;#8217;t make any unnecessary database queries(see above point).  This keeps your database server from crashing.&lt;br /&gt; 
2. Most of your visitors will get a compressed static HTML file.  This is the fastest way to get the page loaded and up on the screen.  Once the user leaves a comment or logs in, they see a wp-cache page which is more dynamic, yet still fast.&lt;/p&gt; 
&lt;p&gt;If you plan on receiving a lot of traffic, WP Super Cache is a must, and at the very least you should use WP-Cache.  I use wp super cache on and love it, it has not failed me yet.&lt;/p&gt; 

&lt;h3&gt;phpSpeedy&lt;/h3&gt; 
&lt;p&gt;I &lt;strike&gt;use&lt;/strike&gt; used &lt;a href="http://aciddrop.com/php-speedy/"&gt;phpSpeedy&lt;/a&gt; to take care of compression.  Getting this to work can be tricky depending on your website, but it is generally easy to set up.  The author of phpspeedy is very supportive so I suggest at least trying this out.  It is still very new but the speed at which it has been developed has made me a believer.&lt;/p&gt; 
&lt;p&gt;There are two versions of this script, a wordpress plugin and a php script to be used however you want. I don&amp;#8217;t use phpSpeedy anymore as I do all the things it does via the server now, in my case I found this simpler.&lt;/p&gt; 
&lt;h3&gt;Expires Header&lt;/h3&gt; 
&lt;p&gt;An &lt;a href="http://developer.yahoo.com/performance/rules.html#expires"&gt;expires header&lt;/a&gt; essentially tells the browser to cache things and for how long.  At first this may be confusing as there is some Apache mumbo jumbo talk to get around, but it is really easy.  If you are at all familiar with .htacces files you will have no problem setting far futures expires headers.&lt;/p&gt; 
&lt;p&gt;Here is an example of the code you would add to your .htaccess.  This bit of code is going to add a expires header to your media files.&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;&amp;lt;FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$"&gt;
Header set Expires "Thu, 15 Apr 2010 20:00:00 GMT"
&amp;lt;/FilesMatch&gt;&lt;/code&gt;&lt;/pre&gt; 
&lt;p&gt;&lt;strong&gt;NOTE&lt;/strong&gt;: Far future expire headers are going to be for files that &lt;strong&gt;do not&lt;/strong&gt; change regularly.  The browser is going to cache the file and not look back until the year 2010!  The name of the file must be changed if you change the file(using version numbers is a good way to do this, which can also be automated).&lt;/p&gt; 
&lt;p&gt;That being said, you can set the files to expire in any amount of time you want, I currently have most images set to expire after a few weeks.  Like so:&lt;/p&gt; 
&lt;pre&gt;&lt;code&gt;ExpiresActive On
ExpiresDefault A0
 
&amp;lt;FilesMatch "\.(gif|jpg|jpeg|png|swf)$"&gt;
ExpiresDefault A3600
Header append Cache-Control "public"
&amp;lt;/FilesMatch&gt;&lt;/code&gt;&lt;/pre&gt; 

&lt;h3&gt;Compressing Files&lt;/h3&gt; 
&lt;p&gt;If you have files that need compressed and wordpress, your CMS, or some other software isn&amp;#8217;t already compressing them, you can do it all via the server(which is also faster).  Askapache.com has a &lt;a href="http://www.askapache.com/htaccess/apache-speed-compression.html"&gt;tutorial on adding compression&lt;/a&gt;.  Even the smallest files can be reduced and this can have a major impact on loading times.&lt;/p&gt; 

&lt;h3&gt;Minify Javascript and Move It Down&lt;/h3&gt; 
&lt;p&gt;You should minify/compress your javascript and put it in the footer.  This ensures your content(the most important thing) is loading before all your interface slickness.  Another thing to not here is watch your analytic software, a lot of times this can greatly slow down a page if left at the top.&lt;/p&gt; 

&lt;h3&gt;Just the Beginning&lt;/h3&gt; 
&lt;p&gt;There are plenty of reasons why a website can be slow, and a way to fix each and every one of them.  I have only gone into what I believe are the easiest and best ways to speed up a website.  If you want more, tell me, or check out the sites below.&lt;/p&gt; 
&lt;ul&gt; 
&lt;li&gt;&lt;a href="http://developer.yahoo.com/performance/rules.html"&gt;Yahoo&lt;/a&gt; &amp;#8211; An exhausting read with a ton of information you &lt;strong&gt;need&lt;/strong&gt; to know. &lt;/li&gt; 
&lt;li&gt;&lt;a href="http://www.roscripts.com/How_to_speed_up_your_website-175.html"&gt;Roscript&lt;/a&gt; &amp;#8211; The somewhat shorter version of yahoo&amp;#8217;s list.&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://www.die.net/musings/page_load_time/"&gt;Die.net&lt;/a&gt; &amp;#8211; Are you a geek? Do you like charts? If so, then you should read this, some awesome information, benchmarking and testing in this article&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://httpd.apache.org/docs/1.3/howto/htaccess.html"&gt;Apache .htaccess tutorial&lt;/a&gt; &amp;#8211; A tutorial from the source, if you want to know the power of .htaccess you should read this.&lt;/li&gt; 
&lt;li&gt;&lt;a href="http://www.askapache.com/htaccess/apache-htaccess.html"&gt;Ask Apache&lt;/a&gt; &amp;#8211; more .htaccess tutorials.&lt;/li&gt; 
&lt;/ul&gt;&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=js79G_aG5zs:ZcvJDjjEPDs:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=js79G_aG5zs:ZcvJDjjEPDs:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=js79G_aG5zs:ZcvJDjjEPDs:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=js79G_aG5zs:ZcvJDjjEPDs:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=js79G_aG5zs:ZcvJDjjEPDs:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/js79G_aG5zs" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/speed-up-your-website-part-deuce</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Speed Up Your Website: Part One</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/gvAJgzi0YEw/speed-up-your-website-part-one" />
 	  	<updated>2008-03-18T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/speed-up-your-website-part-one</id>
 	  	<content type="html">&lt;h4&gt;Update:&lt;/h4&gt; &lt;a href="http://curtishenson.com/speed-up-your-website-part-deuce/"&gt;Part two of this article is now up with a lot more tips and tricks on how to speed up your website!&lt;/a&gt;

&lt;p&gt;When I first designed curtishenson.com I took into no consideration the speed that it loaded.  OK, that isn't entirely true. I compressed my images...a little,  some of my javascript was compressed, and my CSS is compressed(but only because I was trying out the new Blueprint CSS compressor).  So when my site actually got content on it, everything started grinding to a halt.  I tried speeding it up with WP_Cache, then Super_Cache, then phpSpeedy.  But I still had problems.  I was planning on starting to advertise more, release a new premium theme and my site really needed to be faster&lt;!--more--&gt;(I hope it is faster, otherwise you're probably still waiting for this article to load).&lt;/p&gt;

&lt;h3&gt;Benchmark&lt;/h3&gt;
&lt;p&gt;First thing to do is set a benchmark.  I used &lt;a href="http://www.getfirebug.com/"&gt;Firebug&lt;/a&gt; and &lt;a href="http://developer.yahoo.com/yslow/"&gt;Yslow&lt;/a&gt; to benchmark my site.  I benchmarked with &lt;a href="http://aciddrop.com/php-speedy/"&gt;phpspeedy&lt;/a&gt; and &lt;a href="http://ocaoimh.ie/wp-super-cache/"&gt;super cache&lt;/a&gt; installed and functioning and also without.  What I found surprised me, the page with no cache or phpspeedy was faster, by a whole second.  Obviously YSlow gave me a glorious F.  The blog loaded in ~5 seconds, and the homepage loaded in ~6 seconds...unacceptable!  My fastest load times were still above 3 seconds, thats an eternity on the web!&lt;/p&gt;

&lt;h3&gt;Shrinkage, Cut Those Files Down To Size&lt;/h3&gt;
&lt;p&gt;So I started from the beginning, my images, my extra large high-res awesome images that, unless you were a Swede with fiber, took &lt;strong&gt;forever&lt;/strong&gt; to load.  The biggest(no pun intended) culprit was the background image for the whole site, weighing in at just under 300k(ouch!).  To be fair it was made to expand on huge monitors, sorry guys, you get no love now.  I cut down the size and compressed it down to 132kb(might have to compress it more, time will tell).&lt;/p&gt;

&lt;p&gt;I also shrunk down all my other ridiculous images, a half transparent background image at 4k? Its now 100 &lt;em&gt;bytes&lt;/em&gt;. Some of the file numbers looked like this: 80k down to 20k, 224k to 103k, 50k to 10k, 30k to 7k.  You might not have the crazy file sizes but you can probably shrink your images down at least some.&lt;/p&gt;

&lt;p&gt;I also &lt;a href="http://javascriptcompressor.com/"&gt;compressed&lt;/a&gt; the rest of the javascript at this time.  I only had to compress two files, both for &lt;a href="http://wiki.novemberborn.net/sifr"&gt;sifr&lt;/a&gt;, but there were files from wordpress plugins that were not compressed.&lt;/p&gt;

&lt;p&gt;I don't think it made much of a difference but I consolidated my files using conditional tags, this was something that had bugged me.&lt;/p&gt;

&lt;p&gt;Tested the homepage now and the page loads in ~1.5s, that is a huge improvement.  The blog page loads up in ~2s.  That is all from minimizing images.  The page size has dropped over 200K now.  I still fail Yslow though, so lets see if we can make it even faster.&lt;/p&gt;

&lt;h3&gt;phpSpeedy&lt;/h3&gt;
&lt;p&gt;I installed &lt;a href="http://aciddrop.com/php-speedy/"&gt;phpspeedy&lt;/a&gt; next, now as wordpress plugin this is super easy to install.  Un-cached the home page loads in about 1 second, cached  it loads in an average of 700ms.  The blog loads in 2.3 seconds with an empty cache, and slightly faster with a primed cache.  YSlow scores the page a D, but the important bits all score an A.&lt;/p&gt;

&lt;h3&gt;Warp Speed Scotty!&lt;/h3&gt;
&lt;p&gt;Whats next?  I still need to do a few things.  I've enabled WP Super Cache and will see what effect it has as pages are cached.  &lt;strike&gt;Also a few plugins are causing unnecessary files to be loaded so I'll be getting rid of those&lt;/strike&gt;.  I'm also going to be tweaking the settings over the next few days to see what works the best.  It seems the server still hits a speed bump every once in awhile, but I'll see what I can do about that.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;Tune in for the next part when I'll talk about my experiences and a roundup of the tools you can use to speed up your website.  Yes I'm leaving you hanging...now go outside.&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=gvAJgzi0YEw:9tk3K3wSG1o:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=gvAJgzi0YEw:9tk3K3wSG1o:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=gvAJgzi0YEw:9tk3K3wSG1o:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=gvAJgzi0YEw:9tk3K3wSG1o:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=gvAJgzi0YEw:9tk3K3wSG1o:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/gvAJgzi0YEw" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/speed-up-your-website-part-one</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Wordpress Conditional Tags: Write Less Code</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/ZAUfFQWzz68/wordpress-conditional-tags-write-less-code" />
 	  	<updated>2008-03-14T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/wordpress-conditional-tags-write-less-code</id>
 	  	<content type="html">&lt;strong&gt;&lt;em&gt;Update: For an update to this post, and more examples of complex conditional statements, read the new article &lt;a href="http://curtishenson.com/complex-wordpress-conditional-tags/"&gt;Complex WordPress Conditional Tags&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;

&lt;p&gt;While re-aligning my website I realized I was writing a lot of redundant code.  Some page templates were nearly exactly the same like the category and tags pages, the only difference was one word!  Copying and pasting that one template seemed like a big waste of time, and it was.
I read somewhere that good programmers are lazy programmers.  Not in the sense that they don't fix their own code when they find a better way to do it...but that they don't repeat code, over and over and over again.  Not only does it take longer to repeat code, but it is a royal pain when you need to update(like when a &lt;a href="http://curtishenson.com/my-life-with-blueprint-thoughts-on-07/"&gt;CSS framework gets updated&lt;/a&gt; and drops a class name...).&lt;/p&gt;

&lt;h3&gt;Learn it right the first time&lt;/h3&gt;
&lt;p&gt;When learning to build themes the idea of &lt;a href="http://codex.wordpress.org/Template_Hierarchy"&gt;template hierarchy&lt;/a&gt; got pounded into my head.  I had template names floating around my head and had the idea that I needed to use them.  &lt;strong&gt;All of them&lt;/strong&gt;.  Category, Tag, Author, Page, Archive, Home, Date, Search and all the rest of them.  You don't need to have a template for each, unless there are going to be major differences between them!  That was a major point I missed when learning Wordpress.
&lt;/p&gt;
&lt;h3&gt;Conditional tags to the rescue&lt;/h3&gt;
&lt;p&gt;You've probably heard about &lt;a href="http://codex.wordpress.org/Conditional_Tags"&gt;conditional tags&lt;/a&gt;, used them, or seen them in other themes.  I used them all along for things like dynamic titles, but somehow it escaped me to use them to make my life simpler.  A conditional tag looks like this:&lt;/p&gt;

&lt;pre name="code" class="php"&gt;&lt;code&gt;&amp;lt;?php
if (is_home()) { echo bloginfo('name'); }
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;That means &lt;strong&gt;if&lt;/strong&gt; you are on the &lt;strong&gt;home&lt;/strong&gt; page &lt;strong&gt;print&lt;/strong&gt; the blogs &lt;strong&gt;name&lt;/strong&gt;.  You can use conditional tags for everything from adding content just for the owner of the site(edit post links) to finding out what category a post is in.  Go here for a &lt;a href="http://codex.wordpress.org/Conditional_Tags"&gt;full list&lt;/a&gt; of tags.&lt;/p&gt;

&lt;h3&gt;A bit about the hierarchy&lt;/h3&gt;
&lt;p&gt;Pretty powerful little tool no doubt, but so far it looks like adding more code not less.  Combine conditional tags with the template hierarchy and you will see what I am talking about.  Wordpress calls certain files by default. For instance, if you visit a single post Wordpress will try to call single.php, if Wordpress can't find single.php it will call index.php.  You can use this to your advantage!&lt;/p&gt;

&lt;p&gt;Say you wanted to develop a theme for Wordpress(good for you!).  You design your theme and decide that your category, tag, monthly, and authors page are all going to look exactly the same except for the header.  Instead of making a category.php, tag.php, date.php and author.php you are going to create archive.php.  Why? Glad you asked, If Wordpress doesn't find any of those files it will automatically call archive.php.  We'll use conditional tags to call specific content based on what type of page it is.  Lets look at some code!&lt;/p&gt;

&lt;pre name="code" class="php"&gt;&lt;code&gt;
&amp;lt;div class="content"&gt;
      &amp;lt;h1&gt;You are viewing the Archives&lt;/h1&gt;

      &amp;lt;?php if(have_posts()): while(have_posts()) : the_post(); ?&gt;
      &amp;lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
      &amp;lt;p class="meta"&gt;&lt;?php the_date(); ?&gt; by &lt;?php the_author(); ?&gt;&lt;/p&gt;
      &amp;lt;?php the_excerpt(); ?&gt;

      &amp;lt;?php endwhile; endif; ?&gt;
&amp;lt;/div&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Theres a really basic archives template in all its glorious glory.  But what if you are viewing an authors page?  You don't want to see "Viewing the Archives", thats confusing to people(and you never want to confuse people, &lt;em&gt;unless its a puzzle site&lt;/em&gt;).  Lets stick a conditional tag in there to show the authors name at the top.&lt;/p&gt;

&lt;pre name="code" class="php"&gt;&lt;code&gt;
&amp;lt;div class="content"&gt;
&amp;lt;?php if (is_author()) { ?&gt;
     &amp;lt;h1&gt;Posts Written By &amp;lt;?php the_author(); ?&gt;&lt;/h1&gt;
&amp;lt;?php } else (is_archive()) { ?&gt;
      &amp;lt;h1&gt;You are viewing the Archives&lt;/h1&gt;
&amp;lt;?php } ?&gt;

      &amp;lt;?php if(have_posts()): while(have_posts()) : the_post(); ?&gt;
      &amp;lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
      &amp;lt;p class="meta"&gt;&lt;?php the_date(); ?&gt; by &lt;?php the_author(); ?&gt;&lt;/p&gt;
      &amp;lt;?php the_excerpt(); ?&gt;

      &amp;lt;?php endwhile; endif; ?&gt;
&amp;lt;/div&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Now when viewing an author page you will see "All Posts By The Dude" instead of "You are viewing the Archives".  This is just a basic if else php block which can be used to do all sorts of things(I suggest playing around with ideas).  But what about all the other pages?  We can use an if elseif else block:&lt;/p&gt;

&lt;pre name="code" class="php"&gt;&lt;code&gt;
&amp;lt;div class="content"&gt;
&amp;lt;?php if (is_author()) { ?&gt;
     &amp;lt;h1&gt;Posts Written By &amp;lt;?php the_author(); ?&gt;&lt;/h1&gt;
&amp;lt;?php } elseif (is_category()) { ?&gt;
     &amp;lt;h1&gt;You are viewing the &amp;lt;?php single_cat_title(); ?&gt; category&lt;/h1&gt;
&amp;lt;?php } else (is_archive()) { ?&gt;
      &amp;lt;h1&gt;You are viewing the Archives&lt;/h1&gt;
&amp;lt;?php } ?&gt;

      &amp;lt;?php if(have_posts()): while(have_posts()) : the_post(); ?&gt;
      &amp;lt;h2&gt;&lt;?php the_title(); ?&gt;&lt;/h2&gt;
      &amp;lt;p class="meta"&gt;&lt;?php the_date(); ?&gt; by &lt;?php the_author(); ?&gt;&lt;/p&gt;
      &amp;lt;?php the_excerpt(); ?&gt;

      &amp;lt;?php endwhile; endif; ?&gt;
&amp;lt;/div&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You can insert as many &lt;strong&gt;elseif&lt;/strong&gt; statements as you need.  For this example I would insert one for is_tag() and another for is_date().  Now you have five different headings and they clearly tell the user what they are looking at, and you only had to create one page! &lt;/p&gt; 

&lt;h3&gt;You got homework&lt;/h3&gt;
&lt;p&gt;Sure now you don't have to write as much code but don't stop there. You can use this technique to dynamically show content depending on the type of page the user is looking at whether its a post, an about page, or the home page.  Make custom layouts for pages or certain categories.  Combine this technique with some basic php and make it even more powerful.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Note: These code examples wouldn't actually work as the_author() has to be inside the loop.  It can work, but thats another whole tutorial.&lt;/em&gt;Now go outside.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZAUfFQWzz68:Z72WHp7gHdM:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZAUfFQWzz68:Z72WHp7gHdM:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=ZAUfFQWzz68:Z72WHp7gHdM:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=ZAUfFQWzz68:Z72WHp7gHdM:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=ZAUfFQWzz68:Z72WHp7gHdM:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/ZAUfFQWzz68" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/wordpress-conditional-tags-write-less-code</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Creating A Retro Sticker</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/AtJuicfLmaY/creating-a-retro-sticker" />
 	  	<updated>2008-03-11T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/creating-a-retro-sticker</id>
 	  	<content type="html">&lt;p&gt;Looking around the site you may notice graphics that look like stickers or old worn paper and cloth.  These are getting more and more popular as grunge starts taking over the shiny web2.0 look, and they are really easy to make.  Now turn on some good music and lets get started.&lt;/p&gt;

&lt;h3&gt;Setting up the text in Illustrator&lt;/h3&gt;
&lt;p&gt;The first step is to design your sticker in Illustrator.  I'm going to setup the text first, convert the text to outlines then  group( ctrl/apple + G )  your text together.&lt;/p&gt;

&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr1.jpg" alt="stkr1.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;Now copy(ctrl/command + C) and paste in front(ctrl/command + F).  Select the text in the back, I usually lock the top group when I'm editing the bottom group.  Give the text a thick stroke(I used a dark grey and a 13pt stroke).  Don't worry if you get some funky results, that can all be fixed.  Grab the point editor(white arrow) and  edit the background text so there aren't any crazy points sticking out.  I clean up the border a bit more right now so everything looks nice and neat, this is the result.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr2.jpg" alt="stkr2.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;Now all stickers are required to have flair, so lets add a bit.  I'm using some ultra &lt;a href="http://benblogged.com/?p=21"&gt;slick vectors&lt;/a&gt; from &lt;a href="http://benblogged.com/"&gt;BenBlogged&lt;/a&gt; for that extra level of cool.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr3.jpg" alt="stkr3.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;Ok we need to give those an outline too, group and stroke it all just like we did the text.  You should now have everything with a good thick stroke on it, now would be a good time to change anything you aren't happy with because next we go into Photoshop.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr4.jpg" alt="stkr4.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;Now that we got our basic sticker we need to export it as a Photoshop document.  But first make sure you have everything on different layers, use your own judgement here.  I put the colored text on one layer, the stroked background text on another, and the lines and circles on another layer so I could edit them all separately. &lt;em&gt;Note: You could do the same thing with one layer and multiple groups.&lt;/em&gt;&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr5.jpg" alt="stkr5.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;The above is what my layers palette looks like right before export.  Once in Photoshop the first thing I do is copy all my layers so I have a backup of the original layers.  It is a good idea to create layer backups during this whole process as you will most likely want to experiment with different settings...a lot.&lt;/p&gt;

&lt;p&gt;For this sticker I'm going to add some layer styles to the text.  The color is sorta boring so I add a gradient overlay to make it more interesting.  And since we are going to add some grunge later on, I add a black stroke to the text(just a real thin stroke, 2px here).  This black stroke is important as it will keep the text readable even with the heaviest of weathering.  So far it isn't looking too bad.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr6.jpg" alt="stkr6.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;To add a little realism you should play around with adding a gradient to the background text and anything else in your design.  This will add a lighting effect, but it doesn't always look right, so use your own judgment.  I went ahead and added a light gradient to everything else as well.&lt;/p&gt;

&lt;p&gt;It just isn't a sticker unless someone has tried to peel it off, so lets bend a corner.  Grab your pen tool and out line a corner. Be sure that the pen tool is set to shape layers.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr7.jpg" alt="stkr7.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;Alt/Option click on the shapes mask to select then invert the selection, now go to the layer(or layers) that are going to folded and hit the quick mask button.  Go back to your shape layer and now we are going to fold it over.  Command/Ctrl + T to transform the shape layer, now grab a corner and drag it over to flip it.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr8.jpg" alt="stkr8.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;Now change the color to light gray or white. Select the shape again and create a new layer, brush in a shadow along the edge.  Now merge the shape and shadow layer and open up your styles, and give it a little drop shadow.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr9.jpg" alt="stkr9.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;So now you have something that looks OK but it needs some texture.&lt;/p&gt;

&lt;p&gt;Now I'm going to let you in on a little secret.  Ever wonder how all those cool old looking shirts are made? Or how the pros get that cool worn look to their art?  Well one of the ways, and by far the easiest and quickest, is to use &lt;a href="http://www.misterretro.com/image_filters.html"&gt;Mister Retro's Machine Wash Photoshop filters&lt;/a&gt;.  These image filters make it almost too easy to make things look worn.  If you don't have mister retro you'll want to break out the eraser and brush.  There are as many grunge brushes on the net as exploited young girls so look around.  You can also get some textures and overlay them the sticker, this works sometimes, but other times looks fake and ugly so be careful.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr10.jpg" alt="stkr10.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;After a little mister retro magic(or your own magic) you should have a nice grungy sticker, but were not done.  Lets age it some more!  Make a curves adjustment layer and tweak the curves a bit, mine looks like this. &lt;em&gt;Note: You may need to switch your image mode to RGB for this.&lt;/em&gt;&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr11.jpg" alt="stkr11.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;I also add a brightness/contrast adjustment layer to give a faded look along the top.  Now is the time to play around with adjustment layers and figure out what is going to look the best.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr12.jpg" alt="stkr12.jpg" /&gt;&lt;/div&gt;
&lt;p&gt;A little polishing never hurt anyone, our sticker looks pretty nice as it is but you can always take things a bit further.  Flatten all your layers so you have just one layer of the almost final image.  Copy the layer and give it a color overlay layer style, make it all white.  Put that layer under the color copy and bump the white layer over and down a bit.  This will give it an offset look, like it was printed on a retro printer by some supermart employee who could care less(which after all is the "in" look...right?).  Giving the top color layer a little inner shadow can also help to polish the look a bit more.&lt;/p&gt;
&lt;div class="photo"&gt; &lt;img src="http://curtishenson.com/wp-content/uploads/2008/03/stkr32.png" alt="stkr32.png" /&gt;&lt;/div&gt;
&lt;p&gt;You should end up with something similar to above.  If you use this tutorial I'd love to see what you come up with!&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=AtJuicfLmaY:-7Jtoo3n1mU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=AtJuicfLmaY:-7Jtoo3n1mU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=AtJuicfLmaY:-7Jtoo3n1mU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=AtJuicfLmaY:-7Jtoo3n1mU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=AtJuicfLmaY:-7Jtoo3n1mU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/AtJuicfLmaY" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/creating-a-retro-sticker</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Simple Related Posts Widget for Wordpress</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/HHLeHRg36Vc/simple-related-posts-widget-for-wordpress" />
 	  	<updated>2008-02-25T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/simple-related-posts-widget-for-wordpress</id>
 	  	<content type="html">&lt;p&gt;When I started building wordpress themes PHP and most of the advanced wordpress functions went over my head. I've learned quite a bit since then, but one step taught me a lot about wordpress and PHP. While I was coding my premium wordpress theme I decided to make a &lt;em&gt;very&lt;/em&gt; simple related posts widget. There are plenty of plugins that do this but I wanted to learn about writing widgets and further my PHP and I had a pretty good idea on how to do it, so I did it.&lt;/p&gt;
&lt;h3&gt;Functions.php&lt;/h3&gt;
&lt;p&gt;I suspect most people creating themes never even create a functions file, much less know what it does. Used correctly it can be a very powerful tool. This is how advanced theme authors&lt;!--more--&gt; create theme options, custom wordpress theme tags, widgets and more. I won't go into too much detail on the functions.php file for now as that can be a tutorial in itself. There are a few resources for learning what can be done with the file, and I'll be writing much more about it on this blog in the future.&lt;/p&gt;
&lt;h3&gt;Making a widget&lt;/h3&gt;
&lt;p&gt;First you need to create a &lt;strong&gt;&lt;em&gt;functions.php&lt;/em&gt;&lt;/strong&gt; file in your theme directory.  The file must start with &lt;strong&gt;&amp;lt;?php&lt;/strong&gt; and end with &lt;strong&gt;?&amp;gt;&lt;/strong&gt; with no empty lines before or after.  Now we are going to create a new function which will become our related posts widget.&lt;/p&gt;
&lt;pre class="php"&gt;&lt;code&gt;&amp;lt;?php
//Super Simple Related Posts Widget
//Gets posts from the first category of the current post
function widget_ch_related_posts() {
}
if ( function_exists('register_sidebar_widget') )
register_sidebar_widget(__('CH Related Posts'), 'widget_ch_related_posts');
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is the beginning of our widget. I like to put comments at the top to identify what the widget is and does but this isn't necessary. First we declare a function called &lt;em&gt;widget_ch_related_posts()&lt;/em&gt;; try to create a unique name, you don't want it clashing with any other widgets or function names.&lt;/p&gt;

&lt;p&gt;The &lt;em&gt;if&lt;/em&gt; statement simply registers the sidebar widget with wordpress and gives it a more pleasant name.  The '&lt;em&gt;CH Related Posts&lt;/em&gt;' is what you will see in the widgets section of wordpress, so give it a name you will recognize.&lt;/p&gt;

&lt;p&gt;To learn more about exactly what that code is doin, here is the &lt;a href="http://automattic.com/code/widgets/plugins/"&gt;documentation&lt;/a&gt; from Automattic.  Essentially we are widgetizing a plugin, we just haven't created the plugin, yet.&lt;/p&gt;
&lt;h3&gt;Next up, a plugin!&lt;/h3&gt;
&lt;p&gt;Now we have a widget, but it doesn't do anything. We need to stuff some cornbread in our widget (I like cornbread). In most of my themes I alter the sidebars to use &lt;em&gt;divs&lt;/em&gt; for the containers and &lt;em&gt;h3 &lt;/em&gt;for the headers, but by default widgets use list items for containers and h2 for the headings. I tell you this because you need to know what scheme your theme is using for your code to work right. You can learn more about this at &lt;a href="http://automattic.com/code/widgets/themes/"&gt;another Automattic page&lt;/a&gt;.  I'll use the default way for this example, below is the example of our plugin.&lt;/p&gt;
&lt;pre class="php"&gt;&lt;code&gt; 	
&amp;lt;li class="ch_related_posts"&amp;gt;
&amp;lt;h2&amp;gt;Related Posts&amp;lt;/h2&amp;gt;
&amp;lt;?php
//get post categories and set $cat to first category
$cat = get_the_category(); $cat = $cat[0];
//set arguments for the get_posts function more options found at wordpress codex
$args = array(
'numberposts' =&amp;gt; '5',
'offset' =&amp;gt; '1',
'category' =&amp;gt; $cat-&amp;gt;cat_ID //calls category ID number
);  ?&amp;gt;
&amp;lt;ul&amp;gt;
&amp;lt;?php
global $post;
$myposts = get_posts($args); //gets arguments from array above
foreach($myposts as $post) : //loops through posts
setup_postdata($post); //sets up posts
?&amp;gt;
&amp;lt;li&amp;gt;&amp;lt;a href="&amp;lt;?php the_permalink(); ?&amp;gt;"&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
&amp;lt;?php endforeach; ?&amp;gt;
&amp;lt;/ul&amp;gt;
&amp;lt;/li&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;I'll break this down MC Hammer style for you. The list item is contained in our themes sidebar(which should be a unordered list, hence no &amp;lt;ul&amp;gt; tag). You can dump the &lt;em&gt;class="ch_related_posts"&lt;/em&gt; if you don't need to style it individually.  The h2 header is the title of your widget, so far pretty basic html.&lt;/p&gt;

&lt;p&gt;The php is where we get to start having fun.  First thing I do is create a variable called &lt;em&gt;$cat&lt;/em&gt;, I then use &lt;a href="http://codex.wordpress.org/Template_Tags/get_the_category"&gt;get_the_category&lt;/a&gt; to get all the categories the current post belongs to.  Now &lt;em&gt;$cat&lt;/em&gt; is holding an array, I set &lt;em&gt;$cat&lt;/em&gt; to the first category using &lt;em&gt;$cat = $cat[0]&lt;/em&gt; (arrays in php start with zero not 1). But hold one a sec! This is a good place to experiment with the plugin, I made it very simple but you could get posts from all the categories, certain categories, get tags instead of categories. You have plenty of options, and I encourage everyone to play around and see what happens.&lt;/p&gt;

&lt;p&gt;For the next trick I'll create &lt;em&gt;$args&lt;/em&gt;  tada, args stands for arguments.  Arguments for what? For &lt;a href="http://codex.wordpress.org/Template_Tags/get_posts"&gt;get_posts&lt;/a&gt; but more on that later. I create an array and input the arguments that I want to pass along to get_posts further down in the code. This is just an easy clean way that I like to pass the arguments, it makes for easy changes and readable code.&lt;/p&gt;
&lt;pre class="php"&gt;
&lt;code&gt;&amp;lt;?php 'category' =&amp;gt; $cat-&amp;gt;cat_ID //calls category ID number&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;This little line of code sets the category argument to the ID of the current posts first category...I think that makes sense. See &lt;em&gt;$cat&lt;/em&gt; is holding a lot of information  about the category and all we want is the ID.&lt;/p&gt;
&lt;h3&gt;Output something already!&lt;/h3&gt;
&lt;p&gt;OK!  Now we need to list all the posts, pretty normal wordpress stuff now.&lt;/p&gt;
&lt;pre class="php"&gt;
&lt;code&gt;&amp;lt;ul&amp;gt;
 &amp;lt;?php
   global $post;
   $myposts = get_posts($args); //gets arguments from array above
   foreach($myposts as $post) : //loops through posts
   setup_postdata($post); //sets up posts
  ?&amp;gt;
     	&amp;lt;li&amp;gt;&amp;lt;a href="&amp;lt;?php the_permalink(); ?&amp;gt;"&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
  	&amp;lt;?php endforeach; ?&amp;gt;
&amp;lt;/ul&amp;gt;&lt;/code&gt;
&lt;/pre&gt;
&lt;p&gt;I set up the posts using &lt;em&gt;global $post &lt;/em&gt;then set &lt;em&gt;$myposts&lt;/em&gt; using &lt;a href="http://codex.wordpress.org/Template_Tags/get_posts"&gt;get_posts&lt;/a&gt; and the arguments we just specified. We loop through the posts and output them into nice little happy list items. We end the loop and close the list out and we are done! Sorta.&lt;/p&gt;
&lt;h3&gt;That was easy.&lt;/h3&gt;
&lt;p&gt;Ok so now you got your widget, you got your plugin, now you need to put them together. This is really easy, copy your plugin code and paste it right smack in the middle of the widget code like so:&lt;/p&gt;
&lt;pre class="php"&gt;&lt;code&gt;&amp;lt;?php
//Super Simple Related Posts Widget
//Gets posts from the first category of the current post
function widget_ch_related_posts() {
	&amp;lt;li class="ch_related_posts"&amp;gt;
		&amp;lt;h2&amp;gt;Related Posts&amp;lt;/h2&amp;gt;
		&amp;lt;?php
		//get post categories and set $cat to first category
		$cat = get_the_category(); $cat = $cat[0];
		//set arguments for the get_posts function more options found at wordpress codex
		$args = array(
				'numberposts' =&amp;gt; '5',
				'offset' =&amp;gt; '1',
				'category' =&amp;gt; $cat-&amp;gt;cat_ID //calls category ID number
				);  ?&amp;gt;
		&amp;lt;ul&amp;gt;
	 	&amp;lt;?php
	 		global $post;
	 		$myposts = get_posts($args); //gets arguments from array above
	 		foreach($myposts as $post) : //loops through posts
	 		setup_postdata($post); //sets up posts
	 	?&amp;gt;
	    		&amp;lt;li&amp;gt;&amp;lt;a href="&amp;lt;?php the_permalink(); ?&amp;gt;"&amp;gt;&amp;lt;?php the_title(); ?&amp;gt;&amp;lt;/a&amp;gt;&amp;lt;/li&amp;gt;
	 		&amp;lt;?php endforeach; ?&amp;gt;
	 	&amp;lt;/ul&amp;gt;
	&amp;lt;/li&amp;gt;
}
if ( function_exists('register_sidebar_widget') )
	register_sidebar_widget(__('CH Related Posts'), 'widget_ch_related_posts');
?&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And there it is, save your functions.php and check to see if everything works. If it doesn't it is probably my fault, but you should try to fix it, cause that will help you learn, at least that is my excuse. This is just a itty bitty taste of what you can do with functions.php file.&lt;/p&gt;
&lt;p&gt;To read more about how to create &lt;a href="http://automattic.com/code/widgets/themes/"&gt;widgets&lt;/a&gt; and &lt;a href="http://automattic.com/code/widgets/plugins/"&gt;plugins&lt;/a&gt; visit Automattic's page for the complete &lt;a href="http://automattic.com/code/widgets/api/"&gt;API&lt;/a&gt;.&lt;/p&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=HHLeHRg36Vc:FCaFQhsBX18:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=HHLeHRg36Vc:FCaFQhsBX18:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=HHLeHRg36Vc:FCaFQhsBX18:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=HHLeHRg36Vc:FCaFQhsBX18:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=HHLeHRg36Vc:FCaFQhsBX18:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/HHLeHRg36Vc" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/simple-related-posts-widget-for-wordpress</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Looking Outside The Box For Inspiration</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/IBvVp2sLyaQ/looking-outside-the-box-for-inspiration" />
 	  	<updated>2008-02-19T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/looking-outside-the-box-for-inspiration</id>
 	  	<content type="html">&lt;p&gt;Getting inspiration for design can sometimes be challenging.  It is easy to go to your favorite CSS gallery or design site and get some ideas, but more often than not this leads to boring designs.  Sometimes getting a fresh creative idea takes some digging in some unusual dirt.&lt;/p&gt;
&lt;h3&gt;Art&lt;/h3&gt;
&lt;p&gt;This one is obvious for illustrators, but web designers usually skip it.  Art can inspire many things: colors, textures, rhythm, layout, or just get you in a creative mood.  Art gets me in a drawing mood, which leads to lots of doodles and fresher designs...plus its fun.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.conceptart.org/"&gt;Concept Art Forum&lt;/a&gt; - The king daddy of concept art sites, conceptart.org has a huge amount of art on tap, and it is always fresh.  Don't skip the forum as it is the meat and potatoes of the site.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.pointlessmuseum.com/museum/usbornebookofthefutureindex.php"&gt;Old Books&lt;/a&gt; - I'm not sure this falls under art but might need a section all of it's own.  The link leads to a copy of &lt;strong&gt;The Usborne Book of the Future&lt;/strong&gt; which should not only be entertaining but give you some good ideas...this particular book also contains several examples of what not to do so be careful what it inspires you to do.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.colourlovers.com/"&gt;Colour Lovers&lt;/a&gt; - Colour Lovers can be a great source of inspiration, and that is what they are there for.  So thats that...go get some colors.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.boonika.com/"&gt;Boonika&lt;/a&gt; - I'm not really sure how to describe boonika.  It is a blog, with art and stuff that is art like.  I suggest you check it out for yourself.&lt;/li&gt;
	&lt;li&gt;Artists  - There are more artists than I could ever mention with sites full of inspiring works, so I'll list a couple random ones.  &lt;a href="http://www.mydeadpony.com/"&gt;MyDeadPony&lt;/a&gt;, &lt;a href="http://www.flickr.com/photos/kosmograd/sets/72157603512259334/"&gt;Hugh Ferriss&lt;/a&gt;, &lt;a href="http://www.nietylko.net/"&gt;Valp'Nietylko&lt;/a&gt;, &lt;a href="http://www.jamespaick.com"&gt;James Paick&lt;/a&gt;, &lt;a href="http://blog.signalnoise.com/"&gt;Signal Noise&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Photography&lt;/h3&gt;
&lt;p&gt;Photography is great to look at, but its also great to get out and actually take pictures to inspire yourself.  I'm always amazed at how things look through the viewfinder.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.strobist.blogspot.com/"&gt;Strobist&lt;/a&gt; -  While not really a site for inspiration so much as improving your technical skills, it is more than worth a mention here.  If you want to improve your photography for any reason, this is one of the best resources you could ever ask for.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.flickr.com/"&gt;Flickr&lt;/a&gt; - Duh.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.chasejarvis.com/blog/"&gt;Chase Jarvis&lt;/a&gt; - Great photographer and you will probably recognize his work.  Not only are his photos great for inspiration but his videos rock.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.diyphotography.net/"&gt;DIY Photography&lt;/a&gt; - Again a more technical site(see a theme, go outside!).&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Interior Designs&lt;/h3&gt;
&lt;p&gt;This isn't HGTV this is computers, this is digital, and I'm not to keen on parades!  Nay I say(cause it rhymes)  interior design can definitley be used as inpiration.  The colors, shapes, patterns, practically everything from interior design can be moved over to the digital world...even &lt;a href="http://www.fairtradefurniture.co.uk/"&gt;furniture&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://www.flickr.com/photos/tags/interiordesign/interesting/"&gt;Flickr&lt;/a&gt; - Again? Yes Flickr again, this time a pool of only interior designs.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.harmonie-interieure.com"&gt;Harmonie Interieure&lt;/a&gt; - Some pretty slick vinyl wall decorations, and the site design is right up my alley.  I also think they did a pretty good job of integrating both French and English into the site, not an easy thing to do.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://industrialdecay.blogspot.com/"&gt;Industrial Decay&lt;/a&gt; - Totally edgy and grunge type interior designs, these take years sometimes decades to create!  Ok, so I don't really know that many good interior design sites, but nonetheless it is an awesome blog.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Illustrations&lt;/h3&gt;
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://drawn.ca/"&gt;Drawn!&lt;/a&gt; - The blog about illustration.  More inspiration than you can shake a stick at!&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.iwantyourskull.com/"&gt;I Want Your Skull&lt;/a&gt; - Not for everyone, actually it is pretty specific...If you want to see cool skull stuff, check this site out.  If you don't want to see cool skull stuff, don't go to this site(why wouldn't you?).&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://layertennis.com/"&gt;Layer Tennis&lt;/a&gt; - You can check out the archives right now, some great stuff in a very short amount of time.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://www.gomediazine.com/"&gt;Go Mediazine&lt;/a&gt; - The blog from the folks that bring you the coolest vectors.  Tutorials tips and all sorts of stuff to give you wicked ideas.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://animationbackgrounds.blogspot.com/"&gt;Animation Backgrounds&lt;/a&gt; - Remember all those corny Disney movies? Well if you can look past the lame plots the backgrounds are really beautiful.&lt;/li&gt;
	&lt;li&gt;&lt;a href="http://idigcerealkillers.blogspot.com/"&gt;Cereal Killers&lt;/a&gt; - What's cooler than cereal? Cereal that can kill you!  But ceriously this blog has some wicked cereal box art.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;The I'm Too Lazy To Look Through All That Stuff&lt;/h3&gt;
I realize some people think that list looks more like work, so for you I have one link.
&lt;ul&gt;
	&lt;li&gt;&lt;a href="http://ffffound.com/"&gt;FFFFound!&lt;/a&gt; - Thats four f's.  FFFFound is a horde of cool stuff people bookmark.  A quick glance at the front page will probably give you ideas for a week.&lt;/li&gt;
&lt;/ul&gt;
So ditch your CSS gallery and check out some other inspiration sources, you never know what you might come up with.
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=IBvVp2sLyaQ:VEJ7BApaTpk:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=IBvVp2sLyaQ:VEJ7BApaTpk:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=IBvVp2sLyaQ:VEJ7BApaTpk:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=IBvVp2sLyaQ:VEJ7BApaTpk:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=IBvVp2sLyaQ:VEJ7BApaTpk:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/IBvVp2sLyaQ" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/looking-outside-the-box-for-inspiration</feedburner:origLink></entry>
 
 	<entry>
 	  	<title>Sunrise Wallpaper</title>
 	  	<link href="http://feedproxy.google.com/~r/curtishenson/~3/0VKrmTTQYzM/sunrise-wallpaper" />
 	  	<updated>2008-02-15T00:00:00+00:00</updated>
 	  	<id>http://curtishenson.com/articles/sunrise-wallpaper</id>
 	  	<content type="html">&lt;p&gt;Heres a wallpaper for you from me!  I call it Sunrise and its a cut down version of a &lt;a href="http://www.flickr.com/photos/svenson/1556688541/"&gt;poster&lt;/a&gt; I did.  There are three versions of the wallpaper which are pretty much different levels of color.  I call them "Early Morning", "Sunrise",  and "Mid Morning"; you can call them "dark", "original", and "colorful" if you wish.&lt;/p&gt;

&lt;p&gt;The wallpapers are 1280x1024 only right now, but if you want a different size leave a comment and I'll post up the size you need.&lt;/p&gt;
&lt;p class="clearfix"&gt; &lt;a href="http://curtishenson.com/wp-content/uploads/2008/02/sunrise_earlymorning.jpg" title="Early Morning Wallpaper"&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2008/02/sunrise_earlymorning.thumbnail.jpg" alt="Early Morning Wallpaper" /&gt;&lt;/a&gt; &lt;a href="http://curtishenson.com/wp-content/uploads/2008/02/sunrise_midmorning.jpg" title="Mid Morning"&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2008/02/sunrise_midmorning.thumbnail.jpg" alt="Mid Morning" /&gt;&lt;/a&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/2008/02/sunrise_wallpaper.jpg" title="sunrise wallpaper"&gt;&lt;img src="http://curtishenson.com/wp-content/uploads/2008/02/sunrise_wallpaper.thumbnail.jpg" alt="sunrise wallpaper" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;ul class="download"&gt;&lt;li&gt;&lt;a href="http://curtishenson.com/wp-content/uploads/sunrise.rar"&gt;Download All&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;div class="feedflare"&gt;
&lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=0VKrmTTQYzM:myq27EmweGU:yIl2AUoC8zA"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?d=yIl2AUoC8zA" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=0VKrmTTQYzM:myq27EmweGU:F7zBnMyn0Lo"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=0VKrmTTQYzM:myq27EmweGU:F7zBnMyn0Lo" border="0"&gt;&lt;/img&gt;&lt;/a&gt; &lt;a href="http://feeds.feedburner.com/~ff/curtishenson?a=0VKrmTTQYzM:myq27EmweGU:gIN9vFwOqvQ"&gt;&lt;img src="http://feeds.feedburner.com/~ff/curtishenson?i=0VKrmTTQYzM:myq27EmweGU:gIN9vFwOqvQ" border="0"&gt;&lt;/img&gt;&lt;/a&gt;
&lt;/div&gt;&lt;img src="http://feeds.feedburner.com/~r/curtishenson/~4/0VKrmTTQYzM" height="1" width="1"/&gt;</content>
 	<feedburner:origLink>http://recursive-design.com/articles/sunrise-wallpaper</feedburner:origLink></entry>
 
 
</feed>

