<?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 Schaeffer - Web Design and SharePoint Branding</title>
	<atom:link href="http://kyleschaeffer.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://kyleschaeffer.com</link>
	<description>Web Design &#38; SharePoint Branding</description>
	<lastBuildDate>Wed, 01 Feb 2012 23:01:50 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Design Patterns in SharePoint</title>
		<link>http://kyleschaeffer.com/sharepoint/design-patterns/</link>
		<comments>http://kyleschaeffer.com/sharepoint/design-patterns/#comments</comments>
		<pubDate>Thu, 26 Jan 2012 03:32:40 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Patterns]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=1108</guid>
		<description><![CDATA[Last week, I was happy to present at SusQtech&#8217;s &#8220;30 on Thursdays&#8221; weekly webinar event.  This is a great series of free webinars from some talented speakers, and the succinct format is a great opportunity to learn something new without &#8230; <a href="http://kyleschaeffer.com/sharepoint/design-patterns/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Last week, I was happy to present at SusQtech&#8217;s &#8220;<a href="http://www.susqtech.com/webinars">30 on Thursdays</a>&#8221; weekly webinar event.  This is a great series of free webinars from some talented speakers, and the succinct format is a great opportunity to learn something new without a huge investment of your time.<span id="more-1108"></span></p>
<p>My topic was <em>Design Patterns in SharePoint</em>, which is an introduction to the concept of design patterns, and how to apply them to your SharePoint environment.  Luck you, we have been recording these webinars, and they&#8217;re freely available on our website. Feel free to view the webinar video below, and check out the <a href="http://www.susqtech.com/Webinars/Pages/Archived-Webinars.aspx">webinar archive</a> for any and all webinars that we&#8217;ve recorded in the past.</p>
<p>As mentioned in the video, I will be teaching a <a href="http://www.susqtech.com/training/classes/Pages/SharePoint-Styling-Branding-March-22-23-2012.aspx">SharePoint design class in the Netherlands starting on March 22</a>.  If you are looking for design training and can make it to the class, please feel free to sign up.</p>
<iframe src="http://www.youtube.com/embed/ud-KuCao_sY?version=3&amp;wmode=transparent" width="560" height="340" title="YouTube video player" style="background-color:#000;display:block;margin-bottom:0;max-width:100%;" frameborder="0" allowfullscreen></iframe><p style="font-size:11px;margin-top:0;"><a href="http://www.youtube.com/watch?v=ud-KuCao_sY" target="_blank" title="Watch on YouTube">Watch this video on YouTube</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/sharepoint/design-patterns/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>HTML5, CSS3, and Mobile Strategy</title>
		<link>http://kyleschaeffer.com/events/html5-css3-mobile-strategy/</link>
		<comments>http://kyleschaeffer.com/events/html5-css3-mobile-strategy/#comments</comments>
		<pubDate>Mon, 09 Jan 2012 16:48:25 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[HTML5]]></category>
		<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=1100</guid>
		<description><![CDATA[I had the pleasure of speaking at SharePoint Saturday Virginia Beach this weekend. Thanks for all who attended; I had a great time speaking on some exciting new topics, and sharing my passion for design in SharePoint. For those of &#8230; <a href="http://kyleschaeffer.com/events/html5-css3-mobile-strategy/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I had the pleasure of speaking at <a href="http://www.sharepointsaturday.org/virginiabeach/">SharePoint Saturday Virginia Beach</a> this weekend. Thanks for all who attended; I had a great time speaking on some exciting new topics, and sharing my passion for design in SharePoint.<span id="more-1100"></span> For those of you who were at the seminar, and also for those who might be interested, I wanted to share my presentations on my two sessions: <strong>HTML5 &amp; CSS3: What About SharePoint?</strong> and <strong>SharePoint Goes Mobile</strong>. You can view or download the presentations in PDF format here:</p>
<ul>
<li><a href="http://kyleschaeffer.com/wordpress/wp-content/uploads/2012/01/HTML5-and-CSS3-What-About-SharePoint.pdf">HTML5-and-CSS3-What-About-SharePoint.pdf</a> (968 KB)</li>
<li><a href="http://kyleschaeffer.com/wordpress/wp-content/uploads/2012/01/SharePoint-Goes-Mobile.pdf">SharePoint-Goes-Mobile.pdf</a> (1.4 MB)</li>
</ul>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/events/html5-css3-mobile-strategy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Join me for Advanced SharePoint Design</title>
		<link>http://kyleschaeffer.com/sharepoint/advanced-sharepoint-design-class/</link>
		<comments>http://kyleschaeffer.com/sharepoint/advanced-sharepoint-design-class/#comments</comments>
		<pubDate>Wed, 30 Nov 2011 14:40:23 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Events]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=1093</guid>
		<description><![CDATA[On January 23-26, 2012, I&#8217;ll be instructing a class that focuses on the more advanced strategies behind applying style and branding to a SharePoint 2010 website. This isn&#8217;t your average SharePoint training class: we&#8217;ll cover topics like improving the SharePoint &#8230; <a href="http://kyleschaeffer.com/sharepoint/advanced-sharepoint-design-class/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>On January 23-26, 2012, I&#8217;ll be instructing a class that focuses on the more advanced strategies behind applying style and branding to a SharePoint 2010 website. This isn&#8217;t your average SharePoint training class: we&#8217;ll cover topics like improving the SharePoint user experience, creative design for the SharePoint platform, and implementation strategy for making your creative designs come to life.<span id="more-1093"></span> Over four days, we&#8217;ll learn how to bend the rules in SharePoint to make it a truly limitless platform for customization.</p>
<p>I&#8217;ve been working with SharePoint for a long time now, and going beyond the basics is a challenging barrier to overcome. Many of the free online resources pertaining to SharePoint customization (and many of the paid ones) only cover the most simple of changes that you can make to your design. Learning how to implement a more comprehensive design is difficult, to say the least. In this new class, we are taking these advanced techniques head-on, and we&#8217;ll show you how to implement awesome changes like responsive layouts, comprehensive themes, and amazing enhancements using jQuery.</p>
<p>At least some experience with SharePoint customization, HTML, CSS, and JavaScript are highly recommended: we&#8217;ll be diving head-on into the world of SharePoint design. For more information, you can read all about the upcoming class here:</p>
<p><a href="http://susqtech.com/training/classes/Pages/SharePoint-Designer-2010-Styling-and-Branding-Training.aspx">http://susqtech.com/training/classes/Pages/SharePoint-Designer-2010-Styling-and-Branding-Training.aspx</a></p>
<p>&nbsp;</p>
<h2>SharePoint Saturday: Virginia Beach</h2>
<p>Can&#8217;t make it to the class in January? You&#8217;ll also see me speaking at the free SharePoint Saturday event at Virginia Beach on January 7, 2012.  I&#8217;ll be doing two sessions at this event: &#8220;SharePoint Goes Mobile&#8221; and &#8220;HTML5 &amp; CSS3: What about SharePoint?&#8221;</p>
<p><a href="http://sharepointsaturday.org/virginiabeach/">http://sharepointsaturday.org/virginiabeach/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/sharepoint/advanced-sharepoint-design-class/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>v5, the Responsive HTML5 Master Page for SharePoint 2010</title>
		<link>http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/</link>
		<comments>http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/#comments</comments>
		<pubDate>Mon, 03 Oct 2011 20:25:49 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=1067</guid>
		<description><![CDATA[&#8220;v5.master&#8221; is a simple HTML5 master page designed for SharePoint 2010. It makes good use of the amazing new features of both HTML5 and CSS3, including CSS3 media queries. The master page is extremely simplistic in nature, and is truly &#8230; <a href="http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>&#8220;v5.master&#8221; is a simple HTML5 master page designed for SharePoint 2010. It makes good use of the amazing new features of both HTML5 and CSS3, including <a href="http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/">CSS3 media queries</a>. The master page is extremely simplistic in nature, and is truly meant to serve as a framework for building your own SharePoint 2010 customizations.<span id="more-1067"></span></p>
<h2>SharePoint Gets Responsive</h2>
<p>SharePoint has a knack for being rigid and difficult to customize. I&#8217;ve been working with responsive layouts for a while now, but the nature of SharePoint has thus far prevented me from making something that is as flexible as, say, this WordPress blog you&#8217;re reading right now. It&#8217;s easy-peasy to do this in WordPress, but SharePoint simply does <em>too much</em>. When you create a layout in SharePoint, you&#8217;re creating a layout that encompasses much more than just pages: you&#8217;ll have to contend with pages, web parts, lists, libraries, blogs, wikis, search, meeting workspaces, team sites, calendars, and the list goes on. With so much content to contend with, creating something that can contract to any width is a tall order to say the least.</p>
<p>To me, at least, the answer was simple: ignorance. I&#8217;m ignoring every part of SharePoint that I don&#8217;t care about. 90% of the sites that I create in SharePoint are publishing sites: public-facing with a focus on pages, navigation, and web parts. Now, that&#8217;s a list I can handle. The v5 master page uses a fluid layout that drops to a single column when the display size shrinks below 800 pixels in width. Check out the screens to see the flexibility in action:</p>
<p><strong>Large/Desktop Displays:<br />
</strong><a href="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/10/v5-large.jpg"><img class="alignnone size-medium wp-image-1069" title="v5 on Laptops/Desktops" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/10/v5-large-300x200.jpg" alt="" width="300" height="200" /></a></p>
<p><strong>Medium/Tablet Displays:<br />
<a href="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/10/v5-medium.jpg"><img class="alignnone size-medium wp-image-1070" title="v5 on Tablets" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/10/v5-medium-254x300.jpg" alt="" width="254" height="300" /></a> </strong></p>
<p><strong>Small/Mobile Displays:<br />
<a href="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/10/v5-small.jpg"><img class="alignnone size-medium wp-image-1071" title="v5 on Mobiles" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/10/v5-small-139x300.jpg" alt="" width="139" height="300" /></a> </strong></p>
<h2>Features</h2>
<ul>
<li>New HTML5 document type declaration</li>
<li>Revised <code>&lt;head&gt;</code> content to adhere to new HTML5 standards and best practices</li>
<li>New HTML5 semantic layout (<code>&lt;header&gt;</code>, <code>&lt;footer&gt;</code>, <code>&lt;section&gt;</code>, etc.)</li>
<li>Uses <a href="http://code.google.com/p/html5shim/">html5shim</a> for backwards-compatibility</li>
<li>Responsive CSS3 media queries</li>
</ul>
<h2>Download v5.master</h2>
<ul>
<li><strong><a href="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/10/v5-masterpage.zip">v5-masterpage.zip</a> </strong>(16kb)</li>
</ul>
<p>The v5 master page is provided completely free, released under the <a href="http://creativecommons.org/licenses/by/3.0/">Creative Commons Attribution</a> license 3.0.</p>
<p><strong>Update Oct 26, 2011:</strong> Dércia Silva has been kind enough to create a deployable solution package, as well as a Visual Studio template, if you&#8217;d rather automate the deployment of this master page and related files. See Dércia&#8217;s post <a href="http://www.broculos.net/en/article/sharepoint-2010-branding-responsive-html5-masterpage-sharepoint-2010">here</a>.</p>
<h2>Installation</h2>
<ol>
<li>Copy the <strong>v5.master</strong> file into the <code>/_catalogs/masterpage/</code> folder of your SharePoint 2010 site collection.</li>
<li>Copy the entire <strong>v5</strong> folder into the <code>/Style Library/</code> document library, located at the root of your site collection.</li>
<li><strong>Check in, publish, and approve</strong> all copied files.</li>
<li>Change your <strong>site and system master page</strong> to use the new file you created.</li>
<li>Optionally change the <strong>site logo</strong> setting to use the new logo image located at <code>/Style Library/v5/i/v5.png</code>.</li>
</ol>
<h2>Requirements &amp; Assumptions</h2>
<ul>
<li>This master page was designed for SharePoint 2010, Enterprise and Standard versions.</li>
<li>This master page was designed and tested for SharePoint publishing and wiki sites. No other site templates have been tested.</li>
<li>Keep in mind that some SharePoint content simply doesn&#8217;t work well at smaller screen resolutions (lists with many columns, calendars, etc.). The focus is on external-facing sites with a lot of text- and image-based content.</li>
<li>The SharePoint front-end server must have internet connectivity to access Google&#8217;s hosted version of <a href="http://code.google.com/p/html5shim/">html5shim</a>. If you do not have internet connectivity in your environment, download and use a local copy of this file.</li>
</ul>
<h2>Known Issues (Updated Jan 19, 2012)</h2>
<p>A few people have encountered some issues with the v5 master page. Although I think the master page still works great (especially as a publishing master page), you may want to consider making these changes, depending on your SharePoint environment and how you choose to utilize the interface.</p>
<ol>
<li><strong>Error on &ldquo;Save&rdquo; in SharePoint dialogs (IE9)</strong> &mdash; this is caused by an error in Microsoft&rsquo;s internal JavaScript files. This easily remedied by simply not using v5 master page as your &ldquo;system&rdquo; master page. If use a lot of system pages in your SharePoint site, you may also try adding the following line of code to the <code>&lt;head&gt;</code> section of your master page:</p>
<pre>&lt;meta http-equiv=&quot;x-ua-compatible&quot; content=&quot;IE=8&quot;/&gt;</pre>
<p>This <em>forces</em> newer versions of Internet Explorer to display in compatibility mode. Note that you&rsquo;ll also lose CSS3 and HTML5 functionality when you add this to the master page (everything works, but the site will look a little more bland in IE).</li>
<li><strong>Ribbon not appearing at the top of the browser window</strong> &mdash; I&rsquo;ve had some mixed reports of this happening in Internet Explorer, but I think it&rsquo;s actually an indication that the paths to the attached CSS and JavaScript files are incorrect. If you are deploying v5 master to any site other than the ROOT site collection, make sure you update all references to these files where appropriate.</li>
<li><strong>Scrollbars appearing in SharePoint dialogs (Chrome, Firefox, Safari)</strong> &mdash; this is actually a side-effect of my ribbon/scrolling fix for SharePoint. SharePoint dialogs are still entirely functional, but the positioning and sizing of them just gets a little weird in any non-IE browser. Again, the idea is that the master page is optimized for publishing sites, which don&rsquo;t make much use of these dialogs (if at all). If you have a lot of trouble with this, consider using a different system master page.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/sharepoint/v5-responsive-html5-master-page/feed/</wfw:commentRss>
		<slash:comments>56</slash:comments>
		</item>
		<item>
		<title>10 Things a Website Should Never, Ever Do</title>
		<link>http://kyleschaeffer.com/best-practices/10-things-a-website-should-never-ever-do/</link>
		<comments>http://kyleschaeffer.com/best-practices/10-things-a-website-should-never-ever-do/#comments</comments>
		<pubDate>Thu, 22 Sep 2011 21:19:15 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Images]]></category>
		<category><![CDATA[JavaScript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=994</guid>
		<description><![CDATA[As a designer of the world wide web, you are armed with the power to amaze, enlighten, entice, and captivate. The web is an easel for your creative aspirations, and the content you design for is the foundation of your &#8230; <a href="http://kyleschaeffer.com/best-practices/10-things-a-website-should-never-ever-do/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>As a designer of the world wide web, you are armed with the power to amaze, enlighten, entice, and captivate. The web is an easel for your creative aspirations, and the content you design for is the foundation of your creativity. With so much power at the tips of your fingers, you also possess the ability to deter, annoy, anger, and infuriate. Your users are yours to command, their emotions yours to pluck like the strings of a harp.<span id="more-994"></span></p>
<p>It&#8217;s the latter of these powers that we discuss today: your ability to destroy the desire for users to stay on your site. We&#8217;ll examine the causes of user strife on the web, and see clear examples of common mistakes that designers and developers all-too-often seem to make.</p>
<h2>1. Never interfere with the ability to scroll</h2>
<p>The browser window is a fairly simple application: an address/search bar, a few buttons, and a big window where users read, scroll, and click. Sure, most browsers have other bells and whistles, but it really boils down to these essential elements of the browsing experience. Rule number one: never, ever (ever, ever) interfere with these most basic features of the browser window.</p>
<h3>Example: Microsoft SharePoint 2010</h3>
<p><img class="alignright" title="Microsoft SharePoint 2010" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/sharepoint-2010.jpg" alt="Microsoft SharePoint 2010" width="300" height="175" />One of the most preposterous features of an interface that I&#8217;ve seen is SharePoint 2010&#8242;s new ribbon interface. The default SharePoint 2010 interface includes a simple CSS style that disables the scrollbar on the <code>&lt;body&gt;</code> element. Microsoft chooses to remedy this by adding a scrollbar to other division elements in the interface instead. This results in a fairly impressive &#8220;fixed&#8221; ribbon, but it has some infuriating side-effects.</p>
<ul>
<li>When a SharePoint 2010 page loads, users will not be able to scroll until all JavaScript has loaded.  On slow servers or on large pages, this can take up to 2-3 seconds, which can be quite infuriating.</li>
<li>Some devices don&#8217;t execute the JavaScript in the expected fashion, resulting in the complete inability to scroll on mobile devices and tablets.</li>
</ul>
<h3>An easy solution</h3>
<p>The truth is, creating a &#8220;fixed&#8221; element is a fairly simple CSS technique that has become extremely popular in the last few months. The complexity of Microsoft&#8217;s interface is it&#8217;s downfall. Always practice in simplicity, because fewer things can go wrong in the end. Build simple interfaces, and <em>never</em> disable the scroll bar. Do this, and you&#8217;ll know at least one person who doesn&#8217;t hate your guts.</p>
<h2>2. Never allow form resubmissions</h2>
<p>Forms are a fairly standard feature of the web. Users see them and use them all the time: to sign up, sign in, order, update, and the like. With so much familiarity, it&#8217;s a wonder that forms are one of the largest sources of frustration to users. Between data, validation, formatting, handling errors, and all the auxiliary things that seem to surround web forms, things can get pretty complex for designers and developers. All the while, you try to keep it simple for your users. It&#8217;s a tall order, to be sure, but there is at least one thing that you can do to help users stay calm.</p>
<h3>Example: The Form Resubmission Prompt</h3>
<p><img class="alignnone size-medium wp-image-1008" title="Form Resubmission" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/form-resubmission.jpg" alt="Form Resubmission" /></p>
<p>This is Google Chrome&#8217;s form resubmission prompt. Most browsers have something very similar. This appears when users click on the &#8220;Back&#8221; and &#8220;Forward&#8221; buttons in the browser, or when they &#8220;Refresh&#8221; a page on which they have submitted a form. As web junkies, we might know what this means, but it has a more elusive meaning to your every-day internet users. Most of the time, you&#8217;ll find that users simply click the default option (in this case, &#8220;Continue&#8221;), which can lead to duplication of orders, data, requests, and all sorts of things that would be better off if avoided. Also, it&#8217;s just another annoying prompt that users encounter while they&#8217;re using your site.</p>
<h3>A Simple Solution</h3>
<p>The solution to form resubmissions really depends on the platform your website runs on. In most cases, a simple fix is to separate the script that submits the form data, and the script that receives and processes that data. For example, if you&#8217;re using a PHP-based platform, you might have a form that looks like this:</p>
<pre>&lt;form action="submit.php"&gt;
  &lt;input type="text" name="user" required /&gt;
  &lt;input type="password" name="pass" required /&gt;
  &lt;input type="submit" value="Log in" /&gt;
&lt;/form&gt;</pre>
<p>To avoid the resubmission prompt, your <code>submit.php</code> script would <strong>forward</strong> to another page, rather than displaying a page in the browser.</p>
<pre>if(isset($_POST['user']) &amp;&amp; isset($_POST['pass'])){
  // do something with the form data
  <strong>header('Location:/login/form.php?success=true');</strong>
}</pre>
<p>This receiving script never actually displays anything in the browser window. Instead, it receives the form data, does something with it, and then forwards the user somewhere else. Using this technique, when users click on the &#8220;Back&#8221; or &#8220;Forward&#8221; button, the browser will skip the <code>submit.php</code> page completely, and never see the annoying form resubmission prompt.</p>
<h2>3. Never disable keyboard support</h2>
<p><img class="alignright size-full wp-image-1009" title="Sprint Sign-In" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/sprint-sign-in.jpg" alt="Sprint Sign-In" width="179" height="357" />While we&#8217;re on the topic of forms, let&#8217;s look at another deviation from web standards you&#8217;ll want to avoid. To the right, you&#8217;ll see a screenshot of the login form at <a href="http://mysprint.sprint.com">mysprint.sprint.com</a>. I have a Sprint mobile phone, and I occasionally use this login form to sign in and review my account, see my bill, or (more commonly) daydream about all the fancy new mobile phones that I don&#8217;t have.</p>
<h3>What went wrong</h3>
<p>The font sizes are a little small for my taste, but the appearance of this form is not the worst I&#8217;ve seen (yes, that was a compliment). Design and aesthetics aside, there&#8217;s one feature of this form that drives me absolutely crazy. It&#8217;s an extremely simple form, one that I&#8217;ve encountered on countless other websites before. As usual, I would expect to enter my username and password to sign in without a fuss.</p>
<p>Unfortunately, this is not the case. While focusing in either the username or password textbox, pressing the ENTER key does absolutely nothing. I&#8217;m not the type of user that wastes time after filling out a form by lifting my hand from the keyboard and finding the submit button with my mouse cursor. I&#8217;m all about speed: on most websites, it&#8217;s type, type, ENTER, and the form has been submitted. On Sprint&#8217;s website, however, they&#8217;ve removed this behavior, and thus they&#8217;ve earned a place on my list of don&#8217;t-do&#8217;s.</p>
<h2>4. Never fail to give feedback</h2>
<p><img class="alignright size-full wp-image-1016" title="Facebook - Add Favorite" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/facebook-add-favorites.jpg" alt="Facebook - Add Favorite" width="201" height="344" />Feedback is important, especially if you&#8217;re working with the awesomeness of AJAX. Traditionally, you knew what was going on in a web page, because any time you clicked on something, you had to wait while the next page loaded. There was a very apparent interaction period, and very obvious feedback from that interaction. With the introduction of new technology like AJAX, however, that feedback is not always so obvious. Today&#8217;s websites are much more interactive, and the result of those interactions (whether successful or not) needs to be communicated to the user.</p>
<h3>Example: Facebook</h3>
<p>There&#8217;s an easy way to test this: visit a web page, turn off your wireless adapter, and then click on things and see what happens. Obviously, because you&#8217;re not online, anything you do should be very obviously followed by a &#8220;no connection&#8221; message or some sort of indication that you&#8217;ve failed to do something. Facebook, a website that makes gratuitous use of AJAX for interaction, is not so good about warning users when things have failed.</p>
<p><strong>Editor&#8217;s note:</strong> yes, I am using pirate Facebook.</p>
<p>One particular example is the new &#8220;lists&#8221; feature that allows you to mark a list as &#8220;favorite.&#8221; Even when you&#8217;re offline, Facebook gives you no indication that the action has failed. Never assume that users will have a fast connection, or that AJAX requests will complete. You should always provide feedback if something fails, especially when no page loads are involved.</p>
<h2>5. Never disable keyboard navigation</h2>
<p>Different strokes for different folks. That&#8217;s a saying that I like to spew off at random times, usually in a failed attempt at humor, but the lesson of this silly quip is tried and true: everyone has their own way of doing things. This can also be applied to navigation on the internet. Some people prefer to use their cursor for absolutely everything, and only resort to keyboard use when absolutely necessary. Others use the keyboard almost entirely, tabbing, backspacing, and scrolling their way through the world of the world wide web. Others, still, use gestures and touch screens to flick and fly their way through the internet. As a crafter of the interactive, you must adhere to all of these people. Never detract from your users&#8217; ability to navigate in whatever way they damn well please.</p>
<h3>Example: No, I don&#8217;t want to search</h3>
<p><img class="alignright size-full wp-image-1027" title="eBay Auto-focus" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/ebay-search.jpg" alt="eBay Auto-focus" width="202" height="101" />I&#8217;m going to use eBay as an example, just because they&#8217;re so big, but many websites <em>out there</em> are guilty of this annoyance. Upon arriving at eBay&#8217;s website, they use JavaScript to auto-focus on the search bar. I guess they&#8217;ve already decided, before you even visit, that you want to search their website. For some users, however, this can be incredibly annoying. A common and simple way to scroll down the page, in all browsers, is to press the space key. Pressing this key will advance the screen about one page, so you can continue reading without having to worry about scroll bars and the like. If you&#8217;re auto-focused on a search box, however, it disables your ability to do this. Even if it&#8217;s only a minor annoyance, it can be incredibly frustrating to users who like to navigate in this fashion. Likewise, I often use the backspace key instead of the back button to go back when I didn&#8217;t find what I was looking for. With the focus on a search field, backspace navigation simply doesn&#8217;t work.</p>
<p>The fix for this one is easy: don&#8217;t do it. It&#8217;s annoying.</p>
<h2>6. Never move content without user interaction</h2>
<p>Websites can be so damn sneaky. I guess they need to make a buck, but who doesn&#8217;t? One thing that will drive your users bonkers is anything that moves without a prompt from the user. Yes, I&#8217;m talking about you, &#8220;auto-expanding-advertisement-that-plays-a-stupid-video-of-a-guy-who-walks-across-my-screen-when-I-just-want-to-read-the-damn-article&#8221; guy. I also dislike anything that happens on hover (including drop-down menus). Hover is so 2000&#8242;s, get with the times, people. The only time your website should &#8220;move&#8221; or &#8220;do something&#8221; is when users tell it to. Most simply, any time they click, drag, or scroll. That sounds simple and obvious, but not everyone adheres to this most basic of principles.</p>
<h3>Example: Digg.com</h3>
<p><img class="alignnone size-full wp-image-1028" title="Digg Advertisement" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/digg-advertisement.jpg" alt="Digg Advertisement" width="600" height="300" /></p>
<p>While the quality of Digg&#8217;s content is another concern, one thing that does drive me crazy is the sponsored links that appear in the rollup. Notice the promotion from NewEgg.com. This link does not actually appear on page load, but rather when users hover their mouse cursor into the rollup of popular stories. This means that if you&#8217;re a fast clicker (aren&#8217;t we all?), you will often accidentally click on the advertisement instead of the story you&#8217;re interested in. Good for Digg, bad for users. Stop being so shifty, internet.</p>
<h2>7. Never use fixed position without a fallback</h2>
<p>A &#8220;fixed&#8221; element in the browser window is one that stays on the screen, even as you scroll down the page. It&#8217;s a simple CSS technique, but it&#8217;s been amazingly popular in recent months. One thing I&#8217;ve noticed in all these fixed designs is the failure to provide a fallback for users who are on smaller screens. The truth of the matter is that the web isn&#8217;t just for desktops any more. Internet connectivity is coming in all sorts of shapes and sizes: desktops, laptops, mobiles, tablets, e-readers, gaming consoles, and even refrigerators (yes, even refrigerators). The future promises only more diversity in internet-connected devices, and that means you can&#8217;t assume users will have a large viewing area on which to see your website.</p>
<h3>Example: Pandora.com</h3>
<p><img class="alignright size-full wp-image-1035" title="Pandora Fixed" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/pandora-fixed-nav.jpg" alt="Pandora Fixed" width="403" height="269" />This is a screenshot of Pandora&#8217;s fancy new HTML5/CSS3 design. First of all, I&#8217;ll say that I love Pandora.  Maybe too much. It&#8217;s pretty awesome, and it even lets me give all of my radio stations quirky little names like &#8220;Harmonizatorasaurous&#8221; (eat that, spell-check).</p>
<p>Pandora&#8217;s new design includes a fixed header, like many new designs, but it seems the header does not provide a fallback for users on a smaller screen. When reducing the window width, it clips the player controls off the edge of the screen. If a fixed element is clipped, users can&#8217;t see it, even if they try to scroll to see more, which can be a huge problem.</p>
<h3>A simple solution</h3>
<p>An easy solution to this problem is to make the default behavior of your site&#8217;s header to maintain a static position, but when users have a large enough screen, you can make things fixed for a more impressive presentation.  The following jQuery snippet does the trick quite nicely:</p>
<pre>$(window).resize(function(){
  resizeUI();
}); 
$(document).ready(function(){
  resizeUI();
});

<strong>// resize on page load AND window resize</strong>
<strong>function resizeUI(){</strong>
<strong> if($(window).width() &gt; 500){</strong>
<strong> $('#header').css('position', 'fixed');</strong>
<strong> }</strong>
<strong> else{</strong>
<strong> $('#header').css('position', 'static');</strong>
<strong> }</strong>
<strong>} </strong></pre>
<p>This script runs both on page load AND as users resize the window, so no matter what happens, you can decide whether or not to use fixed elements. You&#8217;ll have to mess with the values that the script looks at (width and height) to determine what works best for your site&#8217;s design, but it&#8217;s a useful technique to use.</p>
<h2>8. Never use pop-up windows</h2>
<p>Do I really even have to mention this one? I thought that pop-ups were notorious for the infuriating behavior that have on users, but I still see them &#8220;pop up&#8221; from time to time (pun <em>intended</em>).</p>
<h3>Example: TinyMCE</h3>
<p><img class="alignright size-full wp-image-1036" title="TinyMCE" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/tinymce.jpg" alt="TinyMCE" width="185" height="98" />I never use pop-ups. I always recommend against them. A common excuse is that <em>your</em> site should stay open, in it&#8217;s own tab, even if users click a link that takes them away from your site. I&#8217;ve got a simple response to that: wrong! Don&#8217;t let your head grow so big that you think your website is god&#8217;s gift to the internet. Users have gotten pretty comfortable with the idea of tabbed browsing, and they know how to manage their windows. Unless you&#8217;re Google, you&#8217;re not allowed to use pop-ups. It&#8217;s that simple.</p>
<p>Imagine my surprise when I attempted to implement the TinyMCE JavaScript editor into a web application I was building, and realized it still used pop-up windows for things like links and images. I am building a PHP application, and I have had stars in my eyes for WordPress the entire time, so TinyMCE was the obvious choice. I was so taken aback by this behavior that I ended up switching to CKEditor, another popular editor that has recognized the need to rid the world of these annoying little boxes, and I&#8217;m all the happier for it.</p>
<h2>9. Never get quirky (well, not <em>too</em> quirky)</h2>
<p>I love websites that are different, but not <em>too</em> different. There&#8217;s a fine balance to be made between adhering to expectations, and getting so weird that users have no idea what&#8217;s going on. As with most users, if I visit a website and am prompted to &#8220;explore this insanely huge image of nonsense to learn how to navigate our site,&#8221; I&#8217;m going to leave and never return. I&#8217;ve never been a proponent of Flash, for this very reason, but I also recognize that it has it&#8217;s place. Flash can enhance a website&#8217;s content with some awesome features, but it should never be used to present content in its entirety.</p>
<h3>Example: Sony.com</h3>
<p><img class="alignright size-full wp-image-1038" title="Sony" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/09/sony.jpg" alt="Sony" width="305" height="133" />Check out <a href="http://www.sony.com">Sony.com</a>, and you&#8217;ll realize that a full 5-8 seconds will go by before you actually see anything on the screen that you can click on. Almost the entire site is in Flash, and it breaks about five of the ten &#8220;don&#8217;t do&#8217;s&#8221; that I&#8217;ve described in this article. All that aside, Sony has provided a non-Flash version of their site, which also subsequently presents a loading spinner for about 2-3 seconds that covers all of the content on the page. I&#8217;m not entirely sure why the designer who created the Sony website was so fond of things that come between users and consuming the content they came to read, but I do know this: it&#8217;s annoying. Don&#8217;t do it.</p>
<h2>10. Never do THIS&#8230;</h2>
<p>Okay, this last one is really just for fun, but never do THIS&#8230;</p>
<pre>body * {
  -webkit-transition: all 0.5s ease;
  -moz-transition: all 0.5s ease;
  -o-transition: all 0.5s ease;
  transition: all 0.5s ease;
}
body *:hover {
  -webkit-transform: rotate(180deg);
  -moz-transform: rotate(180deg);
  -o-transform: rotate(180deg);
  transform: rotate(180deg);
}</pre>
<p>Try it out by clicking on this button (you&#8217;ve been warned):</p>
<input id="crazy-button" type="button" value="Let's get crazy" />
<script src="/wordpress/wp-content/themes/shakefive/js/crazy.js"></script></p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/10-things-a-website-should-never-ever-do/feed/</wfw:commentRss>
		<slash:comments>22</slash:comments>
		</item>
		<item>
		<title>From &#8220;Developer&#8221; to &#8220;Designer&#8221;</title>
		<link>http://kyleschaeffer.com/best-practices/from-developer-to-designer/</link>
		<comments>http://kyleschaeffer.com/best-practices/from-developer-to-designer/#comments</comments>
		<pubDate>Thu, 25 Aug 2011 16:34:16 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=964</guid>
		<description><![CDATA[It&#8217;s easy to forget how a website really works. I mean really works. I&#8217;ve had the pleasure of working with many brilliant and talented developers (programmers) who could bend the functionality of any application or server-side platform at the drop &#8230; <a href="http://kyleschaeffer.com/best-practices/from-developer-to-designer/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s easy to forget how a website really works. I mean <em>really works</em>. I&#8217;ve had the pleasure of working with many brilliant and talented developers (programmers) who could bend the functionality of any application or server-side platform at the drop of a hat. They are problem-solvers, as is everyone in this industry of the online.<span id="more-964"></span></p>
<p>With most developers, I&#8217;ve found that there can be a disconnect between how I understand websites, and how they&#8217;ve come to understand them. Not just <em>a </em>disconnect: <em>The Disconnect</em>. If you work in a team environment, you know the feeling. I say &#8220;element,&#8221; and you say &#8220;control.&#8221; I say &#8220;script,&#8221; and you say &#8220;method.&#8221; Most developers are ultimately, completely, and entirely focused on the server-side application.</p>
<p>That&#8217;s okay. I need my developers, and they need me. It&#8217;s a good relationship for all of us, with our complimentary skills, tools, and techniques. They make it work, and I make it look good.</p>
<h2>How to Connect</h2>
<p>Overcoming the <em>Disconnect</em> is all about education, on both sides of the fence. Developers and designers alike would benefit from understanding how the technology that they use comes together. The grand finale of everything that we do online ends up in a single place, where it can be seen, read, clicked, and tested: the browser window.</p>
<p>As a designer, that&#8217;s where my beautiful designs will end up, and they somehow need to be translated from Photoshop into HTML and CSS that works well with the server-side application. Good designers understand the technology before they create the designs. Likewise, as developers, the controls and methods that you create are all somehow translated into HTML, whether you&#8217;ve recognized that or not. Understanding the output of what you do in the application is just as important as making the application work.</p>
<h2>Don&#8217;t Forget the Browser</h2>
<p>This is where it all ends up. Everything that we do as designers, developers, project managers, or architects: it all comes together in the browser window. The browser is the tool that is used to present all of your hard work, everything that you&#8217;ve done throughout an entire project. With so much responsibility resting upon the shoulders of the browser, why is it that so many people ignore it completely?</p>
<p>Back in <em>The Day</em>, the browser is all there was. In 1989, Tim Berners-Lee created the world&#8217;s first web server. When requested, it <em>served</em> up documents to be viewed inside the very first web browser. These documents were pure HTML, and the browser interpreted that language in order to create Hyper-Text documents that could be <em>linked</em> together. As you probably know, this simple concept caught on, and by the mid 1990&#8242;s, the Internet had become arguably the most influential product of Man in the 20th century.</p>
<p>Everyone that works in the industry of the world wide web should pay their respects to the oft-neglected browser. It has so much power, and it is the tool that allows us to do what we do. The browser is everything. The W3C and WHATWG can make all the recommendations they want: nothing really happens until browsers support it. In the mid 2000&#8242;s, the W3C started working on a recommendation called XHTML 2.0. It failed. The browser manufacturers didn&#8217;t like it, and that&#8217;s why we&#8217;re now working with HTML5 instead of XHTML2. Similarly, Microsoft created something called the XMLHTTPRequest in the early- to mid-2000&#8242;s, and everyone loved it. The major browsers quickly adopted this technology, and AJAX was born.</p>
<p>The point is, the browser truly has the power in web application development. It doesn&#8217;t matter if you&#8217;re a programmer or a designer: you need to understand how technology works inside the confines of this little window. In all the amazing technology that surrounds the Internet, it&#8217;s really based on a few simple languages: HTML, CSS, and JavaScript.</p>
<h2>Making Requests</h2>
<p>Web browsers are fairly simple applications. In essence, they do two things: make requests, and handle responses. A request might be something like &#8220;show me the document at KyleSchaeffer.com,&#8221; or &#8220;give me the image at /images/kittens.jpg.&#8221; The server that you&#8217;re requesting from then responds and the browser does something with the response. It all sounds very simple, but it&#8217;s so easy to forget this fundamental layer of web technology. I&#8217;ve helped troubleshoot dozens of web applications, and my first question is always &#8220;What request is the browser making?&#8221;</p>
<p>This entire process is called an <strong>HTTP request</strong>. HTTP requests are sent by your browser every time you type something into the address bar. The first requests is almost always an HTML document, and then the browser subsequently makes additional requests for things like CSS files, JavaScript, and images. Even if your web application is running on PHP or ASP.NET or SharePoint, the server is returning an HTML document, which subsequently loads additional resources. Simple, right?</p>
<h3>1. The Request</h3>
<p>Every HTTP request has a <strong>URI</strong>, or Uniform Resource Identifier. That&#8217;s a fancy way of saying the <em>address</em> of the resource you&#8217;re requesting. The address can be both absolute (<code>http://kyleschaeffer.com/images/kittens.jpg</code>) or relative (<code>/images/kittens.jpg</code>). The browser sends this request to the &#8220;Internet,&#8221; which routes the request to the appropriate server, somewhere <em>out there</em>. The browser then waits for a response.</p>
<h3>2. The Response</h3>
<p>After sending a request, the server that you requested the document from will send back a <em>response</em>. Again, the browser handles the responses, and each resource that is requested is handled differently. First of all, the browser reads the HTTP <strong>response code</strong>, which is an indication of the status of your request. The most common HTTP response codes are:</p>
<ol>
<li><strong>200 OK</strong> - The most common response; the resource you requested was found</li>
<li><strong>301 Moved Permanently</strong> - The resources has moved, and the browser will redirect the request to the new location</li>
<li><strong>304 Not Modified</strong> - The resource was found, and your browser already has the most recent version in the browser cache (yay!)</li>
<li><strong>401 Unauthorized</strong> - You need to sign in to see this resource</li>
<li><strong>403 Forbidden</strong> - You&#8217;re not allowed to see this</li>
<li><strong>404 Not Found</strong> - The resource you requested does not exist</li>
<li><strong>408 Request Time-Out</strong> - That took too long, sorry</li>
<li><strong>500 Internal Server Error</strong> - Something went wrong!</li>
</ol>
<p>My descriptions of each response are less than technical, but you get the idea. If you&#8217;ve ever wondered what the &#8220;404&#8243; in &#8220;404 Not Found&#8221; meant, it&#8217;s the HTTP response code for &#8220;not found.&#8221; For a more comprehensive list of HTTP response codes, visit the <a href="http://www.w3.org/Protocols/rfc2616/rfc2616-sec6.html">W3C&#8217;s documentation</a>.</p>
<p>Another important element of the HTTP response is the <strong>Content Type</strong>. This tells your browser how to handle the requested resource when it&#8217;s downloaded. Unlike on your computer, your browser does not decide how to use a resource based on it&#8217;s file extension! It&#8217;s all about the content type. Some of the more clever server-side programmers can actually utilize this element of the HTTP response to create server-side scripts that actually disguise themselves as other types of content (like a PHP script pretending to be JSON or XML).</p>
<h3>3. Execution</h3>
<p>At this point, the browser now knows the HTTP response code, and the resource content type. Using this information, it&#8217;s time to make something happen. The browser downloads the resource, and presents it inside the browser window. Browsers can sometimes handle resource requests differently, so this is where you get into the nuances of browser testing. One browser might handle HTML and CSS requests slightly different from another, so testing your applications is merely a practice of testing how these HTTP responses are handled.</p>
<h2>From &#8220;Developer&#8221; to &#8220;Designer&#8221;</h2>
<p>Bridging the divide between developers and designers is all about understanding how the different technologies of the web come together. The browser window is the one place where the user experience, the architecture, the design, the program, the database, and everything else that goes on behind the scenes comes to fruition and is finally presented. Clients pay for you to meet needs and requirements, but what they ultimately expect is something that appears inside the little box that they call the Internet. Embrace it, learn it, love it, know it inside and out, and you&#8217;ll find that disconnecting from <em>The Disconnect</em> is not so difficult after all.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/from-developer-to-designer/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>SharePoint Design in Five Minutes</title>
		<link>http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/</link>
		<comments>http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/#comments</comments>
		<pubDate>Fri, 10 Jun 2011 13:57:03 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[SharePoint]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Video]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=938</guid>
		<description><![CDATA[You can now download my free SharePoint theme, Medazio, on SharePointDesigNerds.com. We&#8217;re still working on cleaning up the site while it&#8217;s in &#8220;draft&#8221; version, but feel free to sign up, browse a couple of the themes that we&#8217;ve uploaded, post &#8230; <a href="http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>You can now download my free SharePoint theme, Medazio, on <a href="http://www.sharepointdesignerds.com">SharePointDesigNerds.com</a>. We&#8217;re still working on cleaning up the site while it&#8217;s in &#8220;draft&#8221; version, but feel free to sign up, browse a couple of the themes that we&#8217;ve uploaded, post your amazing SharePoint spotlights, and give us feedback on the design, navigation, and functionality in the site.<span id="more-938"></span></p>
<p><strong>Update 8/17/2011:</strong> The &#8220;Medazio&#8221; theme can now be downloaded directly from <a href="http://www.susqtech.com/medazio">SusQtech.com/medazio</a>.</p>
<h2>The Video</h2>
<p>While building the Medazio theme, I recorded over 11 hours of video in order to document the entire SharePoint design and customization process. From creative sketching to design in Photoshop to actual coding of CSS and HTML in SharePoint Designer 2010, you can see the entire project from start to finish, compressed into about five minutes of rapid SharePoint Design fury. Check out the video, download the theme, and see first-hand how SharePoint is truly a viable and impressive publishing platform for your design-savvy projects.</p>
<p><iframe src='http://player.vimeo.com/video/19591245?title=0&amp;byline=0&amp;portrait=0' width='605' height='340' frameborder='0'></iframe><br />
Watch <a href="http://vimeo.com/19591245">SharePoint Design in Five Minutes</a> on <strong>Vimeo</strong>.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/sharepoint/sharepoint-design-in-five-minutes/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Responsive Design Testing with Screenfly</title>
		<link>http://kyleschaeffer.com/news/responsive-design-testing-with-screenfly/</link>
		<comments>http://kyleschaeffer.com/news/responsive-design-testing-with-screenfly/#comments</comments>
		<pubDate>Tue, 07 Jun 2011 17:04:28 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[News]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Responsive Design]]></category>
		<category><![CDATA[Web Browsers]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=933</guid>
		<description><![CDATA[Responsive design is all the rage. Ethan Marcotte, just today, released a new book on the subject, of which I&#8217;m quite excited. My last post was all about responsive web design, and after writing the article, I couldn&#8217;t help but &#8230; <a href="http://kyleschaeffer.com/news/responsive-design-testing-with-screenfly/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>Responsive design is all the rage. <a href="http://unstoppablerobotninja.com/">Ethan Marcotte</a>, just today, released <a href="http://www.abookapart.com/products/responsive-web-design">a new book</a> on the subject, of which I&#8217;m quite excited. My <a title="Responsive Layouts Using CSS Media Queries" href="http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/">last post</a> was all about responsive web design, and after writing the article, I couldn&#8217;t help but ask myself: what now? Designing and implementing experiences for an unknown number of devices can be an intimidating task, especially when you don&#8217;t have the opportunity to test your designs on many (or any) of them. The answer, for me, was to create a new web app that aids in this testing process. It&#8217;s called <strong>Screenfly</strong>, and it&#8217;s the first of many apps that will be available on QuirkTools.com.<span id="more-933"></span></p>
<p><a href="http://quirktools.com/screenfly/"><img class="alignnone size-full wp-image-934" title="Screenfly" src="http://kyleschaeffer.com/wordpress/wp-content/uploads/2011/06/screenfly-screenshot.jpg" alt="" width="539" height="152" /></a></p>
<p>As you can see, it&#8217;s an incredibly simple application. Simply type in a web address and you&#8217;re off and running. The entire thing, from concept to complete, took less than eight hours of work to complete – don&#8217;t expect all the wiz-bang bells and whistles for that type of investment, but I do have to say that I&#8217;m quite proud of what this little thing can do.</p>
<h2>How it Works</h2>
<p>When you type in a web address and hit &#8220;Go,&#8221; Screenfly builds an <code>&lt;iframe&gt;</code> and displays it on the screen. The frame contains the web document you specified, and once it has loaded, testing can ensue. While viewing your web document, you will see buttons near the top left corner of the browser window, allowing you to select different devices from which to view your web document.  Most of the application is just a few lines of jQuery that affect the frame as it appears in the middle of the page.</p>
<h2>Why it&#8217;s Useful</h2>
<p>What&#8217;s really cool about the application is that I use a proxy to request your web document. Basically, I send a request from my server, which allows me to &#8220;pretend&#8221; like I&#8217;m an iPhone, an iPad, or an Android tablet when I make the request. What comes back is the actual content that would display <em>if</em> you were really browsing on that device. This works great on most websites, but you&#8217;ll find that some don&#8217;t play well with the proxy (things like JavaScript, Flash, Silverlight, and server configuration can break the proxy), so I also give you the option of disabling the proxy altogether. Unfortunately, this also disables the ability to &#8220;mimic&#8221; the devices you&#8217;ve selected, but it still gives you the opportunity to see your web layouts in different screen sizes.</p>
<h2>What it&#8217;s Not</h2>
<p>Keep in mind that Screenfly does <em>not</em> emulate the behavior or capabilities of the device it&#8217;s trying to mimic. That means that if you are running Screenfly on Internet Explorer 6, you&#8217;re only going to see the web document as if it were requested from the selected device, running on Internet Explorer 6.</p>
<p>Also, it&#8217;s important to note that I make no attempt to maintain a comprehensive list of devices for testing. The list of devices is intended to be representational of the actual devices available on today&#8217;s device market. For instance, I made sure to include both Android and Apple tablets, as well as Android and Apple mobile devices. The list will continue to evolve as the device landscape changes (as it always does), and any suggestions or additions are welcome.</p>
<h2>Try it Out</h2>
<p>Without further adieu, try Screenfly for yourself by clicking on the following link. This is a &#8220;beta&#8221; version of the web app, so please let me know if you encounter any errors or issues while testing your own designs.</p>
<p><a href="http://quirktools.com/screenfly/">http://quirktools.com/screenfly/</a></p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/news/responsive-design-testing-with-screenfly/feed/</wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>Responsive Layouts Using CSS Media Queries</title>
		<link>http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/</link>
		<comments>http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/#comments</comments>
		<pubDate>Tue, 03 May 2011 02:23:03 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[Best Practices]]></category>
		<category><![CDATA[Columns]]></category>
		<category><![CDATA[CSS3]]></category>
		<category><![CDATA[Design]]></category>
		<category><![CDATA[Layout]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=898</guid>
		<description><![CDATA[The days of the desktop are numbered. In the past, designing a web interface involved targeting a screen resolution in the vicinity of 960 pixels wide. For many years, this worked, and it worked well, because 99% of online users &#8230; <a href="http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<div>
<p>The days of the desktop are numbered. In the past, designing a web interface involved targeting a screen resolution in the vicinity of 960 pixels wide. For many years, this worked, and it worked well, because 99% of online users could easily read and scroll at that resolution, regardless of the browser, operating system, or machine they were using. <em>Times have changed.</em><span id="more-898"></span></p>
<p>The supreme rule of desktop design began to wane in the past couple of years. With the explosion of the mobile browser phenomenon (largely due to devices like the iPhone, Blackberry, and the Android operating system), online traffic began to show the first signs of diversification. With increasing numbers of users on these mobile devices, the distinction between <em>mobile</em> and <em>desktop</em> content was born. As you most likely have noticed, many online publishers have chosen to neatly dissect their content into two distinct applications that serve two distinct types of devices. You have &#8220;mobile&#8221; versions of many websites available today, which often offer similar or identical content to what can be found on the desktop version of that same website. Very simply, the web server detects the device that&#8217;s requesting the content, and serves up a different document (or redirects to a different location) depending on the device being used.</p>
<p>Today, this dichotomy between mobile and desktop content persists as the most popular strategy for serving up web content to a multitude of devices. The technical implementation of this strategy differs from site to site, but the end result is the same: a design and layout that targets a single device or resolution. This has been a great approach for many online publishers because it offers so much flexibility in the appearance of mobile content. By segregating a design into two entirely different implementations, the limits to what can be done on a mobile site are nearly limitless. As with every design, however, there are disadvantages to this approach that cannot be overlooked:</p>
<ul>
<li><strong>Increased effort</strong> – it is more difficult to create and maintain two separate design layouts simultaneously.</li>
<li><strong>Publishing concerns</strong> – creating a division between mobile and desktop content begs the question: where does the content come from? Should all desktop content be available on the mobile site? Do you publish everything twice (once for desktop, once for mobile users), or do you dual-publish to both mediums simultaneously?</li>
<li><strong>Planning for diversification</strong> – is &#8220;mobile vs. desktop&#8221; really good enough?</li>
</ul>
<p>The last disadvantage listed here is perhaps the most important point to consider. Recent history has shown that targeting a single device (i.e. the desktop) did not withstand the test of time. Is the simple distinction between &#8220;mobile&#8221; and &#8220;desktop&#8221; content really good enough?</p>
<h3>Mobile is important, but not end-all.</h3>
<p>The truth of the matter is that mobile devices are taking off. According to <a href="http://www.businessinsider.com/mary-meekers-web-2010-11#-10" target="_blank">Mary Meeker of Morgan Stanley</a>, the sale of &#8220;smartphones&#8221; is expected to overtake PC sales (both desktops and notebooks) by next year. Browsing statistics are showing this trend as well. <a href="http://gs.statcounter.com/" target="_blank">StatCounter</a> shows that about 6.5% of all users in North America are browsing on mobile devices. You can count on about one in twenty users experiencing your online content on a three inch screen – how does your content stack up in this scenario? If you haven&#8217;t thought about it yet, it&#8217;s time to start.</p>
<p>The growth of the smartphone landscape and the diversification of browsing statistics are the driving factor behind the explosion of mobile-friendly site design. Today, this practice is entirely acceptable, but don&#8217;t count on anything in this industry to stick for more than a few years. Mobile devices aren&#8217;t the only new kids on the block.</p>
<h3>Enter the tablet.</h3>
<p>Tablet devices like the iPad and similar devices that utilize the Android operating system have been somewhat of a curveball in the industry of web design. They&#8217;re not quite mobile devices, and they&#8217;re not quite desktops, but rather somewhere in between. In the current design landscape, where everything has been neatly divided between mobile and desktop content, many designers are choosing to place tablets into the &#8220;mobile&#8221; category, serving up tablet content in like kind. This does not always go over well with tablet users, who justifiably feel that the tablet offers unique advantages of a desktop computer, namely a better browsing experience than what can be had on a smaller mobile device.</p>
<p>What, then, do we do with these users?</p>
<h2>Responsive Web Design</h2>
<p>The ongoing problem is that as designers, we&#8217;ve set our minds on this idea that a web interface is going to be displayed on a screen that is 1024 pixels wide (or larger). It&#8217;s a desktop mindset; anything smaller than 1024 is a &#8220;mobile&#8221; device and generally gets a pixel value of about 320 pixels. All devices that access our online content must adhere to one of these two layouts – there are two numbers, and nothing in between.</p>
<p>The trouble for web designers is that internet connectivity is rapidly spreading to a vast array of devices and products that people use every day. Someone might access your online portal from a desktop, phone, notebook, netbook, tablet, or even some consumer appliances. The Nintendo Wii, for instance, comes loaded with an Opera browser that&#8217;s quite good, and is hindered only by the fact that many televisions only have a resolution that is 480 to 720 pixels wide. At this resolution, many website layouts simply don&#8217;t provide an enjoyable user experience due to poor formatting and display on smaller screens. Furthermore, there is no end in sight. Expect this diversification of internet-ready devices to increase in the coming years, and plan to change the way you design and create layouts for the web.</p>
<p>The great thing is, whether you recognize it or not, this is actually a very good thing. Web layouts have been too rigid and design-centric for a long time now, and forcing designers to apply layouts to a multitude of devices will encourage them to create content that can be consumed in a variety of mediums. In the end, this translates into a better experience for the user, who doesn&#8217;t have to worry about what device they are on, what resolution they&#8217;ve chosen, or what issues they may encounter. <a href="http://ethanmarcotte.com/" target="_blank">Ethan Marcotte</a> sums it up best in his article, &#8220;<a href="http://www.alistapart.com/articles/responsive-web-design/" target="_blank">Responsive Web Design</a>&#8221; from A List Apart:</p>
<blockquote><p>Rather than tailoring disconnected designs to each of an ever-increasing number of web devices, we can treat them as facets of the same experience. We can design for an optimal viewing experience, but embed standards-based technologies into our designs to make them not only more flexible, but more adaptive to the media that renders them. In short, we need to practice responsive web design.</p></blockquote>
<p><strong>Responsive web design</strong> is creating web layouts that can adapt to a multitude of displays and devices. Using this technique, you can eliminate the need to create device-centric designs (like a &#8220;mobile&#8221; site), and allow your content to be displayed from a single source, on an unlimited number of mediums.</p>
<h2>Techniques for Responsive Web Design</h2>
<p>Responsive web design is not &#8220;one big thing.&#8221; It&#8217;s a collection of disciplines and techniques that you employ to ensure that your designs can appear fluidly on a multitude of display sizes. The fundamental change that you have to make to start creating responsive designs is to ask yourself with everything that you do: what happens with this content when the display shrinks? Plan for a multitude of resolutions from the very beginning. By mere acknowledgement and foresight, you&#8217;ll find that the challenge of creating a responsive layout is not so difficult to overcome.</p>
<h3>1. Layout Width</h3>
<p>The most important element of flexibility that must be employed in your responsive design is a fluid layout width. This is the condemning factor that breaks many designs when they are viewed on smaller display screens. Create wrapper, content, and column widths that can stretch display ideally in different resolutions. There is no &#8220;trick&#8221; to this technique, it&#8217;s merely a change in the way you create columns in your style sheets. Here&#8217;s an example:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
}</pre>
<p>This is a simple example of a fluid design width. Setting a max-width on your design is a good idea to salvage any formatting issues for users on very large resolution monitors.</p>
<h3>2. Responsive Design and Column Widths</h3>
<p>In most designs, you might be working with multiple column widths to display content in a number of different ways. In your style sheet, you could simply apply a percentage width to each column, but this technique is generally not ideal. In many cases, a sidebar column may include fixed-width elements like advertisements, menus, or text that does not necessarily adapt in any beneficial way as the width of your layout grows. Instead, you may choose to adapt only a single column as the layout width changes. This is a common layout structure that can easily be created within your existing style sheet. Consider the following example:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
}
<strong>#column-main {</strong>
<strong>  margin-left: 200px;</strong>
<strong>}</strong>
<strong>#column-sidebar {</strong>
<strong>  width: 200px;</strong>
<strong>  float: left;</strong>
<strong>}</strong></pre>
<p>In this example, the &#8220;main&#8221; column will always fill the width of the layout area, and the sidebar column (in this example, on the left) will always remain exactly 200 pixels wide.</p>
<h3>3. What about images?</h3>
<p>A common concern when moving from a fixed-width to a fluid layout is HTML images (the &lt;img&gt; element). An image file, for the most part, is a fixed-size file that does not scale as your design width decreases. This results in some rather unsavory presentation bugs, like large images being drawn beyond the edge of the browser window. The solution is a simple addition to your design&#8217;s style sheet:</p>
<pre>img {
  max-width: 100%;
}<span style="font-size: 13px; line-height: 19px; color: #444444; font-family: Georgia, 'Bitstream Charter', serif; white-space: normal;"> </span></pre>
<p>This simple addition causes any images in your design to display at full size by default. As the width of the design layout shrinks so that the image is too wide to display in the confines of it&#8217;s parent element, the image too, begins to shrink.</p>
<p>It&#8217;s worth noting that the image scaling ability of Internet Explorer is admittedly poor at best. Ethan Marcotte shares his very handy <a href="http://unstoppablerobotninja.com/entry/fluid-images/" target="_blank">Fluid Images</a> script to help alleviate your scalable image woes.</p>
<h3>4. No More Zoom</h3>
<p>Many mobile devices and tablets utilize a &#8220;zoom&#8221; feature to display content that is too large to fit on smaller display screens. This is an important utility for mobile and tablet users, but it creates a detrimental experience for users, as they have to constantly zoom in, pan, and zoom out in order to browse your web document&#8217;s content. You can disable this zooming behavior by way of a simple &lt;meta&gt; element in your design&#8217;s header.</p>
<pre>&lt;meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0" /&gt;</pre>
<p>This meta element is only interpreted by a number of browsing devices (namely smartphones and tablets). <strong>You should only disable the zoom feature if it enhances users&#8217; ability to consume content on your site</strong>. If you&#8217;ve formatted your design layout so that users don&#8217;t need to pan or zoom, the zoom feature actually impairs the user from navigating your content (which only needs to scroll vertically). If you&#8217;ve incorrectly formatted your layout, however, disabling the zoom feature will only further infuriate your users, as you are removing a very important navigation capability of the browser.</p>
<h3>5. CSS Media Queries</h3>
<p>The final and most powerful technique that you can employ for responsive web design is a fairly new feature of CSS technology called the <strong>media query</strong>. Very simply, CSS media queries allow you to apply changes to your site&#8217;s design based on the viewing size and capability of the device on which your content is displayed. This is an extremely powerful tool for creating responsive designs, and it has garnered support across all major mobile browsers (including Safari, Chromium, Opera, and even the forthcoming Internet Explorer Mobile [Windows Phone 7]). Here&#8217;s a simple example of using a media query in your design&#8217;s style sheet:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
  <strong>min-width: 800px;</strong>
}
<strong>@media screen and (max-width: 800px) {</strong>
<strong>  #wrapper {</strong>
<strong>    width: 90%;</strong>
<strong>    min-width: 0;</strong>
<strong>  }</strong>
<strong>}</strong></pre>
<p>In this example, we use the same fluid layout as before, but we&#8217;ve added a new minimum width (800 pixels) to the style sheet. If the width of the screen drops below 800 pixels, all of the styles defined in our media query will take effect, and the wrapper will be resized to 90% of the design width (with no minimum width).</p>
<p>The power of media queries becomes more apparent in a layout with columns. Consider the following example:</p>
<pre>#wrapper {
  width: 80%;
  margin: auto;
  max-width: 1200px;
  <strong>min-width: 800px;</strong>
}
#column-main {
  margin-left: 200px;
}
#column-sidebar {
  width: 200px;
  float: left;
}
@media screen and (max-width: 800px) {
  #wrapper {
    width: 90%;
    min-width: 0;
  }
  <strong>#column-main {</strong>
<strong>    margin-left: 0;</strong>
<strong>  }</strong>
<strong>  #column-sidebar {</strong>
<strong>    width: auto;</strong>
<strong>    float: none;</strong>
<strong>  }</strong>
}</pre>
<p>In this example, when the width of the device screen drops below 800 pixels, we completely reformat the appearance of the columns in our design. Rather than displaying a fixed-width sidebar column, at 800 pixels or less, this design switches to a stacked column layout (with the sidebar displaying on top or below the main column). This preserves space on smaller screens, and provides an easy way to display multiple columns on devices that aren&#8217;t suited for column-based layouts.</p>
<p>The great part about media queries is that you can define multiple queries in your style sheet. You can have a design layout for desktop machines, a new layout for tablets, and yet another new layout for smaller devices like mobile phones. The number of variations is limited only by what you can do within your style sheet. Furthermore, the latest versions of desktop browsers like Firefox, Safari, Chromium, and even Internet Explorer will recognize media queries as you resize the browser window, allowing you to test your variations on the fly. If you&#8217;re using said modern browser, simply resize this window to see how my design responds to new device sizes.</p>
<h2>Looking Forward</h2>
<p>Responsive web design is an important next step in presentation on the web. Expect the device landscape to broaden and diversify, and expect your job as a designer to increasingly become the curator of a flexible and fluid online experience that is more focused on content and less on pixels or devices. The idea of &#8220;mobile vs. desktop&#8221; is fairly new and very strong, but the mobile distinction will likely become an element of features and convenience, rather than an element of presentation, as it is so largely viewed today.</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/best-practices/responsive-layouts-using-css-media-queries/feed/</wfw:commentRss>
		<slash:comments>21</slash:comments>
		</item>
		<item>
		<title>SharePoint 2010 Item Styles and DDWRT</title>
		<link>http://kyleschaeffer.com/sharepoint/sharepoint-2010-item-styles-and-ddwrt/</link>
		<comments>http://kyleschaeffer.com/sharepoint/sharepoint-2010-item-styles-and-ddwrt/#comments</comments>
		<pubDate>Tue, 12 Apr 2011 19:49:53 +0000</pubDate>
		<dc:creator>Kyle</dc:creator>
				<category><![CDATA[SharePoint]]></category>

		<guid isPermaLink="false">http://kyleschaeffer.com/?p=816</guid>
		<description><![CDATA[I&#8217;ve done some crazy things to make SharePoint work like I want it to. One of the things that I&#8217;ve done in the past is write some insanely complex XSLT functions to format dates in SharePoint 2007 item styles. SharePoint &#8230; <a href="http://kyleschaeffer.com/sharepoint/sharepoint-2010-item-styles-and-ddwrt/">Continue reading <span class="meta-nav">&#8594;</span></a>]]></description>
			<content:encoded><![CDATA[<p>I&#8217;ve done some crazy things to make SharePoint work like I want it to. One of the things that I&#8217;ve done in the past is write some insanely complex XSLT functions to format dates in SharePoint 2007 item styles. SharePoint 2007 offered a very useful <a href="http://www.novolocus.com/2010/04/12/date-formats-in-xsl-with-ddwrt/"><code>FormatDate</code> feature</a> of the DDWRT XSL library, but the formatting customization was limited to picking a prefab format, which didn&#8217;t always gel with what you or your client wanted to see.<span id="more-816"></span> To get some custom date formats, I wrote crazy XSLT functions that literally had <code>&lt;xsl:if&gt;</code> statements that checked a substring of the SharePoint date for every month of the year (seriously).  Not the ideal solution, but it worked; sometimes, SharePoint gives you lemons and you have to make&hellip;well, you know.</p>
<h2>2010, How Refreshing!</h2>
<p>I didn&#8217;t realize it at first (mostly because Microsoft documentation on this stuff can be very hard to find), but SharePoint 2010 seems to support a new DDWRT function that I&#8217;ve found to be very useful. You can still use <code>FormatDate</code>, but you now have a new function called <code>FormatDateTime</code> at your designer&#8217;s disposal.  Here&#8217;s how it works.</p>
<ol>
<li>Open the file that contains all the item styles for your SharePoint 2010 site (<strong>/Style Library/XSL Style Sheets/ItemStyle.xsl</strong>).</li>
<li>Near the top of this file, you should see an element called <code>&lt;xsl:stylesheet&gt;</code>.  Add a new attribute to this element (if it&#8217;s not already there) like so:
<pre>xmlns:ddwrt=&quot;http://schemas.microsoft.com/WebParts/v2/DataView/runtime&quot;</pre>
</li>
<li>Now, in an item style, you can use the new function like so:
<pre>&lt;xsl:value-of select=&quot;ddwrt:FormatDateTime(<strong>@Created</strong>, 1033, <strong>'MMMM d, yyyy'</strong>)&quot; /&gt;</pre>
</li>
</ol>
<p>Simply substitute <code>@Created</code> for the date/time column of your choice.  You can use a lot of different values for the date (in our example above, the date is output in <code>MMMM d, yyyy</code> format, which appears like <strong>April 12, 2011</strong> within an item style.  Refer to <a href="http://msdn.microsoft.com/en-us/library/8kb3ddd4(v=vs.95).aspx">Microsoft&#8217;s MSDN article</a> for a list of all the date variations that you can use – it&#8217;s highly flexible, and allows you to output things like 12-hour time formats or even time zone information (something that was lacking in the old <code>FormatDate</code> function).</p>
<h2>More Item Style Resources</h2>
<p>While we&#8217;re on the topic of SharePoint 2010 item styles, I&#8217;ve run into a few snags in this new product, and you might just benefit from my experience while you&#8217;re rolling your own custom item styles. Most importantly, you might notice that after creating a new custom item style and applying it to a page, it works splendidly <em>until</em> you open that page up and view it as an anonymous user. Everything is checked in, published, and soon you&#8217;ll be pulling your hair out trying to figure out why anonymous users are getting a mysterious error message on your fancy new item styles.</p>
<p>You can fix this strange anonymous-users-only error in one of two ways:</p>
<ol>
<li>Some item styles start out with XSL variables that have names like <code>SafeImageUrl</code> or <code>DisplayTitle</code>. If you aren&#8217;t using these variables in your item style, simply delete these variables altogether! The presence of these variables can <em>sometimes</em> cause the anonymous error message to appear, and removing them is often all that is needed to resolve your issues.</li>
<li>Waldek Mastykarz found that adding <code>DocumentIconImageUrl</code> and <code>OnClickForWebRendering</code> to the <code>CommonViewFields</code> property of the web part also clears up any issues you might have with this error appearing for anonymous users. You can <a href="http://blog.mastykarz.nl/inconvenient-sharepoint-2010-content-query-web-part-anonymous-access/">read Waldek&#8217;s post here</a> for more information. Basically, you need to <em>export</em> the web part, open it up in a text editor, and find the line that says <code>CommonViewFields</code>, and change this line to what you see in Waldek&#8217;s post. Once that&#8217;s done, simply import the web part back into the page (delete the old one), and you should be all set.</li>
</ol>
<p>As always, if you&#8217;re looking to get started creating item styles in SharePoint 2010, <a href="http://www.heathersolomon.com/blog/articles/CustomItemStyle.aspx">Heather Solomon&#8217;s custom item styles blog post</a> is still relevant to everything you&#8217;ll need to do in SharePoint 2010.</p>
]]></content:encoded>
			<wfw:commentRss>http://kyleschaeffer.com/sharepoint/sharepoint-2010-item-styles-and-ddwrt/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

