<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>apmeyer</title>
	
	<link>http://apmeyer.com</link>
	<description>Designer. Coder. Musician. Gamer. Father. Husband.</description>
	<lastBuildDate>Fri, 12 Nov 2010 19:39:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1</generator>
		<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/apmeyer" /><feedburner:info uri="apmeyer" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>Page menus in WordPress: Displaying child pages for a specific parent only</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/IMAVPW1nHqo/</link>
		<comments>http://apmeyer.com/2010/09/page-menus-in-wordpress-displaying-child-pages-for-a-specific-parent-only/#comments</comments>
		<pubDate>Sat, 25 Sep 2010 03:34:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[hacks]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/09/page-menus-in-wordpress-displaying-child-pages-for-a-specific-parent-only/</guid>
		<description><![CDATA[While I love WordPress, I continuously find myself frustrated by little things it can&#8217;t do &#8220;out of the box.&#8221; Fortunately it&#8217;s easy to hack. My latest frustration is the lack of options for generating/displaying menus based on parent/child relationships. The wp_list_pages function is helpful but limited. It&#8217;s somewhat of an all or nothing function &#8212; [...]]]></description>
			<content:encoded><![CDATA[<p>While I love WordPress, I continuously find myself frustrated by little things it can&#8217;t do &#8220;out of the box.&#8221; Fortunately it&#8217;s easy to hack. My latest frustration is the lack of options for generating/displaying menus based on parent/child relationships. The wp_list_pages function is helpful but limited. It&#8217;s somewhat of an all or nothing function &#8212; meaning you have to either expand all child menus or have them all hidden. You cannot display child menus individually based on a specific parent. Even the wp_nav_menu features of 3.0 don&#8217;t solve the problem &#8212; though they help in other aspects of navigation management.<span id="more-14"></span></p>
<p>For example, say your pages follow this structure:</p>
<ul>
<li>About
<ul>
<li>Job Opportunities
<ul>
<li>Benefits</li>
</ul>
</li>
<li>Hours of Operation</li>
<li>Our History</li>
<li>Our Team
<ul>
<li>Jimmy</li>
<li>Johnny</li>
<li>Jonesy</li>
<li>Janet</li>
</ul>
</li>
</ul>
</li>
<li>Contact
<ul>
<li>Maps &amp; Directions</li>
</ul>
</li>
<li>Services
<ul>
<li>Widget Crafting
<ul>
<li>Happy Fun Widgets</li>
<li>Super Duper Widgets</li>
</ul>
</li>
<li>Widget Repair
<ul>
<li>Warranty Information</li>
</ul>
</li>
</ul>
</li>
<li>News</li>
</ul>
<p>Now, let&#8217;s say you wanted to display a sidebar menu in the &#8220;About&#8221; section of your site. Fully collapsed it would look like this:</p>
<ul>
<li>Job Opportunities</li>
<li>Hours of Operation</li>
<li>Our History</li>
<li>Our Team</li>
</ul>
<p>If someone were to click &#8220;Our Team,&#8221; you may want that page to display its children. Like this:</p>
<ul>
<li>Job Opportunities</li>
<li>Hours of Operation</li>
<li>Our History</li>
<li>Our Team
<ul>
<li>Jimmy</li>
<li>Johnny</li>
<li>Jonesy</li>
<li>Janet</li>
</ul>
</li>
</ul>
<p>Unfortunately, that&#8217;s not an option. wp_list_pages forces you to expand all child menus. So you&#8217;d also end up seeing &#8220;Benefits&#8221; listed under &#8220;Job Opportunities&#8221;.</p>
<p>Below is a chunk of code that solves this problem. Use this PHP in your sidebar (or where ever) to display page menus that expand based on the active parent (the page being viewed). The child menu(s) of siblings will not be displayed. This code works recursively. If your child pages have their own children, they too will become visible as you click deeper and deeper.</p>
<p>This is version 1.0. I&#8217;ll be refining it and may make it available as a plugin. If you have suggestions for improvements or requests for additional functionality, let me know.</p>
<p><a href="#changelog">Change Log</a></p>
<pre name="code" class="php">
&lt;?php // "Specific Child Menus" v1.01

/*	Author: Adam Meyer | www.apmeyer.com | @apmeyer on twitter

	Feel free to use this code in your wordpress templates.
	The purpose of this code is to generate a navigational menu
	that expands to only display child pages for the page being viewed
*/

// We're assigning this page's post ID to a new variable
// this just makes it a little more obvious later when we
// need to use this value
$thisPageID = $post->ID;

// The function below will be used to recursively build
// child menus for parent pages

// BEGIN FUNCTION getChildMenu()
function getChildMenu($parent) {

	// in the loop below we'll be relying on data outside the function
	// so we need to pull those global variables in
	global $wpdb;
	global $thisPageID;
	global $ancestors;

	// we'll be building a string throughout this function
	// the 'return' variable will contain that string
	$return = '';

	// query the posts table in the wordpress database
	// for published pages with the specified parent
	$querystr = "
	SELECT * FROM $wpdb->posts
	WHERE post_status = 'publish'
	AND post_type = 'page'
	AND post_parent = $parent
	ORDER BY menu_order";

	// get query results
		$pageposts = $wpdb->get_results($querystr, OBJECT);

	// if there are results let's make a menu!
	if ($pageposts) {

		$return = '&lt;ul>';

		//loop through the query results to build our nested child menus
		foreach ($pageposts as $post):

			// wordpress function to prepare the posts...
			// basically it enables us to use certain tags/functions
			setup_postdata($post);
			$return .= '&lt;li>&lt;a href="';
			$return .= get_permalink($post->ID);
			$return .= '">';
			$return .= get_the_title($post->ID);
			$return .= '&lt;/a>';

			// use the wp_list_pages function to determine whether or not this page has children
			$children = wp_list_pages("title_li=&#038;child_of=".$post->ID."&#038;echo=0");

			// if this list item represents the page being viewed
			// and the page has children, display them
			// OR
			// if this list item has a parent and this list item's
			// ID is a part of the current page's ancestor array, display the child menu
			if(($children &#038;&#038; $post->ID == $thisPageID) || ($post->post_parent &#038;&#038; in_array($post->ID, $ancestors)) ){
				$return .= getChildMenu($post->ID);
			}

			$return .= '&lt;/li>';

		endforeach;

		// and, we're done generating the string that contains our child menus
		$return .= '&lt;/ul>';

		//
		return $return;
	}
} // END FUNCTION getChildMenu()

// START Displaying Menu
// we'll be using the getChildMenu() function within this section of code
// to recursively generate child menus (if there are any) for these pages 

// YES this page has at least one parent
if ($post->post_parent){

	// Create an array containing ancestors of the current page
	$ancestors = get_post_ancestors($post->ID);
	// How many ancestors are there?
	$root = count($ancestors)-1;
	// specify the root parent (the eldest grandparent)
	$rootParent = $ancestors[$root];

	// query the posts table in the wordpress database
	// for published pages with the specified parent
	$querystr = "
	SELECT * FROM $wpdb->posts
	WHERE post_status = 'publish'
	AND post_type = 'page'
	AND post_parent = $rootParent
	ORDER BY menu_order";

	// get query results
		$pageposts = $wpdb->get_results($querystr, OBJECT);

	// if there are results, let's make a menu!
	if ($pageposts) {

		// alter the CSS here if you need to use a different class, or if you need to assign an ID
		echo '&lt;ul class="sidebar_nav">';

		// loop through the posts and display each child page as a list item
		foreach ($pageposts as $post):
			setup_postdata($post);

			//list top level parents
			echo '&lt;li>&lt;a href="';
			echo the_permalink();
			echo '"';

			// keep level 2 parent "selected" by adding CSS class
			if ($post->ID == $thisPageID || in_array($post->ID, $ancestors)){
			 	echo ' class="activeMenuItem"';
			}

			echo '>';
			echo get_the_title($post->ID);
			echo '&lt;/a>';

			// use the wp_list_pages function to determine whether or not this page has children
			$children = wp_list_pages("title_li=&#038;child_of=".$post->ID."&#038;echo=0");

			// if this list item represents the page being viewed
			// and the page has children, display them
			// OR
			// if this list item has a parent and this list item's ID is a
			// part of the current page's ancestor array, display the child menu
			if( ($children &#038;&#038; $post->ID == $thisPageID) || ($post->post_parent &#038;&#038; in_array($post->ID, $ancestors)) ){
				//display children as list
				echo getChildMenu($post->ID);
			}

			echo '&lt;/li>';

		endforeach;
	}

// NO this page does not have a parent
} else {

	// if we are at the absolute root level then no child menus should be displayed
	// so, it's easiest to just use the wordpress wp_list_pages function to display the menu
	echo '&lt;ul class="sidebar_nav">';
	wp_list_pages('title_li=&#038;depth=1&#038;sort_column=menu_order&#038;child_of='.$thisPageID);
	echo '&lt;/ul>';

} // END Displaying Menu

?>
</pre>
<p><a name="changelog"></a></p>
<h3>Change Log</h3>
<p>v1.01 09-27-10</p>
<ul>
<li>Added css class &#8220;activeMenuItem&#8221; to active level 2 parent. This checks the current post ID as well as the array for the existence of the level 2 parent, then keeps it selected by adding a css class</li>
<li>Fixed ordering of menu items. Now the wp_list_pages function lists by menu order as do the custom queries </li>
</ul>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/IMAVPW1nHqo" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/09/page-menus-in-wordpress-displaying-child-pages-for-a-specific-parent-only/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/09/page-menus-in-wordpress-displaying-child-pages-for-a-specific-parent-only/</feedburner:origLink></item>
		<item>
		<title>Lookin’ Good</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/-kAcOzsxrCE/</link>
		<comments>http://apmeyer.com/2010/09/lookin-good/#comments</comments>
		<pubDate>Wed, 01 Sep 2010 03:38:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[clothing]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[fashion]]></category>
		<category><![CDATA[style]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/09/lookin-good/</guid>
		<description><![CDATA[Today&#8217;s theme: It aint easy being beautiful. Check out the latest episode of Put This On, a fantastic web series on how to dress properly. Then check out this beautifully-shot video featuring Chicago-based Oxxford Clothes (via @devour), the only remaining factory in the United States that makes their suits by hand. I want one. Or [...]]]></description>
			<content:encoded><![CDATA[<p>Today&#8217;s theme: It aint easy being beautiful.</p>
<p>Check out the latest episode of <a href="http://www.putthison.com">Put This On</a>, a fantastic web series on how to dress properly.</p>
<p><iframe src="http://player.vimeo.com/video/14389316" frameborder="0" height="225" width="400"></iframe></p>
<p>Then check out this beautifully-shot video featuring Chicago-based Oxxford Clothes (via <a href="http://twitter.com/devour">@devour</a>), the only remaining factory in the United States that makes their suits by hand. I want one. Or two. I don&#8217;t really need that 401k.</p>
<p><object height="300" width="500"><param name="movie" value="http://www.youtube.com/v/zlX9pcBOqT0?fs=1&amp;hl=en_US" /></param><param name="allowFullScreen" value="true" /></param><param name="allowscriptaccess" value="always" /></param><embed allowfullscreen="true" src="http://www.youtube.com/v/zlX9pcBOqT0?fs=1&amp;hl=en_US" allowscriptaccess="always" type="application/x-shockwave-flash" height="300" width="500"></embed></object></p>
<p>If you have not yet subscribed to <a href="http://devour.com/">Devour</a>, you should.</p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/-kAcOzsxrCE" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/09/lookin-good/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/09/lookin-good/</feedburner:origLink></item>
		<item>
		<title>An AppleTV Remote Control Concept</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/pugXhqyEO28/</link>
		<comments>http://apmeyer.com/2010/08/an-appletv-remote-control-concept/#comments</comments>
		<pubDate>Sun, 29 Aug 2010 14:40:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/08/an-appletv-remote-control-concept/</guid>
		<description><![CDATA[Dan Wineman at Venomous Porridge conceptualizes the new AppleTV remote &#8212; the love child of a Magic Trackpad and iPod Touch. I think he might be on to something. In principle the concept is similar to a Wii-mote, minus the buttons. I still think this controller cannot rely solely on a trackpad. And while accelerometer [...]]]></description>
			<content:encoded><![CDATA[<p>Dan Wineman at <a href="http://venomousporridge.com/post/1014900307/itv-speculation">Venomous Porridge</a> conceptualizes the new AppleTV remote &#8212; the love child of a Magic Trackpad and iPod Touch. I think he might be on to something. In principle the concept is similar to a <a href="http://en.wikipedia.org/wiki/Wii_Remote">Wii-mote</a>, minus the buttons. I <a href="http://apmeyer.posterous.com/tactile-feedback">still think</a> this controller cannot rely solely on a trackpad. And while accelerometer integration is fun, it&#8217;s still missing that essential tactile feedback. Add second &#8220;home&#8221; button to the left side of his concept and we might have a winner.</p>
<blockquote>
<p>First, what kind of apps would make sense for an iTV? It&rsquo;s not a touchscreen device, and you don&rsquo;t carry it around with you. You operate it from your couch. So the obvious category is&nbsp;<strong>games</strong>.</p>
<p>But you need some kind of controller to play a game, unless Apple is working on its own version of&nbsp;<a href="http://en.wikipedia.org/wiki/Kinect">Kinect</a>, which I doubt. An Apple Remote doesn&rsquo;t really cut it, and while an iPhone or iPod touch would make a great game console controller, <a href="http://www.therussiansusedapencil.com/post/1006628084/controlling-apple-tv">as has been pointed out</a>, it&rsquo;s unlikely that Apple would require one: no game publisher is going to invest in developing a game whose market is restricted to owners of&nbsp;<em>two</em>&nbsp;separately-purchased devices, and iTV sales would be hobbled from the start. At least one standard controller needs to be included in the box for the iTV to be a viable gaming platform, so that controller has to be relatively simple and inexpensive.</p>
</blockquote>
<p>Read More:&nbsp;<a href="http://venomousporridge.com/post/1014900307/itv-speculation">http://venomousporridge.com/post/1014900307/itv-speculation</a></p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/pugXhqyEO28" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/08/an-appletv-remote-control-concept/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/08/an-appletv-remote-control-concept/</feedburner:origLink></item>
		<item>
		<title>Tactile Feedback</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/Qu7tEEw-dGg/</link>
		<comments>http://apmeyer.com/2010/08/tactile-feedback/#comments</comments>
		<pubDate>Wed, 25 Aug 2010 17:07:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[apple]]></category>
		<category><![CDATA[appletv]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[home theater]]></category>
		<category><![CDATA[macmini]]></category>
		<category><![CDATA[usability]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/08/tactile-feedback/</guid>
		<description><![CDATA[Like Dan Provost, I am very excited to see what Apple has planned for its next AppleTV. Speculation is that it will run iOS and feature apps, much like the iPhone, iPad and iPod Touch. But, as a veteran user of the AppleTV and Mac Mini for my home theater, I am very skeptical of [...]]]></description>
			<content:encoded><![CDATA[<p>Like <a href="http://www.therussiansusedapencil.com/post/1006628084/controlling-apple-tv">Dan Provost</a>, I am very excited to see what Apple has planned for its next <a href="http://www.apple.com/appletv/">AppleTV</a>. Speculation is that it will run iOS and feature <a href="http://www.apple.com/iphone/apps-for-iphone/">apps</a>, much like the iPhone, iPad and iPod Touch. But, as a veteran user of the AppleTV and <a href="http://www.apple.com/macmini/">Mac Mini</a> for my home theater, I am very skeptical of where they&#8217;ll land on the device&#8217;s remote control; A critical feature of any home theater or gaming component.</p>
<p>I have tried (and struggled with) numerous ways to comfortably and effectively control Apple&#8217;s home theater-specific devices. On the AppleTV I use the Apple remote. On the Mac Mini I currently have a <a href="http://www.apple.com/magicmouse/">Magic Mouse</a> and <a href="http://www.apple.com/keyboard/">bluetooth keyboard</a> simply to interact with the machine for things like ripping, file organization (though I do much of that on my iMac via screen sharing) and application launching (<a href="http://www.plexapp.com/">Plex</a>, <a href="http://www.hulu.com/labs/hulu-desktop">Hulu Desktop</a> and Front Row). Once in these applications I fall back to the Apple remote.</p>
<p>I&#8217;ve tried using the iPhone to control the AppleTV and Mini, but the lack of tactile feedback creates a frustrating experience. <a href="http://itunes.apple.com/us/app/touchpad/id297623931">Touchpad</a> is probably the best way to use the iPhone as a remote control. The trackpad mode of the app is very usable, allowing one to interact with the screen without staring at the phone &#8212; a critical feature of any remote control. As a trackpad the iPhone actually <em>does</em> offer tactile feedback; The edges of the phone indicate boundaries.</p>
<p>In &#8220;remote control&#8221; mode, however, Touchpad is inferior to the Apple remote. Staring at the controller to know if you&#8217;re actually pressing the [virtual] buttons is not conducive to a pleasant television viewing/browsing/gaming experience. Tactile response is critical so the eye can remain on the television display.</p>
<p>Apple hates buttons, yet has a keen focus on usability. So, what <em>will</em> they have in store for a remote control? Buttons are essential for a tactile experience. Yet a trackpad can be practical in some situations. A combination of the two would be interesting. An iPhone or iPod touch by itself is a very expensive and ineffective controller, but as a supplement it could be amazing.&nbsp;It also adds a huge expense that would ensure a low acceptance of the AppleTV. A controller that&#8217;s solely a trackpad will be a failure. Especially for gaming apps. So, the <a href="http://www.apple.com/magictrackpad/">Magic Trackpad</a> seems an unlikely candidate.</p>
<p>A media event <a href="http://www.loopinsight.com/2010/08/25/apple-announces-special-event-for-september-1/">has been announced</a> for September 1, so we&#8217;ll soon know the game plan.</p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/Qu7tEEw-dGg" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/08/tactile-feedback/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/08/tactile-feedback/</feedburner:origLink></item>
		<item>
		<title>I need to read more Plato</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/tmaDD2BBUmc/</link>
		<comments>http://apmeyer.com/2010/07/i-need-to-read-more-plato/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 14:31:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[agency]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[Graphic design]]></category>
		<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/07/i-need-to-read-more-plato/</guid>
		<description><![CDATA[It&#8217;s been a busy few weeks. This morning I finally got around to reading some items I previously Instapaper&#8216;d. One of which was an article from designer/blogger Andy Rutledge titled Plato&#8217;s Cave. Of all the design professionals I follow, Andy is the most philosophically inspirational. He often writes of maintaining standards and holding professionalism in high [...]]]></description>
			<content:encoded><![CDATA[<p><span style="font-size: small;">It&#8217;s been a busy few weeks. This morning I finally got around to reading some items I previously <a href="http://www.instapaper.com">Instapaper</a>&#8216;d. One of which was an article from designer/blogger <a href="http://www.andyrutledge.com/platos-cave.php">Andy Rutledge</a> titled Plato&#8217;s Cave. Of all the design professionals I follow, Andy is the most philosophically inspirational. He often writes of maintaining standards and holding professionalism in high regard. These are virtues I admire and strive to apply to my career.</span></p>
<p><span style="font-size: small;">The article highlights why I enjoy working for a small company &#8212; or for myself. I&#8217;ve spent enough time in corporate settings to know that someone else&#8217;s lack of standards need not shape my perception of reality. Such an environment can be devastating professionally and personally.</span></p>
<p><span style="font-size: small;">That&#8217;s not to say all corporate environments are driven by ignorance or lack standards. Don&#8217;t get me wrong. Many are on the right path with leadership that sees beyond Plato&#8217;s shadows. At <a href="http://www.thinkinterval.com">Interval</a> those are the clients we seek. </span><span style="font-size: small;">I also don&#8217;t mean to imply that small companies, or even freelancers, are immune to these pitfalls.</span></p>
<p><span style="font-size: small;">Give <a href="http://www.andyrutledge.com/platos-cave.php">Plato&#8217;s Cave</a> a read and be sure to add Rutledge to your RSS reader.</span></p>
<p><span style="font-size: small;">Excerpt:</span></p>
<blockquote>
<p><span style="font-size: small;"><span style="font-family: Helvetica;">I understand where this sort of contemptuous attitude comes from, as I’m familiar with the <a href="http://webspace.ship.edu/cgboer/platoscave.html">Allegory of the Cave, from Plato’s The Republic</a>. (<em>I encourage you to follow the link and read before continuing.</em>) I know well how those who have only ever experienced the distorted echoes and shadows of what is professionally possible might fiercely attack anything that challenges their ignorance. It is human nature to believe the limits of our perception to be the entirety of reality.</span></span></p>
<p><span style="font-family: Helvetica; font-size: small;">Too often, however, what passes for professionalism in the experience of designers, even company CEOs, is but a shadow of what is possible and what is right. When that ignorance is reinforced by what is deemed to be success, it forms an armor that is difficult or impossible to penetrate with any sort of challenge.</span></p>
</blockquote>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/tmaDD2BBUmc" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/07/i-need-to-read-more-plato/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/07/i-need-to-read-more-plato/</feedburner:origLink></item>
		<item>
		<title>How to find an EPS logo when you need one</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/L-tURdzYEjU/</link>
		<comments>http://apmeyer.com/2010/07/how-to-find-an-eps-logo-when-you-need-one/#comments</comments>
		<pubDate>Wed, 28 Jul 2010 03:15:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Clients]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Freelance]]></category>
		<category><![CDATA[Graphic design]]></category>
		<category><![CDATA[Marketing]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/07/how-to-find-an-eps-logo-when-you-need-one/</guid>
		<description><![CDATA[Your dilemma: Your contact sent you a 72dpi GIF of their logo &#8212; and it&#8217;s spinning. Fantastic. Unfortunately, you&#8217;re working on a print piece and what you really need is a vector file. You ask for the EPS but they don&#8217;t know what that is and claim one doesn&#8217;t exist. Mmhmm. So, how do you [...]]]></description>
			<content:encoded><![CDATA[<p>Your dilemma: Your contact sent you a 72dpi GIF of their logo &#8212; and it&#8217;s spinning. Fantastic. Unfortunately, you&#8217;re working on a print piece and what you really need is a vector file. You ask for the EPS but they don&#8217;t know what that is and claim one doesn&#8217;t exist.</p>
<p>Mmhmm.</p>
<p>So, how do you obtain the logo file you need? There are various corporate logo databases online. Most suck. They are a collection of half-ass attempts at recreating icons and typefaces. Search them first if you like, but chances are you&#8217;ll be unhappy with what you find &#8212; if you find anything at all. Instead, turn to your client&#8217;s website. No, don&#8217;t drag a logo off the homepage. That&#8217;s how you ended up with the atrocity in your inbox. Instead, search the site for some PDF files. See where this is going?</p>
<p>Find a PDF with the logo visible. Open it in your browser, Reader, or whatever PDF viewer you prefer. Zoom in and out on the logo itself. If it looks good at 25% and 1,000% it&#8217;s most likely vector art. If it gets pixelated it was rasterized before the PDF was generated and won&#8217;t serve your needs. Find a good one? Good. Let&#8217;s get that logo out of the PDF.</p>
<p>You can typically open PDFs in Illustrator or other vector-editing applications. I&#8217;ll assume you have Illustrator. If you don&#8217;t, play around with whatever you do have &#8212; but you&#8217;re on your own. In Illustrator attempt to select the logo. If the entire contents of the page are selected start breaking things apart. No, not your physical surroundings, but the visual elements of the file. Use the &#8220;Release Clipping Path&#8221; and &#8220;Ungroup&#8221; option until you can select just the logo itself. As you break up the elements you may notice large selectable areas that appear to contain nothing. Just delete them so they&#8217;re out of your way. But be careful not to delete portions of the logo in the process.</p>
<p>When you&#8217;re able to select the logo alone, copy and paste it into a new file. Save it as an EPS. Done.</p>
<p>You may need to do some additional work to ensure the colors match PMS values defined in the organization&#8217;s brand standards. But if your contact sent you a GIF to begin with they undoubtedly have little concern for color matching or quality. So, you&#8217;re probably in the clear.</p>
<p>Note: You can also open PDFs in Photoshop and other photo-editing applications. If that&#8217;s your only option and your application can open PDFs you won&#8217;t get the EPS, but you can probably get something better than your GIF alternative.</p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/L-tURdzYEjU" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/07/how-to-find-an-eps-logo-when-you-need-one/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/07/how-to-find-an-eps-logo-when-you-need-one/</feedburner:origLink></item>
		<item>
		<title>Invaluable WordPress plugins</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/xeZvygnm-Ao/</link>
		<comments>http://apmeyer.com/2010/06/invaluable-wordpress-plugins/#comments</comments>
		<pubDate>Wed, 23 Jun 2010 20:58:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[plugins]]></category>
		<category><![CDATA[web design]]></category>
		<category><![CDATA[web development]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/06/invaluable-wordpress-plugins/</guid>
		<description><![CDATA[WordPress plugins I install immediately and use on almost every site I create: All-In-One SEO Packhttp://wordpress.org/extend/plugins/all-in-one-seo-pack/ WP-DB-Backuphttp://wordpress.org/extend/plugins/wp-db-backup/ Askimet (Of course)http://codex.wordpress.org/Plugins/Akismet XML Sitemap Generatorhttp://wordpress.org/extend/plugins/google-sitemap-generator/&#160; W3 Total Cachehttp://wordpress.org/extend/plugins/w3-total-cache/ &#160;]]></description>
			<content:encoded><![CDATA[<p>WordPress plugins I install immediately and use on almost every site I create:</p>
<p><strong>All-In-One SEO Pack</strong><br /><a href="http://wordpress.org/extend/plugins/all-in-one-seo-pack/">http://wordpress.org/extend/plugins/all-in-one-seo-pack/</a></p>
<p><strong>WP-DB-Backup</strong><br /><a href="http://wordpress.org/extend/plugins/wp-db-backup/">http://wordpress.org/extend/plugins/wp-db-backup/</a></p>
<p><strong>Askimet (Of course)</strong><br /><a href="http://codex.wordpress.org/Plugins/Akismet">http://codex.wordpress.org/Plugins/Akismet</a></p>
<p><strong>XML Sitemap Generator</strong><br /><a href="http://wordpress.org/extend/plugins/google-sitemap-generator/">http://wordpress.org/extend/plugins/google-sitemap-generator/</a>&nbsp;</p>
<p><strong>W3 Total Cache</strong><br /><a href="http://wordpress.org/extend/plugins/w3-total-cache/">http://wordpress.org/extend/plugins/w3-total-cache/</a></p>
<p>&nbsp;</p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/xeZvygnm-Ao" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/06/invaluable-wordpress-plugins/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/06/invaluable-wordpress-plugins/</feedburner:origLink></item>
		<item>
		<title>Using WordPress Custom Fields to Create a Rotating Image</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/ttlR6jHvWcY/</link>
		<comments>http://apmeyer.com/2010/06/using-wordpress-custom-fields-to-create-a-rotating-image/#comments</comments>
		<pubDate>Tue, 22 Jun 2010 01:30:00 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[wordpress]]></category>

		<guid isPermaLink="false">http://apmeyer.com/2010/06/using-wordpress-custom-fields-to-create-a-rotating-image/</guid>
		<description><![CDATA[This tutorial will show you how to setup a rotating homepage graphic in WordPress using custom fields. A rotating image &#8212; one that refreshes on each page load, or transitions using JavaScript &#8212; is a great way to keep a website feeling fresh, and a great way to steer readers to important content. This technique [...]]]></description>
			<content:encoded><![CDATA[<p>This tutorial will show you how to setup a rotating homepage graphic in WordPress using custom fields. A rotating image &#8212; one that refreshes on each page load, or transitions using JavaScript &#8212; is a great way to keep a website feeling fresh, and a great way to steer readers to important content. This technique can be used for more than images, and can be used on any template. Not just the homepage. &lt;!&#8211;more&#8211;></p>
<p>My assumption is that you have some important pages on your site that you&#8217;d like to call attention too; Perhaps special announcements or portfolio work you&#8217;d like to highlight. I&#8217;m also assuming that you&#8217;ll use the rotating graphic to link to these pages. I&#8217;m not going to step you through creating the graphics. Just remember they should be the same dimensions or you could experience strange results.</p>
<p>Also, I should note: I am assuming you are comfortable editing the code of your templates and that you have some experience with PHP. </p>
<p> </p>
<p><span style="font-size: large;"><strong>Step 1: Define a custom field for each page in the rotation</strong></span></p>
<p><strong>1a. </strong>Load a page for editing. Below the text area for your body copy you&#8217;ll see an area to define custom fields. As of WordPress 3.0, that area looks like figure 1a.</p>
<p><a href='http://apmeyer.com/wp-content/uploads/2010/06/Custom-Field-Window.png.scaled1000.png'><img src="http://apmeyer.com/wp-content/uploads/2010/06/Custom-Field-Window.png.scaled1000-300x130.png" width="500" height="217"/></a>
</p>
<p>fig. 1a</p>
<p><strong>1b.</strong> Click the &#8220;Enter new&#8221; link. Here you will define a name and value for your custom field.</p>
<p><strong>1c. </strong>Name the custom field &#8220;masthead_graphic&#8221; (or whatever name you choose). Note: the name you enter will show up in the custom field dropdown menu after you&#8217;ve finished step 1e. As you repeat these steps for additional pages, do not use the &#8220;Enter New&#8221; link. Select the name from the menu.</p>
<p><strong>1d. </strong>In the value box paste the URL to the image. If you need to upload the image you may do that now by clicking the image icon above the copy editor (fig 1d). Otherwise skip to step 1e. Follow the instructions to upload your image, then highlight and copy the Link URL for the image (fig 1dd). Do not insert the image into your post. Close the upload window when after you&#8217;ve copied the image URL. Paste the URL into the value box for your custom field.</p>
<p><a href='http://apmeyer.com/wp-content/uploads/2010/06/Add-Image-Icon.png.scaled1000.png'><img src="http://apmeyer.com/wp-content/uploads/2010/06/Add-Image-Icon.png.scaled1000-300x25.png" width="500" height="42"/></a>
</p>
<p>fig. 1d</p>
<p><a href='http://apmeyer.com/wp-content/uploads/2010/06/File-Upload-URL.png.scaled1000.png'><img src="http://apmeyer.com/wp-content/uploads/2010/06/File-Upload-URL.png.scaled1000-300x39.png" width="500" height="65"/></a>
</p>
<p>fig. 1dd</p>
<p><strong>1e. </strong>Publish/Update this page/post.</p>
<p><em>Repeat steps 1a-1e for each post/page that will be part of the rotation. Pay special attention the note in step 1c. From now on you&#8217;ll select the custom field name from the dropdown menu. Also make sure each page has its own graphic. If you use the same graphic for each page that will defeat the purpose.</em></p>
<p><em><br /></em></p>
<p><span style="font-size: large;"><strong>Step 2: Add the PHP script to your template to find posts with this custom field</strong></span></p>
<p>In this step you&#8217;ll add some PHP to your template to query the database, looking for posts that have a &#8220;masthead_graphic&#8221; custom field. The query results are added to an array. Then a random record is selected from the array.</p>
<p>If you named the custom field something different, make sure to update this script accordingly.</p>
<p><span style="font-size: large;"><span style="font-size: small;"><strong>2a.</strong> Paste this code into your template, before the loop:</span></span></p>
<p><span style="font-size: large;"><span style="font-size: small;">&lt;?php<br /></span></span><span style="font-size: small; color: #339966;">//this custom query searches for any page or post that has a<br /><span>//masthead_graphic</span> AND is published</span><span style="font-size: small;"><span style="color: #339966;"><span style=""><br /></span></span></span><span style="font-size: small;">$query = &#8220;<br /></span><span style="font-size: small;">SELECT *<br /></span><span style="font-size: small;">FROM $wpdb-&gt;posts p, $wpdb-&gt;postmeta pm<br /></span><span style="font-size: small;">WHERE p.ID = pm.post_id <br /></span><span style="font-size: small;">AND pm.meta_key = &#8216;masthead_graphic&#8217; <br /></span><span style="font-size: small;">AND p.post_status = &#8216;publish&#8217;&#8221;;<br /></span><span style="font-size: small;">$pageposts = $wpdb-&gt;get_results($query, OBJECT);</span></p>
<p><span style="font-size: large;"><span style="font-size: small;"> </span></span></p>
<p><span style="color: #339966;">//create an empty array<br /></span>$rotation = array();</p>
<p><span style="color: #339966;">//loop through records and append each post ID to the array<br /></span>foreach ($pageposts as $post):<br /><span style=""> </span>setup_postdata($post);<br /><span style=""> </span>$rotation[] = $post-&gt;ID;<br />endforeach;</p>
<p><span style="color: #339966;">//determine how many posts are in the array<br /></span>$num_stories = count($rotation);<span style=""> </span></p>
<p><span style="color: #339966;">//define a random number between 0 and the length of the array</span><br />$random_story = rand(0,$num_stories-1);</p>
<p><span style="color: #339966;">//set variables for the link and the graphic</span><br />$masthead_link = get_permalink($rotation[$random_story]);<br />$masthead_graphic = get_post_meta($rotation[$random_story], &#8216;masthead_graphic&#8217;, true);<br />?&gt;</p>
<p> </p>
<p><span style="font-size: large;"><strong>Step 3: Insert the variables into your template</strong></span></p>
<p><strong>3a.</strong> Replace the image link and image URL in your template with the variables created above.</p>
<p>a href=&#8221;&lt;?php echo $masthead_link; ?&gt;&#8221;</p>
<p>img src=&#8221;&lt;?php echo $masthead_graphic; ?&gt;&#8221;</p>
<p> </p>
<p>That&#8217;s it. Each time the page is refreshed a new random record will be selected from the array and a new image will be displayed. It&#8217;s possible that the same image/link will be displayed multiple times in a row. That&#8217;s how random numbers work. It&#8217;s much like flipping a coin; It&#8217;s very likely you&#8217;ll get heads or tails multiple times in a row.</p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/ttlR6jHvWcY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/06/using-wordpress-custom-fields-to-create-a-rotating-image/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/06/using-wordpress-custom-fields-to-create-a-rotating-image/</feedburner:origLink></item>
		<item>
		<title>Hilarious Photoshop Crash Reports</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/CRdQ6K8hZ1A/</link>
		<comments>http://apmeyer.com/2010/05/hilarious-photoshop-crash-reports/#comments</comments>
		<pubDate>Thu, 20 May 2010 01:07:30 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Humor]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://apmeyer.com/?p=11</guid>
		<description><![CDATA[This is just hysterical. With any luck it will start a trend. There&#8217;s a slew of these from Garrett Murray at: http://log.maniacalrage.net/tagged/cs4cr]]></description>
			<content:encoded><![CDATA[<p>This is just hysterical. With any luck it will start a trend. There&#8217;s a slew of these from Garrett Murray at:</p>
<p>http://log.maniacalrage.net/tagged/cs4cr</p>
<p><img src="http://apmeyer.com/wp-content/uploads/2010/09/cs4cr.png" alt="Funny Photoshop Crash Report" title="Funny Photoshop Crash Report" width="500" height="591" class="alignnone size-full wp-image-12" /></p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/CRdQ6K8hZ1A" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/05/hilarious-photoshop-crash-reports/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/05/hilarious-photoshop-crash-reports/</feedburner:origLink></item>
		<item>
		<title>iCal: You’ve frustrated me for the last time</title>
		<link>http://feedproxy.google.com/~r/apmeyer/~3/hK1X3kZoLcY/</link>
		<comments>http://apmeyer.com/2010/05/ical-youve-frustrated-me-for-the-last-time/#comments</comments>
		<pubDate>Mon, 10 May 2010 01:06:04 +0000</pubDate>
		<dc:creator>adam</dc:creator>
				<category><![CDATA[Apple]]></category>
		<category><![CDATA[Productivity]]></category>
		<category><![CDATA[Software]]></category>

		<guid isPermaLink="false">http://apmeyer.com/?p=5</guid>
		<description><![CDATA[This is my plea to Apple to put some effort into their calendar application, iCal. The software has potential, but its limitations are annoying. My primary gripes: 1. I cannot accept appointments received through the iPhone mail software. I have to return to my desk to accept invites or even view the details &#8212; even [...]]]></description>
			<content:encoded><![CDATA[<p>This is my plea to Apple to put some effort into their calendar application, iCal. The software has potential, but its limitations are annoying. My primary gripes:</p>
<p>1. I cannot accept appointments received through the iPhone mail software. I have to return to my desk to accept invites or even view the details &#8212; even though iCal is on the phone.</p>
<p>2. I cannot move appointments from one calendar to another on the iPhone. I have to recreate them.</p>
<p>3. The biggest annoyance: I cannot specify a default email address for iCal&#8217;s response emails. These are the messages sent back to the appointment originator, letting them know if I accepted or declined. As far as I can tell iCal simply uses whatever email account you have highlighted &#8212; I&#8217;ve tested this and found it to be true. This is problematic as I use Mail to manage several accounts.<span id="more-5"></span></p>
<p>I am switching to Google Calendar. I already use Google for a number of other tasks. I might as well add Calendar to the mix. It&#8217;s formatted beautifully for both my phone and desktop and none of the problems listed above are present. I will also be dropping Mail for my professional email accounts in favor of the gmail interface. We already funnel our domains through Google so there is no additional setup.</p>
<p>Considering how amazing many of Apple&#8217;s applications are. It&#8217;s mind blowing how lackluster their &#8220;daily-use&#8221; applications are.</p>
<p>Mail and iCal, I will not miss you. Not one bit.</p>
<img src="http://feeds.feedburner.com/~r/apmeyer/~4/hK1X3kZoLcY" height="1" width="1"/>]]></content:encoded>
			<wfw:commentRss>http://apmeyer.com/2010/05/ical-youve-frustrated-me-for-the-last-time/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://apmeyer.com/2010/05/ical-youve-frustrated-me-for-the-last-time/</feedburner:origLink></item>
	</channel>
</rss>

