<?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>Kyle Larson Web Design Articles</title>
	<atom:link href="http://www.kylejlarson.com/blog/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.kylejlarson.com/blog</link>
	<description>kylejlarson.com - Web Design Blog of Kyle J Larson</description>
	<lastBuildDate>Thu, 26 Apr 2012 17:49:25 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>Adding an Icon for iPhone, iPad &amp; Android to Your Website</title>
		<link>http://www.kylejlarson.com/blog/2012/adding-an-icon-for-iphone-ipad-android-to-your-website/</link>
		<comments>http://www.kylejlarson.com/blog/2012/adding-an-icon-for-iphone-ipad-android-to-your-website/#comments</comments>
		<pubDate>Thu, 19 Apr 2012 14:20:35 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=156</guid>
		<description><![CDATA[Many sites currently add a favicon before launch that is visible in your user&#8217;s browser tabs and bookmarks, but lots of sites are still missing icons for iOS. By adding an iOS icon, anyone who decides to save your webpage to the home screen of their iPhone, iPad, or Android* will see a nice app-like [...]]]></description>
			<content:encoded><![CDATA[<style>
#iconChart {margin-bottom: 20px;}
#iconChart th, #iconChart td {border: 1px solid #ccc; padding: 10px; text-align: center;}
#iconChart th {font-weight: bold;}
</style>
<p>Many sites currently add a favicon before launch that is visible in your user&#8217;s browser tabs and bookmarks, but lots of sites are still missing icons for iOS.  By adding an iOS icon, anyone who decides to save your webpage to the home screen of their iPhone, iPad, or Android* will see a nice app-like icon rather than an image of your page.</p>
<p>The first step is creating an image.  To support the newest high resolution iPhone and iPad you&#8217;ll want to create several different sized images (The device will take the nearest size larger than it&#8217;s default size if you don&#8217;t have them all).  You can save your images as PNGs to any directory on your site.</p>
<p><img src="http://www.kylejlarson.com/blog/wp-content/uploads/2010/09/kyle_ios_icons.jpg" alt="" title="kyle_ios_icons" width="500" height="144" class="aligncenter size-full wp-image-605" /></p>
<p>Here is a table of the current <a href="http://developer.apple.com/library/ios/#documentation/userexperience/conceptual/mobilehig/IconsImages/IconsImages.html">iOS icon sizes from Apple</a>:</p>
<table id="iconChart">
<tr>
<th>iPhone</th>
<th>iPhone Hi-Res</th>
<th>iPad</th>
<th>iPad Hi-Res</th>
</tr>
<tr>
<td>57&#215;57</td>
<td>114&#215;114</td>
<td>72&#215;72</td>
<td>144&#215;144</td>
</tr>
</table>
<p>Next you&#8217;ll just add a simple bit of code to the HEAD of your site so the devices can find your images (iOS will find these automatically if they are in your site&#8217;s root directory, but it&#8217;s recommended to include it):</p>
<pre><code style="font-size: 10px;">&lt;link rel="apple-touch-icon-precomposed" href="apple-touch-icon-precomposed.png" /&gt;
&lt;link rel="apple-touch-icon-precomposed" sizes="72x72" href="apple-touch-icon-72x72-precomposed.png" /&gt;
&lt;link rel="apple-touch-icon-precomposed" sizes="114x114" href="apple-touch-icon-114x114-precomposed.png" /&gt;
&lt;link rel="apple-touch-icon-precomposed" sizes="144x144" href="apple-touch-icon-144x144-precomposed.png" /&gt;</code></pre>
<p>If you&#8217;d like Apple devices to add rounded corners, a drop shadow, and reflection to your icon automatically you can remove the precomposed portion:</p>
<pre><code>&lt;link rel="apple-touch-icon" href="apple-touch-icon.png" /&gt;</code></pre>
<p>If you&#8217;re creating your iOS icon image you can find templates for use around the web; here&#8217;s a <a href="http://dribbble.com/shots/461654-iOS-App-Icon-Template">good template from Louie Mantia</a> that covers all the sizes.</p>
<p><img src="http://www.kylejlarson.com/blog/wp-content/uploads/2010/09/ios_icons_phone.jpg" alt="ios icons iphone" title="ios_icons_phone" width="320" height="480" class="aligncenter size-full wp-image-606" /></p>
<p>* Note on Android Devices: versions 1.5 &amp; 1.6 work with the &#8220;-precomposed&#8221; images only and 2.1 &amp; new will read the tag without &#8220;-precomposed&#8221;.</p>
<p>** Updated this old article from Sept 3, 2010 to reflect changes with the new iPad</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/adding-an-icon-for-iphone-ipad-android-to-your-website/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Animated Search Box with HTML5 Placeholder</title>
		<link>http://www.kylejlarson.com/blog/2012/animated-search-box-with-html5-placeholder/</link>
		<comments>http://www.kylejlarson.com/blog/2012/animated-search-box-with-html5-placeholder/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 20:29:12 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=481</guid>
		<description><![CDATA[Search is one of the most important functions on large websites. Search engines like Google have made vast improvements in search and as a result many users quickly look toward search as a means of navigation. This tutorial shows how you can make an animated search box with the HTML5 placeholder element to show users [...]]]></description>
			<content:encoded><![CDATA[<style>
#navBar {background: url(http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/bg_navBar.jpg) repeat-x; height: 44px; margin-bottom: 20px;}
#searchBox {background: #1f1f1f; border: 1px solid #606060; border-radius: 5px; box-shadow: 0 0 4px #000000 inset; color: #fff; font-size: 13px; margin: 6px; padding: 5px 25px 5px 4px; width: 172px;}
#searchButton {position: absolute; margin: 12px 0 0 -26px;}	
</style>

<p>Search is one of the most important functions on large websites. Search engines like Google have made vast improvements in search and as a result many users quickly look toward search as a means of navigation. This tutorial shows how you can make an animated search box with the HTML5 placeholder element to show users all the different types of searches they can run on your site.</p>

<h2>The HTML 5 Placeholder</h2>
<p>HTML 5 introduced a number of new options we can use when building forms. The placeholder allows us to add &#8216;hint&#8217; text to the background of an input or textarea that disappears when the user begins typing in the field. This is a great new addition, as the only way to do this previously was with javascript.</p>

<p>As with many new HTML features there are some browser support issues. This will work in all modern versions of Chrome, Safari, Opera, and Firefox. If you are using Internet Explorer this will only work starting in version 10, so we&#8217;ll need to add a fallback for those users.</p>

<div id="navBar"><input id="searchBox" type="text" placeholder="Search Our Site"><input id="searchButton" type="image" src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/icon_searchMag.png"></div>

<h2>Creating the HTML Placeholder</h2>
<p>To start off we&#8217;ll create a form field and add a placeholder to it. I&#8217;ve also added some CSS to make it look nice (to fix alignment bugs in IE you may need to place the two inputs on the same line of code):</p>
<pre><code>&lt;style&gt;
     #navBar {
          background: url(bg_navBar.jpg) repeat-x;
          height: 44px;
     }
     #searchBox {
          background: #1f1f1f;
          border: 1px solid #606060;
          border-radius: 5px;
          box-shadow: 0 0 4px #000000 inset;
          color: #fff;
          font-size: 13px;
          margin: 6px;
          padding: 5px 25px 5px 4px;
          width: 172px;
     }
     #searchButton {
          position: absolute; 
          margin: 12px 0 0 -26px;
     }
&lt;/style&gt;

&lt;div id="navBar"&gt;
     &lt;input id="searchBox" type="text" placeholder="Search Our Site"&gt;
     &lt;input id="searchButton" type="image" src="icon_searchMag.png"&gt;
&lt;/div&gt;</code></pre>

<h2>Animating the HTML Placeholder</h2>
<p>Next step we&#8217;ll add in <a href="http://jquery.com/">jQuery</a> and write a script to make an animated search box by changing the content of the placeholder:</p>
<pre><code>...
&lt;div id="navBar"&gt;
     &lt;input id="searchBox" type="text" placeholder="Search Our Site"&gt;
     &lt;input id="searchButton" type="image" src="icon_searchMag.png"&gt;
&lt;/div&gt;

&lt;script type="text/javascript" src="jquery.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
     function changePlaceholder() {
          
          // create our list of different placeholders we'll use
          var placeHolders = new Array(),
          placeHolders[0] = "Search for Toys";
          placeHolders[1] = "Search for Video Games";
          placeHolders[2] = "Search for DVDs";
          
          // x will be our counter for what placeholder we're currently showing
          var x = 0;
          
          // change the placeholder to the current number of our counter
          $('#searchBox').attr('placeholder', placeHolders[x]);

          // increase the counter
          x++;
	  
          // if we've hit the last placeholder then start over
          if(x &gt;= placeHolders.length) {
               x = 0;
          }
	  
          // run this function again in 3 seconds to keep the loop going	
          setTimeout('changePlaceholder()', 3000);
     }
	
     // start running the changePlaceholder function after 3 seconds
     t = setTimeout('changePlaceholder()', 3000);
&lt;/script&gt;</code></pre>

<h2>Fix for IE</h2>
Now we have a working animated placeholder in most browsers, but it still doesn&#8217;t show anything in IE 9 or below. For these older browsers we&#8217;ll just make a static placeholder. There are a number of jQuery scripts out there that solve this issue. I found <a href="https://github.com/mathiasbynens/jquery-placeholder">Mathias Bynens&#8217; solution</a> to work perfect for this.  Just download the script, link to it in your code, and add the function to run it in your script:</p>

<pre><code>&lt;script type="text/javascript" src="jquery.placeholder.min.js"&gt;&lt;/script&gt;
&lt;script&gt;
     $(function() {
          $('input, textarea').placeholder();        
     });
&lt;/script&gt;</code></pre>

<p>Great, now we&#8217;re just about done with the animated search box but we have an issue&#8230; when the changePlaceholder function runs it breaks the fix! To solve this we&#8217;ll put in a conditional comment to keep the loop from running on IE. Just add this after your /script tag:</p>

<pre style="font-size: 12px">
&lt;!--[if lte IE 9 ]>
<code>     &lt;script&gt;
          clearTimeout(t);
     &lt;/script&gt;</code>
&lt;![endif]-->
</pre>



<script type="text/javascript">
	$(function() {
		$('input, textarea').placeholder();        
	});

	function changePlaceholder() {
		
		$('#searchBox').attr('placeholder', placeHolders[x]);
		x++;
		
		if(x >= placeHolders.length) {
			x = 0;
		}
		
		setTimeout('changePlaceholder()', 3000);
	}
	
	var placeHolders = new Array(),
	x = 0;
	
	placeHolders[0] = "Search for Toys";
	placeHolders[1] = "Search for Video Games";
	placeHolders[2] = "Search for DVDs";
	
	t = setTimeout('changePlaceholder()', 3000);

</script>

<!--[if lte IE 9 ]>
	<script>
		clearTimeout(t);
	</script>
<![endif]-->

<h2>Demo</h2>
<p>You can view the working version above or <a href="http://www.kylejlarson.com/files/placeholder_demo.zip">download the demo and files in a zip</a>.</p>]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/animated-search-box-with-html5-placeholder/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Creating Retina Images for Your Website</title>
		<link>http://www.kylejlarson.com/blog/2012/creating-retina-images-for-your-website/</link>
		<comments>http://www.kylejlarson.com/blog/2012/creating-retina-images-for-your-website/#comments</comments>
		<pubDate>Fri, 06 Apr 2012 18:29:44 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=430</guid>
		<description><![CDATA[Apple&#8217;s newest devices feature the Retina Display, a screen that packs double as many pixels into the same space as older devices. For designers this immediately brings up the question, &#8220;What can I do to make my content look outstanding on these new iPads and iPhones?&#8221;. First there are a few tough questions to consider, [...]]]></description>
			<content:encoded><![CDATA[<style>
table td, table th {padding: 5px 20px 5px 0;}
table {margin-bottom: 20px;}
</style>
<p>Apple&#8217;s newest devices feature the Retina Display, a screen that packs double as many pixels into the same space as older devices. For designers this immediately brings up the question, &#8220;What can I do to make my content look outstanding on these new iPads and iPhones?&#8221;. First there are a few tough questions to consider, but then this guide will help you get started making your websites and web apps look amazingly sharp with Retina images!</p>
<p><img src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/retina_test.png" class="hires" alt="comparison of retina and normal image" title="retina comparison" width="700" height="362" class="aligncenter size-full wp-image-461" style="margin-bottom: 40px" /></p>
<h2>Things to Consider When Adding Retina Images</h2>
<p>The main issue with adding retina images is that the images are double as large and will take up extra bandwidth (this won&#8217;t be an issue for actual iOS apps, but this guide is covering web sites &amp; web apps only). If your site is mostly used on-the-go over a 3G network it may not be wise to make all your graphics high-definition, but maybe choose only a select few important images. If you&#8217;re creating something that will be used more often on a WI-FI connection or have an application that is deserving of the extra wait for hi-res graphics these steps below will help you target only hi-res capable devices.</p>
<h2>Creating Retina Icons for Your Website</h2>
<p>When users add your website or web app to their homescreen it will be represented by an icon. These sizes (<a href="http://developer.apple.com/library/ios/#DOCUMENTATION/UserExperience/Conceptual/MobileHIG/IconsImages/IconsImages.html#//apple_ref/doc/uid/TP40006556-CH14">from Apple</a>) are as follows:<br />
<img src="http://www.kylejlarson.com/blog/wp-content/uploads/2012/04/ios_icons_retina.png" alt="ios icon samples" title="ios_icons_retina" width="340" height="150" class="alignright size-full wp-image-476" /></p>
<table>
<tbody>
<tr>
<th>iPhone</th>
<td>57 x 57</td>
</tr>
<tr>
<th>Retina iPhone</th>
<td>114 x 114</td>
</tr>
<tr>
<th>iPad</th>
<td>72 x 72</td>
</tr>
<tr>
<th>Retina iPad</th>
<td>144 x 144</td>
</tr>
</tbody>
</table>
<p>For each of these images you create you can link them in the head of your document like this (if you want the device to add the round corners remove -precomposed):</p>
<pre><code>&lt;link rel="apple-touch-icon-precomposed" href="touch-icon-iphone.png" /&gt;
&lt;link rel="apple-touch-icon-precomposed" sizes="72x72" href="touch-icon-ipad.png" /&gt;
&lt;link rel="apple-touch-icon-precomposed" sizes="114x114" href="touch-icon-iphone4.png" /&gt;
&lt;link rel="apple-touch-icon-precomposed" sizes="144x144" href="touch-icon-ipad3.png" /&gt;</code></pre>
<p>If the correct size isn&#8217;t specified the device will use the smallest icon that is larger than the recommended size (i.e. if you left out the 114px the iPhone 4 would use the 144px icon).</p>
<h2>Retina Background Images</h2>
<p>Background images that are specified in your CSS can be swapped out using media queries. You&#8217;ll first want to generate two versions of each image.  For example &#8216;bgPattern.png&#8217; at 100px x 100px and &#8216;bgPattern@2x.png&#8217; at 200px x 200px. It will be useful to have a standard naming convention such as adding @2x for these retina images. To add the new @2x image to your site simply add in the media query below (You can add any additional styles that have background images within the braces of the same media query):</p>
<pre><code>.repeatingPattern {background: url(../images/bgPattern.png) repeat; background-size: 100px 100px;}

@media only screen and (-webkit-min-device-pixel-ratio: 2) {
     .repeatingPattern {background: url(../images/bgPattern@2x.png) repeat;}
}</code></pre>
<h2>JavaScript for Retina Image Replacement</h2>
<p>For your retina images that aren&#8217;t backgrounds the best option seems to be either creating graphics with CSS, using SVG, or replacing your images with JavaScript. Just like the background images, you&#8217;ll want to create a normal image and one &#8216;@2x&#8217; image. Then with JavaScript you can detect if the pixel ratio of the browser is 2x, just like you did with the media query:</p>
<pre><code>if (window.devicePixelRatio == 2) {

//Replace your img src with the new retina image

}</code></pre>
<p>If you&#8217;re using jQuery you could quickly replace all your images like this very basic example below. It&#8217;s a good idea to add a class to identify the images with hi-res versions so you don&#8217;t replace any others by mistake. I&#8217;ve added a class=&#8221;hires&#8221; for this example. Also make sure you have the standard (non-retina) image height and width set in the HTML:</p>
<pre><code>&lt;img src="search.png" class="hires" width="100" height="100" /&gt;

&lt;script type="text/javascript"&gt;
$(function () {

	if (window.devicePixelRatio == 2) {

          var images = $("img.hires");

          // loop through the images and make them hi-res
          for(var i = 0; i &lt; images.length; i++) {

            // create new image name
            var imageType = images[i].src.substr(-4);
            var imageName = images[i].src.substr(0, images[i].src.length - 4);
            imageName += "@2x" + imageType;

            //rename image
            images[i].src = imageName;
          }
     }

});
&lt;/script&gt;
</code></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2012/creating-retina-images-for-your-website/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Fixed Elements and Scrolling Divs in iOS 5</title>
		<link>http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/</link>
		<comments>http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/#comments</comments>
		<pubDate>Fri, 11 Nov 2011 20:58:01 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://www.kylejlarson.com/blog/?p=384</guid>
		<description><![CDATA[I&#8217;ve been playing around with creating a web app for iOS and testing some of the new features in mobile safari that were released with iOS 5. Fixed divs and the ability to scroll a div are common in iOS native apps but were difficult to implement in a web app. These have both been [...]]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve been playing around with creating a web app for iOS and testing some of the new features in mobile safari that were released with iOS 5. Fixed divs and the ability to scroll a div are common in iOS native apps but were difficult to implement in a web app. These have both been added in the new safari but they still require some work-arounds to make them function like you probably want.</p>
<h2>Fixed Elements</h2>
<p>The first versions of iOS didn&#8217;t support fixed elements. They would fix correctly to the screen, but then they would scroll along with the rest of your content. In iOS 5, fixed elements (e.g. position: fixed; bottom: 0;) work as expected. </p>
<p>Keep in mind you&#8217;ll want to use the iOS meta tags if you&#8217;re designing specifically for the device. The first line below prevents the default scaling for sites that aren&#8217;t built for to adapt to the screen size and the second allows you to save the site and run it without the browser bars.</p>
<pre>
<code>&lt;meta name="viewport" content="initial-scale = 1.0, user-scalable = no"&gt;
&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;</code>
</pre>
<p>The first issue with the fixed elements is that your site will still have the &#8216;bounce&#8217; effect when scrolling past the top/bottom of your content that reveals the browser chrome (background beneath your page as it bounces). If your site doesn&#8217;t need to scroll this is a very simple fix, just add a line to prevent the default action when moving your finger:</p>
<pre>
<code>&lt;script type="text/javascript"&gt;
document.addEventListener('touchmove', function(event) {
     event.preventDefault();
}, false);
&lt;/script&gt;</code>
</pre>
<p>If you want scrolling areas, but don&#8217;t want the browser chrome to show then continue on!</p>
<h2>Scrolling Divs</h2>
<p>Another new feature in iOS 5+ is divs can finally scroll.  To make a div scroll you&#8217;ll just need to add the following (this example has a fixed header but adjust the positioning to fit your app):</p>
<pre>
<code>.scrollable {
position: absolute;
top: 50px;
left: 0;
right: 0;
bottom: 0;
overflow: scroll;
-webkit-overflow-scrolling: touch;
}</code>
</pre>
<p>The trick here is adding the -webkit-overflow-scrolling to anywhere you&#8217;d normally set your overflow. The downside of Apple&#8217;s implementation is that the div doesn&#8217;t bounce as you&#8217;d hope when you are already at the absolute top or bottom. Instead of bouncing the div being scrolled, it bounces the whole page and reveals the browser chrome. This is where you&#8217;ll need a javascript fix.</p>
<h2>Fixing the Scrolling Element</h2>
<p>Thanks to the development community there are several great options out there that you can implement. These include <a href="http://joehewitt.github.com/scrollability/">Scrollability</a> and <a href="http://cubiq.org/iscroll">iScroll</a>. My issue with iScroll was that it doesn&#8217;t play well with form elements if you have them in your app. At the time of this article, Scrollability&#8217;s author says it isn&#8217;t ready for release usage, but it seems to be a great solution if you want to test it. If you want your app to work well with old implementations of iOS you&#8217;ll need something similar to this (plus you&#8217;ll also need to code around the fixed elements issue), but for now we&#8217;re only addressing iOS 5+ and we&#8217;ll will save fallbacks for a different article.</p>
<p>The solution I like the best for iOS5 is also the simplest. Joe Lambert&#8217;s <a href="https://github.com/joelambert/ScrollFix">ScrollFix</a> increases the page slightly when at the top or bottom to make your div bounce instead of the whole browser. It&#8217;s very simple to add to an element that you already have scrolling:</p>
<pre>
<code>&lt;script type="text/javascript" src="scrollfix.js"&gt;&lt;/script&gt;

&lt;script type="text/javascript"&gt;
     var scrollingContent = document.getElementById("myScrollingDiv");
     new ScrollFix(scrollingContent);
&lt;/script&gt;</code>
</pre>
<p>If you have multiple scrolling divs just apply this again to those divs. For my app I&#8217;ve got several divs which either shown or hidden and each has this script applied. We&#8217;re almost there, but two possible issues still exist. When scrolling on our fixed elements and our scrolling elements that don&#8217;t have enough content to overflow the page, the browser chrome is still revealed.</p>
<h2>Preventing Fixed Headers from Showing Browser Chrome</h2>
<p>This is a pretty simple fix, similar to what was described above. In my fixed header I&#8217;ve got multiple elements, so I made sure that each element or it&#8217;s parent had the class &#8220;noBounce&#8221; and then applied the following script:</p>
<pre>
<code>document.addEventListener('touchmove', function(event) {
   if(event.target.parentNode.className.indexOf('noBounce') != -1
|| event.target.className.indexOf('noBounce') != -1 ) {
	event.preventDefault(); }
}, false);</code>
</pre>
<p>This prevents the default bounce when dragging those classed elements, but doesn&#8217;t break the div that you want to scroll.</p>
<h2>Adapting for Elements That Don&#8217;t Overflow</h2>
<p>When creating my code some of the divs for my main content overflowed the browser window which triggers the scrollbar and bounce fix, but others didn&#8217;t. There are several ways to address this, but the easiest solution I came up with just extends all divs so they have at least a bit of scroll. To do that I added this jQuery script (you could do something similar in straight JS as well) to all my content divs:</p>
<pre>
<code>&lt;div class="scrollable"&gt;
     &lt;div class="contentWrapper"&gt;
          Your content
     &lt;/div&gt;
&lt;/div&gt;

&lt;script type="text/javascript"&gt;
     $('.contentWrapper').css('min-height', $(window).height() - 55 + 'px');
&lt;/script&gt;</code>
</pre>
<p>You&#8217;ll need to adjust the &#8220;- 55&#8243; portion based on your application. I have it in there to prevent it from having too much scroll because of my fixed header.</p>
<p>Here&#8217;s a really basic demo if you want to test it out in your mobile browser: <a href="http://www.kylejlarson.com/files/iosdemo/">kylejlarson.com/files/iosdemo/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>An Event Apart Minneapolis</title>
		<link>http://www.kylejlarson.com/blog/2011/an-event-apart/</link>
		<comments>http://www.kylejlarson.com/blog/2011/an-event-apart/#comments</comments>
		<pubDate>Sat, 20 Aug 2011 05:18:05 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=372</guid>
		<description><![CDATA[Last week I had the opportunity to attend An Event Apart (AEA) when it stopped by Minneapolis. AEA is a conference &#8220;for people who make websites&#8221; taught by some of the best known names in web design. I had seen Jeffery Zeldman, Jason Santa Maria, Jeremy Keith, Jared Spool, Kristina Halvorson, and Luke Wroblewski speak [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.flickr.com/photos/localcelebrity/6025349561/" title="Eric Meyer by reallocalcelebrity, on Flickr"><img class="right" src="http://farm7.static.flickr.com/6134/6025349561_7e22653c37_m.jpg" width="240" height="160" alt="Eric Meyer"></a>Last week I had the opportunity to attend <a href="http://www.aneventapart.com/">An Event Apart</a> (AEA) when it stopped by Minneapolis. AEA is a conference &#8220;for people who make websites&#8221; taught by some of the best known names in web design. I had seen Jeffery Zeldman, Jason Santa Maria, Jeremy Keith, Jared Spool, Kristina Halvorson, and Luke Wroblewski speak at various trips to Austin for South by Southwest (SXSW), but all these talks were fresh content.</p>
<p>Every speaker did a great job and had tons of good information, but a few of the talks stood out and got me really excited about what I was learning. The talks that were the most inspirational for me were Eric Meyer&#8217;s talk about using flexible boxes, Nicole Sullivan on optimizing CSS, and Ethan Marcotte on responsive web design. The future of designing sites for multiple devices looks very promising with the combination of the flexible boxes and responsive design (media queries). The great part is that the boxes allow content to be reordered for different purposes where it has previously been difficult to do using floats (without absolute positioning).  If you don&#8217;t know about media queries check out the original <a href="http://www.alistapart.com/articles/responsive-web-design/">responsive design article</a>.</p>
<p>If you&#8217;ve got a chance to attend An Event Apart I&#8217;d highly recommend it. While it didn&#8217;t have the variety, scale, or full immersion in a sea of web geeks like SXSW, it had many of its own benefits.  At AEA there weren&#8217;t giant lines, missed panels that were at capacity, or most importantly &#8211; panels that didn&#8217;t have any valuable content. There wasn&#8217;t a session here that didn&#8217;t deliver!  Overall it was a much more focused and professionally delivered effort (food was also great and I got to sit next to Zeldman at lunch!).</p>
<p>I put together a <a href="http://www.kylejlarson.com/files/AEA_2011_Notes.pdf">PDF of my AEA notes</a> if you&#8217;d like to get an idea of what was covered.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/an-event-apart/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Create Pie Charts with CSS3</title>
		<link>http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/</link>
		<comments>http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/#comments</comments>
		<pubDate>Thu, 27 Jan 2011 15:44:03 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[HTML]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=303</guid>
		<description><![CDATA[Last week I decided to update my online resume to make it a little more graphical, because well&#8230; I&#8217;m a designer. The first step was coming up with some good ways to represent data, and pie charts seemed like a good fit to show skill development. Pie charts are pretty simple to create using a [...]]]></description>
			<content:encoded><![CDATA[<style>
     .pieContainer2 {
          height: 100px;
          width: 100px;
          float: right;
          margin: 0 0 20px 20px;
     }
     #pieSliceYellow .pie {
          background-color: #f2cd00;
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
     #pieSliceBlue3 {
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
     #pieSliceBlue3 .pie {
          background-color: #002095;
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
     #pieSliceRed2 {
          -webkit-transform:rotate(240deg);
          -moz-transform:rotate(240deg);
          -o-transform:rotate(240deg);
          transform:rotate(240deg);
     }
     #pieSliceRed2 .pie {
          background-color: #950000;
          -webkit-transform:rotate(120deg);
          -moz-transform:rotate(120deg);
          -o-transform:rotate(120deg);
          transform:rotate(120deg);
     }
</style>
<div class="pieContainer2">
<div class="pieBackground"></div>
<div id="pieSliceYellow" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceBlue3" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceRed2" class="hold">
<div class="pie"></div>
</div>
</div>
<p>Last week I decided to update my online resume to make it a little more graphical, because well&#8230; I&#8217;m a designer. The first step was coming up with some good ways to represent data, and pie charts seemed like a good fit to show skill development. Pie charts are pretty simple to create using a spreadsheet program or a drawing program, but I wanted something out of the ordinary that didn&#8217;t require creating new graphics every time I update them. It seemed like it should be possible with the new capabilities of CSS3 so I started working on a solution.</p>
<p>The two most promising things I found were <a href="http://code.google.com/apis/chart/docs/chart_wizard.html">Google&#8217;s Chart Wizard</a>, (which uses javascript) and a <a href="http://atomicnoggin.ca/blog/2010/02/20/pure-css3-pie-charts/">CSS3 Pie Chart Article from Atomic Noggin</a>.  I wanted to do something purely with CSS &#038; HTML so I took the ideas from that article and tweaked them a bit to get the result that I wanted.</p>
<p>There were a few things that I wanted to do differently from the original article:</p>
<ol>
<li>In the article the pie pieces are pulled out from the sphere and I wanted a solid circle.</li>
<li>Once aligned as a solid sphere there were some rendering issues (in some browsers) aligning clipped shapes next to each other that left gaps between the shapes.</li>
<li>I wanted to be able to add styles to the full sphere such as a border or drop-shadow.</li>
</ol>
<h2>Creating a Drop-Shadowed Circle</h2>
<p>My first step was creating a circle that will be the bottom layer of the chart. This bottom circle will also hold any border or drop-shadow style. Additionally, I&#8217;ve put a div with a set height around the circle so it stays inline with the content (as the circles will be absolutely positioned to stay on top of each other). To create a circle, simply add a border-radius that is half the pixel value of the width of a square div. You&#8217;ll notice below I&#8217;ve used browser specific css tags (e.g. -moz-border-radius) for the CSS3 elements. Currently CSS3 support is varied between browsers. Eventually, as full support is included in browsers, you won&#8217;t need them any more and this will be much simpler to manage.</p>
<pre>
<code>&lt;style&gt;
     .pieContainer {
          height: 100px;
     }
     .pieBackground {
          background-color: grey;
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          -moz-box-shadow: -1px 1px 3px #000;
          -webkit-box-shadow: -1px 1px 3px #000;
          -o-box-shadow: -1px 1px 3px #000;
          box-shadow: -1px 1px 3px #000;
     }
&lt;/style&gt;
&lt;div id="pieContainer"&gt;
     &lt;div class="pieBackground"&gt;&lt;/div&gt;
&lt;/div&gt;</code>
</pre>
<style>
     .pieContainer {
          height: 100px;
          margin-bottom: 35px;
     }
     .pieBackground {
          background-color: grey;
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          -moz-box-shadow: -1px 1px 3px #000;
          -webkit-box-shadow: -1px 1px 3px #000;
          -o-box-shadow: -1px 1px 3px #000;
          box-shadow: -1px 1px 3px #000;
     } 
.pie {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 50px, 100px, 0px);
     }
     .hold {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 100px, 100px, 50px);
     }
     .pieSlice1 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(50deg);
          -moz-transform:rotate(50deg);
          -o-transform:rotate(50deg);
          transform:rotate(50deg);
     }
</style>
<div class="pieContainer">
<div class="pieBackground"></div>
</div>
<h2>Adding a Slice of the Pie</h2>
<p>Next you&#8217;ll want to create a half circle by using clipping to hide the 2nd half.  Unless you want exactly 50% you&#8217;ll need to change the size of that circle by dropping it inside of a div that controls the rotation and use the inner div to adjust the size.  For the first slice we&#8217;ll start the outer div at 0 degrees, which is the default, so we&#8217;ll only need to edit that for additional slices. (* Note that I&#8217;m adding to the code above and only displaying the new CSS.)</p>
<pre>
<code>&lt;style&gt;
     .pie {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 50px, 100px, 0px);
     }
     .hold {
          position: absolute;
          width: 100px;
          height: 100px;
          -moz-border-radius: 50px;
          -webkit-border-radius: 50px;
          -o-border-radius: 50px;
          border-radius: 50px;
          clip: rect(0px, 100px, 100px, 50px);
     }
     #pieSlice1 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(50deg);
          -moz-transform:rotate(50deg);
          -o-transform:rotate(50deg);
          transform:rotate(50deg);
     }
&lt;/style&gt;

&lt;div class="pieContainer"&gt;
     &lt;div class="pieBackground"&gt;&lt;/div&gt;
     &lt;div id="pieSlice1" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;</code>
</pre>
<div class="pieContainer">
<div class="pieBackground"></div>
<div class="pieSlice1 hold">
<div class="pie"></div>
</div>
</div>
<h2>Large &#038; Multiple Slices</h2>
<p>If you&#8217;d like to make a slice take up more than 50% of the pie you&#8217;ll just need to add another pie div of the same color with a hold div wrapped around it.  To add a slice in a new color just change the background color.  Below is an example of making a slice over 50% and a second slice of a new color.</p>
<pre>
<code>&lt;style&gt;
     #pieSliceBlue .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 {
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(40deg);
          -moz-transform:rotate(40deg);
          -o-transform:rotate(40deg);
          transform:rotate(40deg);
     }
     #pieSliceRed {
          -webkit-transform:rotate(220deg);
          -moz-transform:rotate(220deg);
          -o-transform:rotate(220deg);
          transform:rotate(220deg);
     }
     #pieSliceRed .pie {
          background-color: #cc0000;
          -webkit-transform:rotate(140deg);
          -moz-transform:rotate(140deg);
          -o-transform:rotate(140deg);
          transform:rotate(140deg);
     }
&lt;/style&gt;

&lt;div class="pieContainer"&gt;
     &lt;div class="pieBackground"&gt;&lt;/div&gt;
     &lt;div id="pieSliceBlue" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
     &lt;div id="pieSliceBlue2" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
     &lt;div id="pieSliceRed" class="hold"&gt;&lt;div class="pie"&gt;&lt;/div&gt;&lt;/div&gt;
&lt;/div&gt;</code>
</pre>
<style>
     #pieSliceBlue .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 {
          -webkit-transform:rotate(180deg);
          -moz-transform:rotate(180deg);
          -o-transform:rotate(180deg);
          transform:rotate(180deg);
     }
     #pieSliceBlue2 .pie {
          background-color: #1b458b;
          -webkit-transform:rotate(40deg);
          -moz-transform:rotate(40deg);
          -o-transform:rotate(40deg);
          transform:rotate(40deg);
     }
     #pieSliceRed {
          -webkit-transform:rotate(220deg);
          -moz-transform:rotate(220deg);
          -o-transform:rotate(220deg);
          transform:rotate(220deg);
     }
     #pieSliceRed .pie {
          background-color: #cc0000;
          -webkit-transform:rotate(140deg);
          -moz-transform:rotate(140deg);
          -o-transform:rotate(140deg);
          transform:rotate(140deg);
     }
</style>
<div class="pieContainer">
<div class="pieBackground"></div>
<div id="pieSliceBlue" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceBlue2" class="hold">
<div class="pie"></div>
</div>
<div id="pieSliceRed" class="hold">
<div class="pie"></div>
</div>
</div>
<h2>IE Fallback</h2>
<p>As expected, this doesn&#8217;t work in any Internet Explorer browsers below version 9.  If you&#8217;re concerned about IE users, a simple way to fix this is adding a <a href="http://www.quirksmode.org/css/condcom.html">conditional comment</a> for IE with a jpg of whatever charts you&#8217;re trying to display.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/how-to-create-pie-charts-with-css3/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>URL Structure Tips</title>
		<link>http://www.kylejlarson.com/blog/2011/url-structure-tips/</link>
		<comments>http://www.kylejlarson.com/blog/2011/url-structure-tips/#comments</comments>
		<pubDate>Tue, 11 Jan 2011 20:26:21 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[Architecture]]></category>
		<category><![CDATA[Design Process]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=260</guid>
		<description><![CDATA[When working through the architecture and coding of a website the URL structure is often overlooked. Carefully considering the location of your pages can greatly help users by making links semantic and easy to remember. It&#8217;s easiest to start this process when doing a redesign or a new site, but its worth investing the time [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://kylejlarson.com/blog/wp-content/uploads/2011/01/url_structure.jpg"><img src="http://kylejlarson.com/blog/wp-content/uploads/2011/01/url_structure.jpg" alt="" title="url_structure" width="250" height="150" class="alignright size-full wp-image-286" /></a>When working through the architecture and coding of a website the URL structure is often overlooked. Carefully considering the location of your pages can greatly help users by making links semantic and easy to remember. It&#8217;s easiest to start this process when doing a redesign or a new site, but its worth investing the time and effort at any point.</p>
<p>When determining your URL structure, the first place to start is with your site&#8217;s architecture (site map / navigation).  The structure of your URLs should reflect how your users navigate your site.  Typically, you&#8217;ll want to find large buckets and group your content using directories (<span class="highlight">yourdomain.com/company</span> &#8211; <span class="highlight">yourdomain.com/products</span> &#8211; <span class="highlight">yourdomain.com/articles</span>). You should have an index page in each of those directories that leads to any additional content within, which can be in their own subdirectories. Apple does a good job of this, creating consistant URLs where expected, like <span class="highlight">apple.com/iphone</span> &#038; <span class="highlight">apple.com/iphone/features</span>.</p>
<h2>Folders vs Subdomains</h2>
<p>I recommend using subdomains (e.g. <span class="highlight">products.yourdomain.com</span>), as alternative to folders, only when there is a clear division of content.  For example if you ran a second site that is intended for another purpose entirely from your main site, such as a site for investors, a subdomain may be a good choice. In Apple&#8217;s case they keep their marketing product information at <span class="highlight">apple.com</span> and their online store at <span class="highlight">store.apple.com</span>. There are several reasons for this, but the biggest two in my mind are that search engines typically consider subdomains as a different site when indexing and that many users aren&#8217;t savvy enough to understand subdomains (if you create them make sure you can type www before the subdomain and it will still forward correctly).</p>
<h2>Dynamic Pages</h2>
<p>Semantic URLs can become difficult when creating dynamic product or article pages. There are many sites with pages like this <span class="highlight">domain.com/store/product.php?id=1234</span> instead of something more logical like <span class="highlight">domain.com/store/productName</span>. If you&#8217;re using blog software like WordPress you can easily change this setting. In WordPress simple go to settings > permalinks and choose one of the available options or create your own structure. For users of CMS systems take a look and see if such an options is available; if not take a look on google for &#8220;URL Rewriting&#8221; to create custom paths to your content.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2011/url-structure-tips/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Design Process: The Rule of Three</title>
		<link>http://www.kylejlarson.com/blog/2010/design-process-the-rule-of-three/</link>
		<comments>http://www.kylejlarson.com/blog/2010/design-process-the-rule-of-three/#comments</comments>
		<pubDate>Mon, 08 Nov 2010 17:31:55 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[Design Process]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=223</guid>
		<description><![CDATA[Having a solid web design process is critical for efficiently creating quality work. On Happycog&#8217;s Cognition Blog, Chris Cashdollar posted about their process of creating three unique designs to present to a client. When I first started doing freelance work for clients I followed the rule of three without question, but over time I&#8217;ve changed [...]]]></description>
			<content:encoded><![CDATA[<p>Having a solid web design process is critical for efficiently creating quality work. On Happycog&#8217;s Cognition Blog, Chris Cashdollar posted about their process of <a href="http://cognition.happycog.com/article/the-magic-number">creating three unique designs</a> to present to a client. When I first started doing freelance work for clients I followed the rule of three without question, but over time I&#8217;ve changed my process based on the project that I&#8217;m working on.</p>
<h2>The Benefit of Three</h2>
<p>Overall, following the rule of creating three mockup designs for a project is useful for many of the reasons that Chris mentions in his article. Creating multiple designs forces you to solve the same problem in a variety of ways and each subsequent design is informed by your previous discoveries. It also shows your client that you&#8217;re focused on delivering options that best fit their goals and helps foster discussion over the solutions.</p>
<h2>Third Wheel</h2>
<p>While creating three designs has many benefits, I no longer follow it as a hard rule. There are two reasons I suspect that the rule of three is more effective in Chris&#8217;s case:</p>
<ol>
<li>Happy Cog&#8217;s projects are likely larger in time and scope than mine</li>
<li>Chris mentions having a separate designer for each design</li>
</ol>
<p>Nearly all of my projects are designed by myself with input only from the client (and sometimes friends if I want some other feedback). This, combined with most projects being quicker and on a smaller budget, means that often presenting three full designs isn&#8217;t always an effective option. I feel with the total hours allotted to the project, my time is often better spent focusing on one or two well thought-out designs. Also on smaller projects the third iteration can feel like a chore, and it isn&#8217;t as innovative as the first concepts where a lot of the discovery took place.</p>
<h2>An Alternative Process for Freelancers</h2>
<p>The number of concepts I present to a client depends on the project.  For a small job, I typically focus on generating one or two concepts and then iterating based on feedback. I find that much of the creativity lost by not doing three designs can be generated in the initial sketching phase. By sketching out designs before getting onto the computer, I can quickly come up with many different ideas and then take several into a larger, more detailed sketches. Following this process, it&#8217;s easy to see what is going to work and what doesn&#8217;t work so well. Sketches can also be shown to the client for feedback before coming up with your final concept to present. Working this way also helps prevent clients requesting a &#8220;frankendesign&#8221; combining elements of each of the three designs you show them. I prefer to work this way, rather than trying to force three designs, as each client has a different budget, different expectations and a different level of involvement in the process.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2010/design-process-the-rule-of-three/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>How to Setup Your Site for the iPhone</title>
		<link>http://www.kylejlarson.com/blog/2010/how-to-setup-your-site-for-the-iphone/</link>
		<comments>http://www.kylejlarson.com/blog/2010/how-to-setup-your-site-for-the-iphone/#comments</comments>
		<pubDate>Fri, 22 Oct 2010 20:29:48 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[HTML]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Apple]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[iPhone]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=201</guid>
		<description><![CDATA[I&#8217;ve been working on some mobile apps lately and realizing how simple it is to get started making your site more iPhone compatible. You can either create a separate site specifically for mobile or create a mobile stylesheet to be applied to specific devices. There are some great arguments out there for each option, but [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://kylejlarson.com/blog/wp-content/uploads/2010/10/iphone.jpg"><img src="http://kylejlarson.com/blog/wp-content/uploads/2010/10/iphone.jpg" alt="iphone" title="iphone" width="150" height="238" class="alignright size-full wp-image-217" /></a>I&#8217;ve been working on some mobile apps lately and realizing how simple it is to get started making your site more iPhone compatible. You can either create a separate site specifically for mobile or create a mobile stylesheet to be applied to specific devices. There are some great arguments out there for each option, but what I&#8217;m discussing here is just the introductory steps that work for either method. In writing this I&#8217;m also considering how I&#8217;d like to apply those ideas to my site here.</p>
<p>If you&#8217;re planning to create an additional stylesheet rather than a completely new codebase, you&#8217;ll want to start by specifying the stylesheet to use with a media query. Ethan Marcotte has a great article called <a href="http://www.alistapart.com/articles/responsive-web-design/">Responsive Web Design</a> that expands upon this idea on A List Apart.  To target an iPhone/iPod specifically you can use this code right after your main stylesheet in your header:</p>
<pre><code>&lt;link media="only screen and (max-device-width: 480px)" href="iphone.css"
 type="text/css" rel="stylesheet"&gt;</code></pre>
<h2>Control the Page Size</h2>
<p>Next you&#8217;ve got a handful of settings that will help make your site similar to a native iPhone app.  If you want your page to resize to the device, you can use this line in your header:</p>
<pre><code>&lt;meta name = "viewport" content = "width = device-width"&gt;</code></pre>
<p>or if you&#8217;re setting your page width in CSS and would prefer to use a specific scale (with or without the option to disallow users from zooming the page) you can use: </p>
<pre><code>&lt;meta name = "viewport" content = "initial-scale = 1.0, user-scalable = no"&gt;</code></pre>
<h2>Add a Custom Icon &amp; Startup Image</h2>
<p>There are also meta tags for use when your site is added to the home screen of a user&#8217;s device (press the &#8216;+&#8217; in mobile safari to add to the home screen).  The first is <a href="http://kylejlarson.com/blog/2010/adding-an-icon-for-iphone-ipad-android-to-your-website/">adding a custom icon to your site</a> that I wrote a previous post about. In addition, you can add a startup screen to give an app like feel.  To add a startup image create a png that is 320 x 460 pixels and add this line of code to the header:</p>
<pre><code>&lt;link rel="apple-touch-startup-image" href="/your_image.png"&gt;</code></pre>
<h2>Make it Look Like an App</h2>
<p>You can make your site look more like an app when people save it to their home screen by hiding the top bar that loads with safari and changing the color of the status bar.  Before you do this you&#8217;ll want to make sure you&#8217;re site is setup so it can be easily navigated without needing the back button.  To remove the Safari controls add this meta tag to your header: </p>
<pre><code>&lt;meta name="apple-mobile-web-app-capable" content="yes" /&gt;</code></pre>
<p>And to change the status bar (network name, time, battery level) from the default grey to either &#8220;black&#8221; or &#8220;black-translucent&#8221;:</p>
<pre><code>&lt;meta name="apple-mobile-web-app-status-bar-style" content="black"&gt;</code></pre>
<p>Note that if you change the status bar to translucent the site will sit underneath it. Make sure that there is no critical content hidden behind the bar.</p>
<p>These simple lines of code are a great way to get started setting up your site for Apple&#8217;s devices. If you&#8217;d like to go into some more detail, <a href="http://developer.apple.com/library/safari/#documentation/AppleApplications/Reference/SafariWebContent/Introduction/Introduction.html">Apple&#8217;s Safari Reference Library</a> is a great place to get started.  Then to take this to the next level I&#8217;d recommend digging into <a href="http://jqtouch.com/">jQTouch</a> or <a href="http://www.sencha.com/">Sencha</a>. Both of these tools will create an even more app-like experience with animated transitions and app-like bars &amp; buttons using javascript (which you&#8217;ll want to have a strong knowledge of to use to their full potential).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2010/how-to-setup-your-site-for-the-iphone/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>How to Make Your Web Statistics Actionable: Search</title>
		<link>http://www.kylejlarson.com/blog/2010/how-to-make-your-web-statistics-actionable-search/</link>
		<comments>http://www.kylejlarson.com/blog/2010/how-to-make-your-web-statistics-actionable-search/#comments</comments>
		<pubDate>Tue, 05 Oct 2010 14:55:48 +0000</pubDate>
		<dc:creator>Kyle J Larson</dc:creator>
				<category><![CDATA[Statistics]]></category>

		<guid isPermaLink="false">http://kylejlarson.com/blog/?p=171</guid>
		<description><![CDATA[If you were ill and your doctor handed you a chart including your weight, heart rate, and blood pressure and promptly sent you on your way with no analysis or feedback, he wouldn&#8217;t be your doctor for long. Without actionable analysis of the data it has very little usefulness. Website statistics are often discussed in [...]]]></description>
			<content:encoded><![CDATA[<p><img class="alignleft size-full wp-image-196" style="margin: 0 24px 24px 0" title="actionablesearch" src="http://kylejlarson.com/blog/wp-content/uploads/2010/10/actionablesearch.jpg" alt="make search actionable" width="250" height="181" />If you were ill and your doctor handed you a chart including your weight, heart rate, and blood pressure and promptly sent you on your way with no analysis or feedback, he wouldn&#8217;t be your doctor for long.  Without actionable analysis of the data it has very little usefulness.  Website statistics are often discussed in a similarly meaningless way.  I&#8217;ve suffered through many meetings where people throw around numbers with nothing more to say about them than this number has increased and that one has decreased. Most sites have some statistics available and maybe they are even reviewed occasionally, but to get real value from your statistics they must be a catalyst for action.  Analyzing your on-site search and search engine keywords is a great place to get started.</p>
<h2>On-Site Search Analysis</h2>
<p>If you have a search box on your website it provides one of the greatest sources of immediately actionable data.  You should be able to find this data in your statistics either through a specific listing of the search terms entered or by searching page view stats for the query string you&#8217;re using to run the search (e.g. yoursite.com/search?q=keyword &#8211; just leave out the keyword to see all the keywords entered).  From these results you can not only gather information about what people are most interested in, but also a wealth of data to start testing with and improving your site.</p>
<p>The first thing you&#8217;ll want to do with the on-site keyword list is plug them into the search box on your site beginning with the most entered keywords.  Are you getting the results you would expect?  If so thats great. If not you should note any lack of relevant results and add those keywords to the pages that should be showing up.  By starting with the most entered phrases and working down you&#8217;re going to be rapidly improving search and your user&#8217;s experience.  Also, check your search results page to see if it has a high bounce-rate (users exiting the site from this page).  If this is the case carefully check for quality search results and consider all the possible results the searcher may be after.</p>
<p>In addition to improving search, these search phrases can help inform you about the usability of your site and the best language to communicate with your users.  For your most popular searches make sure that not only the results are relevant, but that the content is also discoverable to users browsing your site.  Many users will search as a quick means to finding what they are looking for, while others search as a last resort after unsuccessfully looking through your navigation.  These popular search keywords also can help guide the language you use in your content.  Many companies use insider language to describe services and products while the average user&#8217;s language may be completely different (think notebook vs laptop or Form 1040 vs income tax form).  Take this search data and use it to communicate more effectively with your user-base.</p>
<p>Finally, compare this data over time.  Are popular searches based on the content you are creating at those specific times or is there a trend that you can detect to better schedule your updates and marketing?  If you can make a correlation between time and interest (e.g. Item A does well in the winter or Topic B is most searched near school enrollment) you&#8217;ll go a long way to improving the results of your efforts.</p>
<h2>Incoming Search Engine Keywords</h2>
<p>Statistics tracking will also provide you with keywords that users are entering into search engines to find your site, such as Google, Yahoo, or Bing.  This data isn&#8217;t as immediately impactful as your on-site search, but there is still some actionable information to be found.  The primary use is search engine optimization (SEO) in relation to search-user interest.</p>
<p>By reviewing the incoming search terms for your site, you will see where you are ranking well and reaching visitors in search engines.  This is data is invaluable, but what we&#8217;re looking for here is actionable data.  Take a look at the keywords; are users finding good content for what they are searching?  Look for those popular keywords and make sure you&#8217;ve got great content for your users.  If you&#8217;re ranking highly for a particular phrase that is not a focus on your site there may be potential for emerging or expanding market (e.g. you sell office widgets and people are searching for health care widgets).  Finally, compare this data over time as discussed for on-site keywords.  Take any data gathered from search engine keywords with a grain of salt, as your ranking for these terms will change constantly and can be the cause for fluctuation in traffic.</p>
<p>While this article is focused on only the search aspect of statistics but with such a large topic I plan to follow up on this article in the future with other ways to improve the use of web stats. Hopefully some of these ideas will take your use of web statistics being just an observer and toward something actionable.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.kylejlarson.com/blog/2010/how-to-make-your-web-statistics-actionable-search/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

