<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Webreweries.com &#124; Tips &#124; Photoshop &#124; Java &#124; Illustrator &#124; Dreamweaver &#124; After Effects &#124; Graphics &#124; Animation &#124; Design &#187; Web</title>
	<atom:link href="http://webreweries.com/category/web/feed/" rel="self" type="application/rss+xml" />
	<link>http://webreweries.com</link>
	<description>Just Another Design Blog - &#34;JADB&#34;</description>
	<lastBuildDate>Sat, 04 Feb 2012 12:37:49 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>How To Use Custom Post Types To Organize Online Marketing Campaigns</title>
		<link>http://webreweries.com/how-to-use-custom-post-types-to-organize-online-marketing-campaigns/</link>
		<comments>http://webreweries.com/how-to-use-custom-post-types-to-organize-online-marketing-campaigns/#comments</comments>
		<pubDate>Sat, 04 Feb 2012 12:37:49 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/how-to-use-custom-post-types-to-organize-online-marketing-campaigns/</guid>
		<description><![CDATA[&#160;&#160; Custom post types add a level of flexibility to WordPress that makes this open-source Web development platform more useful on many levels. Whenever I have been faced with a Web-based task, especially one that involves organizing information, the first thing I do is examine WordPress to determine if it can handle the job. It [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>Custom post types add a level of flexibility to WordPress that makes this open-source Web development platform more useful on many levels. Whenever I have been faced with a Web-based task, especially one that involves organizing information, the first thing I do is examine WordPress to determine if it can handle the job. It usually can.</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/making-dollars-500.jpg" alt="Making Dollars" width="500" /><br /><em><a href="http://www.flickr.com/photos/bjornmeansbear/5176903453/">Image Source</a></em></p>
<p>As an Internet marketer and analyst, I need to be able to organize online marketing campaigns in a way that is trackable in Google Analytics. This is the perfect task for WordPress custom post types.</p>
<p>In this article, we’ll explain how to create a WordPress plugin that enables you to organize Internet marketing campaigns using trackable URLs, shortened versions of those URLs, and trackable QR codes that you can also use for offline marketing activities.</p>
<p>We’ll show you how to create this plugin in a way that maximizes ease of use and functionality. If you have other methods that you have found useful, please share them in the comments. Also, let’s remember that we are standing on the shoulders of WordPress developers who have laid the foundation for easier coding.</p>
<p>Here are the criteria for our custom post type plugin:</p>
<ul>
<li>It must provide a form in which users can specify a landing page to be tracked, the anchor text or content, the term (if this link is a PPC ad), and any additional information about this link.</li>
<li>It must provide three custom taxonomy types, so that users can select the URL variables for source, medium and campaign name. This is a taxonomy type because they will be reusable across campaigns and posts.</li>
<li>It must be organizable in the admin area and be displayed in the user interface.</li>
<li>The output must include a Google Analytics campaign-trackable URL, the information about the URL in human-readable format, a shortened version of the URL using a URL shortener, and a QR code of the shortened URL.</li>
</ul>
<h3>The File Structure</h3>
<p>This plugin will use three files. To set up the structure, create a plugin folder named <code>campaign-tracker</code>. Inside the <code>campaign-tracker</code> folder, create the following three PHP files:</p>
<ul>
<li><code>campaign-tracker.php</code></li>
<li><code>ga-functions.php</code></li>
<li><code>campaign-template.php</code></li>
</ul>
<p>After you have created the files, we are ready to start adding the code.</p>
<h3>The Plugin File</h3>
<p>The main plugin file will be <code>campaign-tracker.php</code>. The content of this file will begin the standard way, by providing WordPress with the information that it needs to recognize it is as plugin. We then dive into setting up the <code>CampaignTracker10</code> class and functions. We will set up our campaign custom post type and register the taxonomies that we will need. We will also initiate our admin interface.</p>
<pre>
   &lt;?php
   /*
   Plugin Name: Campaign Tracking 1.0
   Plugin URI: http://www.convergeconsulting.org
   Description: Google Analytics Campaign Tracking system for WordPress 3.0 and above.
   Author: Joshua Dodson
   Version: 1.0
   Author URI: http://www.convergeconsulting.org
   */

   // Include the ga-functions.php helper functions
   include_once('ga-functions.php');

   if(!class_exists('CampaignTracker10'))
   {

      class CampaignTracker10 {

         var $meta_fields = array("gaca10-gaurl","gaca10-gaterm","gaca10-gacontent","gaca10-gadescription");

         // This function will create the custom post type. Thanks to Konstantin Kovshenin's example for additional examples of how to construct custom post types (http://kovshenin.com/2010/03/custom-post-types-in-wordpress-3-0-2089/), which inspired much of this.
         function __construct(){
            // Register custom post types
            register_post_type('campaign', array(
            'label' =&gt; _x('Campaigns','campaigns label'), // We're labeling the custom posts as Campaigns and also accounting for <a href="http://codex.wordpress.org/I18n_for_WordPress_Developers#Disambiguation_by_context" title="Disambiguation by context">gettext</a> appropriately
            'singular_label' =&gt; _x('Campaign','campaign singular label'), // Each post will be called a Campaign
            'public' =&gt; true, // These will be public
            'show_ui' =&gt; true, // Show the UI in admin panel
            '_builtin' =&gt; false, // This is a custom post type, not a built in post type
            '_edit_link' =&gt; 'post.php?post=%d',
            'capability_type' =&gt; 'post',
            'hierarchical' =&gt; false,
            'rewrite' =&gt; array("slug" =&gt; "campaign"), // This is for the permalinks
            'query_var' =&gt; "campaign", // This goes to the WP_Query schema
            'supports' =&gt; array('title'/* We only need the default title field, but we could use others such as 'author', 'excerpt', 'editor' ,'custom-fields'*/)
            ));

            add_filter("manage_edit-campaign_columns", array(&amp;$this, "edit_columns"));
            add_action("manage_posts_custom_column", array(&amp;$this, "custom_columns"));

            // Register custom taxonomies gasource (for the Campaign Source), gamedium (for the Campaign Medium), and ganame (for Campaign Name)
            // Campaign Source
            register_taxonomy("gasource", array("campaign"), array("hierarchical" =&gt; true, "label" =&gt; _x( 'Campaign Sources', 'campaign sources taxonomy label' ), "singular_label" =&gt; "Campaign Source", "rewrite" =&gt; true));
            // Campaign Medium
            register_taxonomy("gamedium", array("campaign"), array("hierarchical" =&gt; true, "label" =&gt; _x( 'Campaign Mediums', 'campaign mediums taxonomy label' ), "singular_label" =&gt; "Campaign Medium", "rewrite" =&gt; true));
            // Campaign Name
            register_taxonomy("ganame", array("campaign"), array("hierarchical" =&gt; true, "label" =&gt; _x( 'Campaign Names', 'campaign names taxonomy label' ), "singular_label" =&gt; "Campaign Name", "rewrite" =&gt; true));

            add_action("admin_init", array(&amp;$this, "admin_init"));
            add_action("template_redirect", array(&amp;$this, 'template_redirect'));

            add_action("wp_insert_post", array(&amp;$this, "wp_insert_post"), 10, 2);

         }
</pre>
<p>Let’s give the columns on the admin screen some headings:</p>
<pre>
   function edit_columns($columns)
   {
      $columns = array(
      'cb' =&gt; '&lt;input type="checkbox" /&gt;',
      'title' =&gt; _x('Campaign Title','campaign title label for edit columns'),
      'gaca10_ganame' =&gt; _x('Campaign Name','campaign name label for edit columns'),
      'gaca10_gasources' =&gt; _x('Campaign Source','campaign source label for edit columns'),
      'gaca10_gasmedium' =&gt; _x('Campaign Medium','campaign medium label for edit columns'),
      );
      return $columns;
   }
</pre>
<p>Let’s specify which columns we would like to show up on the admin screen for this custom post type. We’ll have columns for campaign source, medium and name, in addition to the post’s title.</p>
<pre>
   function custom_columns($column)
   {
      global $post;
      switch ($column)
      {
         // The campaign source
         case "gaca10_gasources":
         $gasources = get_the_terms(0, "gasource");
         if ( $gasources &amp;&amp; ! is_wp_error( $gasources ) ) :
         $gasources_html = array();
         foreach ($gasources as $gasource)
         array_push($gasources_html, '&lt;a href="' . get_term_link($gasource-&gt;slug, "gasource") . '"&gt;' . $gasource-&gt;name . '&lt;/a&gt;');

         echo implode($gasources_html, ", ");
         endif;
         break;

         // The campaign medium
         case "gaca10_gasmedium":
         $gamediums = get_the_terms(0, "gamedium");
         if ( $gamediums &amp;&amp; ! is_wp_error( $gamediums ) ) :
         $gamediums_html = array();
         foreach ($gamediums as $gamedium)
         array_push($gamediums_html, '&lt;a href="' . get_term_link($gamedium-&gt;slug, "gamedium") . '"&gt;' . $gamedium-&gt;name . '&lt;/a&gt;');

         echo implode($gamediums_html, ", ");
         endif;
         break;

         // The campaign name
         case "gaca10_ganame":
         $ganames = get_the_terms(0, "ganame");
         if ( $ganames &amp;&amp; ! is_wp_error( $ganames ) ) :
         $ganames_html = array();
         foreach ($ganames as $ganame)
         array_push($ganames_html, '&lt;a href="' . get_term_link($ganame-&gt;slug, "ganame") . '"&gt;' . $ganame-&gt;name . '&lt;/a&gt;');

         echo implode($ganames_html, ", ");
         endif;
         break;
      }
   }
</pre>
<p>Once our columns are set up appropriately, we should see the following columns (note that this example is with one campaign already added):</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/campaigns-in-columns.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/campaigns-in-columns-500.jpg" alt="Campaigns in columns" width="500" height="213" /></a></p>
<p>The next section enables us to specify which template we would like to use to display this custom post type. We will be using the <code>campaign-template.php</code> template:</p>
<pre>
   function template_redirect()
   {
      global $wp;

      // If the post type is set and is campaign…
      if (isset($wp-&gt;query_vars["post_type"])) {
         if ($wp-&gt;query_vars["post_type"] == "campaign")
         {
            // Then use the campaign-template.php file from this plugin directory
            include WP_PLUGIN_DIR.'/campaign-tracker/campaign-template.php';
            die();
         }
      }
   }
</pre>
<p>If a post is inserted or updated, then loop through the array and update or add the post’s meta data.</p>
<pre>
   function wp_insert_post($post_id, $post = null)
   {
      if ($post-&gt;post_type == "campaign")
      {
         foreach ($this-&gt;meta_fields as $key)
         {
            $value = $_POST[$key];
            if (empty($value))
            {
               delete_post_meta($post_id, $key);
               continue;
            }

            if (!is_array($value))
            {
               if (!update_post_meta($post_id, $key, $value))
               {
                  add_post_meta($post_id, $key, $value);
               }
            }
            else
            {
               delete_post_meta($post_id, $key);

               foreach ($value as $entry){
                  add_post_meta($post_id, $key, $entry);
               }
            }
         }
      }
   }
</pre>
<p>With the following function, we can add custom meta boxes for the admin screen where we edit the campaign:</p>
<pre>
   function admin_init()
   {
      // Add custom meta boxes for the edit campaign screen
      add_meta_box("gaca10-meta", "Campaign Information", array(&amp;$this, "meta_options"), "campaign", "normal", "core");
   }
</pre>
<p>The following function is for the admin post meta contents. This lets us create the form in which we specify some of the variables for our trackable URL (except for the taxonomies). It also provides a read-only field that shows the shortened URL after the URL variables have been saved.</p>
<pre>
   function meta_options()
   {
      global $post;
      $custom = get_post_custom($post-&gt;ID);
      if($custom["gaca10-gaurl"][0]){
         $gaurl = $custom["gaca10-gaurl"][0];
      }
      else{ $gaurl = ''; }
      if($custom["gaca10-gaterm"][0]) {
         $gaterm = $custom["gaca10-gaterm"][0];
      }
      else { $gaterm = ''; }
      if ($custom["gaca10-gacontent"][0]) {
         $gacontent = $custom["gaca10-gacontent"][0];
      }
      else { $gacontent = ''; }
      if ($custom["gaca10-gadescription"][0]) {
         $gadescription = $custom["gaca10-gadescription"][0];
      }
      else { $gadescription = ''; }

      $url = trackable_url();
      if ($custom["campaign_tinyurl"][0]) {
         if($gaurl == '') { $shortenedurl = ''; }
         else{ $shortenedurl = create_tiny_url($url); }
      }

      ?&gt;
      &lt;label&gt;&lt;?php _ex('Website URL:','website url label'); ?&gt;&lt;/label&gt;&lt;input name="gaca10-gaurl" value="&lt;?php echo $gaurl; ?&gt;" /&gt;&lt;br /&gt;
      &lt;em&gt;&lt;?php _ex('(e.g., http://www.google.com)','website url example'); ?&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;

      &lt;label&gt;&lt;?php _ex('Campaign Term:','campaign term label'); ?&gt;&lt;/label&gt;&lt;input name="gaca10-gaterm" value="&lt;?php echo $gaterm; ?&gt;" /&gt;&lt;br /&gt;
      &lt;em&gt;&lt;?php _ex('(identify the paid keywords)','campaign term information'); ?&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;
      &lt;label&gt;&lt;?php _ex('Campaign Content:','campaign content label'); ?&gt;&lt;/label&gt;&lt;input name="gaca10-gacontent" value="&lt;?php echo $gacontent; ?&gt;" /&gt;&lt;br /&gt;
      &lt;em&gt;&lt;?php _ex('(use to differentiate ads)','campaign content information'); ?&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;

      &lt;label&gt;&lt;?php _ex('Campaign Description:','campaign description label'); ?&gt;&lt;/label&gt;&lt;input name="gaca10-gadescription" value="&lt;?php echo $gadescription; ?&gt;" /&gt;&lt;br /&gt;
      &lt;em&gt;&lt;?php _ex('(use to remind yourself about this specific link)','campaign description information'); ?&gt;&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;

      &lt;label&gt;&lt;?php _ex('Shortened URL:','shortened URL label'); ?&gt;&lt;/label&gt;&lt;input name="gaca10-gashortened-url" value="&lt;?php echo $shortenedurl; ?&gt;" readonly="readonly" /&gt;&lt;br /&gt;

      &lt;?php
   }
}

}
</pre>
<p>Here is how the “Add/Edit Campaign” screen will appear:</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/add-new-post.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/add-new-post-500.jpg" alt="Add new post" width="500" height="263" /></a></p>
<p>If <code>CampaignTracker10</code> exists, then we initiate the plugin:</p>
<pre>
   if(class_exists('CampaignTracker10')){

      // Initiate the plugin
      add_action("init", "CampaignTracker10Init");

      function CampaignTracker10Init() {
         global $gaca10;
         $gaca10 = new CampaignTracker10();

      }
   }
</pre>
<p>Combine these functions into the <code>campaign-tracker.php</code> file.</p>
<p>The following taxonomy examples should also be on the “Add/Edit Campaign” screen after everything has been added. Here is the “Campaign Names” taxonomy:</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/campaign-names.png" alt="Campaign Names" width="291" /></p>
<p>Here is the “Campaign Mediums” taxonomy:</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/campaign-mediums.png" alt="Campaign Mediums" width="287" /></p>
<p>Here is the “Campaign Sources” taxonomy:</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/campaign-sources.png" alt="Campaign Sources" width="288" /></p>
<p>Similar to how traditional post categories are set up, you can create new categories or select previous categories.</p>
<p><strong>A note on usage:</strong> When you begin to use the system, try to select only one category each from name, source and medium. One category per taxonomy type will prove to be most useful in your actual analysis in Google Analytics. So, as a general rule: one name, one source and one medium per URL.</p>
<h3>The Helpful Display Functions</h3>
<p>Each of the functions in this section is part of the <code>ga-functions.php</code> file. The functions have been separated from the other functions in order to keep the display functions together.</p>
<p>Our file will begin with the <code>formatted_utm_taxonomy_terms</code> function, which will display a URL-friendly version of the taxonomy terms:</p>
<pre>
   &lt;?php
   /* Some Helpful Display Functions */

   function formatted_utm_taxonomy_terms($the_term) {
      global $post;
      $post_terms = get_the_terms( $post-&gt;ID, $the_term );
      if ( $post_terms &amp;&amp; ! is_wp_error( $post_terms ) ) :
      $encoded_terms = array();
      foreach ($post_terms as $term ) {
         if(!$encoded_terms[] = $term-&gt;slug){
            $encoded_terms[] = urlencode($term-&gt;name);
         }
      }
      $return_terms = implode('+',$encoded_terms);
      return $return_terms;
      endif;
   }
</pre>
<p>The <code>trackable_url</code> function generates the trackable URL from the fields on the admin screen as well as the taxonomies. This appends the appropriate tracking criteria to the URL so that Google Analytics can use the variables and provide information based on these specific variables. To do this, we will use the <a href="http://codex.wordpress.org/Function_Reference/add_query_arg" title="add_query_arg"><code>add_query_arg</code></a> WordPress function.</p>
<pre>
   function trackable_url() {
      global $post;
      $custom = get_post_custom($post-&gt;ID);

      // the url
      if ($custom["gaca10-gaurl"][0]) {
         $gaurl = $custom["gaca10-gaurl"][0];
      }
      else { $gaurl = ''; }

      // the term(s)
      if ($gaterm = $custom["gaca10-gaterm"][0]) {
         $gaterm = $custom["gaca10-gaterm"][0];
         $gaterm = urlencode($gaterm);
      }
      else { $gaterm = ''; }

      // the content(s)
      if ($custom["gaca10-gacontent"][0]) {
         $gacontent = $custom["gaca10-gacontent"][0];
         $gacontent = urlencode($gacontent);
      }
      else { $gacontent = ''; }
      $arr_params = array ( 'utm_campaign' =&gt; formatted_utm_taxonomy_terms('ganame'), 'utm_source' =&gt; formatted_utm_taxonomy_terms('gasource'), 'utm_medium' =&gt; formatted_utm_taxonomy_terms('gamedium'), 'utm_term' =&gt; $gaterm, 'utm_content' =&gt; $gacontent);
      return add_query_arg( $arr_params, $gaurl );

   }
</pre>
<p>The following functions take the campaign-trackable URL and <a href="http://www.richardcastera.com/blog/creating-a-tinyurl-with-tinyurl-api">shortens it with TinyURL</a>. This method uses <a href="http://codex.wordpress.org/Function_API/wp_remote_get" title="wp_remote_get"><code>wp_remote_get</code></a> to generate the shortened URL. It then saves the shortened URL to the post’s meta data when a post is saved. The <code>trackable_url_tiny</code> function enables us to retrieve the shortened URL in the template.</p>
<pre>
   // Save the shortened trackable URL to the post meta
   function save_shortened_meta($post_ID) {
      $url = trackable_url();
      $shortened_url = create_tiny_url($url);
      update_post_meta($post_ID, "campaign_tinyurl", $shortened_url);
      return $post_ID;
   }

   // Add an action to save it when the post is saved.
   add_action('save_post', 'save_shortened_meta');

   // Retrieve the shortened URL from post meta
   function trackable_url_tiny($url = null, $post_ID) {
      global $post;
      $custom_fields = get_post_custom($post-&gt;ID);
      $campaign_tinyurl = $custom_fields['campaign_tinyurl'][0];
      return $campaign_tinyurl;

      return $post_ID;
   }

   // Create shortened trackable URL through the wp_remote_get function
   function create_tiny_url($strURL) {
      $tinyurl = wp_remote_get( 'http://tinyurl.com/api-create.php?url='.$strURL );
      if( is_wp_error( $response ) ) {
         return 'Something went wrong!';
      } else {
         return $tinyurl['body'];

      }
   }
</pre>
<p>The <code>trackable_url_report</code> function is what provides the human-readable version of the variables. These are broken out by each section. The landing page, campaign name, source, medium, terms and content are all separated and displayed individually if they exist.</p>
<pre>
   function trackable_url_report() {
      global $post;
      $custom = get_post_custom($post-&gt;ID);

      // get the url
      if ($custom["gaca10-gaurl"][0]) {
         $gaurl = $custom["gaca10-gaurl"][0];
      }
      else { $gaurl = ''; }
      // get the term(s)
      if ($gaterm = $custom["gaca10-gaterm"][0]) {
         $gaterm = $custom["gaca10-gaterm"][0];
      }
      else { $gaterm = ''; }

      // get the content(s)
      if ($custom["gaca10-gacontent"][0]) {
         $gacontent = $custom["gaca10-gacontent"][0];
      }
      else { $gacontent = ''; }

      // The Landing page
      $url_info ='';
      $url_info.= "&lt;strong&gt;". _x( 'Landing Page:','landing page label') . "&lt;/strong&gt; ";
      $url_info.= $gaurl;
      $url_info.= "&lt;br /&gt;";

      // The campaign name
      $url_info.= "&lt;strong&gt;". _x( 'Campaign:','campaign label') . "&lt;/strong&gt; ";
      $url_info.= formatted_utm_taxonomy_terms('ganame');
      $url_info.= "&lt;br /&gt;";

      // The Source
      $url_info.= "&lt;strong&gt;". _x( 'Source:','source label') . "&lt;/strong&gt; ";
      $url_info.= formatted_utm_taxonomy_terms('gasource');
      $url_info.= "&lt;br /&gt;";

      // The medium
      $url_info.= "&lt;strong&gt;". _x( 'Medium:','medium label') . "&lt;/strong&gt; ";
      $url_info.= formatted_utm_taxonomy_terms('gamedium');
      $url_info.= "&lt;br /&gt;";

      // The term
      $url_info.= "&lt;strong&gt;". _x( 'Term:','term label') . "&lt;/strong&gt; ";
      $url_info.= $gaterm;
      $url_info.= "&lt;br /&gt;";

      // The content
      $url_info.= "&lt;strong&gt;". _x( 'Content:','content label') . "&lt;/strong&gt; ";
      $url_info.= $gacontent;
      $url_info.= "&lt;br /&gt;";

      return $url_info;
   }
</pre>
<p>The <code>display_description</code> function displays the description of the URL. We’ve broken this part out here in order to keep all of the pieces that are specific to the URL together. This is also the last function in the <code>ga-functions.php</code> file.</p>
<pre>
   function display_description(){
      global $post;
      $custom = get_post_custom($post-&gt;ID);
      $description = $custom["gaca10-gadescription"][0];
      return $description;
   }

   ?&gt;
</pre>
<p>Combine these functions into the <code>ga-functions.php</code> file, and then we can move onto creating the template file.</p>
<h3>The Template File</h3>
<p>The final file that we will use to generate the view of the trackable URL is <code>campaign-template.php</code>. You will remember from the <code>campaign-tracker.php</code> file that we have a call in the <code>template_redirect()</code> function to redirect users to this template when viewing the custom post type of campaigns.</p>
<p>For display purposes, we will use the <code>single.php</code> file from the current default WordPress theme, TwentyEleven. You can, of course, use another theme and different styles.</p>
<p>First, we include the <code>ga-functions.php</code> file so that we can use some of our display functions. The campaign template also uses the Google Charts API to <a href="http://code.google.com/apis/chart/infographics/docs/overview.html">generate the QR code</a>.</p>
<p>The following code will do all of the heavy lifting to display our campaign-trackable URL, the information about the URL, the shortened URL and the QR code. It will also allow us to edit the post if we need to change a variable. Simply drop this code into <a href="http://codex.wordpress.org/The_Loop">the loop</a>.</p>
<pre>
   &lt;h1 class="entry-title"&gt;&lt;?php the_title() ?&gt;&lt;/h1&gt;&lt;br /&gt;

   &lt;?php
   echo "&lt;strong&gt;". _x( 'Description:','description label') . "&lt;/strong&gt; ";
   echo display_description();
   echo "&lt;br /&gt;";
   echo trackable_url_report();
   echo "&lt;br /&gt;";
   echo "&lt;strong&gt;". _x('Trackable URL:','trackable URL label') . "&lt;/strong&gt; ";
   echo "&lt;a href=".trackable_url()." target='_blank'&gt;".trackable_url()."&lt;/a&gt;&lt;br /&gt;";

   echo "&lt;strong&gt;" . _x('Shortened Trackable URL:','shortened trackable URL label') . "&lt;/strong&gt; ";
   echo "&lt;a href=".trackable_url_tiny()." target='_blank'&gt;".trackable_url_tiny()."&lt;/a&gt;&lt;br /&gt;";
   ?&gt;

   &lt;br /&gt;
   &lt;img src="https://chart.googleapis.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chl=&lt;?php trackable_url_tiny(); ?&gt;" /&gt;&lt;br /&gt;
   &lt;?php edit_post_link( __( 'Edit', 'twentyeleven' ), '&lt;span class="edit-link"&gt;', '&lt;/span&gt;' ); ?&gt;
</pre>
<p>When we combine the code, the campaign template will be as follows:</p>
<pre>
   &lt;?php
   /**
   * The Template for displaying all single posts.
   *
   * @package WordPress
   * @subpackage Twenty_Eleven
   * @since Twenty Eleven 1.0
   */

   // Include the ga-functions.php file so that we can easily display the results
   include_once('ga-functions.php');

   get_header(); ?&gt;

   &lt;div id="primary"&gt;
   &lt;div id="content" role="main"&gt;

   &lt;?php while ( have_posts() ) : the_post(); ?&gt;

   &lt;nav id="nav-single"&gt;
   &lt;h3 class="assistive-text"&gt;&lt;?php _e( 'Post navigation', 'twentyeleven' ); ?&gt;&lt;/h3&gt;
   &lt;span class="nav-previous"&gt;&lt;?php previous_post_link( '%link', __( '&lt;span class="meta-nav"&gt;&amp;larr;&lt;/span&gt; Previous', 'twentyeleven' ) ); ?&gt;&lt;/span&gt;
   &lt;span class="nav-next"&gt;&lt;?php next_post_link( '%link', __( 'Next &lt;span class="meta-nav"&gt;&amp;rarr;&lt;/span&gt;', 'twentyeleven' ) ); ?&gt;&lt;/span&gt;
   &lt;/nav&gt;&lt;!-- #nav-single --&gt;

   &lt;h1 class="entry-title"&gt;&lt;?php the_title() ?&gt;&lt;/h1&gt;&lt;br /&gt;

   &lt;?php
   echo "&lt;strong&gt;". _x( 'Description:','description label') . "&lt;/strong&gt; ";
   echo display_description();
   echo "&lt;br /&gt;";
   echo trackable_url_report();
   echo "&lt;br /&gt;";
   echo "&lt;strong&gt;". _x('Trackable URL:','trackable URL label') . "&lt;/strong&gt; ";
   echo "&lt;a href=".trackable_url()." target='_blank'&gt;".trackable_url()."&lt;/a&gt;&lt;br /&gt;";

   echo "&lt;strong&gt;" . _x('Shortened Trackable URL:','shortened trackable URL label') . "&lt;/strong&gt; ";
   echo "&lt;a href=".trackable_url_tiny()." target='_blank'&gt;".trackable_url_tiny()."&lt;/a&gt;&lt;br /&gt;";
   ?&gt;

   &lt;br /&gt;
   &lt;img src="https://chart.googleapis.com/chart?chs=150x150&amp;amp;cht=qr&amp;amp;chl=&lt;?php trackable_url_tiny(); ?&gt;" /&gt;&lt;br /&gt;
   &lt;?php edit_post_link( __( 'Edit', 'twentyeleven' ), '&lt;span class="edit-link"&gt;', '&lt;/span&gt;' ); ?&gt;

   &lt;?php comments_template( '', true ); ?&gt;

   &lt;?php endwhile; // end of the loop. ?&gt;

   &lt;/div&gt;&lt;!-- #content --&gt;
   &lt;/div&gt;&lt;!-- #primary --&gt;

   &lt;?php get_footer(); ?&gt;
</pre>
<p>When the template is set up and a campaign has been added, then it should display the following page:</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/display-information.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/display-information-500.jpg" alt="Display information" width="500" /></a></p>
<h3>In Conclusion</h3>
<p>By using WordPress custom post types in the method described, it is possible to organize marketing campaigns with the relevant Google Analytics campaign-tracking URL, shortened URL and QR code. This makes organizing marketing campaigns much simpler and more effective.</p>
<p>Custom post types make it very easy to set up a system by which to organize content. And we can get creative in how we use custom post types. They can be very useful when organizing content outside of the normal structure of WordPress and other content management systems (i.e. posts, pages, etc.).</p>
<p>Other possible uses of custom post types include the following:</p>
<ul>
<li>Manage client contacts,</li>
<li>Create an employee directory,</li>
<li>Keep an inventory of items,</li>
<li>Organize other data.</li>
</ul>
<h4>Resources</h4>
<p>You may be interested in the following resources and articles:</p>
<ul>
<li>“<a href="http://kovshenin.com/2010/03/custom-post-types-in-wordpress-3-0-2089/">Custom Post Types in WordPress 3.0</a>,” Konstantin Kovshenin</li>
<li>“<a href="http://justintadlock.com/archives/2010/04/29/custom-post-types-in-wordpress">Custom Post Types in WordPress</a>,” Justin Tadlock</li>
<li>“<a href="http://www.richardcastera.com/blog/creating-a-tinyurl-with-tinyurl-api">Creating a TinyURL With TinyURL’s API</a>,” Richard Castera</li>
<li>“<a href="http://code.google.com/apis/chart/infographics/docs/overview.html">Getting Started With Infographics</a>” (QR Codes with the Google Charts API), Google Code</li>
<li>“<a href="http://codex.wordpress.org/Post_Types">Post Types</a>,” WordPress Codex</li>
<li><a href="http://support.google.com/googleanalytics/bin/answer.py?hl=en&amp;answer=55578">URL Builder tool</a> Google Analytics</li>
<li>“<a href="http://support.google.com/conversionuniversity/bin/request.py?hl=en&amp;contact_type=indexSplash&amp;rd=1">IQ Lessons</a>,” Google Analytics</li>
</ul>
<p><em>(al)</em></p>
<hr />
<p>© Joshua Dodson for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/how-to-use-custom-post-types-to-organize-online-marketing-campaigns/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Freebie: St. Valentine&#8217;s Day Icon Set (10 PNG/PSD Icons)</title>
		<link>http://webreweries.com/freebie-st-valentines-day-icon-set-10-pngpsd-icons/</link>
		<comments>http://webreweries.com/freebie-st-valentines-day-icon-set-10-pngpsd-icons/#comments</comments>
		<pubDate>Fri, 03 Feb 2012 12:37:35 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/freebie-st-valentines-day-icon-set-10-pngpsd-icons/</guid>
		<description><![CDATA[&#160;&#160; Every now and then, we release useful freebies for all of our highly valued readers. Today, it is our pleasure to present to you Cuberto&#8216;s fantastic St. Valentine&#8217;s icon set &#8202;&#8212;&#8202; exclusively designed for Smashing Magazine and its loyal readers. The icons presented are available in transparent PNGs as well as Photoshop PSDs (128&#215;128 [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>Every now and then, we release useful freebies for all of our highly valued readers. Today, it is our pleasure to present to you <a href="http://www.cuberto.com/">Cuberto</a>&#8216;s fantastic St. Valentine&#8217;s icon set &#8202;&#8212;&#8202; exclusively designed for Smashing Magazine and its loyal readers. The icons presented are available in transparent PNGs as well as Photoshop PSDs (128&#215;128 px) and are perfect for any projects you have coming up for St. Valentine&#8217;s Day. Enjoy!</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/02/preview-screenshot.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/02/preview-screenshot.jpg" width="500" height="450" alt="short preview" /></a></p>
<h4>Download the Set for free!</h4>
<p>This icon set is completely free to use for commercial or personal applications without any restrictions. Please link to this article if you want to spread the word.</p>
<ul>
<li><a title="St. Valentine's Day Icon Set" href="http://media.smashingmagazine.com/wp-content/uploads/2012/02/free_iconset.png">large preview</a></li>
<li><a title="Download ZIP package" href="http://provide.smashingmagazine.com/Valentine-Day-Free-Icon-Set.zip">download the .zip-package</a> (.zip, 2 Mb)</li>
</ul>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/02/sketches.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/02/sketches.png" width="500" height="1000" /></a><br /><em>Initial sketches of Cuberto&#8217;s St. Valentine&#8217;s icon set.</em></p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/02/free_iconset.png"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/02/free_iconset.png" width="500" height="1000" /></a><br /><em>Quick preview of the icons in the set.</em></p>
<h4>Behind the Design</h4>
<p>As always, here are some insights from the designers:</p>
<blockquote><p>&#8220;Our goal was not only to create nice icons but also a functional set that can be used in navigation elements as well as gifts throughout social networks on the upcoming sweet Valentine&#8217;s day. Please link to this article if you want to spread the word.&#8221;<br />
&#8202;&#8212;&#8202; Peace and Love</p>
</blockquote>
<p>Thanks Cuberto, we sincerely appreciate your time and your intentions!</p>
<p><em>(il)</em></p>
<hr />
<p>© Smashing Editorial Team for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/freebie-st-valentines-day-icon-set-10-pngpsd-icons/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ten Things To Think About When Designing Your iPad App</title>
		<link>http://webreweries.com/ten-things-to-think-about-when-designing-your-ipad-app/</link>
		<comments>http://webreweries.com/ten-things-to-think-about-when-designing-your-ipad-app/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 12:34:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/ten-things-to-think-about-when-designing-your-ipad-app/</guid>
		<description><![CDATA[&#160;&#160; Like most well-designed things, the magic of an iPad app comes from a union of usefulness, usability and meaning. Games aside, the app must be useful by solving a problem that people actually have through the right set of functionality at the right time. It must be easy to use and, just as importantly, [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>Like most well-designed things, the magic of an iPad app comes from a union of usefulness, usability and meaning. Games aside, the app must be <strong>useful</strong> by solving a problem that people actually have through the right set of functionality at the right time. It must be <strong>easy to use</strong> and, just as importantly, easy to get started using, without a lot of pesky setup and learning steps. And it must hold <strong>meaning</strong> for the user through visual beauty, an emotional connection, personal insights, etc. In this article, we won’t outline the entire design process for creating an iPad app, but we will explore 10 of the key things to think about when designing your app (and planning the design process).</p>
<p>We’ve excluded tips that have already been mentioned in every single iPad design article ever written (such as, “Invite users to touch by presenting real-world metaphors in a skeuomorphic interface” —look it up!). Instead, we’ll focus on what to really think about when doing design work. By reviewing these considerations in the context of your own application, you can assess whether you’re making good decisions about your design.</p>
<h3>Take A Goal-Oriented Approach To Simplify Functionality.</h3>
<p>Good iPad apps are about simplicity and doing a few things well. This means you have to be selective about the functionality you include and not throw in the kitchen sink. Consider following a goal-oriented approach to figure out what functionality you need. List all of the high-level goals a user might have when using your app (better yet, watch users doing things that you hope your app will help with in order to get a full picture of what the user’s goals are — but that’s an article for another time). What would someone be trying to get done? Then, brainstorm all of the functionality that someone might want in order to accomplish that task. Look at that big list, and start pruning, with an eye for the minimum that is needed to help the user succeed. And then select a few magical, delightful features to complete the package.</p>
<p>For example, <strong>Epicurious</strong> does an excellent job of giving the multi-tasking cook exactly what they need. When viewing a recipe in landscape format, users can easily scan ingredients on the left while keeping track of the next instruction on the right, with a bright placeholder that can be dragged with the finger to the current spot. Reviews and additional tips for the recipe are easily accessible via tabs, but the main screen is kept clean and uncluttered, with just the basics.</p>
<p><a href="http://www.epicurious.com/services/mobile/ipad"><img class="alignnone size-full wp-image-110330" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num1_a3.jpg" alt="" width="500" height="375" /></a><br />
<em><a title="Epicurious" href="http://www.epicurious.com/services/mobile/ipad">Epicurious</a> provides a clean interface for recipes, with an orange marker to keep your place.</em></p>
<p>By contrast, the <strong>Whole Foods</strong> app starts off being helpful by letting you add recipe ingredients to a shopping list. Unfortunately, it neglects to combine repeated ingredients, so items are listed multiple times. In the screenshot below, bananas appear three times, once for each recipe that requires them, instead of being combined into one entry.</p>
<p><a href="http://www.wholefoodsmarket.com/apps/index.php"><img class="alignnone size-full wp-image-110201" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num1_b.jpg" alt="" width="500" height="379" /></a><br />
<em><a title="Whole Foods" href="http://www.wholefoodsmarket.com/apps/index.php">Whole Foods</a> should enhance its app by merging duplicate list items.</em></p>
<p>Also, don’t provide a button for every control the user might need to accomplish their goal. Think about what the user can infer about the UI through gesture. For example, Apple’s <strong>Notes</strong> app doesn’t have an “editing” mode; instead, you simply touch the screen to bring up the keyboard, and it auto-saves when you’re done. Basic editing controls such as cut, copy and paste also appear only in response to gestures as needed (and undo is accomplished by shaking).</p>
<p><a href="http://www.apple.com/ipad/built-in-apps/notes.html"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/notes1.jpg" alt="Apple Notes" width="450" height="602" class="alignnone size-full wp-image-110614" /></a><br />
<em>The <a title="Apple Notes" href="http://www.apple.com/ipad/built-in-apps/notes.html">Notes</a> app limits on-screen buttons and presents controls only if it detects they are needed.</em></p>
<h3>Leverage What You Know To Create A Fully Personalized Experience.</h3>
<p>No one wants to spend a lot of time setting up a $1.99 app. Leverage as much of what the iPad and other websites know about your users as possible (with their permission, of course). Could you use the user’s location, calendar, Twitter feed or contacts list to make the app smarter and more personalized?</p>
<p><strong>Zite</strong> is a fabulous RSS reader for iPad that doesn’t wait for you to add sources, but rather connects to your Google Reader, Twitter or Delicious account and then presents articles based on what it has learned about your interests. I connected it with Delicious (where I store all of my bookmarks), and in five seconds it created a personalized magazine for me to explore new and interesting content! And just like Pandora, the more you use it, the more relevant and personalized the content becomes. So far, even though some argue that Flipboard’s UI is more elegant, engaging with Zite is easier because it’s all set up.</p>
<p><a href="http://zite.com/"><img class="alignnone size-full wp-image-110203" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num2_a.jpg" alt="" width="500" height="460" /></a><br />
<em><a title="Zite" href="http://zite.com/">Zite</a> sets things up immediately by connecting to an existing account.</em></p>
<p><a href="http://zite.com/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/zite.jpg" alt="Zite Top Stories" width="450" height="602" class="alignnone size-full wp-image-110604" /></a><br />
<em><a title="Zite" href="http://zite.com/">Zite</a> created my own personal magazine by learning about my interests through my Delicious account.</em></p>
<h3>Think About The Place Of Use.</h3>
<p>Assume that your user will be out and about when using your app — in a restaurant, in the car, in the kitchen, on a sofa, etc. How does that change the list of goals you’ve put together? For a user browsing recipes, are their needs different on the sofa than in the kitchen, or in a restaurant?</p>
<p><strong>Open Table</strong>’s Web app for reserving tables displays a list of restaurants as the default view for search results (i.e. without a map). On the iPad, the default view is a large map with a list of restaurants on the right, along with an option to search your vicinity. This accommodates the common use case of someone trying to find a place to eat when they are out and about.</p>
<p><a href="http://www.opentable.com/page.aspx?pageid=15"><img class="alignnone size-full wp-image-110218" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num3_a.jpg" alt="" width="500" height="372" /></a><br />
<em>When you’re out and about with the iPad, <a title="Open Table" href="http://www.opentable.com/page.aspx?pageid=15">Open Table</a> shows you what is near.</em></p>
<p><strong>Awesome Note</strong> opens with a set of default categories that reflect the various places that people might take notes on an iPad.</p>
<p><a href="http://bridworks.com/anote/en/ipad/features/index.php"><img class="alignnone size-full wp-image-110219" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num3_b.jpg" alt="" width="500" height="375" /></a><br />
<em><a title="Awesome Note" href="http://bridworks.com/anote/en/ipad/features/index.php">Awesome Note</a> complements traditional categories like “My idea” and “To-do list” with out-and-about categories like “Travel diary” and “Shopping.”</em></p>
<p><strong>GroceryIQ</strong> is a shopping list that organizes items by aisle to speed up shopping. It also allows filtering by store, which is handy.</p>
<p><a href="http://www.groceryiq.com/mobile_ipad.aspx"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/groceryIQ.jpg" alt="Grocery IQ" width="502" height="377" class="alignnone size-full wp-image-110605" /></a><br />
<em><a title="Grocery IQ" href="http://www.groceryiq.com/mobile_ipad.aspx">GroceryIQ</a> offers functionality to make your shopping trip more efficient.</em></p>
<h3>Consider Multi-User And Multi-Device Cases.</h3>
<p>Assume that multiple members of a family will be sharing an iPad or viewing the device at once. Unlike a personal computer, the iPad is not necessarily a personal device but could be treated more like a coffee-table book or magazine that multiple residents share. In addition to allowing users to switch accounts, indicating who is currently logged in is also important. An added benefit of accounts is that they facilitate syncing between devices (for example, an iPad and a smartphone).</p>
<p><strong>Flipboard</strong> is a great example of shared use through multiple accounts. When you sign in, your name is displayed on the home page.</p>
<p><a href="http://flipboard.com/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/flipboard.jpg" alt="Flipboard" width="502" height="377" class="alignnone size-full wp-image-110606" /></a><br />
<em><a title="Flipboard" href="http://flipboard.com/">Flipboard</a> makes clear that it knows who you are.</em></p>
<p><a href="http://www.fedex.com/us/mobile/iphone/ipad.html"><img class="alignnone size-full wp-image-110222" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num4_b.jpg" alt="" width="500" height="375" /></a><br />
<em>Like Flipboard, <a title="FedEx" href="http://www.fedex.com/us/mobile/iphone/ipad.html">FedEx</a> displays the name of the logged-in user (although the app’s heavy grayscale appearance is odd).</em></p>
<p><strong>eBay</strong>, on the other hand, supports accounts but provides no indication of who is signed in until you touch the “My eBay” button in the corner.</p>
<p><a href="http://mobile.ebay.com/ipad/ebay"><img class="alignnone size-full wp-image-110223" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num4_c.jpg" alt="" width="499" height="374" /></a><br />
<em><a title="eBay" href="http://mobile.ebay.com/ipad/ebay">eBay</a> doesn’t make clear who is logged in until you touch “My eBay” in the corner.</em></p>
<h3>Don’t Do Crazy Navigation Unless It’s A Game Or One-Hit Wonder.</h3>
<p>Crazy, spinny, eye-catching interactions are fine for one-hit wonders and games. But stick with standard navigation for frequently used apps, such as news readers. If you do want to do something innovative, make sure it supports the task at hand and is extremely usable.</p>
<p><strong>Martha Stewart Living</strong>, which is built on the well-designed Adobe Digital Publishing Suite, uses horizontal and vertical scrolling in a novel way by reserving horizontal scrolling for navigating between articles and vertical scrolling for navigating pages of an article. This is paired with a clever pane that visually shows how scrolling works, plus an overview of the current issue for even quicker navigation. With all that and a clickable table of contents, the whole experience is quite lovely.</p>
<p><a href="http://www.marthastewart.com/apps"><img class="alignnone size-full wp-image-110335" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num5_a1.jpg" alt="" width="499" height="375" /></a><br />
<em><a title="Martha Stewart Living" href="http://www.marthastewart.com/apps">Martha Stewart Living</a>’s overview pane shows the clever horizontal and vertical scrolling scheme for content created with the <a title="Adobe Digital Publishing Suite" href="http://www.adobe.com/solutions/digital-publishing.html">Adobe Digital Publishing Suite</a>.</em></p>
<p>The best thing you could do is actually use an iPad constantly for all kinds of things, and see what works for you. You’ll quickly discover inconsistencies and annoyances all over the app world, and you’ll figure out where to be consistent and where to branch out.</p>
<p>Here are three different methods that news readers follow to enable users to exit articles:</p>
<p><a href="http://itunes.apple.com/us/app/huffington-post-for-ipad/id376304186?mt=8"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/s1_huff.jpg" alt="Huffington Post exit" width="500" height="108" class="alignnone size-full wp-image-110607" /></a><br />
<em><a title="Huffington Post" href="http://itunes.apple.com/us/app/huffington-post-for-ipad/id376304186?mt=8">Huffington Post</a>: top right.</em></p>
<p><a href="http://www.nytimes.com/services/mobile/apps/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/s2_ny.jpg" alt="NY Times exit" width="500" height="95" class="alignnone size-full wp-image-110608" /></a><br />
<em><a title="NY Times" href="http://www.nytimes.com/services/mobile/apps/">New York Times</a>: bottom left.</em></p>
<p><a href="http://zite.com/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/s3_zite.jpg" alt="Zite exit" width="500" height="95" class="alignnone size-full wp-image-110609" /></a><br />
<em><a title="Zite" href="http://zite.com/">Zite</a>: top left.</em></p>
<p>People tend to rest their thumb near the top left when holding an iPad, so putting the button there is easiest because then people wouldn’t have to change their grip. Also, Zite enables you to click anywhere on the screen outside of the article to close it, which makes for a nice flexible gesture. Similarly, the New York Times enables you to pinch an article to close it and return to the home page, which is even better, especially because the controls disappear once an article has been open for a few seconds — although a one-finger gesture closer to the top left would have worked better, because the two-finger gesture would probably require the user to change their grip.</p>
<p>Be mindful of how you yourself use features, and notice when something is usable and when you have to move your hand awkwardly or do something that disrupts your flow. Look around to find apps that do what you’re trying to do, assess their usability, and decide whether being consistent or doing something different would make more sense. iPad apps are <strong>still a new frontier</strong>, so now is not the time to buckle down and set conventions — but we should assess whether a new idea really adds something useful or is just novel for the sake of novelty.</p>
<h3>Provide A Home Page.</h3>
<p>People are used to home pages that orient them to what’s available and that give them a base of operations. Without one, discovering and browsing content can be disorienting and frustrating. Take the <strong>NASA</strong> news app, which has no home page. Upon launching the app, users are dropped directly into a news article. To view other articles, they would use the carousel arrows on the left and right, or press the tiny list icon in the bottom-left corner of the screen. The list view allows users to browse content in a small scrolling pop-over window that has only enough room for thumbnails and short headlines. The navigation is generally unwieldy and disorienting.</p>
<p><a href="http://svs.gsfc.nasa.gov/nasaviz/"><img class="alignnone size-full wp-image-110228" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num6_a.jpg" alt="" width="500" height="375" /></a><br />
<em><a title="NASA Visualization Explorer" href="http://svs.gsfc.nasa.gov/nasaviz/">NASA</a> does not provide a home page, but rather drops you into an article with vague pop-over navigation.</em></p>
<p><strong>Pulse</strong>, on the other hand, is a great news app that uses a home page to quickly orient users and to introduce the navigation scheme, which is consistent throughout the app. From the home page, users can easily browse content, having plenty of space to view the large thumbnails and article descriptions to see what interests them. Drilling down into an article will collapse the navigation to the side so that you don’t lose context.</p>
<p><a href="http://www.pulse.me/"><img class="alignnone size-full wp-image-110229" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num6_b.jpg" alt="" width="500" height="375" /></a><br />
<em><a title="Pulse" href="http://www.pulse.me/">Pulse</a> presents a horizontal scrolling list of articles on the home page.</em></p>
<p><a href="http://www.pulse.me/"><img class="alignnone size-full wp-image-110339" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num6_c1.jpg" alt="" width="499" height="375" /></a><br />
<em>Opening an article will collapse the navigation to a side panel in landscape view.</em></p>
<p><a href="http://www.pulse.me/"><img class="alignnone size-full wp-image-110340" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num6_d1.jpg" alt="" width="500" height="670" /></a><br />
<em>In portrait view, Pulse displays the navigation for one content source at the bottom, with easy access to the next page. </em></p>
<h3>Beware Of Awkward Pop-Overs.</h3>
<p>iPad offers the nifty interaction of a pop-over to help users retrieve content and navigation in context. But the interaction can also make for a jerky flow, cramming a lot of information into a tiny peephole. Given the limited width and height of a pop-over, avoid stuffing too much in it. <strong>Awesome Note</strong> tries to cram the interaction for editing a list of folders into a small pop-over, presumably to maintain context. Instead, we get a confusing interaction, with tabs duplicated on the screen and not enough room to get things done.</p>
<p><a href="http://www.bridworks.com/anote/en/main/index.php"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/aNote.jpg" alt="Awesome Note pop-over" width="502" height="377" class="alignnone size-full wp-image-110612" /></a><br />
<em>Awesome Note has a somewhat confusing pop-over that duplicates the information on the screen in a cramped space.</em></p>
<p>NASA’s complex navigation, which we saw in the preceding point, is a similar example of a bad pop-over.</p>
<p>Consider when opening a new page would make more sense than opening a pop-over. Unless context is critical, don’t be afraid to take users to a full-screen view to give the content some room to breathe.</p>
<p>Or consider using split views in clever ways:</p>
<p><a href="http://www.houzz.com/ideabooks/137147/list/Houzz-News--Welcome-to-Our-New-iPad-App"><img class="alignnone size-full wp-image-110341" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num7_b1.jpg" alt="" width="500" height="375" /></a><br />
<em><a title="Houzz" href="http://www.houzz.com/ideabooks/137147/list/Houzz-News--Welcome-to-Our-New-iPad-App">Houzz</a> has secondary navigation for each category in a convenient split view.</em></p>
<p><a href="http://www.marthastewart.com/apps"><img class="alignnone size-full wp-image-110234" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num7_c.jpg" alt="" width="500" height="375" /></a><br />
<em>Martha Stewart Living displays the table of contents for an issue as a full-length pop-over, opening up space for images and descriptive headlines.</em></p>
<p><a href="http://flipboard.com/"><img class="alignnone size-full wp-image-110342" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num7_d1.jpg" alt="" width="449" height="599" /></a><br />
<em>Flipboard favors a slide-out panel to give the navigation enough room to do its job.</em></p>
<h3>Avoid Gratuitous Splash Screens.</h3>
<p>Remember when the Web had splash screen, and then everyone got annoyed and left? They are even more annoying on the iPad because you’re usually trying to access content while someone is waiting for either you or the iPad. If you need a splash screen because something has to load, display it for the <strong>minimum amount of time</strong> possible. Better yet, display useful content while the rest of the app loads to give users a head start on the interaction.</p>
<p><strong>Zite</strong> piques your interest by loading the first few photos on the home page while the rest of the app loads. When the app is ready, those initial photos animate into place, making for a delightful little welcome interaction.</p>
<p><a href="http://www.zite.com"><img class="alignnone size-full wp-image-110343" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num81.jpg" alt="" width="500" height="326" /></a><br />
<em>Zite draws you in on the splash screen, with thumbnails of articles that will be ready once the full app loads.</em></p>
<h3>Use Gestures In Clever Ways, But Don’t Overdo It.</h3>
<p>Cool, useful gestures are a mainstay of iPad use. But the line between effective gestures and gesture overload is fine. For example, don’t provide a swipeable carousel and then also allow a generic swipe gesture on the same screen, because this would put competing swipe gestures at odds with each other.</p>
<p>And if a gesture is not obvious, give users a hint.</p>
<p><a href="http://www.zite.com"><img class="alignnone size-full wp-image-110344" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num9_a1.jpg" alt="" width="500" height="375" /></a><br />
<em>Zite indicates more content with a cute little “swipe” text at the bottom.</em></p>
<p><strong>Discovr</strong>, a music-discovery application, integrates information about gesture controls right into the UI. The red circle in the screenshot below says “Tap me,” leading to information on how to expand nodes.</p>
<p><a href="http://discovr.info/"><img class="alignnone size-full wp-image-110240" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num9_c.jpg" alt="" width="499" height="386" /></a><br />
<em><a title="Discovr" href="http://discovr.info/">Discovr</a> educates users with a red dot explaining the gesture options for the current screen.</em></p>
<p><a href="http://discovr.info/"><img class="alignnone size-full wp-image-110241" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num9_d.jpg" alt="" width="500" height="388" /></a><br />
<em>Once basic information has been provided, another red node appears saying “Tap and hold me,” informing users how to access more content with a new gesture. With this information baked into the app experience itself, users learn about powerful features of the UI without having to be psychic.</em></p>
<h3>Make Clear What’s Touchable, And Make It BIG.</h3>
<p>Many apps suffer from what Jakob Nielsen calls “read-tap asymmetry,” whereby the font may be legible in size, but the tappable areas are so small that users are prone to missing the targets or are unsure whether the areas are even tappable. In the advertisement below, from the <strong>Martha Stewart Living</strong> app, the arrowed questions in the middle of the screen are tappable, but you wouldn’t know it because they have no affordance. If you’re going to go through the trouble of making more content available, then make it clear where to tap, and make the tappable area nice and big.</p>
<p><a href="http://www.marthastewart.com/apps"><img class="alignnone size-full wp-image-110345" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num10_a1.jpg" alt="" width="500" height="376" /></a><br />
<em>It’s not obvious where you would tap in this ad to get more information.</em></p>
<p><a href="http://www.marthastewart.com/apps"><img class="alignnone size-full wp-image-110346" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num10_b1.jpg" alt="" width="500" height="376" /></a><br />
<em>It turns out that tapping the light-gray boxes in the middle shows more information.</em></p>
<p>The image areas at the top of the <strong>Cool Hunting</strong> application are actually swipeable galleries, but we get no hint of it. What if there was some kind of affordance, such as dimensionality or a peek at another image to indicate there was more to the right?</p>
<p><a href="http://www.coolhunting.com/tech/cool-hunting-ip.php"><img class="alignnone size-full wp-image-110347" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num10_c1.jpg" alt="" width="500" height="374" /></a><br />
<em><a title="Cool Hunting" href="http://www.coolhunting.com/tech/cool-hunting-ip.php">Cool Hunting</a> does not indicate that swiping the top image would reveal more images, which makes this functionality hard to discover.</em></p>
<p>In <strong>iOS</strong> itself, double-tapping the home key and then swiping left in the multitasking bar reveals a bunch of controls for sound and music, yet this functionality is pretty well hidden. Why not provide some affordance of what is available?</p>
<p><a href="http://www.apple.com/ipad/ios/"><img class="alignnone size-full wp-image-110348" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/num10_d1.jpg" alt="" width="500" height="150" /></a><br />
<em>Double-tapping home and then swiping left on an <a title="iPad iOS" href="http://www.apple.com/ipad/ios/">iPad</a> reveals hidden functionality.</em></p>
<h3>What Else?</h3>
<p>These are just 10 of the many things to consider when designing your iPad app, but it’s a good place to start. We’d love to hear your top considerations and examples in the comments. We especially lack a strong repository on the Web of examples of good and bad iPad app design. Please share examples of the different ways that apps treat the same functionality (such as exiting articles), and explain why certain solutions are better than others. <strong>Have you discovered other techniques</strong> through your own design work that you think everyone should put on their list of do’s and don’ts? Let us know.</p>
<h4>Further Reading</h4>
<ul>
<li>“<a href="http://www.useit.com/alertbox/ipad-1st-study.html">iPad Usability: First Findings From User Testing</a>,” Jakob Nielsen</li>
<li>“<a href="http://www.useit.com/alertbox/ipad.html">iPad Usability: Year One</a>,” Jakob Nielsen</li>
<li>“<a href="http://www.informationarchitects.jp/en/designing-for-ipad-reality-check/">Design for iPad: Reality Check</a>,” Oliver Reichenstein</li>
<li>“<a href="http://powazek.com/posts/2583">Thoughts on Designing for iPad</a>,” Derek Powazek</li>
<li>“<a href="http://www.lukew.com/ff/entry.asp?1071">Touch Gesture Reference Guide</a>,” Luke Wroblewski</li>
<li>“<a href="http://www.smashingmagazine.com/2010/04/16/design-tips-for-your-ipad-app/">Useful Design Tips for Your iPad</a>,” Jen Gordon</li>
</ul>
<p><em>(Cover image: <a href="http://www.flickr.com/photos/johanl/4996940370/sizes/l/in/photostream/" title="Johan Larsson">Johan Larsson</a>)</em></p>
<p><em>(al)</em></p>
<hr />
<p>© Julie Stanford for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/ten-things-to-think-about-when-designing-your-ipad-app/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Desktop Wallpaper Calendar: February 2012</title>
		<link>http://webreweries.com/desktop-wallpaper-calendar-february-2012/</link>
		<comments>http://webreweries.com/desktop-wallpaper-calendar-february-2012/#comments</comments>
		<pubDate>Wed, 01 Feb 2012 12:34:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/desktop-wallpaper-calendar-february-2012/</guid>
		<description><![CDATA[&#160;&#160; We always try our best to challenge your artistic abilities and produce some interesting, beautiful and creative artwork. And as designers we usually turn to different sources of inspiration. As a matter of fact, we’ve discovered the best one — desktop wallpapers that are a little more distinctive than the usual crowd. This creativity [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>We always try our best to challenge your artistic abilities and produce some interesting, beautiful and creative artwork. And as designers we usually turn to different sources of inspiration. As a matter of fact, we’ve discovered the best one — desktop wallpapers that are a little more distinctive than the usual crowd. This creativity mission has been going on for over two years now, and we are very thankful to all designers who have contributed and are still diligently contributing each month.</p>
<p>We continue to nourish you with a monthly spoon of inspiration. This post features <strong>free desktop wallpapers</strong> created by artists across the globe for January 2012. Both versions with a calendar and without a calendar can be downloaded for free. It’s time to freshen up your wallpaper!</p>
<p>Please note that:</p>
<ul>
<li>All <strong>images can be clicked on</strong> and lead to the preview of the wallpaper,</li>
<li>You can <a href="http://www.smashingmagazine.com/2008/03/19/desktop-wallpaper-calendar-join-in/">feature your work in our magazine</a> by taking part in our Desktop Wallpaper Calendar series. We are regularly looking for creative designers and artists to be featured on Smashing Magazine. Are you one of them?</li>
</ul>
<h3>Colored Edge</h3>
<p>&quot;For February, the month of spring, love and 29 days.&quot; Designed by <a href="http://www.behance.net/rahulgreen">Rahul.s</a> from India.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/colored_edge__15.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/colored_edge__15.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/colored_edge__15.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1280x960.jpg">1280&times;960</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1440x1050.jpg">1440&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-calendar-1920x1440.jpg">1920&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-nocal-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-nocal-1680x1200.jpg">1680&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-colored_edge__15-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Hungry Owl</h3>
<p>&quot;February, just one more cold month.. <img src='http://webreweries.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .&quot; Designed by <a href="http://www.phpfaber.com.ua/portfolio">Katerina Bobkova</a> from Ukraine.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/hungry_owl__82.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/hungry_owl__82.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/hungry_owl__82.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-calendar-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-calendar-1920x1080.jpg">1920&times;1080</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-nocal-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hungry_owl__82-nocal-1920x1080.jpg">1920&times;1080</a></li>
</ul>
<h3>Hot Drinks</h3>
<p>&quot;Which drink will you choose to make you feel better during the cold season?&quot; Designed by <a href="http://cargocollective.com/agathealtwegg">Agathe Altwegg</a> from France.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/hot_drinks__23.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/hot_drinks__23.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/hot_drinks__23.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-calendar-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-calendar-1680x1200.jpg">1680&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-nocal-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-hot_drinks__23-nocal-1680x1200.jpg">1680&times;1200</a></li>
</ul>
<h3>Bold</h3>
<p>Designed by <a href="http://www.elisabettaborseti.com">Elisabetta Borseti</a> from Italy.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/bebold__29.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/bebold__29.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/bebold__29.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-calendar-1920x1080.jpg">1920&times;1080</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-bebold__29-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>February Prison Break</h3>
<p>&quot;We suggest &#8211; do not mess with February.&quot; Designed by <a href="http://www.riocreativo.pl">Marek Guziсski From Rio Creativo</a> from Poland.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/february_prison_break__63.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/february_prison_break__63.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/february_prison_break__63.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-calendar-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-calendar-2540x1440.jpg">2540&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-nocal-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-nocal-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_prison_break__63-nocal-2540x1440.jpg">2540&times;1440</a></li>
</ul>
<h3>All You Need Is Love</h3>
<p>&quot;Love is all you need.&quot; Designed by <a href="http://www.efumodesign.com">Kaspars Dedzis</a> from Latvia.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/all_you_need_is_love__46.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/all_you_need_is_love__46.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/all_you_need_is_love__46.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-calendar-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-nocal-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-nocal-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need_is_love__46-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>February Splashes</h3>
<p>Designed by <a href="http://blog.szaboka.hu">Roland Szabу</a> from Hungary.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/february_splashes__88.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/february_splashes__88.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/february_splashes__88.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_splashes__88-calendar-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_splashes__88-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_splashes__88-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_splashes__88-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-february_splashes__88-calendar-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Penguin Hockey</h3>
<p>&quot;No coward plays hockey!&quot; Designed by <a href="http://www.cheloveche.ru">Cheloveche.ru</a> from Russia.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/penguin_hockey__73.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/penguin_hockey__73.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/penguin_hockey__73.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-penguin_hockey__73-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Mr. &#038; Ms. Nice</h3>
<p>Designed by <a href="http://www.dimorgado.com">Diana Morgado</a> from Portugal.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/valentine_nice__44.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/valentine_nice__44.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/valentine_nice__44.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-valentine_nice__44-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>Jealous Much?</h3>
<p>&quot;Calendar for February 2012.&quot; Designed by <a href="http://www.beibayproductions.com">Annabelle Bay</a> from USA.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/jealous_much__33.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/jealous_much__33.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/jealous_much__33.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-calendar-320x240.jpg">320&times;240</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-nocal-320x240.jpg">320&times;240</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-jealous_much__33-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Heartbroken</h3>
<p>&quot;Illustrated wallpaper for february on the theme of heartbreak.1920 x 1200.&quot; Designed by <a href="http://www.heroinefix.com">Danae Botha</a> from South Africa.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/heartbroken__59.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/heartbroken__59.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/heartbroken__59.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-800x480.jpg">800&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1152x864.jpg">1152&times;864</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1440x1050.jpg">1440&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1680x1200.jpg">1680&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-1920x1440.jpg">1920&times;1440</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-800x480.jpg">800&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1152x864.jpg">1152&times;864</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1280x960.jpg">1280&times;960</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1440x1050.jpg">1440&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1680x1200.jpg">1680&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-1920x1440.jpg">1920&times;1440</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heartbroken__59-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>The Shortest Month</h3>
<p>Designed by <a href="http://forsakenville.free.fr">Forsaken</a> from France.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/the_shortest_month__26.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/the_shortest_month__26.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/the_shortest_month__26.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-calendar-1400x1050.jpg">1400&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-calendar-1920x1080.jpg">1920&times;1080</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-nocal-1400x1050.jpg">1400&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-the_shortest_month__26-nocal-1920x1080.jpg">1920&times;1080</a></li>
</ul>
<h3>Kids And Dragon</h3>
<p>&quot;My drawings are mostly black-and-white and the year of the Black Dragon inspired me to start drawing another picture. Let the Dragon this year be friendly and playful <img src='http://webreweries.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> .&quot; Designed by <a href="http://www.artilinki.com/en/space/show/my-fairy-tales">Jelena Tљekulajeva</a> from Estonia.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/kids_and__dragon.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/kids_and__dragon.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/kids_and__dragon.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-calendar-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-calendar-1920x1080.jpg">1920&times;1080</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-nocal-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-kids_and__dragon-nocal-1920x1080.jpg">1920&times;1080</a></li>
</ul>
<h3>Heart On A String</h3>
<p>&quot;For hopeless romantics that let others play with their heart.&quot; Designed by <a href="http://jtotheg22.deviantart.com">Jacob Giesler</a> from USA.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/heart_on_a_string__55.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/heart_on_a_string__55.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/heart_on_a_string__55.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-nocal-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-heart_on_a_string__55-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>A Shadow&#8217;s Chance</h3>
<p>&quot;A nod at Groundhog Day! The artwork provided with a calendar has a 	winter color, because the groundhog sees his shadow which means six more weeksof winter. And the other (Green) has no Calendar and no Shadow which denotes anearly spring.&quot; Designed by <a href="http://www.visioneerstudio.net">Joseph Brooks</a> from United States.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/ashadows_chance__31.jpg"><img width="500" height="281" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/ashadows_chance__31.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/ashadows_chance__31.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ashadows_chance__31-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>Be Mine</h3>
<p>&quot;A cutsie calendar theme.&quot; Designed by <a href="http://www.popupfactory.com">Sandi | Pop Up Factory.com</a> from Toronto, ON,  Canada.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/be_mine__4.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/be_mine__4.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/be_mine__4.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-calendar-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-calendar-1680x1050.jpg">1680&times;1050</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-nocal-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-be_mine__4-nocal-1680x1050.jpg">1680&times;1050</a></li>
</ul>
<h3>It&#8217;s The Love Signal</h3>
<p>&quot;Let&#8217;s beam our love to the universe!&quot; Designed by <a href="http://www.morningmobi.com">Lew Su-ann</a> from Brunei Darussalam.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/love_signal__65.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/love_signal__65.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/love_signal__65.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1152x864.jpg">1152&times;864</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1280x960.jpg">1280&times;960</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1400x1050.jpg">1400&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1152x864.jpg">1152&times;864</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1280x960.jpg">1280&times;960</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1400x1050.jpg">1400&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_signal__65-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Winter Church</h3>
<p>Designed by <a href="http://www.pietjeprecies.nl">Pietje Precies</a> from The Netherlands.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/winter_church__23.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/winter_church__23.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/winter_church__23.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-calendar-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-nocal-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-winter_church__23-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Lock Your Love</h3>
<p>&quot;February is the month of couples and love, so if you do have that one special person in your life! Then this would be the prefect month to show how much you love her or him <img src='http://webreweries.com/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> .&quot; Designed by <a href="http://www.lovelock.us">Rihards Gromuls</a> from Latvia.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/lock_your_love__2.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/lock_your_love__2.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/lock_your_love__2.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-lock_your_love__2-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Cyclops Encounter</h3>
<p>&quot;I am a big fan of the Odyssey. Cyclopses are awesome.&quot; Designed by <a href="http://www.glorm.com">Glorm</a> from Canada.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/cyclops_encounter__63.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/cyclops_encounter__63.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/cyclops_encounter__63.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-calendar-1400x900.jpg">1400&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-nocal-1400x900.jpg">1400&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-cyclops_encounter__63-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Gloomy Light</h3>
<p>&quot;Sometimes we ever feel&#8217;s like useless, moody, gloomy, that&#8217;s so sadly. Maybe it just like an old gloomy paper effect on my calendar template. But, we can change it with give it colors, this year our life will be not far from heaviness like our years before, just bright it up and make a colors in your moody days!&quot; Designed by <a href="http://tikatea.tumblr.com/">Dwi Prastika</a> from Indonesia.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/gloomy_light__95.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/gloomy_light__95.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/gloomy_light__95.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-gloomy_light__95-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>Chillout</h3>
<p>&quot;Once upon a time, in a land far, far away, where you will not be online&#8230;&quot; Designed by <a href="http://chilid.pl">Chilid Interactive Agency</a> from Poland.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/chillout__59.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/chillout__59.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/chillout__59.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-calendar-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-nocal-1366x768.jpg">1366&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-chillout__59-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>All You Need Is Love</h3>
<p>&quot;The Beatles said it best! Love is all you need.&quot; Designed by <a href="http://www.allisonmbrown.com">Allison Brown</a> from Canada.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/all_you_need__16.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/all_you_need__16.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/all_you_need__16.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-calendar-1920x1080.jpg">1920&times;1080</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-all_you_need__16-nocal-1920x1080.jpg">1920&times;1080</a></li>
</ul>
<h3>Fight For You</h3>
<p>&quot;This valentine we should fight for the ones we love.&quot; Designed by Tonie Tannous from Lebanon.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/fight_for_u__63.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/fight_for_u__63.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/fight_for_u__63.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-nocal-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-fight_for_u__63-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>Ice Melted</h3>
<p>&quot;Ice melted is coming back soon.&quot; Designed by <a href="http://www.yank.fr">Yank</a> from France.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/ice_melted__42.jpg"><img width="500" height="375" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/ice_melted__42.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/ice_melted__42.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-calendar-640x480.jpg">640&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-calendar-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-calendar-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-calendar-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-nocal-640x480.jpg">640&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-nocal-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-nocal-1280x1024.jpg">1280&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-nocal-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-ice_melted__42-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Load Time</h3>
<p>&quot;What Scott Adams means about load time.&quot; Designed by <a href="http://www.fredrikjensen.com">Fredrik Jensen</a> from Norway.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/load_time__88.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/load_time__88.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/load_time__88.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-640x480.jpg">640&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-800x480.jpg">800&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1152x864.jpg">1152&times;864</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1280x960.jpg">1280&times;960</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1600x1200.jpg">1600&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1680x1200.jpg">1680&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-1920x1440.jpg">1920&times;1440</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-calendar-2560x1440.jpg">2560&times;1440</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-320x480.jpg">320&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-640x480.jpg">640&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-800x480.jpg">800&times;480</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-800x600.jpg">800&times;600</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1024x768.jpg">1024&times;768</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1152x864.jpg">1152&times;864</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1280x800.jpg">1280&times;800</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1280x960.jpg">1280&times;960</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1440x900.jpg">1440&times;900</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1680x1200.jpg">1680&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1920x1200.jpg">1920&times;1200</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-1920x1440.jpg">1920&times;1440</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-load_time__88-nocal-2560x1440.jpg">2560&times;1440</a></li>
</ul>
<h3>Love Is In The Air</h3>
<p>Designed by <a href="http://www.breez.gr">Andreas Sofantzis</a> from Greece.</p>
<p><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/love_is_in_the_air__81.jpg"><img width="500" height="312" alt="Smashing Wallpaper - february 12" src="http://files.smashingmagazine.com/wallpapers/february-12/images/love_is_in_the_air__81.jpg" /></a></p>
<ul>
<li><a href="http://files.smashingmagazine.com/wallpapers/february-12/images/full/love_is_in_the_air__81.jpg">preview</a></li>
<li>with calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-calendar-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-calendar-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-calendar-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-calendar-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-calendar-1920x1200.jpg">1920&times;1200</a></li>
<li>without calendar:  <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-nocal-1024x1024.jpg">1024&times;1024</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-nocal-1280x720.jpg">1280&times;720</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-nocal-1680x1050.jpg">1680&times;1050</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-nocal-1920x1080.jpg">1920&times;1080</a>, <a href="http://files.smashingmagazine.com/wallpapers/february-12/february-12-love_is_in_the_air__81-nocal-1920x1200.jpg">1920&times;1200</a></li>
</ul>
<h3>Join In Next Month!</h3>
<p>Please note that we respect and carefully consider the ideas and motivation behind each and every artist’s work. This is why we give all artists the <strong>full freedom to explore their creativity</strong> and express emotions and experience throughout their works. This is also why the themes of the wallpapers weren’t anyhow influenced by us, but rather designed from scratch by the artists themselves.</p>
<p>A big thank you to all designers for their participation. <a href="http://www.smashingmagazine.com/2008/03/19/desktop-wallpaper-calendar-join-in/">Join in next month</a>!</p>
<h4>What’s Your Favourite?</h4>
<p>What’s your favorite theme or wallpaper for this month? Please let us know in the comment section below! We are looking forward to your submissions next month!</p>
<p><em>(il) (vf)</em></p>
<hr />
<p>© Smashing Editorial Team for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/desktop-wallpaper-calendar-february-2012/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Future Of Screen Typography Is In Your Hands</title>
		<link>http://webreweries.com/the-future-of-screen-typography-is-in-your-hands/</link>
		<comments>http://webreweries.com/the-future-of-screen-typography-is-in-your-hands/#comments</comments>
		<pubDate>Tue, 31 Jan 2012 12:34:24 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/the-future-of-screen-typography-is-in-your-hands/</guid>
		<description><![CDATA[&#160;&#160; We do more reading on the screen today than we did even a year ago. If we are ever to have a golden age of reading on the screen, this might be the start of it. Tablets, Nooks and Kindles make buying a book or magazine for the screen almost unavoidable. With smartphones, we [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>We do more reading on the screen today than we did even a year ago. If we are ever to have a golden age of reading on the screen, this might be the start of it.</p>
<p>Tablets, Nooks and Kindles make buying a book or magazine for the screen almost unavoidable. With smartphones, we carry our reading material with us and enjoy instant Web access, enabling the reading experience to flow smoothly from one device to another. And those devices probably have stunning HD reader-friendly screens. Throw in companion services like Readmill and 24symbols, which allow us to share our reading experiences, and we have perfect screen-based access to all aspects of the written word.</p>
<p>So, why isn&#8217;t Web and screen typography keeping up?</p>
<h3>Good Typography Cannot Be Handcrafted Anymore</h3>
<p>In the past, typography was viewed as living only when it reached paper. Once a publication was edited, typeset and printed, it was done. Nothing changed after that. Good typography and readability were the result of skilled typesetters and designers.</p>
<p>Today, typography exists not only on paper but on a multitude of screens. It is subject to many unknown and fluctuating parameters, such as operating system, system fonts, the device and screen itself, the viewport and more. Our experience of typography today changes based on how the page is rendered, because typesetting happens in the browser.</p>
<p>In all of this, the browser is probably the most important part of the screen typography equation. Ironically, the lack of support in modern browsers is the single biggest hurdle to good Web typography.</p>
<p>Type-as-service providers are offering an alternative, with an increasing number of fonts that are fairly cheap and easy for us designers to use when typesetting text. But they, too, want better support of Web typography.</p>
<h4>Identifying What&#8217;s Missing</h4>
<p>Let&#8217;s look at some of the basic things that are missing from most, if not all, screen-reading experiences. When we say basic, we mean the things that you read and benefit from whenever you look at a book or magazine on paper or screen.</p>
<ul>
<li>Kerning and spacing of individual characters;</li>
<li>Basic ligatures (fi, fl)</li>
<li>Other ligatures (fj, ffi, ffl, ffj and more);</li>
<li>Lining and old-style numerals;</li>
<li>True small-caps;</li>
<li>Replacing uppercase with small-caps for abbreviations;</li>
<li>Superscripted symbols such as © and ™;</li>
<li>Language-based quotation marks;</li>
<li>Correct replacement of en and em dashes, and the spacing around them;</li>
<li>Spacing of ! ( ) [ ] / ; :.</li>
</ul>
<p>Doesn&#8217;t seem like much. Except that it is. The elements in this list are some of the things that help us read, process and understand information. They represent in many ways the difference between how a soulless machine would relate to text and how thinking, organic humans do it.</p>
<p>Those of you who were around during the desktop publishing boom might see similarities. In 1999, QuarkXPress did not support OpenType, InDesign was just born, and you had to use “expert” cuts of fonts to be able to work with small-caps and old-style numerals. So, we had to create workarounds for micro-typography — such as Apple-Script frameworks for QuarkXPress, where the script traversed documents and isolated hyphens, dashes, ligatures and small-caps abbreviations, replacing them with the correct typographical equivalents.</p>
<p>In many ways, 2012 is the new 1999. We have the freedom to work with any font we like via the @font-face selector. But our main tool, the browser, does not have any OpenType features to speak of. We have to create workarounds.</p>
<p>Can we use the same type of solution that we used back in the old days of print?</p>
<p>We say yes.</p>
<h4>Time to Fix the Problem</h4>
<p>We researched existing JavaScript libraries and found a ton of great stuff. But none focused on micro-typography as a whole. When we started the project, we laid out five clear goals:</p>
<ul>
<li>Correct micro-typography, including as many of the elements in the list above as possible;</li>
<li>Degrades so that devices without @font-face or JavaScript support are not negatively affected;</li>
<li>OS independence;</li>
<li>Browser independence;</li>
<li>Correct markup;</li>
</ul>
<p>We named the project <a href="http://opentypography.org/">OpenTypography</a>, and we named the solution Typesetter.js.</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/degrading_1.gif" alt="" width="500" /></p>
<p><em>JavaScript and @font-face and styles disabled.</em></p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/degrading_2.gif" alt="" width="500" /></p>
<p><em>JavaScript disabled.</em></p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/degrading_3.gif" alt="" width="500" /></p>
<p><em>JavaScript enabled and @font-face-enhanced Web typography.</em></p>
<h3>Typesetter.js</h3>
<p>Typesetter.js has two ingredients: a JavaScript and a custom font file</p>
<p>The JavaScript traverses the DOM, finding and replacing things like quotation marks, ligatures, en and em dashes, ellipses and more. It also finds ©, ®, ™ and wraps them in <code>sup</code> tags.</p>
<p>Most importantly, it finds uppercase abbreviations and wraps them in <code>abbr</code> tags, giving us true small-caps. This is possible thanks to a bit of CSS and the services of font-on-demand houses such as Fontdeck and Typekit.</p>
<p><img style="border: 1px solid #CCC" src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/dom_traverse.gif" alt="" width="500" height="356" /></p>
<p><em>Finding, replacing and wrapping.</em></p>
<p>Here is a rundown of how Typesetter.js works.</p>
<h3>1. The JavaScript</h3>
<p>The code is divided into two parts, giving you the option to use the small-caps replacement. But let&#8217;s start by looking at how the small-caps replacement works.</p>
<p>Here is the sample HTML that we will use to explain what the script actually does:</p>
<pre>&lt;p class="typo"&gt;The fine details of screen typography can be improved with JS-scripts and CSS.&lt;/p&gt;

&lt;p class="typo"&gt;That is the goal of "Typesetter.js" — an open-source solution by Andreas Carlsson and Jaan Orvet © 2011&lt;/p&gt;</pre>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/example_default.gif" alt="" width="500" /></p>
<p><em>Our sample text rendered with Georgia and browser-native typographic features.</em></p>
<p>In this text, we want to find all-uppercase words.</p>
<p>The code starts by getting all elements of a user-chosen class, in this case <code>.typo</code>. These elements are stored in an array.</p>
<pre>mainArray[0] = 'The fine details of screen typography can be improved with JS-scripts and CSS.';
mainArray[1] = 'That is the goal of "Typesetter.js" — an open-source solution by Andreas Carlsson and Jaan Orvet © 2011';</pre>
<p>Each array element is then looped one at a time and split into a sub-array containing each word as a string.</p>
<pre>subArray[0] = 'The';
subArray[1] = 'fine';
subArray[2] = 'details';
subArray[3] = 'of';
subArray[4] = 'screen';
subArray[5] = 'typography';
subArray[6] = 'can';
subArray[7] = 'be';
subArray[8] = 'improved';
subArray[9] = 'with';
subArray[10] = 'JS-scripts';
subArray[11] = 'and';
subArray[12] = 'CSS.';</pre>
<p>Each item in the sub-array is tested to see whether the character count of the word and the count of the uppercase letters (ASCII values between 65 and 90) are equal. If so, the word is treated as an uppercase abbreviation.</p>
<p>The test actually checks the first and last character of the sub-array item. If they are uppercase, then it is fair to assume that the whole word is an uppercase abbreviation, and then we would run a more specific test. Here is what the script returns from our sample text:</p>
<ul>
<li>“The” = <code>false</code> (do not run specific test)</li>
<li>“details” = <code>false</code> (do not run specific test)</li>
<li>“Andreas” = <code>false</code> (do not run specific test)</li>
<li>“CSS.” = <code>true</code> (run specific test)</li>
<li>“JS-scripts” = <code>true</code> (run specific test)</li>
</ul>
<p>As you can see, the test also spots uppercase words when they are used with a hyphen or have an trailing period.</p>
<p>Our special uppercase test creates an index array that holds the indexes of the uppercase words (i.e. it identifies where in the full sentence they occur). After the whole sub-array is tested, we would have the sub-array and the index array containing the all-uppercase indexes.</p>
<pre>indexArray[0] = '10';
indexArray[1] = '12';</pre>
<p>Now that we know where all of the uppercase words are in the string (i.e. sentence), we can prepare them for small-caps replacement.</p>
<p>Small-caps replacement is done by extracting the word, converting the letters to lowercase, wrapping the whole word in an <code>abbr</code> tag and inserting it into the sub-array again.</p>
<pre>subArray[0] = 'The';
subArray[1] = 'fine';
subArray[2] = 'details';
subArray[3] = 'of';
subArray[4] = 'screen';
subArray[5] = 'typography';
subArray[6] = 'can';
subArray[7] = 'be';
subArray[8] = 'improved';
subArray[9] = 'with';
subArray[10] = '<abbr>js</abbr>-scripts';
subArray[11] = 'and';
subArray[12] = '<abbr>css</abbr>.';</pre>
<p>Now we only need to convert that array into a string and replace the original HTML element with the new small-caps-ified HTML element.</p>
<p><strong>Before:</strong></p>
<pre>&lt;p class="typo"&gt;The fine details of screen typography can be improved with JS-scripts and CSS.&lt;/p&gt;

&lt;p class="typo"&gt;That is the goal of "Typesetter.js" — an open-source solution by Andreas Carlsson and Jaan Orvet © 2011&lt;/p&gt;</pre>
<p><strong>After:</strong></p>
<pre>&lt;p class="typo"&gt;The fine details of screen typography can be improved with <abbr>js</abbr>-scripts and <abbr>css</abbr>.&lt;/p&gt;

&lt;p class="typo"&gt;That is the goal of "Typesetter.js" — an open-source solution by Andreas Carlsson and Jaan Orvet © 2011&lt;/p&gt;</pre>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/example_smallcaps_replaced.gif" alt="" width="500" /></p>
<p><em>Our sample text set with Tanger Serif from Typolar, using the @font-face rule. Uppercase words are now wrapped in <code>abbr</code> tags.</em></p>
<p>Nice and neat. Now for the second part of the script, the one that replaces quotation marks, ligatures, en and em dashes, and ellipses; renders characters such as © in superscript; and converts numerals to old style by wrapping them in a user-defined class.</p>
<p>The code is fairly self-explanatory:</p>
<pre>var charReplacements = function() {

/* Quotationmarks
‹ = ‹
› = ›
« = «
» = »
‘ = ‘
’ = ’
“ = “
” = ”
*/

var quoteCharClose = "»";
var quoteCharOpen = "«";
var triggerID = "#display";
var smallcapsClass = "old-style"

$(triggerID).each(function() {
$(this).find('*').each(function() {
	if (($(this).html()) != 0) {
		if (($(this).find('img').length) === 0) {
		// Performs replaces on any element that is not an</pre>
<p><img alt="" /></p>
<pre>	  	$(this).html( $(this).html().replace(/(\.\.\.(\.)?)|(\.\s\.\s(\.\s)?|(\.\.(\.)?))/g, "…"));
		// Finds and replaces .. | ... | .... with an elipsis

		$(this).html( $(this).html().replace(/fl/g, "ﬂ"));
		// Replaces fl with ligature

		$(this).html( $(this).html().replace(/fi/g, "ﬁ"));
		// Replaces fi with ligature

		$(this).html( $(this).html().replace(/\s-\s/g, " ‒ "));
		// Replaces | space en-dash space | with: | space em-dash space |

    		$(this).html( $(this).html().replace(/"([\s\.\,])/g, quoteCharClose + "$1"));
		// Replaces | " space | with | » space |

		$(this).html( $(this).html().replace(/\s"/g, " " +  quoteCharOpen));
		// Replaces | space " | with | space « |

		$(this).html( $(this).html().replace(/(\d+)(?=((?!).)*(-tag with the .old-style-class but ignores digits within a a-tag. Read full explanation here http://www.phpbuilder.com/board/archive/index.php/t-10221442.html

		if ( (($(this).children().length) === 0) || ($('this:contains("u00a9")')) ) {

			$(this).html( $(this).html().replace(/\u00a9/g, "</pre>
<p><sup>©</sup></p>
<pre>") );
			// Superscripts (c)

			$(this).html( $(this).html().replace(/\u00ae/g, "</pre>
<p><sup>®</sup></p>
<pre>") );
			// Superscripts (R)
		};
	};
   };

});
});
};</pre>
<p>Most of the typographic details in the script are declared in the variables at the beginning. This is the beginning of a “settings” type of solution that we are working towards building.</p>
<p>”Settings” is a pretty important feature because typographic rules change depending on the language; for example, quotation marks and the spacing of em dashes. English, French and German each use different quotation marks, so the designer needs to be able to easily change the typographic settings.</p>
<p>Now we have pretty decent typography in our example:</p>
<pre>&lt;p class="typo"&gt;The fine details of screen typography can be improved with <abbr>js</abbr>-scripts and <abbr>css</abbr>.&lt;/p&gt;

&lt;p class="typo"&gt;That is the goal of «Typesetter.js» — an open-source solution by Andreas Carlsson and Jaan Orvet</pre>
<p><sup>©</sup></p>
<pre> <span>2011</span>&lt;/p&gt;</pre>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/example_complete.gif" alt="" width="500" height="133" /></p>
<p><em>Our sample text with much better micro-typography than what the browser supports natively.</em></p>
<p>We have covered a lot, but the most important part is still to come!</p>
<h3>2. The Custom Font File</h3>
<p>Let&#8217;s move on to the font file itself.</p>
<h4>Putting Small-Caps and Old-Style Numerals in Place</h4>
<p>Our text is now wrapped in classes; we can use CSS to set it in small-caps and old-style numerals. Since no browser supports OpenType, we cannot use the regular <code>font-variant: small-caps</code> rule, because this would only shrink the uppercase letters, resulting in thinner and lighter characters.</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/fake_smallcaps.gif" alt="" width="500" /></p>
<p><em>The <code>font-variant: small-caps</code> rule merely shrinks uppercase letters, resulting in thinner and lighter characters. To get real small-caps, we have to use our custom subsetted font file.</em></p>
<p>The font file we need is a subset of the regular cut; in it, the uppercase characters have been replaced with small-caps characters, and the lining numerals have been replaced with old-style numerals. (Remember the days of “expert set fonts”? It’s a bit like that. If you don’t remember, you’re better off for it.)</p>
<p>We can now specify in our CSS files to use the subset for <code>abbr</code> tags. This will give us true small-caps on the Web and allow us to choose between old-style and lining numerals in our text.</p>
<pre>abbr {
   font-family: "Tanger Serif Expert", Cambria, Georgia, serif;
   letter-spacing: 0.15em;
   text-transform: lowercase;
   font-variant: small-caps;
   font-weight: 650;
}</pre>
<h4>Get the Font File</h4>
<p><a href="http://www.fontdeck.com">Fontdeck</a> supports the OpenTypography project by kindly serving subsetted fonts in addition to its main fonts.</p>
<p>Other type services and foundries make subsets available as well. We keep an updated list with examples at <a href="http://opentypography.org/">OpenTypography</a>.</p>
<h4>Create Your Own Font File</h4>
<p>If you have experience working with fonts, then creating your own subsetted font files is fairly straightforward.</p>
<p>Open the regular cut in your favorite font editor. Copy the small-caps glyphs, and paste them where the uppercase and lowercase glyphs are. Copy the old-style numerals to where the lining numerals are. Once this is done, you only have to generate a new font file and convert it to all the required Web font formats: TTF, OTF, WOFF, EOT, SVG.</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2011/12/replace_uppercase.gif" alt="" width="500" /></p>
<p><em>You can easily create your own subsetted custom font file. Just replace uppercase and lowercase glyphs with the small-caps versions and the lining numerals with the old-style ones.</em></p>
<p>Now you have your own custom Web font ready to be used with Typesetter.js</p>
<p>But be sure to check the license to make sure you are permitted to adjust the font file and to embed it via the @font-face selector.</p>
<h3>Get Involved In The Future Of Typesetter.js</h3>
<p>We are currently testing Typesetter.js in our Dropbox- and Markdown-based CMS, <a href="http://www.skrivr.com">Skrivr</a>, but Typesetter.js is at a very early stage and needs more development in order to work seamlessly with all of the great things that the Web and digital-screen community is creating.</p>
<p>Mainly, we want it to be faster. Another question we’re facing is whether to use RegEx or not. Also, how do we create a better solution for targeting parts of the DOM and isolating those that shouldn’t be replaced?</p>
<p>You’ll find all the latest information, examples, code and more at <a href="http://opentypography.org">OpenTypography</a>, which is also the best place to get in touch and let us know if you are interested in bringing better typography to the screens around us.</p>
<p><em>(al)</em></p>
<hr />
<p>© Andreas Carlsson &amp; Jaan Orvet for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/the-future-of-screen-typography-is-in-your-hands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Limiting The Visibility Of WordPress Posts Via Usernames</title>
		<link>http://webreweries.com/limiting-the-visibility-of-wordpress-posts-via-usernames/</link>
		<comments>http://webreweries.com/limiting-the-visibility-of-wordpress-posts-via-usernames/#comments</comments>
		<pubDate>Sat, 28 Jan 2012 12:27:58 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/limiting-the-visibility-of-wordpress-posts-via-usernames/</guid>
		<description><![CDATA[&#160;&#160; Controlling who is able to view a post is a simple task once the system is established. Limiting access to certain users has several applications, such as enabling a design studio to distribute artwork to its various clients, or enabling a small school to arrange for homework to be posted online using a cheap [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>Controlling who is able to view a post is a simple task once the system is established. Limiting access to certain users has several applications, such as enabling a design studio to distribute artwork to its various clients, or enabling a small school to arrange for homework to be posted online using a cheap and easy solution.</p>
<p><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-splash1.jpg" alt="lpvuau-splash1" width="500" height="330" /></p>
<p>The easiest method to get this system working is to make the recipients of the information “subscribers” (since they need not be able to post) and the distributors of information “authors” (since they should only be able to edit their own posts). This system eliminates several headaches for the webmaster by <strong>managing who has access to particular posts</strong>. The username would be used to identify who is allowed to view certain posts, since it is unique and, for the most part, constant.</p>
<h3>The Basics</h3>
<h4>What Will You Need?</h4>
<ul>
<li>WordPress 3.1 or later</li>
<li>Members of various roles</li>
<li>The ability to modify your theme&#8217;s files</li>
<li>Basic knowledge of PHP and MySQL</li>
</ul>
<h4>What Is a Username?</h4>
<p>In general, a username is a means by which to identify and verify a user. It is not the only way to identify a user, but remembering a username is easier for the person logging in than having to remember a random user ID. A username can be made unique to an individual, unlike a person&#8217;s name or email address (family members may share the same name, or even the same email address). This ease of use and uniqueness is why usernames are used on most websites that require people to sign up in order to access the website or certain of its features.</p>
<p>To WordPress, a username is means of identifying a user. Paired with a password, a username enables someone to access their profile and, depending on their permissions within WordPress, to access to the administrative pages of the website. A username can be used for many functions in the operation and management of a website, such as karma, prestige, user roles and expulsion.</p>
<p>A WordPress username is unique and impossible for the average user to change. Thus, the system is a potentially reliable means of identifying individuals. This reliability is important for a system in which a post must be visible to only a few people. The permissions of a post should not alter merely because someone has changed their name or email address.</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-1-full1.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-1-screenshot.jpg" alt="Screenshot of a WordPress single user page" width="500" height="39" /></a><br /><em>The user page in a WordPress installation. Note that “Usernames cannot be changed.”</em></p>
<h3>Setting Up The Back End</h3>
<p>In order for an author to be able to set permissions for visibility, a method of selecting users must be set up on the post editing page. We could accomplish this by one of several methods, one of the easiest and most efficient of which is to create a meta box (or widget) in the post editing page that allows the author to add custom information, as required by a theme or plugin. This information enables us to tell the theme which members should have viewing rights to particular posts.</p>
<h4>A Basic Custom Meta Box</h4>
<p>Justin Tadlock’s article “<a href="http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/" title="How To Create Custom Post Meta Boxes In WordPress">How to Create Custom Post Meta Boxes in WordPress</a>” explains how to create meta boxes, and we’ll reuse that code here.</p>
<p>Let’s assume we’re dealing with a website for a music school named “Smashing Magazine’s Fancy Flautists.” We will use the name <code>smashing_flautist_access</code> in the code for the back end to distinguish it from other custom functions. Justin&#8217;s code is a great starting point for this project, but it needs a little customization for our purpose. Place the following code in your theme&#8217;s <code>functions.php</code>, and modify the various labels according to your project.</p>
<pre>
/* Fire our meta box setup function on the post editor screen. */
add_action( 'load-post.php', 'smashing_post_meta_boxes_setup' );
add_action( 'load-post-new.php', 'smashing_post_meta_boxes_setup' );

/* Meta box setup function. */
function smashing_post_meta_boxes_setup() {

	/* Add meta boxes on the 'add_meta_boxes' hook. */
	add_action( 'add_meta_boxes', 'smashing_add_post_meta_boxes' );

	/* Save post meta on the 'save_post' hook. */
	add_action( 'save_post', 'smashing_flautist_access_save_meta', 10, 2 );
}

/* Create one or more meta boxes to be displayed on the post editor screen. */
function smashing_add_post_meta_boxes() {

	add_meta_box(
		'smashing-flautist-access',			// Unique ID
		esc_html__( 'Post Viewing Permission', 'smashing_flautist' ),		// Title
		'smashing_flautist_access_meta_box',		// Callback function
		'post',					// Admin page (or post type)
		'normal',					// Context
		'default'					// Priority
	);
}

/* Display the post meta box. */
function smashing_flautist_access_meta_box( $object, $box ) { ?&gt;

	&lt;?php wp_nonce_field( basename( __FILE__ ), 'smashing_flautist_access_nonce' ); ?&gt;

	&lt;p&gt;
		&lt;label for="smashing-flautist-access"&gt;&lt;?php _e( "Enter the username of the subscriber that you want to view this content.", 'smashing_flautist' ); ?&gt;&lt;/label&gt;
		&lt;br /&gt;
		&lt;input class="widefat" type="text" name="smashing-flautist-access" id="smashing-flautist-access" value="&lt;?php echo esc_attr( get_post_meta( $object-&gt;ID, 'smashing_flautist_access', true ) ); ?&gt;" size="30" /&gt;
	&lt;/p&gt;
&lt;?php }
</pre>
<p>With Justin’s code, modified for this project, we should have a custom meta box that looks like this:</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-2-full1.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-2-screenshot.jpg" alt="Screenshot of a basic meta box" width="500" height="58" /></a><br />
<em>A basic meta box positioned below the post editing box.</em></p>
<h4>Adding Ease to the Selection</h4>
<p>This box can be used as is, and the author would simply input the members who they want to allow to view a post. This would work well if each author had very few usernames to remember; but if the author has long list of usernames to choose from, then a list of members would have to be displayed, and there would have to be a system that allows the authors to choose members from the list. Add the following code to the area just below the original box, just after the closing paragraph tag, to display a list of users with their names, along with radio buttons to grant one of the users access to the current post.</p>
<pre>
&lt;table class="smashing-flautist-access"&gt;
&lt;tr align="left"&gt;
&lt;th&gt;Username&lt;/th&gt;
&lt;th&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/th&gt;
&lt;th&gt;Visiblity&lt;/th&gt;
&lt;th&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/th&gt;
&lt;th&gt;Name&lt;/th&gt;
&lt;/tr&gt;
&lt;?php
global $post;
	$users = get_users('role=subscriber');
	foreach ($users as $user) {
			$user_info = get_userdata( $user-&gt;ID );
			if(get_post_meta( $object-&gt;ID, 'smashing_flautist_access', true ) == $user-&gt;user_login) $ifchecked = 'checked="checked" ';
			echo "&lt;tr&gt;";
			echo "&lt;td&gt;$user-&gt;user_login&lt;/td&gt;&lt;td&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;";
			echo "&lt;td align=\"center\"&gt;&lt;input type=\"radio\" name=\"smashing-flautist-access\" id=\"smashing-flautist-access\" value=\"$user-&gt;user_login\" " . $ifchecked ."/&gt;&lt;/td&gt;&lt;td&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;";
			echo "&lt;td&gt;$user_info-&gt;last_name, $user_info-&gt;first_name&lt;/td&gt;&lt;td&gt;&nbsp;&nbsp;&nbsp;&nbsp;&lt;/td&gt;";
			echo "&lt;/tr&gt;";
			unset($ifchecked);

	} ?&gt;&lt;/table&gt;
</pre>
<p>If everything goes well, you should end up with a box underneath the post editor that looks similar to the image below. The form containing the radio buttons gets a list of users that are listed as subscribers and makes the selection of the student with viewing permissions easy, all without the post&#8217;s author having to remember any usernames.</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-3-full1.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-3-screenshot.jpg" alt="Screenshot of a meta box with user information" width="500" height="214" /></a><br /><em>A meta box that contains a method to select the particular name and information of each user.</em></p>
<h4>Saving the List</h4>
<p>Now that we have generated a list that makes it easy for the authors to pick which members they want to be able to view particular posts, we have to create a system to add the list to WordPress’ MySQL database so that we can retrieve it later. We also need a way to tell WordPress to update this list of usernames in case the author decides later to add or remove someone from a particular post&#8217;s list of authorized viewers. The code provided by Justin does excellent work; place his code below in your theme&#8217;s <code>functions.php</code>, just after the function that sets up the custom meta box.</p>
<pre>
/* Save post meta on the 'save_post' hook. */
add_action( 'save_post', 'smashing_flautist_access_save_meta', 10, 2 );

/* Save the meta box's post metadata. */
function smashing_flautist_access_save_meta( $post_id, $post ) {

	/* Make all $wpdb references within this function refer to this variable */
	global $wpdb;

	/* Verify the nonce before proceeding. */
	if ( !isset( $_POST['smashing_flautist_access_nonce'] ) || !wp_verify_nonce( $_POST['smashing_flautist_access_nonce'], basename( __FILE__ ) ) )
		return $post_id;

	/* Get the post type object. */
	$post_type = get_post_type_object( $post-&gt;post_type );

	/* Check if the current user has permission to edit the post. */
	if ( !current_user_can( $post_type-&gt;cap-&gt;edit_post, $post_id ) )
		return $post_id;

	/* Get the posted data and sanitize it for use as an HTML class. */
	$new_meta_value = ( isset( $_POST['smashing-flautist-access'] ) ? sanitize_html_class( $_POST['smashing-flautist-access'] ) : '' );

	/* Get the meta key. */
	$meta_key = 'smashing_flautist_access';

	/* Get the meta value of the custom field key. */
	$meta_value = get_post_meta( $post_id, $meta_key, true );

	/* If a new meta value was added and there was no previous value, add it. */
	if ( $new_meta_value &#038;&#038; '' == $meta_value )
		{
		add_post_meta( $post_id, $meta_key, $new_meta_value, true );
		$wpdb-&gt;query($wpdb-&gt;prepare("UPDATE $wpdb-&gt;posts SET post_status = 'private' WHERE ID = ".$post_id." AND post_type ='post'"));
		}
	/* If the new meta value does not match the old value, update it. */
	elseif ( $new_meta_value &#038;&#038; $new_meta_value != $meta_value )
		{
		update_post_meta( $post_id, $meta_key, $new_meta_value );
		$wpdb-&gt;query($wpdb-&gt;prepare("UPDATE $wpdb-&gt;posts SET post_status = 'private' WHERE ID = ".$post_id." AND post_type ='post'"));
		}
	/* If there is no new meta value but an old value exists, delete it. */
	elseif ( '' == $new_meta_value &#038;&#038; $meta_value )
		{
		delete_post_meta( $post_id, $meta_key, $meta_value );
		$wpdb-&gt;query($wpdb-&gt;prepare("UPDATE $wpdb-&gt;posts SET post_status = 'public' WHERE ID = ".$post_id." AND post_type ='post'"));
		}
}
</pre>
<p>The three MySQL queries are in place to prevent unauthorized users from viewing protected posts and to hide the posts from the RSS feeds. The first query runs only when new data populates the previously empty custom field, while the second query runs only when the data in the custom field has changed. The third query runs only if the custom field is emptied, and it sets the post’s visibility back to “Public.” All three are protected from SQL injection attacks by using <code>$wpdb-&gt;prepare()</code> to validate the data entered into the username form field.</p>
<p>If you don’t like that WordPress precedes the post’s title with the word “Private,” then add the following code to your theme&#8217;s <code>functions.php</code> file. This custom function is called when your theme would display a post&#8217;s title; it finds any instance of the words “Protected” or “Private” at the beginning of the title and removes them. In the core of WordPress’ programming, the function <code>get_the_title()</code> adds those words if a post&#8217;s visibility is restricted and the person viewing is not an administrator. What the following code does is send a message to the action that <code>get_the_title()</code> hooks into, telling it to remove the terms “Protected: ” and “Private: ” from the title. So, you can set a post&#8217;s title to begin with either term, and the title will not be altered; this code only affects WordPress&#8217; ability to add to your title.</p>
<pre>
function smashing_title_trim($title) {
	$title = attribute_escape($title);
	$needles = array(__('Protected: '),__('Private: '));
	$title = str_replace($needles,'',$title);
	return $title;
}
add_filter('protected_title_format','smashing_title_trim');
add_filter('private_title_format','smashing_title_trim');
</pre>
<p>To allow users at the subscriber level to see private posts, you have to give them that capability. As it happens, some of the code we’ll be using later frees us from having to worry about users at the subscriber level seeing the posts of others.</p>
<pre>
$subRole = get_role( 'subscriber' );
$subRole-&gt;add_cap( 'read_private_posts' );
</pre>
<p>You can also grant users at the subscriber level permission to view private pages, in case you want a dedicated page of information that subscribers should know.</p>
<pre>
$subRole-&gt;add_cap( 'read_private_pages' );
</pre>
<h3>Setting Up The Front End</h3>
<p>Now that we have a way to add members to the list of people who can view a particular post, we have to modify our theme to use this data, and to actually control the visibility of each post based on this list. First, we need a way to get the username of the person who can view a post. Secondly, we would compare the username of the member with viewing permissions to the user who is currently logged in. Finally, we would make the theme display either the post in the loop or an error message (or perhaps nothing at all).</p>
<p>Place this code just after <a href="http://codex.wordpress.org/The_Loop" title="The Loop">The Loop</a> starts. It goes in <code>single.php</code>, <code>category.php</code> and <code>index.php</code> if you will be displaying posts on the home page.</p>
<pre>
&lt;?php
/* Get the post's acceptable viewer. */
		$flautist_access = get_post_meta($post-&gt;ID, 'smashing_flautist_access', true );
/* Get the post's current viewer, if he or she is logged in. */
		if(is_user_logged_in()) {$current_flautist = $current_user-&gt;user_login;}
/* See if the acceptable viewer and the current viewer are the same */
		if($flautist_access == $current_flautist || current_user_can('author') || current_user_can('editor') || current_user_can('administrator'))
			{echo ''; ?&gt;
</pre>
<p>Place this code just before the loop ends. Here is where you can show an error message telling the user that they may not view this post. Or you could leave this code as is to make it appear as though the current visitor is not missing anything.</p>
<pre>
&lt;?php } else { echo ''; } ?&gt;
</pre>
<p>This is what a hidden post looks like to the public or to a user who is not logged in. They would see what appears to be an error message and are redirected away from the post.</p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-4-full.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-4-screenshot.jpg" alt="What the public sees when trying to view a protected post" width="500" /></a><br /><em>If a person is not logged in and tries to view a restricted post, they would get an error message.</em></p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-5-full.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-5-screenshot.jpg" width="500" alt="What an unauthorized user sees when trying to view a protected post" /></a><br /><em>If a user is logged in but not allowed to view a restricted post, they would see either nothing or an error message specific to members.</em></p>
<p><a href="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-6-full.jpg"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/lpvuau-6-screenshot.jpg" width="500" alt="What an authorized user sees when trying to view a protected post" /></a><br />
<em>If a member is logged in and authorized to view a protected post, then they would see the post itself.</em></p>
<h3>Conclusion</h3>
<p>Being able to control who can view individual posts is a useful feature with a wide variety of applications. Third-party software can natively do this, but WordPress is widely supported and documented, which means that any security holes that might allow unauthorized users to view restricted posts would be shut in a future update. Plus, it allows you to run an actual blog next to posts with limited visibility. This system could be used by administrators to distribute personalized content, by professionals to send files to clients, or by bloggers to restrict the visibility of certain posts to certain members.</p>
<p>Enabling an author to control who can view their posts can help them tailor the blog&#8217;s content to the needs or tastes of certain users. Ultimately, you will have to factor in the <strong>purpose and content of your website when deciding whether to use this method</strong>. It’s not for everyone, but it suit the needs of owners of small websites who want to deliver certain content to certain people.</p>
<h4>Resources</h4>
<ul>
<li>“<a href="http://codex.wordpress.org/Function_Reference/add_meta_box">Function Reference/add meta box</a>,” WordPress Codex</li>
<li>“<a href="http://codex.wordpress.org/Function_Reference/get_users">Function Reference/get users</a>,” WordPress Codex</li>
<li>“<a href="http://codex.wordpress.org/Roles_and_Capabilities">Roles and Capabilities</a>,” WordPress Codex</li>
<li>“<a href="http://codex.wordpress.org/Class_Reference/wpdb#Protect_Queries_Against_SQL_Injection_Attacks">Class Reference/wpdb</a>,” WordPress Codex</li>
<li>“<a href="http://wp.smashingmagazine.com/2011/10/04/create-custom-post-meta-boxes-wordpress/">How To Create Custom Post Meta Boxes In WordPress</a>,” Justin Tadlock</li>
</ul>
<p><em>(al)</em></p>
<hr />
<p>© Chris Ellison for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/limiting-the-visibility-of-wordpress-posts-via-usernames/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The UX Research Plan That Stakeholders Love</title>
		<link>http://webreweries.com/the-ux-research-plan-that-stakeholders-love/</link>
		<comments>http://webreweries.com/the-ux-research-plan-that-stakeholders-love/#comments</comments>
		<pubDate>Fri, 27 Jan 2012 12:27:28 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/the-ux-research-plan-that-stakeholders-love/</guid>
		<description><![CDATA[&#160;&#160; UX practitioners, both consultants and in house, sometimes conduct research. Be it usability testing or user research with a generative goal, research requires planning. To make sure product managers, developers, marketers and executives (let’s call them stakeholders) act on UX research results, planning must be crystal clear, collaborative, fast and digestible. Long plans or [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>UX practitioners, both consultants and in house, sometimes conduct research. Be it usability testing or user research with a generative goal, research requires planning. To make sure product managers, developers, marketers and executives (let’s call them stakeholders) act on UX research results, planning must be crystal clear, collaborative, fast and digestible. <strong>Long plans or no plans don’t work for people.</strong> You must be able to boil a UX research plan down to one page. If you can’t or won’t, then you won’t get buy-in for the research and its results.</p>
<p>This article addresses one key aspect of planning UX research: the one-page plan document. Before we get to that, we’ll briefly discuss the benefits of research planning and identify the audience of a research planning document.</p>
<p><a href="http://www.flickr.com/photos/zooboing/5442901351/sizes/l/in/photostream/"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/heart.jpg" alt="Blueprint Heart" width="500" height="350" class="alignnone size-full wp-image-110277" /></a><br />
<em>(Image: <a href="http://www.flickr.com/photos/zooboing/5442901351/sizes/l/in/photostream/">Patrick Hoesly</a>)</em></p>
<p>A word about stakeholders. A stakeholder in the UX world is a code name for the people who UX practitioners work with. These are our clients, whether internal or external to our organization. These are people who need to believe in what we do, act on research results, and fund and sponsor future research. We all have a stake in product development. They have a stake in UX research.</p>
<h3>The Benefits Of Research Planning</h3>
<p>Very generally speaking, UX research can answer two types of questions:</p>
<ol>
<li><strong>What’s useful?</strong><br />
What do people need? Who is the target audience?</li>
<li><strong>What’s usable?</strong><br />
Does the design work for people, and how it can be improved?</li>
</ol>
<p>Dozens of research methodologies could be implemented to answer these and more specific questions, and it is up to designers, researchers and their teams to decide what works best for them and when is the right time to answer their questions.</p>
<p>Here are the benefits of planning UX research:</p>
<ul>
<li><strong>Get a better feel of stakeholders.</strong><br />
A written plan helps you identify what works and doesn’t work for people, and what questions they are trying to answer.</li>
<li><strong>Engage stakeholders.</strong><br />
A study plan ensures they are properly involved with the study and its results. If there’s no written plan, then there’s a greater chance that stakeholders won’t feel engaged.</li>
<li><strong>Writing things down helps you.</strong><br />
When you put things in writing, they look very different than how you imagined them when they were just thoughts in your head. Always have a written study plan, even if you don’t share it with anyone else.</li>
</ul>
<p>Now, let’s quickly identify the target audience for the research planning document.</p>
<h3>Who Are You Planning For? Who Are The Stakeholders?</h3>
<p>As with every product or service, the best offering comes from carefully identifying the target audience, their needs and their wants. Different UX research stakeholders are interested in different aspects of a research plan:</p>
<ul>
<li><strong>Product managers and software engineers</strong> are mostly interested in the study’s goal, research questions and schedule. In some cases, they are also interested in the criteria for participants. These stakeholders are usually interested in goals and questions because these determine the content of the study and its focus. They are interested in the schedule to make sure it enables them to make timely design, business and development decisions. Criteria for participants interest them when the product targets a very specific demographic and they want to make sure participants are representative of that demographic.</li>
<li><strong>Managers and executives</strong> are probably interested in the study’s goal and the overall cost of the study, because they are likely sponsoring the study. Usually, their bandwidth does not allow them more than that.</li>
<li><strong>You!</strong> The plan is mostly for you. As soon as you put your thoughts in writing, something happens, and you find holes in them. These holes help you improve the plan. A written plan also helps you focus and better prepare for the study. The fact of the matter is that if you can’t boil your plan down to a page, you probably don’t really understand it.</li>
</ul>
<p>Now that we’ve discussed why a planning document is important and who it is for, let’s get to the nitty gritty of the document.</p>
<h3>The Plan That Stakeholders Love: The One-Pager</h3>
<p>The users of a research plan love brevity and appreciate succinct definitions of what will happen, why, when and with whom. Here are the sections that go in a one-page research plan:</p>
<ul>
<li><strong>Title</strong><br />
The title should combine the thing you’re studying and the methodology; for example, “Monster.com field study” or “XYZ Phone data-entry usability test.” Sometimes mentioning the target audience of the study is also appropriate; for example, “Whitehouse.com news page interviews with senior citizens.”</li>
<li><strong>Author and stakeholders</strong><br />
State your full name, title and email address on one line. After you get the stakeholders’ buy-in for the plan, add their details as well &mdash; the research belongs to everyone now.</li>
<li><strong>Date</strong><br />
Update it whenever the plan is updated.</li>
<li><strong>Background</strong><br />
Describe what led to this study. Discuss the recent history of the project. Be brief, no more than five lines.</li>
<li><strong>Goals</strong><br />
Briefly state the high-level reason (or reasons) for conducting this study. Try to phrase it in one sentence. If that wouldn’t make sense, create a numbered list of very short goal statements. If you have more than three to four goals, you are either aiming too high (meaning you have too many goals) or repeating yourself.</li>
<li><strong>Research questions</strong><br />
These are the specifics, the core of your plan. Provide a numbered list of questions that you plan to answer during the study. It is extremely important that your stakeholders understand that you will not necessarily be asking the study participants these questions. As a rule of thumb, have no more than seven to ten questions, preferably around five. Later on, you will construct your study script to answer these questions. An effective way to think about research questions is to imagine that they are the headings in the study’s summary.</li>
<li><strong>Methodology</strong><br />
In an academic environment, this section has one primary goal: to provide as many details as other researchers need in order to repeat the exact same study. In practice, the goal of the methodology section is to briefly inform the stakeholders of what will happen, for how long and where.</li>
<li><strong>Participants</strong><br />
Provide a list of the primary characteristics of the people you will be recruiting to participate in the study. Have a good reason for each and every characteristic. If you have two participant groups, describe both groups’ characteristics in lists or in a table. Append a draft form that you’ll use to screen participants.</li>
<li><strong>Schedule</strong><br />
Inform stakeholders of at least three important dates: when recruiting starts, when the study will take place, and when they can expect results. Large research projects require more scheduling details. For example, if the study involves travel to another city or country, more dates might be required for on-site preparation and meetings or for analysis workshops.</li>
<li><strong>Script placeholder</strong><br />
When a full study script is ready, it will appear under this title. Until then, all you need is a heading with a “TBD” indication.</li>
</ul>
<blockquote><h3>A Sample UX Research Plan</h3>
<p><strong>XYZ Phone Data-Entry Usability Test</strong></p>
<p>By John Smith-Kline, Usability Researcher, jskline@example.com</p>
<p>Stakeholders: Wanda Verdi (PM), Sam Crouch (Lead Engineer)</p>
<p>Last updated: 13 January 2012</p>
<p><strong>Background</strong><br />
Since January 2009, when the XYZ Phone was introduced to the world, particularly after its market release, journalists, bloggers, industry experts, other stakeholders and customers have privately and publicly expressed negative opinions about the XYZ Phone’s keyboard. These views suggest that the keyboard is hard to use and that it imposes a poor experience on customers. Some have claimed this as the main reason why the XYZ Phone will not succeed among business users. Over the years, several improvements have been made to data entry (such as using horizontal keyboards for most features), to no avail.</p>
<p><strong>Goals</strong><br />
Identify the strengths and weaknesses of data entry on the XYZ Phone, and provide opportunities for improvement.</p>
<p><strong>Research questions</strong></p>
<ol>
<li>How do people enter data on the XYZ Phone?</li>
<li>What is the learning curve of new XYZ Phone users when they enter data?</li>
<li>What are the most common errors users make when entering data?</li>
</ol>
<p><strong>Methodology</strong><br />
A usability study will be held in our lab with 20 participants. Each participant session will last 60 minutes and will include a short briefing, an interview, a task performance with an XYZ Phone and a debriefing. Among the tasks: enter an email subject heading, compose a long email, check news updates on CNN’s website, create a calendar event and more.</p>
<p><strong>Participants</strong><br />
These are the primary characteristics of the study’s participants:</p>
<ul>
<li>Business user,</li>
<li>Age 22 to 55,</li>
<li>Never used an XYZ Phone,</li>
<li>Expressed interest in learning more about or purchasing an XYZ Phone,</li>
<li>Uses the Web at least 10 hours a week.</li>
</ul>
<p>[Link to a draft screener]</p>
<p><strong>Schedule</strong></p>
<ul>
<li>Recruiting: begins on November 12</li>
<li>Study day: November 22</li>
<li>Results delivery: December 2</li>
</ul>
<p><strong>Script</strong><br />
TBD</p>
</blockquote>
<h3>Recap</h3>
<p>A short plan that you and your stakeholders prepare together is key to a <strong>successful start</strong> of a UX research project.</p>
<ul>
<li>Boil down your collective knowledge, agreements and understanding of what will happen, why, with whom and when.</li>
<li>Set the right expectations among stakeholders.</li>
<li>Try to keep the plan to one page.</li>
<li>Secure buy-in for the UX research by making it a team effort.</li>
<li>The core of the plan is the list of questions you are trying to answer. Choose the right ones.</li>
</ul>
<p>Happy planning!</p>
<p><em>(al) (fi) (il)</em></p>
<hr />
<p>© Tomer Sharon for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/the-ux-research-plan-that-stakeholders-love/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How To Deliver Exceptional Client Service</title>
		<link>http://webreweries.com/how-to-deliver-exceptional-client-service/</link>
		<comments>http://webreweries.com/how-to-deliver-exceptional-client-service/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 12:27:18 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/how-to-deliver-exceptional-client-service/</guid>
		<description><![CDATA[&#160;&#160; We often hear companies, including Web agencies, boast about how they provide exceptional client service. But how do they define exceptional? Consider this scenario. You are hired to design and develop a new website for a retail client. The client loves the design, and the pages you develop use the latest in HTML5, CSS3 [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>We often hear companies, including Web agencies, boast about how they provide exceptional client service. But how do they define exceptional?</p>
<p>Consider this scenario. You are hired to design and develop a new website for a retail client. The client loves the design, and the pages you develop use the latest in HTML5, CSS3 and responsive design, resulting in a website that works wonderfully across browsers and devices. The e-commerce features of the new website help the client significantly increase their online sales, and the entire project is delivered on time and on budget. Now, is this “exceptional” client service? I don’t think it is.</p>
<p>When the client hired you, they <em>expected</em> that you would design and develop a great website. They also expected it would be done according to the timeline and budget set during the planning stages of the project. As successful as this project may have been for both you and the client, in the end, you did exactly what you were hired to do. You did your job.</p>
<h3>Just Doing Your Job Vs. Delivering Exceptional Service</h3>
<p>Nothing is wrong with “just doing your job.” In many cases, that alone is a tall order. So, while doing what you were hired to do is nothing to be ashamed of, it is also not exceptional &mdash; nor will it set you apart. There will always be other agencies or designers that will be able to do the work as well as you can &mdash; and there will certainly be someone willing to do it cheaper! The service you provide is how you can truly differentiate yourself.</p>
<p>Exceptional client service is about going beyond what is realistically expected of you. It is about surprising, and often delighting, customers, turning them into enthusiastic referral sources and lifelong clients who stick with you not only because you do great work at a fair price, but because <strong>the value you bring to them goes far beyond just your products</strong>.</p>
<p>In this article, I’ll detail a few of the ways that I have tried to take my own client service to the next level and deliver a better experience, starting with the most important aspect: the relationships that you establish with the clients who hire you.</p>
<p><a href="http://www.flickr.com/photos/jdhancock/4303131832/"><img class="alignnone size-full wp-image-123107" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/superhero.jpg" alt="Superhero racing to help" width="500" height="333" /></a><br />
<em>There is a difference between doing what you were hired to do and delivering a superheroic level of service. (Image: <a href="http://www.flickr.com/photos/jdhancock/4303131832/">JD Hancock</a>)</em></p>
<h3>Creating Real Relationships</h3>
<p>Here’s a quick exercise. Write down your five most important clients (how you define “important” is up to you). Then, write down as many things you know about those clients that have nothing to do with their business or the work you have done for them. What are their hobbies or passions? How many kids do they have? How old are those kids, and what are their names? Where do they like to vacation? Things like that.</p>
<p>So, how long is your list? If you’re like most people I speak with, probably not very long at all. We learn everything we can about a client’s business, but we often fail to discover anything substantial about our clients as people. <strong>If we do not engage with our clients in a real, personal way, then we are just another vendor</strong> &mdash; and vendors are easily replaceable with better cheaper options. However, clients are much less likely to consider replacing people with whom they have real relationships.</p>
<p>So, how do you start learning more about your clients? Simple: ask them questions about themselves and their lives, not just about their business.</p>
<h3>Asking Real Questions</h3>
<p>When I give this advice to others, it is often met with some apprehension. Asking someone about their business goals is easy. Asking them about their life outside of the office is harder. We often avoid getting personal for fear of offending the person or saying the wrong thing; but by being overly cautious, we miss the chance to create a real relationship.</p>
<p>Whenever I get nervous about getting too personal with a client, I remind myself of a story. A few years ago, I had the privilege to work on the website for the <a href="http://www.torilynnfoundation.org">Tori Lynn Andreozzi Foundation</a>. This non-profit foundation was named after a young girl who, walking home from school one afternoon, was struck by a drunk driver. Tori survived but was forever changed. Today, she is in a minimally conscious state, unable to walk, speak or eat.</p>
<p>In one of my first meetings with this client, I sat down with the head of the foundation, Tori’s mother, Cathy. I began the conversation simply by asking her, “How is Tori doing today?”</p>
<p>Cathy smiled and answered that Tori was doing well. We had our meeting and discussed the website and the project. As we were wrapping up, Cathy thanked me for asking her about Tori. She explained that so many people avoid asking about her daughter, fearing the news would be bad or that Cathy would be upset by the question. The truth is that, even though Tori has bad days, Cathy always enjoys talking about her daughter and was very happy to be asked about her. By asking Cathy how her daughter was doing, I showed her that I cared about more than just the project.</p>
<p><a href="http://www.torilynnfoundation.org"><img class="alignnone size-full wp-image-123110" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/tori-lynn-screenshot.jpg" alt="Website for the Tori Lynn Andreozzi Foundation" width="500" height="354" /></a><br />
<em>The website for the Tori Lynn Andreozzi Foundation</em></p>
<p>Today, Cathy is one of my favorite people to speak with, and we begin every conversation by asking how each other’s children are doing. We have much more than a great client-vendor relationship, all because <strong>I asked a real question, honestly cared about the answer, and created a real, human connection in the process</strong>. Had I been too afraid to ask that question, I might never have been able to build the relationship that I have now.</p>
<p>Don’t be afraid to ask your clients real questions. If they don’t want to answer you, they won’t. But for those who do (and you will find that most, if not all, of your clients will be happy to have a real conversation that has nothing to do with business), you will be well on your way to building real relationships.</p>
<h3>Participate In More Than Just Projects</h3>
<p>Another way to build a relationship with a client that goes beyond the project is to participate in their events. If the client runs a non-profit organization, they might have fundraisers or similar events that offer you an opportunity to support their cause and nurture the relationship. Go to these events and participate. As a bonus, you will also be helping a worthwhile cause.</p>
<p>Not all of your clients will have fundraising events, but they might invite you to holiday parties and other gatherings. Take advantage of these opportunities to <strong>interact with your clients outside of a normal business setting</strong>. It will go a long way to reinforcing those real relationships that you are trying to create and show that you are more than just another vendor.</p>
<p>Similarly, consider inviting clients to some of your events to show that you view them as more than just a source of business. When they arrive, greet them warmly and enjoy their company, leaving business talk for another day.</p>
<h3>Help Them With Services That You Do Not Provide</h3>
<p>Clients may hire you to design and develop a Web presence for them, but in the course of the project you will often discover that they need other services that you do not provide. By listening to their needs, you might learn that they have issues with their payroll company or their accountants or some other aspect of their business.</p>
<p>Look to your own business and the vendors you use. There may be a service or company that you have had success with that you could recommend. Also look to your other clients to see whether they offer services that fit. If appropriate, set up a lunch meeting between you, the client with the need and the client that might be able to fill that need. Not only will you be taking two clients out for lunch, you will hopefully be helping them both by making a valuable connection between the two companies.</p>
<p>When a client can say, “I hired this company to design our website and they ended up helping us revamp our entire payroll system!” you position yourself as much more than just their “Web team” &mdash; you show that <strong>you are a valued business resource and a trusted advisor</strong>.</p>
<h3>Pick Up The Phone</h3>
<p>Good communication is key to any relationship. Still, judging from the number of clients I speak with who are unhappy with their current Web team &mdash; not because they do a poor job, but because they are unresponsive &mdash; quality communication is not always a given.</p>
<p>Regularly updating your clients by email is important, but also pick up the phone every now and then, so that you become more than just that distant person behind those electronic updates. By hearing your voice, clients will feel more connected to you and the project. It also shows them that <strong>you value them enough to take the time to make a personal call</strong>, and it gives you a chance to talk about something other than business.</p>
<p><a href="http://www.flickr.com/photos/opensourceway/4371000846/"><img class="alignnone size-full wp-image-123143" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/conversations-screenshot.jpg" alt="Conversations bubbles in an office" width="500" height="281" /></a><br />
<em>Regular phone calls allow you to have real conversations with clients, communicating at a personal level that email and other electronic updates do not allow for. (Image: <a href="http://www.flickr.com/photos/opensourceway/4371000846/">opensourceway</a>)</em></p>
<h3>Face The Bad Times Head On</h3>
<p>Have you ever had to share bad news with a client, but rather than pick up the phone to discuss the issue, you waited and sent an email at 5:15 pm on a Friday? By doing this, you may have bought yourself a few more days before having to face the client’s worried questions, but you also damage the relationship by hiding behind an email. It also means that the client will read the bad news first thing on Monday morning; definitely not a good start to their week, and definitely not the way to treat a valued relationship.</p>
<p>Here’s a secret: <strong>clients do not expect you to be perfect</strong>. They do, however, expect you to be honest. When something goes wrong, let them know quickly so that they are not blindsided by the issue later on. And never deliver bad news by email. Picking up the phone to discuss the news lets you reassure the client and answer any questions they may have. An after-hours email certainly won’t do that for them.</p>
<p>If the matter is handled correctly, the client will not remember that something went wrong. They will remember that you were honest and kept them apprised of the state of the project, even when it did not go according to plan.</p>
<h3>Be Thankful And Show Appreciation</h3>
<p>When was the last time you thanked a client for working with you? How did you do it? Did you send a basket of cookies or chocolate with a generic “thank you” message, or did you do something more personal?</p>
<p>Too often, we fail to even thank our clients for their business. We are so keen to finish a project and move on to the next one that we forget to properly show our appreciation.</p>
<p>While a basket of sweets and a generic message is better than nothing, consider <strong>sending a personal, handwritten thank-you note</strong>.</p>
<p>Handwritten letters have become all but extinct these days. With the rise of electronic communication such as email, social networks and text messaging, so few people take the time and effort to actually write a letter. The gesture of a personal letter will delight and surprise your client, not only because you have thanked them, but because the way you did so was personal, memorable and the perfect cap to a successful project.</p>
<p><a href="http://www.flickr.com/photos/irrezolut/6081838156/"><img class="alignnone size-full wp-image-123108" src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/thank-you.jpg" alt="Handwritten thank you message" width="500" height="345" /></a><br />
<em>A thankful, personal handwritten card is a great way to cap off a successful project. (Image: <a href="http://www.flickr.com/photos/irrezolut/6081838156/">irrezolut</a>)</em></p>
<h3>How About You? Do You Deliver Exceptional Client Service?</h3>
<p>I hope this article starts a conversation. How do you deliver exceptional client service? What tips can you share so that others can delight their own clients and offer them value beyond just products?</p>
<p>In this industry, we are always eager to share the latest tips and tricks on CSS, HTML, JavaScript, PHP or some other Web technology. Let’s also start to <strong>share tips on how to deliver exceptional client service</strong>, because success in this industry is about much more than developing great websites &mdash; it’s about developing great relationships.</p>
<p><em>(al)</em></p>
<hr />
<p>© Jeremy Girard for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/how-to-deliver-exceptional-client-service/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>What Successful Products Teach Us About Web Design</title>
		<link>http://webreweries.com/what-successful-products-teach-us-about-web-design/</link>
		<comments>http://webreweries.com/what-successful-products-teach-us-about-web-design/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 12:25:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/what-successful-products-teach-us-about-web-design/</guid>
		<description><![CDATA[&#160;&#160; Web design is a craft that is constantly evolving and yet also sometimes sabotaged. The moment a design is released, a new version is born. In the beginning, like a baby, it seems vulnerable and weak, but in time it grows up and becomes self-sufficient. Redesigning a website for its own sake doesn’t prove [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>Web design is a craft that is constantly evolving and yet also sometimes sabotaged. The moment a design is released, a new version is born. In the beginning, like a baby, it seems vulnerable and weak, but in time it grows up and becomes self-sufficient. Redesigning a website for its own sake doesn’t prove anything; quite the contrary, it reveals a lack of effectiveness on the part of the designer.</p>
<p>Product design is a craft in which new versions come to life with increasing difficulty. We can learn a thing or two from it when designing for the Web. First, let’s look at some examples.</p>
<ul>
<li>How many designs for the iPhone has Apple released since 2007? The answer is one, with only two tweaks. How many Motorola phones for Android can you find on the market right now? Thirteen, not counting the old models.</li>
<li>How many designs of the Mini Cooper do you know of? Just that one brave design that has continually evolved since 1959! How many Toyota Corolla models can you count since 1967? Nineteen.</li>
<li>Zippo lighters have retained their appeal since 1933!</li>
</ul>
<p>Forget marketing, technical specs and hardware. Products such as the iPhone, the Mini Cooper and the Zippo lighter have become wildly successful because of their outstanding design. Such massive success springs from three sources: <strong>the designer, sticking to the scope and iteration</strong>. These aspects can help us in Web design, too. In this article, we’ll look at what we can learn from successful product design.</p>
<h3>The Ability Of The Designer</h3>
<p><a href="http://www.flickr.com/photos/cell105/2652288685/" title="Warmth by cell105, on Flickr"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/zippo.jpg" alt="Zippo" width="500" height="350" class="alignnone size-full wp-image-110453" /></a><br />
<em>Zippo lighters have remained elegant and reliable through time. (Image: <a href="http://www.flickr.com/photos/cell105/2652288685/">cell105</a>)</em></p>
<p>Do you trust your instincts? You should! Because when you see a design, you judge its attractiveness in <a href="http://www.alistapart.com/articles/visual-decision-making/" title="Read the article: Visual Decision Making">less than a second</a>. We all know what we like, even if we can’t always explain it. It’s about aesthetics. Aesthetics is a child of harmony, and harmony is not magic. It can be achieved when the designer embraces certain principles, such as balance, contrast and dominance. Becoming a fantastic designer, though, requires more than pure technique. It requires that you see the context and make decisions accordingly.</p>
<p>A couple of comments by <a href="http://www.karimrashid.com/" title="The offcial website of Karim Rashid">Karim Rashid</a>, featured in the documentary <a href="http://www.objectifiedfilm.com/" title="Learn more about the documentary">Objectified</a> are fascinating and revealing. First, Rashid talks about a stereo that he loved as a teenager:</p>
<blockquote>
<p>It was a white kind of bubble stereo with these two bubble white speakers. And it was probably very inexpensive &mdash; it was a real democratic product, and it had a turntable and the whole thing built in. It was a beautiful thing. Looking back and thinking why it was a beautiful thing, it was very self-contained, and the message was very strong and very simple, and at the same time it was very human. There was a quality about it.</p>
</blockquote>
<p>See? <strong>A democratic, self-contained, human, simple thing with a strong message.</strong></p>
<p>Here is Rashid again on thinking outside the box:</p>
<blockquote>
<p>Why do we feel like we need to keep revisiting the archetype over and over and over again? Digital cameras, for example, [whose] format, proportion, the fact that they’re a horizontal rectangle, are a model of the original silver film camera. So, in turn it’s the film that defined the shape of the camera. All of a sudden, our digital cameras have no film. So, why on earth do we have the same shape we have?</p>
</blockquote>
<p>How is it that Karim Rashid extracts such clear conclusions? What hinders us from doing the same? And not just in theory. Let’s do it for real. The next time you are about to make an important design decision, stop and ask yourself, What would I do if I were <a href="http://en.wikipedia.org/wiki/Dieter_Rams">Dieter Rams</a> or <a href="http://en.wikipedia.org/wiki/Jonathan_Ive">Jonathan Ive</a> or &mdash; since you’re a Web designer &mdash; <a href="http://stopdesign.com/">Douglas Bowman</a>?</p>
<p>Asking this kind of question briefly expands our skills of judgment and makes us ultra-alert. Doing it regularly can drastically heighten our perception, values and actions as designers. Is this enough? No, but it is the beginning of a beautiful relationship with design.</p>
<p>And the Zippo lighter? It looks both friendly and solid, a comrade that needs your attention in order to keep working. Ιt has its own scent; it’s windproof; and above all, the sound when you flip open the lid is distinctive. And if you’ve owned a Zippo for a while, you must have noticed that it learns how you touch it when you light it.</p>
<p>All together, a Zippo is a product of craft &mdash; just as our designs for the Web should be. This is as simple and as hard as it sounds.</p>
<h3>Focusing On The Scope</h3>
<p><a href="http://www.flickr.com/photos/shelleygibb/2960661847/" title="MiniBob says thanks for the numbers by mollybob, on Flickr"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/mini.jpg" alt="Mini Cooper" width="500" height="350" class="alignnone size-full wp-image-110454" /></a><br />
<em>Once a Mini, always a Mini. (Image: <a href="http://www.flickr.com/photos/shelleygibb/2960661847/">Shelley Gibb</a>)</em></p>
<p>Let’s go back to cars for a moment.</p>
<p>As noted earlier, the Corolla models of Toyota are nothing spectacular in their design. But what is a Toyota car known for? It’s a reliable, relatively cheap family car. Is Toyota successful? You bet!</p>
<p>What’s a Mini Cooper? It’s a beautiful small car that appeals mostly to young people. Is it successful? Of course, it is.</p>
<p>Cars are complicated machines. They do more than transport people. If a Toyota were as fancy as the Mini, then it wouldn’t be affordable. If a Mini were reimagined as a family car, then it would lose some of its charm. Oversimplification? Perhaps. But you get the point.</p>
<p>There’s a scope behind each product. As long as the scope is met, the product will be effective and remain on the market. The same happens in Web design.</p>
<p>Consider a metaphor. The closest physical product to a website is a periodical. Take <a href="http://www.wired.com/">Wired</a> magazine (the physical magazine, that is, not the website or iPad app, which have slightly different characteristics). I’ve been reading it for more than 10 years, and if I had to describe it succinctly I would say “forward-thinking and cool.” Wired reinvents itself every once in a while and persistently fine-tunes the design, but the scope remains the same. Excellent design and illustration, superbly written long articles and a ton of clever short ones serve the main purpose: to introduce its audience to a new era. Audiences change over time, and new eras dawn, but Wired remains. Why? Because it has always <strong>respected a higher purpose</strong>. Sure, many magazines are well designed, and enough of them have great content. But you rarely find one with a unique identity, an identity that can’t be easily copied.</p>
<p>Your probably less complicated Web project needs to perform similarly. You must define the objectives. The design must promote them. Good content should prevail. You know the rules; make sure to follow them. Moreover, know where to stop. If it’s a new idea with vague potential or yet another feature or a last-minute change, just say no.</p>
<p>Websites are like breathing organisms. They evolve; new features are added and others are dropped, but they never stay still. Or at least they shouldn’t. Thus, while a promising fresh idea shouldn’t be discarded, it should be held until the next major update.</p>
<p>Big, ambitious, well-funded websites often seem to lose focus. Their owners try to satisfy <em>all</em> requests. This is a recipe for disaster, because it creates unnecessary friction between everyone working on the project. It dulls the impact of the best features and, above all, the scope. Tension fills the air. The worst days are ahead.</p>
<p>Such practices have led to the infamous concept of <a href="http://en.wikipedia.org/wiki/Design_by_committee" title="Read more about the Design by committee term">design by committee</a>. Simply put, if everything is important, then nothing is important.</p>
<h3>Iterations</h3>
<p><a href="http://www.flickr.com/photos/london/129181467/" title="apple store regent street london by jonrawlinson, on Flickr"><img src="http://media.smashingmagazine.com/wp-content/uploads/2012/01/apple.jpg" alt="Apple Store, London" width="500" height="350" class="alignnone size-full wp-image-110455" /></a><br />
<em>Is what Apple does magic? I think not. (Image: <a href="http://www.flickr.com/photos/london/129181467/">Jon Rawlinson</a>)</em></p>
<p>Let’s talk Apple. Apple’s iconic design and its founder’s exceptional way of thinking have been overanalyzed lately.</p>
<p>No matter how many words we write about Steve Jobs, we still seem to explain away his success as being a kind of magic. But that’s plainly wrong. People are inclined towards the least complicated, least demanding explanation to a conundrum. It is written in our genes. We think more deeply only when there’s a serious reason to do so. (But I digress.)</p>
<p>So, let’s do away with what Adrian Slywotzky refers to as the <a href="http://blogs.hbr.org/cs/2011/08/steve_jobs_and_the_myth_of_eur.html" title="Steve Jobs and the Eureka Myth">“Eureka” myth</a>:</p>
<blockquote>
<p>Apple would love us to believe it’s all “Eureka.” But Apple produces 10 pixel-perfect prototypes for each feature. They compete &mdash; and are winnowed down to three, then one, resulting in a highly evolved winner. Because Apple knows the more you compete inside, the less you’ll have to compete outside.</p>
</blockquote>
<p>If Apple iterates so painstakingly, why shouldn’t we?</p>
<p>Inspiration for a great design roars when it comes. And implementing the idea brings a rush of enthusiasm. And our eyes sparkle when we anticipate outstanding success. And yet it rarely works that way.</p>
<p>Why? Because ideas and their execution are <strong>seldom free from flaws</strong>. You know the old cliché, “There is always room for improvement.” It still stands. There <em>is</em> always room for improvement, and accepting that your idea is the one that needs improvement takes courage. Demolishing your next great product in order to make it better takes nerve and self-discipline. But it also makes you wiser, and can dramatically improve the product.</p>
<p>Iterating extensively and in detail doesn’t depend on a certain type of project or a certain budget. It’s a tricky thing, because it forces us to confront our imperfect nature as human beings. To embrace our inner flaws is to walk the road of truth and maturity, silently, without making a show that we’re doing it.</p>
<p>This weight might feel a little heavy on our shoulders. If it does or if you dismiss Apple’s success, consider what Oliver Reichenstein, head of <a href="http://www.informationarchitects.jp/en/">Information Architects</a>, <a href="https://plus.google.com/115711522874757126523/posts/PoPTYdVFYyt" title="Read the article The best way to climb in the App Store charts? No, it's not lowering the price.">says about the iterations</a> that his team makes in each development phase (this quote appears in the comments section):</p>
<blockquote>
<p>It’s often almost impossible to explain easily why things look like they do, because we went through so many iterations, that it feels like explaining a chess game with all the ifs and whats.</p>
</blockquote>
<p>The same goes when designing for the Web: there’s no excuse to avoid making as many iterations as we can.</p>
<h3>Final Thoughts</h3>
<p>When successful designers are asked where they seek inspiration, they often say something like, “Everywhere &mdash; I go for a walk and observe the world around me.” And it’s true. But what they don’t often say is that they also know what to observe and how to ignore the noise of the world.</p>
<p>There are many beautiful well-functioning products around us. <strong>Each has a story to tell</strong>, a story that is strongly attached to its design, its scope and the iterations that the designer took before releasing it to the world.</p>
<p>Take the Dyson vacuum cleaner. Its design is at least impressive, and its scope is clear (to suck dirt better than other cleaners and, thus, to make your environment healthier), and it took hundreds of prototypes for the designers to figure out how to make it work without a bag. The first Dyson vacuum cleaner was sold in 1970! To explore further and find similar products, just search for our three key words: “design scope iteration.”</p>
<p>Creating a lasting website is no easier than creating a lasting vacuum cleaner. But neither is it impossible. It requires a holistic approach, focus and maturity, just like the products we’ve looked at here. Not to mention, it requires a <a href="http://en.wikipedia.org/wiki/Paradigm_shift" title="Read about Paradigm shift in Wikipedia">paradigm shift</a>.</p>
<p><em>(al)</em></p>
<hr />
<p>© Yiannis Konstantakopoulos for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/what-successful-products-teach-us-about-web-design/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introduction To Linux Commands</title>
		<link>http://webreweries.com/introduction-to-linux-commands/</link>
		<comments>http://webreweries.com/introduction-to-linux-commands/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 12:23:32 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[Web]]></category>

		<guid isPermaLink="false">http://webreweries.com/introduction-to-linux-commands/</guid>
		<description><![CDATA[&#160;&#160; At the heart of every modern Mac and Linux computer is the “terminal.” The terminal evolved from the text-based computer terminals of the 1960s and ’70s, which themselves replaced punch cards as the main way to interact with a computer. It’s also known as the command shell, or simply “shell.” Windows has one, too, [...]]]></description>
			<content:encoded><![CDATA[<table width="650">
<tr>
<td width="650">
<div>
      <img src="http://statisches.auslieferung.commindo-media-ressourcen.de/advertisement.gif" alt="" border="0" /><br />
      <a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=1" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=1" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=2" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=2" border="0" alt="" /></a>&nbsp;<a href="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=target&amp;collection=smashing-rss&amp;position=3" target="_blank"><img src="http://auslieferung.commindo-media-ressourcen.de/random.php?mode=image&amp;collection=smashing-rss&amp;position=3" border="0" alt="" /></a>
    </div>
</td>
</tr>
</table>
<p>At the heart of every modern Mac and Linux computer is the “terminal.” The terminal evolved from the <a href="http://en.wikipedia.org/wiki/VT52">text-based computer terminals</a> of the 1960s and ’70s, which themselves replaced punch cards as the main way to interact with a computer. It’s also known as the command shell, or simply “shell.” Windows has one, too, but it’s called the “command prompt” and is descended from the MS-DOS of the 1980s.</p>
<p>Mac, Linux and Windows computers today are mainly controlled through user-friendly feature-rich graphical user interfaces (GUIs), with menus, scroll bars and drag-and-drop interfaces. But all of the basic stuff can still be accomplished by typing text commands into the terminal or command prompt.</p>
<p>Using Finder or Explorer to open a folder is akin to the <code>cd</code> command (for “change directory”). Viewing the contents of a folder is like <code>ls</code> (short for “list,” or <code>dir</code> in Microsoft’s command prompt). And there are hundreds more for moving files, editing files, launching applications, manipulating images, backing up and restoring stuff, and much more.</p>
<p>So, why would anyone want to bother with these text commands when you can use the mouse instead? The main reason is that they are very useful for controlling remote computers on which a GUI is not available, particularly Web servers, and especially Linux Web servers that have been stripped of all unnecessary graphical software.</p>
<p>Sometimes these lean Linux servers are managed through a Web browser interface, such as cPanel or Plesk, letting you create databases, email addresses and websites; but sometimes that is not enough. This article provides a broad introduction to text commands and the situations in which they are useful. We’ll cover the following:</p>
<ul>
<li>Why knowing a few commands is useful;</li>
<li>Issuing commands on your own computer;</li>
<li>Using SSH to log into your Web server;</li>
<li>Getting your bearings: <code>pwd</code>, <code>cs ls</code>;</li>
<li>Viewing and moving files: <code>cat</code>, <code>more</code>, <code>head</code>, <code>tail</code>, <code>mv</code>, <code>cp</code>, <code>rm</code>;</li>
<li>Searching for files: <code>find</code>;</li>
<li>Looking through and editing files: <code>grep</code>, <code>vi</code>;</li>
<li>Backing up and restoring files and databases: <code>tar</code>, <code>zip</code>, <code>unzip</code>, <code>mysqldump</code>, <code>mysql</code>;</li>
<li>File permissions: <code>chmod</code>.</li>
</ul>
<h3>Why Knowing A Few Linux Commands Is Useful</h3>
<p>As a website developer or server administrator, you would gain a big asset in becoming comfortable with these commands: for website emergencies, to configure a server and for your CV. It can also save you money. Many hosting companies offer fully managed servers but at a high monthly premium. Or else they charge by the hour for technical support.</p>
<p>Perhaps you need to archive some big files or make a change to the <code>httpd.conf</code> file or figure out why your website’s images have suddenly stopped loading. You might not want to pay $50 to your server’s administrator for a five-minute job. This article gives you the tools to make such changes yourself.</p>
<p>And why “Linux” commands? Two main types of servers are available today: Windows and UNIX. UNIX-based servers include Linux (which split off in 1991), Mac OS X (2002) and several more traditional UNIX systems, such as BSD, Solaris and HP-UX. Linux commands are basically UNIX commands and so will run on all of them. In fact, I use the term “Linux” here only because it is more common and less frightening than “UNIX.” Windows servers, on the other hand, have a much smaller market share and are more often controlled through GUIs, such as <a href="http://en.wikipedia.org/wiki/Remote_Desktop_Protocol">Remote Desktop</a> and <a href="http://en.wikipedia.org/wiki/Virtual_Network_Computing">VNC</a>, rather than the command line.</p>
<p>In fact, a November 2011 survey showed that <a href="http://news.netcraft.com/archives/2011/11/07/november-2011-web-server-survey.html">Apache accounted for about 65% of all Web servers</a>. Apache usually runs in the popular LAMP configuration: Linux, Apache, MySQL and PHP. Microsoft was a distant second, with 15%. Third place nginx runs on Linux, UNIX, Mac and Windows. So, the commands in this article will work on at least two thirds of all servers.</p>
<h3>Issuing Commands To Your Own Computer</h3>
<p>You can quickly experiment with text commands on your own computer. On Mac with OS X, go to Applications → Utilities, and run Terminal. On a PC with Windows, go to Start → All Programs → Accessories, and choose “Command Prompt.” On Ubuntu Linux, go to Applications → Accessories, and choose Terminal.</p>
<p>On Windows you should see this:</p>
<p><img class="size-full wp-image-116394" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/command-prompt.png" alt="" width="500" /></p>
<p><em>The Windows command prompt</em></p>
<p>This is the command line (i.e. shell, prompt or terminal) on your own computer. You can type <code>dir</code> on Windows or <code>ls</code> on Linux or Mac followed by “Enter” to see a list of the files in the current “directory” (i.e. folder, location or path).</p>
<p>All we will be doing for the rest of this article is opening up one of these terminals on a remote computer: your Web server.</p>
<p>You may have used VNC or Remote Desktop, which allow you to actually view the desktop on someone else’s computer: your screen shows their screen, your mouse controls their mouse, your keyboard mimics their keyboard.</p>
<p>The terminal is similar to this but without the fancy menus or scroll bars. If you were to plug a keyboard and screen into your Web server, sitting in a fireproof basement somewhere, you would probably see one of these terminals, waiting patiently for your user name and password.</p>
<h3>Using SSH To Log Into Your Web Server</h3>
<p>The application SSH, or Secure Shell, is used to log into Web servers. It often takes the same user name and password as FTP, but it has to be allowed by your host. If you have a dedicated Web server, it is probably already allowed. If you use cloud hosting, then you might need to request it first. If you are on shared hosting, you’ll definitely need to request it, and the administrator may refuse.</p>
<p>On Linux or Mac, open up Terminal as described above and type the following:</p>
<pre>ssh -l username www.myserver.com</pre>
<p>The <code>-l</code> stands for “log in as,” and your user name goes after it. If SSH is allowed, then it will ask for a password. If not, you’ll get an error message, like this one:</p>
<p><img class="alignnone size-full wp-image-116396" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/home-ssh-to-smashing.png" alt="SSH Command and Connection Error" width="500" /></p>
<p><em>Running the <code>ssh</code> command and being denied access</em></p>
<p>On Windows, you will need to download some SSH software. <a href="http://www.putty.org/">Putty</a> is a popular and easy choice. It downloads as a single EXE file, which you can save to your desktop and run right away. Type your website as the host name, check the SSH box under “Connection Type,” and click “Open.” It will ask for your user name and then your password.</p>
<p><img class="size-full wp-image-116398" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/linux-commands-putty.png" alt="Running Putty on Windows" width="458" height="441" /></p>
<p><em>Running Putty on Windows in order to SSH to your Web server</em></p>
<p>Once successfully logged in, you will usually see a welcome message. After that, you will be presented with a few letters and a <code>$</code> sign (or a <code>#</code> sign if you have logged in as root). The letters often represent your user name and where you’ve come from, or the name of the server. A <code>~</code> indicates that you are in your home directory. The <code>$</code> is the prompt; it indicates that you can start typing commands now, something like:</p>
<p><img class="alignnone size-full wp-image-116399" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/home-ssh-successful.png" alt="Successful SSH to a server" width="500" /></p>
<p><em>A successful SSH log-in to a Web server. The <code>$</code> means we can start typing commands.</em></p>
<p>The next section introduces a few basic commands.</p>
<h3>Getting Your Bearings</h3>
<p>On Windows, when you go to “My Documents” from the Start menu, it opens your “My Documents” directory in Windows Explorer and shows the contents. If some nosy colleague walked by and asked “What directory are you in?” you could say “I’m <em>in</em> my documents.”</p>
<p>If you SSH’ed to a server as the user “admin,” you would land <em>in</em> admin’s home directory, probably <code>/home/admin</code>. You can verify this by typing the command <code>pwd</code>, which shows your current location (i.e. folder, directory or path).</p>
<p><img class="alignnone size-full wp-image-116454" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-pwd-cd-base2.png" alt="The pwd and ls commands" width="500" /></p>
<p><em>The <code>pwd</code> command tells you where you are, <code>cd</code> changes the directory and <code>ls</code> shows the contents of a directory.</em></p>
<p>To change to another directory, use the <code>cd</code> command with the destination, like so:</p>
<pre>cd /</pre>
<p>This will change the directory to <code>/</code>, the top of the whole UNIX directory structure. The command <code>ls</code> lists the contents of the current directory, in this case <code>/</code>.</p>
<p>In the screenshot above, the terminal is color-coded. Dark-blue entries are subdirectories, and black entries are files. A lot of the interesting stuff on Web servers happens in the <code>/etc</code>, <code>/home</code> and <code>/var</code> directories. Using just <code>cd</code> and <code>ls</code>, you can explore your server and find out where stuff is.</p>
<p>When using <code>cd</code>, you can specify the new directory absolutely (beginning with a slash, like <code>/var/www</code>) or relative to your current location (without the initial slash). You can also go up a directory with two dots. Practice with the sequence below, pressing “Enter” after each command. Can you guess what the last command will tell you?</p>
<pre>cd /var
ls
cd www
ls
cd ..
pwd</pre>
<h3>Viewing And Moving Files</h3>
<p>On many Linux servers, websites are located in <code>/var/www/vhosts</code>. You can check on your server by doing the following:</p>
<pre>cd /var/www/vhosts
ls</pre>
<p>If you see a list of websites, you can move into one of them. Within the website’s main directory, you will probably see the same files that you see when you FTP to the website, things such as <code>httpdocs</code> (where your website’s files are), <code>httpsdocs</code> (if you have a separate secure website), <code>conf</code> (configuration files), <code>statistics</code> (logs and compiled statistics), <code>error_docs</code>, <code>private</code> and more.</p>
<p>You can then change into your website’s public-facing directory, which is <code>myserver.com/httpdocs</code> in this example:</p>
<pre>cd myserver.com
ls
cd httpdocs
ls</pre>
<p>Now you have arrived, and you can run a new command, <code>cat</code>, which displays the contents of a file. For instance, if you have an <code>index.html</code> file, run:</p>
<pre>cat index.html</pre>
<p>If your <code>index.html</code> file is more than a few lines long, it will rush past in a blur. You can use the <code>more</code> command to show it slowly, one page at time. After you type the command below, it will show you the first page. You can press the space bar to show the next page, “Enter” to show the next line, and Q to quit.</p>
<pre>more index.html</pre>
<p>You can also show just the first few or last few lines of a file with the <code>head</code> and <code>tail</code> commands. It shows 10 lines by default, but you can pass in any number:</p>
<pre>head index.html
tail -20 index.html</pre>
<p>If you would like to rename this file, use the <code>mv</code> command, short for “move”:</p>
<pre>mv index.html indexold.html</pre>
<p>Similarly, the <code>cp</code> is the copy command, and <code>rm</code> removes files.</p>
<pre>cp index.html indexold.html
rm indexold.html</pre>
<p>Below is a string of commands in action. In order, it confirms the current directory with <code>pwd</code>, looks at the contents with <code>ls</code>, views <code>index.html</code> with <code>cat</code>, then renames it with <code>mv</code>, and finally removes it with <code>rm</code>, with a lot of <code>ls</code> in between to show the changes.</p>
<p><img class="alignnone size-full wp-image-116455" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-cat-mv-rm.png" alt="The cat and mv commands" width="500" /></p>
<p><em>The <code>cat</code>, <code>mv</code> and <code>rm</code> commands in action, for displaying, moving and then removing a file.</em></p>
<h4>More Advanced Tip: Changing the Prompt</h4>
<p>Note that in our initial examples, the full prompt included the current directory. For instance, in <code>[admin@myserver /]$</code>, the <code>/</code> indicated that the user was in the <code>/</code> directory. In the example directly above, it was removed, or else it would have crowded the screenshot by constantly saying <code>[admin@myserver /var/www/vhosts/myserver.com/httpdocs]$</code>.</p>
<p>You can change the prompt to whatever you want by setting the <code>PS1</code> environment variable. Here are a couple of examples, the latter including the user, host and current directory:</p>
<pre>PS1="[woohoooo ]$ "
PS1='[${USER}@${HOSTNAME} ${PWD}]$ '</pre>
<h3>Searching For Files</h3>
<p>On big websites, files can get lost. Perhaps you vaguely remember uploading a new version of your client’s logo about four months ago, but it has since fallen out of favor and been replaced. Now, out of the blue, the client wants it back. You could download everything from the server using FTP and search the files using Finder or Explorer. Or you could log in and search using the command line.</p>
<p>The <code>find</code> command can search through files by name, size and modified time. If you just give it a directory, it will list everything that the directory contains. Try this:</p>
<pre>find /var/www</pre>
<p>You will probably see lots and lots of file names whizzing past. If you have many websites, it could continue for a couple of minutes. You can stop it by hitting Control + C (i.e. holding down the Control key on your keyboard and pressing the letter C). That’s the way to interrupt a Linux command. A more useful command would be:</p>
<pre>find /var/www | more</pre>
<p>The pipe symbol (<code>|</code>) takes the output of one command (in this case, the long list of files produced by <code>find</code>) and passes it to another command (in this case, <code>more</code>, which shows you one page of files at a time). As above, press the space bar to show the next page, and Q to quit.</p>
<p>To search for a specific file name, add <code>-name</code> and the file name. You can use <code>\*</code> as a wild card (the backslash is not always necessary but is good practice with the <code>find</code> command). You can combine searches using <code>-o</code> (for “or”). If you leave out the <code>-o</code>, it becomes an “and.”</p>
<pre>find /var/www -name logo.gif
find /var/www -name \*.gif
find /var/www -name \*.gif -o -name \*.jpg</pre>
<p>You can also search by size by adding <code>-size</code>. So, you could look for all GIFs between 5 and 10 KB:</p>
<pre>find /var/www -name \*.gif -size +5k -size -10k</pre>
<p>Similarly, to find a file that was last changed between 90 and 180 days ago, you can use <code>-ctime</code>:</p>
<pre>find /var/www -name \*.gif -ctime +90 -ctime -180</pre>
<p>In both of these cases, you will probably also want to know the actual file size and date last changed. For this, you can add <code>-printf</code>, which is similar to the C function <code>printf</code> in that you use the <code>%</code> sign to output various information. This command outputs the file size (up to 15 characters wide), the date and time changed (down to the nanosecond) and the file name:</p>
<pre>find /var/www -name \*.gif -size +5k -size -10k -ctime +90 -ctime -180 -printf "%10s  %c  %p\n"</pre>
<p>With that whopper, you have hopefully found the missing file. Here is an example:</p>
<p><img class="alignnone size-full wp-image-116635" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-find.png" alt="Variations on the find command" width="500" /></p>
<p><em>Searching for all GIFs within a single website, and displaying the file sizes, changed times and file names.</em></p>
<p>Another useful parameter is <code>-cmin</code>, which lets you see files that have changed in the last few minutes. So, if something goes wrong on a website, you can run this to see everything that has changed in the last 10 minutes:</p>
<pre>find /var/www -cmin -10 -printf "%c %p\n"</pre>
<p>This will show files and directories that have changed. Thus, it won’t show files that have been removed (because they are no longer there), but it will show the directories that they were removed from. To show only files, add <code>-type f</code>:</p>
<pre>find /var/www -cmin -10 -type f -printf "%c %p\n"</pre>
<h4>More Advanced Tip: Reading the Manual</h4>
<p>I didn’t have to remember all of the variations above. I consulted the manual several times, like so:</p>
<pre>man find</pre>
<p>While reading a manual page, the controls are the same as <code>more</code>: space bar for paging, “Enter” to go forward one line and Q to quit. The up and down arrows also work. You can search within a page of the manual by typing <code>/</code> and a keyword, such as <code>/printf</code>. This will jump you to the next occurrence of that term. You can search backwards with <code>?printf</code>, and you can repeat the search by pressing N.</p>
<h3>Looking Through And Editing Files</h3>
<p>Most visual code editors allow you to search through many files when you’re looking for a particular variable or bit of HTML. You can also do this directly on the server using the command <code>grep</code>. This is useful when something goes wrong on a complex website with hundreds of files and you have to find the error and fix it fast.</p>
<p>Let’s say you view the HTML source and see that the error happens right after <code>&lt;div id="left"&gt;</code>. You can let <code>grep</code> do the searching for you. Give it the thing to be searched for and the files to search in. These commands change to the website directory and grep through all files ending in <code>php</code>. You need to put quotes around the HTML because it contains spaces, and the inner quotes have to be escaped with backslashes:</p>
<pre>cd /var/www/vhosts/myserver.com/httpdocs/
grep "&lt;div id=\"left\"&gt;" *.php</pre>
<p>This will tell you which files in the current directory contain that bit of HTML. If you want to search in subdirectories, you can use the <code>-r</code> option with a directory at the end, instead of a list of files. The single dot tells it to start in the current directory.</p>
<pre>grep -r "&lt;div id=\"left\"&gt;" .</pre>
<p>Alternatively, you could use the <code>find</code> command from above to tell it which files to look in. To put a command within a command, enclose it in back apostrophes. The following searches only for the HTML in PHP files modified in the last 14 days:</p>
<pre>grep "&lt;div id=\"left\"&gt;" `find . -name \*.php -ctime -14`</pre>
<p>You can also add <code>-n</code> to show the line numbers, as in this example:</p>
<p><img class="alignnone size-full wp-image-116637" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-grep.png" alt="Using grep to look for things inside files" width="500" /></p>
<p><em>Searching for a bit of HTML within the PHP files in the current directory</em></p>
<p>And how do you quickly fix an error when you find it? To do that, you will need to start up a Linux text editor. Different editors are available, such as <code>pico</code> and <code>emacs</code>, but the one that is guaranteed to be there is <code>vi</code>. To edit a file, type <code>vi</code> and the file name:</p>
<pre>vi index.php</pre>
<p><code>vi</code> is a complex editor. It can do most of the amazing things that a fully featured visual editor can do, but without the mouse. In brief, you can use the arrow keys to get around the file (or H, J, K and L on very basic terminals where even the arrow keys don’t work). To delete a character, press X. To delete a whole line, press DD. To insert a new character, press I. This takes you into “insert mode,” and you can start typing. Press the Escape key when finished to go back to “command mode.” Within command mode, type <code>:w</code> to save (i.e. write) the file and <code>:q</code> to quit, or <code>:wq</code> to do both at the same time.</p>
<p>The <code>vi</code> editor also supports copying and pasting, undoing and redoing, searching and replacing, opening multiple files and copying between them, etc. To find out how, look for a good <code>vi</code> tutorial (such as “<a href="http://www.eng.hawaii.edu/Tutor/vi.html">Mastering the VI Editor</a>”). Note also that on many computers, <code>vi</code> is just a shortcut to <code>vim</code>, which stands for “vi improved,” so you can follow vim tutorials, too.</p>
<p><img class="alignnone size-full wp-image-116638" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-vi.png" alt="The Linux editor vi" width="500" /></p>
<p><em>Editing files with the <code>vi</code> text editor</em></p>
<h4>More Advanced Tip: Tab Completion</h4>
<p>When changing directories and editing files, you might get tired of having to type the file names in full over and over again. The Terminal loses some of its shine this way. This can be avoided with command-line completion, performed using tabs.</p>
<p>It works like this: start typing the name of a file or a command, and then press Tab. If there is only one possibility, Linux will fill in as much as it can. If nothing happens, it means there is more than one possibility. Press Tab again to show all of the possibilities.</p>
<p>For example, if above I had typed…</p>
<pre>vi i</pre>
<p>… And then pressed Tab, it would have filled in the rest for me…</p>
<pre>vi index.php</pre>
<p>… Unless several files started with I. In that case, I would have had to press Tab again to see the options.</p>
<h3>Backing Up And Restoring Files And Databases</h3>
<p>Some Linux servers do support the <code>zip</code> command, but all of them support <code>tar</code>, whose original purpose was to archive data to magnetic tapes. To back up a directory, specify the backup file name and the directory to back up, such as:</p>
<pre>cd /var/www/vhosts/myserver.com/httpdocs/
tar czf /tmp/backup.tgz .</pre>
<p>The <code>czf</code> means “create zipped file.” The single dot stands for the current directory. You can also back up individual files. To back up just things changed in the last day, add the <code>find</code> command:</p>
<pre>tar cfz /tmp/backup.tgz `find . -type f -ctime -1`</pre>
<p>Both of these commands put the actual backup file in the temporary <code>/tmp</code> directory — if the backup file is in the same directory that you are backing up, it will cause an error. You can move the file to where you need it afterwards. To see what is in an archive, use the <code>tzf</code> options instead:</p>
<pre>tar tfz /tmp/backup.tgz</pre>
<p><img class="alignnone size-full wp-image-116642" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-tar.png" alt="Linux tar command" width="500" /></p>
<p><em>Creating and showing the contents of a backup file using <code>tar</code></em></p>
<p>To restore things, use <code>xzf</code>, for “extract from zipped file.” First, run a listing as above to check what’s in there, and then restore one or more of the files. The second command restores all of the files from the archive into the current directory:</p>
<pre>tar xfz /tmp/backup.tgz ./index.php ./test.php
tar xfz /tmp/backup.tgz</pre>
<p>If your server has the <code>zip</code> command, then run these commands to do the same thing:</p>
<pre>cd /var/www/vhosts/myserver.com/httpdocs/
zip -r /tmp/backup.zip .
zip -r /tmp/backup.zip `find . -type f -ctime -1`
unzip -l /tmp/backup.zip
unzip /tmp/backup.zip test.php
unzip /tmp/backup.zip</pre>
<p>If your Web server uses MySQL, then you might want to regularly back up your data. For this, there is the <code>mysqldump</code> command. The format of the command is:</p>
<pre>mysqldump --user="username" --password="password" --add-drop-table database</pre>
<p>Replace the user name, password and database with your values. Instead of specifying a database, you can use <code>-A</code> to dump all databases. If you get errors about table locking, you can add <code>--single-transaction</code>. Once you submit the user name and password, this will output a load of SQL in a long blur. To save the output to a file, you will need to use the <code>&gt;</code> symbol. This sends the output of a command to a file.</p>
<pre>mysqldump --user="username" --password="password" --add-drop-table database &gt; /tmp/db.sql</pre>
<p>To restore a database backup, you can use the <code>mysql</code> command. This command lets you run SQL statements from the command line. For example, the following command gets you into the database:</p>
<pre>mysql --user="username" --password="password" dbname</pre>
<p>At the <code>mysql&gt;</code> prompt, you can type an SQL statement such as:</p>
<pre>mysql&gt; SHOW TABLES;
mysql&gt; SELECT * FROM customers;</pre>
<p>For restoring, you’ll need to use the pipe (<code>|</code>), which will send the output from one command into another. In this case, <code>cat</code> will output the database backup file and send it into the <code>mysql</code> command:</p>
<pre>cat /tmp/db.sql | mysql --user="username" --password="password" dbname</pre>
<p>If people are looking over your shoulder while you’re doing this, you might not want to type the password directly into the command. In this case, just leave it out, and <code>mysql</code> or <code>mysqldump</code> will ask for it instead.</p>
<pre>cat /tmp/db.sql | mysql --user="username" --password dbname</pre>
<p>Once you’ve created the database backup file, you can include it in the backups we did above:</p>
<pre>tar czf /tmp/backup.tgz . /tmp/db.sql</pre>
<h4>More Advanced Tip: Hidden Files and Wildcards</h4>
<p>Many websites use a file called <code>.htaccess</code> to implement URL rewriting and password protection. In UNIX, all files starting with a single dot are hidden. They won’t show up when you do <code>ls</code>, and they won’t get backed up if you do this:</p>
<pre>tar czf /tmp/backup.tgz *</pre>
<p>The <code>*</code> is a wildcard. Before the command executes, the <code>*</code> is replaced with all non-hidden files in the current directory. To include hidden files as well, it’s better to back up the whole directory as above using a single dot:</p>
<pre>tar czf /tmp/backup.tgz .</pre>
<p>To show hidden files when doing a directory listing, add <code>-a</code> to the command:</p>
<pre>ls -a
ls -la</pre>
<h3>File Permissions</h3>
<p>If you use FTP regularly to upload files to websites, then you might be familiar with permissions. All files and directories on Linux (and Mac, Windows and other UNIX systems) have an owner, a group and a set of flags specifying who can read, write and execute them.</p>
<p>The list of user names (and, thus, potential file owners) on a UNIX system is stored in the file <code>/etc/passwd</code>. You can try:</p>
<pre>more /etc/passwd</pre>
<p>The Apache Web server is started by a command when the Web server boots up. But the user who starts Apache is often a restricted and unprivileged user, such as <code>nobody</code> or <code>apache</code> or <code>www-data</code>. This is for security reasons, to prevent someone from hacking into the website and then gaining control of the whole server. You can find out who that user is by running the command below and looking in the first column. The <code>ps aux</code> command shows all of the processes running on the server, and <code>grep</code> shows only processes that contain the word “apache.”</p>
<pre>ps aux | grep apache</pre>
<p>This can cause conflicts, though. If you upload a file to a website via FTP and log in as <code>admin</code>, then the file will be owned by <code>admin</code>. If Apache was started by the user named <code>nobody</code>, then Apache might not be able to read that file and won’t be able to send it to any users who request it when viewing the website. Instead, users will see a broken image or a message such as “403 Forbidden. You don’t have permission to access that file.”</p>
<p>A subtler and more common problem is when an image can be viewed but not overwritten or removed via the website’s content management system (CMS). In this case, the user <code>nobody</code> can read the file but can’t write to it.</p>
<p>You can view permissions using the <code>ls</code> command with an extra <code>-l</code>, like so:</p>
<pre>ls -l</pre>
<p><img class="alignnone size-full wp-image-116644" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-ls-l3.png" alt="ls command with long list format" width="500" /></p>
<p><em>The command <code>ls -l</code> shows information about permissions, owners, size and date.</em></p>
<p>This directory contains three files, with three subdirectories shown in green. The first letter on each line indicates the type: <code>d</code> for directory and <code>-</code> for normal file. The next nine letters are the permissions; they indicate the read, write and execute permissions for the owner, group and everyone else. After the number (which represents the size) is the owner and group for the file. These files are all owned by <code>admin</code>. This is followed by the file size (less useful for directories) and the date and time of the last modification.</p>
<p>Below is another example of three files in an <code>images</code> subdirectory. Two of the files were uploaded by <code>admin</code> via FTP, and Apache was started by the user <code>www-data</code>. One of the files will be unviewable through a Web browser. Which do you think it is?</p>
<p><img class="alignnone size-full wp-image-116648" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/ssh-ls-l4.png" alt="Bad permissions" width="500" /></p>
<p>The answer is <code>bg.jpg</code>. Both <code>bg.jpg</code> and <code>logo2.gif</code> have the same permissions: only the owner can read and write them. The <code>logo2.gif</code> file is OK because the owner is <code>www-data</code>, so that file can be accessed, read and returned by Apache. The <code>logo.gif</code> file is also OK because it has <code>r</code> in all three permissions (i.e. owner, group and everyone else). But <code>bg.jpg</code> will fail because only the user <code>admin</code> can read it, not the user who started Apache. If you were to access that file in a Web browser, you would see something like this:</p>
<p><img class="size-full wp-image-116646" src="http://media.smashingmagazine.com/wp-content/uploads/2011/11/forbidden.png" alt="" width="500" /></p>
<p><em>What happens when you try to access a file without the correct permissions in a browser.</em></p>
<p>These sorts of errors can be resolved with the <code>chmod</code> command, which changes file permissions. The three sets of permissions are represented in commands with <code>u</code> (“user” or owner), <code>g</code> (“group”), <code>o</code> (“other” or everyone else) or <code>a</code> (“all”). So, to enable all users to read <code>bg.jpg</code>, either of these would work:</p>
<pre>chmod go+r images/bg.jpg
chmod a+r images/bg.jpg</pre>
<p>If this file were also part of a CMS, then you’d have to also add write permissions before the CMS could overwrite it:</p>
<pre>chmod a+rw images/bg.jpg</pre>
<p>You can also make these changes to all files in all of the subdirectories by adding <code>-R</code>. This recursive operation is not supported by some FTP programs and so is a useful command-line tool:</p>
<pre>chmod -R a+rw images/</pre>
<p>Directories also need the <code>x</code> (“execute” permission), but files generally don’t (unless they are in a <code>cgi-bin</code>). So, you can give everything <code>rwx</code> (read, write and execute) permissions and then take away the <code>x</code> from the files:</p>
<pre>chmod -R a+rwx images/
chmod -R a-x `find images/ -type f`</pre>
<p>However, this does leave everything rather open, making it easier for hackers to gain a foothold. Ideally, your set of permissions should be as restrictive as possible. Files should be writable by the Apache user only when needed by the CMS.</p>
<h4>More Advanced Tip: Chown and the Superuser</h4>
<p>Another useful permissions command is <code>chown</code>. It changes the owner of a file. However, you have to be logged in as a user with sufficient privileges (such as <code>root</code>) in order to run it. To make <code>www-data</code> the owner of <code>bg.jpg</code>, run this:</p>
<pre>chown www-data images/bg.jpg</pre>
<p>This will probably return “Permission denied.” You have to run the command as the superuser. For this, you will need to find the root password for your server, and then run the following:</p>
<pre>sudo chown www-data images/bg.jpg</pre>
<p>You will definitely need to be the superuser if you want to edit configuration files, such as Apache’s:</p>
<pre>sudo vi /etc/httpd/conf/httpd.conf</pre>
<p>If you want to become the superuser for every command, run this:</p>
<pre>su</pre>
<p>This is dangerous, though, because you could easily accidentally remove things — especially if you are using the <code>rm</code> command, and particularly if you’re using it in recursive mode (<code>rm -r</code>), and most especially if you also force the changes and ignore any warnings (<code>rm -r -f</code>).</p>
<h3>Conclusion</h3>
<p>This article has introduced some very useful Linux commands, a potential asset for any aspiring Web worker and a surefire way to impress a dinner date.</p>
<p>For a few more commands related specifically to website crashes, check out the Smashing Magazine article “<a href="http://coding.smashingmagazine.com/2010/12/13/what-to-do-when-your-website-goes-down/">What to Do When Your Website Goes Down</a>.” For a broader view, try this <a href="http://ss64.com/bash/">list of Linux commands</a>. And the “<a href="http://www.eng.hawaii.edu/Tutor/vi.html">Mastering the VI Editor</a>” tutorial mentioned above explains vi well.</p>
<p>Hopefully, you now have the tools and confidence to pitch in the next time one of your websites has a problem.</p>
<p><em>(al)</em></p>
<hr />
<p>© Paul Tero for <a href="http://www.smashingmagazine.com">Smashing Magazine</a>, 2012.</p>
]]></content:encoded>
			<wfw:commentRss>http://webreweries.com/introduction-to-linux-commands/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

